@veltra/styles 1.6.6 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +22 -0
  2. package/dist/_mixins.scss +1 -7
  3. package/dist/theme/component-css-vars.js +1 -1
  4. package/dist/theme/component-css-vars.js.map +1 -1
  5. package/dist/theme/index.d.ts +10 -7
  6. package/dist/theme/index.js +9 -6
  7. package/dist/theme/load-theme.d.ts +3 -4
  8. package/dist/theme/load-theme.js +15 -22
  9. package/dist/theme/load-theme.js.map +1 -1
  10. package/dist/theme/presets/ancient.d.ts +3 -2
  11. package/dist/theme/presets/ancient.js +3 -2
  12. package/dist/theme/presets/ancient.js.map +1 -1
  13. package/dist/theme/presets/dark.js +1 -1
  14. package/dist/theme/presets/dark.js.map +1 -1
  15. package/dist/theme/presets/glass.d.ts +7 -3
  16. package/dist/theme/presets/glass.js +18 -47
  17. package/dist/theme/presets/glass.js.map +1 -1
  18. package/dist/theme/presets/hero.d.ts +3 -3
  19. package/dist/theme/presets/hero.js +3 -40
  20. package/dist/theme/presets/hero.js.map +1 -1
  21. package/dist/theme/presets/midnight.d.ts +8 -0
  22. package/dist/theme/presets/midnight.js +55 -0
  23. package/dist/theme/presets/midnight.js.map +1 -0
  24. package/dist/theme/presets/neon.d.ts +8 -0
  25. package/dist/theme/presets/neon.js +55 -0
  26. package/dist/theme/presets/neon.js.map +1 -0
  27. package/dist/theme/presets/ocean.d.ts +8 -0
  28. package/dist/theme/presets/ocean.js +55 -0
  29. package/dist/theme/presets/ocean.js.map +1 -0
  30. package/dist/theme/presets/sakura.d.ts +8 -0
  31. package/dist/theme/presets/sakura.js +57 -0
  32. package/dist/theme/presets/sakura.js.map +1 -0
  33. package/dist/theme/ui-theme.d.ts +16 -8
  34. package/dist/theme/ui-theme.js +11 -25
  35. package/dist/theme/ui-theme.js.map +1 -1
  36. package/package.json +3 -3
  37. package/src/_mixins.scss +1 -7
  38. package/src/theme/__test__/ui-theme.test.ts +42 -9
  39. package/src/theme/component-css-vars.ts +1 -1
  40. package/src/theme/load-theme.ts +12 -27
  41. package/src/theme/presets/ancient.ts +3 -1
  42. package/src/theme/presets/dark.ts +43 -40
  43. package/src/theme/presets/glass.ts +56 -67
  44. package/src/theme/presets/hero.ts +2 -35
  45. package/src/theme/presets/index.ts +7 -4
  46. package/src/theme/presets/midnight.ts +45 -0
  47. package/src/theme/presets/neon.ts +45 -0
  48. package/src/theme/presets/ocean.ts +35 -0
  49. package/src/theme/presets/sakura.ts +37 -0
  50. package/src/theme/ui-theme.ts +26 -41
  51. package/dist/theme/presets/shadcn.d.ts +0 -8
  52. package/dist/theme/presets/shadcn.js +0 -100
  53. package/dist/theme/presets/shadcn.js.map +0 -1
  54. package/src/theme/presets/shadcn.ts +0 -84
package/README.md CHANGED
@@ -38,3 +38,25 @@ import '@veltra/styles/transitions/fade.css'
38
38
  本包提供了一些常用的 `scss` 工具,包括常用的 `mixins` 与 常用的 `functions`, 你还可以通过覆盖变量 $namespace 来使用当前库的同一套工具体系,只不过是命名空间不一样。
39
39
 
40
40
  ## 主题加载以及切换
41
+
42
+ 从 `@veltra/styles/theme` 导入预设主题,在入口(SSR 则在 `onMounted`)调用 `loadTheme`:
43
+
44
+ ```ts
45
+ import { loadTheme, lightTheme, heroTheme, glassTheme } from '@veltra/styles/theme'
46
+
47
+ loadTheme() // 默认 lightTheme
48
+ loadTheme(heroTheme) // 应用指定预设
49
+ ```
50
+
51
+ 预设主题按系列组织,应用主题即确定明暗(`html[data-theme]` 同步写入):
52
+
53
+ - 浅色系:`lightTheme`、`heroTheme`、`ancientTheme`
54
+ - 深色系:`darkTheme`、`glassTheme`
55
+
56
+ 基于预设派生自定义主题:
57
+
58
+ ```ts
59
+ loadTheme(lightTheme.new({ color: { primary: '#ff6600' } }))
60
+ ```
61
+
62
+ 深色派生需声明系列:`lightTheme.new({...}, { series: 'dark' })`。
package/dist/_mixins.scss CHANGED
@@ -146,17 +146,11 @@ $namespace: 'u' !default;
146
146
  @return var(--#{$namespace}-breakpoint-#{$point});
147
147
  }
148
148
 
149
- /** 暗色:data-theme 与系统偏好,与 UITheme.injectBuiltInThemes 选择器策略一致 */
149
+ /** 暗色:`UITheme.render()` 按主题系列写入 html[data-theme] */
150
150
  @mixin dark {
151
151
  html[data-theme='dark'] & {
152
152
  @content;
153
153
  }
154
-
155
- @media (prefers-color-scheme: dark) {
156
- html:not([data-theme='light']) & {
157
- @content;
158
- }
159
- }
160
154
  }
161
155
 
