nfx-ui 0.10.1 → 0.10.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/dist/chunk-i18n-DgSkzt0o.mjs +208 -0
  2. package/dist/chunk-i18n-DgSkzt0o.mjs.map +1 -0
  3. package/dist/chunk-i18n-GncnLl4L.cjs +3 -0
  4. package/dist/chunk-i18n-GncnLl4L.cjs.map +1 -0
  5. package/dist/languages.cjs +1 -1
  6. package/dist/languages.cjs.map +1 -1
  7. package/dist/languages.mjs +52 -63
  8. package/dist/languages.mjs.map +1 -1
  9. package/dist/src/apis/index.d.ts +2 -1
  10. package/dist/src/apis/index.d.ts.map +1 -0
  11. package/dist/src/apis/ip.d.ts +1 -0
  12. package/dist/src/apis/ip.d.ts.map +1 -0
  13. package/dist/src/constants/caches.d.ts +1 -0
  14. package/dist/src/constants/caches.d.ts.map +1 -0
  15. package/dist/src/constants/enums.d.ts +1 -0
  16. package/dist/src/constants/enums.d.ts.map +1 -0
  17. package/dist/src/constants/index.d.ts +6 -5
  18. package/dist/src/constants/index.d.ts.map +1 -0
  19. package/dist/src/constants/query.itemkeys.d.ts +6 -1
  20. package/dist/src/constants/query.itemkeys.d.ts.map +1 -0
  21. package/dist/src/constants/query.listkeys.d.ts +6 -1
  22. package/dist/src/constants/query.listkeys.d.ts.map +1 -0
  23. package/dist/src/constants/querykeys.d.ts +19 -3
  24. package/dist/src/constants/querykeys.d.ts.map +1 -0
  25. package/dist/src/designs/animations/BounceLoading/index.d.ts +2 -1
  26. package/dist/src/designs/animations/BounceLoading/index.d.ts.map +1 -0
  27. package/dist/src/designs/animations/ECGLoading/index.d.ts +2 -1
  28. package/dist/src/designs/animations/ECGLoading/index.d.ts.map +1 -0
  29. package/dist/src/designs/animations/LetterGlitch/index.d.ts +1 -0
  30. package/dist/src/designs/animations/LetterGlitch/index.d.ts.map +1 -0
  31. package/dist/src/designs/animations/PixelBlast/index.d.ts +2 -1
  32. package/dist/src/designs/animations/PixelBlast/index.d.ts.map +1 -0
  33. package/dist/src/designs/animations/Squares/index.d.ts +2 -1
  34. package/dist/src/designs/animations/Squares/index.d.ts.map +1 -0
  35. package/dist/src/designs/animations/TruckLoading/index.d.ts +2 -1
  36. package/dist/src/designs/animations/TruckLoading/index.d.ts.map +1 -0
  37. package/dist/src/designs/animations/Waves/index.d.ts +3 -1
  38. package/dist/src/designs/animations/Waves/index.d.ts.map +1 -0
  39. package/dist/src/designs/animations/index.d.ts +7 -6
  40. package/dist/src/designs/animations/index.d.ts.map +1 -0
  41. package/dist/src/designs/components/Button/index.d.ts +14 -2
  42. package/dist/src/designs/components/Button/index.d.ts.map +1 -0
  43. package/dist/src/designs/components/Dropdown/index.d.ts +2 -1
  44. package/dist/src/designs/components/Dropdown/index.d.ts.map +1 -0
  45. package/dist/src/designs/components/Icon/index.d.ts +14 -2
  46. package/dist/src/designs/components/Icon/index.d.ts.map +1 -0
  47. package/dist/src/designs/components/Input/index.d.ts +14 -2
  48. package/dist/src/designs/components/Input/index.d.ts.map +1 -0
  49. package/dist/src/designs/components/KeyValueEditor/index.d.ts +2 -1
  50. package/dist/src/designs/components/KeyValueEditor/index.d.ts.map +1 -0
  51. package/dist/src/designs/components/LayoutSwitcher/index.d.ts +3 -2
  52. package/dist/src/designs/components/LayoutSwitcher/index.d.ts.map +1 -0
  53. package/dist/src/designs/components/SearchInput/index.d.ts +2 -1
  54. package/dist/src/designs/components/SearchInput/index.d.ts.map +1 -0
  55. package/dist/src/designs/components/ShowFilter/index.d.ts +2 -1
  56. package/dist/src/designs/components/ShowFilter/index.d.ts.map +1 -0
  57. package/dist/src/designs/components/SlideDownSwitcher/index.d.ts +1 -0
  58. package/dist/src/designs/components/SlideDownSwitcher/index.d.ts.map +1 -0
  59. package/dist/src/designs/components/Slider/index.d.ts +2 -1
  60. package/dist/src/designs/components/Slider/index.d.ts.map +1 -0
  61. package/dist/src/designs/components/Suspense/SuspenseErrorBoundary.d.ts +3 -1
  62. package/dist/src/designs/components/Suspense/SuspenseErrorBoundary.d.ts.map +1 -0
  63. package/dist/src/designs/components/Suspense/index.d.ts +17 -3
  64. package/dist/src/designs/components/Suspense/index.d.ts.map +1 -0
  65. package/dist/src/designs/components/Textarea/index.d.ts +14 -2
  66. package/dist/src/designs/components/Textarea/index.d.ts.map +1 -0
  67. package/dist/src/designs/components/ThemeSwitcher/index.d.ts +3 -2
  68. package/dist/src/designs/components/ThemeSwitcher/index.d.ts.map +1 -0
  69. package/dist/src/designs/components/VirtualList/index.d.ts +12 -2
  70. package/dist/src/designs/components/VirtualList/index.d.ts.map +1 -0
  71. package/dist/src/designs/components/VirtualWindowList/index.d.ts +18 -2
  72. package/dist/src/designs/components/VirtualWindowList/index.d.ts.map +1 -0
  73. package/dist/src/designs/components/index.d.ts +31 -30
  74. package/dist/src/designs/components/index.d.ts.map +1 -0
  75. package/dist/src/designs/layouts/components/Background/index.d.ts +4 -3
  76. package/dist/src/designs/layouts/components/Background/index.d.ts.map +1 -0
  77. package/dist/src/designs/layouts/components/Footer/index.d.ts +4 -3
  78. package/dist/src/designs/layouts/components/Footer/index.d.ts.map +1 -0
  79. package/dist/src/designs/layouts/components/Header/index.d.ts +3 -2
  80. package/dist/src/designs/layouts/components/Header/index.d.ts.map +1 -0
  81. package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts +3 -2
  82. package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts.map +1 -0
  83. package/dist/src/designs/layouts/components/MainWrapper/index.d.ts +3 -2
  84. package/dist/src/designs/layouts/components/MainWrapper/index.d.ts.map +1 -0
  85. package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts +3 -2
  86. package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts.map +1 -0
  87. package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts +3 -2
  88. package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts.map +1 -0
  89. package/dist/src/designs/layouts/components/Sidebar/index.d.ts +3 -2
  90. package/dist/src/designs/layouts/components/Sidebar/index.d.ts.map +1 -0
  91. package/dist/src/designs/layouts/components/index.d.ts +9 -8
  92. package/dist/src/designs/layouts/components/index.d.ts.map +1 -0
  93. package/dist/src/designs/layouts/hooks/index.d.ts +4 -3
  94. package/dist/src/designs/layouts/hooks/index.d.ts.map +1 -0
  95. package/dist/src/designs/layouts/hooks/useAction.d.ts +1 -0
  96. package/dist/src/designs/layouts/hooks/useAction.d.ts.map +1 -0
  97. package/dist/src/designs/layouts/hooks/useLayout.d.ts +7 -2
  98. package/dist/src/designs/layouts/hooks/useLayout.d.ts.map +1 -0
  99. package/dist/src/designs/layouts/hooks/useSet.d.ts +2 -1
  100. package/dist/src/designs/layouts/hooks/useSet.d.ts.map +1 -0
  101. package/dist/src/designs/layouts/index.d.ts +6 -5
  102. package/dist/src/designs/layouts/index.d.ts.map +1 -0
  103. package/dist/src/designs/layouts/providers/index.d.ts +7 -2
  104. package/dist/src/designs/layouts/providers/index.d.ts.map +1 -0
  105. package/dist/src/designs/layouts/types/components.d.ts +7 -3
  106. package/dist/src/designs/layouts/types/components.d.ts.map +1 -0
  107. package/dist/src/designs/layouts/types/context.d.ts +5 -1
  108. package/dist/src/designs/layouts/types/context.d.ts.map +1 -0
  109. package/dist/src/designs/layouts/types/index.d.ts +4 -3
  110. package/dist/src/designs/layouts/types/index.d.ts.map +1 -0
  111. package/dist/src/designs/layouts/types/layout.d.ts +1 -0
  112. package/dist/src/designs/layouts/types/layout.d.ts.map +1 -0
  113. package/dist/src/designs/layouts/utils/index.d.ts +2 -1
  114. package/dist/src/designs/layouts/utils/index.d.ts.map +1 -0
  115. package/dist/src/designs/layouts/utils/layoutStorage.d.ts +6 -1
  116. package/dist/src/designs/layouts/utils/layoutStorage.d.ts.map +1 -0
  117. package/dist/src/events/EventEmitter.d.ts +25 -1
  118. package/dist/src/events/EventEmitter.d.ts.map +1 -0
  119. package/dist/src/events/index.d.ts +2 -1
  120. package/dist/src/events/index.d.ts.map +1 -0
  121. package/dist/src/hooks/index.d.ts +5 -4
  122. package/dist/src/hooks/index.d.ts.map +1 -0
  123. package/dist/src/hooks/makeCursorFetchFunction.d.ts +3 -2
  124. package/dist/src/hooks/makeCursorFetchFunction.d.ts.map +1 -0
  125. package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts +5 -4
  126. package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts.map +1 -0
  127. package/dist/src/hooks/makeUnifiedQuery.d.ts +3 -2
  128. package/dist/src/hooks/makeUnifiedQuery.d.ts.map +1 -0
  129. package/dist/src/hooks/type.d.ts +8 -3
  130. package/dist/src/hooks/type.d.ts.map +1 -0
  131. package/dist/src/icons/index.d.ts +2 -1
  132. package/dist/src/icons/index.d.ts.map +1 -0
  133. package/dist/src/icons/lucide.d.ts +3 -2
  134. package/dist/src/icons/lucide.d.ts.map +1 -0
  135. package/dist/src/languages/hooks/index.d.ts +5 -4
  136. package/dist/src/languages/hooks/index.d.ts.map +1 -0
  137. package/dist/src/languages/hooks/useLanguageLabel.d.ts +6 -1
  138. package/dist/src/languages/hooks/useLanguageLabel.d.ts.map +1 -0
  139. package/dist/src/languages/hooks/useLayoutLabel.d.ts +6 -1
  140. package/dist/src/languages/hooks/useLayoutLabel.d.ts.map +1 -0
  141. package/dist/src/languages/hooks/usePreferenceLabel.d.ts +6 -1
  142. package/dist/src/languages/hooks/usePreferenceLabel.d.ts.map +1 -0
  143. package/dist/src/languages/hooks/useThemeLabel.d.ts +6 -1
  144. package/dist/src/languages/hooks/useThemeLabel.d.ts.map +1 -0
  145. package/dist/src/languages/index.d.ts +9 -8
  146. package/dist/src/languages/index.d.ts.map +1 -0
  147. package/dist/src/languages/languages/i18n.d.ts +8 -2
  148. package/dist/src/languages/languages/i18n.d.ts.map +1 -0
  149. package/dist/src/languages/languages/i18nResources.d.ts +8 -3
  150. package/dist/src/languages/languages/i18nResources.d.ts.map +1 -0
  151. package/dist/src/languages/languages/index.d.ts +3 -2
  152. package/dist/src/languages/languages/index.d.ts.map +1 -0
  153. package/dist/src/languages/providers/index.d.ts +7 -2
  154. package/dist/src/languages/providers/index.d.ts.map +1 -0
  155. package/dist/src/languages/resources/index.d.ts +9 -1
  156. package/dist/src/languages/resources/index.d.ts.map +1 -0
  157. package/dist/src/languages/types/components.d.ts +8 -3
  158. package/dist/src/languages/types/components.d.ts.map +1 -0
  159. package/dist/src/languages/types/i18n.d.ts +6 -1
  160. package/dist/src/languages/types/i18n.d.ts.map +1 -0
  161. package/dist/src/languages/types/index.d.ts +4 -3
  162. package/dist/src/languages/types/index.d.ts.map +1 -0
  163. package/dist/src/languages/types/language.d.ts +1 -0
  164. package/dist/src/languages/types/language.d.ts.map +1 -0
  165. package/dist/src/languages/utils/getLocalLanguage.d.ts +2 -1
  166. package/dist/src/languages/utils/getLocalLanguage.d.ts.map +1 -0
  167. package/dist/src/languages/utils/index.d.ts +3 -2
  168. package/dist/src/languages/utils/index.d.ts.map +1 -0
  169. package/dist/src/languages/utils/languageStorage.d.ts +7 -2
  170. package/dist/src/languages/utils/languageStorage.d.ts.map +1 -0
  171. package/dist/src/navigations/index.d.ts +2 -1
  172. package/dist/src/navigations/index.d.ts.map +1 -0
  173. package/dist/src/navigations/navigation.d.ts +2 -1
  174. package/dist/src/navigations/navigation.d.ts.map +1 -0
  175. package/dist/src/preference/constants.d.ts +6 -1
  176. package/dist/src/preference/constants.d.ts.map +1 -0
  177. package/dist/src/preference/index.d.ts +10 -5
  178. package/dist/src/preference/index.d.ts.map +1 -0
  179. package/dist/src/services/imageService.d.ts +1 -0
  180. package/dist/src/services/imageService.d.ts.map +1 -0
  181. package/dist/src/services/index.d.ts +2 -1
  182. package/dist/src/services/index.d.ts.map +1 -0
  183. package/dist/src/stores/index.d.ts +2 -1
  184. package/dist/src/stores/index.d.ts.map +1 -0
  185. package/dist/src/stores/makeStore.d.ts +5 -4
  186. package/dist/src/stores/makeStore.d.ts.map +1 -0
  187. package/dist/src/themes/hooks/index.d.ts +3 -2
  188. package/dist/src/themes/hooks/index.d.ts.map +1 -0
  189. package/dist/src/themes/hooks/useTheme.d.ts +8 -3
  190. package/dist/src/themes/hooks/useTheme.d.ts.map +1 -0
  191. package/dist/src/themes/hooks/useThemeVariables.d.ts +2 -1
  192. package/dist/src/themes/hooks/useThemeVariables.d.ts.map +1 -0
  193. package/dist/src/themes/index.d.ts +6 -5
  194. package/dist/src/themes/index.d.ts.map +1 -0
  195. package/dist/src/themes/providers/index.d.ts +7 -2
  196. package/dist/src/themes/providers/index.d.ts.map +1 -0
  197. package/dist/src/themes/themes/bases/android.d.ts +2 -1
  198. package/dist/src/themes/themes/bases/android.d.ts.map +1 -0
  199. package/dist/src/themes/themes/bases/default.d.ts +2 -1
  200. package/dist/src/themes/themes/bases/default.d.ts.map +1 -0
  201. package/dist/src/themes/themes/bases/index.d.ts +8 -6
  202. package/dist/src/themes/themes/bases/index.d.ts.map +1 -0
  203. package/dist/src/themes/themes/bases/ios.d.ts +2 -1
  204. package/dist/src/themes/themes/bases/ios.d.ts.map +1 -0
  205. package/dist/src/themes/themes/bases/linux.d.ts +2 -1
  206. package/dist/src/themes/themes/bases/linux.d.ts.map +1 -0
  207. package/dist/src/themes/themes/bases/windows.d.ts +2 -1
  208. package/dist/src/themes/themes/bases/windows.d.ts.map +1 -0
  209. package/dist/src/themes/themes/colors/coffee.d.ts +2 -1
  210. package/dist/src/themes/themes/colors/coffee.d.ts.map +1 -0
  211. package/dist/src/themes/themes/colors/corporate.d.ts +2 -1
  212. package/dist/src/themes/themes/colors/corporate.d.ts.map +1 -0
  213. package/dist/src/themes/themes/colors/cosmic.d.ts +2 -1
  214. package/dist/src/themes/themes/colors/cosmic.d.ts.map +1 -0
  215. package/dist/src/themes/themes/colors/dark.d.ts +2 -1
  216. package/dist/src/themes/themes/colors/dark.d.ts.map +1 -0
  217. package/dist/src/themes/themes/colors/default.d.ts +2 -1
  218. package/dist/src/themes/themes/colors/default.d.ts.map +1 -0
  219. package/dist/src/themes/themes/colors/forest.d.ts +2 -1
  220. package/dist/src/themes/themes/colors/forest.d.ts.map +1 -0
  221. package/dist/src/themes/themes/colors/index.d.ts +3 -1
  222. package/dist/src/themes/themes/colors/index.d.ts.map +1 -0
  223. package/dist/src/themes/themes/colors/light.d.ts +2 -1
  224. package/dist/src/themes/themes/colors/light.d.ts.map +1 -0
  225. package/dist/src/themes/themes/colors/wheat.d.ts +2 -1
  226. package/dist/src/themes/themes/colors/wheat.d.ts.map +1 -0
  227. package/dist/src/themes/themes/colors/wine.d.ts +2 -1
  228. package/dist/src/themes/themes/colors/wine.d.ts.map +1 -0
  229. package/dist/src/themes/themes/index.d.ts +3 -2
  230. package/dist/src/themes/themes/index.d.ts.map +1 -0
  231. package/dist/src/themes/types/components.d.ts +7 -2
  232. package/dist/src/themes/types/components.d.ts.map +1 -0
  233. package/dist/src/themes/types/context.d.ts +5 -1
  234. package/dist/src/themes/types/context.d.ts.map +1 -0
  235. package/dist/src/themes/types/index.d.ts +4 -3
  236. package/dist/src/themes/types/index.d.ts.map +1 -0
  237. package/dist/src/themes/types/theme.d.ts +1 -0
  238. package/dist/src/themes/types/theme.d.ts.map +1 -0
  239. package/dist/src/themes/utils/index.d.ts +2 -1
  240. package/dist/src/themes/utils/index.d.ts.map +1 -0
  241. package/dist/src/themes/utils/themeStorage.d.ts +7 -2
  242. package/dist/src/themes/utils/themeStorage.d.ts.map +1 -0
  243. package/dist/src/types/api.d.ts +2 -1
  244. package/dist/src/types/api.d.ts.map +1 -0
  245. package/dist/src/types/index.d.ts +3 -2
  246. package/dist/src/types/index.d.ts.map +1 -0
  247. package/dist/src/types/utils.d.ts +1 -0
  248. package/dist/src/types/utils.d.ts.map +1 -0
  249. package/dist/src/utils/address.d.ts +1 -0
  250. package/dist/src/utils/address.d.ts.map +1 -0
  251. package/dist/src/utils/apiError.d.ts +7 -1
  252. package/dist/src/utils/apiError.d.ts.map +1 -0
  253. package/dist/src/utils/array.d.ts +2 -1
  254. package/dist/src/utils/array.d.ts.map +1 -0
  255. package/dist/src/utils/colors.d.ts +1 -0
  256. package/dist/src/utils/colors.d.ts.map +1 -0
  257. package/dist/src/utils/email.d.ts +1 -0
  258. package/dist/src/utils/email.d.ts.map +1 -0
  259. package/dist/src/utils/form.d.ts +1 -0
  260. package/dist/src/utils/form.d.ts.map +1 -0
  261. package/dist/src/utils/index.d.ts +20 -19
  262. package/dist/src/utils/index.d.ts.map +1 -0
  263. package/dist/src/utils/lstorage.d.ts +6 -1
  264. package/dist/src/utils/lstorage.d.ts.map +1 -0
  265. package/dist/src/utils/object.d.ts +1 -0
  266. package/dist/src/utils/object.d.ts.map +1 -0
  267. package/dist/src/utils/polling.d.ts +3 -2
  268. package/dist/src/utils/polling.d.ts.map +1 -0
  269. package/dist/src/utils/price.d.ts +1 -0
  270. package/dist/src/utils/price.d.ts.map +1 -0
  271. package/dist/src/utils/promise.d.ts +1 -0
  272. package/dist/src/utils/promise.d.ts.map +1 -0
  273. package/dist/src/utils/random.d.ts +1 -0
  274. package/dist/src/utils/random.d.ts.map +1 -0
  275. package/dist/src/utils/result.d.ts +1 -0
  276. package/dist/src/utils/result.d.ts.map +1 -0
  277. package/dist/src/utils/retry.d.ts +3 -2
  278. package/dist/src/utils/retry.d.ts.map +1 -0
  279. package/dist/src/utils/safe.d.ts +6 -1
  280. package/dist/src/utils/safe.d.ts.map +1 -0
  281. package/dist/src/utils/singleton.d.ts +1 -0
  282. package/dist/src/utils/singleton.d.ts.map +1 -0
  283. package/dist/src/utils/suspense.d.ts +2 -1
  284. package/dist/src/utils/suspense.d.ts.map +1 -0
  285. package/dist/src/utils/time.d.ts +1 -0
  286. package/dist/src/utils/time.d.ts.map +1 -0
  287. package/dist/src/utils/types.d.ts +1 -0
  288. package/dist/src/utils/types.d.ts.map +1 -0
  289. package/dist/utils.cjs +1 -1
  290. package/dist/utils.mjs +1 -1
  291. package/package.json +4 -9
  292. package/dist/chunk-i18n-BCDF-skF.cjs +0 -3
  293. package/dist/chunk-i18n-BCDF-skF.cjs.map +0 -1
  294. package/dist/chunk-i18n-BsyWvA9c.mjs +0 -185
  295. package/dist/chunk-i18n-BsyWvA9c.mjs.map +0 -1
