@lobehub/ui 6.0.0-beta.9 → 6.0.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 (88) hide show
  1. package/README.md +3 -3
  2. package/es/CodeDiff/DiffPanel.mjs +2 -2
  3. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  4. package/es/Drawer/style.mjs.map +1 -1
  5. package/es/FloatingPanel/style.mjs +3 -2
  6. package/es/FloatingPanel/style.mjs.map +1 -1
  7. package/es/Form/Form.mjs +6 -2
  8. package/es/Form/Form.mjs.map +1 -1
  9. package/es/Form/style.mjs +3 -3
  10. package/es/Form/style.mjs.map +1 -1
  11. package/es/Form/type.d.mts +7 -0
  12. package/es/Popover/style.mjs +1 -1
  13. package/es/Popover/style.mjs.map +1 -1
  14. package/es/ProTable/hooks/useFetchData.mjs +1 -1
  15. package/es/ProTable/hooks/useFetchData.mjs.map +1 -1
  16. package/es/ProTable/parts/FieldControl.mjs +28 -11
  17. package/es/ProTable/parts/FieldControl.mjs.map +1 -1
  18. package/es/ProTable/style.mjs +9 -0
  19. package/es/ProTable/style.mjs.map +1 -1
  20. package/es/ProTable/type.d.mts +5 -2
  21. package/es/Switch/Switch.mjs +8 -1
  22. package/es/Switch/Switch.mjs.map +1 -1
  23. package/es/Switch/atoms.d.mts +7 -1
  24. package/es/Switch/atoms.mjs +20 -4
  25. package/es/Switch/atoms.mjs.map +1 -1
  26. package/es/Switch/style.mjs +33 -2
  27. package/es/Switch/style.mjs.map +1 -1
  28. package/es/Table/Table.mjs +14 -5
  29. package/es/Table/Table.mjs.map +1 -1
  30. package/es/Table/render/FixedFrost.mjs +11 -2
  31. package/es/Table/render/FixedFrost.mjs.map +1 -1
  32. package/es/Table/style.mjs +4 -0
  33. package/es/Table/style.mjs.map +1 -1
  34. package/es/Text/style.d.mts +3 -3
  35. package/es/Toast/dodge.mjs +0 -1
  36. package/es/Toast/dodge.mjs.map +1 -1
  37. package/es/Toast/dodge.stylex.mjs +1 -4
  38. package/es/Toast/dodge.stylex.mjs.map +1 -1
  39. package/es/Toast/style.mjs +1 -1
  40. package/es/Toast/style.mjs.map +1 -1
  41. package/es/Tooltip/style.mjs +2 -2
  42. package/es/Tooltip/style.mjs.map +1 -1
  43. package/es/color/index.d.mts +2 -1
  44. package/es/color/index.mjs +2 -1
  45. package/es/color/status/error.mjs +67 -0
  46. package/es/color/status/error.mjs.map +1 -0
  47. package/es/color/status/index.d.mts +11 -0
  48. package/es/color/status/index.mjs +15 -0
  49. package/es/color/status/index.mjs.map +1 -0
  50. package/es/color/status/info.mjs +67 -0
  51. package/es/color/status/info.mjs.map +1 -0
  52. package/es/color/status/success.mjs +67 -0
  53. package/es/color/status/success.mjs.map +1 -0
  54. package/es/color/status/warning.mjs +67 -0
  55. package/es/color/status/warning.mjs.map +1 -0
  56. package/es/index.d.mts +3 -2
  57. package/es/index.mjs +3 -2
  58. package/es/style.css +114 -23
  59. package/es/styles/index.d.mts +3 -2
  60. package/es/styles/index.mjs +3 -2
  61. package/es/styles/stylex/cssVar.stylex.mjs +3 -0
  62. package/es/styles/stylex/cssVar.stylex.mjs.map +1 -1
  63. package/es/styles/theme/createLobeToken.d.mts +9 -5
  64. package/es/styles/theme/createLobeToken.mjs +3 -2
  65. package/es/styles/theme/createLobeToken.mjs.map +1 -1
  66. package/es/styles/theme/customPalette.d.mts +6 -0
  67. package/es/styles/theme/customPalette.mjs +28 -0
  68. package/es/styles/theme/customPalette.mjs.map +1 -0
  69. package/es/styles/theme/customPrimary.mjs +52 -17
  70. package/es/styles/theme/customPrimary.mjs.map +1 -1
  71. package/es/styles/theme/scope.d.mts +4 -2
  72. package/es/styles/theme/scope.mjs +53 -20
  73. package/es/styles/theme/scope.mjs.map +1 -1
  74. package/es/styles/theme/themeCss.d.mts +1 -0
  75. package/es/styles/theme/themeCss.mjs +16 -1
  76. package/es/styles/theme/themeCss.mjs.map +1 -1
  77. package/es/styles/theme/token/legacy.mjs +12 -12
  78. package/es/styles/theme/token/legacy.mjs.map +1 -1
  79. package/es/styles/theme/token/neutral.mjs +12 -4
  80. package/es/styles/theme/token/neutral.mjs.map +1 -1
  81. package/es/styles/theme/token/neutralText.mjs +91 -0
  82. package/es/styles/theme/token/neutralText.mjs.map +1 -0
  83. package/es/styles/theme/token/palette.mjs +16 -41
  84. package/es/styles/theme/token/palette.mjs.map +1 -1
  85. package/es/styles/theme/token/static.mjs +3 -0
  86. package/es/styles/theme/token/static.mjs.map +1 -1
  87. package/es/theme.css +293 -290
  88. package/package.json +1 -1
@@ -1,18 +1,21 @@
1
1
  "use client";
2
+ import { getPaletteRevision, isRegisteredPalette, subscribePalettes } from "./customPalette.mjs";
2
3
  import { isCustomPrimaryColor } from "./customPrimary.mjs";
3
4
  import { staticToken } from "./token/static.mjs";
4
5
  import { createLobeToken } from "./createLobeToken.mjs";
5
- import { getCustomPrimaryCss } from "./themeCss.mjs";
6
+ import { getCustomPaletteCss, getCustomPrimaryCss } from "./themeCss.mjs";
6
7
  import { createContext, use, useMemo, useSyncExternalStore } from "react";
7
8
  import { jsx, jsxs } from "react/jsx-runtime";
8
9
  //#region src/styles/theme/scope.tsx
9
10
  const ATTRIBUTES = [
10
11
  "data-theme",
11
12
  "data-primary-color",
12
- "data-neutral-color"
13
+ "data-neutral-color",
14
+ "data-palette"
13
15
  ];
