nfx-ui 0.5.0 → 0.5.2

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 (35) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -2
  3. package/dist/{chunk-i18n-Bp6pPM9n.mjs → chunk-i18n-BBPhh6MT.mjs} +22 -19
  4. package/dist/chunk-i18n-BBPhh6MT.mjs.map +1 -0
  5. package/dist/chunk-i18n-daHSL0Nm.cjs +3 -0
  6. package/dist/chunk-i18n-daHSL0Nm.cjs.map +1 -0
  7. package/dist/{chunk-preference-DImtu5jI.mjs → chunk-preference-By58ZcJ_.mjs} +2 -2
  8. package/dist/{chunk-preference-DImtu5jI.mjs.map → chunk-preference-By58ZcJ_.mjs.map} +1 -1
  9. package/dist/{chunk-preference-CYl68oeU.cjs → chunk-preference-C144GkCD.cjs} +2 -2
  10. package/dist/{chunk-preference-CYl68oeU.cjs.map → chunk-preference-C144GkCD.cjs.map} +1 -1
  11. package/dist/chunk-types-BNUlgEkq.cjs +3 -0
  12. package/dist/{chunk-types-BkFxelHl.mjs.map → chunk-types-BNUlgEkq.cjs.map} +1 -1
  13. package/dist/{chunk-types-BkFxelHl.mjs → chunk-types-BudGuDCK.mjs} +8 -8
  14. package/dist/{chunk-types-CkbZrFqZ.cjs.map → chunk-types-BudGuDCK.mjs.map} +1 -1
  15. package/dist/components.d.ts +3 -1
  16. package/dist/languages.cjs +1 -1
  17. package/dist/languages.d.ts +6 -1
  18. package/dist/languages.mjs +2 -1
  19. package/dist/layouts.cjs +1 -1
  20. package/dist/layouts.mjs +2 -2
  21. package/dist/preference.cjs +1 -1
  22. package/dist/preference.d.ts +3 -1
  23. package/dist/preference.mjs +2 -2
  24. package/dist/themes.cjs +1 -1
  25. package/dist/themes.cjs.map +1 -1
  26. package/dist/themes.d.ts +3 -1
  27. package/dist/themes.mjs +164 -70
  28. package/dist/themes.mjs.map +1 -1
  29. package/dist/utils.cjs +1 -1
  30. package/dist/utils.mjs +1 -1
  31. package/package.json +5 -3
  32. package/dist/chunk-i18n-Bp6pPM9n.mjs.map +0 -1
  33. package/dist/chunk-i18n-_7W7guSV.cjs +0 -3
  34. package/dist/chunk-i18n-_7W7guSV.cjs.map +0 -1
  35. package/dist/chunk-types-CkbZrFqZ.cjs +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"themes.mjs","names":[],"sources":["../src/themes/utils/themeStorage.ts","../src/themes/hooks/useThemeVariables.ts","../src/themes/themes/bases/android.ts","../src/themes/themes/bases/default.ts","../src/themes/themes/bases/ios.ts","../src/themes/themes/bases/linux.ts","../src/themes/themes/bases/windows.ts","../src/themes/themes/bases/index.ts","../src/themes/themes/colors/coffee.ts","../src/themes/themes/colors/corporate.ts","../src/themes/themes/colors/cosmic.ts","../src/themes/themes/colors/dark.ts","../src/themes/themes/colors/default.ts","../src/themes/themes/colors/forest.ts","../src/themes/themes/colors/light.ts","../src/themes/themes/colors/wine.ts","../src/themes/themes/colors/index.ts","../src/themes/providers/index.tsx"],"sourcesContent":["/**\n * 主题相关 localStorage 读写与移除,统一走 utils/lstorage;读写类型为 ThemeEnum / BaseEnum。\n * Theme localStorage get/set/remove via utils/lstorage; typed as ThemeEnum / BaseEnum.\n */\nimport type { Nilable } from \"@/types/utils\";\nimport { getItem, removeItem, setItem } from \"@/utils/lstorage\";\n\nimport { BASE_STORAGE_KEY, BASE_VALUES, BaseEnum, COLOR_STORAGE_KEY, THEME_VALUES, ThemeEnum } from \"../types\";\n\nexport function getThemeColorStorage(): Nilable<ThemeEnum> {\n const raw = getItem(COLOR_STORAGE_KEY);\n if (raw == null) return raw;\n return (THEME_VALUES as readonly string[]).includes(raw) ? (raw as ThemeEnum) : undefined;\n}\n\nexport function setThemeColorStorage(value: ThemeEnum): void {\n setItem(COLOR_STORAGE_KEY, value);\n}\n\nexport function getThemeBaseStorage(): Nilable<BaseEnum> {\n const raw = getItem(BASE_STORAGE_KEY);\n if (raw == null) return raw;\n return BASE_VALUES.includes(raw as BaseEnum) ? (raw as BaseEnum) : undefined;\n}\n\nexport function setThemeBaseStorage(value: BaseEnum): void {\n setItem(BASE_STORAGE_KEY, value);\n}\n\nexport function removeThemeStorage(): void {\n removeItem(COLOR_STORAGE_KEY);\n removeItem(BASE_STORAGE_KEY);\n}\n","import type { Theme, ThemeEnum } from \"../types\";\nimport { setThemeColorStorage } from \"../utils\";\nimport { useEffect } from \"react\";\n\n/**\n * 将当前主题变量注入到 document 的 CSS Variables,并持久化主题名到 localStorage。\n * Injects current theme variables into document CSS custom properties and persists theme name to localStorage.\n *\n * @param currentTheme - 完整主题对象(颜色 + 基础)。Full theme (colors + base).\n * @param themeName - 当前主题枚举名,用于持久化。Current theme enum key for persistence.\n */\nconst useThemeVariables = (currentTheme: Theme, themeName: ThemeEnum) => {\n useEffect(() => {\n const root = document.documentElement;\n const vars = currentTheme.colors.variables;\n const base = currentTheme.base.variables;\n\n // 主色与语义色 / Primary and semantic colors\n root.style.setProperty(\"--color-primary\", vars.primary);\n root.style.setProperty(\"--color-primary-light\", vars.primaryLight);\n root.style.setProperty(\"--color-primary-fg\", vars.primaryFg);\n root.style.setProperty(\"--color-success\", vars.success);\n root.style.setProperty(\"--color-success-light\", vars.successLight);\n root.style.setProperty(\"--color-info\", vars.info);\n root.style.setProperty(\"--color-info-light\", vars.infoLight);\n root.style.setProperty(\"--color-warning\", vars.warning);\n root.style.setProperty(\"--color-warning-light\", vars.warningLight);\n root.style.setProperty(\"--color-danger\", vars.danger);\n root.style.setProperty(\"--color-danger-light\", vars.dangerLight);\n\n // 背景色 / Background\n root.style.setProperty(\"--color-bg\", vars.bg);\n root.style.setProperty(\"--color-bg-2\", vars.bg2);\n root.style.setProperty(\"--color-bg-3\", vars.bg3);\n root.style.setProperty(\"--color-bg-4\", vars.bg4);\n\n // 边框色 / Border\n root.style.setProperty(\"--color-border\", vars.border);\n root.style.setProperty(\"--color-border-2\", vars.border2);\n root.style.setProperty(\"--color-border-3\", vars.border3);\n root.style.setProperty(\"--color-border-4\", vars.border4);\n root.style.setProperty(\"--color-border-5\", vars.border5);\n\n // 文字色 / Foreground text\n root.style.setProperty(\"--color-fg\", vars.fg);\n root.style.setProperty(\"--color-fg-text\", vars.fgText);\n root.style.setProperty(\"--color-fg-heading\", vars.fgHeading);\n root.style.setProperty(\"--color-fg-highlight\", vars.fgHighlight);\n root.style.setProperty(\"--color-separator\", vars.separator);\n\n // 基础变量(圆角等)/ Base (radius, etc.)\n root.style.setProperty(\"--radius-button\", `${base.buttonRadius}px`);\n root.style.setProperty(\"--radius-card\", `${base.cardRadius}px`);\n root.style.setProperty(\"--radius-input\", `${base.inputRadius}px`);\n\n // Temperature\n vars.temperature.arcFill.forEach((v: string, i: number) => {\n root.style.setProperty(`--temperature-arc-fill-${i}`, v);\n });\n root.style.setProperty(\"--temperature-arc-empty\", vars.temperature.arcEmpty);\n root.style.setProperty(\"--temperature-thumb-bg\", vars.temperature.thumbBg);\n root.style.setProperty(\"--temperature-thumb-border\", vars.temperature.thumbBorder);\n\n // Solar\n root.style.setProperty(\"--solar-gradient-left\", vars.solar.gradientLeft);\n root.style.setProperty(\"--solar-gradient-right\", vars.solar.gradientRight);\n root.style.setProperty(\"--solar-shadow-color\", vars.solar.shadowColor);\n root.style.setProperty(\"--solar-second-series-fill\", vars.solar.secondSeriesFill);\n\n // Traffic\n root.style.setProperty(\"--traffic-tooltip-bg\", vars.traffic.tooltipBg);\n root.style.setProperty(\"--traffic-tooltip-border-color\", vars.traffic.tooltipBorderColor);\n root.style.setProperty(\"--traffic-tooltip-text-color\", vars.traffic.tooltipTextColor);\n root.style.setProperty(\"--traffic-y-axis-split-line\", vars.traffic.yAxisSplitLine);\n root.style.setProperty(\"--traffic-line-bg\", vars.traffic.lineBg);\n root.style.setProperty(\"--traffic-item-color\", vars.traffic.itemColor);\n root.style.setProperty(\"--traffic-item-border-color\", vars.traffic.itemBorderColor);\n root.style.setProperty(\"--traffic-item-emphasis-border-color\", vars.traffic.itemEmphasisBorderColor);\n root.style.setProperty(\"--traffic-shadow-line-dark-bg\", vars.traffic.shadowLineDarkBg);\n root.style.setProperty(\"--traffic-shadow-line-shadow\", vars.traffic.shadowLineShadow);\n root.style.setProperty(\"--traffic-grad-from\", vars.traffic.gradFrom);\n root.style.setProperty(\"--traffic-grad-to\", vars.traffic.gradTo);\n\n // Electricity\n root.style.setProperty(\"--electricity-tooltip-bg\", vars.electricity.tooltipBg);\n root.style.setProperty(\"--electricity-tooltip-line-color\", vars.electricity.tooltipLineColor);\n root.style.setProperty(\"--electricity-tooltip-border-color\", vars.electricity.tooltipBorderColor);\n root.style.setProperty(\"--electricity-tooltip-text-color\", vars.electricity.tooltipTextColor);\n root.style.setProperty(\"--electricity-axis-line-color\", vars.electricity.axisLineColor);\n root.style.setProperty(\"--electricity-x-axis-text-color\", vars.electricity.xAxisTextColor);\n root.style.setProperty(\"--electricity-y-axis-split-line\", vars.electricity.yAxisSplitLine);\n root.style.setProperty(\"--electricity-item-border-color\", vars.electricity.itemBorderColor);\n root.style.setProperty(\"--electricity-line-grad-from\", vars.electricity.lineGradFrom);\n root.style.setProperty(\"--electricity-line-grad-to\", vars.electricity.lineGradTo);\n root.style.setProperty(\"--electricity-line-shadow\", vars.electricity.lineShadow);\n root.style.setProperty(\"--electricity-area-grad-from\", vars.electricity.areaGradFrom);\n root.style.setProperty(\"--electricity-area-grad-to\", vars.electricity.areaGradTo);\n root.style.setProperty(\"--electricity-shadow-line-dark-bg\", vars.electricity.shadowLineDarkBg);\n\n // ECharts\n root.style.setProperty(\"--echarts-bg\", vars.echarts.bg);\n root.style.setProperty(\"--echarts-text-color\", vars.echarts.textColor);\n root.style.setProperty(\"--echarts-axis-line-color\", vars.echarts.axisLineColor);\n root.style.setProperty(\"--echarts-split-line-color\", vars.echarts.splitLineColor);\n root.style.setProperty(\"--echarts-item-hover-shadow-color\", vars.echarts.itemHoverShadowColor);\n root.style.setProperty(\"--echarts-tooltip-bg-color\", vars.echarts.tooltipBackgroundColor);\n\n // ChartJS\n root.style.setProperty(\"--chartjs-axis-line-color\", vars.chartjs.axisLineColor);\n root.style.setProperty(\"--chartjs-text-color\", vars.chartjs.textColor);\n\n setThemeColorStorage(themeName);\n }, [themeName, currentTheme]);\n};\n\nexport default useThemeVariables;\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Android 风格圆角(如 6) */\nexport const androidBaseVariables: BaseVariables = {\n buttonRadius: 6,\n cardRadius: 6,\n inputRadius: 6,\n};\n\nexport const androidBaseTheme: BaseTheme = {\n name: BaseEnum.ANDROID,\n displayName: \"Android\",\n variables: androidBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** 默认基础变量(跨平台通用) */\nexport const defaultBaseVariables: BaseVariables = {\n buttonRadius: 8,\n cardRadius: 8,\n inputRadius: 6,\n};\n\n/** 默认基础主题 */\nexport const defaultBaseTheme: BaseTheme = {\n name: BaseEnum.DEFAULT,\n displayName: \"Default\",\n variables: defaultBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** iOS 风格圆角(较大,如 24) */\nexport const iosBaseVariables: BaseVariables = {\n buttonRadius: 24,\n cardRadius: 24,\n inputRadius: 24,\n};\n\nexport const iosBaseTheme: BaseTheme = {\n name: BaseEnum.IOS,\n displayName: \"iOS\",\n variables: iosBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Linux 风格圆角(较小,如 4) */\nexport const linuxBaseVariables: BaseVariables = {\n buttonRadius: 4,\n cardRadius: 4,\n inputRadius: 4,\n};\n\nexport const linuxBaseTheme: BaseTheme = {\n name: BaseEnum.LINUX,\n displayName: \"Linux\",\n variables: linuxBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Windows 风格圆角(如 6) */\nexport const windowsBaseVariables: BaseVariables = {\n buttonRadius: 6,\n cardRadius: 6,\n inputRadius: 6,\n};\n\nexport const windowsBaseTheme: BaseTheme = {\n name: BaseEnum.WINDOWS,\n displayName: \"Windows\",\n variables: windowsBaseVariables,\n};\n","import type { BaseTheme } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\nimport { androidBaseTheme } from \"./android\";\nimport { defaultBaseTheme } from \"./default\";\nimport { iosBaseTheme } from \"./ios\";\nimport { linuxBaseTheme } from \"./linux\";\nimport { windowsBaseTheme } from \"./windows\";\n\nexport const bases: Record<BaseEnum, BaseTheme> = {\n [BaseEnum.DEFAULT]: defaultBaseTheme,\n [BaseEnum.IOS]: iosBaseTheme,\n [BaseEnum.ANDROID]: androidBaseTheme,\n [BaseEnum.WINDOWS]: windowsBaseTheme,\n [BaseEnum.LINUX]: linuxBaseTheme,\n};\n\nexport { defaultBaseTheme, defaultBaseVariables } from \"./default\";\nexport { iosBaseTheme, iosBaseVariables } from \"./ios\";\nexport { androidBaseTheme, androidBaseVariables } from \"./android\";\nexport { windowsBaseTheme, windowsBaseVariables } from \"./windows\";\nexport { linuxBaseTheme, linuxBaseVariables } from \"./linux\";\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Coffee 主题 - 基于 8 色盘重新设计\n * 色盘:奶油 #F8F4E1 | 浅灰米 #E4E0E1 | 浅棕 #D6C0B3 | 中棕 #AB886D / #AF8F6F\n * 深棕 #74512D | 暗棕 #493628 | 最深 #543310\n * 深棕背景 + 奶油/米色文字,语义色保持棕/绿棕/红棕调\n */\nexport const coffeeColorTheme: ColorTheme = {\n name: \"coffee\",\n displayName: \"Coffee\",\n variables: {\n // 主色 - 奶油/拿铁系\n primary: \"#AF8F6F\",\n primaryLight: \"#F8F4E1\",\n primaryFg: \"#2a1f18\",\n\n // 语义色 - 棕调配色(微调以协调)\n success: \"#6d8f72\",\n successLight: \"#8aaa8e\",\n info: \"#8a7a6a\",\n infoLight: \"#a89888\",\n warning: \"#b8926a\",\n warningLight: \"#d4b896\",\n danger: \"#a65d5d\",\n dangerLight: \"#c07d7d\",\n\n // 背景 - 由深到浅:最深 → #543310 → #493628 → #74512D\n bg: \"#2e1a08\",\n bg2: \"#543310\",\n bg3: \"#493628\",\n bg4: \"#74512D\",\n\n // 边框 - 深棕到浅米\n border: \"#493628\",\n border2: \"#543310\",\n border3: \"#74512D\",\n border4: \"#AF8F6F\",\n border5: \"#D6C0B3\",\n\n // 文字\n fg: \"#AF8F6F\",\n fgText: \"#F8F4E1\",\n fgHeading: \"#F8F4E1\",\n fgHighlight: \"#E4E0E1\",\n\n separator: \"#493628\",\n\n temperature: {\n arcFill: [\"#AF8F6F\", \"#AB886D\", \"#D6C0B3\", \"#E4E0E1\", \"#F8F4E1\"],\n arcEmpty: \"#543310\",\n thumbBg: \"#493628\",\n thumbBorder: \"#AF8F6F\",\n },\n\n solar: {\n gradientLeft: \"#AF8F6F\",\n gradientRight: \"#F8F4E1\",\n shadowColor: \"rgba(0, 0, 0, 0.35)\",\n secondSeriesFill: \"#493628\",\n },\n\n traffic: {\n tooltipBg: \"#74512D\",\n tooltipBorderColor: \"#AF8F6F\",\n tooltipTextColor: \"#F8F4E1\",\n yAxisSplitLine: \"#543310\",\n lineBg: \"#493628\",\n itemColor: \"#543310\",\n itemBorderColor: \"#AF8F6F\",\n itemEmphasisBorderColor: \"#F8F4E1\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#493628\",\n gradTo: \"#2e1a08\",\n },\n\n electricity: {\n tooltipBg: \"#543310\",\n tooltipLineColor: \"#F8F4E1\",\n tooltipBorderColor: \"#AF8F6F\",\n tooltipTextColor: \"#F8F4E1\",\n axisLineColor: \"#AF8F6F\",\n xAxisTextColor: \"#AF8F6F\",\n yAxisSplitLine: \"#543310\",\n itemBorderColor: \"#AF8F6F\",\n lineGradFrom: \"#AF8F6F\",\n lineGradTo: \"#F8F4E1\",\n lineShadow: \"rgba(175, 143, 111, 0.3)\",\n areaGradFrom: \"#493628\",\n areaGradTo: \"#2e1a08\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#2e1a08\",\n textColor: \"#F8F4E1\",\n axisLineColor: \"#AF8F6F\",\n splitLineColor: \"#493628\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#543310\",\n },\n\n chartjs: {\n axisLineColor: \"#AF8F6F\",\n textColor: \"#F8F4E1\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\nexport const corporateColorTheme: ColorTheme = {\n name: \"corporate\",\n displayName: \"Corporate\",\n variables: {\n // 基础颜色\n primary: \"#3366ff\",\n primaryLight: \"#598bff\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#ffffff\",\n bg2: \"#f7f9fc\",\n bg3: \"#edf1f7\",\n bg4: \"#e4e9f2\",\n\n // 边框色\n border: \"#ffffff\",\n border2: \"#f7f9fc\",\n border3: \"#edf1f7\",\n border4: \"#e4e9f2\",\n border5: \"#c5cee0\",\n\n // 文字色\n fg: \"#8f9bb3\",\n fgText: \"#222b45\",\n fgHeading: \"#192038\",\n fgHighlight: \"#003694\",\n\n // 分隔符\n separator: \"#edf1f7\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#ffa36b\", \"#ffa36b\", \"#ff9e7a\", \"#ff9888\", \"#ff8ea0\"],\n arcEmpty: \"#f7f9fc\",\n thumbBg: \"#f7f9fc\",\n thumbBorder: \"#ffa36b\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#3366ff\",\n gradientRight: \"#3366ff\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#f7f9fc\",\n },\n\n traffic: {\n tooltipBg: \"#ffffff\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n yAxisSplitLine: \"rgba(0, 0, 0, 0)\",\n lineBg: \"#3366ff\",\n itemColor: \"#e4e9f2\",\n itemBorderColor: \"#e4e9f2\",\n itemEmphasisBorderColor: \"#598bff\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#ffffff\",\n gradTo: \"#ffffff\",\n },\n\n electricity: {\n tooltipBg: \"#ffffff\",\n tooltipLineColor: \"#222b45\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n axisLineColor: \"#edf1f7\",\n xAxisTextColor: \"#8f9bb3\",\n yAxisSplitLine: \"#edf1f7\",\n itemBorderColor: \"#3366ff\",\n lineGradFrom: \"#3366ff\",\n lineGradTo: \"#3366ff\",\n lineShadow: \"rgba(0, 0, 0, 0)\",\n areaGradFrom: \"rgba(0, 0, 0, 0)\",\n areaGradTo: \"rgba(0, 0, 0, 0)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#ffffff\",\n textColor: \"#222b45\",\n axisLineColor: \"#222b45\",\n splitLineColor: \"#edf1f7\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#3366ff\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#edf1f7\",\n textColor: \"#222b45\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\nexport const cosmicColorTheme: ColorTheme = {\n name: \"cosmic\",\n displayName: \"Cosmic\",\n variables: {\n // 基础颜色\n primary: \"#a16eff\",\n primaryLight: \"#b489ff\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#323259\",\n bg2: \"#2a2a48\",\n bg3: \"#272741\",\n bg4: \"#1f1f3a\",\n\n // 边框色\n border: \"#323259\",\n border2: \"#2a2a48\",\n border3: \"#272741\",\n border4: \"#1f1f3a\",\n border5: \"#1f1f3a\",\n\n // 文字色\n fg: \"#b4b4db\",\n fgText: \"#ffffff\",\n fgHeading: \"#ffffff\",\n fgHighlight: \"#a16eff\",\n\n // 分隔符\n separator: \"#2a2a48\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#2ec7fe\", \"#31ffad\", \"#7bff24\", \"#fff024\", \"#f7bd59\"],\n arcEmpty: \"#2a2a48\",\n thumbBg: \"#ffffff\",\n thumbBorder: \"#ffffff\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#a16eff\",\n gradientRight: \"#a16eff\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#2a2a48\",\n },\n\n traffic: {\n tooltipBg: \"#323259\",\n tooltipBorderColor: \"#2a2a48\",\n tooltipTextColor: \"#ffffff\",\n yAxisSplitLine: \"#2a2a48\",\n lineBg: \"#2a2a48\",\n itemColor: \"#2a2a48\",\n itemBorderColor: \"#2a2a48\",\n itemEmphasisBorderColor: \"#a16eff\",\n shadowLineDarkBg: \"#272741\",\n shadowLineShadow: \"#272741\",\n gradFrom: \"#323259\",\n gradTo: \"#2a2a48\",\n },\n\n electricity: {\n tooltipBg: \"#323259\",\n tooltipLineColor: \"#ffffff\",\n tooltipBorderColor: \"#2a2a48\",\n tooltipTextColor: \"#ffffff\",\n axisLineColor: \"#272741\",\n xAxisTextColor: \"#b4b4db\",\n yAxisSplitLine: \"#2a2a48\",\n itemBorderColor: \"#2a2a48\",\n lineGradFrom: \"#00d68f\",\n lineGradTo: \"#ffaa00\",\n lineShadow: \"#1f1f3a\",\n areaGradFrom: \"#2a2a48\",\n areaGradTo: \"#272741\",\n shadowLineDarkBg: \"#272741\",\n },\n\n echarts: {\n bg: \"#323259\",\n textColor: \"#ffffff\",\n axisLineColor: \"#ffffff\",\n splitLineColor: \"#2a2a48\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#a16eff\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#2a2a48\",\n textColor: \"#ffffff\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Dark 主题 - 重新设计\n * - 背景层级分明(base → surface → elevated)\n * - 边框可见且不刺眼\n * - 主色为蓝色强调,语义色适配深色背景\n * - 文字对比度符合可读性\n */\nexport const darkColorTheme: ColorTheme = {\n name: \"dark\",\n displayName: \"Dark\",\n variables: {\n // 主色 - 金黄色/琥珀色\n primary: \"#d4a017\",\n primaryLight: \"#eab308\",\n primaryFg: \"#1a1a1a\",\n\n // 语义色 - 深色模式、无蓝色,info 用青绿区分\n success: \"#22c55e\",\n successLight: \"#4ade80\",\n info: \"#14b8a6\",\n infoLight: \"#2dd4bf\",\n warning: \"#eab308\",\n warningLight: \"#facc15\",\n danger: \"#ef4444\",\n dangerLight: \"#f87171\",\n\n // 背景色 - 明确层级(由深到浅)\n bg: \"#0f0f11\",\n bg2: \"#18181b\",\n bg3: \"#27272a\",\n bg4: \"#3f3f46\",\n\n // 边框色 - 与背景区分,便于识别边界\n border: \"#18181b\",\n border2: \"#27272a\",\n border3: \"#3f3f46\",\n border4: \"#52525b\",\n border5: \"#71717a\",\n\n // 文字色 - 主文白、标题更亮、辅助文灰\n fg: \"#a1a1aa\",\n fgText: \"#fafafa\",\n fgHeading: \"#ffffff\",\n fgHighlight: \"#fde047\",\n\n // 分隔线\n separator: \"#27272a\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#d4a017\", \"#eab308\", \"#fcd34d\", \"#fde047\", \"#fde047\"],\n arcEmpty: \"#27272a\",\n thumbBg: \"#27272a\",\n thumbBorder: \"#52525b\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#d4a017\",\n gradientRight: \"#eab308\",\n shadowColor: \"rgba(0, 0, 0, 0.3)\",\n secondSeriesFill: \"#27272a\",\n },\n\n traffic: {\n tooltipBg: \"#27272a\",\n tooltipBorderColor: \"#3f3f46\",\n tooltipTextColor: \"#fafafa\",\n yAxisSplitLine: \"#27272a\",\n lineBg: \"#3f3f46\",\n itemColor: \"#3f3f46\",\n itemBorderColor: \"#52525b\",\n itemEmphasisBorderColor: \"#eab308\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#27272a\",\n gradTo: \"#18181b\",\n },\n\n electricity: {\n tooltipBg: \"#27272a\",\n tooltipLineColor: \"#fafafa\",\n tooltipBorderColor: \"#3f3f46\",\n tooltipTextColor: \"#fafafa\",\n axisLineColor: \"#3f3f46\",\n xAxisTextColor: \"#a1a1aa\",\n yAxisSplitLine: \"#27272a\",\n itemBorderColor: \"#eab308\",\n lineGradFrom: \"#d4a017\",\n lineGradTo: \"#eab308\",\n lineShadow: \"rgba(212, 160, 23, 0.35)\",\n areaGradFrom: \"#27272a\",\n areaGradTo: \"#18181b\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#18181b\",\n textColor: \"#fafafa\",\n axisLineColor: \"#52525b\",\n splitLineColor: \"#27272a\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#27272a\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#3f3f46\",\n textColor: \"#fafafa\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n// 基于 ReX-App 的 light.ts 红色系配色创建的 default 主题\nexport const defaultColorTheme: ColorTheme = {\n name: \"default\",\n displayName: \"Default\",\n variables: {\n // 基础颜色 - 红色系\n primary: \"rgb(250, 30, 22)\", // #FA1E16 鲜红色\n primaryLight: \"rgb(255, 120, 120)\", // 浅红色\n primaryFg: \"#ffffff\",\n success: \"rgb(62, 168, 30)\", // 浅绿色(对比色)\n successLight: \"rgb(220, 255, 210)\",\n info: \"rgb(255, 160, 150)\", // 亮橙红\n infoLight: \"rgb(255, 200, 180)\",\n warning: \"rgb(248, 104, 7)\", // 明亮橙色\n warningLight: \"rgb(255, 140, 60)\",\n danger: \"rgb(211, 17, 11)\", // 深红色\n dangerLight: \"rgb(243, 70, 64)\",\n\n // 背景色 - 浅色系\n bg: \"rgb(250, 250, 250)\", // 纯白\n bg2: \"rgb(245, 245, 245)\",\n bg3: \"rgb(226, 224, 224)\",\n bg4: \"rgb(207, 207, 207)\",\n\n // 边框色\n border: \"rgb(250, 250, 250)\",\n border2: \"rgb(245, 245, 245)\",\n border3: \"rgb(226, 224, 224)\",\n border4: \"rgb(207, 207, 207)\",\n border5: \"rgb(136, 136, 136)\",\n\n // 文字色\n fg: \"rgb(136, 136, 136)\", // 灰色文字\n fgText: \"rgb(22, 21, 21)\", // 黑色文字\n fgHeading: \"rgb(0, 0, 0)\", // 纯黑标题\n fgHighlight: \"rgb(250, 30, 22)\", // 红色高亮\n\n // 分隔符\n separator: \"rgb(226, 224, 224)\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\n \"rgb(255, 210, 210)\", // 非常浅的淡红\n \"rgb(255, 200, 160)\", // 柔和杏色\n \"rgb(255, 160, 150)\", // 更偏亮橙红\n \"rgb(255, 120, 120)\", // 浅红\n \"rgb(250, 30, 22)\", // 主红色\n ],\n arcEmpty: \"rgb(245, 245, 245)\",\n thumbBg: \"rgb(245, 245, 245)\",\n thumbBorder: \"rgb(250, 30, 22)\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"rgb(250, 30, 22)\",\n gradientRight: \"rgb(248, 104, 7)\",\n shadowColor: \"rgba(250, 30, 22, 0.1)\",\n secondSeriesFill: \"rgb(245, 245, 245)\",\n },\n\n traffic: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n lineBg: \"rgb(207, 207, 207)\",\n itemColor: \"rgb(207, 207, 207)\",\n itemBorderColor: \"rgb(207, 207, 207)\",\n itemEmphasisBorderColor: \"rgb(250, 30, 22)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"rgb(245, 245, 245)\",\n gradTo: \"rgb(245, 245, 245)\",\n },\n\n electricity: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipLineColor: \"rgb(22, 21, 21)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(226, 224, 224)\",\n xAxisTextColor: \"rgb(136, 136, 136)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n itemBorderColor: \"rgb(250, 30, 22)\",\n lineGradFrom: \"rgb(250, 30, 22)\",\n lineGradTo: \"rgb(248, 104, 7)\",\n lineShadow: \"rgba(250, 30, 22, 0.2)\",\n areaGradFrom: \"rgba(250, 30, 22, 0.1)\",\n areaGradTo: \"rgba(250, 30, 22, 0.05)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"rgb(250, 250, 250)\",\n textColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(136, 136, 136)\",\n splitLineColor: \"rgb(226, 224, 224)\",\n itemHoverShadowColor: \"rgba(250, 30, 22, 0.3)\",\n tooltipBackgroundColor: \"rgb(250, 30, 22)\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"rgb(226, 224, 224)\",\n textColor: \"rgb(22, 21, 21)\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Forest 主题 - 森林绿配色\n * - 主色:翠绿 #1F7A5A,按钮、链接、强调\n * - 深绿底 + 浅绿层级\n */\nexport const forestColorTheme: ColorTheme = {\n name: \"forest\",\n displayName: \"Forest\",\n variables: {\n primary: \"#1F7A5A\",\n primaryLight: \"#E6F2EE\",\n primaryFg: \"#FFFFFF\",\n\n success: \"#1F7A5A\",\n successLight: \"#E6F2EE\",\n\n info: \"#2563EB\",\n infoLight: \"#E8F0FF\",\n\n warning: \"#B45309\",\n warningLight: \"#FFF4E5\",\n\n danger: \"#B42318\",\n dangerLight: \"#FDECEC\",\n\n // ===== Backgrounds (White-based) =====\n bg: \"#FFFFFF\",\n bg2: \"#F7F9F8\",\n bg3: \"#EEF3F1\",\n bg4: \"#E6EFEC\",\n\n // ===== Borders (subtle greys w/ green hint) =====\n border: \"#E5E7EB\",\n border2: \"#D1D5DB\",\n border3: \"#C7D2CF\",\n border4: \"#B6C4BF\",\n border5: \"#1F7A5A\", // strong focus border\n\n // ===== Text =====\n fg: \"#111827\",\n fgText: \"#374151\",\n fgHeading: \"#0F172A\",\n fgHighlight: \"#1F7A5A\",\n separator: \"#E5E7EB\",\n\n temperature: {\n arcFill: [\"#E6F2EE\", \"#A7D8C6\", \"#4AA987\", \"#1F7A5A\", \"#145A43\"],\n arcEmpty: \"#E5E7EB\",\n thumbBg: \"#1F7A5A\",\n thumbBorder: \"#145A43\",\n },\n\n solar: {\n gradientLeft: \"#E6F2EE\",\n gradientRight: \"#1F7A5A\",\n shadowColor: \"rgba(31, 122, 90, 0.25)\",\n secondSeriesFill: \"#A7D8C6\",\n },\n\n traffic: {\n tooltipBg: \"#FFFFFF\",\n tooltipBorderColor: \"#E5E7EB\",\n tooltipTextColor: \"#111827\",\n yAxisSplitLine: \"#E5E7EB\",\n lineBg: \"rgba(31, 122, 90, 0.08)\",\n itemColor: \"#1F7A5A\",\n itemBorderColor: \"#145A43\",\n itemEmphasisBorderColor: \"#0E5A41\",\n shadowLineDarkBg: \"rgba(31, 122, 90, 0.15)\",\n shadowLineShadow: \"rgba(31, 122, 90, 0.20)\",\n gradFrom: \"#E6F2EE\",\n gradTo: \"#1F7A5A\",\n },\n\n electricity: {\n tooltipBg: \"#FFFFFF\",\n tooltipLineColor: \"#1F7A5A\",\n tooltipBorderColor: \"#E5E7EB\",\n tooltipTextColor: \"#111827\",\n axisLineColor: \"#D1D5DB\",\n xAxisTextColor: \"#374151\",\n yAxisSplitLine: \"#E5E7EB\",\n itemBorderColor: \"#145A43\",\n lineGradFrom: \"#E6F2EE\",\n lineGradTo: \"#1F7A5A\",\n lineShadow: \"rgba(31, 122, 90, 0.25)\",\n areaGradFrom: \"rgba(31, 122, 90, 0.25)\",\n areaGradTo: \"rgba(31, 122, 90, 0.00)\",\n shadowLineDarkBg: \"rgba(31, 122, 90, 0.10)\",\n },\n\n echarts: {\n bg: \"#FFFFFF\",\n textColor: \"#111827\",\n axisLineColor: \"#D1D5DB\",\n splitLineColor: \"#E5E7EB\",\n itemHoverShadowColor: \"rgba(31, 122, 90, 0.25)\",\n tooltipBackgroundColor: \"#FFFFFF\",\n },\n\n chartjs: {\n axisLineColor: \"#D1D5DB\",\n textColor: \"#111827\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n// 原 ngx-admin 的 default 主题(浅灰蓝色风格)\nexport const lightColorTheme: ColorTheme = {\n name: \"light\",\n displayName: \"Light\",\n variables: {\n // 基础颜色 - 黑白对比色系\n primary: \"#222b45\",\n primaryLight: \"#192038\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#ffffff\",\n bg2: \"#f7f9fc\",\n bg3: \"#edf1f7\",\n bg4: \"#e4e9f2\",\n\n // 边框色\n border: \"#ffffff\",\n border2: \"#f7f9fc\",\n border3: \"#edf1f7\",\n border4: \"#e4e9f2\",\n border5: \"#c5cee0\",\n\n // 文字色\n fg: \"#8f9bb3\",\n fgText: \"#222b45\",\n fgHeading: \"#192038\",\n fgHighlight: \"#003694\",\n\n // 分隔符\n separator: \"#edf1f7\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\"],\n arcEmpty: \"#f7f9fc\",\n thumbBg: \"#f7f9fc\",\n thumbBorder: \"#8f9bb3\",\n },\n\n solar: {\n gradientLeft: \"#8f9bb3\",\n gradientRight: \"#8f9bb3\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#f7f9fc\",\n },\n\n traffic: {\n tooltipBg: \"#ffffff\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n yAxisSplitLine: \"#edf1f7\",\n lineBg: \"#e4e9f2\",\n itemColor: \"#e4e9f2\",\n itemBorderColor: \"#e4e9f2\",\n itemEmphasisBorderColor: \"#8f9bb3\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#f7f9fc\",\n gradTo: \"#f7f9fc\",\n },\n\n electricity: {\n tooltipBg: \"#ffffff\",\n tooltipLineColor: \"#222b45\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n axisLineColor: \"#edf1f7\",\n xAxisTextColor: \"#8f9bb3\",\n yAxisSplitLine: \"#edf1f7\",\n itemBorderColor: \"#8f9bb3\",\n lineGradFrom: \"#8f9bb3\",\n lineGradTo: \"#8f9bb3\",\n lineShadow: \"rgba(0, 0, 0, 0)\",\n areaGradFrom: \"#f7f9fc\",\n areaGradTo: \"#f7f9fc\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#ffffff\",\n textColor: \"#222b45\",\n axisLineColor: \"#222b45\",\n splitLineColor: \"#edf1f7\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#8f9bb3\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#edf1f7\",\n textColor: \"#222b45\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Wine 主题(深色)- 8 色盘(Burgundy 体系)\n * #2A0B12 Background | #3A0F1A Surface | #4A1322 Secondary | #800020 Primary\n * #9A1F3D Primary Hover | #B23A5C Accent | #C97A8A Muted Highlight | #F4E6E9 Text\n */\nexport const wineColorTheme: ColorTheme = {\n name: \"wine\",\n displayName: \"Wine\",\n variables: {\n primary: \"#800020\",\n primaryLight: \"#F4E6E9\",\n primaryFg: \"#F4E6E9\",\n\n success: \"#6b8f6b\",\n successLight: \"#8aaa8e\",\n info: \"#8a6a6a\",\n infoLight: \"#a88a8a\",\n warning: \"#c49050\",\n warningLight: \"#d4b080\",\n danger: \"#b85050\",\n dangerLight: \"#d07070\",\n\n bg: \"#2A0B12\",\n bg2: \"#3A0F1A\",\n bg3: \"#4A1322\",\n bg4: \"#4A1322\",\n\n border: \"#2A0B12\",\n border2: \"#3A0F1A\",\n border3: \"#4A1322\",\n border4: \"#800020\",\n border5: \"#B23A5C\",\n\n fg: \"#C97A8A\",\n fgText: \"#F4E6E9\",\n fgHeading: \"#F4E6E9\",\n fgHighlight: \"#F4E6E9\",\n\n separator: \"#3A0F1A\",\n\n temperature: {\n arcFill: [\"#800020\", \"#9A1F3D\", \"#B23A5C\", \"#C97A8A\", \"#F4E6E9\"],\n arcEmpty: \"#2A0B12\",\n thumbBg: \"#3A0F1A\",\n thumbBorder: \"#800020\",\n },\n\n solar: {\n gradientLeft: \"#800020\",\n gradientRight: \"#F4E6E9\",\n shadowColor: \"rgba(0, 0, 0, 0.4)\",\n secondSeriesFill: \"#3A0F1A\",\n },\n\n traffic: {\n tooltipBg: \"#4A1322\",\n tooltipBorderColor: \"#B23A5C\",\n tooltipTextColor: \"#F4E6E9\",\n yAxisSplitLine: \"#3A0F1A\",\n lineBg: \"#3A0F1A\",\n itemColor: \"#2A0B12\",\n itemBorderColor: \"#800020\",\n itemEmphasisBorderColor: \"#F4E6E9\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#3A0F1A\",\n gradTo: \"#2A0B12\",\n },\n\n electricity: {\n tooltipBg: \"#3A0F1A\",\n tooltipLineColor: \"#F4E6E9\",\n tooltipBorderColor: \"#800020\",\n tooltipTextColor: \"#F4E6E9\",\n axisLineColor: \"#B23A5C\",\n xAxisTextColor: \"#C97A8A\",\n yAxisSplitLine: \"#3A0F1A\",\n itemBorderColor: \"#800020\",\n lineGradFrom: \"#800020\",\n lineGradTo: \"#F4E6E9\",\n lineShadow: \"rgba(128, 0, 32, 0.35)\",\n areaGradFrom: \"#3A0F1A\",\n areaGradTo: \"#2A0B12\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#2A0B12\",\n textColor: \"#F4E6E9\",\n axisLineColor: \"#B23A5C\",\n splitLineColor: \"#3A0F1A\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#3A0F1A\",\n },\n\n chartjs: {\n axisLineColor: \"#B23A5C\",\n textColor: \"#F4E6E9\",\n },\n },\n};\n","import type { Theme } from \"../../types\";\n\nimport { ThemeEnum } from \"../../types\";\nimport { defaultBaseTheme } from \"../bases/default\";\nimport { coffeeColorTheme } from \"./coffee\";\nimport { corporateColorTheme } from \"./corporate\";\nimport { cosmicColorTheme } from \"./cosmic\";\nimport { darkColorTheme } from \"./dark\";\nimport { defaultColorTheme } from \"./default\";\nimport { forestColorTheme } from \"./forest\";\nimport { lightColorTheme } from \"./light\";\nimport { wineColorTheme } from \"./wine\";\n\nconst defaultTheme: Theme = { colors: defaultColorTheme, base: defaultBaseTheme };\nconst lightTheme: Theme = { colors: lightColorTheme, base: defaultBaseTheme };\nconst darkTheme: Theme = { colors: darkColorTheme, base: defaultBaseTheme };\nconst cosmicTheme: Theme = { colors: cosmicColorTheme, base: defaultBaseTheme };\nconst corporateTheme: Theme = { colors: corporateColorTheme, base: defaultBaseTheme };\nconst forestTheme: Theme = { colors: forestColorTheme, base: defaultBaseTheme };\nconst coffeeTheme: Theme = { colors: coffeeColorTheme, base: defaultBaseTheme };\nconst wineTheme: Theme = { colors: wineColorTheme, base: defaultBaseTheme };\n\nexport const themes: Record<ThemeEnum, Theme> = {\n [ThemeEnum.DEFAULT]: defaultTheme,\n [ThemeEnum.LIGHT]: lightTheme,\n [ThemeEnum.DARK]: darkTheme,\n [ThemeEnum.COSMIC]: cosmicTheme,\n [ThemeEnum.CORPORATE]: corporateTheme,\n [ThemeEnum.FOREST]: forestTheme,\n [ThemeEnum.COFFEE]: coffeeTheme,\n [ThemeEnum.WINE]: wineTheme,\n};\n\nexport { defaultTheme, lightTheme, darkTheme, cosmicTheme, corporateTheme, forestTheme, coffeeTheme, wineTheme };\n","/**\n * 主题提供者:提供颜色主题与基础主题(圆角等)上下文。\n * Theme provider: provides color theme and base theme (e.g. radius) context.\n */\nimport type { Theme, ThemeProviderProps } from \"../types\";\n\nimport { memo, useMemo, useState } from \"react\";\n\nimport { ThemeContext } from \"../hooks/useTheme\";\nimport useThemeVariables from \"../hooks/useThemeVariables\";\nimport { bases } from \"../themes/bases\";\nimport { themes } from \"../themes/colors\";\nimport { getThemeBaseStorage, getThemeColorStorage, setThemeBaseStorage } from \"../utils\";\nimport { BASE_VALUES, BaseEnum, THEME_VALUES, ThemeEnum } from \"../types\";\n\nconst ThemeProvider = memo(({ children, defaultTheme = ThemeEnum.DEFAULT, defaultBase = BaseEnum.DEFAULT }: ThemeProviderProps) => {\n const [themeName, setThemeName] = useState<ThemeEnum>(() => {\n const saved = getThemeColorStorage();\n return saved != null && saved in themes ? saved : defaultTheme;\n });\n const [baseName, setBaseName] = useState<BaseEnum>(() => {\n const saved = getThemeBaseStorage();\n return saved != null ? saved : defaultBase;\n });\n\n const currentTheme = useMemo<Theme>(\n () => ({\n colors: themes[themeName].colors,\n base: bases[baseName],\n }),\n [themeName, baseName],\n );\n\n useThemeVariables(currentTheme, themeName);\n\n const setTheme = (newTheme: ThemeEnum) => {\n setThemeName(newTheme);\n };\n const setBase = (newBase: BaseEnum) => {\n setBaseName(newBase);\n setThemeBaseStorage(newBase);\n };\n\n return (\n <ThemeContext.Provider\n value={{\n currentTheme,\n themeName,\n baseName,\n setTheme,\n setBase,\n availableThemes: THEME_VALUES,\n availableBases: BASE_VALUES,\n }}\n >\n {children}\n </ThemeContext.Provider>\n );\n});\n\nThemeProvider.displayName = \"ThemeProvider\";\nexport default ThemeProvider;\n"],"mappings":"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"}
