nfx-ui 0.10.2 → 0.10.4

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.
@@ -0,0 +1,208 @@
1
+ import { n as E, r as A, t as _ } from "./chunk-lstorage-BVCD00Ow.mjs";
2
+ import { i as o, n as i, r as S } from "./chunk-language-B8sfGadQ.mjs";
3
+ import t from "i18next";
4
+ import y from "i18next-browser-languagedetector";
5
+ import { initReactI18next as C } from "react-i18next";
6
+ var L = {
7
+ show: "Show Sidebar",
8
+ hide: "Hide Sidebar"
9
+ }, b = { layoutSwitcher: L }, $ = {
10
+ en: "English",
11
+ zh: "Chinese",
12
+ fr: "French"
13
+ }, N = { languageSwitcher: $ }, P = {
14
+ default: "Default",
15
+ ios: "iOS",
16
+ android: "Android",
17
+ windows: "Windows",
18
+ linux: "Linux"
19
+ }, R = {
20
+ theme: "Theme",
21
+ language: "Language",
22
+ layout: "Layout",
23
+ preferences: "Preferences"
24
+ }, x = {
25
+ baseSwitcher: P,
26
+ preference: R
27
+ }, M = {
28
+ default: "Default",
29
+ light: "Light",
30
+ dark: "Dark",
31
+ cosmic: "Cosmic",
32
+ corporate: "Corporate",
33
+ forest: "Forest",
34
+ coffee: "Coffee",
35
+ wine: "Wine",
36
+ wheat: "Wheat"
37
+ }, O = { themeSwitcher: M }, F = {
38
+ show: "Afficher la barre latérale",
39
+ hide: "Masquer la barre latérale"
40
+ }, U = { layoutSwitcher: F }, k = {
41
+ en: "Anglais",
42
+ zh: "Chinois",
43
+ fr: "Français"
44
+ }, D = { languageSwitcher: k }, G = {
45
+ default: "Par défaut",
46
+ ios: "iOS",
47
+ android: "Android",
48
+ windows: "Windows",
49
+ linux: "Linux"
50
+ }, I = {
51
+ theme: "Thème",
52
+ language: "Langue",
53
+ layout: "Disposition",
54
+ preferences: "Préférences"
55
+ }, T = {
56
+ baseSwitcher: G,
57
+ preference: I
58
+ }, W = {
59
+ default: "Par défaut",
60
+ light: "Clair",
61
+ dark: "Sombre",
62
+ cosmic: "Cosmique",
63
+ corporate: "Entreprise",
64
+ forest: "Forêt",
65
+ coffee: "Coffee",
66
+ wine: "Vin",
67
+ wheat: "Blé"
68
+ }, z = { themeSwitcher: W }, B = {
69
+ show: "显示侧边栏",
70
+ hide: "隐藏侧边栏"
71
+ }, H = { layoutSwitcher: B }, V = {
72
+ en: "英语",
73
+ zh: "中文",
74
+ fr: "法语"
75
+ }, X = { languageSwitcher: V }, q = {
76
+ default: "默认",
77
+ ios: "iOS",
78
+ android: "Android",
79
+ windows: "Windows",
80
+ linux: "Linux"
81
+ }, Z = {
82
+ theme: "主题",
83
+ language: "语言",
84
+ layout: "布局",
85
+ preferences: "偏好设置"
86
+ }, j = {
87
+ baseSwitcher: q,
88
+ preference: Z
89
+ }, J = {
90
+ default: "默认",
91
+ light: "浅色",
92
+ dark: "深色",
93
+ cosmic: "宇宙",
94
+ corporate: "企业",
95
+ forest: "森林",
96
+ coffee: "咖啡",
97
+ wine: "酒红",
98
+ wheat: "麦田"
99
+ }, K = { themeSwitcher: J }, Y = [
100
+ "theme",
101
+ "language",
102
+ "layout",
103
+ "preference"
104
+ ], Q = {
105
+ theme: "theme",
106
+ language: "language",
107
+ layout: "layout",
108
+ preference: "preference"
109
+ }, ee = {
110
+ en: {
111
+ theme: O,
112
+ language: N,
113
+ layout: b,
114
+ preference: x
115
+ },
116
+ zh: {
117
+ theme: K,
118
+ language: X,
119
+ layout: H,
120
+ preference: j
121
+ },
122
+ fr: {
123
+ theme: z,
124
+ language: D,
125
+ layout: U,
126
+ preference: T
127
+ }
128
+ };
129
+ function ae() {
130
+ return {
131
+ RESOURCES: ee,
132
+ NAME_SPACES_MAP: Q,
133
+ NAME_SPACES: [...Y]
134
+ };
135
+ }
136
+ function re() {
137
+ const a = _(i);
138
+ return a == null || S.includes(a) ? a : void 0;
139
+ }
140
+ function te(a) {
141
+ A(i, a);
142
+ }
143
+ function se() {
144
+ E(i);
145
+ }
146
+ var h = !1;
147
+ function ce(a) {
148
+ const c = ae(), u = a.bundles, l = a.fallbackLng ?? o.ZH, m = [
149
+ o.EN,
150
+ o.ZH,
151
+ o.FR
152
+ ].reduce((r, e) => ({
153
+ ...r,
154
+ [e]: {
155
+ ...c.RESOURCES[e] ?? {},
156
+ ...u.RESOURCES[e] ?? {}
157
+ }
158
+ }), {}), f = [...u.NAME_SPACES, ...c.NAME_SPACES.filter((r) => !u.NAME_SPACES.includes(r))], w = re() ?? l, p = (r) => {
159
+ const e = r.split("-")[0]?.toLowerCase() ?? "";
160
+ S.includes(e) && te(e);
161
+ };
162
+ h || (t.on("languageChanged", p), h = !0), t.use(y).use(C).init({
163
+ compatibilityJSON: "v4",
164
+ resources: m,
165
+ lng: w,
166
+ fallbackLng: l,
167
+ ns: f,
168
+ defaultNS: f[0],
169
+ interpolation: { escapeValue: !1 },
170
+ keySeparator: ".",
171
+ detection: {
172
+ order: [
173
+ "localStorage",
174
+ "navigator",
175
+ "htmlTag",
176
+ "path",
177
+ "subdomain"
178
+ ],
179
+ lookupLocalStorage: i,
180
+ caches: ["localStorage"]
181
+ }
182
+ });
183
+ const g = a.onLoadExtraBundles;
184
+ if (g) {
185
+ const r = async (e) => {
186
+ const n = await g(e);
187
+ if (n == null) return;
188
+ const v = Array.isArray(n) ? n : [n];
189
+ for (const { namespace: d, bundle: s } of v) d && s && typeof s == "object" && t.addResourceBundle(e, d, s, !0, !0);
190
+ };
191
+ r(t.language || l), t.on("languageChanged", (e) => {
192
+ r(e);
193
+ });
194
+ }
195
+ }
196
+ var fe = t;
197
+ export {
198
+ te as a,
199
+ ae as c,
200
+ se as i,
201
+ ce as n,
202
+ Y as o,
203
+ re as r,
204
+ Q as s,
205
+ fe as t
206
+ };
207
+
208
+ //# sourceMappingURL=chunk-i18n-C8_Q1F_l.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-i18n-C8_Q1F_l.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/utils/languageStorage.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 \"wheat\": \"Wheat\"\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 \"wheat\": \"Blé\"\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 \"wheat\": \"麦田\"\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 * 语言相关 localStorage 读写与移除,统一走 utils/lstorage;读写类型为 LanguageEnum。\n * Language localStorage get/set/remove via utils/lstorage; typed as LanguageEnum.\n */\nimport type { Nilable } from \"@/types/utils\";\nimport { getItem, removeItem, setItem } from \"@/utils/lstorage\";\n\nimport { LANGUAGE_STORAGE_KEY, LANGUAGE_VALUES, LanguageEnum } from \"../types\";\n\nexport function getLanguageStorage(): Nilable<LanguageEnum> {\n const raw = getItem(LANGUAGE_STORAGE_KEY);\n if (raw == null) return raw;\n return (LANGUAGE_VALUES as readonly string[]).includes(raw) ? (raw as LanguageEnum) : undefined;\n}\n\nexport function setLanguageStorage(value: LanguageEnum): void {\n setItem(LANGUAGE_STORAGE_KEY, value);\n}\n\nexport function removeLanguageStorage(): void {\n removeItem(LANGUAGE_STORAGE_KEY);\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, LANGUAGE_STORAGE_KEY, LANGUAGE_VALUES } from \"../types\";\nimport { getLanguageStorage, setLanguageStorage } from \"../utils/languageStorage\";\n\nlet languagePersistAttached = false;\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 /** Same key as `lookupLocalStorage`: prefer saved choice before navigator. */\n const initialLng = getLanguageStorage() ?? fallbackLng;\n\n const persistLanguage = (lng: string) => {\n const base = lng.split(\"-\")[0]?.toLowerCase() ?? \"\";\n if ((LANGUAGE_VALUES as readonly string[]).includes(base)) {\n setLanguageStorage(base as LanguageEnum);\n }\n };\n\n if (!languagePersistAttached) {\n i18n.on(\"languageChanged\", persistLanguage);\n languagePersistAttached = true;\n }\n\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n compatibilityJSON: \"v4\",\n resources: RESOURCES,\n lng: initialLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\n /**\n * Detector walks `order` and concatenates hits; first candidate wins for resolution.\n * `lookupLocalStorage` must match `getLanguageStorage` / `setLanguageStorage` (LANGUAGE_STORAGE_KEY).\n * Explicit `lng: initialLng` above mirrors that rule so behavior is obvious without reading plugin internals.\n */\n detection: {\n order: [\"localStorage\", \"navigator\", \"htmlTag\", \"path\", \"subdomain\"],\n lookupLocalStorage: LANGUAGE_STORAGE_KEY,\n caches: [\"localStorage\"],\n },\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BYsBa,IAAiB;AAAA,EAAC;AAAA,EAAS;AAAA,EAAY;AAAA,EAAU;GACjD,IAAoC;AAAA,EAC/C,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,YAAY;GAGR,KAAmC;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,KAAkD;AAChE,SAAO;AAAA,IACL,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,aAAa,CAAC,GAAG,CAAA;AAAA;;AClDrB,SAAgB,KAA4C;AAC1D,QAAM,IAAM,EAAQ,CAAA;AACpB,SAAI,KAAO,QACH,EAAsC,SAAS,CAAA,IAD/B,IAC8D;;AAGxF,SAAgB,GAAmB,GAA2B;AAC5D,EAAA,EAAQ,GAAsB,CAAA;;AAGhC,SAAgB,KAA8B;AAC5C,EAAA,EAAW,CAAA;;ACLb,IAAI,IAA0B;AAM9B,SAAgB,GAAS,GAAgC;AACvD,QAAM,IAAM,GAAA,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,GAGnG,IAAa,GAAA,KAAwB,GAErC,IAAA,CAAmB,MAAgB;AACvC,UAAM,IAAO,EAAI,MAAM,GAAA,EAAK,CAAA,GAAI,YAAA,KAAiB;AACjD,IAAK,EAAsC,SAAS,CAAA,KAClD,GAAmB,CAAA;AAAA;AAIvB,EAAK,MACH,EAAK,GAAG,mBAAmB,CAAA,GAC3B,IAA0B,KAG5B,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,IAMd,WAAW;AAAA,MACT,OAAO;AAAA,QAAC;AAAA,QAAgB;AAAA,QAAa;AAAA,QAAW;AAAA,QAAQ;AAAA;MACxD,oBAAoB;AAAA,MACpB,QAAQ,CAAC,cAAA;AAAA;GAEZ;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,KAAe"}
@@ -0,0 +1,3 @@
1
+ const E=require("./chunk-chunk-BFrxaqQT.cjs"),f=require("./chunk-lstorage-BnxLXHgH.cjs"),a=require("./chunk-language-Bqmpuf2W.cjs");let n=require("i18next");n=E.__toESM(n);let c=require("i18next-browser-languagedetector");c=E.__toESM(c);let C=require("react-i18next");var N={show:"Show Sidebar",hide:"Hide Sidebar"},P={layoutSwitcher:N},O={en:"English",zh:"Chinese",fr:"French"},$={languageSwitcher:O},R={default:"Default",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},G={theme:"Theme",language:"Language",layout:"Layout",preferences:"Preferences"},M={baseSwitcher:R,preference:G},x={default:"Default",light:"Light",dark:"Dark",cosmic:"Cosmic",corporate:"Corporate",forest:"Forest",coffee:"Coffee",wine:"Wine",wheat:"Wheat"},U={themeSwitcher:x},q={show:"Afficher la barre latérale",hide:"Masquer la barre latérale"},F={layoutSwitcher:q},j={en:"Anglais",zh:"Chinois",fr:"Français"},k={languageSwitcher:j},T={default:"Par défaut",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},D={theme:"Thème",language:"Langue",layout:"Disposition",preferences:"Préférences"},I={baseSwitcher:T,preference:D},B={default:"Par défaut",light:"Clair",dark:"Sombre",cosmic:"Cosmique",corporate:"Entreprise",forest:"Forêt",coffee:"Coffee",wine:"Vin",wheat:"Blé"},W={themeSwitcher:B},X={show:"显示侧边栏",hide:"隐藏侧边栏"},z={layoutSwitcher:X},K={en:"英语",zh:"中文",fr:"法语"},V={languageSwitcher:K},Y={default:"默认",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},H={theme:"主题",language:"语言",layout:"布局",preferences:"偏好设置"},Z={baseSwitcher:Y,preference:H},J={default:"默认",light:"浅色",dark:"深色",cosmic:"宇宙",corporate:"企业",forest:"森林",coffee:"咖啡",wine:"酒红",wheat:"麦田"},Q={themeSwitcher:J},A=["theme","language","layout","preference"],_={theme:"theme",language:"language",layout:"layout",preference:"preference"},ee={en:{theme:U,language:$,layout:P,preference:M},zh:{theme:Q,language:V,layout:z,preference:Z},fr:{theme:W,language:k,layout:F,preference:I}};function m(){return{RESOURCES:ee,NAME_SPACES_MAP:_,NAME_SPACES:[...A]}}function w(){const r=f.getItem(a.LANGUAGE_STORAGE_KEY);return r==null||a.LANGUAGE_VALUES.includes(r)?r:void 0}function p(r){f.setItem(a.LANGUAGE_STORAGE_KEY,r)}function re(){f.removeItem(a.LANGUAGE_STORAGE_KEY)}var h=!1;function ae(r){const g=m(),i=r.bundles,o=r.fallbackLng??a.LanguageEnum.ZH,v=[a.LanguageEnum.EN,a.LanguageEnum.ZH,a.LanguageEnum.FR].reduce((t,e)=>({...t,[e]:{...g.RESOURCES[e]??{},...i.RESOURCES[e]??{}}}),{}),s=[...i.NAME_SPACES,...g.NAME_SPACES.filter(t=>!i.NAME_SPACES.includes(t))],b=w()??o,L=t=>{const e=t.split("-")[0]?.toLowerCase()??"";a.LANGUAGE_VALUES.includes(e)&&p(e)};h||(n.default.on("languageChanged",L),h=!0),n.default.use(c.default).use(C.initReactI18next).init({compatibilityJSON:"v4",resources:v,lng:b,fallbackLng:o,ns:s,defaultNS:s[0],interpolation:{escapeValue:!1},keySeparator:".",detection:{order:["localStorage","navigator","htmlTag","path","subdomain"],lookupLocalStorage:a.LANGUAGE_STORAGE_KEY,caches:["localStorage"]}});const d=r.onLoadExtraBundles;if(d){const t=async e=>{const u=await d(e);if(u==null)return;const y=Array.isArray(u)?u:[u];for(const{namespace:S,bundle:l}of y)S&&l&&typeof l=="object"&&n.default.addResourceBundle(e,S,l,!0,!0)};t(n.default.language||o),n.default.on("languageChanged",e=>{t(e)})}}var te=n.default;Object.defineProperty(exports,"NFX_NAMESPACES",{enumerable:!0,get:function(){return A}});Object.defineProperty(exports,"NFX_NAMESPACES_MAP",{enumerable:!0,get:function(){return _}});Object.defineProperty(exports,"getDefaultNfxBundles",{enumerable:!0,get:function(){return m}});Object.defineProperty(exports,"getLanguageStorage",{enumerable:!0,get:function(){return w}});Object.defineProperty(exports,"i18n_default",{enumerable:!0,get:function(){return te}});Object.defineProperty(exports,"initI18n",{enumerable:!0,get:function(){return ae}});Object.defineProperty(exports,"removeLanguageStorage",{enumerable:!0,get:function(){return re}});Object.defineProperty(exports,"setLanguageStorage",{enumerable:!0,get:function(){return p}});
2
+
3
+ //# sourceMappingURL=chunk-i18n-DA_n5DaW.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-i18n-DA_n5DaW.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/utils/languageStorage.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 \"wheat\": \"Wheat\"\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 \"wheat\": \"Blé\"\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 \"wheat\": \"麦田\"\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 * 语言相关 localStorage 读写与移除,统一走 utils/lstorage;读写类型为 LanguageEnum。\n * Language localStorage get/set/remove via utils/lstorage; typed as LanguageEnum.\n */\nimport type { Nilable } from \"@/types/utils\";\nimport { getItem, removeItem, setItem } from \"@/utils/lstorage\";\n\nimport { LANGUAGE_STORAGE_KEY, LANGUAGE_VALUES, LanguageEnum } from \"../types\";\n\nexport function getLanguageStorage(): Nilable<LanguageEnum> {\n const raw = getItem(LANGUAGE_STORAGE_KEY);\n if (raw == null) return raw;\n return (LANGUAGE_VALUES as readonly string[]).includes(raw) ? (raw as LanguageEnum) : undefined;\n}\n\nexport function setLanguageStorage(value: LanguageEnum): void {\n setItem(LANGUAGE_STORAGE_KEY, value);\n}\n\nexport function removeLanguageStorage(): void {\n removeItem(LANGUAGE_STORAGE_KEY);\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, LANGUAGE_STORAGE_KEY, LANGUAGE_VALUES } from \"../types\";\nimport { getLanguageStorage, setLanguageStorage } from \"../utils/languageStorage\";\n\nlet languagePersistAttached = false;\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 /** Same key as `lookupLocalStorage`: prefer saved choice before navigator. */\n const initialLng = getLanguageStorage() ?? fallbackLng;\n\n const persistLanguage = (lng: string) => {\n const base = lng.split(\"-\")[0]?.toLowerCase() ?? \"\";\n if ((LANGUAGE_VALUES as readonly string[]).includes(base)) {\n setLanguageStorage(base as LanguageEnum);\n }\n };\n\n if (!languagePersistAttached) {\n i18n.on(\"languageChanged\", persistLanguage);\n languagePersistAttached = true;\n }\n\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n compatibilityJSON: \"v4\",\n resources: RESOURCES,\n lng: initialLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\n /**\n * Detector walks `order` and concatenates hits; first candidate wins for resolution.\n * `lookupLocalStorage` must match `getLanguageStorage` / `setLanguageStorage` (LANGUAGE_STORAGE_KEY).\n * Explicit `lng: initialLng` above mirrors that rule so behavior is obvious without reading plugin internals.\n */\n detection: {\n order: [\"localStorage\", \"navigator\", \"htmlTag\", \"path\", \"subdomain\"],\n lookupLocalStorage: LANGUAGE_STORAGE_KEY,\n caches: [\"localStorage\"],\n },\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":"wpDYsBa,EAAiB,CAAC,QAAS,WAAY,SAAU,cACjD,EAAoC,CAC/C,MAAO,QACP,SAAU,WACV,OAAQ,SACR,WAAY,cAGR,GAAmC,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,GACX,gBAAiB,EACjB,YAAa,CAAC,GAAG,CAAA,GClDrB,SAAgB,GAA4C,CAC1D,MAAM,EAAM,EAAA,QAAQ,EAAA,oBAAA,EACpB,OAAI,GAAO,MACH,EAAA,gBAAsC,SAAS,CAAA,EAD/B,EAC8D,OAGxF,SAAgB,EAAmB,EAA2B,CAC5D,EAAA,QAAQ,EAAA,qBAAsB,CAAA,EAGhC,SAAgB,IAA8B,CAC5C,EAAA,WAAW,EAAA,oBAAA,ECLb,IAAI,EAA0B,GAM9B,SAAgB,GAAS,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,EAGnG,EAAa,EAAA,GAAwB,EAErC,EAAmB,GAAgB,CACvC,MAAM,EAAO,EAAI,MAAM,GAAA,EAAK,CAAA,GAAI,YAAA,GAAiB,GAC5C,EAAA,gBAAsC,SAAS,CAAA,GAClD,EAAmB,CAAA,GAIlB,IACH,EAAA,QAAK,GAAG,kBAAmB,CAAA,EAC3B,EAA0B,IAG5B,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,IAMd,UAAW,CACT,MAAO,CAAC,eAAgB,YAAa,UAAW,OAAQ,aACxD,mBAAoB,EAAA,qBACpB,OAAQ,CAAC,cAAA,GAEZ,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,GAAe,EAAA"}
@@ -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}.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}.style-module__container___Hh3-c{width:100%;height:100%;position:relative;overflow:hidden}
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 U=require("./chunk-chunk-BFrxaqQT.cjs"),r=require("./chunk-lstorage-BnxLXHgH.cjs"),a=require("./chunk-language-Bqmpuf2W.cjs"),n=require("./chunk-i18n-BCDF-skF.cjs");let t=require("react"),l=require("react/jsx-runtime");function s(e){return n.i18n_default.t("languageSwitcher."+e,{ns:"language",defaultValue:e})}function S(){const e=(0,t.useCallback)(s,[]);return(0,t.useMemo)(()=>({getLanguageDisplayName:e}),[e])}function o(e){return n.i18n_default.t("layoutSwitcher."+e,{ns:"layout",defaultValue:e})}function G(){const e=(0,t.useCallback)(o,[]);return(0,t.useMemo)(()=>({getLayoutDisplayName:e}),[e])}function c(e){return n.i18n_default.t("baseSwitcher."+e,{ns:"preference",defaultValue:e})}function d(){const e=(0,t.useCallback)(c,[]);return(0,t.useMemo)(()=>({getPreferenceDisplayName:e}),[e])}function L(e){return n.i18n_default.t("themeSwitcher."+e,{ns:"theme",defaultValue:e})}function y(){const e=(0,t.useCallback)(L,[]);return(0,t.useMemo)(()=>({getThemeDisplayName:e}),[e])}function h(e,u){return{RESOURCES:e,NAME_SPACES_MAP:u,NAME_SPACES:Object.values(u)}}function p(e){n.i18n_default.changeLanguage(e)}function f(){const e=r.getItem(a.LANGUAGE_STORAGE_KEY);return e==null||a.LANGUAGE_VALUES.includes(e)?e:void 0}function A(e){r.setItem(a.LANGUAGE_STORAGE_KEY,e)}function P(){r.removeItem(a.LANGUAGE_STORAGE_KEY)}function E(){const e=f();if(e!=null)return e;const u=(typeof navigator<"u"&&(navigator.language||navigator.languages?.[0])||"").toLowerCase();return u.startsWith("zh")?a.LanguageEnum.ZH:u.startsWith("en")?a.LanguageEnum.EN:u.startsWith("fr")?a.LanguageEnum.FR:a.DEFAULT_LANGUAGE}var m=(0,t.memo)(({children:e,bundles:u,fallbackLng:_,onLoadExtraBundles:N})=>{const g=(0,t.useRef)(!1);return g.current||(n.initI18n({bundles:u,fallbackLng:_,onLoadExtraBundles:N}),g.current=!0),(0,t.useEffect)(()=>{const i=E();A(i),n.i18n_default.changeLanguage(i)},[]),(0,l.jsx)(l.Fragment,{children:e})});m.displayName="LanguageProvider";exports.DEFAULT_LANGUAGE=a.DEFAULT_LANGUAGE;exports.LANGUAGE_STORAGE_KEY=a.LANGUAGE_STORAGE_KEY;exports.LANGUAGE_VALUES=a.LANGUAGE_VALUES;exports.LanguageEnum=a.LanguageEnum;exports.LanguageProvider=m;exports.NFX_NAMESPACES=n.NFX_NAMESPACES;exports.NFX_NAMESPACES_MAP=n.NFX_NAMESPACES_MAP;exports.changeLanguage=p;exports.createI18nResources=h;exports.getDefaultNfxBundles=n.getDefaultNfxBundles;exports.getLanguageDisplayName=s;exports.getLanguageStorage=f;exports.getLayoutDisplayName=o;exports.getLocalLanguage=E;exports.getPreferenceDisplayName=c;exports.getThemeDisplayName=L;exports.i18n=n.i18n_default;exports.initI18n=n.initI18n;exports.removeLanguageStorage=P;exports.setLanguageStorage=A;exports.useLanguageLabel=S;exports.useLayoutLabel=G;exports.usePreferenceLabel=d;exports.useThemeLabel=y;
3
+ Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("./chunk-chunk-BFrxaqQT.cjs"),u=require("./chunk-language-Bqmpuf2W.cjs"),a=require("./chunk-i18n-DA_n5DaW.cjs");let t=require("react"),i=require("react/jsx-runtime");function l(e){return a.i18n_default.t("languageSwitcher."+e,{ns:"language",defaultValue:e})}function A(){const e=(0,t.useCallback)(l,[]);return(0,t.useMemo)(()=>({getLanguageDisplayName:e}),[e])}function s(e){return a.i18n_default.t("layoutSwitcher."+e,{ns:"layout",defaultValue:e})}function N(){const e=(0,t.useCallback)(s,[]);return(0,t.useMemo)(()=>({getLayoutDisplayName:e}),[e])}function o(e){return a.i18n_default.t("baseSwitcher."+e,{ns:"preference",defaultValue:e})}function S(){const e=(0,t.useCallback)(o,[]);return(0,t.useMemo)(()=>({getPreferenceDisplayName:e}),[e])}function L(e){return a.i18n_default.t("themeSwitcher."+e,{ns:"theme",defaultValue:e})}function _(){const e=(0,t.useCallback)(L,[]);return(0,t.useMemo)(()=>({getThemeDisplayName:e}),[e])}function y(e,n){return{RESOURCES:e,NAME_SPACES_MAP:n,NAME_SPACES:Object.values(n)}}function d(e){a.setLanguageStorage(e),a.i18n_default.changeLanguage(e)}function c(){const e=a.getLanguageStorage();if(e!=null)return e;const n=(typeof navigator<"u"&&(navigator.language||navigator.languages?.[0])||"").toLowerCase();return n.startsWith("zh")?u.LanguageEnum.ZH:n.startsWith("en")?u.LanguageEnum.EN:n.startsWith("fr")?u.LanguageEnum.FR:u.DEFAULT_LANGUAGE}var f=(0,t.memo)(({children:e,bundles:n,fallbackLng:m,onLoadExtraBundles:E})=>{const r=(0,t.useRef)(!1);return r.current||(a.initI18n({bundles:n,fallbackLng:m,onLoadExtraBundles:E}),r.current=!0),(0,t.useEffect)(()=>{const g=c();a.setLanguageStorage(g),a.i18n_default.changeLanguage(g)},[]),(0,i.jsx)(i.Fragment,{children:e})});f.displayName="LanguageProvider";exports.DEFAULT_LANGUAGE=u.DEFAULT_LANGUAGE;exports.LANGUAGE_STORAGE_KEY=u.LANGUAGE_STORAGE_KEY;exports.LANGUAGE_VALUES=u.LANGUAGE_VALUES;exports.LanguageEnum=u.LanguageEnum;exports.LanguageProvider=f;exports.NFX_NAMESPACES=a.NFX_NAMESPACES;exports.NFX_NAMESPACES_MAP=a.NFX_NAMESPACES_MAP;exports.changeLanguage=d;exports.createI18nResources=y;exports.getDefaultNfxBundles=a.getDefaultNfxBundles;exports.getLanguageDisplayName=l;exports.getLanguageStorage=a.getLanguageStorage;exports.getLayoutDisplayName=s;exports.getLocalLanguage=c;exports.getPreferenceDisplayName=o;exports.getThemeDisplayName=L;exports.i18n=a.i18n_default;exports.initI18n=a.initI18n;exports.removeLanguageStorage=a.removeLanguageStorage;exports.setLanguageStorage=a.setLanguageStorage;exports.useLanguageLabel=A;exports.useLayoutLabel=N;exports.usePreferenceLabel=S;exports.useThemeLabel=_;
4
4
 