14
- const toAttributes = ({ appearance, neutralColor, primaryColor }) => ({
16
+ const toAttributes = ({ appearance, neutralColor, palette, primaryColor }) => ({
15
17
  "data-neutral-color": neutralColor,
18
+ "data-palette": palette,
16
19
  "data-primary-color": primaryColor,
17
20
  "data-theme": appearance
18
21
  });
@@ -26,6 +29,18 @@ const ensureCustomPrimaryStyle = (color, doc) => {
26
29
  style.textContent = getCustomPrimaryCss(color);
27
30
  doc.head.append(style);
28
31
  };
32
+ const paletteStyleId = (name) => `lobe-palette-${name}`;
33
+ const ensurePaletteStyle = (name, doc) => {
34
+ const id = paletteStyleId(name);
35
+ let style = doc.getElementById(id);
36
+ if (!style) {
37
+ style = doc.createElement("style");
38
+ style.id = id;
39
+ doc.head.append(style);
40
+ }
41
+ const css = getCustomPaletteCss(name);
42
+ if (style.textContent !== css) style.textContent = css;
43
+ };
29
44
  const setLobeTheme = (state, root = document.documentElement) => {
30
45
  const next = {
31
46
  ...readThemeState(root),
@@ -33,15 +48,18 @@ const setLobeTheme = (state, root = document.documentElement) => {
33
48
  };
34
49
  next.primaryColor = normalizePrimary(next.primaryColor);
35
50
  if (isCustomPrimaryColor(next.primaryColor)) ensureCustomPrimaryStyle(next.primaryColor, root.ownerDocument);
51
+ if (isRegisteredPalette(next.palette)) ensurePaletteStyle(next.palette, root.ownerDocument);
36
52
  for (const [name, value] of Object.entries(toAttributes(next))) if (value) root.setAttribute(name, value);
37
53
  else root.removeAttribute(name);
38
54
  };
39
55
  const readThemeState = (el) => ({
40
56
  appearance: el.dataset.theme === "dark" ? "dark" : "light",
41
57
  neutralColor: el.dataset.neutralColor || void 0,
58
+ palette: el.dataset.palette || void 0,
42
59
  primaryColor: el.dataset.primaryColor || void 0
43
60
  });
44
- const stateKey = (state) => `${state.appearance}|${state.primaryColor ?? ""}|${state.neutralColor ?? ""}`;
61
+ const stateKey = (state) => `${state.appearance}|${state.primaryColor ?? ""}|${state.neutralColor ?? ""}|${state.palette ?? ""}`;
62
+ const usePaletteRevision = () => useSyncExternalStore(subscribePalettes, getPaletteRevision, getPaletteRevision);
45
63
  const SERVER_STATE = { appearance: "light" };
46
64
  let rootSnapshot = SERVER_STATE;
47
65
  const getRootSnapshot = () => {
@@ -63,31 +81,43 @@ const useThemeState = () => {
63
81
  const root = useSyncExternalStore(subscribeRoot, getRootSnapshot, () => SERVER_STATE);
64
82
  return scoped ?? root;
65
83
  };
66
- const ThemeScope = ({ appearance, children, className, neutralColor, primaryColor, style }) => {
84
+ const ThemeScope = ({ appearance, children, className, neutralColor, palette, primaryColor, style }) => {
67
85
  const parent = useThemeState();
68
86
  const state = useMemo(() => ({
69
87
  appearance: appearance ?? parent.appearance,
70
88
  neutralColor: neutralColor ?? parent.neutralColor,
89
+ palette: palette ?? parent.palette,
71
90
  primaryColor: normalizePrimary(primaryColor) ?? parent.primaryColor
72
91
  }), [
73
92
  appearance,
74
93
  neutralColor,
94
+ palette,
75
95
  primaryColor,
76
96
  parent
77
97
  ]);
78
98
  const customPrimary = isCustomPrimaryColor(state.primaryColor) ? state.primaryColor : void 0;
99
+ const paletteRevision = usePaletteRevision();
100
+ const customPalette = isRegisteredPalette(state.palette) ? state.palette : void 0;
79
101
  return /* @__PURE__ */ jsxs(ThemeScopeContext, {
80
102
  value: state,
81
- children: [customPrimary && /* @__PURE__ */ jsx("style", {
82
- href: customPrimaryStyleId(customPrimary),
83
- precedence: "lobe-theme",
84
- children: getCustomPrimaryCss(customPrimary)
85
- }), /* @__PURE__ */ jsx("div", {
86
- className,
87
- style,
88
- ...toAttributes(state),
89
- children
90
- })]
103
+ children: [
104
+ customPrimary && /* @__PURE__ */ jsx("style", {
105
+ href: customPrimaryStyleId(customPrimary),
106
+ precedence: "lobe-theme",
107
+ children: getCustomPrimaryCss(customPrimary)
108
+ }),
109
+ customPalette && /* @__PURE__ */ jsx("style", {
110
+ href: `${paletteStyleId(customPalette)}-${paletteRevision}`,
111
+ precedence: "lobe-theme",
112
+ children: getCustomPaletteCss(customPalette)
113
+ }),
114
+ /* @__PURE__ */ jsx("div", {
115
+ className,
116
+ style,
117
+ ...toAttributes(state),
118
+ children
119
+ })
120
+ ]
91
121
  });
92
122
  };
93
123
  const useThemeMode = () => {
@@ -100,7 +130,7 @@ const useThemeMode = () => {
100
130
  const themeCache = /* @__PURE__ */ new Map();
101
131
  const useTheme = () => {
102
132
  const state = useThemeState();
103
- const key = stateKey(state);
133
+ const key = `${stateKey(state)}@${usePaletteRevision()}`;
104
134
  let theme = themeCache.get(key);
105
135
  if (!theme) {
106
136
  theme = {
@@ -151,14 +181,17 @@ const subscribeResponsive = (onChange) => {
151
181
  };
152
182
  };
153
183
  const useResponsive = () => useSyncExternalStore(subscribeResponsive, getResponsiveSnapshot, () => SERVER_RESPONSIVE);
154
- const LobeThemeScript = ({ appearance, neutralColor, nonce, primaryColor }) => {
184
+ const LobeThemeScript = ({ appearance, neutralColor, nonce, palette, primaryColor }) => {
155
185
  const primary = normalizePrimary(primaryColor);
156
- const custom = isCustomPrimaryColor(primary) ? [customPrimaryStyleId(primary), getCustomPrimaryCss(primary)] : [null, null];
157
- const script = `(function(a,p,n,i,c){var d=document.documentElement;if(a==='system')a=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';if(a)d.setAttribute('data-theme',a);else if(!d.hasAttribute('data-theme'))d.setAttribute('data-theme','light');if(p)d.setAttribute('data-primary-color',p);if(n)d.setAttribute('data-neutral-color',n);if(c&&!document.getElementById(i)){var s=document.createElement('style');s.id=i;s.textContent=c;document.head.appendChild(s);}}).apply(null,${JSON.stringify([
186
+ const styles = [];
187
+ if (isCustomPrimaryColor(primary)) styles.push([customPrimaryStyleId(primary), getCustomPrimaryCss(primary)]);
188
+ if (isRegisteredPalette(palette)) styles.push([paletteStyleId(palette), getCustomPaletteCss(palette)]);
189
+ const script = `(function(a,p,n,q,t){var d=document.documentElement;if(a==='system')a=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';if(a)d.setAttribute('data-theme',a);else if(!d.hasAttribute('data-theme'))d.setAttribute('data-theme','light');if(p)d.setAttribute('data-primary-color',p);if(n)d.setAttribute('data-neutral-color',n);if(q)d.setAttribute('data-palette',q);t.forEach(function(x){if(document.getElementById(x[0]))return;var s=document.createElement('style');s.id=x[0];s.textContent=x[1];document.head.appendChild(s);});}).apply(null,${JSON.stringify([
158
190
  appearance ?? null,
159
191
  primary ?? null,
160
192
  neutralColor ?? null,
161
- ...custom
193
+ palette ?? null,
194
+ styles
162
195
  ])})`;
163
196
  return /* @__PURE__ */ jsx("script", {
164
197
  suppressHydrationWarning: true,
@@ -1 +1 @@
1
- {"version":3,"file":"scope.mjs","names":[],"sources":["../../../src/styles/theme/scope.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type CSSProperties,\n type ReactNode,\n use,\n useMemo,\n useSyncExternalStore,\n} from 'react';\n\nimport type { NeutralColors } from '../customTheme';\nimport { createLobeToken, type LobeToken } from './createLobeToken';\nimport {\n type CustomPrimaryColor,\n isCustomPrimaryColor,\n type LobePrimaryColor,\n} from './customPrimary';\nimport { getCustomPrimaryCss } from './themeCss';\nimport { staticToken } from './token/static';\n\nexport type LobeAppearance = 'light' | 'dark';\n\nexport interface LobeThemeState {\n appearance: LobeAppearance;\n neutralColor?: NeutralColors;\n primaryColor?: LobePrimaryColor;\n}\n\nconst ATTRIBUTES = ['data-theme', 'data-primary-color', 'data-neutral-color'];\n\nconst toAttributes = ({ appearance, neutralColor, primaryColor }: LobeThemeState) => ({\n 'data-neutral-color': neutralColor,\n 'data-primary-color': primaryColor,\n 'data-theme': appearance,\n});\n\nconst normalizePrimary = (color?: LobePrimaryColor) =>\n isCustomPrimaryColor(color) ? (color.toLowerCase() as CustomPrimaryColor) : color;\n\nconst customPrimaryStyleId = (color: CustomPrimaryColor) => `lobe-primary-${color.slice(1)}`;\n\nconst ensureCustomPrimaryStyle = (color: CustomPrimaryColor, doc: Document) => {\n const id = customPrimaryStyleId(color);\n if (doc.getElementById(id)) return;\n const style = doc.createElement('style');\n style.id = id;\n style.textContent = getCustomPrimaryCss(color);\n doc.head.append(style);\n};\n\nexport const setLobeTheme = (\n state: Partial<LobeThemeState>,\n root: HTMLElement = document.documentElement,\n) => {\n const next = { ...readThemeState(root), ...state };\n next.primaryColor = normalizePrimary(next.primaryColor);\n if (isCustomPrimaryColor(next.primaryColor))\n ensureCustomPrimaryStyle(next.primaryColor, root.ownerDocument);\n for (const [name, value] of Object.entries(toAttributes(next))) {\n if (value) root.setAttribute(name, value);\n else root.removeAttribute(name);\n }\n};\n\nconst readThemeState = (el: HTMLElement): LobeThemeState => ({\n appearance: el.dataset.theme === 'dark' ? 'dark' : 'light',\n neutralColor: (el.dataset.neutralColor as NeutralColors) || undefined,\n primaryColor: (el.dataset.primaryColor as LobePrimaryColor) || undefined,\n});\n\nconst stateKey = (state: LobeThemeState) =>\n `${state.appearance}|${state.primaryColor ?? ''}|${state.neutralColor ?? ''}`;\n\nconst SERVER_STATE: LobeThemeState = { appearance: 'light' };\nlet rootSnapshot: LobeThemeState = SERVER_STATE;\n\nconst getRootSnapshot = () => {\n const next = readThemeState(document.documentElement);\n if (stateKey(next) !== stateKey(rootSnapshot)) rootSnapshot = next;\n return rootSnapshot;\n};\n\nconst subscribeRoot = (onChange: () => void) => {\n const observer = new MutationObserver(onChange);\n observer.observe(document.documentElement, { attributeFilter: ATTRIBUTES, attributes: true });\n return () => observer.disconnect();\n};\n\nconst ThemeScopeContext = createContext<LobeThemeState | null>(null);\n\nconst useThemeState = () => {\n const scoped = use(ThemeScopeContext);\n const root = useSyncExternalStore(subscribeRoot, getRootSnapshot, () => SERVER_STATE);\n return scoped ?? root;\n};\n\nexport interface ThemeScopeProps extends Partial<LobeThemeState> {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const ThemeScope = ({\n appearance,\n children,\n className,\n neutralColor,\n primaryColor,\n style,\n}: ThemeScopeProps) => {\n const parent = useThemeState();\n const state = useMemo<LobeThemeState>(\n () => ({\n appearance: appearance ?? parent.appearance,\n neutralColor: neutralColor ?? parent.neutralColor,\n primaryColor: normalizePrimary(primaryColor) ?? parent.primaryColor,\n }),\n [appearance, neutralColor, primaryColor, parent],\n );\n const customPrimary = isCustomPrimaryColor(state.primaryColor) ? state.primaryColor : undefined;\n\n return (\n <ThemeScopeContext value={state}>\n {customPrimary && (\n <style href={customPrimaryStyleId(customPrimary)} precedence=\"lobe-theme\">\n {getCustomPrimaryCss(customPrimary)}\n </style>\n )}\n <div className={className} style={style} {...toAttributes(state)}>\n {children}\n </div>\n </ThemeScopeContext>\n );\n};\n\nexport const useThemeMode = () => {\n const { appearance } = useThemeState();\n return useMemo(() => ({ appearance, isDarkMode: appearance === 'dark' }), [appearance]);\n};\n\nexport type LobeTheme = LobeToken & { appearance: LobeAppearance; isDarkMode: boolean };\n\nconst themeCache = new Map<string, LobeTheme>();\n\nexport const useTheme = (): LobeTheme => {\n const state = useThemeState();\n const key = stateKey(state);\n let theme = themeCache.get(key);\n if (!theme) {\n theme = {\n ...createLobeToken(state),\n appearance: state.appearance,\n isDarkMode: state.appearance === 'dark',\n };\n themeCache.set(key, theme);\n }\n return theme;\n};\n\nconst breakpointQueries = {\n lg: `(min-width: ${staticToken.screenLG}px)`,\n md: `(min-width: ${staticToken.screenMD}px)`,\n sm: `(min-width: ${staticToken.screenSM}px)`,\n xl: `(min-width: ${staticToken.screenXL}px)`,\n xs: `(max-width: ${staticToken.screenXSMax}px)`,\n xxl: `(min-width: ${staticToken.screenXXL}px)`,\n xxxl: `(min-width: ${staticToken.screenXXXL}px)`,\n};\n\ntype Breakpoint = keyof typeof breakpointQueries;\nexport type ResponsiveState = Record<\n Breakpoint | 'mobile' | 'tablet' | 'laptop' | 'desktop',\n boolean\n>;\n\nconst toResponsive = (matches: Record<Breakpoint, boolean>): ResponsiveState => ({\n ...matches,\n desktop: matches.xxl,\n laptop: matches.lg,\n mobile: matches.xs,\n tablet: matches.md,\n});\n\nconst SERVER_RESPONSIVE = toResponsive({\n lg: false,\n md: false,\n sm: false,\n xl: false,\n xs: false,\n xxl: false,\n xxxl: false,\n});\nlet responsiveSnapshot = SERVER_RESPONSIVE;\n\nconst getResponsiveSnapshot = () => {\n const matches = Object.fromEntries(\n Object.entries(breakpointQueries).map(([key, query]) => [key, matchMedia(query).matches]),\n ) as Record<Breakpoint, boolean>;\n const changed = (Object.keys(matches) as Breakpoint[]).some(\n (key) => matches[key] !== responsiveSnapshot[key],\n );\n if (changed) responsiveSnapshot = toResponsive(matches);\n return responsiveSnapshot;\n};\n\nconst subscribeResponsive = (onChange: () => void) => {\n const lists = Object.values(breakpointQueries).map((query) => matchMedia(query));\n for (const list of lists) list.addEventListener('change', onChange);\n return () => {\n for (const list of lists) list.removeEventListener('change', onChange);\n };\n};\n\nexport const useResponsive = () =>\n useSyncExternalStore(subscribeResponsive, getResponsiveSnapshot, () => SERVER_RESPONSIVE);\n\nexport interface LobeThemeScriptProps {\n appearance?: LobeAppearance | 'system';\n neutralColor?: NeutralColors;\n nonce?: string;\n primaryColor?: LobePrimaryColor;\n}\n\nexport const LobeThemeScript = ({\n appearance,\n neutralColor,\n nonce,\n primaryColor,\n}: LobeThemeScriptProps) => {\n const primary = normalizePrimary(primaryColor);\n const custom = isCustomPrimaryColor(primary)\n ? [customPrimaryStyleId(primary), getCustomPrimaryCss(primary)]\n : [null, null];\n const args = JSON.stringify([\n appearance ?? null,\n primary ?? null,\n neutralColor ?? null,\n ...custom,\n ]);\n const script = `(function(a,p,n,i,c){var d=document.documentElement;if(a==='system')a=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';if(a)d.setAttribute('data-theme',a);else if(!d.hasAttribute('data-theme'))d.setAttribute('data-theme','light');if(p)d.setAttribute('data-primary-color',p);if(n)d.setAttribute('data-neutral-color',n);if(c&&!document.getElementById(i)){var s=document.createElement('style');s.id=i;s.textContent=c;document.head.appendChild(s);}}).apply(null,${args})`;\n\n return (\n <script suppressHydrationWarning dangerouslySetInnerHTML={{ __html: script }} nonce={nonce} />\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"scope.mjs","names":[],"sources":["../../../src/styles/theme/scope.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type CSSProperties,\n type ReactNode,\n use,\n useMemo,\n useSyncExternalStore,\n} from 'react';\n\nimport type { NeutralColors } from '../customTheme';\nimport { createLobeToken, type LobeToken } from './createLobeToken';\nimport { getPaletteRevision, isRegisteredPalette, subscribePalettes } from './customPalette';\nimport {\n type CustomPrimaryColor,\n isCustomPrimaryColor,\n type LobePrimaryColor,\n} from './customPrimary';\nimport { getCustomPaletteCss, getCustomPrimaryCss } from './themeCss';\nimport { staticToken } from './token/static';\n\nexport type LobeAppearance = 'light' | 'dark';\n\nexport interface LobeThemeState {\n appearance: LobeAppearance;\n neutralColor?: NeutralColors;\n palette?: string;\n primaryColor?: LobePrimaryColor;\n}\n\nconst ATTRIBUTES = ['data-theme', 'data-primary-color', 'data-neutral-color', 'data-palette'];\n\nconst toAttributes = ({ appearance, neutralColor, palette, primaryColor }: LobeThemeState) => ({\n 'data-neutral-color': neutralColor,\n 'data-palette': palette,\n 'data-primary-color': primaryColor,\n 'data-theme': appearance,\n});\n\nconst normalizePrimary = (color?: LobePrimaryColor) =>\n isCustomPrimaryColor(color) ? (color.toLowerCase() as CustomPrimaryColor) : color;\n\nconst customPrimaryStyleId = (color: CustomPrimaryColor) => `lobe-primary-${color.slice(1)}`;\n\nconst ensureCustomPrimaryStyle = (color: CustomPrimaryColor, doc: Document) => {\n const id = customPrimaryStyleId(color);\n if (doc.getElementById(id)) return;\n const style = doc.createElement('style');\n style.id = id;\n style.textContent = getCustomPrimaryCss(color);\n doc.head.append(style);\n};\n\nconst paletteStyleId = (name: string) => `lobe-palette-${name}`;\n\nconst ensurePaletteStyle = (name: string, doc: Document) => {\n const id = paletteStyleId(name);\n let style = doc.getElementById(id);\n if (!style) {\n style = doc.createElement('style');\n style.id = id;\n doc.head.append(style);\n }\n const css = getCustomPaletteCss(name);\n if (style.textContent !== css) style.textContent = css;\n};\n\nexport const setLobeTheme = (\n state: Partial<LobeThemeState>,\n root: HTMLElement = document.documentElement,\n) => {\n const next = { ...readThemeState(root), ...state };\n next.primaryColor = normalizePrimary(next.primaryColor);\n if (isCustomPrimaryColor(next.primaryColor))\n ensureCustomPrimaryStyle(next.primaryColor, root.ownerDocument);\n if (isRegisteredPalette(next.palette)) ensurePaletteStyle(next.palette, root.ownerDocument);\n for (const [name, value] of Object.entries(toAttributes(next))) {\n if (value) root.setAttribute(name, value);\n else root.removeAttribute(name);\n }\n};\n\nconst readThemeState = (el: HTMLElement): LobeThemeState => ({\n appearance: el.dataset.theme === 'dark' ? 'dark' : 'light',\n neutralColor: (el.dataset.neutralColor as NeutralColors) || undefined,\n palette: el.dataset.palette || undefined,\n primaryColor: (el.dataset.primaryColor as LobePrimaryColor) || undefined,\n});\n\nconst stateKey = (state: LobeThemeState) =>\n `${state.appearance}|${state.primaryColor ?? ''}|${state.neutralColor ?? ''}|${state.palette ?? ''}`;\n\nconst usePaletteRevision = () =>\n useSyncExternalStore(subscribePalettes, getPaletteRevision, getPaletteRevision);\n\nconst SERVER_STATE: LobeThemeState = { appearance: 'light' };\nlet rootSnapshot: LobeThemeState = SERVER_STATE;\n\nconst getRootSnapshot = () => {\n const next = readThemeState(document.documentElement);\n if (stateKey(next) !== stateKey(rootSnapshot)) rootSnapshot = next;\n return rootSnapshot;\n};\n\nconst subscribeRoot = (onChange: () => void) => {\n const observer = new MutationObserver(onChange);\n observer.observe(document.documentElement, { attributeFilter: ATTRIBUTES, attributes: true });\n return () => observer.disconnect();\n};\n\nconst ThemeScopeContext = createContext<LobeThemeState | null>(null);\n\nconst useThemeState = () => {\n const scoped = use(ThemeScopeContext);\n const root = useSyncExternalStore(subscribeRoot, getRootSnapshot, () => SERVER_STATE);\n return scoped ?? root;\n};\n\nexport interface ThemeScopeProps extends Partial<LobeThemeState> {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const ThemeScope = ({\n appearance,\n children,\n className,\n neutralColor,\n palette,\n primaryColor,\n style,\n}: ThemeScopeProps) => {\n const parent = useThemeState();\n const state = useMemo<LobeThemeState>(\n () => ({\n appearance: appearance ?? parent.appearance,\n neutralColor: neutralColor ?? parent.neutralColor,\n palette: palette ?? parent.palette,\n primaryColor: normalizePrimary(primaryColor) ?? parent.primaryColor,\n }),\n [appearance, neutralColor, palette, primaryColor, parent],\n );\n const customPrimary = isCustomPrimaryColor(state.primaryColor) ? state.primaryColor : undefined;\n const paletteRevision = usePaletteRevision();\n const customPalette = isRegisteredPalette(state.palette) ? state.palette : undefined;\n\n return (\n <ThemeScopeContext value={state}>\n {customPrimary && (\n <style href={customPrimaryStyleId(customPrimary)} precedence=\"lobe-theme\">\n {getCustomPrimaryCss(customPrimary)}\n </style>\n )}\n {customPalette && (\n <style href={`${paletteStyleId(customPalette)}-${paletteRevision}`} precedence=\"lobe-theme\">\n {getCustomPaletteCss(customPalette)}\n </style>\n )}\n <div className={className} style={style} {...toAttributes(state)}>\n {children}\n </div>\n </ThemeScopeContext>\n );\n};\n\nexport const useThemeMode = () => {\n const { appearance } = useThemeState();\n return useMemo(() => ({ appearance, isDarkMode: appearance === 'dark' }), [appearance]);\n};\n\nexport type LobeTheme = LobeToken & { appearance: LobeAppearance; isDarkMode: boolean };\n\nconst themeCache = new Map<string, LobeTheme>();\n\nexport const useTheme = (): LobeTheme => {\n const state = useThemeState();\n const key = `${stateKey(state)}@${usePaletteRevision()}`;\n let theme = themeCache.get(key);\n if (!theme) {\n theme = {\n ...createLobeToken(state),\n appearance: state.appearance,\n isDarkMode: state.appearance === 'dark',\n };\n themeCache.set(key, theme);\n }\n return theme;\n};\n\nconst breakpointQueries = {\n lg: `(min-width: ${staticToken.screenLG}px)`,\n md: `(min-width: ${staticToken.screenMD}px)`,\n sm: `(min-width: ${staticToken.screenSM}px)`,\n xl: `(min-width: ${staticToken.screenXL}px)`,\n xs: `(max-width: ${staticToken.screenXSMax}px)`,\n xxl: `(min-width: ${staticToken.screenXXL}px)`,\n xxxl: `(min-width: ${staticToken.screenXXXL}px)`,\n};\n\ntype Breakpoint = keyof typeof breakpointQueries;\nexport type ResponsiveState = Record<\n Breakpoint | 'mobile' | 'tablet' | 'laptop' | 'desktop',\n boolean\n>;\n\nconst toResponsive = (matches: Record<Breakpoint, boolean>): ResponsiveState => ({\n ...matches,\n desktop: matches.xxl,\n laptop: matches.lg,\n mobile: matches.xs,\n tablet: matches.md,\n});\n\nconst SERVER_RESPONSIVE = toResponsive({\n lg: false,\n md: false,\n sm: false,\n xl: false,\n xs: false,\n xxl: false,\n xxxl: false,\n});\nlet responsiveSnapshot = SERVER_RESPONSIVE;\n\nconst getResponsiveSnapshot = () => {\n const matches = Object.fromEntries(\n Object.entries(breakpointQueries).map(([key, query]) => [key, matchMedia(query).matches]),\n ) as Record<Breakpoint, boolean>;\n const changed = (Object.keys(matches) as Breakpoint[]).some(\n (key) => matches[key] !== responsiveSnapshot[key],\n );\n if (changed) responsiveSnapshot = toResponsive(matches);\n return responsiveSnapshot;\n};\n\nconst subscribeResponsive = (onChange: () => void) => {\n const lists = Object.values(breakpointQueries).map((query) => matchMedia(query));\n for (const list of lists) list.addEventListener('change', onChange);\n return () => {\n for (const list of lists) list.removeEventListener('change', onChange);\n };\n};\n\nexport const useResponsive = () =>\n useSyncExternalStore(subscribeResponsive, getResponsiveSnapshot, () => SERVER_RESPONSIVE);\n\nexport interface LobeThemeScriptProps {\n appearance?: LobeAppearance | 'system';\n neutralColor?: NeutralColors;\n nonce?: string;\n palette?: string;\n primaryColor?: LobePrimaryColor;\n}\n\nexport const LobeThemeScript = ({\n appearance,\n neutralColor,\n nonce,\n palette,\n primaryColor,\n}: LobeThemeScriptProps) => {\n const primary = normalizePrimary(primaryColor);\n const styles: [string, string][] = [];\n if (isCustomPrimaryColor(primary))\n styles.push([customPrimaryStyleId(primary), getCustomPrimaryCss(primary)]);\n if (isRegisteredPalette(palette))\n styles.push([paletteStyleId(palette), getCustomPaletteCss(palette)]);\n const args = JSON.stringify([\n appearance ?? null,\n primary ?? null,\n neutralColor ?? null,\n palette ?? null,\n styles,\n ]);\n const script = `(function(a,p,n,q,t){var d=document.documentElement;if(a==='system')a=matchMedia('(prefers-color-scheme: dark)').matches?'dark':'light';if(a)d.setAttribute('data-theme',a);else if(!d.hasAttribute('data-theme'))d.setAttribute('data-theme','light');if(p)d.setAttribute('data-primary-color',p);if(n)d.setAttribute('data-neutral-color',n);if(q)d.setAttribute('data-palette',q);t.forEach(function(x){if(document.getElementById(x[0]))return;var s=document.createElement('style');s.id=x[0];s.textContent=x[1];document.head.appendChild(s);});}).apply(null,${args})`;\n\n return (\n <script suppressHydrationWarning dangerouslySetInnerHTML={{ __html: script }} nonce={nonce} />\n );\n};\n"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { CustomPrimaryColor } from "./customPrimary.mjs";
2
2
  //#region src/styles/theme/themeCss.d.ts
3
3
  export declare const getCustomPrimaryCss: (color: CustomPrimaryColor) => string;
4
+ export declare const getCustomPaletteCss: (name: string) => string;
4
5
  export declare const getThemeCss: () => string;
5
6
  export declare const getGlobalCss: () => string;
6
7
  //#endregion
@@ -1,3 +1,4 @@
1
+ import { isRegisteredPalette } from "./customPalette.mjs";
1
2
  import { neutralColors, primaryColors } from "../customTheme.mjs";
2
3
  import { createLobeTokenGroups } from "./createLobeToken.mjs";
3
4
  import { toCssVarName, toCssVariables } from "../css.mjs";
@@ -56,6 +57,20 @@ const getCustomPrimaryCss = (color) => {
56
57
  primaryColor: hex
57
58
  }).primary))).join("\n\n");
58
59
  };
60
+ const getCustomPaletteCss = (name) => {
61
+ if (!isRegisteredPalette(name)) return "";
62
+ return ["light", "dark"].map((appearance) => {
63
+ const { neutral, palette } = createLobeTokenGroups({
64
+ appearance,
65
+ palette: name
66
+ });
67
+ return rule(`[data-palette='${name}']${appearanceSelector(appearance)}`, toCssVariables({
68
+ ...palette,
69
+ colorErrorOutline: neutral.colorErrorOutline,
70
+ colorWarningOutline: neutral.colorWarningOutline
71
+ }));
72
+ }).join("\n\n");
73
+ };
59
74
  const essentialCss = `@layer lobe-ui {
60
75
  .lobe-brand-loading path {
61
76
  fill: currentcolor;
@@ -335,6 +350,6 @@ const getThemeCss = () => cached ??= [
335
350
  ].join("\n\n");
336
351
  const getGlobalCss = () => `${layerOrder}\n\n${globalCss}`;
337
352
  //#endregion
338
- export { getCustomPrimaryCss, getGlobalCss, getThemeCss };
353
+ export { getCustomPaletteCss, getCustomPrimaryCss, getGlobalCss, getThemeCss };
339
354
 
340
355
  //# sourceMappingURL=themeCss.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"themeCss.mjs","names":[],"sources":["../../../src/styles/theme/themeCss.ts"],"sourcesContent":["import { toCssVariables, toCssVarName } from '../css';\nimport { neutralColors, primaryColors } from '../customTheme';\nimport { createLobeTokenGroups } from './createLobeToken';\nimport type { CustomPrimaryColor } from './customPrimary';\nimport type { LobeAppearance } from './scope';\n\nconst v = (key: string) => `var(${toCssVarName(key)})`;\n\nconst ring: Record<LobeAppearance, string> = {\n dark: '0 0 0 1px rgb(255 255 255 / 18%)',\n light: '0 0 0 1px rgb(0 0 0 / 5%)',\n};\n\n/* `initial` makes a light scope nested in a dark one fall back to each variant's own fill\n instead of inheriting the dark table surface. */\nconst surface: Record<LobeAppearance, Record<string, string>> = {\n dark: {\n '--lobe-fill-border': v('colorFillSecondary'),\n '--lobe-fill-border-strong': v('colorFill'),\n '--lobe-table-cell-bg': 'transparent',\n '--lobe-table-surface': v('colorFillQuaternary'),\n },\n light: {\n '--lobe-fill-border': v('colorFill'),\n '--lobe-fill-border-strong': `color-mix(in srgb, ${v('colorFill')}, ${v('colorText')} 15%)`,\n '--lobe-table-cell-bg': 'initial',\n '--lobe-table-surface': 'initial',\n },\n};\n\nconst rule = (selector: string, declarations: Record<string, number | string>) =>\n `${selector} {\\n${Object.entries(declarations)\n .map(([name, value]) => ` ${name}: ${value};`)\n .join('\\n')}\\n}`;\n\nconst appearanceRule = (selector: string, appearance: LobeAppearance) => {\n const { neutral, palette, primary, static: base } = createLobeTokenGroups({ appearance });\n const token =\n appearance === 'light'\n ? { ...base, ...palette, ...primary, ...neutral }\n : { ...palette, ...primary, ...neutral };\n\n return rule(selector, {\n ...toCssVariables(token),\n '--lobe-ring': ring[appearance],\n ...surface[appearance],\n 'color-scheme': appearance,\n });\n};\n\nconst appearanceSelector = (appearance: LobeAppearance) =>\n appearance === 'dark' ? \"[data-theme='dark']\" : \":not([data-theme='dark'])\";\n\nconst colorRules = (appearance: LobeAppearance) => [\n ...(Object.keys(primaryColors) as (keyof typeof primaryColors)[]).map((primaryColor) =>\n rule(\n `[data-primary-color='${primaryColor}']${appearanceSelector(appearance)}`,\n toCssVariables(createLobeTokenGroups({ appearance, primaryColor }).primary),\n ),\n ),\n ...(Object.keys(neutralColors) as (keyof typeof neutralColors)[]).map((neutralColor) =>\n rule(\n `[data-neutral-color='${neutralColor}']${appearanceSelector(appearance)}`,\n toCssVariables(createLobeTokenGroups({ appearance, neutralColor }).neutral),\n ),\n ),\n];\n\nexport const getCustomPrimaryCss = (color: CustomPrimaryColor) => {\n const hex = color.toLowerCase();\n return (['light', 'dark'] as const)\n .map((appearance) =>\n rule(\n `[data-primary-color='${hex}']${appearanceSelector(appearance)}`,\n toCssVariables(\n createLobeTokenGroups({ appearance, primaryColor: hex as CustomPrimaryColor }).primary,\n ),\n ),\n )\n .join('\\n\\n');\n};\n\nconst essentialCss = `@layer lobe-ui {\n .lobe-brand-loading path {\n fill: currentcolor;\n fill-opacity: 0;\n stroke: currentcolor;\n stroke-dasharray: 1000;\n stroke-dashoffset: 1000;\n stroke-width: 0.25em;\n\n animation:\n draw 2s cubic-bezier(0.4, 0, 0.2, 1) infinite,\n fill 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n}\n\n@layer lobe-popup {\n .lobe-context-trigger[data-popup-open],\n .lobe-dropdown-menu-trigger[data-popup-open] {\n background: ${v('colorFillTertiary')};\n }\n}\n\n@layer lobe-base {\n :where(body, body [data-theme]) {\n color: ${v('colorText')};\n font-family: ${v('fontFamily')};\n font-size: ${v('fontSize')};\n line-height: ${v('lineHeight')};\n }\n\n :where(body) :where(a) {\n cursor: pointer;\n\n color: ${v('colorLink')};\n text-decoration: none;\n\n background-color: transparent;\n outline: none;\n\n transition: color ${v('motionDurationSlow')};\n }\n\n :where(body) :where(a):hover {\n color: ${v('colorLinkHover')};\n }\n\n :where(body) :where(a):active {\n color: ${v('colorLinkActive')};\n }\n\n :where(body) :where(a):focus-visible {\n outline: ${v('lineWidthFocus')} solid ${v('colorPrimaryBorder')};\n outline-offset: 1px;\n }\n\n :where(body) :where(a)[disabled] {\n cursor: not-allowed;\n color: ${v('colorTextDisabled')};\n }\n\n :where(.lobe-flex) {\n --lobe-flex: 0 1 auto;\n --lobe-flex-direction: column;\n --lobe-flex-wrap: nowrap;\n --lobe-flex-justify: flex-start;\n --lobe-flex-align: stretch;\n --lobe-flex-width: auto;\n --lobe-flex-height: auto;\n --lobe-flex-padding: 0;\n --lobe-flex-padding-inline: var(--lobe-flex-padding);\n --lobe-flex-padding-block: var(--lobe-flex-padding);\n --lobe-flex-gap: 0;\n\n display: flex;\n flex: var(--lobe-flex);\n flex-flow: var(--lobe-flex-direction) var(--lobe-flex-wrap);\n gap: var(--lobe-flex-gap);\n align-items: var(--lobe-flex-align);\n justify-content: var(--lobe-flex-justify);\n\n width: var(--lobe-flex-width);\n height: var(--lobe-flex-height);\n padding: var(--lobe-flex-padding);\n padding-block: var(--lobe-flex-padding-block);\n padding-inline: var(--lobe-flex-padding-inline);\n }\n\n .lobe-flex-hidden {\n display: none;\n }\n}\n\n@keyframes draw {\n 0% {\n stroke-dashoffset: 1000;\n }\n\n 100% {\n stroke-dashoffset: 0;\n }\n}\n\n@keyframes fill {\n 30% {\n fill-opacity: 0.05;\n }\n\n 100% {\n fill-opacity: 1;\n }\n}`;\n\nconst globalCss = `@layer lobe-base {\n :root {\n --font-settings: 'cv01', 'tnum', 'kern';\n --font-variations: 'opsz' auto, tabular-nums;\n\n font-synthesis: style;\n text-autospace: normal;\n }\n\n html {\n overscroll-behavior: none;\n }\n\n body {\n overflow: hidden auto;\n\n min-height: 100vh;\n margin: 0;\n padding: 0;\n\n font-feature-settings: var(--font-settings);\n font-variation-settings: var(--font-variations);\n font-optical-sizing: auto;\n font-kerning: normal;\n font-variant-ligatures: common-ligatures contextual;\n font-variant-numeric: tabular-nums;\n font-size-adjust: from-font;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-wrap: pretty;\n text-size-adjust: 100%;\n text-rendering: optimizelegibility;\n overflow-wrap: anywhere;\n vertical-align: baseline;\n\n background-color: ${v('colorBgLayout')};\n\n font-synthesis: style;\n\n -webkit-overflow-scrolling: touch;\n -webkit-tap-highlight-color: transparent;\n }\n\n html,\n body {\n width: 100%;\n height: 100%;\n }\n\n [tabindex='-1']:focus {\n outline: none;\n }\n\n [hidden] {\n display: none !important;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-block: 0 0.5em;\n font-weight: 500;\n }\n\n p,\n ol,\n ul,\n dl,\n pre {\n margin-block: 0 1em;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-block-end: 0;\n }\n\n dd {\n margin-block-end: 0.5em;\n margin-inline-start: 0;\n }\n\n blockquote,\n figure {\n margin-block: 0 1em;\n margin-inline: 0;\n }\n\n img {\n border-style: none;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n }\n\n textarea {\n resize: vertical;\n overflow: auto;\n }\n\n fieldset {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n code,\n kbd,\n samp,\n pre {\n font-family: ${v('fontFamilyCode')} !important;\n font-feature-settings:\n 'liga' 0,\n 'calt' 0;\n font-variant-ligatures: none;\n\n span {\n font-family: ${v('fontFamilyCode')} !important;\n }\n }\n\n ::selection {\n color: #000;\n background: ${v('yellow9')};\n\n -webkit-text-fill-color: unset !important;\n }\n\n * {\n scrollbar-color: ${v('colorFill')} transparent;\n scrollbar-width: thin;\n box-sizing: border-box;\n vertical-align: baseline;\n }\n}`;\n\nconst layerOrder = '@layer lobe-base, lobe-popup, lobe-ui;';\n\nlet cached: string | undefined;\n\nexport const getThemeCss = () =>\n (cached ??= [\n layerOrder,\n appearanceRule(\":root, [data-theme='light']\", 'light'),\n appearanceRule(\"[data-theme='dark']\", 'dark'),\n ...colorRules('light'),\n ...colorRules('dark'),\n essentialCss,\n ].join('\\n\\n'));\n\nexport const getGlobalCss = () => `${layerOrder}\\n\\n${globalCss}`;\n"],"mappings":"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"}
1
+ {"version":3,"file":"themeCss.mjs","names":[],"sources":["../../../src/styles/theme/themeCss.ts"],"sourcesContent":["import { toCssVariables, toCssVarName } from '../css';\nimport { neutralColors, primaryColors } from '../customTheme';\nimport { createLobeTokenGroups } from './createLobeToken';\nimport { isRegisteredPalette } from './customPalette';\nimport type { CustomPrimaryColor } from './customPrimary';\nimport type { LobeAppearance } from './scope';\n\nconst v = (key: string) => `var(${toCssVarName(key)})`;\n\nconst ring: Record<LobeAppearance, string> = {\n dark: '0 0 0 1px rgb(255 255 255 / 18%)',\n light: '0 0 0 1px rgb(0 0 0 / 5%)',\n};\n\n/* `initial` makes a light scope nested in a dark one fall back to each variant's own fill\n instead of inheriting the dark table surface. */\nconst surface: Record<LobeAppearance, Record<string, string>> = {\n dark: {\n '--lobe-fill-border': v('colorFillSecondary'),\n '--lobe-fill-border-strong': v('colorFill'),\n '--lobe-table-cell-bg': 'transparent',\n '--lobe-table-surface': v('colorFillQuaternary'),\n },\n light: {\n '--lobe-fill-border': v('colorFill'),\n '--lobe-fill-border-strong': `color-mix(in srgb, ${v('colorFill')}, ${v('colorText')} 15%)`,\n '--lobe-table-cell-bg': 'initial',\n '--lobe-table-surface': 'initial',\n },\n};\n\nconst rule = (selector: string, declarations: Record<string, number | string>) =>\n `${selector} {\\n${Object.entries(declarations)\n .map(([name, value]) => ` ${name}: ${value};`)\n .join('\\n')}\\n}`;\n\nconst appearanceRule = (selector: string, appearance: LobeAppearance) => {\n const { neutral, palette, primary, static: base } = createLobeTokenGroups({ appearance });\n const token =\n appearance === 'light'\n ? { ...base, ...palette, ...primary, ...neutral }\n : { ...palette, ...primary, ...neutral };\n\n return rule(selector, {\n ...toCssVariables(token),\n '--lobe-ring': ring[appearance],\n ...surface[appearance],\n 'color-scheme': appearance,\n });\n};\n\nconst appearanceSelector = (appearance: LobeAppearance) =>\n appearance === 'dark' ? \"[data-theme='dark']\" : \":not([data-theme='dark'])\";\n\nconst colorRules = (appearance: LobeAppearance) => [\n ...(Object.keys(primaryColors) as (keyof typeof primaryColors)[]).map((primaryColor) =>\n rule(\n `[data-primary-color='${primaryColor}']${appearanceSelector(appearance)}`,\n toCssVariables(createLobeTokenGroups({ appearance, primaryColor }).primary),\n ),\n ),\n ...(Object.keys(neutralColors) as (keyof typeof neutralColors)[]).map((neutralColor) =>\n rule(\n `[data-neutral-color='${neutralColor}']${appearanceSelector(appearance)}`,\n toCssVariables(createLobeTokenGroups({ appearance, neutralColor }).neutral),\n ),\n ),\n];\n\nexport const getCustomPrimaryCss = (color: CustomPrimaryColor) => {\n const hex = color.toLowerCase();\n return (['light', 'dark'] as const)\n .map((appearance) =>\n rule(\n `[data-primary-color='${hex}']${appearanceSelector(appearance)}`,\n toCssVariables(\n createLobeTokenGroups({ appearance, primaryColor: hex as CustomPrimaryColor }).primary,\n ),\n ),\n )\n .join('\\n\\n');\n};\n\nexport const getCustomPaletteCss = (name: string) => {\n if (!isRegisteredPalette(name)) return '';\n return (['light', 'dark'] as const)\n .map((appearance) => {\n const { neutral, palette } = createLobeTokenGroups({ appearance, palette: name });\n return rule(\n `[data-palette='${name}']${appearanceSelector(appearance)}`,\n toCssVariables({\n ...palette,\n colorErrorOutline: neutral.colorErrorOutline,\n colorWarningOutline: neutral.colorWarningOutline,\n }),\n );\n })\n .join('\\n\\n');\n};\n\nconst essentialCss = `@layer lobe-ui {\n .lobe-brand-loading path {\n fill: currentcolor;\n fill-opacity: 0;\n stroke: currentcolor;\n stroke-dasharray: 1000;\n stroke-dashoffset: 1000;\n stroke-width: 0.25em;\n\n animation:\n draw 2s cubic-bezier(0.4, 0, 0.2, 1) infinite,\n fill 2s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n }\n}\n\n@layer lobe-popup {\n .lobe-context-trigger[data-popup-open],\n .lobe-dropdown-menu-trigger[data-popup-open] {\n background: ${v('colorFillTertiary')};\n }\n}\n\n@layer lobe-base {\n :where(body, body [data-theme]) {\n color: ${v('colorText')};\n font-family: ${v('fontFamily')};\n font-size: ${v('fontSize')};\n line-height: ${v('lineHeight')};\n }\n\n :where(body) :where(a) {\n cursor: pointer;\n\n color: ${v('colorLink')};\n text-decoration: none;\n\n background-color: transparent;\n outline: none;\n\n transition: color ${v('motionDurationSlow')};\n }\n\n :where(body) :where(a):hover {\n color: ${v('colorLinkHover')};\n }\n\n :where(body) :where(a):active {\n color: ${v('colorLinkActive')};\n }\n\n :where(body) :where(a):focus-visible {\n outline: ${v('lineWidthFocus')} solid ${v('colorPrimaryBorder')};\n outline-offset: 1px;\n }\n\n :where(body) :where(a)[disabled] {\n cursor: not-allowed;\n color: ${v('colorTextDisabled')};\n }\n\n :where(.lobe-flex) {\n --lobe-flex: 0 1 auto;\n --lobe-flex-direction: column;\n --lobe-flex-wrap: nowrap;\n --lobe-flex-justify: flex-start;\n --lobe-flex-align: stretch;\n --lobe-flex-width: auto;\n --lobe-flex-height: auto;\n --lobe-flex-padding: 0;\n --lobe-flex-padding-inline: var(--lobe-flex-padding);\n --lobe-flex-padding-block: var(--lobe-flex-padding);\n --lobe-flex-gap: 0;\n\n display: flex;\n flex: var(--lobe-flex);\n flex-flow: var(--lobe-flex-direction) var(--lobe-flex-wrap);\n gap: var(--lobe-flex-gap);\n align-items: var(--lobe-flex-align);\n justify-content: var(--lobe-flex-justify);\n\n width: var(--lobe-flex-width);\n height: var(--lobe-flex-height);\n padding: var(--lobe-flex-padding);\n padding-block: var(--lobe-flex-padding-block);\n padding-inline: var(--lobe-flex-padding-inline);\n }\n\n .lobe-flex-hidden {\n display: none;\n }\n}\n\n@keyframes draw {\n 0% {\n stroke-dashoffset: 1000;\n }\n\n 100% {\n stroke-dashoffset: 0;\n }\n}\n\n@keyframes fill {\n 30% {\n fill-opacity: 0.05;\n }\n\n 100% {\n fill-opacity: 1;\n }\n}`;\n\nconst globalCss = `@layer lobe-base {\n :root {\n --font-settings: 'cv01', 'tnum', 'kern';\n --font-variations: 'opsz' auto, tabular-nums;\n\n font-synthesis: style;\n text-autospace: normal;\n }\n\n html {\n overscroll-behavior: none;\n }\n\n body {\n overflow: hidden auto;\n\n min-height: 100vh;\n margin: 0;\n padding: 0;\n\n font-feature-settings: var(--font-settings);\n font-variation-settings: var(--font-variations);\n font-optical-sizing: auto;\n font-kerning: normal;\n font-variant-ligatures: common-ligatures contextual;\n font-variant-numeric: tabular-nums;\n font-size-adjust: from-font;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-wrap: pretty;\n text-size-adjust: 100%;\n text-rendering: optimizelegibility;\n overflow-wrap: anywhere;\n vertical-align: baseline;\n\n background-color: ${v('colorBgLayout')};\n\n font-synthesis: style;\n\n -webkit-overflow-scrolling: touch;\n -webkit-tap-highlight-color: transparent;\n }\n\n html,\n body {\n width: 100%;\n height: 100%;\n }\n\n [tabindex='-1']:focus {\n outline: none;\n }\n\n [hidden] {\n display: none !important;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-block: 0 0.5em;\n font-weight: 500;\n }\n\n p,\n ol,\n ul,\n dl,\n pre {\n margin-block: 0 1em;\n }\n\n ol ol,\n ul ul,\n ol ul,\n ul ol {\n margin-block-end: 0;\n }\n\n dd {\n margin-block-end: 0.5em;\n margin-inline-start: 0;\n }\n\n blockquote,\n figure {\n margin-block: 0 1em;\n margin-inline: 0;\n }\n\n img {\n border-style: none;\n vertical-align: middle;\n }\n\n table {\n border-collapse: collapse;\n }\n\n input,\n button,\n select,\n optgroup,\n textarea {\n margin: 0;\n\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n }\n\n textarea {\n resize: vertical;\n overflow: auto;\n }\n\n fieldset {\n min-width: 0;\n margin: 0;\n padding: 0;\n border: 0;\n }\n\n code,\n kbd,\n samp,\n pre {\n font-family: ${v('fontFamilyCode')} !important;\n font-feature-settings:\n 'liga' 0,\n 'calt' 0;\n font-variant-ligatures: none;\n\n span {\n font-family: ${v('fontFamilyCode')} !important;\n }\n }\n\n ::selection {\n color: #000;\n background: ${v('yellow9')};\n\n -webkit-text-fill-color: unset !important;\n }\n\n * {\n scrollbar-color: ${v('colorFill')} transparent;\n scrollbar-width: thin;\n box-sizing: border-box;\n vertical-align: baseline;\n }\n}`;\n\nconst layerOrder = '@layer lobe-base, lobe-popup, lobe-ui;';\n\nlet cached: string | undefined;\n\nexport const getThemeCss = () =>\n (cached ??= [\n layerOrder,\n appearanceRule(\":root, [data-theme='light']\", 'light'),\n appearanceRule(\"[data-theme='dark']\", 'dark'),\n ...colorRules('light'),\n ...colorRules('dark'),\n essentialCss,\n ].join('\\n\\n'));\n\nexport const getGlobalCss = () => `${layerOrder}\\n\\n${globalCss}`;\n"],"mappings":"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"}
@@ -1,16 +1,16 @@
1
1
  //#region src/styles/theme/token/legacy.ts
2
2
  const legacyToken = {
3
3
  dark: {
4
- boxShadowCard: "\n 0 1px 2px -2px rgba(255,255,255,0.032),\n 0 3px 6px 0 rgba(255,255,255,0.024),\n 0 5px 12px 4px rgba(255,255,255,0.018)\n ",
5
- boxShadowDrawerDown: "\n 0 -6px 16px 0 rgba(255,255,255,0.016),\n 0 -3px 6px -4px rgba(255,255,255,0.024),\n 0 -9px 28px 8px rgba(255,255,255,0.010000000000000002)\n ",
6
- boxShadowDrawerLeft: "\n 6px 0 16px 0 rgba(255,255,255,0.016),\n 3px 0 6px -4px rgba(255,255,255,0.024),\n 9px 0 28px 8px rgba(255,255,255,0.010000000000000002)\n ",
7
- boxShadowDrawerRight: "\n -6px 0 16px 0 rgba(255,255,255,0.016),\n -3px 0 6px -4px rgba(255,255,255,0.024),\n -9px 0 28px 8px rgba(255,255,255,0.010000000000000002)\n ",
8
- boxShadowDrawerUp: "\n 0 6px 16px 0 rgba(255,255,255,0.016),\n 0 3px 6px -4px rgba(255,255,255,0.024),\n 0 9px 28px 8px rgba(255,255,255,0.010000000000000002)\n ",
9
- boxShadowPopoverArrow: "2px 2px 5px rgba(255,255,255,0.010000000000000002)",
10
- boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(255,255,255,0.016)",
11
- boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(255,255,255,0.016)",
12
- boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(255,255,255,0.016)",
13
- boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(255,255,255,0.016)",
4
+ boxShadowCard: "\n 0 1px 2px -2px rgba(0,0,0,0.16),\n 0 3px 6px 0 rgba(0,0,0,0.12),\n 0 5px 12px 4px rgba(0,0,0,0.09)\n ",
5
+ boxShadowDrawerDown: "\n 0 -6px 16px 0 rgba(0,0,0,0.08),\n 0 -3px 6px -4px rgba(0,0,0,0.12),\n 0 -9px 28px 8px rgba(0,0,0,0.05)\n ",
6
+ boxShadowDrawerLeft: "\n 6px 0 16px 0 rgba(0,0,0,0.08),\n 3px 0 6px -4px rgba(0,0,0,0.12),\n 9px 0 28px 8px rgba(0,0,0,0.05)\n ",
7
+ boxShadowDrawerRight: "\n -6px 0 16px 0 rgba(0,0,0,0.08),\n -3px 0 6px -4px rgba(0,0,0,0.12),\n -9px 0 28px 8px rgba(0,0,0,0.05)\n ",
8
+ boxShadowDrawerUp: "\n 0 6px 16px 0 rgba(0,0,0,0.08),\n 0 3px 6px -4px rgba(0,0,0,0.12),\n 0 9px 28px 8px rgba(0,0,0,0.05)\n ",
9
+ boxShadowPopoverArrow: "2px 2px 5px rgba(0,0,0,0.05)",
10
+ boxShadowTabsOverflowBottom: "inset 0 -10px 8px -8px rgba(0,0,0,0.08)",
11
+ boxShadowTabsOverflowLeft: "inset 10px 0 8px -8px rgba(0,0,0,0.08)",
12
+ boxShadowTabsOverflowRight: "inset -10px 0 8px -8px rgba(0,0,0,0.08)",
13
+ boxShadowTabsOverflowTop: "inset 0 10px 8px -8px rgba(0,0,0,0.08)",
14
14
  colorBgBase: "#000",
15
15
  colorBgBlur: "rgba(255,255,255,0.04)",
16
16
  colorBgSolid: "rgba(255,255,255,0.95)",
@@ -19,9 +19,9 @@ const legacyToken = {
19
19
  colorBorderDisabled: "#424242",
20
20
  colorErrorBgActive: "#5b2526",
21
21
  colorErrorBgFilledHover: "#441e1f",
22
- colorShadow: "rgba(255, 255, 255, 0.2)",
22
+ colorShadow: "#000",
23
23
  colorTextBase: "#fff",
24
- dropShadowPopover: "drop-shadow(0 6px 16px rgba(255,255,255,0.016)) drop-shadow(0 3px 6px rgba(255,255,255,0.024)) drop-shadow(0 9px 28px rgba(255,255,255,0.010000000000000002))",
24
+ dropShadowPopover: "drop-shadow(0 6px 16px rgba(0,0,0,0.08)) drop-shadow(0 3px 6px rgba(0,0,0,0.12)) drop-shadow(0 9px 28px rgba(0,0,0,0.05))",
25
25
  pink1: "#291321",
26
26
  pink10: "#fad2e3",
27
27
  pink2: "#40162f",
@@ -1 +1 @@
1
- {"version":3,"file":"legacy.mjs","names":[],"sources":["../../../../src/styles/theme/token/legacy.ts"],"sourcesContent":["export const legacyToken = {\n dark: {\n boxShadowCard:\n '\\n 0 1px 2px -2px rgba(255,255,255,0.032),\\n 0 3px 6px 0 rgba(255,255,255,0.024),\\n 0 5px 12px 4px rgba(255,255,255,0.018)\\n ',\n boxShadowDrawerDown:\n '\\n 0 -6px 16px 0 rgba(255,255,255,0.016),\\n 0 -3px 6px -4px rgba(255,255,255,0.024),\\n 0 -9px 28px 8px rgba(255,255,255,0.010000000000000002)\\n ',\n boxShadowDrawerLeft:\n '\\n 6px 0 16px 0 rgba(255,255,255,0.016),\\n 3px 0 6px -4px rgba(255,255,255,0.024),\\n 9px 0 28px 8px rgba(255,255,255,0.010000000000000002)\\n ',\n boxShadowDrawerRight:\n '\\n -6px 0 16px 0 rgba(255,255,255,0.016),\\n -3px 0 6px -4px rgba(255,255,255,0.024),\\n -9px 0 28px 8px rgba(255,255,255,0.010000000000000002)\\n ',\n boxShadowDrawerUp:\n '\\n 0 6px 16px 0 rgba(255,255,255,0.016),\\n 0 3px 6px -4px rgba(255,255,255,0.024),\\n 0 9px 28px 8px rgba(255,255,255,0.010000000000000002)\\n ',\n boxShadowPopoverArrow: '2px 2px 5px rgba(255,255,255,0.010000000000000002)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(255,255,255,0.016)',\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(255,255,255,0.016)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(255,255,255,0.016)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(255,255,255,0.016)',\n colorBgBase: '#000',\n colorBgBlur: 'rgba(255,255,255,0.04)',\n colorBgSolid: 'rgba(255,255,255,0.95)',\n colorBgSolidActive: 'rgba(255,255,255,0.9)',\n colorBgSolidHover: 'rgb(255,255,255)',\n colorBorderDisabled: '#424242',\n colorErrorBgActive: '#5b2526',\n colorErrorBgFilledHover: '#441e1f',\n colorShadow: 'rgba(255, 255, 255, 0.2)',\n colorTextBase: '#fff',\n dropShadowPopover:\n 'drop-shadow(0 6px 16px rgba(255,255,255,0.016)) drop-shadow(0 3px 6px rgba(255,255,255,0.024)) drop-shadow(0 9px 28px rgba(255,255,255,0.010000000000000002))',\n pink1: '#291321',\n pink10: '#fad2e3',\n pink2: '#40162f',\n pink3: '#551c3b',\n pink4: '#75204f',\n pink5: '#a02669',\n pink6: '#cb2b83',\n pink7: '#e0529c',\n pink8: '#f37fb7',\n pink9: '#f8a8cc',\n pinkActive: '#e0529c',\n pinkHover: '#a02669',\n },\n light: {\n boxShadowCard:\n '\\n 0 1px 2px -2px rgba(0,0,0,0.16),\\n 0 3px 6px 0 rgba(0,0,0,0.12),\\n 0 5px 12px 4px rgba(0,0,0,0.09)\\n ',\n boxShadowDrawerDown:\n '\\n 0 -6px 16px 0 rgba(0,0,0,0.08),\\n 0 -3px 6px -4px rgba(0,0,0,0.12),\\n 0 -9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerLeft:\n '\\n 6px 0 16px 0 rgba(0,0,0,0.08),\\n 3px 0 6px -4px rgba(0,0,0,0.12),\\n 9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerRight:\n '\\n -6px 0 16px 0 rgba(0,0,0,0.08),\\n -3px 0 6px -4px rgba(0,0,0,0.12),\\n -9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerUp:\n '\\n 0 6px 16px 0 rgba(0,0,0,0.08),\\n 0 3px 6px -4px rgba(0,0,0,0.12),\\n 0 9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowPopoverArrow: '2px 2px 5px rgba(0,0,0,0.05)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0,0,0,0.08)',\n colorBgBase: '#fff',\n colorBgBlur: 'transparent',\n colorBgSolid: 'rgb(0,0,0)',\n colorBgSolidActive: 'rgba(0,0,0,0.95)',\n colorBgSolidHover: 'rgba(0,0,0,0.75)',\n colorBorderDisabled: '#d9d9d9',\n colorErrorBgActive: '#ffccc7',\n colorErrorBgFilledHover: '#ffdfdc',\n colorShadow: '#000',\n colorTextBase: '#000',\n dropShadowPopover:\n 'drop-shadow(0 6px 16px rgba(0,0,0,0.08)) drop-shadow(0 3px 6px rgba(0,0,0,0.12)) drop-shadow(0 9px 28px rgba(0,0,0,0.05))',\n pink1: '#fff0f6',\n pink10: '#520339',\n pink2: '#ffd6e7',\n pink3: '#ffadd2',\n pink4: '#ff85c0',\n pink5: '#f759ab',\n pink6: '#eb2f96',\n pink7: '#c41d7f',\n pink8: '#9e1068',\n pink9: '#780650',\n pinkActive: '#c41d7f',\n pinkHover: '#f759ab',\n },\n};\n"],"mappings":";AAAA,MAAa,cAAc;CACzB,MAAM;EACJ,eACE;EACF,qBACE;EACF,qBACE;EACF,sBACE;EACF,mBACE;EACF,uBAAuB;EACvB,6BAA6B;EAC7B,2BAA2B;EAC3B,4BAA4B;EAC5B,0BAA0B;EAC1B,aAAa;EACb,aAAa;EACb,cAAc;EACd,oBAAoB;EACpB,mBAAmB;EACnB,qBAAqB;EACrB,oBAAoB;EACpB,yBAAyB;EACzB,aAAa;EACb,eAAe;EACf,mBACE;EACF,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,YAAY;EACZ,WAAW;CACb;CACA,OAAO;EACL,eACE;EACF,qBACE;EACF,qBACE;EACF,sBACE;EACF,mBACE;EACF,uBAAuB;EACvB,6BAA6B;EAC7B,2BAA2B;EAC3B,4BAA4B;EAC5B,0BAA0B;EAC1B,aAAa;EACb,aAAa;EACb,cAAc;EACd,oBAAoB;EACpB,mBAAmB;EACnB,qBAAqB;EACrB,oBAAoB;EACpB,yBAAyB;EACzB,aAAa;EACb,eAAe;EACf,mBACE;EACF,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,YAAY;EACZ,WAAW;CACb;AACF"}
1
+ {"version":3,"file":"legacy.mjs","names":[],"sources":["../../../../src/styles/theme/token/legacy.ts"],"sourcesContent":["export const legacyToken = {\n dark: {\n boxShadowCard:\n '\\n 0 1px 2px -2px rgba(0,0,0,0.16),\\n 0 3px 6px 0 rgba(0,0,0,0.12),\\n 0 5px 12px 4px rgba(0,0,0,0.09)\\n ',\n boxShadowDrawerDown:\n '\\n 0 -6px 16px 0 rgba(0,0,0,0.08),\\n 0 -3px 6px -4px rgba(0,0,0,0.12),\\n 0 -9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerLeft:\n '\\n 6px 0 16px 0 rgba(0,0,0,0.08),\\n 3px 0 6px -4px rgba(0,0,0,0.12),\\n 9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerRight:\n '\\n -6px 0 16px 0 rgba(0,0,0,0.08),\\n -3px 0 6px -4px rgba(0,0,0,0.12),\\n -9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerUp:\n '\\n 0 6px 16px 0 rgba(0,0,0,0.08),\\n 0 3px 6px -4px rgba(0,0,0,0.12),\\n 0 9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowPopoverArrow: '2px 2px 5px rgba(0,0,0,0.05)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0,0,0,0.08)',\n colorBgBase: '#000',\n colorBgBlur: 'rgba(255,255,255,0.04)',\n colorBgSolid: 'rgba(255,255,255,0.95)',\n colorBgSolidActive: 'rgba(255,255,255,0.9)',\n colorBgSolidHover: 'rgb(255,255,255)',\n colorBorderDisabled: '#424242',\n colorErrorBgActive: '#5b2526',\n colorErrorBgFilledHover: '#441e1f',\n colorShadow: '#000',\n colorTextBase: '#fff',\n dropShadowPopover:\n 'drop-shadow(0 6px 16px rgba(0,0,0,0.08)) drop-shadow(0 3px 6px rgba(0,0,0,0.12)) drop-shadow(0 9px 28px rgba(0,0,0,0.05))',\n pink1: '#291321',\n pink10: '#fad2e3',\n pink2: '#40162f',\n pink3: '#551c3b',\n pink4: '#75204f',\n pink5: '#a02669',\n pink6: '#cb2b83',\n pink7: '#e0529c',\n pink8: '#f37fb7',\n pink9: '#f8a8cc',\n pinkActive: '#e0529c',\n pinkHover: '#a02669',\n },\n light: {\n boxShadowCard:\n '\\n 0 1px 2px -2px rgba(0,0,0,0.16),\\n 0 3px 6px 0 rgba(0,0,0,0.12),\\n 0 5px 12px 4px rgba(0,0,0,0.09)\\n ',\n boxShadowDrawerDown:\n '\\n 0 -6px 16px 0 rgba(0,0,0,0.08),\\n 0 -3px 6px -4px rgba(0,0,0,0.12),\\n 0 -9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerLeft:\n '\\n 6px 0 16px 0 rgba(0,0,0,0.08),\\n 3px 0 6px -4px rgba(0,0,0,0.12),\\n 9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerRight:\n '\\n -6px 0 16px 0 rgba(0,0,0,0.08),\\n -3px 0 6px -4px rgba(0,0,0,0.12),\\n -9px 0 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowDrawerUp:\n '\\n 0 6px 16px 0 rgba(0,0,0,0.08),\\n 0 3px 6px -4px rgba(0,0,0,0.12),\\n 0 9px 28px 8px rgba(0,0,0,0.05)\\n ',\n boxShadowPopoverArrow: '2px 2px 5px rgba(0,0,0,0.05)',\n boxShadowTabsOverflowBottom: 'inset 0 -10px 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowLeft: 'inset 10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowRight: 'inset -10px 0 8px -8px rgba(0,0,0,0.08)',\n boxShadowTabsOverflowTop: 'inset 0 10px 8px -8px rgba(0,0,0,0.08)',\n colorBgBase: '#fff',\n colorBgBlur: 'transparent',\n colorBgSolid: 'rgb(0,0,0)',\n colorBgSolidActive: 'rgba(0,0,0,0.95)',\n colorBgSolidHover: 'rgba(0,0,0,0.75)',\n colorBorderDisabled: '#d9d9d9',\n colorErrorBgActive: '#ffccc7',\n colorErrorBgFilledHover: '#ffdfdc',\n colorShadow: '#000',\n colorTextBase: '#000',\n dropShadowPopover:\n 'drop-shadow(0 6px 16px rgba(0,0,0,0.08)) drop-shadow(0 3px 6px rgba(0,0,0,0.12)) drop-shadow(0 9px 28px rgba(0,0,0,0.05))',\n pink1: '#fff0f6',\n pink10: '#520339',\n pink2: '#ffd6e7',\n pink3: '#ffadd2',\n pink4: '#ff85c0',\n pink5: '#f759ab',\n pink6: '#eb2f96',\n pink7: '#c41d7f',\n pink8: '#9e1068',\n pink9: '#780650',\n pinkActive: '#c41d7f',\n pinkHover: '#f759ab',\n },\n};\n"],"mappings":";AAAA,MAAa,cAAc;CACzB,MAAM;EACJ,eACE;EACF,qBACE;EACF,qBACE;EACF,sBACE;EACF,mBACE;EACF,uBAAuB;EACvB,6BAA6B;EAC7B,2BAA2B;EAC3B,4BAA4B;EAC5B,0BAA0B;EAC1B,aAAa;EACb,aAAa;EACb,cAAc;EACd,oBAAoB;EACpB,mBAAmB;EACnB,qBAAqB;EACrB,oBAAoB;EACpB,yBAAyB;EACzB,aAAa;EACb,eAAe;EACf,mBACE;EACF,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,YAAY;EACZ,WAAW;CACb;CACA,OAAO;EACL,eACE;EACF,qBACE;EACF,qBACE;EACF,sBACE;EACF,mBACE;EACF,uBAAuB;EACvB,6BAA6B;EAC7B,2BAA2B;EAC3B,4BAA4B;EAC5B,0BAA0B;EAC1B,aAAa;EACb,aAAa;EACb,cAAc;EACd,oBAAoB;EACpB,mBAAmB;EACnB,qBAAqB;EACrB,oBAAoB;EACpB,yBAAyB;EACzB,aAAa;EACb,eAAe;EACf,mBACE;EACF,OAAO;EACP,QAAQ;EACR,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,OAAO;EACP,YAAY;EACZ,WAAW;CACb;AACF"}
@@ -2,6 +2,7 @@ import gray from "../../../color/colors/gray.mjs";
2
2
  import { neutralColorScales } from "../../../color/neutrals/index.mjs";
3
3
  import { mixColors, parseRgb } from "../../../utils/colorMath.mjs";
4
4
  import { generateColorNeutralPalette } from "../generateColorPalette.mjs";
5
+ import { neutralText } from "./neutralText.mjs";
5
6
  //#region src/styles/theme/token/neutral.ts
6
7
  const isChannel = (value) => value >= 0 && value <= 255;
7
8
  const getAlphaColor = (front, back) => {
@@ -21,10 +22,17 @@ const getAlphaColor = (front, back) => {
21
22
  };
22
23
  const createNeutralToken = (appearance, neutralColor, status) => {
23
24
  const scale = neutralColor && neutralColorScales[neutralColor] || gray;
24
- const token = generateColorNeutralPalette({
25
- appearance,
26
- scale
27
- });
25
+ const [colorText, colorTextSecondary, colorTextTertiary, colorTextQuaternary] = neutralText[neutralColor && neutralColorScales[neutralColor] && neutralColor || "gray"][appearance];
26
+ const token = {
27
+ ...generateColorNeutralPalette({
28
+ appearance,
29
+ scale
30
+ }),
31
+ colorText,
32
+ colorTextQuaternary,
33
+ colorTextSecondary,
34
+ colorTextTertiary
35
+ };
28
36
  return {
29
37
  ...token,
30
38
  colorBgContainerDisabled: token.colorFillTertiary,
@@ -1 +1 @@
1
- {"version":3,"file":"neutral.mjs","names":[],"sources":["../../../../src/styles/theme/token/neutral.ts"],"sourcesContent":["import { gray } from '@/color/colors';\nimport { neutralColorScales } from '@/color/neutrals';\nimport { mixColors, parseRgb } from '@/utils/colorMath';\n\nimport type { NeutralColors } from '../../customTheme';\nimport { generateColorNeutralPalette } from '../generateColorPalette';\n\nconst isChannel = (value: number) => value >= 0 && value <= 255;\n\n// port of antd's getAlphaColor: the most transparent rgba that renders `front` over `back`\nconst getAlphaColor = (front: string, back: string) => {\n const f = parseRgb(front);\n if (f.alpha !== undefined) return front;\n const b = parseRgb(back);\n\n for (let alpha = 0.01; alpha <= 1; alpha += 0.01) {\n const r = Math.round((f.red - b.red * (1 - alpha)) / alpha);\n const g = Math.round((f.green - b.green * (1 - alpha)) / alpha);\n const bl = Math.round((f.blue - b.blue * (1 - alpha)) / alpha);\n if (isChannel(r) && isChannel(g) && isChannel(bl)) {\n const a = Math.round(alpha * 100) / 100;\n return a === 1 ? `rgb(${r},${g},${bl})` : `rgba(${r},${g},${bl},${a})`;\n }\n }\n\n return `rgb(${f.red},${f.green},${f.blue})`;\n};\n\nexport const createNeutralToken = (\n appearance: 'light' | 'dark',\n neutralColor: NeutralColors | undefined,\n status: { colorErrorBg: string; colorWarningBg: string },\n) => {\n const scale = (neutralColor && neutralColorScales[neutralColor]) || gray;\n const token = generateColorNeutralPalette({ appearance, scale });\n\n return {\n ...token,\n colorBgContainerDisabled: token.colorFillTertiary,\n colorBgContainerSecondary: mixColors(0.5, token.colorBgLayout, token.colorBgContainer),\n colorBgTextActive: token.colorFill,\n colorBgTextHover: token.colorFillSecondary,\n colorBorderBg: token.colorBgContainer,\n colorErrorOutline: getAlphaColor(status.colorErrorBg, token.colorBgContainer),\n colorFillAlter: token.colorFillQuaternary,\n colorFillContent: token.colorFillSecondary,\n colorFillContentHover: token.colorFill,\n colorIcon: token.colorTextTertiary,\n colorIconHover: token.colorText,\n colorSplit: getAlphaColor(token.colorBorderSecondary, token.colorBgContainer),\n colorTextDescription: token.colorTextTertiary,\n colorTextDisabled: token.colorTextQuaternary,\n colorTextHeading: token.colorText,\n colorTextLabel: token.colorTextSecondary,\n colorTextPlaceholder: token.colorTextQuaternary,\n colorWarningOutline: getAlphaColor(status.colorWarningBg, token.colorBgContainer),\n controlItemBgActiveDisabled: token.colorFill,\n controlItemBgHover: token.colorFillTertiary,\n controlTmpOutline: token.colorFillQuaternary,\n };\n};\n"],"mappings":";;;;;AAOA,MAAM,aAAa,UAAkB,SAAS,KAAK,SAAS;AAG5D,MAAM,iBAAiB,OAAe,SAAiB;CACrD,MAAM,IAAI,SAAS,KAAK;CACxB,IAAI,EAAE,UAAU,KAAA,GAAW,OAAO;CAClC,MAAM,IAAI,SAAS,IAAI;CAEvB,KAAK,IAAI,QAAQ,KAAM,SAAS,GAAG,SAAS,KAAM;EAChD,MAAM,IAAI,KAAK,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,UAAU,KAAK;EAC1D,MAAM,IAAI,KAAK,OAAO,EAAE,QAAQ,EAAE,SAAS,IAAI,UAAU,KAAK;EAC9D,MAAM,KAAK,KAAK,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU,KAAK;EAC7D,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,KAAK,UAAU,EAAE,GAAG;GACjD,MAAM,IAAI,KAAK,MAAM,QAAQ,GAAG,IAAI;GACpC,OAAO,MAAM,IAAI,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE;EACtE;CACF;CAEA,OAAO,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK;AAC3C;AAEA,MAAa,sBACX,YACA,cACA,WACG;CACH,MAAM,QAAS,gBAAgB,mBAAmB,iBAAkB;CACpE,MAAM,QAAQ,4BAA4B;EAAE;EAAY;CAAM,CAAC;CAE/D,OAAO;EACL,GAAG;EACH,0BAA0B,MAAM;EAChC,2BAA2B,UAAU,IAAK,MAAM,eAAe,MAAM,gBAAgB;EACrF,mBAAmB,MAAM;EACzB,kBAAkB,MAAM;EACxB,eAAe,MAAM;EACrB,mBAAmB,cAAc,OAAO,cAAc,MAAM,gBAAgB;EAC5E,gBAAgB,MAAM;EACtB,kBAAkB,MAAM;EACxB,uBAAuB,MAAM;EAC7B,WAAW,MAAM;EACjB,gBAAgB,MAAM;EACtB,YAAY,cAAc,MAAM,sBAAsB,MAAM,gBAAgB;EAC5E,sBAAsB,MAAM;EAC5B,mBAAmB,MAAM;EACzB,kBAAkB,MAAM;EACxB,gBAAgB,MAAM;EACtB,sBAAsB,MAAM;EAC5B,qBAAqB,cAAc,OAAO,gBAAgB,MAAM,gBAAgB;EAChF,6BAA6B,MAAM;EACnC,oBAAoB,MAAM;EAC1B,mBAAmB,MAAM;CAC3B;AACF"}
1
+ {"version":3,"file":"neutral.mjs","names":[],"sources":["../../../../src/styles/theme/token/neutral.ts"],"sourcesContent":["import { gray } from '@/color/colors';\nimport { neutralColorScales } from '@/color/neutrals';\nimport { mixColors, parseRgb } from '@/utils/colorMath';\n\nimport type { NeutralColors } from '../../customTheme';\nimport { generateColorNeutralPalette } from '../generateColorPalette';\nimport { neutralText } from './neutralText';\n\nconst isChannel = (value: number) => value >= 0 && value <= 255;\n\n// port of antd's getAlphaColor: the most transparent rgba that renders `front` over `back`\nconst getAlphaColor = (front: string, back: string) => {\n const f = parseRgb(front);\n if (f.alpha !== undefined) return front;\n const b = parseRgb(back);\n\n for (let alpha = 0.01; alpha <= 1; alpha += 0.01) {\n const r = Math.round((f.red - b.red * (1 - alpha)) / alpha);\n const g = Math.round((f.green - b.green * (1 - alpha)) / alpha);\n const bl = Math.round((f.blue - b.blue * (1 - alpha)) / alpha);\n if (isChannel(r) && isChannel(g) && isChannel(bl)) {\n const a = Math.round(alpha * 100) / 100;\n return a === 1 ? `rgb(${r},${g},${bl})` : `rgba(${r},${g},${bl},${a})`;\n }\n }\n\n return `rgb(${f.red},${f.green},${f.blue})`;\n};\n\nexport const createNeutralToken = (\n appearance: 'light' | 'dark',\n neutralColor: NeutralColors | undefined,\n status: { colorErrorBg: string; colorWarningBg: string },\n) => {\n const scale = (neutralColor && neutralColorScales[neutralColor]) || gray;\n const [colorText, colorTextSecondary, colorTextTertiary, colorTextQuaternary] =\n neutralText[(neutralColor && neutralColorScales[neutralColor] && neutralColor) || 'gray'][\n appearance\n ];\n const token = {\n ...generateColorNeutralPalette({ appearance, scale }),\n colorText,\n colorTextQuaternary,\n colorTextSecondary,\n colorTextTertiary,\n };\n\n return {\n ...token,\n colorBgContainerDisabled: token.colorFillTertiary,\n colorBgContainerSecondary: mixColors(0.5, token.colorBgLayout, token.colorBgContainer),\n colorBgTextActive: token.colorFill,\n colorBgTextHover: token.colorFillSecondary,\n colorBorderBg: token.colorBgContainer,\n colorErrorOutline: getAlphaColor(status.colorErrorBg, token.colorBgContainer),\n colorFillAlter: token.colorFillQuaternary,\n colorFillContent: token.colorFillSecondary,\n colorFillContentHover: token.colorFill,\n colorIcon: token.colorTextTertiary,\n colorIconHover: token.colorText,\n colorSplit: getAlphaColor(token.colorBorderSecondary, token.colorBgContainer),\n colorTextDescription: token.colorTextTertiary,\n colorTextDisabled: token.colorTextQuaternary,\n colorTextHeading: token.colorText,\n colorTextLabel: token.colorTextSecondary,\n colorTextPlaceholder: token.colorTextQuaternary,\n colorWarningOutline: getAlphaColor(status.colorWarningBg, token.colorBgContainer),\n controlItemBgActiveDisabled: token.colorFill,\n controlItemBgHover: token.colorFillTertiary,\n controlTmpOutline: token.colorFillQuaternary,\n };\n};\n"],"mappings":";;;;;;AAQA,MAAM,aAAa,UAAkB,SAAS,KAAK,SAAS;AAG5D,MAAM,iBAAiB,OAAe,SAAiB;CACrD,MAAM,IAAI,SAAS,KAAK;CACxB,IAAI,EAAE,UAAU,KAAA,GAAW,OAAO;CAClC,MAAM,IAAI,SAAS,IAAI;CAEvB,KAAK,IAAI,QAAQ,KAAM,SAAS,GAAG,SAAS,KAAM;EAChD,MAAM,IAAI,KAAK,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,UAAU,KAAK;EAC1D,MAAM,IAAI,KAAK,OAAO,EAAE,QAAQ,EAAE,SAAS,IAAI,UAAU,KAAK;EAC9D,MAAM,KAAK,KAAK,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI,UAAU,KAAK;EAC7D,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,KAAK,UAAU,EAAE,GAAG;GACjD,MAAM,IAAI,KAAK,MAAM,QAAQ,GAAG,IAAI;GACpC,OAAO,MAAM,IAAI,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,KAAK,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE;EACtE;CACF;CAEA,OAAO,OAAO,EAAE,IAAI,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK;AAC3C;AAEA,MAAa,sBACX,YACA,cACA,WACG;CACH,MAAM,QAAS,gBAAgB,mBAAmB,iBAAkB;CACpE,MAAM,CAAC,WAAW,oBAAoB,mBAAmB,uBACvD,YAAa,gBAAgB,mBAAmB,iBAAiB,gBAAiB,OAAO,CACvF;CAEJ,MAAM,QAAQ;EACZ,GAAG,4BAA4B;GAAE;GAAY;EAAM,CAAC;EACpD;EACA;EACA;EACA;CACF;CAEA,OAAO;EACL,GAAG;EACH,0BAA0B,MAAM;EAChC,2BAA2B,UAAU,IAAK,MAAM,eAAe,MAAM,gBAAgB;EACrF,mBAAmB,MAAM;EACzB,kBAAkB,MAAM;EACxB,eAAe,MAAM;EACrB,mBAAmB,cAAc,OAAO,cAAc,MAAM,gBAAgB;EAC5E,gBAAgB,MAAM;EACtB,kBAAkB,MAAM;EACxB,uBAAuB,MAAM;EAC7B,WAAW,MAAM;EACjB,gBAAgB,MAAM;EACtB,YAAY,cAAc,MAAM,sBAAsB,MAAM,gBAAgB;EAC5E,sBAAsB,MAAM;EAC5B,mBAAmB,MAAM;EACzB,kBAAkB,MAAM;EACxB,gBAAgB,MAAM;EACtB,sBAAsB,MAAM;EAC5B,qBAAqB,cAAc,OAAO,gBAAgB,MAAM,gBAAgB;EAChF,6BAA6B,MAAM;EACnC,oBAAoB,MAAM;EAC1B,mBAAmB,MAAM;CAC3B;AACF"}
@@ -0,0 +1,91 @@
1
+ //#region src/styles/theme/token/neutralText.ts
2
+ const neutralText = {
3
+ gray: {
4
+ dark: [
5
+ "#e6e6e6",
6
+ "#b4b4b4",
7
+ "#8f8f8f",
8
+ "#6b6b6b"
9
+ ],
10
+ light: [
11
+ "#1f1f1f",
12
+ "#666666",
13
+ "#8a8a8a",
14
+ "#b0b0b0"
15
+ ]
16
+ },
17
+ mauve: {
18
+ dark: [
19
+ "#e9e5ec",
20
+ "#b6b3b9",
21
+ "#908e94",
22
+ "#6c6a70"
23
+ ],
24
+ light: [
25
+ "#1f1f23",
26
+ "#67656b",
27
+ "#8b898f",
28
+ "#b1afb5"
29
+ ]
30
+ },
31
+ olive: {
32
+ dark: [
33
+ "#e5e7e1",
34
+ "#b2b5af",
35
+ "#8d908b",
36
+ "#696c67"
37
+ ],
38
+ light: [
39
+ "#1d201c",
40
+ "#646762",
41
+ "#888b85",
42
+ "#aeb1aa"
43
+ ]
44
+ },
45
+ sage: {
46
+ dark: [
47
+ "#e3e7e4",
48
+ "#b0b5b3",
49
+ "#8b908e",
50
+ "#676c6a"
51
+ ],
52
+ light: [
53
+ "#1b201e",
54
+ "#616765",
55
+ "#868c89",
56
+ "#abb1ae"
57
+ ]
58
+ },
59
+ sand: {
60
+ dark: [
61
+ "#e9e6dc",
62
+ "#b6b4ab",
63
+ "#918f87",
64
+ "#6c6b63"
65
+ ],
66
+ light: [
67
+ "#1f201a",
68
+ "#67665f",
69
+ "#8b8a82",
70
+ "#b2b0a8"
71
+ ]
72
+ },
73
+ slate: {
74
+ dark: [
75
+ "#e5e6ea",
76
+ "#b3b4b8",
77
+ "#8d8f93",
78
+ "#696b6f"
79
+ ],
80
+ light: [
81
+ "#1d1f22",
82
+ "#646669",
83
+ "#888a8d",
84
+ "#aeb0b3"
85
+ ]
86
+ }
87
+ };
88
+ //#endregion
89
+ export { neutralText };
90
+
91
+ //# sourceMappingURL=neutralText.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neutralText.mjs","names":[],"sources":["../../../../src/styles/theme/token/neutralText.ts"],"sourcesContent":["export type NeutralTextLadder = Record<'dark' | 'light', [string, string, string, string]>;\n\nexport const neutralText: Record<string, NeutralTextLadder> = {\n gray: {\n dark: ['#e6e6e6', '#b4b4b4', '#8f8f8f', '#6b6b6b'],\n light: ['#1f1f1f', '#666666', '#8a8a8a', '#b0b0b0'],\n },\n mauve: {\n dark: ['#e9e5ec', '#b6b3b9', '#908e94', '#6c6a70'],\n light: ['#1f1f23', '#67656b', '#8b898f', '#b1afb5'],\n },\n olive: {\n dark: ['#e5e7e1', '#b2b5af', '#8d908b', '#696c67'],\n light: ['#1d201c', '#646762', '#888b85', '#aeb1aa'],\n },\n sage: {\n dark: ['#e3e7e4', '#b0b5b3', '#8b908e', '#676c6a'],\n light: ['#1b201e', '#616765', '#868c89', '#abb1ae'],\n },\n sand: {\n dark: ['#e9e6dc', '#b6b4ab', '#918f87', '#6c6b63'],\n light: ['#1f201a', '#67665f', '#8b8a82', '#b2b0a8'],\n },\n slate: {\n dark: ['#e5e6ea', '#b3b4b8', '#8d8f93', '#696b6f'],\n light: ['#1d1f22', '#646669', '#888a8d', '#aeb0b3'],\n },\n};\n"],"mappings":";AAEA,MAAa,cAAiD;CAC5D,MAAM;EACJ,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;CACA,OAAO;EACL,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;CACA,OAAO;EACL,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;CACA,MAAM;EACJ,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;CACA,MAAM;EACJ,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;CACA,OAAO;EACL,MAAM;GAAC;GAAW;GAAW;GAAW;EAAS;EACjD,OAAO;GAAC;GAAW;GAAW;GAAW;EAAS;CACpD;AACF"}
@@ -1,51 +1,26 @@
1
- import blueGeekblueMix from "../../../color/colors/blue.mjs";
2
- import geekblue from "../../../color/colors/geekblue.mjs";
3
- import gold from "../../../color/colors/gold.mjs";
4
- import green from "../../../color/colors/green.mjs";
5
- import lime from "../../../color/colors/lime.mjs";
6
- import red from "../../../color/colors/red.mjs";
7
- import volcano from "../../../color/colors/volcano.mjs";
1
+ import { statusColorScales } from "../../../color/status/index.mjs";
8
2
  import { generateColorPalette } from "../generateColorPalette.mjs";
9
3
  import { generateCustomColorToken } from "../customToken.mjs";
10
4
  import { legacyToken } from "./legacy.mjs";
11
5
  import { shadowToken } from "./shadow.mjs";
12
6
  //#region src/styles/theme/token/palette.ts
13
- const statusScales = {
14
- dark: {
15
- error: red,
16
- info: blueGeekblueMix,
17
- success: lime,
18
- warning: gold
19
- },
20
- light: {
21
- error: volcano,
22
- info: geekblue,
23
- success: green,
24
- warning: gold
25
- }
26
- };
27
- const createPaletteToken = (appearance) => {
28
- const scales = statusScales[appearance];
29
- const error = generateColorPalette({
30
- appearance,
31
- scale: scales.error,
32
- type: "Error"
33
- });
34
- const info = generateColorPalette({
35
- appearance,
36
- scale: scales.info,
37
- type: "Info"
38
- });
39
- const success = generateColorPalette({
7
+ const createStatusPalette = (appearance, scale, type) => {
8
+ const palette = generateColorPalette({
40
9
  appearance,
41
- scale: scales.success,
42
- type: "Success"
43
- });
44
- const warning = generateColorPalette({
45
- appearance,
46
- scale: scales.warning,
47
- type: "Warning"
10
+ scale,
11
+ type
48
12
  });
13
+ if (appearance === "dark") return palette;
14
+ return {
15
+ ...palette,
16
+ [`color${type}Text`]: scale.light[10]
17
+ };
18
+ };
19
+ const createPaletteToken = (appearance, scales = statusColorScales) => {
20
+ const error = createStatusPalette(appearance, scales.error, "Error");
21
+ const info = createStatusPalette(appearance, scales.info, "Info");
22
+ const success = createStatusPalette(appearance, scales.success, "Success");
23
+ const warning = createStatusPalette(appearance, scales.warning, "Warning");
49
24
  return {
50
25
  ...legacyToken[appearance],
51
26
  ...error,