1
+ {"version":3,"file":"themes.mjs","names":[],"sources":["../src/themes/utils/themeStorage.ts","../src/themes/hooks/useThemeVariables.ts","../src/themes/themes/bases/android.ts","../src/themes/themes/bases/default.ts","../src/themes/themes/bases/ios.ts","../src/themes/themes/bases/linux.ts","../src/themes/themes/bases/windows.ts","../src/themes/themes/bases/index.ts","../src/themes/themes/colors/coffee.ts","../src/themes/themes/colors/corporate.ts","../src/themes/themes/colors/cosmic.ts","../src/themes/themes/colors/dark.ts","../src/themes/themes/colors/default.ts","../src/themes/themes/colors/forest.ts","../src/themes/themes/colors/light.ts","../src/themes/themes/colors/wheat.ts","../src/themes/themes/colors/wine.ts","../src/themes/themes/colors/index.ts","../src/themes/providers/index.tsx"],"sourcesContent":["/**\n * 主题相关 localStorage 读写与移除,统一走 utils/lstorage;读写类型为 ThemeEnum / BaseEnum。\n * Theme localStorage get/set/remove via utils/lstorage; typed as ThemeEnum / BaseEnum.\n */\nimport type { Nilable } from \"@/types/utils\";\nimport { getItem, removeItem, setItem } from \"@/utils/lstorage\";\n\nimport { BASE_STORAGE_KEY, BASE_VALUES, BaseEnum, COLOR_STORAGE_KEY, THEME_VALUES, ThemeEnum } from \"../types\";\n\nexport function getThemeColorStorage(): Nilable<ThemeEnum> {\n const raw = getItem(COLOR_STORAGE_KEY);\n if (raw == null) return raw;\n return (THEME_VALUES as readonly string[]).includes(raw) ? (raw as ThemeEnum) : undefined;\n}\n\nexport function setThemeColorStorage(value: ThemeEnum): void {\n setItem(COLOR_STORAGE_KEY, value);\n}\n\nexport function getThemeBaseStorage(): Nilable<BaseEnum> {\n const raw = getItem(BASE_STORAGE_KEY);\n if (raw == null) return raw;\n return BASE_VALUES.includes(raw as BaseEnum) ? (raw as BaseEnum) : undefined;\n}\n\nexport function setThemeBaseStorage(value: BaseEnum): void {\n setItem(BASE_STORAGE_KEY, value);\n}\n\nexport function removeThemeStorage(): void {\n removeItem(COLOR_STORAGE_KEY);\n removeItem(BASE_STORAGE_KEY);\n}\n","import type { Theme, ThemeEnum } from \"../types\";\nimport { setThemeColorStorage } from \"../utils\";\nimport { useEffect } from \"react\";\n\n/**\n * 将当前主题变量注入到 document 的 CSS Variables,并持久化主题名到 localStorage。\n * Injects current theme variables into document CSS custom properties and persists theme name to localStorage.\n *\n * @param currentTheme - 完整主题对象(颜色 + 基础)。Full theme (colors + base).\n * @param themeName - 当前主题枚举名,用于持久化。Current theme enum key for persistence.\n */\nconst useThemeVariables = (currentTheme: Theme, themeName: ThemeEnum) => {\n useEffect(() => {\n const root = document.documentElement;\n const vars = currentTheme.colors.variables;\n const base = currentTheme.base.variables;\n\n // 主色与语义色 / Primary and semantic colors\n root.style.setProperty(\"--color-primary\", vars.primary);\n root.style.setProperty(\"--color-primary-light\", vars.primaryLight);\n root.style.setProperty(\"--color-primary-fg\", vars.primaryFg);\n root.style.setProperty(\"--color-success\", vars.success);\n root.style.setProperty(\"--color-success-light\", vars.successLight);\n root.style.setProperty(\"--color-info\", vars.info);\n root.style.setProperty(\"--color-info-light\", vars.infoLight);\n root.style.setProperty(\"--color-warning\", vars.warning);\n root.style.setProperty(\"--color-warning-light\", vars.warningLight);\n root.style.setProperty(\"--color-danger\", vars.danger);\n root.style.setProperty(\"--color-danger-light\", vars.dangerLight);\n\n // 背景色 / Background\n root.style.setProperty(\"--color-bg\", vars.bg);\n root.style.setProperty(\"--color-bg-2\", vars.bg2);\n root.style.setProperty(\"--color-bg-3\", vars.bg3);\n root.style.setProperty(\"--color-bg-4\", vars.bg4);\n\n // 边框色 / Border\n root.style.setProperty(\"--color-border\", vars.border);\n root.style.setProperty(\"--color-border-2\", vars.border2);\n root.style.setProperty(\"--color-border-3\", vars.border3);\n root.style.setProperty(\"--color-border-4\", vars.border4);\n root.style.setProperty(\"--color-border-5\", vars.border5);\n\n // 文字色 / Foreground text\n root.style.setProperty(\"--color-fg\", vars.fg);\n root.style.setProperty(\"--color-fg-text\", vars.fgText);\n root.style.setProperty(\"--color-fg-heading\", vars.fgHeading);\n root.style.setProperty(\"--color-fg-highlight\", vars.fgHighlight);\n root.style.setProperty(\"--color-separator\", vars.separator);\n\n // 基础变量(圆角等)/ Base (radius, etc.)\n root.style.setProperty(\"--radius-button\", `${base.buttonRadius}px`);\n root.style.setProperty(\"--radius-card\", `${base.cardRadius}px`);\n root.style.setProperty(\"--radius-input\", `${base.inputRadius}px`);\n\n // Temperature\n vars.temperature.arcFill.forEach((v: string, i: number) => {\n root.style.setProperty(`--temperature-arc-fill-${i}`, v);\n });\n root.style.setProperty(\"--temperature-arc-empty\", vars.temperature.arcEmpty);\n root.style.setProperty(\"--temperature-thumb-bg\", vars.temperature.thumbBg);\n root.style.setProperty(\"--temperature-thumb-border\", vars.temperature.thumbBorder);\n\n // Solar\n root.style.setProperty(\"--solar-gradient-left\", vars.solar.gradientLeft);\n root.style.setProperty(\"--solar-gradient-right\", vars.solar.gradientRight);\n root.style.setProperty(\"--solar-shadow-color\", vars.solar.shadowColor);\n root.style.setProperty(\"--solar-second-series-fill\", vars.solar.secondSeriesFill);\n\n // Traffic\n root.style.setProperty(\"--traffic-tooltip-bg\", vars.traffic.tooltipBg);\n root.style.setProperty(\"--traffic-tooltip-border-color\", vars.traffic.tooltipBorderColor);\n root.style.setProperty(\"--traffic-tooltip-text-color\", vars.traffic.tooltipTextColor);\n root.style.setProperty(\"--traffic-y-axis-split-line\", vars.traffic.yAxisSplitLine);\n root.style.setProperty(\"--traffic-line-bg\", vars.traffic.lineBg);\n root.style.setProperty(\"--traffic-item-color\", vars.traffic.itemColor);\n root.style.setProperty(\"--traffic-item-border-color\", vars.traffic.itemBorderColor);\n root.style.setProperty(\"--traffic-item-emphasis-border-color\", vars.traffic.itemEmphasisBorderColor);\n root.style.setProperty(\"--traffic-shadow-line-dark-bg\", vars.traffic.shadowLineDarkBg);\n root.style.setProperty(\"--traffic-shadow-line-shadow\", vars.traffic.shadowLineShadow);\n root.style.setProperty(\"--traffic-grad-from\", vars.traffic.gradFrom);\n root.style.setProperty(\"--traffic-grad-to\", vars.traffic.gradTo);\n\n // Electricity\n root.style.setProperty(\"--electricity-tooltip-bg\", vars.electricity.tooltipBg);\n root.style.setProperty(\"--electricity-tooltip-line-color\", vars.electricity.tooltipLineColor);\n root.style.setProperty(\"--electricity-tooltip-border-color\", vars.electricity.tooltipBorderColor);\n root.style.setProperty(\"--electricity-tooltip-text-color\", vars.electricity.tooltipTextColor);\n root.style.setProperty(\"--electricity-axis-line-color\", vars.electricity.axisLineColor);\n root.style.setProperty(\"--electricity-x-axis-text-color\", vars.electricity.xAxisTextColor);\n root.style.setProperty(\"--electricity-y-axis-split-line\", vars.electricity.yAxisSplitLine);\n root.style.setProperty(\"--electricity-item-border-color\", vars.electricity.itemBorderColor);\n root.style.setProperty(\"--electricity-line-grad-from\", vars.electricity.lineGradFrom);\n root.style.setProperty(\"--electricity-line-grad-to\", vars.electricity.lineGradTo);\n root.style.setProperty(\"--electricity-line-shadow\", vars.electricity.lineShadow);\n root.style.setProperty(\"--electricity-area-grad-from\", vars.electricity.areaGradFrom);\n root.style.setProperty(\"--electricity-area-grad-to\", vars.electricity.areaGradTo);\n root.style.setProperty(\"--electricity-shadow-line-dark-bg\", vars.electricity.shadowLineDarkBg);\n\n // ECharts\n root.style.setProperty(\"--echarts-bg\", vars.echarts.bg);\n root.style.setProperty(\"--echarts-text-color\", vars.echarts.textColor);\n root.style.setProperty(\"--echarts-axis-line-color\", vars.echarts.axisLineColor);\n root.style.setProperty(\"--echarts-split-line-color\", vars.echarts.splitLineColor);\n root.style.setProperty(\"--echarts-item-hover-shadow-color\", vars.echarts.itemHoverShadowColor);\n root.style.setProperty(\"--echarts-tooltip-bg-color\", vars.echarts.tooltipBackgroundColor);\n\n // ChartJS\n root.style.setProperty(\"--chartjs-axis-line-color\", vars.chartjs.axisLineColor);\n root.style.setProperty(\"--chartjs-text-color\", vars.chartjs.textColor);\n\n setThemeColorStorage(themeName);\n }, [themeName, currentTheme]);\n};\n\nexport default useThemeVariables;\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Android 风格圆角(如 6) */\nexport const androidBaseVariables: BaseVariables = {\n buttonRadius: 6,\n cardRadius: 6,\n inputRadius: 6,\n};\n\nexport const androidBaseTheme: BaseTheme = {\n name: BaseEnum.ANDROID,\n displayName: \"Android\",\n variables: androidBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** 默认基础变量(跨平台通用) */\nexport const defaultBaseVariables: BaseVariables = {\n buttonRadius: 8,\n cardRadius: 8,\n inputRadius: 6,\n};\n\n/** 默认基础主题 */\nexport const defaultBaseTheme: BaseTheme = {\n name: BaseEnum.DEFAULT,\n displayName: \"Default\",\n variables: defaultBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** iOS 风格圆角(较大,如 24) */\nexport const iosBaseVariables: BaseVariables = {\n buttonRadius: 24,\n cardRadius: 24,\n inputRadius: 24,\n};\n\nexport const iosBaseTheme: BaseTheme = {\n name: BaseEnum.IOS,\n displayName: \"iOS\",\n variables: iosBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Linux 风格圆角(较小,如 4) */\nexport const linuxBaseVariables: BaseVariables = {\n buttonRadius: 4,\n cardRadius: 4,\n inputRadius: 4,\n};\n\nexport const linuxBaseTheme: BaseTheme = {\n name: BaseEnum.LINUX,\n displayName: \"Linux\",\n variables: linuxBaseVariables,\n};\n","import type { BaseTheme, BaseVariables } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\n\n/** Windows 风格圆角(如 6) */\nexport const windowsBaseVariables: BaseVariables = {\n buttonRadius: 6,\n cardRadius: 6,\n inputRadius: 6,\n};\n\nexport const windowsBaseTheme: BaseTheme = {\n name: BaseEnum.WINDOWS,\n displayName: \"Windows\",\n variables: windowsBaseVariables,\n};\n","import type { BaseTheme } from \"../../types\";\n\nimport { BaseEnum } from \"../../types\";\nimport { androidBaseTheme } from \"./android\";\nimport { defaultBaseTheme } from \"./default\";\nimport { iosBaseTheme } from \"./ios\";\nimport { linuxBaseTheme } from \"./linux\";\nimport { windowsBaseTheme } from \"./windows\";\n\nexport const bases: Record<BaseEnum, BaseTheme> = {\n [BaseEnum.DEFAULT]: defaultBaseTheme,\n [BaseEnum.IOS]: iosBaseTheme,\n [BaseEnum.ANDROID]: androidBaseTheme,\n [BaseEnum.WINDOWS]: windowsBaseTheme,\n [BaseEnum.LINUX]: linuxBaseTheme,\n};\n\nexport { defaultBaseTheme, defaultBaseVariables } from \"./default\";\nexport { iosBaseTheme, iosBaseVariables } from \"./ios\";\nexport { androidBaseTheme, androidBaseVariables } from \"./android\";\nexport { windowsBaseTheme, windowsBaseVariables } from \"./windows\";\nexport { linuxBaseTheme, linuxBaseVariables } from \"./linux\";\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Coffee 主题 - 基于 8 色盘重新设计\n * 色盘:奶油 #F8F4E1 | 浅灰米 #E4E0E1 | 浅棕 #D6C0B3 | 中棕 #AB886D / #AF8F6F\n * 深棕 #74512D | 暗棕 #493628 | 最深 #543310\n * 深棕背景 + 奶油/米色文字,语义色保持棕/绿棕/红棕调\n */\nexport const coffeeColorTheme: ColorTheme = {\n name: \"coffee\",\n displayName: \"Coffee\",\n variables: {\n // 主色 - 奶油/拿铁系\n primary: \"#AF8F6F\",\n primaryLight: \"#F8F4E1\",\n primaryFg: \"#2a1f18\",\n\n // 语义色 - 棕调配色(微调以协调)\n success: \"#6d8f72\",\n successLight: \"#8aaa8e\",\n info: \"#8a7a6a\",\n infoLight: \"#a89888\",\n warning: \"#b8926a\",\n warningLight: \"#d4b896\",\n danger: \"#a65d5d\",\n dangerLight: \"#c07d7d\",\n\n // 背景 - 由深到浅:最深 → #543310 → #493628 → #74512D\n bg: \"#2e1a08\",\n bg2: \"#543310\",\n bg3: \"#493628\",\n bg4: \"#74512D\",\n\n // 边框 - 深棕到浅米\n border: \"#493628\",\n border2: \"#543310\",\n border3: \"#74512D\",\n border4: \"#AF8F6F\",\n border5: \"#D6C0B3\",\n\n // 文字\n fg: \"#AF8F6F\",\n fgText: \"#F8F4E1\",\n fgHeading: \"#F8F4E1\",\n fgHighlight: \"#E4E0E1\",\n\n separator: \"#493628\",\n\n temperature: {\n arcFill: [\"#AF8F6F\", \"#AB886D\", \"#D6C0B3\", \"#E4E0E1\", \"#F8F4E1\"],\n arcEmpty: \"#543310\",\n thumbBg: \"#493628\",\n thumbBorder: \"#AF8F6F\",\n },\n\n solar: {\n gradientLeft: \"#AF8F6F\",\n gradientRight: \"#F8F4E1\",\n shadowColor: \"rgba(0, 0, 0, 0.35)\",\n secondSeriesFill: \"#493628\",\n },\n\n traffic: {\n tooltipBg: \"#74512D\",\n tooltipBorderColor: \"#AF8F6F\",\n tooltipTextColor: \"#F8F4E1\",\n yAxisSplitLine: \"#543310\",\n lineBg: \"#493628\",\n itemColor: \"#543310\",\n itemBorderColor: \"#AF8F6F\",\n itemEmphasisBorderColor: \"#F8F4E1\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#493628\",\n gradTo: \"#2e1a08\",\n },\n\n electricity: {\n tooltipBg: \"#543310\",\n tooltipLineColor: \"#F8F4E1\",\n tooltipBorderColor: \"#AF8F6F\",\n tooltipTextColor: \"#F8F4E1\",\n axisLineColor: \"#AF8F6F\",\n xAxisTextColor: \"#AF8F6F\",\n yAxisSplitLine: \"#543310\",\n itemBorderColor: \"#AF8F6F\",\n lineGradFrom: \"#AF8F6F\",\n lineGradTo: \"#F8F4E1\",\n lineShadow: \"rgba(175, 143, 111, 0.3)\",\n areaGradFrom: \"#493628\",\n areaGradTo: \"#2e1a08\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#2e1a08\",\n textColor: \"#F8F4E1\",\n axisLineColor: \"#AF8F6F\",\n splitLineColor: \"#493628\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#543310\",\n },\n\n chartjs: {\n axisLineColor: \"#AF8F6F\",\n textColor: \"#F8F4E1\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\nexport const corporateColorTheme: ColorTheme = {\n name: \"corporate\",\n displayName: \"Corporate\",\n variables: {\n // 基础颜色\n primary: \"#3366ff\",\n primaryLight: \"#598bff\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#ffffff\",\n bg2: \"#f7f9fc\",\n bg3: \"#edf1f7\",\n bg4: \"#e4e9f2\",\n\n // 边框色\n border: \"#ffffff\",\n border2: \"#f7f9fc\",\n border3: \"#edf1f7\",\n border4: \"#e4e9f2\",\n border5: \"#c5cee0\",\n\n // 文字色\n fg: \"#8f9bb3\",\n fgText: \"#222b45\",\n fgHeading: \"#192038\",\n fgHighlight: \"#003694\",\n\n // 分隔符\n separator: \"#edf1f7\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#ffa36b\", \"#ffa36b\", \"#ff9e7a\", \"#ff9888\", \"#ff8ea0\"],\n arcEmpty: \"#f7f9fc\",\n thumbBg: \"#f7f9fc\",\n thumbBorder: \"#ffa36b\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#3366ff\",\n gradientRight: \"#3366ff\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#f7f9fc\",\n },\n\n traffic: {\n tooltipBg: \"#ffffff\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n yAxisSplitLine: \"rgba(0, 0, 0, 0)\",\n lineBg: \"#3366ff\",\n itemColor: \"#e4e9f2\",\n itemBorderColor: \"#e4e9f2\",\n itemEmphasisBorderColor: \"#598bff\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#ffffff\",\n gradTo: \"#ffffff\",\n },\n\n electricity: {\n tooltipBg: \"#ffffff\",\n tooltipLineColor: \"#222b45\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n axisLineColor: \"#edf1f7\",\n xAxisTextColor: \"#8f9bb3\",\n yAxisSplitLine: \"#edf1f7\",\n itemBorderColor: \"#3366ff\",\n lineGradFrom: \"#3366ff\",\n lineGradTo: \"#3366ff\",\n lineShadow: \"rgba(0, 0, 0, 0)\",\n areaGradFrom: \"rgba(0, 0, 0, 0)\",\n areaGradTo: \"rgba(0, 0, 0, 0)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#ffffff\",\n textColor: \"#222b45\",\n axisLineColor: \"#222b45\",\n splitLineColor: \"#edf1f7\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#3366ff\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#edf1f7\",\n textColor: \"#222b45\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\nexport const cosmicColorTheme: ColorTheme = {\n name: \"cosmic\",\n displayName: \"Cosmic\",\n variables: {\n // 基础颜色\n primary: \"#a16eff\",\n primaryLight: \"#b489ff\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#323259\",\n bg2: \"#2a2a48\",\n bg3: \"#272741\",\n bg4: \"#1f1f3a\",\n\n // 边框色\n border: \"#323259\",\n border2: \"#2a2a48\",\n border3: \"#272741\",\n border4: \"#1f1f3a\",\n border5: \"#1f1f3a\",\n\n // 文字色\n fg: \"#b4b4db\",\n fgText: \"#ffffff\",\n fgHeading: \"#ffffff\",\n fgHighlight: \"#a16eff\",\n\n // 分隔符\n separator: \"#2a2a48\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#2ec7fe\", \"#31ffad\", \"#7bff24\", \"#fff024\", \"#f7bd59\"],\n arcEmpty: \"#2a2a48\",\n thumbBg: \"#ffffff\",\n thumbBorder: \"#ffffff\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#a16eff\",\n gradientRight: \"#a16eff\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#2a2a48\",\n },\n\n traffic: {\n tooltipBg: \"#323259\",\n tooltipBorderColor: \"#2a2a48\",\n tooltipTextColor: \"#ffffff\",\n yAxisSplitLine: \"#2a2a48\",\n lineBg: \"#2a2a48\",\n itemColor: \"#2a2a48\",\n itemBorderColor: \"#2a2a48\",\n itemEmphasisBorderColor: \"#a16eff\",\n shadowLineDarkBg: \"#272741\",\n shadowLineShadow: \"#272741\",\n gradFrom: \"#323259\",\n gradTo: \"#2a2a48\",\n },\n\n electricity: {\n tooltipBg: \"#323259\",\n tooltipLineColor: \"#ffffff\",\n tooltipBorderColor: \"#2a2a48\",\n tooltipTextColor: \"#ffffff\",\n axisLineColor: \"#272741\",\n xAxisTextColor: \"#b4b4db\",\n yAxisSplitLine: \"#2a2a48\",\n itemBorderColor: \"#2a2a48\",\n lineGradFrom: \"#00d68f\",\n lineGradTo: \"#ffaa00\",\n lineShadow: \"#1f1f3a\",\n areaGradFrom: \"#2a2a48\",\n areaGradTo: \"#272741\",\n shadowLineDarkBg: \"#272741\",\n },\n\n echarts: {\n bg: \"#323259\",\n textColor: \"#ffffff\",\n axisLineColor: \"#ffffff\",\n splitLineColor: \"#2a2a48\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#a16eff\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#2a2a48\",\n textColor: \"#ffffff\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Dark 主题 - 重新设计\n * - 背景层级分明(base → surface → elevated)\n * - 边框可见且不刺眼\n * - 主色为蓝色强调,语义色适配深色背景\n * - 文字对比度符合可读性\n */\nexport const darkColorTheme: ColorTheme = {\n name: \"dark\",\n displayName: \"Dark\",\n variables: {\n // 主色 - 金黄色/琥珀色\n primary: \"#d4a017\",\n primaryLight: \"#eab308\",\n primaryFg: \"#1a1a1a\",\n\n // 语义色 - 深色模式、无蓝色,info 用青绿区分\n success: \"#22c55e\",\n successLight: \"#4ade80\",\n info: \"#14b8a6\",\n infoLight: \"#2dd4bf\",\n warning: \"#eab308\",\n warningLight: \"#facc15\",\n danger: \"#ef4444\",\n dangerLight: \"#f87171\",\n\n // 背景色 - 明确层级(由深到浅)\n bg: \"#0f0f11\",\n bg2: \"#18181b\",\n bg3: \"#27272a\",\n bg4: \"#3f3f46\",\n\n // 边框色 - 与背景区分,便于识别边界\n border: \"#18181b\",\n border2: \"#27272a\",\n border3: \"#3f3f46\",\n border4: \"#52525b\",\n border5: \"#71717a\",\n\n // 文字色 - 主文白、标题更亮、辅助文灰\n fg: \"#a1a1aa\",\n fgText: \"#fafafa\",\n fgHeading: \"#ffffff\",\n fgHighlight: \"#fde047\",\n\n // 分隔线\n separator: \"#27272a\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#d4a017\", \"#eab308\", \"#fcd34d\", \"#fde047\", \"#fde047\"],\n arcEmpty: \"#27272a\",\n thumbBg: \"#27272a\",\n thumbBorder: \"#52525b\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"#d4a017\",\n gradientRight: \"#eab308\",\n shadowColor: \"rgba(0, 0, 0, 0.3)\",\n secondSeriesFill: \"#27272a\",\n },\n\n traffic: {\n tooltipBg: \"#27272a\",\n tooltipBorderColor: \"#3f3f46\",\n tooltipTextColor: \"#fafafa\",\n yAxisSplitLine: \"#27272a\",\n lineBg: \"#3f3f46\",\n itemColor: \"#3f3f46\",\n itemBorderColor: \"#52525b\",\n itemEmphasisBorderColor: \"#eab308\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#27272a\",\n gradTo: \"#18181b\",\n },\n\n electricity: {\n tooltipBg: \"#27272a\",\n tooltipLineColor: \"#fafafa\",\n tooltipBorderColor: \"#3f3f46\",\n tooltipTextColor: \"#fafafa\",\n axisLineColor: \"#3f3f46\",\n xAxisTextColor: \"#a1a1aa\",\n yAxisSplitLine: \"#27272a\",\n itemBorderColor: \"#eab308\",\n lineGradFrom: \"#d4a017\",\n lineGradTo: \"#eab308\",\n lineShadow: \"rgba(212, 160, 23, 0.35)\",\n areaGradFrom: \"#27272a\",\n areaGradTo: \"#18181b\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#18181b\",\n textColor: \"#fafafa\",\n axisLineColor: \"#52525b\",\n splitLineColor: \"#27272a\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#27272a\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#3f3f46\",\n textColor: \"#fafafa\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n// 基于 ReX-App 的 light.ts 红色系配色创建的 default 主题\nexport const defaultColorTheme: ColorTheme = {\n name: \"default\",\n displayName: \"Default\",\n variables: {\n // 基础颜色 - 红色系\n primary: \"rgb(250, 30, 22)\", // #FA1E16 鲜红色\n primaryLight: \"rgb(255, 120, 120)\", // 浅红色\n primaryFg: \"#ffffff\",\n success: \"rgb(62, 168, 30)\", // 浅绿色(对比色)\n successLight: \"rgb(220, 255, 210)\",\n info: \"rgb(255, 160, 150)\", // 亮橙红\n infoLight: \"rgb(255, 200, 180)\",\n warning: \"rgb(248, 104, 7)\", // 明亮橙色\n warningLight: \"rgb(255, 140, 60)\",\n danger: \"rgb(211, 17, 11)\", // 深红色\n dangerLight: \"rgb(243, 70, 64)\",\n\n // 背景色 - 浅色系\n bg: \"rgb(250, 250, 250)\", // 纯白\n bg2: \"rgb(245, 245, 245)\",\n bg3: \"rgb(226, 224, 224)\",\n bg4: \"rgb(207, 207, 207)\",\n\n // 边框色\n border: \"rgb(250, 250, 250)\",\n border2: \"rgb(245, 245, 245)\",\n border3: \"rgb(226, 224, 224)\",\n border4: \"rgb(207, 207, 207)\",\n border5: \"rgb(136, 136, 136)\",\n\n // 文字色\n fg: \"rgb(136, 136, 136)\", // 灰色文字\n fgText: \"rgb(22, 21, 21)\", // 黑色文字\n fgHeading: \"rgb(0, 0, 0)\", // 纯黑标题\n fgHighlight: \"rgb(250, 30, 22)\", // 红色高亮\n\n // 分隔符\n separator: \"rgb(226, 224, 224)\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\n \"rgb(255, 210, 210)\", // 非常浅的淡红\n \"rgb(255, 200, 160)\", // 柔和杏色\n \"rgb(255, 160, 150)\", // 更偏亮橙红\n \"rgb(255, 120, 120)\", // 浅红\n \"rgb(250, 30, 22)\", // 主红色\n ],\n arcEmpty: \"rgb(245, 245, 245)\",\n thumbBg: \"rgb(245, 245, 245)\",\n thumbBorder: \"rgb(250, 30, 22)\",\n },\n\n // Solar\n solar: {\n gradientLeft: \"rgb(250, 30, 22)\",\n gradientRight: \"rgb(248, 104, 7)\",\n shadowColor: \"rgba(250, 30, 22, 0.1)\",\n secondSeriesFill: \"rgb(245, 245, 245)\",\n },\n\n traffic: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n lineBg: \"rgb(207, 207, 207)\",\n itemColor: \"rgb(207, 207, 207)\",\n itemBorderColor: \"rgb(207, 207, 207)\",\n itemEmphasisBorderColor: \"rgb(250, 30, 22)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"rgb(245, 245, 245)\",\n gradTo: \"rgb(245, 245, 245)\",\n },\n\n electricity: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipLineColor: \"rgb(22, 21, 21)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(226, 224, 224)\",\n xAxisTextColor: \"rgb(136, 136, 136)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n itemBorderColor: \"rgb(250, 30, 22)\",\n lineGradFrom: \"rgb(250, 30, 22)\",\n lineGradTo: \"rgb(248, 104, 7)\",\n lineShadow: \"rgba(250, 30, 22, 0.2)\",\n areaGradFrom: \"rgba(250, 30, 22, 0.1)\",\n areaGradTo: \"rgba(250, 30, 22, 0.05)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"rgb(250, 250, 250)\",\n textColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(136, 136, 136)\",\n splitLineColor: \"rgb(226, 224, 224)\",\n itemHoverShadowColor: \"rgba(250, 30, 22, 0.3)\",\n tooltipBackgroundColor: \"rgb(250, 30, 22)\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"rgb(226, 224, 224)\",\n textColor: \"rgb(22, 21, 21)\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Forest 主题 - 森林绿配色\n * - 主色:翠绿 #1F7A5A,按钮、链接、强调\n * - 深绿底 + 浅绿层级\n */\nexport const forestColorTheme: ColorTheme = {\n name: \"forest\",\n displayName: \"Forest\",\n variables: {\n primary: \"#1F7A5A\",\n primaryLight: \"#E6F2EE\",\n primaryFg: \"#FFFFFF\",\n\n success: \"#1F7A5A\",\n successLight: \"#E6F2EE\",\n\n info: \"#2563EB\",\n infoLight: \"#E8F0FF\",\n\n warning: \"#B45309\",\n warningLight: \"#FFF4E5\",\n\n danger: \"#B42318\",\n dangerLight: \"#FDECEC\",\n\n // ===== Backgrounds (White-based) =====\n bg: \"#FFFFFF\",\n bg2: \"#F7F9F8\",\n bg3: \"#EEF3F1\",\n bg4: \"#E6EFEC\",\n\n // ===== Borders (subtle greys w/ green hint) =====\n border: \"#E5E7EB\",\n border2: \"#D1D5DB\",\n border3: \"#C7D2CF\",\n border4: \"#B6C4BF\",\n border5: \"#1F7A5A\", // strong focus border\n\n // ===== Text =====\n fg: \"#111827\",\n fgText: \"#374151\",\n fgHeading: \"#0F172A\",\n fgHighlight: \"#1F7A5A\",\n separator: \"#E5E7EB\",\n\n temperature: {\n arcFill: [\"#E6F2EE\", \"#A7D8C6\", \"#4AA987\", \"#1F7A5A\", \"#145A43\"],\n arcEmpty: \"#E5E7EB\",\n thumbBg: \"#1F7A5A\",\n thumbBorder: \"#145A43\",\n },\n\n solar: {\n gradientLeft: \"#E6F2EE\",\n gradientRight: \"#1F7A5A\",\n shadowColor: \"rgba(31, 122, 90, 0.25)\",\n secondSeriesFill: \"#A7D8C6\",\n },\n\n traffic: {\n tooltipBg: \"#FFFFFF\",\n tooltipBorderColor: \"#E5E7EB\",\n tooltipTextColor: \"#111827\",\n yAxisSplitLine: \"#E5E7EB\",\n lineBg: \"rgba(31, 122, 90, 0.08)\",\n itemColor: \"#1F7A5A\",\n itemBorderColor: \"#145A43\",\n itemEmphasisBorderColor: \"#0E5A41\",\n shadowLineDarkBg: \"rgba(31, 122, 90, 0.15)\",\n shadowLineShadow: \"rgba(31, 122, 90, 0.20)\",\n gradFrom: \"#E6F2EE\",\n gradTo: \"#1F7A5A\",\n },\n\n electricity: {\n tooltipBg: \"#FFFFFF\",\n tooltipLineColor: \"#1F7A5A\",\n tooltipBorderColor: \"#E5E7EB\",\n tooltipTextColor: \"#111827\",\n axisLineColor: \"#D1D5DB\",\n xAxisTextColor: \"#374151\",\n yAxisSplitLine: \"#E5E7EB\",\n itemBorderColor: \"#145A43\",\n lineGradFrom: \"#E6F2EE\",\n lineGradTo: \"#1F7A5A\",\n lineShadow: \"rgba(31, 122, 90, 0.25)\",\n areaGradFrom: \"rgba(31, 122, 90, 0.25)\",\n areaGradTo: \"rgba(31, 122, 90, 0.00)\",\n shadowLineDarkBg: \"rgba(31, 122, 90, 0.10)\",\n },\n\n echarts: {\n bg: \"#FFFFFF\",\n textColor: \"#111827\",\n axisLineColor: \"#D1D5DB\",\n splitLineColor: \"#E5E7EB\",\n itemHoverShadowColor: \"rgba(31, 122, 90, 0.25)\",\n tooltipBackgroundColor: \"#FFFFFF\",\n },\n\n chartjs: {\n axisLineColor: \"#D1D5DB\",\n textColor: \"#111827\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n// 原 ngx-admin 的 default 主题(浅灰蓝色风格)\nexport const lightColorTheme: ColorTheme = {\n name: \"light\",\n displayName: \"Light\",\n variables: {\n // 基础颜色 - 黑白对比色系\n primary: \"#222b45\",\n primaryLight: \"#192038\",\n primaryFg: \"#ffffff\",\n success: \"#00d68f\",\n successLight: \"#33dfaa\",\n info: \"#0095ff\",\n infoLight: \"#33a7ff\",\n warning: \"#ffaa00\",\n warningLight: \"#ffbb33\",\n danger: \"#ff3d71\",\n dangerLight: \"#ff6491\",\n\n // 背景色\n bg: \"#ffffff\",\n bg2: \"#f7f9fc\",\n bg3: \"#edf1f7\",\n bg4: \"#e4e9f2\",\n\n // 边框色\n border: \"#ffffff\",\n border2: \"#f7f9fc\",\n border3: \"#edf1f7\",\n border4: \"#e4e9f2\",\n border5: \"#c5cee0\",\n\n // 文字色\n fg: \"#8f9bb3\",\n fgText: \"#222b45\",\n fgHeading: \"#192038\",\n fgHighlight: \"#003694\",\n\n // 分隔符\n separator: \"#edf1f7\",\n\n // 扩展配置 - Temperature\n temperature: {\n arcFill: [\"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\", \"#8f9bb3\"],\n arcEmpty: \"#f7f9fc\",\n thumbBg: \"#f7f9fc\",\n thumbBorder: \"#8f9bb3\",\n },\n\n solar: {\n gradientLeft: \"#8f9bb3\",\n gradientRight: \"#8f9bb3\",\n shadowColor: \"rgba(0, 0, 0, 0)\",\n secondSeriesFill: \"#f7f9fc\",\n },\n\n traffic: {\n tooltipBg: \"#ffffff\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n yAxisSplitLine: \"#edf1f7\",\n lineBg: \"#e4e9f2\",\n itemColor: \"#e4e9f2\",\n itemBorderColor: \"#e4e9f2\",\n itemEmphasisBorderColor: \"#8f9bb3\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#f7f9fc\",\n gradTo: \"#f7f9fc\",\n },\n\n electricity: {\n tooltipBg: \"#ffffff\",\n tooltipLineColor: \"#222b45\",\n tooltipBorderColor: \"#f7f9fc\",\n tooltipTextColor: \"#222b45\",\n axisLineColor: \"#edf1f7\",\n xAxisTextColor: \"#8f9bb3\",\n yAxisSplitLine: \"#edf1f7\",\n itemBorderColor: \"#8f9bb3\",\n lineGradFrom: \"#8f9bb3\",\n lineGradTo: \"#8f9bb3\",\n lineShadow: \"rgba(0, 0, 0, 0)\",\n areaGradFrom: \"#f7f9fc\",\n areaGradTo: \"#f7f9fc\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#ffffff\",\n textColor: \"#222b45\",\n axisLineColor: \"#222b45\",\n splitLineColor: \"#edf1f7\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.5)\",\n tooltipBackgroundColor: \"#8f9bb3\",\n },\n\n // ChartJS\n chartjs: {\n axisLineColor: \"#edf1f7\",\n textColor: \"#222b45\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/** 麦田:在 default 基础上将白红色系改为金黄色系 */\nexport const wheatColorTheme: ColorTheme = {\n name: \"wheat\",\n displayName: \"麦田\",\n variables: {\n // 主色 - 金黄色系\n primary: \"rgb(201, 162, 39)\", // #C9A227 金黄\n primaryLight: \"rgb(230, 200, 120)\", // 浅金黄\n primaryFg: \"#ffffff\",\n success: \"rgb(62, 168, 30)\",\n successLight: \"rgb(220, 255, 210)\",\n info: \"rgb(220, 180, 80)\", // 暖金\n infoLight: \"rgb(255, 235, 180)\",\n warning: \"rgb(218, 165, 32)\", // 深金\n warningLight: \"rgb(255, 215, 120)\",\n danger: \"rgb(180, 130, 20)\", // 深褐金\n dangerLight: \"rgb(220, 180, 80)\",\n\n // 背景色 - 浅色系(与 default 一致)\n bg: \"rgb(250, 250, 250)\",\n bg2: \"rgb(245, 245, 245)\",\n bg3: \"rgb(226, 224, 224)\",\n bg4: \"rgb(207, 207, 207)\",\n\n border: \"rgb(250, 250, 250)\",\n border2: \"rgb(245, 245, 245)\",\n border3: \"rgb(226, 224, 224)\",\n border4: \"rgb(207, 207, 207)\",\n border5: \"rgb(136, 136, 136)\",\n\n fg: \"rgb(136, 136, 136)\",\n fgText: \"rgb(22, 21, 21)\",\n fgHeading: \"rgb(0, 0, 0)\",\n fgHighlight: \"rgb(201, 162, 39)\", // 金黄高亮\n\n separator: \"rgb(226, 224, 224)\",\n\n temperature: {\n arcFill: [\n \"rgb(255, 245, 210)\",\n \"rgb(255, 235, 180)\",\n \"rgb(255, 220, 150)\",\n \"rgb(230, 200, 120)\",\n \"rgb(201, 162, 39)\",\n ],\n arcEmpty: \"rgb(245, 245, 245)\",\n thumbBg: \"rgb(245, 245, 245)\",\n thumbBorder: \"rgb(201, 162, 39)\",\n },\n\n solar: {\n gradientLeft: \"rgb(201, 162, 39)\",\n gradientRight: \"rgb(218, 165, 32)\",\n shadowColor: \"rgba(201, 162, 39, 0.1)\",\n secondSeriesFill: \"rgb(245, 245, 245)\",\n },\n\n traffic: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n lineBg: \"rgb(207, 207, 207)\",\n itemColor: \"rgb(207, 207, 207)\",\n itemBorderColor: \"rgb(207, 207, 207)\",\n itemEmphasisBorderColor: \"rgb(201, 162, 39)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"rgb(245, 245, 245)\",\n gradTo: \"rgb(245, 245, 245)\",\n },\n\n electricity: {\n tooltipBg: \"rgb(250, 250, 250)\",\n tooltipLineColor: \"rgb(22, 21, 21)\",\n tooltipBorderColor: \"rgb(245, 245, 245)\",\n tooltipTextColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(226, 224, 224)\",\n xAxisTextColor: \"rgb(136, 136, 136)\",\n yAxisSplitLine: \"rgb(226, 224, 224)\",\n itemBorderColor: \"rgb(201, 162, 39)\",\n lineGradFrom: \"rgb(201, 162, 39)\",\n lineGradTo: \"rgb(218, 165, 32)\",\n lineShadow: \"rgba(201, 162, 39, 0.2)\",\n areaGradFrom: \"rgba(201, 162, 39, 0.1)\",\n areaGradTo: \"rgba(201, 162, 39, 0.05)\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"rgb(250, 250, 250)\",\n textColor: \"rgb(22, 21, 21)\",\n axisLineColor: \"rgb(136, 136, 136)\",\n splitLineColor: \"rgb(226, 224, 224)\",\n itemHoverShadowColor: \"rgba(201, 162, 39, 0.3)\",\n tooltipBackgroundColor: \"rgb(201, 162, 39)\",\n },\n\n chartjs: {\n axisLineColor: \"rgb(226, 224, 224)\",\n textColor: \"rgb(22, 21, 21)\",\n },\n },\n};\n","import type { ColorTheme } from \"../../types\";\n\n/**\n * Wine 主题(深色)- 8 色盘(Burgundy 体系)\n * #2A0B12 Background | #3A0F1A Surface | #4A1322 Secondary | #800020 Primary\n * #9A1F3D Primary Hover | #B23A5C Accent | #C97A8A Muted Highlight | #F4E6E9 Text\n */\nexport const wineColorTheme: ColorTheme = {\n name: \"wine\",\n displayName: \"Wine\",\n variables: {\n primary: \"#800020\",\n primaryLight: \"#F4E6E9\",\n primaryFg: \"#F4E6E9\",\n\n success: \"#6b8f6b\",\n successLight: \"#8aaa8e\",\n info: \"#8a6a6a\",\n infoLight: \"#a88a8a\",\n warning: \"#c49050\",\n warningLight: \"#d4b080\",\n danger: \"#b85050\",\n dangerLight: \"#d07070\",\n\n bg: \"#2A0B12\",\n bg2: \"#3A0F1A\",\n bg3: \"#4A1322\",\n bg4: \"#4A1322\",\n\n border: \"#2A0B12\",\n border2: \"#3A0F1A\",\n border3: \"#4A1322\",\n border4: \"#800020\",\n border5: \"#B23A5C\",\n\n fg: \"#C97A8A\",\n fgText: \"#F4E6E9\",\n fgHeading: \"#F4E6E9\",\n fgHighlight: \"#F4E6E9\",\n\n separator: \"#3A0F1A\",\n\n temperature: {\n arcFill: [\"#800020\", \"#9A1F3D\", \"#B23A5C\", \"#C97A8A\", \"#F4E6E9\"],\n arcEmpty: \"#2A0B12\",\n thumbBg: \"#3A0F1A\",\n thumbBorder: \"#800020\",\n },\n\n solar: {\n gradientLeft: \"#800020\",\n gradientRight: \"#F4E6E9\",\n shadowColor: \"rgba(0, 0, 0, 0.4)\",\n secondSeriesFill: \"#3A0F1A\",\n },\n\n traffic: {\n tooltipBg: \"#4A1322\",\n tooltipBorderColor: \"#B23A5C\",\n tooltipTextColor: \"#F4E6E9\",\n yAxisSplitLine: \"#3A0F1A\",\n lineBg: \"#3A0F1A\",\n itemColor: \"#2A0B12\",\n itemBorderColor: \"#800020\",\n itemEmphasisBorderColor: \"#F4E6E9\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n shadowLineShadow: \"rgba(0, 0, 0, 0)\",\n gradFrom: \"#3A0F1A\",\n gradTo: \"#2A0B12\",\n },\n\n electricity: {\n tooltipBg: \"#3A0F1A\",\n tooltipLineColor: \"#F4E6E9\",\n tooltipBorderColor: \"#800020\",\n tooltipTextColor: \"#F4E6E9\",\n axisLineColor: \"#B23A5C\",\n xAxisTextColor: \"#C97A8A\",\n yAxisSplitLine: \"#3A0F1A\",\n itemBorderColor: \"#800020\",\n lineGradFrom: \"#800020\",\n lineGradTo: \"#F4E6E9\",\n lineShadow: \"rgba(128, 0, 32, 0.35)\",\n areaGradFrom: \"#3A0F1A\",\n areaGradTo: \"#2A0B12\",\n shadowLineDarkBg: \"rgba(0, 0, 0, 0)\",\n },\n\n echarts: {\n bg: \"#2A0B12\",\n textColor: \"#F4E6E9\",\n axisLineColor: \"#B23A5C\",\n splitLineColor: \"#3A0F1A\",\n itemHoverShadowColor: \"rgba(0, 0, 0, 0.4)\",\n tooltipBackgroundColor: \"#3A0F1A\",\n },\n\n chartjs: {\n axisLineColor: \"#B23A5C\",\n textColor: \"#F4E6E9\",\n },\n },\n};\n","import type { Theme } from \"../../types\";\n\nimport { ThemeEnum } from \"../../types\";\nimport { defaultBaseTheme } from \"../bases/default\";\nimport { coffeeColorTheme } from \"./coffee\";\nimport { corporateColorTheme } from \"./corporate\";\nimport { cosmicColorTheme } from \"./cosmic\";\nimport { darkColorTheme } from \"./dark\";\nimport { defaultColorTheme } from \"./default\";\nimport { forestColorTheme } from \"./forest\";\nimport { lightColorTheme } from \"./light\";\nimport { wheatColorTheme } from \"./wheat\";\nimport { wineColorTheme } from \"./wine\";\n\nconst defaultTheme: Theme = { colors: defaultColorTheme, base: defaultBaseTheme };\nconst lightTheme: Theme = { colors: lightColorTheme, base: defaultBaseTheme };\nconst darkTheme: Theme = { colors: darkColorTheme, base: defaultBaseTheme };\nconst cosmicTheme: Theme = { colors: cosmicColorTheme, base: defaultBaseTheme };\nconst corporateTheme: Theme = { colors: corporateColorTheme, base: defaultBaseTheme };\nconst forestTheme: Theme = { colors: forestColorTheme, base: defaultBaseTheme };\nconst coffeeTheme: Theme = { colors: coffeeColorTheme, base: defaultBaseTheme };\nconst wineTheme: Theme = { colors: wineColorTheme, base: defaultBaseTheme };\nconst wheatTheme: Theme = { colors: wheatColorTheme, base: defaultBaseTheme };\n\nexport const themes: Record<ThemeEnum, Theme> = {\n [ThemeEnum.DEFAULT]: defaultTheme,\n [ThemeEnum.LIGHT]: lightTheme,\n [ThemeEnum.DARK]: darkTheme,\n [ThemeEnum.COSMIC]: cosmicTheme,\n [ThemeEnum.CORPORATE]: corporateTheme,\n [ThemeEnum.FOREST]: forestTheme,\n [ThemeEnum.COFFEE]: coffeeTheme,\n [ThemeEnum.WINE]: wineTheme,\n [ThemeEnum.WHEAT]: wheatTheme,\n};\n\nexport { defaultTheme, lightTheme, darkTheme, cosmicTheme, corporateTheme, forestTheme, coffeeTheme, wineTheme, wheatTheme };\n","/**\n * 主题提供者:提供颜色主题与基础主题(圆角等)上下文。\n * Theme provider: provides color theme and base theme (e.g. radius) context.\n */\nimport type { Theme, ThemeProviderProps } from \"../types\";\n\nimport { memo, useMemo, useState } from \"react\";\n\nimport { ThemeContext } from \"../hooks/useTheme\";\nimport useThemeVariables from \"../hooks/useThemeVariables\";\nimport { bases } from \"../themes/bases\";\nimport { themes } from \"../themes/colors\";\nimport { getThemeBaseStorage, getThemeColorStorage, setThemeBaseStorage } from \"../utils\";\nimport { BASE_VALUES, BaseEnum, THEME_VALUES, ThemeEnum } from \"../types\";\n\nconst ThemeProvider = memo(({ children, defaultTheme = ThemeEnum.DEFAULT, defaultBase = BaseEnum.DEFAULT }: ThemeProviderProps) => {\n const [themeName, setThemeName] = useState<ThemeEnum>(() => {\n const saved = getThemeColorStorage();\n return saved != null && saved in themes ? saved : defaultTheme;\n });\n const [baseName, setBaseName] = useState<BaseEnum>(() => {\n const saved = getThemeBaseStorage();\n return saved != null ? saved : defaultBase;\n });\n\n const currentTheme = useMemo<Theme>(\n () => ({\n colors: themes[themeName].colors,\n base: bases[baseName],\n }),\n [themeName, baseName],\n );\n\n useThemeVariables(currentTheme, themeName);\n\n const setTheme = (newTheme: ThemeEnum) => {\n setThemeName(newTheme);\n };\n const setBase = (newBase: BaseEnum) => {\n setBaseName(newBase);\n setThemeBaseStorage(newBase);\n };\n\n return (\n <ThemeContext.Provider\n value={{\n currentTheme,\n themeName,\n baseName,\n setTheme,\n setBase,\n availableThemes: THEME_VALUES,\n availableBases: BASE_VALUES,\n }}\n >\n {children}\n </ThemeContext.Provider>\n );\n});\n\nThemeProvider.displayName = \"ThemeProvider\";\nexport default ThemeProvider;\n"],"mappings":";;;;;AASA,SAAgB,IAA2C;AACzD,QAAM,IAAM,EAAQ,CAAA;AACpB,SAAI,KAAO,QACH,EAAmC,SAAS,CAAA,IAD5B,IACwD;;AAGlF,SAAgB,EAAqB,GAAwB;AAC3D,EAAA,EAAQ,GAAmB,CAAA;;AAG7B,SAAgB,IAAyC;AACvD,QAAM,IAAM,EAAQ,CAAA;AACpB,SAAI,KAAO,QACJ,EAAY,SAAS,CAAA,IADJ,IAC2C;;AAGrE,SAAgB,EAAoB,GAAuB;AACzD,EAAA,EAAQ,GAAkB,CAAA;;AAG5B,SAAgB,KAA2B;AACzC,EAAA,EAAW,CAAA,GACX,EAAW,CAAA;;ACpBb,IAAM,IAAA,CAAqB,GAAqB,MAAyB;AACvE,EAAA,EAAA,MAAgB;AACd,UAAM,IAAO,SAAS,iBAChB,IAAO,EAAa,OAAO,WAC3B,IAAO,EAAa,KAAK;AAG/B,IAAA,EAAK,MAAM,YAAY,mBAAmB,EAAK,OAAA,GAC/C,EAAK,MAAM,YAAY,yBAAyB,EAAK,YAAA,GACrD,EAAK,MAAM,YAAY,sBAAsB,EAAK,SAAA,GAClD,EAAK,MAAM,YAAY,mBAAmB,EAAK,OAAA,GAC/C,EAAK,MAAM,YAAY,yBAAyB,EAAK,YAAA,GACrD,EAAK,MAAM,YAAY,gBAAgB,EAAK,IAAA,GAC5C,EAAK,MAAM,YAAY,sBAAsB,EAAK,SAAA,GAClD,EAAK,MAAM,YAAY,mBAAmB,EAAK,OAAA,GAC/C,EAAK,MAAM,YAAY,yBAAyB,EAAK,YAAA,GACrD,EAAK,MAAM,YAAY,kBAAkB,EAAK,MAAA,GAC9C,EAAK,MAAM,YAAY,wBAAwB,EAAK,WAAA,GAGpD,EAAK,MAAM,YAAY,cAAc,EAAK,EAAA,GAC1C,EAAK,MAAM,YAAY,gBAAgB,EAAK,GAAA,GAC5C,EAAK,MAAM,YAAY,gBAAgB,EAAK,GAAA,GAC5C,EAAK,MAAM,YAAY,gBAAgB,EAAK,GAAA,GAG5C,EAAK,MAAM,YAAY,kBAAkB,EAAK,MAAA,GAC9C,EAAK,MAAM,YAAY,oBAAoB,EAAK,OAAA,GAChD,EAAK,MAAM,YAAY,oBAAoB,EAAK,OAAA,GAChD,EAAK,MAAM,YAAY,oBAAoB,EAAK,OAAA,GAChD,EAAK,MAAM,YAAY,oBAAoB,EAAK,OAAA,GAGhD,EAAK,MAAM,YAAY,cAAc,EAAK,EAAA,GAC1C,EAAK,MAAM,YAAY,mBAAmB,EAAK,MAAA,GAC/C,EAAK,MAAM,YAAY,sBAAsB,EAAK,SAAA,GAClD,EAAK,MAAM,YAAY,wBAAwB,EAAK,WAAA,GACpD,EAAK,MAAM,YAAY,qBAAqB,EAAK,SAAA,GAGjD,EAAK,MAAM,YAAY,mBAAmB,GAAG,EAAK,YAAA,IAAa,GAC/D,EAAK,MAAM,YAAY,iBAAiB,GAAG,EAAK,UAAA,IAAW,GAC3D,EAAK,MAAM,YAAY,kBAAkB,GAAG,EAAK,WAAA,IAAY,GAG7D,EAAK,YAAY,QAAQ,QAAA,CAAS,GAAW,MAAc;AACzD,MAAA,EAAK,MAAM,YAAY,0BAA0B,CAAA,IAAK,CAAA;AAAA,QAExD,EAAK,MAAM,YAAY,2BAA2B,EAAK,YAAY,QAAA,GACnE,EAAK,MAAM,YAAY,0BAA0B,EAAK,YAAY,OAAA,GAClE,EAAK,MAAM,YAAY,8BAA8B,EAAK,YAAY,WAAA,GAGtE,EAAK,MAAM,YAAY,yBAAyB,EAAK,MAAM,YAAA,GAC3D,EAAK,MAAM,YAAY,0BAA0B,EAAK,MAAM,aAAA,GAC5D,EAAK,MAAM,YAAY,wBAAwB,EAAK,MAAM,WAAA,GAC1D,EAAK,MAAM,YAAY,8BAA8B,EAAK,MAAM,gBAAA,GAGhE,EAAK,MAAM,YAAY,wBAAwB,EAAK,QAAQ,SAAA,GAC5D,EAAK,MAAM,YAAY,kCAAkC,EAAK,QAAQ,kBAAA,GACtE,EAAK,MAAM,YAAY,gCAAgC,EAAK,QAAQ,gBAAA,GACpE,EAAK,MAAM,YAAY,+BAA+B,EAAK,QAAQ,cAAA,GACnE,EAAK,MAAM,YAAY,qBAAqB,EAAK,QAAQ,MAAA,GACzD,EAAK,MAAM,YAAY,wBAAwB,EAAK,QAAQ,SAAA,GAC5D,EAAK,MAAM,YAAY,+BAA+B,EAAK,QAAQ,eAAA,GACnE,EAAK,MAAM,YAAY,wCAAwC,EAAK,QAAQ,uBAAA,GAC5E,EAAK,MAAM,YAAY,iCAAiC,EAAK,QAAQ,gBAAA,GACrE,EAAK,MAAM,YAAY,gCAAgC,EAAK,QAAQ,gBAAA,GACpE,EAAK,MAAM,YAAY,uBAAuB,EAAK,QAAQ,QAAA,GAC3D,EAAK,MAAM,YAAY,qBAAqB,EAAK,QAAQ,MAAA,GAGzD,EAAK,MAAM,YAAY,4BAA4B,EAAK,YAAY,SAAA,GACpE,EAAK,MAAM,YAAY,oCAAoC,EAAK,YAAY,gBAAA,GAC5E,EAAK,MAAM,YAAY,sCAAsC,EAAK,YAAY,kBAAA,GAC9E,EAAK,MAAM,YAAY,oCAAoC,EAAK,YAAY,gBAAA,GAC5E,EAAK,MAAM,YAAY,iCAAiC,EAAK,YAAY,aAAA,GACzE,EAAK,MAAM,YAAY,mCAAmC,EAAK,YAAY,cAAA,GAC3E,EAAK,MAAM,YAAY,mCAAmC,EAAK,YAAY,cAAA,GAC3E,EAAK,MAAM,YAAY,mCAAmC,EAAK,YAAY,eAAA,GAC3E,EAAK,MAAM,YAAY,gCAAgC,EAAK,YAAY,YAAA,GACxE,EAAK,MAAM,YAAY,8BAA8B,EAAK,YAAY,UAAA,GACtE,EAAK,MAAM,YAAY,6BAA6B,EAAK,YAAY,UAAA,GACrE,EAAK,MAAM,YAAY,gCAAgC,EAAK,YAAY,YAAA,GACxE,EAAK,MAAM,YAAY,8BAA8B,EAAK,YAAY,UAAA,GACtE,EAAK,MAAM,YAAY,qCAAqC,EAAK,YAAY,gBAAA,GAG7E,EAAK,MAAM,YAAY,gBAAgB,EAAK,QAAQ,EAAA,GACpD,EAAK,MAAM,YAAY,wBAAwB,EAAK,QAAQ,SAAA,GAC5D,EAAK,MAAM,YAAY,6BAA6B,EAAK,QAAQ,aAAA,GACjE,EAAK,MAAM,YAAY,8BAA8B,EAAK,QAAQ,cAAA,GAClE,EAAK,MAAM,YAAY,qCAAqC,EAAK,QAAQ,oBAAA,GACzE,EAAK,MAAM,YAAY,8BAA8B,EAAK,QAAQ,sBAAA,GAGlE,EAAK,MAAM,YAAY,6BAA6B,EAAK,QAAQ,aAAA,GACjE,EAAK,MAAM,YAAY,wBAAwB,EAAK,QAAQ,SAAA,GAE5D,EAAqB,CAAA;AAAA,KACpB,CAAC,GAAW,CAAA,CAAa;;AC3G9B,MAAa,IAAsC;AAAA,EACjD,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;GAGF,IAA8B;AAAA,EACzC,MAAM,EAAS;AAAA,EACf,aAAa;AAAA,EACb,WAAW;GCTA,IAAsC;AAAA,EACjD,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;GAIF,IAA8B;AAAA,EACzC,MAAM,EAAS;AAAA,EACf,aAAa;AAAA,EACb,WAAW;GCVA,IAAkC;AAAA,EAC7C,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;GAGF,IAA0B;AAAA,EACrC,MAAM,EAAS;AAAA,EACf,aAAa;AAAA,EACb,WAAW;GCTA,IAAoC;AAAA,EAC/C,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;GAGF,IAA4B;AAAA,EACvC,MAAM,EAAS;AAAA,EACf,aAAa;AAAA,EACb,WAAW;GCTA,IAAsC;AAAA,EACjD,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,aAAa;GAGF,IAA8B;AAAA,EACzC,MAAM,EAAS;AAAA,EACf,aAAa;AAAA,EACb,WAAW;GCLA,IAAqC;AAAA,GAC/C,EAAS,OAAA,GAAU;AAAA,GACnB,EAAS,GAAA,GAAM;AAAA,GACf,EAAS,OAAA,GAAU;AAAA,GACnB,EAAS,OAAA,GAAU;AAAA,GACnB,EAAS,KAAA,GAAQ;GCNP,IAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IAGX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAEb,WAAW;AAAA,IAEX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAGf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAG1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GCvGJ,IAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAGb,WAAW;AAAA,IAGX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAIf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAI1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GCnGJ,IAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAGb,WAAW;AAAA,IAGX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAIf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAI1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GC5FJ,IAA6B;AAAA,EACxC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IAGX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAGb,WAAW;AAAA,IAGX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAIf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAI1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GC3GJ,IAAgC;AAAA,EAC3C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAGb,WAAW;AAAA,IAGX,aAAa;AAAA,MACX,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;MAEF,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAIf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAI1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GCrGJ,IAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IACT,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,cAAc;AAAA,IAEd,MAAM;AAAA,IACN,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,cAAc;AAAA,IAEd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IACb,WAAW;AAAA,IAEX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAGf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAG1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GCrGJ,IAA8B;AAAA,EACzC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAGL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAGT,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAGb,WAAW;AAAA,IAGX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAGf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAI1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GClGJ,IAA8B;AAAA,EACzC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IAET,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAGb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAEL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAET,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAEb,WAAW;AAAA,IAEX,aAAa;AAAA,MACX,SAAS;AAAA,QACP;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;MAEF,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAGf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAG1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;GC/FJ,IAA6B;AAAA,EACxC,MAAM;AAAA,EACN,aAAa;AAAA,EACb,WAAW;AAAA,IACT,SAAS;AAAA,IACT,cAAc;AAAA,IACd,WAAW;AAAA,IAEX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,WAAW;AAAA,IACX,SAAS;AAAA,IACT,cAAc;AAAA,IACd,QAAQ;AAAA,IACR,aAAa;AAAA,IAEb,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IAEL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IACT,SAAS;AAAA,IAET,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,aAAa;AAAA,IAEb,WAAW;AAAA,IAEX,aAAa;AAAA,MACX,SAAS;AAAA,QAAC;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA,QAAW;AAAA;MACtD,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA;IAGf,OAAO;AAAA,MACL,cAAc;AAAA,MACd,eAAe;AAAA,MACf,aAAa;AAAA,MACb,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,WAAW;AAAA,MACX,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,iBAAiB;AAAA,MACjB,yBAAyB;AAAA,MACzB,kBAAkB;AAAA,MAClB,kBAAkB;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA;IAGV,aAAa;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,oBAAoB;AAAA,MACpB,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,kBAAkB;AAAA;IAGpB,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,WAAW;AAAA,MACX,eAAe;AAAA,MACf,gBAAgB;AAAA,MAChB,sBAAsB;AAAA,MACtB,wBAAwB;AAAA;IAG1B,SAAS;AAAA,MACP,eAAe;AAAA,MACf,WAAW;AAAA;;;ACrFjB,IAAM,IAAsB;AAAA,EAAE,QAAQ;AAAA,EAAmB,MAAM;GACzD,IAAoB;AAAA,EAAE,QAAQ;AAAA,EAAiB,MAAM;GACrD,KAAmB;AAAA,EAAE,QAAQ;AAAA,EAAgB,MAAM;GACnD,KAAqB;AAAA,EAAE,QAAQ;AAAA,EAAkB,MAAM;GACvD,KAAwB;AAAA,EAAE,QAAQ;AAAA,EAAqB,MAAM;GAC7D,KAAqB;AAAA,EAAE,QAAQ;AAAA,EAAkB,MAAM;GACvD,KAAqB;AAAA,EAAE,QAAQ;AAAA,EAAkB,MAAM;GACvD,KAAmB;AAAA,EAAE,QAAQ;AAAA,EAAgB,MAAM;GACnD,KAAoB;AAAA,EAAE,QAAQ;AAAA,EAAiB,MAAM;;AAE3D,MAAa,IAAmC;AAAA,GAC7C,EAAU,OAAA,GAAU;AAAA,GACpB,EAAU,KAAA,GAAQ;AAAA,GAClB,EAAU,IAAA,GAAO;AAAA,GACjB,EAAU,MAAA,GAAS;AAAA,GACnB,EAAU,SAAA,GAAY;AAAA,GACtB,EAAU,MAAA,GAAS;AAAA,GACnB,EAAU,MAAA,GAAS;AAAA,GACnB,EAAU,IAAA,GAAO;AAAA,GACjB,EAAU,KAAA,GAAQ;;AClBrB,IAAM,KAAgB,EAAA,CAAM,EAAE,UAAA,GAAU,cAAA,IAAe,EAAU,SAAS,aAAA,IAAc,EAAS,QAAA,MAAkC;AACjI,QAAM,CAAC,GAAW,CAAA,IAAgB,EAAA,MAA0B;AAC1D,UAAM,IAAQ,EAAA;AACd,WAAO,KAAS,QAAQ,KAAS,IAAS,IAAQ;AAAA,MAE9C,CAAC,GAAU,CAAA,IAAe,EAAA,MAAyB;AACvD,UAAM,IAAQ,EAAA;AACd,WAAO,KAAwB;AAAA,MAG3B,IAAe,EAAA,OACZ;AAAA,IACL,QAAQ,EAAO,CAAA,EAAW;AAAA,IAC1B,MAAM,EAAM,CAAA;AAAA,MAEd,CAAC,GAAW,CAAA,CAAS;AAGvB,EAAA,EAAkB,GAAc,CAAA;AAEhC,QAAM,IAAA,CAAY,MAAwB;AACxC,IAAA,EAAa,CAAA;AAAA,KAET,IAAA,CAAW,MAAsB;AACrC,IAAA,EAAY,CAAA,GACZ,EAAoB,CAAA;AAAA;AAGtB,SACE,EAAC,EAAa,UAAd;AAAA,IACE,OAAO;AAAA,MACL,cAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,iBAAiB;AAAA,MACjB,gBAAgB;AAAA;IAGjB,UAAA;AAAA,GACqB;;AAI5B,GAAc,cAAc"}
package/dist/utils.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  (function(){try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(`.styles-module__loading___bgEAk{justify-content:center;align-items:center;display:inline-flex}.styles-module__loading___bgEAk svg polyline{fill:none;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round}.styles-module__loading___bgEAk svg polyline.styles-module__back___XLPvD{fill:none;stroke:var(--color-primary-alpha,#ff4d5033)}.styles-module__loading___bgEAk svg polyline.styles-module__front___hSxig{fill:none;stroke:var(--color-primary,#ff4d4f);stroke-dasharray:48 144;stroke-dashoffset:192px;animation:1.4s linear infinite styles-module__dash_682___AQzo6}@keyframes styles-module__dash_682___AQzo6{72.5%{opacity:0}to{stroke-dashoffset:0}}.styles-module__loader___E7OIM{justify-content:center;align-items:center;width:fit-content;height:fit-content;display:flex}.styles-module__truckWrapper___Sk4zX{flex-direction:column;justify-content:flex-end;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow-x:hidden}.styles-module__truckBody___j7w2C{width:65%;height:fit-content;margin-bottom:6px;animation:1s linear infinite styles-module__motion___IiNlW}@keyframes styles-module__motion___IiNlW{0%{transform:translateY(0)}50%{transform:translateY(3px)}to{transform:translateY(0)}}.styles-module__truckTires___4ncTl{justify-content:space-between;align-items:center;width:65%;height:fit-content;padding:0 10px 0 15px;display:flex;position:absolute;bottom:0}.styles-module__tiresvg___IBQcN{width:24px}.styles-module__road___sxx-E{background-color:var(--color-fg-heading);border-radius:3px;align-self:flex-end;width:100%;height:1.5px;position:relative;bottom:0}.styles-module__road___sxx-E:before{content:"";background-color:var(--color-fg-heading);border-left:10px solid var(--color-bg);border-radius:3px;width:20px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-50%}.styles-module__road___sxx-E:after{content:"";background-color:var(--color-fg-heading);border-left:4px solid var(--color-bg);border-radius:3px;width:10px;height:100%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;right:-65%}.styles-module__lampPost___okcN5{height:45%;animation:1.4s linear infinite styles-module__roadAnimation___yvrHP;position:absolute;bottom:0;right:-90%}@keyframes styles-module__roadAnimation___yvrHP{0%{transform:translate(0)}to{transform:translate(-350px)}}.styles-module__loader___pFUzL{justify-content:center;align-items:center;display:inline-flex;position:relative}.styles-module__loader___pFUzL:before{content:"";background:var(--color-primary);opacity:.3;border-radius:50%;width:100%;height:5px;animation:.5s linear infinite styles-module__shadow324___sutUe;position:absolute;top:calc(100% + 12px);left:0}.styles-module__loader___pFUzL:after{content:"";background:var(--color-primary);width:100%;height:100%;position:absolute;top:0;left:0}.styles-module__square___GKjhm:after{border-radius:4px;animation:.5s linear infinite styles-module__jump7456Square___Z-D9b}.styles-module__circle___bUpSN:after{border-radius:50%;animation:.5s linear infinite styles-module__jump7456Circle___2AfF7}@keyframes styles-module__jump7456Square___Z-D9b{15%{border-bottom-right-radius:3px}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__jump7456Circle___2AfF7{15%{border-bottom-right-radius:50%}25%{transform:translateY(9px)rotate(22.5deg)}50%{border-bottom-right-radius:40px;transform:translateY(18px)scaleY(.9)rotate(45deg)}75%{transform:translateY(9px)rotate(67.5deg)}to{transform:translateY(0)rotate(90deg)}}@keyframes styles-module__shadow324___sutUe{0%,to{transform:scale(1)}50%{transform:scaleX(1.2)}}.style-module__waves___oR3u7{width:100%;height:100%;margin:0;padding:0;position:absolute;top:0;left:0;overflow:hidden}.style-module__waves___oR3u7:before{content:"";width:.5rem;height:.5rem;transform:translate3d(calc(var(--x) - 50%), calc(var(--y) - 50%), 0);will-change:transform;background:#160000;border-radius:50%;position:absolute;top:0;left:0}.style-module__wavesCanvas___zkhTC{width:100%;height:100%;display:block}.style-module__squaresCanvas___22kMc{border:none;width:100%;height:100%;display:block}.style-module__container___HkxIe{background-color:#000;width:100%;height:100%;position:relative;overflow:hidden}.style-module__canvas___MR9JX{width:100%;height:100%;display:block}.style-module__outerVignette___i75nw{pointer-events:none;background:radial-gradient(circle,#0000 60%,#000 100%);width:100%;height:100%;position:absolute;top:0;left:0}.style-module__centerVignette___n9uVG{pointer-events:none;background:radial-gradient(circle,#000c 0%,#0000 60%);width:100%;height:100%;position:absolute;top:0;left:0}.style-module__container___Hh3-c{width:100%;height:100%;position:relative;overflow:hidden}.styles-module__button___RbliA{cursor:pointer;border:1px solid #0000;border-radius:.5rem;outline:none;justify-content:center;align-items:center;gap:.5rem;font-family:inherit;font-weight:500;transition:all .2s;display:inline-flex;position:relative}.styles-module__button___RbliA:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.styles-module__button___RbliA:disabled{cursor:not-allowed;opacity:.6}.styles-module__button___RbliA.styles-module__small___yK0Yp{min-height:2rem;padding:.5rem 1rem;font-size:.8125rem}.styles-module__button___RbliA.styles-module__medium___eBTch{min-height:2.5rem;padding:.75rem 1.5rem;font-size:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl{min-height:3rem;padding:1rem 2rem;font-size:1rem}.styles-module__button___RbliA.styles-module__primary___qsZpA{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg,#fff)}.styles-module__button___RbliA.styles-module__primary___qsZpA:hover:not(:disabled){background:var(--color-primary-light);border-color:var(--color-primary-light);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__primary___qsZpA:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__secondary___SCpPv{background:var(--color-bg-2);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__button___RbliA.styles-module__secondary___SCpPv:hover:not(:disabled){background:var(--color-bg-3);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__outline___rrlk9{border-color:var(--color-border-4);color:var(--color-fg-text);background:0 0}.styles-module__button___RbliA.styles-module__outline___rrlk9:hover:not(:disabled){background:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__button___RbliA.styles-module__ghost___QMoiH{color:var(--color-fg-text);background:0 0;border-color:#0000}.styles-module__button___RbliA.styles-module__ghost___QMoiH:hover:not(:disabled){background:var(--color-bg-2)}.styles-module__button___RbliA.styles-module__danger___MW-pg{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.styles-module__button___RbliA.styles-module__danger___MW-pg:hover:not(:disabled){background:var(--color-danger-light);border-color:var(--color-danger-light);transform:translateY(-1px)}.styles-module__button___RbliA.styles-module__danger___MW-pg:active:not(:disabled){transform:translateY(0)}.styles-module__button___RbliA.styles-module__fullWidth___-dXBR{width:100%}.styles-module__button___RbliA.styles-module__loading___UWw6V{pointer-events:none}.styles-module__spinner___KpJ-L{border:2px solid;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:1rem;height:1rem;animation:.6s linear infinite styles-module__spin___ntZKM}@keyframes styles-module__spin___ntZKM{to{transform:rotate(360deg)}}.styles-module__button___RbliA.styles-module__small___yK0Yp .styles-module__spinner___KpJ-L{border-width:1.5px;width:.875rem;height:.875rem}.styles-module__button___RbliA.styles-module__large___pIZkl .styles-module__spinner___KpJ-L{border-width:2.5px;width:1.25rem;height:1.25rem}.styles-module__content___oyZRO{align-items:center;display:flex}.styles-module__leftIcon___cDktv,.styles-module__rightIcon___1mpk0{flex-shrink:0;align-items:center;display:flex}.styles-module__leftIcon___cDktv{margin-right:-.25rem}.styles-module__rightIcon___1mpk0{margin-left:-.25rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U{aspect-ratio:1;min-width:2.5rem;min-height:2.5rem;padding:0}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__small___yK0Yp{min-width:2rem;min-height:2rem}.styles-module__button___RbliA.styles-module__iconOnly___iOv-U.styles-module__large___pIZkl{min-width:3rem;min-height:3rem}.styles-module__iconContainer___bwvE3{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.styles-module__layout___WaGy9{flex-direction:column;justify-content:center;align-items:center;gap:.25rem;width:100%;display:flex}.styles-module__horizontal___lKpGq{justify-content:center;align-items:center;gap:.5rem;width:100%;display:flex}.styles-module__topIcon___bzw6s,.styles-module__bottomIcon___suPfa{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__leftIcon___cDktv,.styles-module__iconOnly___iOv-U .styles-module__iconContainer___bwvE3 .styles-module__rightIcon___1mpk0{margin:0}.Dropdown-module__dropdown___c9wIp{width:100%;display:inline-block;position:relative}.Dropdown-module__dropdownButton___suNh-{border:1px solid var(--color-separator);cursor:pointer;text-align:left;background:var(--color-bg-2);width:100%;color:var(--color-fg-text);border-radius:8px;outline:none;justify-content:space-between;align-items:center;padding:.75rem 2.5rem .75rem 1rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.5rem;transition:all .2s ease-in-out;display:flex;position:relative}.Dropdown-module__dropdownButton___suNh-:hover:not(:disabled){border-color:var(--color-primary);background:var(--color-bg-1)}.Dropdown-module__dropdownButton___suNh-:focus{border-color:var(--color-primary);background:var(--color-bg-1);box-shadow:0 0 0 2px var(--color-primary-transparent)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__disabled___Rz0pX{cursor:not-allowed;opacity:.6;background:var(--color-bg-3)}.Dropdown-module__dropdownButton___suNh-.Dropdown-module__error___F7dDu{border-color:#ef4444}.Dropdown-module__buttonText___D2zxn{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.Dropdown-module__chevronIcon___uyawp{color:var(--color-fg-highlight);flex-shrink:0;transition:transform .15s;position:absolute;right:1rem}.Dropdown-module__chevronIcon___uyawp.Dropdown-module__open___APoXd{transform:rotate(180deg)}.Dropdown-module__dropdownMenu___WJ-QO{background:var(--color-bg);border:1px solid var(--color-border-4);z-index:1000;border-radius:8px;min-width:100%;animation:.15s ease-out Dropdown-module__slideDown___sRCmO;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden;box-shadow:0 .5rem 1rem #0000002d}@keyframes Dropdown-module__slideDown___sRCmO{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.Dropdown-module__optionsList___Be6RN{margin:0;padding:.5rem 0;list-style:none}.Dropdown-module__option___q-NgT{cursor:pointer;color:var(--color-fg-text);align-items:center;padding:.75rem 1rem;font-size:.875rem;transition:all .15s;display:flex}.Dropdown-module__option___q-NgT:hover{background-color:var(--color-bg-2)}.Dropdown-module__option___q-NgT.Dropdown-module__selected___-OTW-{background-color:var(--color-bg-3);color:var(--color-fg-highlight);font-weight:600}@media (width<=768px){.Dropdown-module__dropdownButton___suNh-{padding:.625rem 2.25rem .625rem .875rem;font-size:.875rem}.Dropdown-module__chevronIcon___uyawp{right:.875rem}.Dropdown-module__option___q-NgT{padding:.625rem .875rem;font-size:.8125rem}}.styles-module__wrapper___COeGm{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___COeGm.styles-module__fullWidth___lVU49{width:100%}.styles-module__label___gfOA7{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___-zOy5{color:var(--color-danger)}.styles-module__inputContainer___wXY53{align-items:center;width:100%;display:flex;position:relative}.styles-module__input___IZDc3{border:1px solid var(--color-border-4);background:var(--color-bg);width:100%;color:var(--color-fg-text);border-radius:.5rem;outline:none;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__input___IZDc3[type=password]::-webkit-credentials-auto-fill-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-webkit-strong-password-toggle-button{visibility:hidden!important;opacity:0!important;pointer-events:none!important;appearance:none!important;width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-reveal{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3[type=password]::-ms-clear{visibility:hidden!important;opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;display:none!important;position:absolute!important;left:-9999px!important}.styles-module__input___IZDc3:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb,102, 126, 234), .1)}.styles-module__input___IZDc3::placeholder{color:var(--color-fg-muted,var(--color-fg-text));opacity:.5}.styles-module__input___IZDc3.styles-module__small___cuGyE{padding:.5rem .75rem;font-size:.8125rem}.styles-module__input___IZDc3.styles-module__medium___JdDPu{padding:.75rem;font-size:.875rem}.styles-module__input___IZDc3.styles-module__large___fMmiG{padding:1rem;font-size:1rem}.styles-module__input___IZDc3.styles-module__default___-eZTG{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__input___IZDc3.styles-module__filled___EQ5PQ{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3{padding-left:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3{padding-right:2.5rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-left:2rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__small___cuGyE{padding-right:2rem}.styles-module__inputContainer___wXY53.styles-module__withLeftIcon___NFn6- .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-left:3rem}.styles-module__inputContainer___wXY53.styles-module__withRightIcon___mz-hn .styles-module__input___IZDc3.styles-module__large___fMmiG{padding-right:3rem}.styles-module__leftIcon___jEW5H,.styles-module__rightIcon___bA3Eo{color:var(--color-fg-muted,var(--color-fg-text));pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute}.styles-module__leftIcon___jEW5H{left:.75rem}.styles-module__rightIcon___bA3Eo{right:.75rem}.styles-module__rightIcon___bA3Eo.styles-module__rightIconInteractive___ccypw{pointer-events:auto}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__leftIcon___jEW5H{left:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerSmall___20ICq .styles-module__rightIcon___bA3Eo{right:.5rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__leftIcon___jEW5H{left:1rem}.styles-module__inputContainer___wXY53.styles-module__containerLarge___IztuN .styles-module__rightIcon___bA3Eo{right:1rem}.styles-module__input___IZDc3.styles-module__error___946qV{border-color:var(--color-danger)}.styles-module__input___IZDc3.styles-module__error___946qV:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb,244, 67, 54), .1)}.styles-module__input___IZDc3.styles-module__disabled___sJvLd{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorMessage___5Mn22{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___T2eui{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__container___xeg8O{flex-direction:column;gap:1rem;display:flex}.styles-module__label___qhbKe{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__error___O-7AY{color:var(--color-error);font-size:.875rem}.styles-module__pairs___owGV3{flex-direction:column;gap:.75rem;display:flex}.styles-module__pair___G4WFY{grid-template-columns:1fr 2fr auto;align-items:start;gap:.75rem;display:grid}.styles-module__keyInput___wl1M1,.styles-module__valueInput___HiwJ5{flex:1}.styles-module__removeButton___4-X0b{min-width:auto;color:var(--color-error);padding:.5rem}.styles-module__removeButton___4-X0b:hover{background-color:var(--color-error);color:#fff}.styles-module__addButton___QFljt{align-self:flex-start}@media (width<=768px){.styles-module__pair___G4WFY{grid-template-columns:1fr}.styles-module__removeButton___4-X0b{align-self:flex-end}}.styles-module__searchContainer___86TGN{width:100%;max-width:400px;position:relative}.styles-module__searchIcon___ZInry{color:var(--color-fg-muted);pointer-events:none;position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.styles-module__searchInput___SqZXQ{border:1px solid var(--color-border);width:100%;color:var(--color-fg-text);background:var(--color-bg-2);border-radius:.5rem;padding:.75rem 3rem;font-size:1rem;transition:all .2s}.styles-module__searchInput___SqZXQ:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg);outline:none}.styles-module__searchInput___SqZXQ::placeholder{color:var(--color-fg-muted)}.styles-module__clearBtn___7jExr{width:1.5rem;height:1.5rem;color:var(--color-fg-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.styles-module__clearBtn___7jExr:hover{color:var(--color-fg-text)}@media (width<=768px){.styles-module__searchContainer___86TGN{max-width:100%}}.styles-module__container___nGxdM{flex-direction:column;gap:.75rem;display:flex}.styles-module__toggleContainer___VrsKI{align-items:center;display:flex}.styles-module__toggleButton___IzD6Z{border:1px solid var(--color-border-4);background:var(--color-bg);color:var(--color-fg-muted);cursor:pointer;border-radius:.5rem;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:all .2s;display:flex}.styles-module__toggleButton___IzD6Z:hover{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.styles-module__toggleButton___IzD6Z.styles-module__enabled___cao0G:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.styles-module__optionsContainer___LOzlO{background:var(--color-bg-2);border:1px solid var(--color-border-4);border-radius:.5rem;gap:.5rem;padding:.5rem;display:flex}.styles-module__option___abhnC{border:1px solid var(--color-border-4);background:var(--color-bg);color:var(--color-fg);cursor:pointer;border-radius:.375rem;flex:1;justify-content:center;align-items:center;gap:.375rem;padding:.5rem .875rem;font-size:.875rem;font-weight:500;transition:all .2s;display:flex}.styles-module__option___abhnC:hover{background:var(--color-bg-3);border-color:var(--color-border-3)}.styles-module__option___abhnC.styles-module__active___pqmSi{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.styles-module__option___abhnC.styles-module__active___pqmSi:hover{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.styles-module__nbSelect___KjxSc{font-family:inherit;font-size:.9375rem;font-weight:600;line-height:1.5rem;display:inline-block;position:relative}.styles-module__selectButton___AKZe4{cursor:pointer;text-align:left;width:100%;min-width:8rem;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;appearance:none;border:1px solid;border-radius:.25rem;outline:none;justify-content:space-between;align-items:center;padding:.4375rem 2.2rem .4375rem 1.125rem;transition:all .15s ease-in-out;display:flex;position:relative}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a{background-color:var(--color-primary);border-color:var(--color-primary);color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:hover:not(:disabled){background-color:var(--color-primary-light);border-color:var(--color-primary-light)}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a:focus,.styles-module__selectButton___AKZe4.styles-module__primary___HU36a.styles-module__open___9AKMb{background-color:var(--color-primary-light);border-color:var(--color-primary-light);box-shadow:0 0 0 .125rem #8f9bb340}.styles-module__selectButton___AKZe4.styles-module__default___LedYP{background-color:var(--color-bg);border-color:var(--color-border-4);color:var(--color-fg-text)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:hover:not(:disabled){background-color:var(--color-bg-2);border-color:var(--color-primary)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP:focus,.styles-module__selectButton___AKZe4.styles-module__default___LedYP.styles-module__open___9AKMb{background-color:var(--color-bg-2);border-color:var(--color-primary);box-shadow:0 0 0 .125rem #8f9bb340}.styles-module__selectButton___AKZe4:disabled{cursor:not-allowed;opacity:.6}.styles-module__buttonText___QSLO1{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.styles-module__chevronIcon___qAHaD{flex-shrink:0;width:1.5rem;height:1.5rem;transition:transform .15s;position:absolute;right:.41rem}.styles-module__selectButton___AKZe4.styles-module__primary___HU36a .styles-module__chevronIcon___qAHaD{color:var(--color-primary-fg)}.styles-module__selectButton___AKZe4.styles-module__default___LedYP .styles-module__chevronIcon___qAHaD{color:var(--color-fg)}.styles-module__chevronIcon___qAHaD.styles-module__open___9AKMb{transform:rotate(180deg)}.styles-module__optionsPanel___NWAp3{background-color:var(--color-bg);border:1px solid var(--color-border-4);z-index:1000;transform-origin:top;visibility:hidden;pointer-events:none;border-radius:.25rem;min-width:100%;position:absolute;top:calc(100% + .5rem);left:0;right:0;overflow:hidden;box-shadow:0 .5rem 1rem #00000026}.styles-module__optionsPanel___NWAp3.styles-module__open___9AKMb{visibility:visible;pointer-events:auto;animation:.25s ease-out styles-module__expandDown___eD4lh}.styles-module__optionsPanel___NWAp3.styles-module__closed___bez-q{visibility:hidden;pointer-events:none;animation:.25s ease-out styles-module__collapseUp___dt1E7}@keyframes styles-module__expandDown___eD4lh{0%{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes styles-module__collapseUp___dt1E7{0%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}.styles-module__optionsPanel___NWAp3.styles-module__primary___HU36a{border-color:var(--color-primary)}.styles-module__optionsPanel___NWAp3.styles-module__default___LedYP{border-color:var(--color-border-4)}.styles-module__optionsList___AxhVp{margin:0;padding:.5rem 0;list-style:none}.styles-module__option___t1SSw{cursor:pointer;color:var(--color-fg-text);justify-content:space-between;align-items:center;padding:.75rem 1.125rem;transition:all .15s;display:flex}.styles-module__option___t1SSw:hover{background-color:var(--color-bg-2)}.styles-module__option___t1SSw.styles-module__selected___azD4A{background-color:var(--color-primary);color:var(--color-primary-fg);font-weight:700}@media (prefers-color-scheme:dark){.styles-module__optionsPanel___NWAp3{box-shadow:0 .5rem 1rem #0000004d}}.styles-module__sliderContainer___lgpaD{flex-direction:column;gap:.5rem;display:flex}.styles-module__sliderContainer___lgpaD.styles-module__fullWidth___ZS8W5{width:100%}.styles-module__labelRow___dkVVM{justify-content:space-between;align-items:center;min-height:1.5rem;margin-bottom:.5rem;display:flex}.styles-module__label___bXGZs{color:var(--color-fg-text);font-size:.875rem;font-weight:500}.styles-module__required___FuyfE{color:var(--color-danger);margin-left:.25rem}.styles-module__sliderWrapper___1Wdti{touch-action:none;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;gap:.75rem;width:100%;display:flex}.styles-module__sliderRoot___yzOjR{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex-grow:1;align-items:center;width:100%;padding:.75rem 0;display:flex;position:relative}.styles-module__sliderRoot___yzOjR:active{cursor:grabbing}.styles-module__sliderTrackWrapper___N72WQ{flex-grow:1;display:flex;position:relative}.styles-module__sliderTrack___AltcD{background-color:var(--color-bg-3);border-radius:9999px;width:100%;height:.375rem;position:relative;overflow:hidden}.styles-module__sliderRange___U3g0-{background-color:var(--color-primary);border-radius:9999px;height:100%;position:absolute}.styles-module__valueIndicator___aLf0I{color:var(--color-primary);text-align:center;flex-shrink:0;min-width:2rem;font-size:.875rem;font-weight:600;line-height:1}.styles-module__iconWrapper___wL-b8{flex-shrink:0;justify-content:center;align-items:center;display:flex}.styles-module__icon___vHsID{width:20px;height:20px;color:var(--color-fg-muted)}.styles-module__errorMessage___qFgGe{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___tgBGl{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__loadingContainer___OMgwS{flex-direction:column;justify-content:center;align-items:center;gap:1.5rem;min-height:60vh;display:flex}.styles-module__loadingText___KRZqR{color:var(--color-fg-muted);font-size:1rem}.styles-module__errorContainer___qhAg2{text-align:center;min-height:60vh;color:var(--color-fg-text);flex-direction:column;justify-content:center;align-items:center;gap:2rem;padding:3rem 2rem;display:flex}.styles-module__errorIconWrapper___IHZrN{background:linear-gradient(135deg, rgba(var(--color-error-rgb,239, 68, 68), .1), rgba(var(--color-error-rgb,239, 68, 68), .05));border:2px solid rgba(var(--color-error-rgb,239, 68, 68), .2);border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;animation:2s ease-in-out infinite styles-module__pulse___Lju-z;display:flex}@keyframes styles-module__pulse___Lju-z{0%,to{opacity:1;transform:scale(1)}50%{opacity:.9;transform:scale(1.05)}}.styles-module__errorIcon___oGDIP{color:var(--color-error,#ef4444);stroke-width:1.5px}.styles-module__errorContent___F55rQ{flex-direction:column;align-items:center;gap:1rem;width:100%;max-width:600px;display:flex}.styles-module__errorTitle___hC8D-{color:var(--color-fg-heading);letter-spacing:-.02em;margin:0;font-size:1.75rem;font-weight:700;line-height:1.2}.styles-module__errorDescription___hZtuP{color:var(--color-fg-muted);max-width:480px;margin:0;font-size:1rem;line-height:1.6}.styles-module__errorDetailsWrapper___-sp8b{width:100%;max-width:600px;margin-top:.5rem}.styles-module__errorDetailsContainer___eywMo{text-align:left;border:1px solid var(--color-border,#0000001a);background:var(--color-bg-2,#00000005);border-radius:.75rem;width:100%;transition:all .2s;overflow:hidden}.styles-module__errorDetailsContainer___eywMo:hover{border-color:var(--color-border-hover,#00000026);background:var(--color-bg-3,#00000008)}.styles-module__errorDetailsSummary___hGEoD{cursor:pointer;color:var(--color-fg-muted);-webkit-user-select:none;user-select:none;padding:.875rem 1.25rem;font-size:.875rem;font-weight:500;list-style:none;transition:color .2s}.styles-module__errorDetailsSummary___hGEoD:hover{color:var(--color-fg-text)}.styles-module__errorDetailsSummary___hGEoD::-webkit-details-marker{display:none}.styles-module__errorDetailsSummary___hGEoD:before{content:"▶";margin-right:.5rem;font-size:.75rem;transition:transform .2s;display:inline-block}.styles-module__errorDetailsContainer___eywMo[open] .styles-module__errorDetailsSummary___hGEoD:before{transform:rotate(90deg)}.styles-module__errorDetails___tzCT-{background:var(--color-bg-3,#00000008);border-top:1px solid var(--color-border,#0000001a);max-width:100%;color:var(--color-fg-muted);white-space:pre-wrap;word-break:break-word;margin:0;padding:1rem 1.25rem;font-family:Monaco,Menlo,Ubuntu Mono,Consolas,source-code-pro,monospace;font-size:.8125rem;line-height:1.6;overflow-x:auto}.styles-module__errorActions___gtqYw{flex-wrap:wrap;justify-content:center;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.styles-module__retryButton___TA4jm{background:var(--color-primary);color:var(--color-primary-fg);cursor:pointer;border:none;border-radius:.5rem;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 2rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex;box-shadow:0 2px 8px #00000014}.styles-module__retryButton___TA4jm:hover{background:var(--color-primary-hover,var(--color-primary));transform:translateY(-2px);box-shadow:0 4px 16px #0000001f}.styles-module__retryButton___TA4jm:active{transform:translateY(0);box-shadow:0 2px 8px #00000014}.styles-module__retryButtonIcon___vzfp-{font-size:1.125rem;line-height:1;transition:transform .3s;display:inline-block}.styles-module__retryButton___TA4jm:hover .styles-module__retryButtonIcon___vzfp-{transform:rotate(180deg)}.styles-module__clearLocalDataButton___T3B-K{color:var(--color-fg-muted);border:1px solid var(--color-border-4);cursor:pointer;background:0 0;border-radius:.5rem;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:500;transition:all .2s;display:inline-flex}.styles-module__clearLocalDataButton___T3B-K:hover{color:var(--color-fg-text);border-color:var(--color-border-3);background:var(--color-bg-secondary)}.styles-module__wrapper___jXPV3{flex-direction:column;gap:.5rem;display:flex}.styles-module__wrapper___jXPV3.styles-module__fullWidth___eKyGB{width:100%}.styles-module__label___MyTeo{color:var(--color-fg-heading);align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;display:flex}.styles-module__required___TV-m8{color:var(--color-danger)}.styles-module__inputContainer___VvGBl{align-items:flex-start;width:100%;display:flex;position:relative}.styles-module__textarea___AjX9N{border:1px solid var(--color-border-4);background:var(--color-bg);width:100%;color:var(--color-fg-text);resize:vertical;border-radius:.5rem;outline:none;min-height:4rem;font-family:inherit;font-size:.875rem;transition:all .2s}.styles-module__textarea___AjX9N:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb,102, 126, 234), .1)}.styles-module__textarea___AjX9N::placeholder{color:var(--color-fg-muted,var(--color-fg-text));opacity:.5}.styles-module__textarea___AjX9N.styles-module__small___zMx0G{min-height:3rem;padding:.5rem .75rem;font-size:.8125rem}.styles-module__textarea___AjX9N.styles-module__medium___tO2Lb{min-height:4rem;padding:.75rem;font-size:.875rem}.styles-module__textarea___AjX9N.styles-module__large___3eU2g{min-height:5rem;padding:1rem;font-size:1rem}.styles-module__textarea___AjX9N.styles-module__default___vsSxX{background:var(--color-bg);border-color:var(--color-border-4)}.styles-module__textarea___AjX9N.styles-module__filled___TPQgI{background:var(--color-bg-2);border-color:var(--color-border-3)}.styles-module__inputContainer___VvGBl .styles-module__leftIcon___FHp2R{color:var(--color-fg-muted,var(--color-fg-text));pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;left:.75rem}.styles-module__inputContainer___VvGBl .styles-module__rightIcon___dkyvP{color:var(--color-fg-muted,var(--color-fg-text));pointer-events:none;z-index:1;justify-content:center;align-items:center;display:flex;position:absolute;top:.75rem;right:.75rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__small___zMx0G+.styles-module__rightIcon___dkyvP{top:.5rem}.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__leftIcon___FHp2R,.styles-module__inputContainer___VvGBl .styles-module__textarea___AjX9N.styles-module__large___3eU2g+.styles-module__rightIcon___dkyvP{top:1rem}.styles-module__textarea___AjX9N.styles-module__error___d8gLK{border-color:var(--color-danger)}.styles-module__textarea___AjX9N.styles-module__error___d8gLK:focus{border-color:var(--color-danger);box-shadow:0 0 0 3px rgba(var(--color-danger-rgb,244, 67, 54), .1)}.styles-module__textarea___AjX9N.styles-module__disabled___IzbfE{background:var(--color-bg-3);border-color:var(--color-border-5);color:var(--color-fg-muted);cursor:not-allowed;opacity:.6}.styles-module__errorText___Nom7x{color:var(--color-danger);margin:0;font-size:.75rem}.styles-module__helperText___97Def{color:var(--color-fg-muted);margin:0;font-size:.75rem}.styles-module__virtualList___pM6rN{contain:strict;width:100%;padding-bottom:300px;position:relative;overflow:auto}.styles-module__emptyContainer___rm938{height:100%;color:var(--color-fg-muted);justify-content:center;align-items:center;display:flex}.styles-module__virtualListInner___HxRzc{width:100%;position:relative}.styles-module__virtualListItems___p19-a{width:100%;position:absolute;top:0;left:0}.styles-module__loadingMore___zAdLM{color:var(--color-fg-muted);justify-content:center;align-items:center;gap:.75rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;margin-top:1rem;padding:2rem 0;font-size:.875rem;display:flex}.styles-module__endOfList___5cYFh span{background-color:var(--color-bg-2);border-radius:.25rem;padding:.5rem 1rem}.styles-module__virtualList___xmj2v{width:100%;padding-bottom:300px;position:relative;overflow:visible}.styles-module__virtualListInner___quD74{width:100%;position:relative}.styles-module__virtualListItems___-Muml{width:100%;position:absolute;top:0;left:0}.styles-module__virtualListRow___h3pzX{width:100%}.styles-module__emptyContainer___LIy8r{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:2rem 0;display:flex}.styles-module__loadingMore___Mzf-p{color:var(--color-fg-muted);justify-content:center;align-items:center;padding:1.5rem 0;display:flex}.styles-module__endOfList___g5G--{color:var(--color-fg-muted);border-top:1px solid var(--color-border-3);justify-content:center;padding:1.5rem 0;display:flex}.styles-module__sidebar___BMt0j{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.styles-module__sidebarContent___iAwiw{flex-direction:column;height:100%;min-height:0;padding-top:1rem;display:flex;overflow:hidden}.styles-module__menuWrapper___DKuEv{flex:1;min-height:0;overflow:hidden auto}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar{width:0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-track{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb{background:0 0}.styles-module__sidebarContent___iAwiw::-webkit-scrollbar-thumb:hover{background:0 0}.styles-module__sidebar___BMt0j a{margin-left:0}.styles-module__sidebar___BMt0j .ps-sidebar-root{background-color:var(--color-bg-2)!important;border-right:1px solid var(--color-separator)!important;flex-direction:column!important;height:100%!important;min-height:0!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-sidebar-container{background-color:var(--color-bg-2)!important;height:100%!important;min-height:0!important;color:var(--color-fg-text)!important;flex-direction:column!important;flex:1!important;display:flex!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-menu-button{color:var(--color-fg-text)!important;border-radius:.375rem!important;margin:.125rem .5rem!important;padding:.5rem .75rem!important;font-size:.875rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-button:hover{background-color:var(--color-bg-3)!important;color:var(--color-fg-text)!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active{background-color:var(--color-primary)!important;color:#fff!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active *,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:#fff!important}.styles-module__sidebar___BMt0j .ps-menu-icon{width:1.25rem!important;height:1.25rem!important;color:var(--color-fg-text)!important;margin-right:.5rem!important}.styles-module__sidebar___BMt0j .ps-submenu-content{background-color:var(--color-bg-3)!important;padding-left:.5rem!important;overflow:hidden!important}.styles-module__sidebar___BMt0j .ps-submenu-content .ps-menu-button{margin:.125rem .25rem!important;padding:.375rem .5rem!important;font-size:.8125rem!important;transition:all .2s!important}.styles-module__sidebar___BMt0j .ps-menu-label{color:var(--color-fg-text)!important;font-weight:500!important}.styles-module__sidebar___BMt0j .ps-menu-button.ps-active,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active span,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active div,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-icon,.styles-module__sidebar___BMt0j .ps-menu-button.ps-active .ps-menu-label{color:#fff!important}.styles-module__logoutContainer___7NwBL{border-top:1px solid var(--color-separator);writing-mode:horizontal-tb;text-orientation:mixed;flex-shrink:0;margin-top:auto;padding:.5rem}.styles-module__logoutButton___rfD6u{width:100%;color:var(--color-fg-text);cursor:pointer;white-space:nowrap;writing-mode:horizontal-tb;text-orientation:mixed;direction:ltr;background:0 0;border:none;border-radius:.375rem;justify-content:flex-start;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;transition:background-color .2s,color .2s;display:flex;overflow:hidden}.styles-module__logoutButton___rfD6u span{opacity:1;max-width:200px;transition:opacity .3s,max-width .3s;display:inline-block;writing-mode:horizontal-tb!important;text-orientation:mixed!important;direction:ltr!important;transform:none!important}.styles-module__logoutButton___rfD6u .styles-module__hiddenText___z183T{opacity:0;width:0;max-width:0;overflow:hidden}.styles-module__logoutButton___rfD6u .styles-module__visibleText___lfsv-{opacity:1;width:auto;max-width:200px}.styles-module__logoutButton___rfD6u:hover{background-color:var(--color-bg-3)}.styles-module__logoutButton___rfD6u:active{transform:scale(.98)}.styles-module__logoutButton___rfD6u svg{color:inherit;flex-shrink:0}.styles-module__footer___g-hY7{background:var(--color-bg-2);width:100%;padding:0 2rem}.styles-module__footerContent___Oen5n{justify-content:space-between;align-items:center;max-width:100%;margin:0 auto;display:flex}.styles-module__copyright___1R2o3{color:var(--color-fg-text);font-size:.875rem}.styles-module__links___dQyvB{gap:1.5rem;display:flex}.styles-module__link___UWfyK{color:var(--color-fg-text);font-size:.875rem;text-decoration:none;transition:color .3s}.styles-module__link___UWfyK:hover{color:var(--color-primary)}@media (width<=768px){.styles-module__footerContent___Oen5n{flex-direction:column;gap:1rem}.styles-module__links___dQyvB{gap:1rem}}.styles-module__header___4Uc8h{width:100%;padding:.5rem 2rem;display:flex}.styles-module__header___4Uc8h>:first-child{flex:1;justify-content:flex-start;align-items:center;display:flex}.styles-module__header___4Uc8h>:last-child{flex:1;justify-content:flex-end;align-items:center;display:flex}.styles-module__layout___ZQKU7{background:var(--color-bg);flex-direction:column;width:100%;height:100vh;display:flex;position:relative}.styles-module__header___XIaFb{z-index:100;background:var(--color-bg);width:100%;position:fixed;top:0;box-shadow:0 .125rem .25rem #2c33491a}.styles-module__footer___r8ASO{z-index:100;width:100%;position:fixed;bottom:0}.styles-module__mainWrapper___i4tEI{flex:1;display:flex;position:relative}.styles-module__sidebar___ij-8-{position:fixed;top:0}.styles-module__content___mTgUr{background:var(--color-bg);flex:1;min-height:calc(100vh - 10rem);margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=768px){.styles-module__content___mTgUr{width:100%}.styles-module__sidebar___ij-8-{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__mainWrapper___AiTAw{flex-direction:row;flex:1;display:flex;position:relative}.styles-module__sidebarContainer___X4yj8{z-index:99;flex-direction:column;display:flex;position:fixed;left:0;overflow:hidden}.styles-module__sidebar___VQTlH{flex-shrink:0;top:0;left:0}.styles-module__content___htJlH{background:var(--color-bg);flex:1;margin:0;padding-top:0;padding-bottom:0;overflow:hidden auto}@media (width<=1024px){.styles-module__content___htJlH{padding:1.5rem}}@media (width<=768px){.styles-module__content___htJlH{width:100%}.styles-module__sidebar___VQTlH{z-index:999;height:100vh;position:fixed;top:0;left:0}}.styles-module__wavesWrapper___TK7DI{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__wavesWrapper___TK7DI>*{pointer-events:auto}.styles-module__squaresWrapper___P25uF{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__squaresWrapper___P25uF>*{pointer-events:auto}.styles-module__letterGlitchWrapper___KWtWU{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__letterGlitchWrapper___KWtWU>*{pointer-events:auto}.styles-module__pixelBlastWrapper___YptHh{pointer-events:none;z-index:0;width:100vw;height:100vh;position:fixed;inset:0;overflow:hidden}.styles-module__pixelBlastWrapper___YptHh>*{pointer-events:auto}
2
2
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
3
- Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./chunk-chunk-BFrxaqQT.cjs"),m=require("./chunk-lstorage-BnxLXHgH.cjs");require("./chunk-types-BE3JCLff.cjs");const D=require("./chunk-i18n-_7W7guSV.cjs");let M=require("google-libphonenumber"),d=require("async-retry");d=A.__toESM(d);function N(t){return t.trim().replace(/\s+/g," ")}function h(t){const e=t?.response?.data;return!e||typeof e!="object"?null:{status:e.status,errCode:e.errCode,message:e.message,details:e.details,traceId:e.traceId}}function T(t,e){const r=h(t);if(r?.errCode){const o=D.i18n_default.t(`errors:${r.errCode}`);if(o&&o!==`errors:${r.errCode}`)return o}return r?.message?r.message:e}function R(t,e,r,o,n){if(e.length===0)return t;switch(n){case"insert":return C(t,e,r,o);case"upsert":return E(t,e,r,o)}}function C(t,e,r,o){const n=new Set(t.map(r)),s=e.filter(i=>{const a=r(i);return n.has(a)?!1:(n.add(a),!0)});return s.length===0?t:o==="prepend"?[...s,...t]:[...t,...s]}function E(t,e,r,o){const n=new Map;t.forEach((u,c)=>n.set(r(u),c));let s=!1;const i=t.slice();for(const u of e){const c=r(u),f=n.get(c);f!==void 0&&i[f]!==u&&(i[f]=u,s=!0)}const a=[];for(const u of e){const c=r(u);n.has(c)||a.push(u)}return a.length>0?(s=!0,o==="prepend"?[...a,...i]:[...i,...a]):s?i:t}function P(t,e,r){let o=!1;const n=t.filter(s=>{const i=!e.has(r(s));return i||(o=!0),i});return o?n:t}const k=(t,e)=>{const r=t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);if(r){const[,o,n,s]=r;return`rgba(${o}, ${n}, ${s}, ${e})`}return $(t,e)},q=(t,e)=>{if(t.startsWith("rgba"))return t;const r=t.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);if(r){const[,o,n,s]=r;return`rgba(${o}, ${n}, ${s}, ${e})`}return console.warn("Invalid RGB color format:",t),t},$=(t,e)=>{if(t.indexOf("rgb")!==-1)return t;let r=0,o=0,n=0;return t.startsWith("#")&&(t=t.slice(1)),t.length===3?(r=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),n=parseInt(t[2]+t[2],16)):t.length===6?(r=parseInt(t.slice(0,2),16),o=parseInt(t.slice(2,4),16),n=parseInt(t.slice(4,6),16)):console.warn("Unsupported HEX color format"),`rgba(${r}, ${o}, ${n}, ${e})`},B=(t,e,r)=>{const o=f=>{const l=f.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);if(l)return[parseInt(l[1],16),parseInt(l[2],16),parseInt(l[3],16)];const g=f.match(/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/i);return g?[parseInt(g[1]),parseInt(g[2]),parseInt(g[3])]:[0,0,0]},[n,s,i]=o(t),[a,u,c]=o(e);return`rgb(${Math.round(n+(a-n)*r)}, ${Math.round(s+(u-s)*r)}, ${Math.round(i+(c-i)*r)})`},_=t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t);function j(t){return typeof t=="string"?t:t==null?"":typeof t=="number"||typeof t=="boolean"?String(t):Array.isArray(t)?t.map(e=>String(e)).join(", "):typeof t=="object"?JSON.stringify(t):String(t)}function V(t){return t==null?"":typeof t=="number"?Number.isFinite(t)?String(t):"":typeof t=="string"?t:typeof t=="boolean"?t?"1":"0":Array.isArray(t)&&t.length>0?String(t[0]):""}function F(t,e,...r){const o={},n=Array.isArray(e)?e:[e,...r],s=new Set(n);for(const i of Object.keys(t))s.has(i)||(o[i]=t[i]);return o}var p=M.PhoneNumberUtil.getInstance();const U=t=>p.parseAndKeepRawInput(t).getCountryCode(),H=t=>{if(!t||!t.replace(/\D/g,"").length)return!1;try{const e=p.parseAndKeepRawInput(t);return p.isValidNumber(e)}catch{return!1}},b=t=>[t,null],I=t=>[null,t instanceof Error?t:new Error(String(t))];async function w(t,e){try{return b(await(0,d.default)(async(r,o)=>{try{return await t(r,o)}catch(n){throw e?.isNonRetryable?.(n)&&r(n),n}},e))}catch(r){return I(r)}}async function K(t,e,r){return w(async(o,n)=>{const s=await t();if(!e(s))throw new Error("Condition not satisfied");return s},r)}function O(t){return Math.round(Number(t)*100)}function S(t){return(Number(t)/100).toFixed(2)}function W(t){return Number(S(t))}function Y(t){return t<1e3?t.toString():t<1e6?`${(t/1e3).toFixed(1).replace(/\.0$/,"")}k+`:t<1e9?`${(t/1e6).toFixed(1).replace(/\.0$/,"")}M+`:`${(t/1e9).toFixed(1).replace(/\.0$/,"")}B+`}function G(t){let e=null;return async(...r)=>e||(e=t(...r).finally(()=>e=null),e)}function z(t,e){const r=new Map;return async(...o)=>{const n=e(...o),s=r.get(n);if(s)return s;const i=t(...o).finally(()=>r.delete(n));return r.set(n,i),i}}function y(t,e){if(Object.is(t,e))return!0;if(typeof t!=typeof e)return!1;if(t===null||e===null||typeof t!="object"||typeof e!="object")return t===e;const r=Array.isArray(t),o=Array.isArray(e);if(r!==o)return!1;if(r&&o)return t.length!==e.length?!1:t.every((i,a)=>y(i,e[a]));const n=Object.keys(t).sort(),s=Object.keys(e).sort();return n.length!==s.length||!n.every((i,a)=>i===s[a])?!1:n.every(i=>y(t[i],e[i]))}const J=t=>{let e,r=[];return new Proxy(t,{construct(o,n){if(e||(e=new t(...n),r=n),!y(n,r))throw new Error("Cannot create multiple instances with different parameters");return e}})};function x(t,e=100){if(t==null)throw new Promise(r=>setTimeout(r,e));return t}const L=t=>{if(!t)return"";const e=new Date(t);return isNaN(e.getTime())?"":`${e.getFullYear()}/${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`},X=t=>{if(!t)return"Unknown";const e=new Date(t);if(isNaN(e.getTime()))return"Invalid date";const r=new Date().getTime()-e.getTime(),o=Math.floor(r/1e3),n=Math.floor(o/60),s=Math.floor(n/60),i=Math.floor(s/24),a=Math.floor(i/30),u=Math.floor(i/365);return u>0?`${u} year${u>1?"s":""} ago`:a>0?`${a} month${a>1?"s":""} ago`:i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"Just now"};function Q(t){try{return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}const Z=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${e.getFullYear()}/${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}},v=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}},tt=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${e.getFullYear()}/${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")}`}catch{return t}},et=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}};function rt(t,e){return t.reduce((r,o,n)=>(r[o]=e?e(o,n):o,r),{})}exports.createMap=rt;exports.err=I;exports.formatDate=tt;exports.formatDateTime=Z;exports.formatDisplayDate=L;exports.formatMonthDayTime=v;exports.formatNumberAbbreviated=Y;exports.formatRelativeTime=X;exports.formatTickDate=Q;exports.formatTime=et;exports.getApiError=h;exports.getApiErrorMessage=T;exports.getCountryCode=U;exports.getItem=m.getItem;exports.hexToRGBA=$;exports.interpolateColor=B;exports.isValidEmail=_;exports.isValidPhoneNumber=H;exports.mergeById=R;exports.normalizeAddress=N;exports.ok=b;exports.omit=F;exports.onceAsync=G;exports.onceAsyncByKey=z;exports.pollUntil=K;exports.pruneArray=P;exports.removeItem=m.removeItem;exports.rgbToRgba=q;exports.setItem=m.setItem;exports.singleton=J;exports.suspenseIfNull=x;exports.toDatabasePrice=O;exports.toDisplayPrice=S;exports.toDisplayPriceNumber=W;exports.toNumberInputValue=V;exports.toRgbaWithAlpha=k;exports.toTextInputValue=j;exports.withRetryResult=w;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./chunk-chunk-BFrxaqQT.cjs"),m=require("./chunk-lstorage-BnxLXHgH.cjs");require("./chunk-types-BE3JCLff.cjs");const D=require("./chunk-i18n-daHSL0Nm.cjs");let M=require("google-libphonenumber"),d=require("async-retry");d=A.__toESM(d);function N(t){return t.trim().replace(/\s+/g," ")}function h(t){const e=t?.response?.data;return!e||typeof e!="object"?null:{status:e.status,errCode:e.errCode,message:e.message,details:e.details,traceId:e.traceId}}function T(t,e){const r=h(t);if(r?.errCode){const o=D.i18n_default.t(`errors:${r.errCode}`);if(o&&o!==`errors:${r.errCode}`)return o}return r?.message?r.message:e}function R(t,e,r,o,n){if(e.length===0)return t;switch(n){case"insert":return C(t,e,r,o);case"upsert":return E(t,e,r,o)}}function C(t,e,r,o){const n=new Set(t.map(r)),s=e.filter(i=>{const a=r(i);return n.has(a)?!1:(n.add(a),!0)});return s.length===0?t:o==="prepend"?[...s,...t]:[...t,...s]}function E(t,e,r,o){const n=new Map;t.forEach((u,c)=>n.set(r(u),c));let s=!1;const i=t.slice();for(const u of e){const c=r(u),f=n.get(c);f!==void 0&&i[f]!==u&&(i[f]=u,s=!0)}const a=[];for(const u of e){const c=r(u);n.has(c)||a.push(u)}return a.length>0?(s=!0,o==="prepend"?[...a,...i]:[...i,...a]):s?i:t}function P(t,e,r){let o=!1;const n=t.filter(s=>{const i=!e.has(r(s));return i||(o=!0),i});return o?n:t}const k=(t,e)=>{const r=t.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);if(r){const[,o,n,s]=r;return`rgba(${o}, ${n}, ${s}, ${e})`}return $(t,e)},q=(t,e)=>{if(t.startsWith("rgba"))return t;const r=t.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/);if(r){const[,o,n,s]=r;return`rgba(${o}, ${n}, ${s}, ${e})`}return console.warn("Invalid RGB color format:",t),t},$=(t,e)=>{if(t.indexOf("rgb")!==-1)return t;let r=0,o=0,n=0;return t.startsWith("#")&&(t=t.slice(1)),t.length===3?(r=parseInt(t[0]+t[0],16),o=parseInt(t[1]+t[1],16),n=parseInt(t[2]+t[2],16)):t.length===6?(r=parseInt(t.slice(0,2),16),o=parseInt(t.slice(2,4),16),n=parseInt(t.slice(4,6),16)):console.warn("Unsupported HEX color format"),`rgba(${r}, ${o}, ${n}, ${e})`},B=(t,e,r)=>{const o=f=>{const l=f.match(/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i);if(l)return[parseInt(l[1],16),parseInt(l[2],16),parseInt(l[3],16)];const g=f.match(/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/i);return g?[parseInt(g[1]),parseInt(g[2]),parseInt(g[3])]:[0,0,0]},[n,s,i]=o(t),[a,u,c]=o(e);return`rgb(${Math.round(n+(a-n)*r)}, ${Math.round(s+(u-s)*r)}, ${Math.round(i+(c-i)*r)})`},_=t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t);function j(t){return typeof t=="string"?t:t==null?"":typeof t=="number"||typeof t=="boolean"?String(t):Array.isArray(t)?t.map(e=>String(e)).join(", "):typeof t=="object"?JSON.stringify(t):String(t)}function V(t){return t==null?"":typeof t=="number"?Number.isFinite(t)?String(t):"":typeof t=="string"?t:typeof t=="boolean"?t?"1":"0":Array.isArray(t)&&t.length>0?String(t[0]):""}function F(t,e,...r){const o={},n=Array.isArray(e)?e:[e,...r],s=new Set(n);for(const i of Object.keys(t))s.has(i)||(o[i]=t[i]);return o}var p=M.PhoneNumberUtil.getInstance();const U=t=>p.parseAndKeepRawInput(t).getCountryCode(),H=t=>{if(!t||!t.replace(/\D/g,"").length)return!1;try{const e=p.parseAndKeepRawInput(t);return p.isValidNumber(e)}catch{return!1}},b=t=>[t,null],I=t=>[null,t instanceof Error?t:new Error(String(t))];async function w(t,e){try{return b(await(0,d.default)(async(r,o)=>{try{return await t(r,o)}catch(n){throw e?.isNonRetryable?.(n)&&r(n),n}},e))}catch(r){return I(r)}}async function K(t,e,r){return w(async(o,n)=>{const s=await t();if(!e(s))throw new Error("Condition not satisfied");return s},r)}function O(t){return Math.round(Number(t)*100)}function S(t){return(Number(t)/100).toFixed(2)}function W(t){return Number(S(t))}function Y(t){return t<1e3?t.toString():t<1e6?`${(t/1e3).toFixed(1).replace(/\.0$/,"")}k+`:t<1e9?`${(t/1e6).toFixed(1).replace(/\.0$/,"")}M+`:`${(t/1e9).toFixed(1).replace(/\.0$/,"")}B+`}function G(t){let e=null;return async(...r)=>e||(e=t(...r).finally(()=>e=null),e)}function z(t,e){const r=new Map;return async(...o)=>{const n=e(...o),s=r.get(n);if(s)return s;const i=t(...o).finally(()=>r.delete(n));return r.set(n,i),i}}function y(t,e){if(Object.is(t,e))return!0;if(typeof t!=typeof e)return!1;if(t===null||e===null||typeof t!="object"||typeof e!="object")return t===e;const r=Array.isArray(t),o=Array.isArray(e);if(r!==o)return!1;if(r&&o)return t.length!==e.length?!1:t.every((i,a)=>y(i,e[a]));const n=Object.keys(t).sort(),s=Object.keys(e).sort();return n.length!==s.length||!n.every((i,a)=>i===s[a])?!1:n.every(i=>y(t[i],e[i]))}const J=t=>{let e,r=[];return new Proxy(t,{construct(o,n){if(e||(e=new t(...n),r=n),!y(n,r))throw new Error("Cannot create multiple instances with different parameters");return e}})};function x(t,e=100){if(t==null)throw new Promise(r=>setTimeout(r,e));return t}const L=t=>{if(!t)return"";const e=new Date(t);return isNaN(e.getTime())?"":`${e.getFullYear()}/${(e.getMonth()+1).toString().padStart(2,"0")}/${e.getDate().toString().padStart(2,"0")}`},X=t=>{if(!t)return"Unknown";const e=new Date(t);if(isNaN(e.getTime()))return"Invalid date";const r=new Date().getTime()-e.getTime(),o=Math.floor(r/1e3),n=Math.floor(o/60),s=Math.floor(n/60),i=Math.floor(s/24),a=Math.floor(i/30),u=Math.floor(i/365);return u>0?`${u} year${u>1?"s":""} ago`:a>0?`${a} month${a>1?"s":""} ago`:i>0?`${i} day${i>1?"s":""} ago`:s>0?`${s} hour${s>1?"s":""} ago`:n>0?`${n} minute${n>1?"s":""} ago`:"Just now"};function Q(t){try{return new Date(t).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return t}}const Z=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${e.getFullYear()}/${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}},v=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}},tt=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${e.getFullYear()}/${String(e.getMonth()+1).padStart(2,"0")}/${String(e.getDate()).padStart(2,"0")}`}catch{return t}},et=t=>{try{const e=new Date(t);return isNaN(e.getTime())?t:`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}catch{return t}};function rt(t,e){return t.reduce((r,o,n)=>(r[o]=e?e(o,n):o,r),{})}exports.createMap=rt;exports.err=I;exports.formatDate=tt;exports.formatDateTime=Z;exports.formatDisplayDate=L;exports.formatMonthDayTime=v;exports.formatNumberAbbreviated=Y;exports.formatRelativeTime=X;exports.formatTickDate=Q;exports.formatTime=et;exports.getApiError=h;exports.getApiErrorMessage=T;exports.getCountryCode=U;exports.getItem=m.getItem;exports.hexToRGBA=$;exports.interpolateColor=B;exports.isValidEmail=_;exports.isValidPhoneNumber=H;exports.mergeById=R;exports.normalizeAddress=N;exports.ok=b;exports.omit=F;exports.onceAsync=G;exports.onceAsyncByKey=z;exports.pollUntil=K;exports.pruneArray=P;exports.removeItem=m.removeItem;exports.rgbToRgba=q;exports.setItem=m.setItem;exports.singleton=J;exports.suspenseIfNull=x;exports.toDatabasePrice=O;exports.toDisplayPrice=S;exports.toDisplayPriceNumber=W;exports.toNumberInputValue=V;exports.toRgbaWithAlpha=k;exports.toTextInputValue=j;exports.withRetryResult=w;
4
4
 
5
5
  //# sourceMappingURL=utils.cjs.map
package/dist/utils.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
  /*$vite$:1*/`)),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
3
3
  import { n as T, r as C, t as E } from "./chunk-lstorage-BVCD00Ow.mjs";
4
4
  import "./chunk-types-SD4MzUGp.mjs";
5
- import { t as y } from "./chunk-i18n-Bp6pPM9n.mjs";
5
+ import { t as y } from "./chunk-i18n-BBPhh6MT.mjs";
6
6
  import { PhoneNumberUtil as m } from "google-libphonenumber";
7
7
  import h from "async-retry";
8
8
  function F(t) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nfx-ui",
3
- "version": "0.5.0",
3
+ "version": "0.5.2",
4
4
  "type": "module",
5
5
  "description": "Unified frontend UI library for the NFX product family: shared React components, design tokens, theme variables, and layout primitives for a consistent look and behavior across NFX console and other apps.",
6
6
  "repository": {
@@ -111,7 +111,8 @@
111
111
  },
112
112
  "files": [
113
113
  "dist",
114
- "README.md"
114
+ "README.md",
115
+ "LICENSE"
115
116
  ],
116
117
  "scripts": {
117
118
  "build": "tsc -b && vite build",
@@ -137,7 +138,8 @@
137
138
  "NFX-UI",
138
139
  "design-system"
139
140
  ],
140
- "license": "UNLICENSED",
141
+ "license": "MIT",
142
+ "author": "NebulaForgeX",
141
143
  "dependencies": {
142
144
  "@dnd-kit/core": "^6.3.1",
143
145
  "@dnd-kit/sortable": "^10.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunk-i18n-Bp6pPM9n.mjs","names":[],"sources":["../src/languages/resources/en/layout.json","../src/languages/resources/en/language.json","../src/languages/resources/en/preference.json","../src/languages/resources/en/theme.json","../src/languages/resources/fr/layout.json","../src/languages/resources/fr/language.json","../src/languages/resources/fr/preference.json","../src/languages/resources/fr/theme.json","../src/languages/resources/zh/layout.json","../src/languages/resources/zh/language.json","../src/languages/resources/zh/preference.json","../src/languages/resources/zh/theme.json","../src/languages/resources/index.ts","../src/languages/languages/i18n.ts"],"sourcesContent":["{\n \"layoutSwitcher\": {\n \"show\": \"Show Sidebar\",\n \"hide\": \"Hide Sidebar\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"English\",\n \"zh\": \"Chinese\",\n \"fr\": \"French\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"Default\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"Theme\",\n \"language\": \"Language\",\n \"layout\": \"Layout\",\n \"preferences\": \"Preferences\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"Default\",\n \"light\": \"Light\",\n \"dark\": \"Dark\",\n \"cosmic\": \"Cosmic\",\n \"corporate\": \"Corporate\",\n \"forest\": \"Forest\",\n \"coffee\": \"Coffee\",\n \"wine\": \"Wine\"\n }\n}\n","{\n \"layoutSwitcher\": {\n \"show\": \"Afficher la barre latérale\",\n \"hide\": \"Masquer la barre latérale\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"Anglais\",\n \"zh\": \"Chinois\",\n \"fr\": \"Français\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"Par défaut\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"Thème\",\n \"language\": \"Langue\",\n \"layout\": \"Disposition\",\n \"preferences\": \"Préférences\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"Par défaut\",\n \"light\": \"Clair\",\n \"dark\": \"Sombre\",\n \"cosmic\": \"Cosmique\",\n \"corporate\": \"Entreprise\",\n \"forest\": \"Forêt\",\n \"coffee\": \"Coffee\",\n \"wine\": \"Vin\"\n }\n}\n","{\n \"layoutSwitcher\": {\n \"show\": \"显示侧边栏\",\n \"hide\": \"隐藏侧边栏\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"英语\",\n \"zh\": \"中文\",\n \"fr\": \"法语\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"默认\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"主题\",\n \"language\": \"语言\",\n \"layout\": \"布局\",\n \"preferences\": \"偏好设置\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"默认\",\n \"light\": \"浅色\",\n \"dark\": \"深色\",\n \"cosmic\": \"宇宙\",\n \"corporate\": \"企业\",\n \"forest\": \"森林\",\n \"coffee\": \"咖啡\",\n \"wine\": \"酒红\"\n }\n}\n","/**\n * NFX-UI 内置多语言资源:theme / language / layout / preference 四个命名空间,en / zh / fr 三种语言。\n * Built-in i18n resources: namespaces theme, language, layout, preference; languages en, zh, fr.\n *\n * 使用方可在 createI18nResources 时合并此资源,使 ThemeSwitcher / LanguageSwitcher / LayoutSwitcher 使用默认翻译。\n * Consumers can merge these resources in createI18nResources so switchers use default labels.\n */\nimport type { CreateI18nResourcesResult, NameSpacesMap, Resources } from \"../types\";\n\nimport enLayout from \"./en/layout.json\";\nimport enLanguage from \"./en/language.json\";\nimport enPreference from \"./en/preference.json\";\nimport enTheme from \"./en/theme.json\";\nimport frLayout from \"./fr/layout.json\";\nimport frLanguage from \"./fr/language.json\";\nimport frPreference from \"./fr/preference.json\";\nimport frTheme from \"./fr/theme.json\";\nimport zhLayout from \"./zh/layout.json\";\nimport zhLanguage from \"./zh/language.json\";\nimport zhPreference from \"./zh/preference.json\";\nimport zhTheme from \"./zh/theme.json\";\n\nexport const NFX_NAMESPACES = [\"theme\", \"language\", \"layout\", \"preference\"] as const;\nexport const NFX_NAMESPACES_MAP: NameSpacesMap = {\n theme: \"theme\",\n language: \"language\",\n layout: \"layout\",\n preference: \"preference\",\n};\n\nconst DEFAULT_NFX_RESOURCES: Resources = {\n en: {\n theme: enTheme as Record<string, unknown>,\n language: enLanguage as Record<string, unknown>,\n layout: enLayout as Record<string, unknown>,\n preference: enPreference as Record<string, unknown>,\n },\n zh: {\n theme: zhTheme as Record<string, unknown>,\n language: zhLanguage as Record<string, unknown>,\n layout: zhLayout as Record<string, unknown>,\n preference: zhPreference as Record<string, unknown>,\n },\n fr: {\n theme: frTheme as Record<string, unknown>,\n language: frLanguage as Record<string, unknown>,\n layout: frLayout as Record<string, unknown>,\n preference: frPreference as Record<string, unknown>,\n },\n};\n\n/**\n * 返回 NFX-UI 默认文案包,可与使用方自建 resources 合并后传入 createI18nResources。\n * Returns default NFX bundles; merge with your resources and pass to createI18nResources.\n */\nexport function getDefaultNfxBundles(): CreateI18nResourcesResult {\n return {\n RESOURCES: DEFAULT_NFX_RESOURCES,\n NAME_SPACES_MAP: NFX_NAMESPACES_MAP,\n NAME_SPACES: [...NFX_NAMESPACES],\n };\n}\n","/**\n * i18n 初始化与实例:initI18n 由 LanguageProvider 调用,changeLanguage 供外部切换语言。\n * 默认会合并 NFX-UI 自带的 theme / language / layout / preference 四个命名空间,使用方只需传入自己的 bundles。\n * i18n init and instance: initI18n called by LanguageProvider. Merges built-in theme/language/layout/preference by default.\n */\nimport type { InitI18nOptions } from \"../types\";\n\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { getDefaultNfxBundles } from \"../resources\";\nimport { LanguageEnum } from \"../types\";\n\n/**\n * 初始化 i18n。会先合并 NFX-UI 自带的四类 JSON(theme/language/layout/preference),再与用户传入的 bundles 合并(用户可覆盖)。\n * Init i18n. Merges built-in NFX bundles (theme, language, layout, preference) with user bundles (user overrides).\n */\nexport function initI18n(options: InitI18nOptions): void {\n const nfx = getDefaultNfxBundles();\n const user = options.bundles;\n const fallbackLng = options.fallbackLng ?? LanguageEnum.ZH;\n\n const RESOURCES = ([LanguageEnum.EN, LanguageEnum.ZH, LanguageEnum.FR] as const).reduce(\n (acc, lang) => ({\n ...acc,\n [lang]: {\n ...(nfx.RESOURCES[lang] ?? {}),\n ...(user.RESOURCES[lang] ?? {}),\n },\n }),\n {} as typeof user.RESOURCES,\n );\n const NAME_SPACES = [...user.NAME_SPACES, ...nfx.NAME_SPACES.filter((n) => !user.NAME_SPACES.includes(n))];\n\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n compatibilityJSON: \"v4\",\n resources: RESOURCES,\n lng: fallbackLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\n detection: { order: [\"navigator\", \"htmlTag\", \"path\", \"subdomain\"] },\n });\n\n const onLoad = options.onLoadExtraBundles;\n if (onLoad) {\n const apply = async (lng: LanguageEnum) => {\n const result = await onLoad(lng);\n if (result == null) return;\n const items = Array.isArray(result) ? result : [result];\n for (const { namespace, bundle } of items) {\n if (namespace && bundle && typeof bundle === \"object\") {\n i18n.addResourceBundle(lng, namespace, bundle, true, true);\n }\n }\n };\n void apply((i18n.language as LanguageEnum) || fallbackLng);\n i18n.on(\"languageChanged\", (lng) => void apply(lng as LanguageEnum));\n }\n}\n\nexport default i18n;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AYsBA,MAAa,IAAiB;AAAA,EAAC;AAAA,EAAS;AAAA,EAAY;AAAA,EAAU;GACjD,IAAoC;AAAA,EAC/C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;;AAGd,IAAM,IAAmC;AAAA,EACvC,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;EAEd,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;EAEd,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;;AAQhB,SAAgB,IAAkD;AAChE,SAAO;AAAA,IACL,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa,CAAC,GAAG,CAAA;AAAA;;ACzCrB,SAAgB,EAAS,GAAgC;AACvD,QAAM,IAAM,EAAA,GACN,IAAO,EAAQ,SACf,IAAc,EAAQ,eAAe,EAAa,IAElD,IAAa;AAAA,IAAC,EAAa;AAAA,IAAI,EAAa;AAAA,IAAI,EAAa;AAAA,IAAc,OAAA,CAC9E,GAAK,OAAU;AAAA,IACd,GAAG;AAAA,KACF,CAAA,GAAO;AAAA,MACN,GAAI,EAAI,UAAU,CAAA,KAAS,CAAA;AAAA,MAC3B,GAAI,EAAK,UAAU,CAAA,KAAS,CAAA;AAAA;MAGhC,CAAA,CAAE,GAEE,IAAc,CAAC,GAAG,EAAK,aAAa,GAAG,EAAI,YAAY,OAAA,CAAQ,MAAM,CAAC,EAAK,YAAY,SAAS,CAAA,CAAE,CAAC;AAEzG,EAAA,EACG,IAAI,CAAA,EACJ,IAAI,CAAA,EACJ,KAAK;AAAA,IACJ,mBAAmB;AAAA,IACnB,WAAW;AAAA,IACX,KAAK;AAAA,IACL,aAAA;AAAA,IACA,IAAI;AAAA,IACJ,WAAW,EAAY,CAAA;AAAA,IACvB,eAAe,EAAE,aAAa,GAAA;AAAA,IAC9B,cAAc;AAAA,IACd,WAAW,EAAE,OAAO;AAAA,MAAC;AAAA,MAAa;AAAA,MAAW;AAAA,MAAQ;AAAA,MAAY;AAAA,GAClE;AAEH,QAAM,IAAS,EAAQ;AACvB,MAAI,GAAQ;AACV,UAAM,IAAQ,OAAO,MAAsB;AACzC,YAAM,IAAS,MAAM,EAAO,CAAA;AAC5B,UAAI,KAAU,KAAM;AACpB,YAAM,IAAQ,MAAM,QAAQ,CAAA,IAAU,IAAS,CAAC,CAAA;AAChD,iBAAW,EAAE,WAAA,GAAW,QAAA,EAAA,KAAY,EAClC,CAAI,KAAa,KAAU,OAAO,KAAW,YAC3C,EAAK,kBAAkB,GAAK,GAAW,GAAQ,IAAM,EAAA;AAAA;AAItD,IAAA,EAAO,EAAK,YAA6B,CAAA,GAC9C,EAAK,GAAG,mBAAA,CAAoB,MAAA;AAAQ,MAAK,EAAM,CAAA;AAAA,KAAoB;AAAA;;AAIvE,IAAA,IAAe"}
@@ -1,3 +0,0 @@
1
- const h=require("./chunk-chunk-BFrxaqQT.cjs"),n=require("./chunk-types-BE3JCLff.cjs");let t=require("i18next");t=h.__toESM(t);let l=require("i18next-browser-languagedetector");l=h.__toESM(l);let p=require("react-i18next");const y={show:"Show Sidebar",hide:"Hide Sidebar"};var A={layoutSwitcher:y};const b={en:"English",zh:"Chinese",fr:"French"};var C={languageSwitcher:b};const P={default:"Default",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},N={theme:"Theme",language:"Language",layout:"Layout",preferences:"Preferences"};var $={baseSwitcher:P,preference:N};const v={default:"Default",light:"Light",dark:"Dark",cosmic:"Cosmic",corporate:"Corporate",forest:"Forest",coffee:"Coffee",wine:"Wine"};var L={themeSwitcher:v};const M={show:"Afficher la barre latérale",hide:"Masquer la barre latérale"};var x={layoutSwitcher:M};const O={en:"Anglais",zh:"Chinois",fr:"Français"};var R={languageSwitcher:O};const F={default:"Par défaut",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},q={theme:"Thème",language:"Langue",layout:"Disposition",preferences:"Préférences"};var k={baseSwitcher:F,preference:q};const D={default:"Par défaut",light:"Clair",dark:"Sombre",cosmic:"Cosmique",corporate:"Entreprise",forest:"Forêt",coffee:"Coffee",wine:"Vin"};var j={themeSwitcher:D};const U={show:"显示侧边栏",hide:"隐藏侧边栏"};var X={layoutSwitcher:U};const z={en:"英语",zh:"中文",fr:"法语"};var B={languageSwitcher:z};const T={default:"默认",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},W={theme:"主题",language:"语言",layout:"布局",preferences:"偏好设置"};var H={baseSwitcher:T,preference:W};const I={default:"默认",light:"浅色",dark:"深色",cosmic:"宇宙",corporate:"企业",forest:"森林",coffee:"咖啡",wine:"酒红"};var V={themeSwitcher:I};const S=["theme","language","layout","preference"],E={theme:"theme",language:"language",layout:"layout",preference:"preference"};var Z={en:{theme:L,language:C,layout:A,preference:$},zh:{theme:V,language:B,layout:X,preference:H},fr:{theme:j,language:R,layout:x,preference:k}};function m(){return{RESOURCES:Z,NAME_SPACES_MAP:E,NAME_SPACES:[...S]}}function J(u){const f=m(),o=u.bundles,i=u.fallbackLng??n.LanguageEnum.ZH,w=[n.LanguageEnum.EN,n.LanguageEnum.ZH,n.LanguageEnum.FR].reduce((r,e)=>({...r,[e]:{...f.RESOURCES[e]??{},...o.RESOURCES[e]??{}}}),{}),s=[...o.NAME_SPACES,...f.NAME_SPACES.filter(r=>!o.NAME_SPACES.includes(r))];t.default.use(l.default).use(p.initReactI18next).init({compatibilityJSON:"v4",resources:w,lng:i,fallbackLng:i,ns:s,defaultNS:s[0],interpolation:{escapeValue:!1},keySeparator:".",detection:{order:["navigator","htmlTag","path","subdomain"]}});const d=u.onLoadExtraBundles;if(d){const r=async e=>{const a=await d(e);if(a==null)return;const _=Array.isArray(a)?a:[a];for(const{namespace:g,bundle:c}of _)g&&c&&typeof c=="object"&&t.default.addResourceBundle(e,g,c,!0,!0)};r(t.default.language||i),t.default.on("languageChanged",e=>{r(e)})}}var G=t.default;Object.defineProperty(exports,"NFX_NAMESPACES",{enumerable:!0,get:function(){return S}});Object.defineProperty(exports,"NFX_NAMESPACES_MAP",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"getDefaultNfxBundles",{enumerable:!0,get:function(){return m}});Object.defineProperty(exports,"i18n_default",{enumerable:!0,get:function(){return G}});Object.defineProperty(exports,"initI18n",{enumerable:!0,get:function(){return J}});
2
-
3
- //# sourceMappingURL=chunk-i18n-_7W7guSV.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunk-i18n-_7W7guSV.cjs","names":[],"sources":["../src/languages/resources/en/layout.json","../src/languages/resources/en/language.json","../src/languages/resources/en/preference.json","../src/languages/resources/en/theme.json","../src/languages/resources/fr/layout.json","../src/languages/resources/fr/language.json","../src/languages/resources/fr/preference.json","../src/languages/resources/fr/theme.json","../src/languages/resources/zh/layout.json","../src/languages/resources/zh/language.json","../src/languages/resources/zh/preference.json","../src/languages/resources/zh/theme.json","../src/languages/resources/index.ts","../src/languages/languages/i18n.ts"],"sourcesContent":["{\n \"layoutSwitcher\": {\n \"show\": \"Show Sidebar\",\n \"hide\": \"Hide Sidebar\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"English\",\n \"zh\": \"Chinese\",\n \"fr\": \"French\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"Default\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"Theme\",\n \"language\": \"Language\",\n \"layout\": \"Layout\",\n \"preferences\": \"Preferences\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"Default\",\n \"light\": \"Light\",\n \"dark\": \"Dark\",\n \"cosmic\": \"Cosmic\",\n \"corporate\": \"Corporate\",\n \"forest\": \"Forest\",\n \"coffee\": \"Coffee\",\n \"wine\": \"Wine\"\n }\n}\n","{\n \"layoutSwitcher\": {\n \"show\": \"Afficher la barre latérale\",\n \"hide\": \"Masquer la barre latérale\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"Anglais\",\n \"zh\": \"Chinois\",\n \"fr\": \"Français\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"Par défaut\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"Thème\",\n \"language\": \"Langue\",\n \"layout\": \"Disposition\",\n \"preferences\": \"Préférences\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"Par défaut\",\n \"light\": \"Clair\",\n \"dark\": \"Sombre\",\n \"cosmic\": \"Cosmique\",\n \"corporate\": \"Entreprise\",\n \"forest\": \"Forêt\",\n \"coffee\": \"Coffee\",\n \"wine\": \"Vin\"\n }\n}\n","{\n \"layoutSwitcher\": {\n \"show\": \"显示侧边栏\",\n \"hide\": \"隐藏侧边栏\"\n }\n}\n","{\n \"languageSwitcher\": {\n \"en\": \"英语\",\n \"zh\": \"中文\",\n \"fr\": \"法语\"\n }\n}\n","{\n \"baseSwitcher\": {\n \"default\": \"默认\",\n \"ios\": \"iOS\",\n \"android\": \"Android\",\n \"windows\": \"Windows\",\n \"linux\": \"Linux\"\n },\n \"preference\": {\n \"theme\": \"主题\",\n \"language\": \"语言\",\n \"layout\": \"布局\",\n \"preferences\": \"偏好设置\"\n }\n}\n","{\n \"themeSwitcher\": {\n \"default\": \"默认\",\n \"light\": \"浅色\",\n \"dark\": \"深色\",\n \"cosmic\": \"宇宙\",\n \"corporate\": \"企业\",\n \"forest\": \"森林\",\n \"coffee\": \"咖啡\",\n \"wine\": \"酒红\"\n }\n}\n","/**\n * NFX-UI 内置多语言资源:theme / language / layout / preference 四个命名空间,en / zh / fr 三种语言。\n * Built-in i18n resources: namespaces theme, language, layout, preference; languages en, zh, fr.\n *\n * 使用方可在 createI18nResources 时合并此资源,使 ThemeSwitcher / LanguageSwitcher / LayoutSwitcher 使用默认翻译。\n * Consumers can merge these resources in createI18nResources so switchers use default labels.\n */\nimport type { CreateI18nResourcesResult, NameSpacesMap, Resources } from \"../types\";\n\nimport enLayout from \"./en/layout.json\";\nimport enLanguage from \"./en/language.json\";\nimport enPreference from \"./en/preference.json\";\nimport enTheme from \"./en/theme.json\";\nimport frLayout from \"./fr/layout.json\";\nimport frLanguage from \"./fr/language.json\";\nimport frPreference from \"./fr/preference.json\";\nimport frTheme from \"./fr/theme.json\";\nimport zhLayout from \"./zh/layout.json\";\nimport zhLanguage from \"./zh/language.json\";\nimport zhPreference from \"./zh/preference.json\";\nimport zhTheme from \"./zh/theme.json\";\n\nexport const NFX_NAMESPACES = [\"theme\", \"language\", \"layout\", \"preference\"] as const;\nexport const NFX_NAMESPACES_MAP: NameSpacesMap = {\n theme: \"theme\",\n language: \"language\",\n layout: \"layout\",\n preference: \"preference\",\n};\n\nconst DEFAULT_NFX_RESOURCES: Resources = {\n en: {\n theme: enTheme as Record<string, unknown>,\n language: enLanguage as Record<string, unknown>,\n layout: enLayout as Record<string, unknown>,\n preference: enPreference as Record<string, unknown>,\n },\n zh: {\n theme: zhTheme as Record<string, unknown>,\n language: zhLanguage as Record<string, unknown>,\n layout: zhLayout as Record<string, unknown>,\n preference: zhPreference as Record<string, unknown>,\n },\n fr: {\n theme: frTheme as Record<string, unknown>,\n language: frLanguage as Record<string, unknown>,\n layout: frLayout as Record<string, unknown>,\n preference: frPreference as Record<string, unknown>,\n },\n};\n\n/**\n * 返回 NFX-UI 默认文案包,可与使用方自建 resources 合并后传入 createI18nResources。\n * Returns default NFX bundles; merge with your resources and pass to createI18nResources.\n */\nexport function getDefaultNfxBundles(): CreateI18nResourcesResult {\n return {\n RESOURCES: DEFAULT_NFX_RESOURCES,\n NAME_SPACES_MAP: NFX_NAMESPACES_MAP,\n NAME_SPACES: [...NFX_NAMESPACES],\n };\n}\n","/**\n * i18n 初始化与实例:initI18n 由 LanguageProvider 调用,changeLanguage 供外部切换语言。\n * 默认会合并 NFX-UI 自带的 theme / language / layout / preference 四个命名空间,使用方只需传入自己的 bundles。\n * i18n init and instance: initI18n called by LanguageProvider. Merges built-in theme/language/layout/preference by default.\n */\nimport type { InitI18nOptions } from \"../types\";\n\nimport i18n from \"i18next\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nimport { initReactI18next } from \"react-i18next\";\n\nimport { getDefaultNfxBundles } from \"../resources\";\nimport { LanguageEnum } from \"../types\";\n\n/**\n * 初始化 i18n。会先合并 NFX-UI 自带的四类 JSON(theme/language/layout/preference),再与用户传入的 bundles 合并(用户可覆盖)。\n * Init i18n. Merges built-in NFX bundles (theme, language, layout, preference) with user bundles (user overrides).\n */\nexport function initI18n(options: InitI18nOptions): void {\n const nfx = getDefaultNfxBundles();\n const user = options.bundles;\n const fallbackLng = options.fallbackLng ?? LanguageEnum.ZH;\n\n const RESOURCES = ([LanguageEnum.EN, LanguageEnum.ZH, LanguageEnum.FR] as const).reduce(\n (acc, lang) => ({\n ...acc,\n [lang]: {\n ...(nfx.RESOURCES[lang] ?? {}),\n ...(user.RESOURCES[lang] ?? {}),\n },\n }),\n {} as typeof user.RESOURCES,\n );\n const NAME_SPACES = [...user.NAME_SPACES, ...nfx.NAME_SPACES.filter((n) => !user.NAME_SPACES.includes(n))];\n\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n compatibilityJSON: \"v4\",\n resources: RESOURCES,\n lng: fallbackLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\n detection: { order: [\"navigator\", \"htmlTag\", \"path\", \"subdomain\"] },\n });\n\n const onLoad = options.onLoadExtraBundles;\n if (onLoad) {\n const apply = async (lng: LanguageEnum) => {\n const result = await onLoad(lng);\n if (result == null) return;\n const items = Array.isArray(result) ? result : [result];\n for (const { namespace, bundle } of items) {\n if (namespace && bundle && typeof bundle === \"object\") {\n i18n.addResourceBundle(lng, namespace, bundle, true, true);\n }\n }\n };\n void apply((i18n.language as LanguageEnum) || fallbackLng);\n i18n.on(\"languageChanged\", (lng) => void apply(lng as LanguageEnum));\n }\n}\n\nexport default i18n;\n"],"mappings":"yrDYsBA,MAAa,EAAiB,CAAC,QAAS,WAAY,SAAU,cACjD,EAAoC,CAC/C,MAAO,QACP,SAAU,WACV,OAAQ,SACR,WAAY,cAGd,IAAM,EAAmC,CACvC,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,GAEd,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,GAEd,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,IAQhB,SAAgB,GAAkD,CAChE,MAAO,CACL,UAAW,EACX,gBAAiB,EACjB,YAAa,CAAC,GAAG,CAAA,GCzCrB,SAAgB,EAAS,EAAgC,CACvD,MAAM,EAAM,EAAA,EACN,EAAO,EAAQ,QACf,EAAc,EAAQ,aAAe,EAAA,aAAa,GAElD,EAAa,CAAC,EAAA,aAAa,GAAI,EAAA,aAAa,GAAI,EAAA,aAAa,IAAc,OAAA,CAC9E,EAAK,KAAU,CACd,GAAG,GACF,CAAA,EAAO,CACN,GAAI,EAAI,UAAU,CAAA,GAAS,CAAA,EAC3B,GAAI,EAAK,UAAU,CAAA,GAAS,CAAA,KAGhC,CAAA,CAAE,EAEE,EAAc,CAAC,GAAG,EAAK,YAAa,GAAG,EAAI,YAAY,OAAQ,GAAM,CAAC,EAAK,YAAY,SAAS,CAAA,CAAE,CAAC,EAEzG,EAAA,QACG,IAAI,EAAA,OAAA,EACJ,IAAI,EAAA,gBAAA,EACJ,KAAK,CACJ,kBAAmB,KACnB,UAAW,EACX,IAAK,EACL,YAAA,EACA,GAAI,EACJ,UAAW,EAAY,CAAA,EACvB,cAAe,CAAE,YAAa,EAAA,EAC9B,aAAc,IACd,UAAW,CAAE,MAAO,CAAC,YAAa,UAAW,OAAQ,YAAY,EAClE,EAEH,MAAM,EAAS,EAAQ,mBACvB,GAAI,EAAQ,CACV,MAAM,EAAQ,MAAO,GAAsB,CACzC,MAAM,EAAS,MAAM,EAAO,CAAA,EAC5B,GAAI,GAAU,KAAM,OACpB,MAAM,EAAQ,MAAM,QAAQ,CAAA,EAAU,EAAS,CAAC,CAAA,EAChD,SAAW,CAAE,UAAA,EAAW,OAAA,CAAA,IAAY,EAC9B,GAAa,GAAU,OAAO,GAAW,UAC3C,EAAA,QAAK,kBAAkB,EAAK,EAAW,EAAQ,GAAM,EAAA,GAItD,EAAO,EAAA,QAAK,UAA6B,CAAA,EAC9C,EAAA,QAAK,GAAG,kBAAoB,GAAA,CAAa,EAAM,CAAA,EAAoB,GAIvE,IAAA,EAAe,EAAA"}
@@ -1,3 +0,0 @@
1
- let t=(function(e){return e.DEFAULT="default",e.LIGHT="light",e.CORPORATE="corporate",e.FOREST="forest",e.DARK="dark",e.COSMIC="cosmic",e.COFFEE="coffee",e.WINE="wine",e})({});const n=t.DEFAULT,o=Object.values(t);let r=(function(e){return e.DEFAULT="default",e.IOS="ios",e.ANDROID="android",e.WINDOWS="windows",e.LINUX="linux",e})({});const u=r.DEFAULT,c=Object.values(r),E="theme-color",O="theme-base";Object.defineProperty(exports,"BASE_STORAGE_KEY",{enumerable:!0,get:function(){return O}});Object.defineProperty(exports,"BASE_VALUES",{enumerable:!0,get:function(){return c}});Object.defineProperty(exports,"BaseEnum",{enumerable:!0,get:function(){return r}});Object.defineProperty(exports,"COLOR_STORAGE_KEY",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"DEFAULT_BASE",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"DEFAULT_THEME",{enumerable:!0,get:function(){return n}});Object.defineProperty(exports,"THEME_VALUES",{enumerable:!0,get:function(){return o}});Object.defineProperty(exports,"ThemeEnum",{enumerable:!0,get:function(){return t}});
2
-
3
- //# sourceMappingURL=chunk-types-CkbZrFqZ.cjs.map