5
5
  //# sourceMappingURL=languages.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"languages.cjs","names":[],"sources":["../src/languages/hooks/useLanguageLabel.ts","../src/languages/hooks/useLayoutLabel.ts","../src/languages/hooks/usePreferenceLabel.ts","../src/languages/hooks/useThemeLabel.ts","../src/languages/languages/i18nResources.ts","../src/languages/utils/languageStorage.ts","../src/languages/utils/getLocalLanguage.ts","../src/languages/providers/index.tsx"],"sourcesContent":["/**\n * 返回 { getLanguageDisplayName },便于扩展;getLanguageDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getLanguageDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { LanguageEnum } from \"../types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getLanguageDisplayNameImpl(lang: LanguageEnum): string {\n return i18n.t(\"languageSwitcher.\" + lang, { ns: \"language\", defaultValue: lang });\n}\n\nexport function useLanguageLabel(): { getLanguageDisplayName: (lang: LanguageEnum) => string } {\n const getLanguageDisplayName = useCallback(getLanguageDisplayNameImpl, []);\n return useMemo(() => ({ getLanguageDisplayName }), [getLanguageDisplayName]);\n}\n\nexport { getLanguageDisplayNameImpl as getLanguageDisplayName };\n","/**\n * 返回 { getLayoutDisplayName },便于扩展;getLayoutDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getLayoutDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { LayoutModeEnum } from \"@/designs/layouts/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getLayoutDisplayNameImpl(mode: LayoutModeEnum): string {\n return i18n.t(\"layoutSwitcher.\" + mode, { ns: \"layout\", defaultValue: mode });\n}\n\nexport function useLayoutLabel(): { getLayoutDisplayName: (mode: LayoutModeEnum) => string } {\n const getLayoutDisplayName = useCallback(getLayoutDisplayNameImpl, []);\n return useMemo(() => ({ getLayoutDisplayName }), [getLayoutDisplayName]);\n}\n\nexport { getLayoutDisplayNameImpl as getLayoutDisplayName };\n","/**\n * 返回 { getPreferenceDisplayName }(Base 展示名),便于扩展;可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getPreferenceDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { BaseEnum } from \"@/themes/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getPreferenceDisplayNameImpl(base: BaseEnum): string {\n return i18n.t(\"baseSwitcher.\" + base, { ns: \"preference\", defaultValue: base });\n}\n\nexport function usePreferenceLabel(): { getPreferenceDisplayName: (base: BaseEnum) => string } {\n const getPreferenceDisplayName = useCallback(getPreferenceDisplayNameImpl, []);\n return useMemo(() => ({ getPreferenceDisplayName }), [getPreferenceDisplayName]);\n}\n\nexport { getPreferenceDisplayNameImpl as getPreferenceDisplayName };\n","/**\n * 返回 { getThemeDisplayName },便于扩展;getThemeDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getThemeDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { ThemeEnum } from \"@/themes/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getThemeDisplayNameImpl(theme: ThemeEnum): string {\n return i18n.t(\"themeSwitcher.\" + theme, { ns: \"theme\", defaultValue: theme });\n}\n\nexport function useThemeLabel(): { getThemeDisplayName: (theme: ThemeEnum) => string } {\n const getThemeDisplayName = useCallback(getThemeDisplayNameImpl, []);\n return useMemo(() => ({ getThemeDisplayName }), [getThemeDisplayName]);\n}\n\nexport { getThemeDisplayNameImpl as getThemeDisplayName };\n","/**\n * 文案包工厂:createI18nResources(resources, nameSpacesMap) 供用户自建 JSON 后生成 i18n 所需结构。\n * Bundle factory: createI18nResources(resources, nameSpacesMap) for building i18n structure from user JSON.\n */\nimport type { CreateI18nResourcesResult, LanguageEnum, NameSpacesMap, Resources } from \"../types\";\n\nimport i18n from \"./i18n\";\n\n/**\n * 由调用方传入 resources 和 nameSpacesMap,生成 i18n 所需的 RESOURCES、NAME_SPACES_MAP、NAME_SPACES。\n * Caller provides resources and nameSpacesMap; returns RESOURCES, NAME_SPACES_MAP, NAME_SPACES for i18n.\n *\n * @param resources - 各语言下的命名空间文案。Bundles per language.\n * @param nameSpacesMap - 命名空间 key → 命名空间字符串。Namespace key to string.\n */\nfunction createI18nResources(resources: Resources, nameSpacesMap: NameSpacesMap): CreateI18nResourcesResult {\n return {\n RESOURCES: resources,\n NAME_SPACES_MAP: nameSpacesMap,\n NAME_SPACES: Object.values(nameSpacesMap),\n };\n}\n\n/** 切换当前语言。Switch current language. */\nfunction changeLanguage(lng: LanguageEnum): void {\n i18n.changeLanguage(lng);\n}\n\nexport { createI18nResources, changeLanguage };\nexport type { CreateI18nResourcesResult, Resources, NameSpacesMap, NamespaceBundle } from \"../types\";\n","/**\n * 语言相关 localStorage 读写与移除,统一走 utils/lstorage;读写类型为 LanguageEnum。\n * Language localStorage get/set/remove via utils/lstorage; typed as LanguageEnum.\n */\nimport type { Nilable } from \"@/types/utils\";\nimport { getItem, removeItem, setItem } from \"@/utils/lstorage\";\n\nimport { LANGUAGE_STORAGE_KEY, LANGUAGE_VALUES, LanguageEnum } from \"../types\";\n\nexport function getLanguageStorage(): Nilable<LanguageEnum> {\n const raw = getItem(LANGUAGE_STORAGE_KEY);\n if (raw == null) return raw;\n return (LANGUAGE_VALUES as readonly string[]).includes(raw) ? (raw as LanguageEnum) : undefined;\n}\n\nexport function setLanguageStorage(value: LanguageEnum): void {\n setItem(LANGUAGE_STORAGE_KEY, value);\n}\n\nexport function removeLanguageStorage(): void {\n removeItem(LANGUAGE_STORAGE_KEY);\n}\n","/**\n * 获取本地语言:优先 localStorage,其次浏览器语言,最后默认语言。\n * Get local language: localStorage first, then navigator, then default.\n */\nimport { getLanguageStorage } from \"./languageStorage\";\nimport { DEFAULT_LANGUAGE, LanguageEnum } from \"../types\";\n\nexport function getLocalLanguage(): LanguageEnum {\n const stored = getLanguageStorage();\n if (stored != null) return stored;\n const nav = typeof navigator !== \"undefined\" ? navigator.language || navigator.languages?.[0] || \"\" : \"\";\n const lower = nav.toLowerCase();\n if (lower.startsWith(\"zh\")) return LanguageEnum.ZH;\n if (lower.startsWith(\"en\")) return LanguageEnum.EN;\n if (lower.startsWith(\"fr\")) return LanguageEnum.FR;\n return DEFAULT_LANGUAGE;\n}\n","/**\n * 语言提供者:首次渲染时同步初始化 i18n(保证内层 ModalProvider 等子组件 useTranslation 时已就绪),再用 useEffect 应用本地语言。\n * Language provider: inits i18n synchronously on first render so inner children (e.g. ModalProvider) have i18n ready; then useEffect applies getLocalLanguage.\n */\nimport type { LanguageProviderProps } from \"../types\";\n\nimport { memo, useEffect, useRef } from \"react\";\n\nimport i18n, { initI18n } from \"../languages/i18n\";\nimport { getLocalLanguage, setLanguageStorage } from \"../utils\";\n\nconst LanguageProvider = memo(({ children, bundles, fallbackLng, onLoadExtraBundles }: LanguageProviderProps) => {\n const hasInitialized = useRef(false);\n if (!hasInitialized.current) {\n initI18n({ bundles, fallbackLng, onLoadExtraBundles });\n hasInitialized.current = true;\n }\n\n useEffect(() => {\n const lng = getLocalLanguage();\n setLanguageStorage(lng);\n void i18n.changeLanguage(lng);\n }, []);\n\n return <>{children}</>;\n});\n\nLanguageProvider.displayName = \"LanguageProvider\";\nexport default LanguageProvider;\n"],"mappings":"oSAUA,SAAS,EAA2B,EAA4B,CAC9D,OAAO,EAAA,aAAK,EAAE,oBAAsB,EAAM,CAAE,GAAI,WAAY,aAAc,EAAM,EAGlF,SAAgB,GAA+E,CAC7F,MAAM,KAAA,EAAA,aAAqC,EAA4B,CAAA,CAAE,EACzE,SAAA,EAAA,SAAA,KAAsB,CAAE,uBAAA,CAAA,GAA2B,CAAC,CAAA,CAAuB,ECN7E,SAAS,EAAyB,EAA8B,CAC9D,OAAO,EAAA,aAAK,EAAE,kBAAoB,EAAM,CAAE,GAAI,SAAU,aAAc,EAAM,EAG9E,SAAgB,GAA6E,CAC3F,MAAM,KAAA,EAAA,aAAmC,EAA0B,CAAA,CAAE,EACrE,SAAA,EAAA,SAAA,KAAsB,CAAE,qBAAA,CAAA,GAAyB,CAAC,CAAA,CAAqB,ECNzE,SAAS,EAA6B,EAAwB,CAC5D,OAAO,EAAA,aAAK,EAAE,gBAAkB,EAAM,CAAE,GAAI,aAAc,aAAc,EAAM,EAGhF,SAAgB,GAA+E,CAC7F,MAAM,KAAA,EAAA,aAAuC,EAA8B,CAAA,CAAE,EAC7E,SAAA,EAAA,SAAA,KAAsB,CAAE,yBAAA,CAAA,GAA6B,CAAC,CAAA,CAAyB,ECNjF,SAAS,EAAwB,EAA0B,CACzD,OAAO,EAAA,aAAK,EAAE,iBAAmB,EAAO,CAAE,GAAI,QAAS,aAAc,EAAO,EAG9E,SAAgB,GAAuE,CACrF,MAAM,KAAA,EAAA,aAAkC,EAAyB,CAAA,CAAE,EACnE,SAAA,EAAA,SAAA,KAAsB,CAAE,oBAAA,CAAA,GAAwB,CAAC,CAAA,CAAoB,ECDvE,SAAS,EAAoB,EAAsB,EAAyD,CAC1G,MAAO,CACL,UAAW,EACX,gBAAiB,EACjB,YAAa,OAAO,OAAO,CAAA,GAK/B,SAAS,EAAe,EAAyB,CAC/C,EAAA,aAAK,eAAe,CAAA,EChBtB,SAAgB,GAA4C,CAC1D,MAAM,EAAM,EAAA,QAAQ,EAAA,oBAAA,EACpB,OAAI,GAAO,MACH,EAAA,gBAAsC,SAAS,CAAA,EAD/B,EAC8D,OAGxF,SAAgB,EAAmB,EAA2B,CAC5D,EAAA,QAAQ,EAAA,qBAAsB,CAAA,EAGhC,SAAgB,GAA8B,CAC5C,EAAA,WAAW,EAAA,oBAAA,ECbb,SAAgB,GAAiC,CAC/C,MAAM,EAAS,EAAA,EACf,GAAI,GAAU,KAAM,OAAO,EAE3B,MAAM,GADM,OAAO,UAAc,MAAc,UAAU,UAAY,UAAU,YAAY,CAAA,IAAM,IAC/E,YAAA,EAClB,OAAI,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GAC5C,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GAC5C,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GACzC,EAAA,iBCJT,IAAM,KAAA,EAAA,MAAA,CAAyB,CAAE,SAAA,EAAU,QAAA,EAAS,YAAA,EAAa,mBAAA,CAAA,IAAgD,CAC/G,MAAM,KAAA,EAAA,QAAwB,EAAA,EAC9B,OAAK,EAAe,UAClB,EAAA,SAAS,CAAE,QAAA,EAAS,YAAA,EAAa,mBAAA,EAAoB,EACrD,EAAe,QAAU,OAG3B,EAAA,WAAA,IAAgB,CACd,MAAM,EAAM,EAAA,EACZ,EAAmB,CAAA,EACd,EAAA,aAAK,eAAe,CAAA,GACxB,CAAA,CAAE,KAEE,EAAA,KAAA,EAAA,SAAA,CAAG,SAAA,CAAA,CAAY,IAGxB,EAAiB,YAAc"}
