import type { Preset } from 'unocss';
import { FileSystemIconLoader } from '@iconify/utils/lib/loader/node-loaders';
import { presetUni } from '@uni-helper/unocss-preset-uni';
import { presetLegacyCompat } from '@unocss/preset-legacy-compat';
import { defineConfig, presetIcons, transformerDirectives, transformerVariantGroup } from 'unocss';

export default defineConfig({
  presets: [
    // https://uni-helper.js.org/unocss-preset-uni
    presetUni({
      attributify: {
        prefixedOnly: true,
      },
    }),
    // https://unocss.dev/presets/icons
    presetIcons({
      scale: 1.2,
      warn: true,
      extraProperties: {
        'display': 'inline-block',
        'vertical-align': 'middle',
      },
      // 自定义图标
      collections: {
        // 从本地文件系统加载 svg 图标
        'my-icons': FileSystemIconLoader('./src/static/icons'),
        // 从在线图标库加载图标
        // 'my-online-icons': async (iconName) => {
        //   return await fetch(`https://example.com/icons/${iconName}.svg`).then(res => res.text());
        // },
      },
    }),
    /**
     * 启用 legacy-compat 模式(处理低端安卓机的样式问题)
     * @see https://unocss.dev/presets/legacy-compat
     */
    presetLegacyCompat({
      commaStyleColorFunction: true,
      legacyColorSpace: true,
    }) as Preset,
  ],
  /**
   * 自定义快捷语句
   * @see https://github.com/unocss/unocss#shortcuts
   */
  shortcuts: {
    'border-base': 'border border-[var(--border-primary)]',
    'center': 'flex justify-center items-center',
  },
  rules: [
    ['pb-safe', { 'padding-bottom': 'env(safe-area-inset-bottom)' }],
  ],
  theme: {
    colors: {
      // 主题颜色
      'primary': 'var(--brand-primary)',
      'secondary': 'var(--brand-secondary)',
      'tertiary': 'var(--brand-tertiary)',
      'success': 'var(--color-success)',
      'warning': 'var(--color-warning)',
      'error': 'var(--color-error)',
      // 文字颜色
      'text-main': 'var(--text-primary)',
      'text-content': 'var(--text-secondary)',
      'text-tips': 'var(--text-tertiary)',
      'text-light': 'var(--text-quaternary)',
      'text-disabled': 'var(--text-quaternary)',
      // 背景颜色
      'bg-main': 'var(--bg-page)',
      'bg-secondary': 'var(--bg-container)',
      'bg-muted': 'var(--bg-muted)',
      // 边框颜色
      'border-main': 'var(--border-primary)',
      'border-secondary': 'var(--border-secondary)',
    },
  },
  transformers: [
    // 启用指令功能：主要用于支持 @apply、@screen 和 theme() 等 CSS 指令
    transformerDirectives(),
    // 启用 () 分组功能
    transformerVariantGroup(),
  ],
});