@@ -0,0 +1,208 @@
1
+ import { n as v, r as E, t as A } 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 _ from "i18next-browser-languagedetector";
5
+ import { initReactI18next as y } from "react-i18next";
6
+ var C = {
7
+ show: "Show Sidebar",
8
+ hide: "Hide Sidebar"
9
+ }, L = { layoutSwitcher: C }, b = {
10
+ en: "English",
11
+ zh: "Chinese",
12
+ fr: "French"
13
+ }, $ = { languageSwitcher: b }, N = {
14
+ default: "Default",
15
+ ios: "iOS",
16
+ android: "Android",
17
+ windows: "Windows",
18
+ linux: "Linux"
19
+ }, P = {
20
+ theme: "Theme",
21
+ language: "Language",
22
+ layout: "Layout",
23
+ preferences: "Preferences"
24
+ }, R = {
25
+ baseSwitcher: N,
26
+ preference: P
27
+ }, x = {
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
+ }, M = { themeSwitcher: x }, O = {
38
+ show: "Afficher la barre latérale",
39
+ hide: "Masquer la barre latérale"
40
+ }, F = { layoutSwitcher: O }, U = {
41
+ en: "Anglais",
42
+ zh: "Chinois",
43
+ fr: "Français"
44
+ }, k = { languageSwitcher: U }, D = {
45
+ default: "Par défaut",
46
+ ios: "iOS",
47
+ android: "Android",
48
+ windows: "Windows",
49
+ linux: "Linux"
50
+ }, G = {
51
+ theme: "Thème",
52
+ language: "Langue",
53
+ layout: "Disposition",
54
+ preferences: "Préférences"
55
+ }, I = {
56
+ baseSwitcher: D,
57
+ preference: G
58
+ }, T = {
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
+ }, W = { themeSwitcher: T }, z = {
69
+ show: "显示侧边栏",
70
+ hide: "隐藏侧边栏"
71
+ }, B = { layoutSwitcher: z }, H = {
72
+ en: "英语",
73
+ zh: "中文",
74
+ fr: "法语"
75
+ }, V = { languageSwitcher: H }, X = {
76
+ default: "默认",
77
+ ios: "iOS",
78
+ android: "Android",
79
+ windows: "Windows",
80
+ linux: "Linux"
81
+ }, q = {
82
+ theme: "主题",
83
+ language: "语言",
84
+ layout: "布局",
85
+ preferences: "偏好设置"
86
+ }, Z = {
87
+ baseSwitcher: X,
88
+ preference: q
89
+ }, j = {
90
+ default: "默认",
91
+ light: "浅色",
92
+ dark: "深色",
93
+ cosmic: "宇宙",
94
+ corporate: "企业",
95
+ forest: "森林",
96
+ coffee: "咖啡",
97
+ wine: "酒红",
98
+ wheat: "麦田"
99
+ }, J = { themeSwitcher: j }, K = [
100
+ "theme",
101
+ "language",
102
+ "layout",
103
+ "preference"
104
+ ], Y = {
105
+ theme: "theme",
106
+ language: "language",
107
+ layout: "layout",
108
+ preference: "preference"
109
+ }, Q = {
110
+ en: {
111
+ theme: M,
112
+ language: $,
113
+ layout: L,
114
+ preference: R
115
+ },
116
+ zh: {
117
+ theme: J,
118
+ language: V,
119
+ layout: B,
120
+ preference: Z
121
+ },
122
+ fr: {
123
+ theme: W,
124
+ language: k,
125
+ layout: F,
126
+ preference: I
127
+ }
128
+ };
129
+ function ee() {
130
+ return {
131
+ RESOURCES: Q,
132
+ NAME_SPACES_MAP: Y,
133
+ NAME_SPACES: [...K]
134
+ };
135
+ }
136
+ function ue() {
137
+ const a = A(i);
138
+ return a == null || S.includes(a) ? a : void 0;
139
+ }
140
+ function ae(a) {
141
+ E(i, a);
142
+ }
143
+ function le() {
144
+ v(i);
145
+ }
146
+ var h = !1;
147
+ function se(a) {
148
+ const c = ee(), 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 = (r) => {
159
+ const e = r.split("-")[0]?.toLowerCase() ?? "";
160
+ S.includes(e) && ae(e);
161
+ };
162
+ h || (t.on("languageChanged", w), h = !0), t.use(_).use(y).init({
163
+ compatibilityJSON: "v4",
164
+ resources: m,
165
+ lng: l,
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 p = Array.isArray(n) ? n : [n];
189
+ for (const { namespace: d, bundle: s } of p) 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 ce = t;
197
+ export {
198
+ ae as a,
199
+ ee as c,
200
+ le as i,
201
+ se as n,
202
+ K as o,
203
+ ue as r,
204
+ Y as s,
205
+ ce as t
206
+ };
207
+
208
+ //# sourceMappingURL=chunk-i18n-DgSkzt0o.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-i18n-DgSkzt0o.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 { 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 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: fallbackLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\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,IAAmC;AAAA,EACvC,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;EAEd,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;EAEd,IAAI;AAAA,IACF,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,YAAY;AAAA;;AAQhB,SAAgB,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,GAEnG,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,IACd,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 y=require("react-i18next");var L={show:"Show Sidebar",hide:"Hide Sidebar"},C={layoutSwitcher:L},N={en:"English",zh:"Chinese",fr:"French"},P={languageSwitcher:N},O={default:"Default",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},$={theme:"Theme",language:"Language",layout:"Layout",preferences:"Preferences"},R={baseSwitcher:O,preference:$},G={default:"Default",light:"Light",dark:"Dark",cosmic:"Cosmic",corporate:"Corporate",forest:"Forest",coffee:"Coffee",wine:"Wine",wheat:"Wheat"},M={themeSwitcher:G},x={show:"Afficher la barre latérale",hide:"Masquer la barre latérale"},U={layoutSwitcher:x},q={en:"Anglais",zh:"Chinois",fr:"Français"},F={languageSwitcher:q},j={default:"Par défaut",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},k={theme:"Thème",language:"Langue",layout:"Disposition",preferences:"Préférences"},T={baseSwitcher:j,preference:k},D={default:"Par défaut",light:"Clair",dark:"Sombre",cosmic:"Cosmique",corporate:"Entreprise",forest:"Forêt",coffee:"Coffee",wine:"Vin",wheat:"Blé"},I={themeSwitcher:D},B={show:"显示侧边栏",hide:"隐藏侧边栏"},W={layoutSwitcher:B},X={en:"英语",zh:"中文",fr:"法语"},z={languageSwitcher:X},K={default:"默认",ios:"iOS",android:"Android",windows:"Windows",linux:"Linux"},V={theme:"主题",language:"语言",layout:"布局",preferences:"偏好设置"},Y={baseSwitcher:K,preference:V},H={default:"默认",light:"浅色",dark:"深色",cosmic:"宇宙",corporate:"企业",forest:"森林",coffee:"咖啡",wine:"酒红",wheat:"麦田"},Z={themeSwitcher:H},A=["theme","language","layout","preference"],_={theme:"theme",language:"language",layout:"layout",preference:"preference"},J={en:{theme:M,language:P,layout:C,preference:R},zh:{theme:Z,language:z,layout:W,preference:Y},fr:{theme:I,language:F,layout:U,preference:T}};function m(){return{RESOURCES:J,NAME_SPACES_MAP:_,NAME_SPACES:[...A]}}function Q(){const r=f.getItem(a.LANGUAGE_STORAGE_KEY);return r==null||a.LANGUAGE_VALUES.includes(r)?r:void 0}function w(r){f.setItem(a.LANGUAGE_STORAGE_KEY,r)}function ee(){f.removeItem(a.LANGUAGE_STORAGE_KEY)}var h=!1;function re(r){const g=m(),i=r.bundles,o=r.fallbackLng??a.LanguageEnum.ZH,p=[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))],v=t=>{const e=t.split("-")[0]?.toLowerCase()??"";a.LANGUAGE_VALUES.includes(e)&&w(e)};h||(n.default.on("languageChanged",v),h=!0),n.default.use(c.default).use(y.initReactI18next).init({compatibilityJSON:"v4",resources:p,lng:o,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 b=Array.isArray(u)?u:[u];for(const{namespace:S,bundle:l}of b)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 ae=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 Q}});Object.defineProperty(exports,"i18n_default",{enumerable:!0,get:function(){return ae}});Object.defineProperty(exports,"initI18n",{enumerable:!0,get:function(){return re}});Object.defineProperty(exports,"removeLanguageStorage",{enumerable:!0,get:function(){return ee}});Object.defineProperty(exports,"setLanguageStorage",{enumerable:!0,get:function(){return w}});
2
+
3
+ //# sourceMappingURL=chunk-i18n-GncnLl4L.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-i18n-GncnLl4L.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 { 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 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: fallbackLng,\n fallbackLng,\n ns: NAME_SPACES,\n defaultNS: NAME_SPACES[0],\n interpolation: { escapeValue: false },\n keySeparator: \".\",\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,EAAmC,CACvC,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,GAEd,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,GAEd,GAAI,CACF,MAAO,EACP,SAAU,EACV,OAAQ,EACR,WAAY,IAQhB,SAAgB,GAAkD,CAChE,MAAO,CACL,UAAW,EACX,gBAAiB,EACjB,YAAa,CAAC,GAAG,CAAA,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,EAEnG,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,IACd,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-GncnLl4L.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"}