1
+ {"version":3,"file":"languages.cjs","names":[],"sources":["../src/languages/hooks/useLanguageLabel.ts","../src/languages/hooks/useLayoutLabel.ts","../src/languages/hooks/usePreferenceLabel.ts","../src/languages/hooks/useThemeLabel.ts","../src/languages/languages/i18nResources.ts","../src/languages/utils/getLocalLanguage.ts","../src/languages/providers/index.tsx"],"sourcesContent":["/**\n * 返回 { getLanguageDisplayName },便于扩展;getLanguageDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getLanguageDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { LanguageEnum } from \"../types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getLanguageDisplayNameImpl(lang: LanguageEnum): string {\n return i18n.t(\"languageSwitcher.\" + lang, { ns: \"language\", defaultValue: lang });\n}\n\nexport function useLanguageLabel(): { getLanguageDisplayName: (lang: LanguageEnum) => string } {\n const getLanguageDisplayName = useCallback(getLanguageDisplayNameImpl, []);\n return useMemo(() => ({ getLanguageDisplayName }), [getLanguageDisplayName]);\n}\n\nexport { getLanguageDisplayNameImpl as getLanguageDisplayName };\n","/**\n * 返回 { getLayoutDisplayName },便于扩展;getLayoutDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getLayoutDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { LayoutModeEnum } from \"@/designs/layouts/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getLayoutDisplayNameImpl(mode: LayoutModeEnum): string {\n return i18n.t(\"layoutSwitcher.\" + mode, { ns: \"layout\", defaultValue: mode });\n}\n\nexport function useLayoutLabel(): { getLayoutDisplayName: (mode: LayoutModeEnum) => string } {\n const getLayoutDisplayName = useCallback(getLayoutDisplayNameImpl, []);\n return useMemo(() => ({ getLayoutDisplayName }), [getLayoutDisplayName]);\n}\n\nexport { getLayoutDisplayNameImpl as getLayoutDisplayName };\n","/**\n * 返回 { getPreferenceDisplayName }(Base 展示名),便于扩展;可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getPreferenceDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { BaseEnum } from \"@/themes/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getPreferenceDisplayNameImpl(base: BaseEnum): string {\n return i18n.t(\"baseSwitcher.\" + base, { ns: \"preference\", defaultValue: base });\n}\n\nexport function usePreferenceLabel(): { getPreferenceDisplayName: (base: BaseEnum) => string } {\n const getPreferenceDisplayName = useCallback(getPreferenceDisplayNameImpl, []);\n return useMemo(() => ({ getPreferenceDisplayName }), [getPreferenceDisplayName]);\n}\n\nexport { getPreferenceDisplayNameImpl as getPreferenceDisplayName };\n","/**\n * 返回 { getThemeDisplayName },便于扩展;getThemeDisplayName 可传给 SlideDownSwitcher 的 getDisplayName。\n * Returns { getThemeDisplayName } for extensibility; pass to SlideDownSwitcher getDisplayName.\n */\nimport type { ThemeEnum } from \"@/themes/types\";\n\nimport { useCallback, useMemo } from \"react\";\n\nimport i18n from \"../languages/i18n\";\n\nfunction getThemeDisplayNameImpl(theme: ThemeEnum): string {\n return i18n.t(\"themeSwitcher.\" + theme, { ns: \"theme\", defaultValue: theme });\n}\n\nexport function useThemeLabel(): { getThemeDisplayName: (theme: ThemeEnum) => string } {\n const getThemeDisplayName = useCallback(getThemeDisplayNameImpl, []);\n return useMemo(() => ({ getThemeDisplayName }), [getThemeDisplayName]);\n}\n\nexport { getThemeDisplayNameImpl as getThemeDisplayName };\n","/**\n * 文案包工厂:createI18nResources(resources, nameSpacesMap) 供用户自建 JSON 后生成 i18n 所需结构。\n * Bundle factory: createI18nResources(resources, nameSpacesMap) for building i18n structure from user JSON.\n */\nimport type { CreateI18nResourcesResult, LanguageEnum, NameSpacesMap, Resources } from \"../types\";\n\nimport i18n from \"./i18n\";\nimport { setLanguageStorage } from \"../utils/languageStorage\";\n\n/**\n * 由调用方传入 resources 和 nameSpacesMap,生成 i18n 所需的 RESOURCES、NAME_SPACES_MAP、NAME_SPACES。\n * Caller provides resources and nameSpacesMap; returns RESOURCES, NAME_SPACES_MAP, NAME_SPACES for i18n.\n *\n * @param resources - 各语言下的命名空间文案。Bundles per language.\n * @param nameSpacesMap - 命名空间 key → 命名空间字符串。Namespace key to string.\n */\nfunction createI18nResources(resources: Resources, nameSpacesMap: NameSpacesMap): CreateI18nResourcesResult {\n return {\n RESOURCES: resources,\n NAME_SPACES_MAP: nameSpacesMap,\n NAME_SPACES: Object.values(nameSpacesMap),\n };\n}\n\n/** 切换当前语言并写入 `language-storage`,刷新后保持一致。Persists choice for reloads. */\nfunction changeLanguage(lng: LanguageEnum): void {\n setLanguageStorage(lng);\n void i18n.changeLanguage(lng);\n}\n\nexport { createI18nResources, changeLanguage };\nexport type { CreateI18nResourcesResult, Resources, NameSpacesMap, NamespaceBundle } from \"../types\";\n","/**\n * 获取本地语言:优先 localStorage,其次浏览器语言,最后默认语言。\n * Get local language: localStorage first, then navigator, then default.\n */\nimport { getLanguageStorage } from \"./languageStorage\";\nimport { DEFAULT_LANGUAGE, LanguageEnum } from \"../types\";\n\nexport function getLocalLanguage(): LanguageEnum {\n const stored = getLanguageStorage();\n if (stored != null) return stored;\n const nav = typeof navigator !== \"undefined\" ? navigator.language || navigator.languages?.[0] || \"\" : \"\";\n const lower = nav.toLowerCase();\n if (lower.startsWith(\"zh\")) return LanguageEnum.ZH;\n if (lower.startsWith(\"en\")) return LanguageEnum.EN;\n if (lower.startsWith(\"fr\")) return LanguageEnum.FR;\n return DEFAULT_LANGUAGE;\n}\n","/**\n * 语言提供者:首次渲染时同步初始化 i18n(保证内层 ModalProvider 等子组件 useTranslation 时已就绪),再用 useEffect 应用本地语言。\n * Language provider: inits i18n synchronously on first render so inner children (e.g. ModalProvider) have i18n ready; then useEffect applies getLocalLanguage.\n */\nimport type { LanguageProviderProps } from \"../types\";\n\nimport { memo, useEffect, useRef } from \"react\";\n\nimport i18n, { initI18n } from \"../languages/i18n\";\nimport { getLocalLanguage, setLanguageStorage } from \"../utils\";\n\nconst LanguageProvider = memo(({ children, bundles, fallbackLng, onLoadExtraBundles }: LanguageProviderProps) => {\n const hasInitialized = useRef(false);\n if (!hasInitialized.current) {\n initI18n({ bundles, fallbackLng, onLoadExtraBundles });\n hasInitialized.current = true;\n }\n\n useEffect(() => {\n const lng = getLocalLanguage();\n setLanguageStorage(lng);\n void i18n.changeLanguage(lng);\n }, []);\n\n return <>{children}</>;\n});\n\nLanguageProvider.displayName = \"LanguageProvider\";\nexport default LanguageProvider;\n"],"mappings":"yPAUA,SAAS,EAA2B,EAA4B,CAC9D,OAAO,EAAA,aAAK,EAAE,oBAAsB,EAAM,CAAE,GAAI,WAAY,aAAc,EAAM,EAGlF,SAAgB,GAA+E,CAC7F,MAAM,KAAA,EAAA,aAAqC,EAA4B,CAAA,CAAE,EACzE,SAAA,EAAA,SAAA,KAAsB,CAAE,uBAAA,CAAA,GAA2B,CAAC,CAAA,CAAuB,ECN7E,SAAS,EAAyB,EAA8B,CAC9D,OAAO,EAAA,aAAK,EAAE,kBAAoB,EAAM,CAAE,GAAI,SAAU,aAAc,EAAM,EAG9E,SAAgB,GAA6E,CAC3F,MAAM,KAAA,EAAA,aAAmC,EAA0B,CAAA,CAAE,EACrE,SAAA,EAAA,SAAA,KAAsB,CAAE,qBAAA,CAAA,GAAyB,CAAC,CAAA,CAAqB,ECNzE,SAAS,EAA6B,EAAwB,CAC5D,OAAO,EAAA,aAAK,EAAE,gBAAkB,EAAM,CAAE,GAAI,aAAc,aAAc,EAAM,EAGhF,SAAgB,GAA+E,CAC7F,MAAM,KAAA,EAAA,aAAuC,EAA8B,CAAA,CAAE,EAC7E,SAAA,EAAA,SAAA,KAAsB,CAAE,yBAAA,CAAA,GAA6B,CAAC,CAAA,CAAyB,ECNjF,SAAS,EAAwB,EAA0B,CACzD,OAAO,EAAA,aAAK,EAAE,iBAAmB,EAAO,CAAE,GAAI,QAAS,aAAc,EAAO,EAG9E,SAAgB,GAAuE,CACrF,MAAM,KAAA,EAAA,aAAkC,EAAyB,CAAA,CAAE,EACnE,SAAA,EAAA,SAAA,KAAsB,CAAE,oBAAA,CAAA,GAAwB,CAAC,CAAA,CAAoB,ECAvE,SAAS,EAAoB,EAAsB,EAAyD,CAC1G,MAAO,CACL,UAAW,EACX,gBAAiB,EACjB,YAAa,OAAO,OAAO,CAAA,GAK/B,SAAS,EAAe,EAAyB,CAC/C,EAAA,mBAAmB,CAAA,EACd,EAAA,aAAK,eAAe,CAAA,ECpB3B,SAAgB,GAAiC,CAC/C,MAAM,EAAS,EAAA,mBAAA,EACf,GAAI,GAAU,KAAM,OAAO,EAE3B,MAAM,GADM,OAAO,UAAc,MAAc,UAAU,UAAY,UAAU,YAAY,CAAA,IAAM,IAC/E,YAAA,EAClB,OAAI,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GAC5C,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GAC5C,EAAM,WAAW,IAAA,EAAc,EAAA,aAAa,GACzC,EAAA,iBCJT,IAAM,KAAA,EAAA,MAAA,CAAyB,CAAE,SAAA,EAAU,QAAA,EAAS,YAAA,EAAa,mBAAA,CAAA,IAAgD,CAC/G,MAAM,KAAA,EAAA,QAAwB,EAAA,EAC9B,OAAK,EAAe,UAClB,EAAA,SAAS,CAAE,QAAA,EAAS,YAAA,EAAa,mBAAA,EAAoB,EACrD,EAAe,QAAU,OAG3B,EAAA,WAAA,IAAgB,CACd,MAAM,EAAM,EAAA,EACZ,EAAA,mBAAmB,CAAA,EACd,EAAA,aAAK,eAAe,CAAA,GACxB,CAAA,CAAE,KAEE,EAAA,KAAA,EAAA,SAAA,CAAG,SAAA,CAAA,CAAY,IAGxB,EAAiB,YAAc"}