162
156
  @mixin xs {
@@ -1,6 +1,6 @@
1
1
  //#region src/theme/component-css-vars.ts
2
2
  /**
3
- * 桌面组件级 `--u-*` token,与内置主题一起在 `UITheme.injectBuiltInThemes` 中注入 `html`。
3
+ * 桌面组件级 `--u-*` token,随 `UITheme.render()` 按主题系列(light/dark)注入 `html`。
4
4
  * 修改此处即可在 TS 侧统一调整组件外观,无需在各组件 `style.scss` 重复声明。
5
5
  */
6
6
  /** 与 SCSS `fn.use-var($basename, $nodes...)` 输出一致 */
@@ -1 +1 @@
1
- {"version":3,"file":"component-css-vars.js","names":[],"sources":["../../src/theme/component-css-vars.ts"],"sourcesContent":["/**\n * 桌面组件级 `--u-*` token,与内置主题一起在 `UITheme.injectBuiltInThemes` 中注入 `html`。\n * 修改此处即可在 TS 侧统一调整组件外观,无需在各组件 `style.scss` 重复声明。\n */\n\n/** 与 SCSS `fn.use-var($basename, $nodes...)` 输出一致 */\nexport function themeTokenVar(basename: string, ...nodes: Array<string | number>): string {\n const suffix = nodes.length ? `-${nodes.map(String).join('-')}` : ''\n return `var(--u-${basename}${suffix})`\n}\n\nconst T = themeTokenVar\n\n/** 亮色(及与暗色相同的尺寸类)下组件 token */\nexport const componentCssVarsLight: Record<string, string> = {\n '--u-focus-ring': `0 0 0 3px ${T('color', 'primary', 'a', '28')}`,\n '--u-table-border-color': T('border', 'color'),\n '--u-table-header-bg': T('bg-color', 'hover'),\n '--u-table-header-color': T('text-color', 'title'),\n '--u-table-stripe-bg': T('bg-color', 'middle'),\n '--u-table-stripe-color': 'inherit',\n '--u-table-hover-bg': T('bg-color', 'hover'),\n '--u-table-hover-color': 'inherit',\n '--u-table-current-bg': T('bg-color', 'hover'),\n '--u-table-current-color': 'inherit',\n '--u-table-checked-bg': T('color', 'primary', 'light-9'),\n '--u-table-checked-color': 'inherit',\n '--u-nav-color': T('text-color', 'title'),\n '--u-nav-hover-bg': T('text-color', 'title', 'a', '8'),\n '--u-nav-hover-color': T('text-color', 'title'),\n '--u-nav-active-bg': T('color', 'primary', 'a', '10'),\n '--u-nav-active-color': T('color', 'primary', 'dark', '1'),\n '--u-nav-height-small': '32px',\n '--u-nav-height-default': '36px',\n '--u-nav-height-large': '40px',\n '--u-nav-bg-color': T('bg-color', 'top'),\n '--u-nav-bg-image': 'none',\n '--u-nav-rail-width': '56px',\n '--u-nav-rail-labeled-width': '72px',\n '--u-tag-small': '20px',\n '--u-tag-default': '24px',\n '--u-tag-large': '28px',\n '--u-switch-height-small': '18px',\n '--u-switch-height-default': '20px',\n '--u-switch-height-large': '24px',\n '--u-breadcrumb-small': '20px',\n '--u-breadcrumb-default': '22px',\n '--u-breadcrumb-large': '24px',\n\n // ─── Button (default & plain states) ───\n '--u-button-default-bg': T('bg-color', 'top'),\n '--u-button-default-border': T('border', 'color'),\n '--u-button-default-color': T('text-color', 'main'),\n '--u-button-default-hover-bg': T('bg-color', 'hover'),\n '--u-button-default-hover-border': T('border', 'color'),\n '--u-button-primary-plain-bg': T('color', 'primary', 'light', '9'),\n '--u-button-primary-plain-shadow': T('color', 'primary', 'light', '5'),\n '--u-button-success-plain-bg': T('color', 'success', 'light', '9'),\n '--u-button-success-plain-shadow': T('color', 'success', 'light', '5'),\n '--u-button-warning-plain-bg': T('color', 'warning', 'light', '9'),\n '--u-button-warning-plain-shadow': T('color', 'warning', 'light', '5'),\n '--u-button-danger-plain-bg': T('color', 'danger', 'light', '9'),\n '--u-button-danger-plain-shadow': T('color', 'danger', 'light', '5'),\n '--u-button-info-plain-bg': T('color', 'info', 'light', '9'),\n '--u-button-info-plain-shadow': T('color', 'info', 'light', '5'),\n\n // ─── Tree selection ───\n '--u-tree-node-selected-bg': T('color', 'primary', 'light', '9'),\n '--u-tree-node-selected-color': T('color', 'primary'),\n\n // ─── Cascade option active ───\n '--u-cascade-node-active-bg': T('color', 'primary', 'light', '9'),\n '--u-cascade-node-active-color': T('color', 'primary'),\n\n // ─── Expression Editor Chip ───\n '--u-expression-editor-chip-bg': T('color', 'primary', 'light', '9'),\n '--u-expression-editor-chip-color': T('color', 'primary'),\n\n // ─── Paginator active buttons ───\n '--u-paginator-btn-hover-bg': T('color', 'primary', 'light', '9'),\n '--u-paginator-btn-hover-color': T('text-color', 'title'),\n '--u-paginator-btn-active-bg': T('color', 'primary', 'light', '9'),\n '--u-paginator-btn-active-color': T('color', 'primary'),\n\n // ─── Tabs List background ───\n '--u-tabs-bar-bg': T('bg-color', 'hover'),\n '--u-tabs-active-bg': T('bg-color', 'top'),\n\n // ─── Tag Component Colors ───\n '--u-tag-primary-bg': T('color', 'primary', 'light', '9'),\n '--u-tag-primary-color': T('color', 'primary'),\n '--u-tag-primary-border': T('color', 'primary'),\n '--u-tag-success-bg': T('color', 'success', 'light', '9'),\n '--u-tag-success-color': T('color', 'success'),\n '--u-tag-success-border': T('color', 'success'),\n '--u-tag-warning-bg': T('color', 'warning', 'light', '9'),\n '--u-tag-warning-color': T('color', 'warning'),\n '--u-tag-warning-border': T('color', 'warning'),\n '--u-tag-danger-bg': T('color', 'danger', 'light', '9'),\n '--u-tag-danger-color': T('color', 'danger'),\n '--u-tag-danger-border': T('color', 'danger'),\n '--u-tag-info-bg': T('color', 'info', 'light', '9'),\n '--u-tag-info-color': T('color', 'info'),\n '--u-tag-info-border': T('color', 'info'),\n\n // ─── File Picker Colors ───\n '--u-file-picker-hover-bg': T('color', 'primary', 'light', '9'),\n '--u-card-header-bg': 'rgba(0, 0, 0, 0.015)',\n '--u-card-action-bg': 'rgba(0, 0, 0, 0.015)',\n '--u-card-padding-small': '8px',\n '--u-card-padding-default': '12px',\n '--u-card-padding-large': '16px',\n '--u-card-radius': T('radius', 'large')\n}\n\n/** 暗色下组件 token(含与亮色相同的尺寸项,保证暗色 html 块自洽) */\nexport const componentCssVarsDark: Record<string, string> = {\n ...componentCssVarsLight,\n '--u-focus-ring': `0 0 0 3px ${T('color', 'primary', 'a', '35')}`,\n '--u-table-border-color': T('border', 'color'),\n '--u-table-header-bg': T('bg-color', 'hover'),\n '--u-table-header-color': T('text-color', 'main'),\n '--u-table-stripe-bg': T('bg-color', 'middle'),\n '--u-table-stripe-color': T('text-color', 'main'),\n '--u-table-hover-bg': T('text-color', 'title', 'a', '5'),\n '--u-table-hover-color': T('text-color', 'title'),\n '--u-table-current-bg': T('bg-color', 'hover'),\n '--u-table-current-color': 'inherit',\n '--u-table-checked-bg': T('color', 'primary', 'dark', '1'),\n '--u-table-checked-color': 'inherit',\n '--u-nav-color': T('text-color', 'main'),\n '--u-nav-hover-bg': T('text-color', 'title', 'a', '8'),\n '--u-nav-hover-color': T('text-color', 'title'),\n '--u-nav-active-bg': T('color', 'primary', 'a', '16'),\n '--u-nav-active-color': T('text-color', 'white'),\n '--u-nav-bg-color': T('bg-color', 'middle'),\n '--u-radio-border': '#595959',\n '--u-checkbox-border': '#595959',\n\n // ─── Button (plain & text colors in dark mode) ───\n '--u-button-primary-plain-bg': T('color', 'primary', 'dark', '9'),\n '--u-button-primary-plain-shadow': T('color', 'primary', 'dark', '7'),\n '--u-button-success-plain-bg': T('color', 'success', 'dark', '9'),\n '--u-button-success-plain-shadow': T('color', 'success', 'dark', '7'),\n '--u-button-warning-plain-bg': T('color', 'warning', 'dark', '9'),\n '--u-button-warning-plain-shadow': T('color', 'warning', 'dark', '7'),\n '--u-button-danger-plain-bg': T('color', 'danger', 'dark', '9'),\n '--u-button-danger-plain-shadow': T('color', 'danger', 'dark', '7'),\n '--u-button-info-plain-bg': T('color', 'info', 'dark', '9'),\n '--u-button-info-plain-shadow': T('color', 'info', 'dark', '7'),\n\n // ─── Tree selection ───\n '--u-tree-node-selected-bg': T('color', 'primary', 'dark', '9'),\n '--u-tree-node-selected-color': T('color', 'primary'),\n\n // ─── Cascade option active ───\n '--u-cascade-node-active-bg': T('color', 'primary', 'dark', '9'),\n '--u-cascade-node-active-color': T('color', 'primary'),\n\n // ─── Expression Editor Chip ───\n '--u-expression-editor-chip-bg': T('color', 'primary', 'dark', '9'),\n '--u-expression-editor-chip-color': T('color', 'primary'),\n\n // ─── Paginator active buttons ───\n '--u-paginator-btn-hover-bg': T('color', 'primary', 'dark', '9'),\n '--u-paginator-btn-hover-color': T('color', 'primary'),\n '--u-paginator-btn-active-bg': T('color', 'primary', 'dark', '9'),\n '--u-paginator-btn-active-color': T('color', 'primary'),\n\n // ─── Tabs List background (improved dark contrast) ───\n '--u-tabs-bar-bg': T('bg-color', 'bottom'),\n '--u-tabs-active-bg': T('bg-color', 'top'),\n\n // ─── Tag Component Colors ───\n '--u-tag-primary-bg': T('color', 'primary', 'dark', '9'),\n '--u-tag-primary-color': T('color', 'primary'),\n '--u-tag-primary-border': T('color', 'primary'),\n '--u-tag-success-bg': T('color', 'success', 'dark', '9'),\n '--u-tag-success-color': T('color', 'success'),\n '--u-tag-success-border': T('color', 'success'),\n '--u-tag-warning-bg': T('color', 'warning', 'dark', '9'),\n '--u-tag-warning-color': T('color', 'warning'),\n '--u-tag-warning-border': T('color', 'warning'),\n '--u-tag-danger-bg': T('color', 'danger', 'dark', '9'),\n '--u-tag-danger-color': T('color', 'danger'),\n '--u-tag-danger-border': T('color', 'danger'),\n '--u-tag-info-bg': T('color', 'info', 'dark', '9'),\n '--u-tag-info-color': T('color', 'info'),\n '--u-tag-info-border': T('color', 'info'),\n\n // ─── File Picker Colors ───\n '--u-file-picker-hover-bg': T('color', 'primary', 'dark', '9'),\n '--u-card-header-bg': 'rgba(255, 255, 255, 0.015)',\n '--u-card-action-bg': 'rgba(255, 255, 255, 0.015)'\n}\n\nfunction recordToDeclList(record: Record<string, string>): string[] {\n return Object.entries(record).map(([k, v]) => `${k}: ${v}`)\n}\n\nexport const componentCssVarsLightDecls: string[] = recordToDeclList(componentCssVarsLight)\n\nexport const componentCssVarsDarkDecls: string[] = recordToDeclList(componentCssVarsDark)\n"],"mappings":"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"}
1
+ {"version":3,"file":"component-css-vars.js","names":[],"sources":["../../src/theme/component-css-vars.ts"],"sourcesContent":["/**\n * 桌面组件级 `--u-*` token,随 `UITheme.render()` 按主题系列(light/dark)注入 `html`。\n * 修改此处即可在 TS 侧统一调整组件外观,无需在各组件 `style.scss` 重复声明。\n */\n\n/** 与 SCSS `fn.use-var($basename, $nodes...)` 输出一致 */\nexport function themeTokenVar(basename: string, ...nodes: Array<string | number>): string {\n const suffix = nodes.length ? `-${nodes.map(String).join('-')}` : ''\n return `var(--u-${basename}${suffix})`\n}\n\nconst T = themeTokenVar\n\n/** 亮色(及与暗色相同的尺寸类)下组件 token */\nexport const componentCssVarsLight: Record<string, string> = {\n '--u-focus-ring': `0 0 0 3px ${T('color', 'primary', 'a', '28')}`,\n '--u-table-border-color': T('border', 'color'),\n '--u-table-header-bg': T('bg-color', 'hover'),\n '--u-table-header-color': T('text-color', 'title'),\n '--u-table-stripe-bg': T('bg-color', 'middle'),\n '--u-table-stripe-color': 'inherit',\n '--u-table-hover-bg': T('bg-color', 'hover'),\n '--u-table-hover-color': 'inherit',\n '--u-table-current-bg': T('bg-color', 'hover'),\n '--u-table-current-color': 'inherit',\n '--u-table-checked-bg': T('color', 'primary', 'light-9'),\n '--u-table-checked-color': 'inherit',\n '--u-nav-color': T('text-color', 'title'),\n '--u-nav-hover-bg': T('text-color', 'title', 'a', '8'),\n '--u-nav-hover-color': T('text-color', 'title'),\n '--u-nav-active-bg': T('color', 'primary', 'a', '10'),\n '--u-nav-active-color': T('color', 'primary', 'dark', '1'),\n '--u-nav-height-small': '32px',\n '--u-nav-height-default': '36px',\n '--u-nav-height-large': '40px',\n '--u-nav-bg-color': T('bg-color', 'top'),\n '--u-nav-bg-image': 'none',\n '--u-nav-rail-width': '56px',\n '--u-nav-rail-labeled-width': '72px',\n '--u-tag-small': '20px',\n '--u-tag-default': '24px',\n '--u-tag-large': '28px',\n '--u-switch-height-small': '18px',\n '--u-switch-height-default': '20px',\n '--u-switch-height-large': '24px',\n '--u-breadcrumb-small': '20px',\n '--u-breadcrumb-default': '22px',\n '--u-breadcrumb-large': '24px',\n\n // ─── Button (default & plain states) ───\n '--u-button-default-bg': T('bg-color', 'top'),\n '--u-button-default-border': T('border', 'color'),\n '--u-button-default-color': T('text-color', 'main'),\n '--u-button-default-hover-bg': T('bg-color', 'hover'),\n '--u-button-default-hover-border': T('border', 'color'),\n '--u-button-primary-plain-bg': T('color', 'primary', 'light', '9'),\n '--u-button-primary-plain-shadow': T('color', 'primary', 'light', '5'),\n '--u-button-success-plain-bg': T('color', 'success', 'light', '9'),\n '--u-button-success-plain-shadow': T('color', 'success', 'light', '5'),\n '--u-button-warning-plain-bg': T('color', 'warning', 'light', '9'),\n '--u-button-warning-plain-shadow': T('color', 'warning', 'light', '5'),\n '--u-button-danger-plain-bg': T('color', 'danger', 'light', '9'),\n '--u-button-danger-plain-shadow': T('color', 'danger', 'light', '5'),\n '--u-button-info-plain-bg': T('color', 'info', 'light', '9'),\n '--u-button-info-plain-shadow': T('color', 'info', 'light', '5'),\n\n // ─── Tree selection ───\n '--u-tree-node-selected-bg': T('color', 'primary', 'light', '9'),\n '--u-tree-node-selected-color': T('color', 'primary'),\n\n // ─── Cascade option active ───\n '--u-cascade-node-active-bg': T('color', 'primary', 'light', '9'),\n '--u-cascade-node-active-color': T('color', 'primary'),\n\n // ─── Expression Editor Chip ───\n '--u-expression-editor-chip-bg': T('color', 'primary', 'light', '9'),\n '--u-expression-editor-chip-color': T('color', 'primary'),\n\n // ─── Paginator active buttons ───\n '--u-paginator-btn-hover-bg': T('color', 'primary', 'light', '9'),\n '--u-paginator-btn-hover-color': T('text-color', 'title'),\n '--u-paginator-btn-active-bg': T('color', 'primary', 'light', '9'),\n '--u-paginator-btn-active-color': T('color', 'primary'),\n\n // ─── Tabs List background ───\n '--u-tabs-bar-bg': T('bg-color', 'hover'),\n '--u-tabs-active-bg': T('bg-color', 'top'),\n\n // ─── Tag Component Colors ───\n '--u-tag-primary-bg': T('color', 'primary', 'light', '9'),\n '--u-tag-primary-color': T('color', 'primary'),\n '--u-tag-primary-border': T('color', 'primary'),\n '--u-tag-success-bg': T('color', 'success', 'light', '9'),\n '--u-tag-success-color': T('color', 'success'),\n '--u-tag-success-border': T('color', 'success'),\n '--u-tag-warning-bg': T('color', 'warning', 'light', '9'),\n '--u-tag-warning-color': T('color', 'warning'),\n '--u-tag-warning-border': T('color', 'warning'),\n '--u-tag-danger-bg': T('color', 'danger', 'light', '9'),\n '--u-tag-danger-color': T('color', 'danger'),\n '--u-tag-danger-border': T('color', 'danger'),\n '--u-tag-info-bg': T('color', 'info', 'light', '9'),\n '--u-tag-info-color': T('color', 'info'),\n '--u-tag-info-border': T('color', 'info'),\n\n // ─── File Picker Colors ───\n '--u-file-picker-hover-bg': T('color', 'primary', 'light', '9'),\n '--u-card-header-bg': 'rgba(0, 0, 0, 0.015)',\n '--u-card-action-bg': 'rgba(0, 0, 0, 0.015)',\n '--u-card-padding-small': '8px',\n '--u-card-padding-default': '12px',\n '--u-card-padding-large': '16px',\n '--u-card-radius': T('radius', 'large')\n}\n\n/** 暗色下组件 token(含与亮色相同的尺寸项,保证暗色 html 块自洽) */\nexport const componentCssVarsDark: Record<string, string> = {\n ...componentCssVarsLight,\n '--u-focus-ring': `0 0 0 3px ${T('color', 'primary', 'a', '35')}`,\n '--u-table-border-color': T('border', 'color'),\n '--u-table-header-bg': T('bg-color', 'hover'),\n '--u-table-header-color': T('text-color', 'main'),\n '--u-table-stripe-bg': T('bg-color', 'middle'),\n '--u-table-stripe-color': T('text-color', 'main'),\n '--u-table-hover-bg': T('text-color', 'title', 'a', '5'),\n '--u-table-hover-color': T('text-color', 'title'),\n '--u-table-current-bg': T('bg-color', 'hover'),\n '--u-table-current-color': 'inherit',\n '--u-table-checked-bg': T('color', 'primary', 'dark', '1'),\n '--u-table-checked-color': 'inherit',\n '--u-nav-color': T('text-color', 'main'),\n '--u-nav-hover-bg': T('text-color', 'title', 'a', '8'),\n '--u-nav-hover-color': T('text-color', 'title'),\n '--u-nav-active-bg': T('color', 'primary', 'a', '16'),\n '--u-nav-active-color': T('text-color', 'white'),\n '--u-nav-bg-color': T('bg-color', 'middle'),\n '--u-radio-border': '#595959',\n '--u-checkbox-border': '#595959',\n\n // ─── Button (plain & text colors in dark mode) ───\n '--u-button-primary-plain-bg': T('color', 'primary', 'dark', '9'),\n '--u-button-primary-plain-shadow': T('color', 'primary', 'dark', '7'),\n '--u-button-success-plain-bg': T('color', 'success', 'dark', '9'),\n '--u-button-success-plain-shadow': T('color', 'success', 'dark', '7'),\n '--u-button-warning-plain-bg': T('color', 'warning', 'dark', '9'),\n '--u-button-warning-plain-shadow': T('color', 'warning', 'dark', '7'),\n '--u-button-danger-plain-bg': T('color', 'danger', 'dark', '9'),\n '--u-button-danger-plain-shadow': T('color', 'danger', 'dark', '7'),\n '--u-button-info-plain-bg': T('color', 'info', 'dark', '9'),\n '--u-button-info-plain-shadow': T('color', 'info', 'dark', '7'),\n\n // ─── Tree selection ───\n '--u-tree-node-selected-bg': T('color', 'primary', 'dark', '9'),\n '--u-tree-node-selected-color': T('color', 'primary'),\n\n // ─── Cascade option active ───\n '--u-cascade-node-active-bg': T('color', 'primary', 'dark', '9'),\n '--u-cascade-node-active-color': T('color', 'primary'),\n\n // ─── Expression Editor Chip ───\n '--u-expression-editor-chip-bg': T('color', 'primary', 'dark', '9'),\n '--u-expression-editor-chip-color': T('color', 'primary'),\n\n // ─── Paginator active buttons ───\n '--u-paginator-btn-hover-bg': T('color', 'primary', 'dark', '9'),\n '--u-paginator-btn-hover-color': T('color', 'primary'),\n '--u-paginator-btn-active-bg': T('color', 'primary', 'dark', '9'),\n '--u-paginator-btn-active-color': T('color', 'primary'),\n\n // ─── Tabs List background (improved dark contrast) ───\n '--u-tabs-bar-bg': T('bg-color', 'bottom'),\n '--u-tabs-active-bg': T('bg-color', 'top'),\n\n // ─── Tag Component Colors ───\n '--u-tag-primary-bg': T('color', 'primary', 'dark', '9'),\n '--u-tag-primary-color': T('color', 'primary'),\n '--u-tag-primary-border': T('color', 'primary'),\n '--u-tag-success-bg': T('color', 'success', 'dark', '9'),\n '--u-tag-success-color': T('color', 'success'),\n '--u-tag-success-border': T('color', 'success'),\n '--u-tag-warning-bg': T('color', 'warning', 'dark', '9'),\n '--u-tag-warning-color': T('color', 'warning'),\n '--u-tag-warning-border': T('color', 'warning'),\n '--u-tag-danger-bg': T('color', 'danger', 'dark', '9'),\n '--u-tag-danger-color': T('color', 'danger'),\n '--u-tag-danger-border': T('color', 'danger'),\n '--u-tag-info-bg': T('color', 'info', 'dark', '9'),\n '--u-tag-info-color': T('color', 'info'),\n '--u-tag-info-border': T('color', 'info'),\n\n // ─── File Picker Colors ───\n '--u-file-picker-hover-bg': T('color', 'primary', 'dark', '9'),\n '--u-card-header-bg': 'rgba(255, 255, 255, 0.015)',\n '--u-card-action-bg': 'rgba(255, 255, 255, 0.015)'\n}\n\nfunction recordToDeclList(record: Record<string, string>): string[] {\n return Object.entries(record).map(([k, v]) => `${k}: ${v}`)\n}\n\nexport const componentCssVarsLightDecls: string[] = recordToDeclList(componentCssVarsLight)\n\nexport const componentCssVarsDarkDecls: string[] = recordToDeclList(componentCssVarsDark)\n"],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import { RGBColor, Theme } from "./type.js";
2
- import { UITheme } from "./ui-theme.js";
2
+ import { ThemeSeries, UITheme, UIThemeOptions } from "./ui-theme.js";
3
3
  import { lightTheme } from "./presets/light.js";
4
4
  import { darkTheme } from "./presets/dark.js";
5
- import { heroDarkTheme, heroLightTheme } from "./presets/hero.js";
6
- import { shadcnDarkTheme, shadcnLightTheme } from "./presets/shadcn.js";
7
- import { glassDarkTheme, glassLightTheme } from "./presets/glass.js";
8
- import { ancientLightTheme } from "./presets/ancient.js";
9
- import { currentTheme, loadTheme, setTheme } from "./load-theme.js";
5
+ import { heroTheme } from "./presets/hero.js";
6
+ import { glassTheme } from "./presets/glass.js";
7
+ import { ancientTheme } from "./presets/ancient.js";
8
+ import { sakuraTheme } from "./presets/sakura.js";
9
+ import { oceanTheme } from "./presets/ocean.js";
10
+ import { midnightTheme } from "./presets/midnight.js";
11
+ import { neonTheme } from "./presets/neon.js";
12
+ import { currentTheme, loadTheme } from "./load-theme.js";
10
13
  import { HEXToRGB, cssVar, defineBySize, hexRgbOnly, hexWithAlpha, isHexColor, mixColor, mixColorWithAlpha } from "./helper.js";
11
- export { HEXToRGB, type RGBColor, type Theme, UITheme, ancientLightTheme, cssVar, currentTheme, darkTheme, defineBySize, glassDarkTheme, glassLightTheme, heroDarkTheme, heroLightTheme, hexRgbOnly, hexWithAlpha, isHexColor, lightTheme, loadTheme, mixColor, mixColorWithAlpha, setTheme, shadcnDarkTheme, shadcnLightTheme };
14
+ export { HEXToRGB, type RGBColor, type Theme, ThemeSeries, UITheme, UIThemeOptions, ancientTheme, cssVar, currentTheme, darkTheme, defineBySize, glassTheme, heroTheme, hexRgbOnly, hexWithAlpha, isHexColor, lightTheme, loadTheme, midnightTheme, mixColor, mixColorWithAlpha, neonTheme, oceanTheme, sakuraTheme };
@@ -2,9 +2,12 @@ import { HEXToRGB, cssVar, defineBySize, hexRgbOnly, hexWithAlpha, isHexColor, m
2
2
  import { UITheme } from "./ui-theme.js";
3
3
  import { lightTheme } from "./presets/light.js";
4
4
  import { darkTheme } from "./presets/dark.js";
5
- import { heroDarkTheme, heroLightTheme } from "./presets/hero.js";
6
- import { shadcnDarkTheme, shadcnLightTheme } from "./presets/shadcn.js";
7
- import { glassDarkTheme, glassLightTheme } from "./presets/glass.js";
8
- import { ancientLightTheme } from "./presets/ancient.js";
9
- import { currentTheme, loadTheme, setTheme } from "./load-theme.js";
10
- export { HEXToRGB, UITheme, ancientLightTheme, cssVar, currentTheme, darkTheme, defineBySize, glassDarkTheme, glassLightTheme, heroDarkTheme, heroLightTheme, hexRgbOnly, hexWithAlpha, isHexColor, lightTheme, loadTheme, mixColor, mixColorWithAlpha, setTheme, shadcnDarkTheme, shadcnLightTheme };
5
+ import { heroTheme } from "./presets/hero.js";
6
+ import { glassTheme } from "./presets/glass.js";
7
+ import { ancientTheme } from "./presets/ancient.js";
8
+ import { sakuraTheme } from "./presets/sakura.js";
9
+ import { oceanTheme } from "./presets/ocean.js";
10
+ import { midnightTheme } from "./presets/midnight.js";
11
+ import { neonTheme } from "./presets/neon.js";
12
+ import { currentTheme, loadTheme } from "./load-theme.js";
13
+ export { HEXToRGB, UITheme, ancientTheme, cssVar, currentTheme, darkTheme, defineBySize, glassTheme, heroTheme, hexRgbOnly, hexWithAlpha, isHexColor, lightTheme, loadTheme, midnightTheme, mixColor, mixColorWithAlpha, neonTheme, oceanTheme, sakuraTheme };
@@ -2,16 +2,15 @@ import { UITheme } from "./ui-theme.js";
2
2
  import { ShallowRef } from "vue";
3
3
  //#region src/theme/load-theme.d.ts
4
4
  declare const currentTheme: ShallowRef<UITheme | undefined>;
5
- declare function setTheme(mode: 'light' | 'dark' | 'auto'): void;
6
5
  /**
7
6
  * @description 加载主题, 如果你是 SSR 环境,
8
7
  * 请在 `onMounted` 中调用,否则你可以在
9
8
  * 项目的入口环境(通常是 main.ts)或其他全局环境中调用。
10
9
  *
11
- * 不传 `theme` 时注入内置 light/dark 变量(支持 `setTheme` 与系统暗色偏好)。
12
- * 传入自定义 `UITheme` 时使用单次 `html { }` 注入。
10
+ * 主题自带系列(`theme.series`),应用时会注入全局 token 与
11
+ * 同系列的组件级 token,并把 `html[data-theme]` 置为对应系列。
13
12
  */
14
13
  declare function loadTheme(theme?: UITheme): void;
15
14
  //#endregion
16
- export { currentTheme, loadTheme, setTheme };
15
+ export { currentTheme, loadTheme };
17
16
  //# sourceMappingURL=load-theme.d.ts.map
@@ -1,38 +1,31 @@
1
- import { UITheme } from "./ui-theme.js";
2
1
  import { lightTheme } from "./presets/light.js";
3
- import { darkTheme } from "./presets/dark.js";
4
2
  import { shallowRef } from "vue";
5
3
  import { useConfig } from "@veltra/compositions";
6
4
  //#region src/theme/load-theme.ts
7
5
  const currentTheme = shallowRef();
8
- function setTheme(mode) {
9
- UITheme.setTheme(mode);
10
- }
6
+ const SIZES = [
7
+ "small",
8
+ "default",
9
+ "large"
10
+ ];
11
11
  /**
12
12
  * @description 加载主题, 如果你是 SSR 环境,
13
13
  * 请在 `onMounted` 中调用,否则你可以在
14
14
  * 项目的入口环境(通常是 main.ts)或其他全局环境中调用。
15
15
  *
16
- * 不传 `theme` 时注入内置 light/dark 变量(支持 `setTheme` 与系统暗色偏好)。
17
- * 传入自定义 `UITheme` 时使用单次 `html { }` 注入。
16
+ * 主题自带系列(`theme.series`),应用时会注入全局 token 与
17
+ * 同系列的组件级 token,并把 `html[data-theme]` 置为对应系列。
18
18
  */
19
- function loadTheme(theme) {
20
- currentTheme.value = theme ?? lightTheme;
21
- const { config } = useConfig();
22
- if (typeof document !== "undefined") document.documentElement.classList.add(config.size);
23
- if (typeof document === "undefined") return;
24
- if (!theme) {
25
- currentTheme.value = lightTheme;
26
- UITheme.injectBuiltInThemes(lightTheme, darkTheme);
27
- return;
28
- }
19
+ function loadTheme(theme = lightTheme) {
29
20
  currentTheme.value = theme;
30
- if (theme === lightTheme || theme === darkTheme) {
31
- UITheme.injectBuiltInThemes(lightTheme, darkTheme);
32
- UITheme.setTheme(theme === darkTheme ? "dark" : "light");
33
- } else theme.render();
21
+ if (typeof document === "undefined") return;
22
+ const { config } = useConfig();
23
+ const classList = document.documentElement.classList;
24
+ classList.remove(...SIZES.filter((s) => s !== config.size));
25
+ classList.add(config.size);
26
+ theme.render();
34
27
  }
35
28
  //#endregion
36
- export { currentTheme, loadTheme, setTheme };
29
+ export { currentTheme, loadTheme };
37
30
 
38
31
  //# sourceMappingURL=load-theme.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load-theme.js","names":[],"sources":["../../src/theme/load-theme.ts"],"sourcesContent":["import { useConfig } from '@veltra/compositions'\nimport { shallowRef, type ShallowRef } from 'vue'\n\nimport { lightTheme, darkTheme } from './presets'\nimport { UITheme } from './ui-theme'\n\nexport const currentTheme: ShallowRef<UITheme | undefined> = shallowRef<UITheme>()\n\nexport function setTheme(mode: 'light' | 'dark' | 'auto'): void {\n UITheme.setTheme(mode)\n}\n\n/**\n * @description 加载主题, 如果你是 SSR 环境,\n * 请在 `onMounted` 中调用,否则你可以在\n * 项目的入口环境(通常是 main.ts)或其他全局环境中调用。\n *\n * 不传 `theme` 时注入内置 light/dark 变量(支持 `setTheme` 与系统暗色偏好)。\n * 传入自定义 `UITheme` 时使用单次 `html { }` 注入。\n */\nexport function loadTheme(theme?: UITheme): void {\n currentTheme.value = theme ?? lightTheme\n\n const { config } = useConfig()\n if (typeof document !== 'undefined') {\n document.documentElement.classList.add(config.size)\n }\n\n if (typeof document === 'undefined') return\n\n if (!theme) {\n currentTheme.value = lightTheme\n UITheme.injectBuiltInThemes(lightTheme, darkTheme)\n return\n }\n\n currentTheme.value = theme\n\n if (theme === lightTheme || theme === darkTheme) {\n UITheme.injectBuiltInThemes(lightTheme, darkTheme)\n UITheme.setTheme(theme === darkTheme ? 'dark' : 'light')\n } else {\n theme.render()\n }\n}\n"],"mappings":";;;;;;AAMA,MAAa,eAAgD,WAAoB;AAEjF,SAAgB,SAAS,MAAuC;CAC9D,QAAQ,SAAS,IAAI;AACvB;;;;;;;;;AAUA,SAAgB,UAAU,OAAuB;CAC/C,aAAa,QAAQ,SAAS;CAE9B,MAAM,EAAE,WAAW,UAAU;CAC7B,IAAI,OAAO,aAAa,aACtB,SAAS,gBAAgB,UAAU,IAAI,OAAO,IAAI;CAGpD,IAAI,OAAO,aAAa,aAAa;CAErC,IAAI,CAAC,OAAO;EACV,aAAa,QAAQ;EACrB,QAAQ,oBAAoB,YAAY,SAAS;EACjD;CACF;CAEA,aAAa,QAAQ;CAErB,IAAI,UAAU,cAAc,UAAU,WAAW;EAC/C,QAAQ,oBAAoB,YAAY,SAAS;EACjD,QAAQ,SAAS,UAAU,YAAY,SAAS,OAAO;CACzD,OACE,MAAM,OAAO;AAEjB"}
1
+ {"version":3,"file":"load-theme.js","names":[],"sources":["../../src/theme/load-theme.ts"],"sourcesContent":["import { useConfig } from '@veltra/compositions'\nimport { shallowRef, type ShallowRef } from 'vue'\n\nimport { lightTheme } from './presets'\nimport type { UITheme } from './ui-theme'\n\nexport const currentTheme: ShallowRef<UITheme | undefined> = shallowRef<UITheme>()\n\nconst SIZES = ['small', 'default', 'large'] as const\n\n/**\n * @description 加载主题, 如果你是 SSR 环境,\n * 请在 `onMounted` 中调用,否则你可以在\n * 项目的入口环境(通常是 main.ts)或其他全局环境中调用。\n *\n * 主题自带系列(`theme.series`),应用时会注入全局 token 与\n * 同系列的组件级 token,并把 `html[data-theme]` 置为对应系列。\n */\nexport function loadTheme(theme: UITheme = lightTheme): void {\n currentTheme.value = theme\n\n if (typeof document === 'undefined') return\n\n const { config } = useConfig()\n const classList = document.documentElement.classList\n classList.remove(...SIZES.filter((s) => s !== config.size))\n classList.add(config.size)\n\n theme.render()\n}\n"],"mappings":";;;;AAMA,MAAa,eAAgD,WAAoB;AAEjF,MAAM,QAAQ;CAAC;CAAS;CAAW;AAAO;;;;;;;;;AAU1C,SAAgB,UAAU,QAAiB,YAAkB;CAC3D,aAAa,QAAQ;CAErB,IAAI,OAAO,aAAa,aAAa;CAErC,MAAM,EAAE,WAAW,UAAU;CAC7B,MAAM,YAAY,SAAS,gBAAgB;CAC3C,UAAU,OAAO,GAAG,MAAM,QAAQ,MAAM,MAAM,OAAO,IAAI,CAAC;CAC1D,UAAU,IAAI,OAAO,IAAI;CAEzB,MAAM,OAAO;AACf"}
@@ -1,7 +1,8 @@
1
1
  import { UITheme } from "../ui-theme.js";
2
2
  import "../index.js";
3
3
  //#region src/theme/presets/ancient.d.ts
4
- declare const ancientLightTheme: UITheme;
4
+ /** 古风(松烟绿 + 宣纸底),天生适合浅色 */
5
+ declare const ancientTheme: UITheme;
5
6
  //#endregion
6
- export { ancientLightTheme };
7
+ export { ancientTheme };
7
8
  //# sourceMappingURL=ancient.d.ts.map
@@ -1,6 +1,7 @@
1
1
  import { lightTheme } from "./light.js";
2
2
  //#region src/theme/presets/ancient.ts
3
- const ancientLightTheme = lightTheme.new({
3
+ /** 古风(松烟绿 + 宣纸底),天生适合浅色 */
4
+ const ancientTheme = lightTheme.new({
4
5
  color: { primary: "#3d6b58" },
5
6
  bg: { color: {
6
7
  bottom: "#f1ede0",
@@ -34,6 +35,6 @@ const ancientLightTheme = lightTheme.new({
34
35
  }
35
36
  });
36
37
  //#endregion
37
- export { ancientLightTheme };
38
+ export { ancientTheme };
38
39
 
39
40
  //# sourceMappingURL=ancient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ancient.js","names":[],"sources":["../../../src/theme/presets/ancient.ts"],"sourcesContent":["import { lightTheme } from './light'\nexport const ancientLightTheme = lightTheme.new({\n color: {\n primary: '#3d6b58' // 松烟绿\n },\n bg: {\n color: {\n bottom: '#f1ede0', // 宣纸底\n middle: '#f7f4ea',\n top: '#fdfbf4',\n hover: '#e9e2cf'\n }\n },\n 'text-color': {\n title: '#2b2a26', // 黛墨\n main: '#403c34',\n second: '#7a7264',\n assist: '#a89f8c',\n placeholder: '#a89f8c'\n },\n border: { width: 1, color: '#e4dcc8', mutedColor: '#d2c8ac' },\n radius: { small: 4, default: 8, large: 12 },\n shadow: { color: 'rgba(64, 54, 32, 0.14)', x: 0, y: 4, blur: 16, spread: -2 }\n})\n"],"mappings":";;AACA,MAAa,oBAAoB,WAAW,IAAI;CAC9C,OAAO,EACL,SAAS,UACX;CACA,IAAI,EACF,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,KAAK;EACL,OAAO;CACT,EACF;CACA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,aAAa;CACf;CACA,QAAQ;EAAE,OAAO;EAAG,OAAO;EAAW,YAAY;CAAU;CAC5D,QAAQ;EAAE,OAAO;EAAG,SAAS;EAAG,OAAO;CAAG;CAC1C,QAAQ;EAAE,OAAO;EAA0B,GAAG;EAAG,GAAG;EAAG,MAAM;EAAI,QAAQ;CAAG;AAC9E,CAAC"}
1
+ {"version":3,"file":"ancient.js","names":[],"sources":["../../../src/theme/presets/ancient.ts"],"sourcesContent":["import { lightTheme } from './light'\n\n/** 古风(松烟绿 + 宣纸底),天生适合浅色 */\nexport const ancientTheme = lightTheme.new({\n color: {\n primary: '#3d6b58' // 松烟绿\n },\n bg: {\n color: {\n bottom: '#f1ede0', // 宣纸底\n middle: '#f7f4ea',\n top: '#fdfbf4',\n hover: '#e9e2cf'\n }\n },\n 'text-color': {\n title: '#2b2a26', // 黛墨\n main: '#403c34',\n second: '#7a7264',\n assist: '#a89f8c',\n placeholder: '#a89f8c'\n },\n border: { width: 1, color: '#e4dcc8', mutedColor: '#d2c8ac' },\n radius: { small: 4, default: 8, large: 12 },\n shadow: { color: 'rgba(64, 54, 32, 0.14)', x: 0, y: 4, blur: 16, spread: -2 }\n})\n"],"mappings":";;;AAGA,MAAa,eAAe,WAAW,IAAI;CACzC,OAAO,EACL,SAAS,UACX;CACA,IAAI,EACF,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,KAAK;EACL,OAAO;CACT,EACF;CACA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,aAAa;CACf;CACA,QAAQ;EAAE,OAAO;EAAG,OAAO;EAAW,YAAY;CAAU;CAC5D,QAAQ;EAAE,OAAO;EAAG,SAAS;EAAG,OAAO;CAAG;CAC1C,QAAQ;EAAE,OAAO;EAA0B,GAAG;EAAG,GAAG;EAAG,MAAM;EAAI,QAAQ;CAAG;AAC9E,CAAC"}
@@ -46,7 +46,7 @@ const darkTheme = lightTheme.new({
46
46
  sm: "0 1px 2px 0 rgba(0, 0, 0, 0.4)",
47
47
  lg: "0 8px 24px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 0 rgba(0, 0, 0, 0.35)"
48
48
  }
49
- });
49
+ }, { series: "dark" });
50
50
  //#endregion
51
51
  export { darkTheme };
52
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"dark.js","names":[],"sources":["../../../src/theme/presets/dark.ts"],"sourcesContent":["import { lightTheme } from './light'\n\nexport const darkTheme = lightTheme.new({\n color: {\n primary: '#3b82f6',\n success: '#22c55e',\n warning: '#f59e0b',\n danger: '#ef4444',\n info: '#06b6d4',\n disabled: '#27272a',\n default: '#27272a'\n },\n\n bg: {\n color: {\n bottom: '#0c0c0e',\n middle: '#141417',\n top: '#1c1c21',\n hover: '#26262c',\n black: '#000000'\n },\n filter: { blur: 'none', saturate: 'none' }\n },\n\n 'text-color': {\n title: '#f4f4f5',\n main: '#d4d4d8',\n second: '#a1a1aa',\n placeholder: '#71717a',\n assist: '#52525b',\n disabled: '#3f3f46',\n white: '#ffffff'\n },\n\n border: { color: '#37373f', mutedColor: '#42424c' },\n\n shadow: {\n color: '#00000066',\n x: 0,\n y: 1,\n blur: 3,\n spread: 0,\n emboss: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 0 rgba(0, 0, 0, 0.35)'\n }\n})\n"],"mappings":";;AAEA,MAAa,YAAY,WAAW,IAAI;CACtC,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CAEA,IAAI;EACF,OAAO;GACL,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,OAAO;GACP,OAAO;EACT;EACA,QAAQ;GAAE,MAAM;GAAQ,UAAU;EAAO;CAC3C;CAEA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CAEA,QAAQ;EAAE,OAAO;EAAW,YAAY;CAAU;CAElD,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,IAAI;EACJ,IAAI;CACN;AACF,CAAC"}
1
+ {"version":3,"file":"dark.js","names":[],"sources":["../../../src/theme/presets/dark.ts"],"sourcesContent":["import { lightTheme } from './light'\n\nexport const darkTheme = lightTheme.new(\n {\n color: {\n primary: '#3b82f6',\n success: '#22c55e',\n warning: '#f59e0b',\n danger: '#ef4444',\n info: '#06b6d4',\n disabled: '#27272a',\n default: '#27272a'\n },\n\n bg: {\n color: {\n bottom: '#0c0c0e',\n middle: '#141417',\n top: '#1c1c21',\n hover: '#26262c',\n black: '#000000'\n },\n filter: { blur: 'none', saturate: 'none' }\n },\n\n 'text-color': {\n title: '#f4f4f5',\n main: '#d4d4d8',\n second: '#a1a1aa',\n placeholder: '#71717a',\n assist: '#52525b',\n disabled: '#3f3f46',\n white: '#ffffff'\n },\n\n border: { color: '#37373f', mutedColor: '#42424c' },\n\n shadow: {\n color: '#00000066',\n x: 0,\n y: 1,\n blur: 3,\n spread: 0,\n emboss: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 0 rgba(0, 0, 0, 0.35)'\n }\n },\n { series: 'dark' }\n)\n"],"mappings":";;AAEA,MAAa,YAAY,WAAW,IAClC;CACE,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CAEA,IAAI;EACF,OAAO;GACL,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,OAAO;GACP,OAAO;EACT;EACA,QAAQ;GAAE,MAAM;GAAQ,UAAU;EAAO;CAC3C;CAEA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CAEA,QAAQ;EAAE,OAAO;EAAW,YAAY;CAAU;CAElD,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,IAAI;EACJ,IAAI;CACN;AACF,GACA,EAAE,QAAQ,OAAO,CACnB"}
@@ -1,8 +1,12 @@
1
1
  import { UITheme } from "../ui-theme.js";
2
2
  import "../index.js";
3
3
  //#region src/theme/presets/glass.d.ts
4
- declare const glassLightTheme: UITheme;
5
- declare const glassDarkTheme: UITheme;
4
+ /**
5
+ * 玻璃拟态,天生适合深色(半透明背景 + 背景模糊在深色下层次最好)。
6
+ * 背景为 rgba() 时派生 token(kbd / batch-edit 混合色)无法自动推导,
7
+ * 需通过组件级扩展键显式声明。
8
+ */
9
+ declare const glassTheme: UITheme;
6
10
  //#endregion
7
- export { glassDarkTheme, glassLightTheme };
11
+ export { glassTheme };
8
12
  //# sourceMappingURL=glass.d.ts.map
@@ -1,54 +1,17 @@
1
1
  import { lightTheme } from "./light.js";
2
2
  //#region src/theme/presets/glass.ts
3
- const glassLightTheme = lightTheme.new({
3
+ /**
4
+ * 玻璃拟态,天生适合深色(半透明背景 + 背景模糊在深色下层次最好)。
5
+ * 背景为 rgba() 时派生 token(kbd / batch-edit 混合色)无法自动推导,
6
+ * 需通过组件级扩展键显式声明。
7
+ */
8
+ const glassTheme = lightTheme.new({
4
9
  color: {
5
10
  primary: "#3B82F6",
6
11
  success: "#10B981",
7
12
  warning: "#F59E0B",
8
13
  danger: "#EF4444",
9
14
  info: "#06B6D4",
10
- disabled: "#E5E7EB",
11
- default: "#F3F4F6"
12
- },
13
- bg: {
14
- color: {
15
- bottom: "rgba(255, 255, 255, 0.45)",
16
- middle: "rgba(255, 255, 255, 0.55)",
17
- top: "rgba(255, 255, 255, 0.6)",
18
- hover: "rgba(255, 255, 255, 0.75)",
19
- black: "#000000"
20
- },
21
- filter: {
22
- blur: "blur(24px)",
23
- saturate: "saturate(180%)"
24
- }
25
- },
26
- border: {
27
- color: "rgba(15, 23, 42, 0.14)",
28
- mutedColor: "rgba(15, 23, 42, 0.08)",
29
- width: 1,
30
- style: "solid"
31
- },
32
- "text-color": {
33
- title: "#1E293B",
34
- main: "#334155",
35
- placeholder: "#94A3B8",
36
- second: "#64748B",
37
- assist: "#CBD5E1",
38
- disabled: "#94A3B8",
39
- white: "#FFFFFF"
40
- },
41
- shadow: {
42
- color: "#00000014",
43
- x: 0,
44
- y: 4,
45
- blur: 24,
46
- spread: 0,
47
- emboss: "none"
48
- }
49
- });
50
- const glassDarkTheme = glassLightTheme.new({
51
- color: {
52
15
  disabled: "#374151",
53
16
  default: "#1E293B"
54
17
  },
@@ -67,7 +30,9 @@ const glassDarkTheme = glassLightTheme.new({
67
30
  },
68
31
  border: {
69
32
  color: "rgba(255, 255, 255, 0.18)",
70
- mutedColor: "rgba(255, 255, 255, 0.1)"
33
+ mutedColor: "rgba(255, 255, 255, 0.1)",
34
+ width: 1,
35
+ style: "solid"
71
36
  },
72
37
  "text-color": {
73
38
  title: "#F8FAFC",
@@ -87,9 +52,15 @@ const glassDarkTheme = glassLightTheme.new({
87
52
  emboss: "none",
88
53
  sm: "0 1px 2px 0 rgba(0, 0, 0, 0.4)",
89
54
  lg: "0 8px 24px 0 rgba(0, 0, 0, 0.55), 0 2px 6px 0 rgba(0, 0, 0, 0.35)"
90
- }
91
- });
55
+ },
56
+ kbd: {
57
+ "inset-shadow": "rgba(0, 0, 0, 0.5)",
58
+ "border-shadow": "rgba(255, 255, 255, 0.09)",
59
+ "drop-shadow": "rgba(0, 0, 0, 0.6)"
60
+ },
61
+ "batch-edit": { "form-header-bg": "rgba(15, 23, 42, 0.8)" }
62
+ }, { series: "dark" });
92
63
  //#endregion
93
- export { glassDarkTheme, glassLightTheme };
64
+ export { glassTheme };
94
65
 
95
66
  //# sourceMappingURL=glass.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glass.js","names":[],"sources":["../../../src/theme/presets/glass.ts"],"sourcesContent":["import { lightTheme } from './light'\n\nexport const glassLightTheme = lightTheme.new({\n color: {\n primary: '#3B82F6',\n success: '#10B981',\n warning: '#F59E0B',\n danger: '#EF4444',\n info: '#06B6D4',\n disabled: '#E5E7EB',\n default: '#F3F4F6'\n },\n bg: {\n color: {\n bottom: 'rgba(255, 255, 255, 0.45)',\n middle: 'rgba(255, 255, 255, 0.55)',\n top: 'rgba(255, 255, 255, 0.6)',\n hover: 'rgba(255, 255, 255, 0.75)',\n black: '#000000'\n },\n filter: { blur: 'blur(24px)', saturate: 'saturate(180%)' }\n },\n border: {\n color: 'rgba(15, 23, 42, 0.14)',\n mutedColor: 'rgba(15, 23, 42, 0.08)',\n width: 1,\n style: 'solid'\n },\n 'text-color': {\n title: '#1E293B',\n main: '#334155',\n placeholder: '#94A3B8',\n second: '#64748B',\n assist: '#CBD5E1',\n disabled: '#94A3B8',\n white: '#FFFFFF'\n },\n shadow: { color: '#00000014', x: 0, y: 4, blur: 24, spread: 0, emboss: 'none' }\n})\n\nexport const glassDarkTheme = glassLightTheme.new({\n color: { disabled: '#374151', default: '#1E293B' },\n bg: {\n color: {\n bottom: 'rgba(15, 23, 42, 0.6)',\n middle: 'rgba(15, 23, 42, 0.7)',\n top: 'rgba(15, 23, 42, 0.75)',\n hover: 'rgba(30, 41, 59, 0.85)',\n black: '#000000'\n },\n filter: { blur: 'blur(20px)', saturate: 'saturate(200%)' }\n },\n border: { color: 'rgba(255, 255, 255, 0.18)', mutedColor: 'rgba(255, 255, 255, 0.1)' },\n 'text-color': {\n title: '#F8FAFC',\n main: '#F1F5F9',\n second: '#94A3B8',\n placeholder: '#64748B',\n assist: '#64748B',\n disabled: '#475569',\n white: '#ffffff'\n },\n shadow: {\n color: '#00000059',\n x: 0,\n y: 4,\n blur: 32,\n spread: 0,\n emboss: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px 0 rgba(0, 0, 0, 0.55), 0 2px 6px 0 rgba(0, 0, 0, 0.35)'\n }\n})\n"],"mappings":";;AAEA,MAAa,kBAAkB,WAAW,IAAI;CAC5C,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CACA,IAAI;EACF,OAAO;GACL,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,OAAO;GACP,OAAO;EACT;EACA,QAAQ;GAAE,MAAM;GAAc,UAAU;EAAiB;CAC3D;CACA,QAAQ;EACN,OAAO;EACP,YAAY;EACZ,OAAO;EACP,OAAO;CACT;CACA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EAAE,OAAO;EAAa,GAAG;EAAG,GAAG;EAAG,MAAM;EAAI,QAAQ;EAAG,QAAQ;CAAO;AAChF,CAAC;AAED,MAAa,iBAAiB,gBAAgB,IAAI;CAChD,OAAO;EAAE,UAAU;EAAW,SAAS;CAAU;CACjD,IAAI;EACF,OAAO;GACL,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,OAAO;GACP,OAAO;EACT;EACA,QAAQ;GAAE,MAAM;GAAc,UAAU;EAAiB;CAC3D;CACA,QAAQ;EAAE,OAAO;EAA6B,YAAY;CAA2B;CACrF,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,IAAI;EACJ,IAAI;CACN;AACF,CAAC"}
1
+ {"version":3,"file":"glass.js","names":[],"sources":["../../../src/theme/presets/glass.ts"],"sourcesContent":["import { lightTheme } from './light'\n\n/**\n * 玻璃拟态,天生适合深色(半透明背景 + 背景模糊在深色下层次最好)。\n * 背景为 rgba() 时派生 token(kbd / batch-edit 混合色)无法自动推导,\n * 需通过组件级扩展键显式声明。\n */\nexport const glassTheme = lightTheme.new(\n {\n color: {\n primary: '#3B82F6',\n success: '#10B981',\n warning: '#F59E0B',\n danger: '#EF4444',\n info: '#06B6D4',\n disabled: '#374151',\n default: '#1E293B'\n },\n bg: {\n color: {\n bottom: 'rgba(15, 23, 42, 0.6)',\n middle: 'rgba(15, 23, 42, 0.7)',\n top: 'rgba(15, 23, 42, 0.75)',\n hover: 'rgba(30, 41, 59, 0.85)',\n black: '#000000'\n },\n filter: { blur: 'blur(20px)', saturate: 'saturate(200%)' }\n },\n border: {\n color: 'rgba(255, 255, 255, 0.18)',\n mutedColor: 'rgba(255, 255, 255, 0.1)',\n width: 1,\n style: 'solid'\n },\n 'text-color': {\n title: '#F8FAFC',\n main: '#F1F5F9',\n second: '#94A3B8',\n placeholder: '#64748B',\n assist: '#64748B',\n disabled: '#475569',\n white: '#ffffff'\n },\n shadow: {\n color: '#00000059',\n x: 0,\n y: 4,\n blur: 32,\n spread: 0,\n emboss: 'none',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px 0 rgba(0, 0, 0, 0.55), 0 2px 6px 0 rgba(0, 0, 0, 0.35)'\n },\n kbd: {\n 'inset-shadow': 'rgba(0, 0, 0, 0.5)',\n 'border-shadow': 'rgba(255, 255, 255, 0.09)',\n 'drop-shadow': 'rgba(0, 0, 0, 0.6)'\n },\n 'batch-edit': { 'form-header-bg': 'rgba(15, 23, 42, 0.8)' }\n },\n { series: 'dark' }\n)\n"],"mappings":";;;;;;;AAOA,MAAa,aAAa,WAAW,IACnC;CACE,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CACA,IAAI;EACF,OAAO;GACL,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,OAAO;GACP,OAAO;EACT;EACA,QAAQ;GAAE,MAAM;GAAc,UAAU;EAAiB;CAC3D;CACA,QAAQ;EACN,OAAO;EACP,YAAY;EACZ,OAAO;EACP,OAAO;CACT;CACA,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,IAAI;EACJ,IAAI;CACN;CACA,KAAK;EACH,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;CACjB;CACA,cAAc,EAAE,kBAAkB,wBAAwB;AAC5D,GACA,EAAE,QAAQ,OAAO,CACnB"}
@@ -1,8 +1,8 @@
1
1
  import { UITheme } from "../ui-theme.js";
2
2
  import "../index.js";
3
3
  //#region src/theme/presets/hero.d.ts
4
- declare const heroLightTheme: UITheme;
5
- declare const heroDarkTheme: UITheme;
4
+ /** HeroUI 风格,天生适合浅色 */
5
+ declare const heroTheme: UITheme;
6
6
  //#endregion
7
- export { heroDarkTheme, heroLightTheme };
7
+ export { heroTheme };
8
8
  //# sourceMappingURL=hero.d.ts.map
@@ -1,6 +1,7 @@
1
1
  import { lightTheme } from "./light.js";
2
2
  //#region src/theme/presets/hero.ts
3
- const heroLightTheme = lightTheme.new({
3
+ /** HeroUI 风格,天生适合浅色 */
4
+ const heroTheme = lightTheme.new({
4
5
  color: {
5
6
  primary: "#7828c8",
6
7
  success: "#17c964",
@@ -39,45 +40,7 @@ const heroLightTheme = lightTheme.new({
39
40
  },
40
41
  button: { "default-bg": "#ebebec" }
41
42
  });
42
- const heroDarkTheme = heroLightTheme.new({
43
- color: {
44
- primary: "#9353d3",
45
- disabled: "#27272a",
46
- default: "#27272a"
47
- },
48
- bg: { color: {
49
- bottom: "#000000",
50
- middle: "#18181b",
51
- top: "#27272a",
52
- hover: "#3f3f46",
53
- black: "#000000"
54
- } },
55
- border: {
56
- color: "#3f3f46",
57
- mutedColor: "#3f3f46"
58
- },
59
- "text-color": {
60
- title: "#ECEDEE",
61
- main: "#ECEDEE",
62
- second: "#A1A1AA",
63
- placeholder: "#71717A",
64
- assist: "#71717A",
65
- disabled: "#71717A",
66
- white: "#FFFFFF"
67
- },
68
- shadow: {
69
- color: "#00000033",
70
- x: 0,
71
- y: 4,
72
- blur: 14,
73
- spread: 0,
74
- emboss: "0 2px 4px 0 #0000000a,0 1px 2px 0 #0000000f,0 0 1px 0 #0000000f",
75
- sm: "0 1px 2px 0 rgba(0, 0, 0, 0.4)",
76
- lg: "0 8px 24px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 0 rgba(0, 0, 0, 0.35)"
77
- },
78
- button: { "default-bg": "var(--u-bg-color-top)" }
79
- });
80
43
  //#endregion
81
- export { heroDarkTheme, heroLightTheme };
44
+ export { heroTheme };
82
45
 
83
46
  //# sourceMappingURL=hero.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hero.js","names":[],"sources":["../../../src/theme/presets/hero.ts"],"sourcesContent":["import { lightTheme } from './light'\n\nexport const heroLightTheme = lightTheme.new({\n color: {\n primary: '#7828c8', // purple\n success: '#17c964',\n warning: '#f5a524',\n danger: '#f31260',\n info: '#006fee',\n disabled: '#f4f4f5',\n default: '#f4f4f5'\n },\n border: { width: 2, color: '#dcdfe6', mutedColor: '#e4e4e7' },\n 'text-color': {\n title: '#11181C',\n main: '#11181C',\n second: '#71717A',\n placeholder: '#A1A1AA',\n assist: '#A1A1AA',\n disabled: '#A1A1AA',\n white: '#FFFFFF'\n },\n radius: { small: 8, default: 12, large: 14 },\n shadow: {\n color: '#00000014',\n x: 0,\n y: 4,\n blur: 14,\n spread: 0,\n emboss: '0 2px 4px 0 #0000000a,0 1px 2px 0 #0000000f,0 0 3px 0px #0000000f'\n },\n button: { 'default-bg': '#ebebec' }\n})\n\nexport const heroDarkTheme = heroLightTheme.new({\n color: { primary: '#9353d3', disabled: '#27272a', default: '#27272a' },\n bg: {\n color: {\n bottom: '#000000',\n middle: '#18181b',\n top: '#27272a',\n hover: '#3f3f46',\n black: '#000000'\n }\n },\n border: { color: '#3f3f46', mutedColor: '#3f3f46' },\n 'text-color': {\n title: '#ECEDEE',\n main: '#ECEDEE',\n second: '#A1A1AA',\n placeholder: '#71717A',\n assist: '#71717A',\n disabled: '#71717A',\n white: '#FFFFFF'\n },\n shadow: {\n color: '#00000033',\n x: 0,\n y: 4,\n blur: 14,\n spread: 0,\n emboss: '0 2px 4px 0 #0000000a,0 1px 2px 0 #0000000f,0 0 1px 0 #0000000f',\n sm: '0 1px 2px 0 rgba(0, 0, 0, 0.4)',\n lg: '0 8px 24px 0 rgba(0, 0, 0, 0.5), 0 2px 6px 0 rgba(0, 0, 0, 0.35)'\n },\n button: { 'default-bg': 'var(--u-bg-color-top)' }\n})\n"],"mappings":";;AAEA,MAAa,iBAAiB,WAAW,IAAI;CAC3C,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CACA,QAAQ;EAAE,OAAO;EAAG,OAAO;EAAW,YAAY;CAAU;CAC5D,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EAAE,OAAO;EAAG,SAAS;EAAI,OAAO;CAAG;CAC3C,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;CACV;CACA,QAAQ,EAAE,cAAc,UAAU;AACpC,CAAC;AAED,MAAa,gBAAgB,eAAe,IAAI;CAC9C,OAAO;EAAE,SAAS;EAAW,UAAU;EAAW,SAAS;CAAU;CACrE,IAAI,EACF,OAAO;EACL,QAAQ;EACR,QAAQ;EACR,KAAK;EACL,OAAO;EACP,OAAO;CACT,EACF;CACA,QAAQ;EAAE,OAAO;EAAW,YAAY;CAAU;CAClD,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;EACR,IAAI;EACJ,IAAI;CACN;CACA,QAAQ,EAAE,cAAc,wBAAwB;AAClD,CAAC"}
1
+ {"version":3,"file":"hero.js","names":[],"sources":["../../../src/theme/presets/hero.ts"],"sourcesContent":["import { lightTheme } from './light'\n\n/** HeroUI 风格,天生适合浅色 */\nexport const heroTheme = lightTheme.new({\n color: {\n primary: '#7828c8', // purple\n success: '#17c964',\n warning: '#f5a524',\n danger: '#f31260',\n info: '#006fee',\n disabled: '#f4f4f5',\n default: '#f4f4f5'\n },\n border: { width: 2, color: '#dcdfe6', mutedColor: '#e4e4e7' },\n 'text-color': {\n title: '#11181C',\n main: '#11181C',\n second: '#71717A',\n placeholder: '#A1A1AA',\n assist: '#A1A1AA',\n disabled: '#A1A1AA',\n white: '#FFFFFF'\n },\n radius: { small: 8, default: 12, large: 14 },\n shadow: {\n color: '#00000014',\n x: 0,\n y: 4,\n blur: 14,\n spread: 0,\n emboss: '0 2px 4px 0 #0000000a,0 1px 2px 0 #0000000f,0 0 3px 0px #0000000f'\n },\n button: { 'default-bg': '#ebebec' }\n})\n"],"mappings":";;;AAGA,MAAa,YAAY,WAAW,IAAI;CACtC,OAAO;EACL,SAAS;EACT,SAAS;EACT,SAAS;EACT,QAAQ;EACR,MAAM;EACN,UAAU;EACV,SAAS;CACX;CACA,QAAQ;EAAE,OAAO;EAAG,OAAO;EAAW,YAAY;CAAU;CAC5D,cAAc;EACZ,OAAO;EACP,MAAM;EACN,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,UAAU;EACV,OAAO;CACT;CACA,QAAQ;EAAE,OAAO;EAAG,SAAS;EAAI,OAAO;CAAG;CAC3C,QAAQ;EACN,OAAO;EACP,GAAG;EACH,GAAG;EACH,MAAM;EACN,QAAQ;EACR,QAAQ;CACV;CACA,QAAQ,EAAE,cAAc,UAAU;AACpC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { UITheme } from "../ui-theme.js";
2
+ import "../index.js";
3
+ //#region src/theme/presets/midnight.d.ts
4
+ /** 午夜(靛蓝 + 深空底,宽松间距、舒缓缓动),天生适合深色 */
5
+ declare const midnightTheme: UITheme;
6
+ //#endregion
7
+ export { midnightTheme };
8
+ //# sourceMappingURL=midnight.d.ts.map
@@ -0,0 +1,55 @@
1
+ import { darkTheme } from "./dark.js";
2
+ //#region src/theme/presets/midnight.ts
3
+ /** 午夜(靛蓝 + 深空底,宽松间距、舒缓缓动),天生适合深色 */
4
+ const midnightTheme = darkTheme.new({
5
+ color: {
6
+ primary: "#6f78ee",
7
+ success: "#34d399",
8
+ warning: "#fbbf24",
9
+ danger: "#f87171",
10
+ info: "#38bdf8",
11
+ disabled: "#232d4a",
12
+ default: "#232d4a"
13
+ },
14
+ bg: { color: {
15
+ bottom: "#0a0f1e",
16
+ middle: "#101731",
17
+ top: "#182242",
18
+ hover: "#212d54"
19
+ } },
20
+ "text-color": {
21
+ title: "#e8ecff",
22
+ main: "#c3cbf0",
23
+ second: "#8d97c6",
24
+ placeholder: "#7d8ab8",
25
+ assist: "#5b6895",
26
+ disabled: "#576493"
27
+ },
28
+ border: {
29
+ color: "#36457a",
30
+ mutedColor: "#52619a"
31
+ },
32
+ gap: {
33
+ small: 8,
34
+ default: 10,
35
+ large: 14
36
+ },
37
+ shadow: {
38
+ color: "#00000080",
39
+ x: 0,
40
+ y: 2,
41
+ blur: 8,
42
+ spread: 0,
43
+ emboss: "none",
44
+ sm: "0 1px 2px 0 rgba(0, 0, 0, 0.5)",
45
+ lg: "0 8px 24px 0 rgba(0, 0, 0, 0.6), 0 2px 6px 0 rgba(0, 0, 0, 0.4)"
46
+ },
47
+ transition: {
48
+ slow: "0.4s",
49
+ ease: "cubic-bezier(0.33, 1, 0.68, 1)"
50
+ }
51
+ });
52
+ //#endregion
53
+ export { midnightTheme };
54
+
55
+ //# sourceMappingURL=midnight.js.map