import { defineConfig } from '@unocss/vite'; import presetWind3 from '@unocss/preset-wind3'; import transformerDirectives from '@unocss/transformer-directives' import { unoTheme } from './src/theme/adapters/uno' export default defineConfig({ // UnoCSS 默认扫描管线只覆盖 .vue/.jsx/.tsx 等模板文件,不扫描纯 .js/.ts。 // 基础组件库(reka-ui 底座,位于 src/core/componentLibrary)刻意把类名维护在 .js 的 cva 里 //(如 button 的 buttonVariants),不显式纳入扫描的话,只出现在这些 .js 里的原子类 //(bg-primary / bg-error / hover:bg-primary-600 ...)不会被生成,按钮就会丢失主题色。 // 这里在保留默认文件类型的前提下,额外把 core/componentLibrary 下的 .js/.ts 纳入扫描。 content: { pipeline: { include: [ /\.(vue|svelte|[jt]sx|mdx?|astro|elm|php|phtml|html)($|\?)/, /[\\/]core[\\/]componentLibrary[\\/].*\.[jt]s($|\?)/ ] } }, shortcuts: { // 业务卡片盒子的统一表面:容器底色(白/暗自适应)+ 主文本色 + 内边距, // 替代散落的 bg-white text-slate-700 dark:bg-slate-900 dark:text-slate-400 串 'kra-surface': 'p-4 my-2 bg-container text-base-text', // header 工具图标点击区域:扁平 36px,与右侧用户胶囊(30px 头像 + 内边距≈36px)等高,视觉权重对齐;圆角跟随全局 --kra-radius; // hover 出现清晰的中性灰底——用半透明叠加(黑/白各 10%)而非 bg-muted: // muted 亮色值≈slate-50,与白色顶栏几乎同色导致 hover 底看不出来;叠加层与顶栏底色无关,深浅两态都清晰可见。 'kra-tool-btn': 'inline-flex items-center justify-center w-9 h-9 rounded-[var(--kra-radius)] text-muted-foreground hover:text-base-text hover:bg-black/10 dark:hover:bg-white/10 cursor-pointer outline-none transition-colors', // header 用户菜单项:图标+文案,hover/键盘聚焦/子菜单展开高亮。 // 高亮底与工具栏按钮一致——中性灰叠加(黑/白各 10%)而非 bg-muted:muted 亮色值≈slate-50 带冷蓝调,观感偏浅蓝且与白色面板对比过弱。 'kra-menu-item': 'flex items-center gap-2 w-full px-2.5 py-2 rounded-lg text-[14px] text-base-text cursor-pointer outline-none transition-colors hover:bg-black/10 dark:hover:bg-white/10 data-[highlighted]:bg-black/10 dark:data-[highlighted]:bg-white/10 data-[state=open]:bg-black/10 dark:data-[state=open]:bg-white/10', // header 用户菜单项 - 危险态(退出登录,红色语义) 'kra-menu-item-danger': 'text-error hover:bg-error/10 data-[highlighted]:bg-error/10', // header 用户菜单分隔线:极细 0.5px,组间留白(边框色 token 自适应深色) 'kra-menu-sep': 'h-px my-1 mx-2 bg-border opacity-50', // header 用户身份信息块(不可交互 label) 'kra-menu-label': 'block px-2.5 py-2 cursor-default outline-none' }, theme: { ...unoTheme, backgroundColor: { main: 'rgb(var(--layout-bg-color))' }, textColor: { active: 'rgb(var(--primary-color))' }, boxShadowColor: { active: 'rgb(var(--primary-color))' }, borderColor: { 'table-border': 'var(--el-border-color-lighter)' } }, presets: [ presetWind3({ dark: 'class' }) ], transformers: [ transformerDirectives(), ], })