nfx-ui 0.16.2 → 0.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (935) hide show
  1. package/README.md +67 -271
  2. package/dist/animations.cjs +1 -2
  3. package/dist/animations.mjs +9 -9
  4. package/dist/apis.cjs +0 -1
  5. package/dist/apis.cjs.map +1 -1
  6. package/dist/apis.mjs +0 -1
  7. package/dist/apis.mjs.map +1 -1
  8. package/dist/chunk-LucideIcon-Chc7x8mN.mjs +15 -0
  9. package/dist/chunk-LucideIcon-Chc7x8mN.mjs.map +1 -0
  10. package/dist/chunk-LucideIcon-CuoAB_OX.cjs +3 -0
  11. package/dist/chunk-LucideIcon-CuoAB_OX.cjs.map +1 -0
  12. package/dist/chunk-ModalProvider-BgLSJXhS.cjs +3 -0
  13. package/dist/chunk-ModalProvider-BgLSJXhS.cjs.map +1 -0
  14. package/dist/chunk-ModalProvider-CpzFzfWG.mjs +220 -0
  15. package/dist/chunk-ModalProvider-CpzFzfWG.mjs.map +1 -0
  16. package/dist/chunk-PixelBlast-BbJ2VmCL.cjs +190 -0
  17. package/dist/chunk-PixelBlast-BbJ2VmCL.cjs.map +1 -0
  18. package/dist/chunk-PixelBlast-BiBrG_NH.mjs +504 -0
  19. package/dist/chunk-PixelBlast-BiBrG_NH.mjs.map +1 -0
  20. package/dist/chunk-ThemeProvider-C4kxX2D0.cjs +3 -0
  21. package/dist/chunk-ThemeProvider-C4kxX2D0.cjs.map +1 -0
  22. package/dist/chunk-ThemeProvider-D0U8V6ky.mjs +28 -0
  23. package/dist/chunk-ThemeProvider-D0U8V6ky.mjs.map +1 -0
  24. package/dist/chunk-animations-CkOpTtX1.cjs +11 -0
  25. package/dist/chunk-animations-CkOpTtX1.cjs.map +1 -0
  26. package/dist/chunk-animations-DKyNVF-O.mjs +973 -0
  27. package/dist/chunk-animations-DKyNVF-O.mjs.map +1 -0
  28. package/dist/chunk-dashboard-BsGK96hu.mjs +104 -0
  29. package/dist/chunk-dashboard-BsGK96hu.mjs.map +1 -0
  30. package/dist/chunk-dashboard-CFT0HjSM.cjs +3 -0
  31. package/dist/chunk-dashboard-CFT0HjSM.cjs.map +1 -0
  32. package/dist/chunk-hooks-Cy_8mdDG.mjs +90 -0
  33. package/dist/chunk-hooks-Cy_8mdDG.mjs.map +1 -0
  34. package/dist/chunk-hooks-yVn82nBZ.cjs +3 -0
  35. package/dist/chunk-hooks-yVn82nBZ.cjs.map +1 -0
  36. package/dist/chunk-i18n-B8pZ_hpC.mjs +435 -0
  37. package/dist/chunk-i18n-B8pZ_hpC.mjs.map +1 -0
  38. package/dist/chunk-i18n-C06d89Eq.cjs +3 -0
  39. package/dist/chunk-i18n-C06d89Eq.cjs.map +1 -0
  40. package/dist/chunk-layout-BDpxG0Ca.mjs +27 -0
  41. package/dist/chunk-layout-BDpxG0Ca.mjs.map +1 -0
  42. package/dist/chunk-layout-DKCQHheg.cjs +3 -0
  43. package/dist/chunk-layout-DKCQHheg.cjs.map +1 -0
  44. package/dist/chunk-lucide-CrMbx2vC.cjs +3 -0
  45. package/dist/chunk-lucide-CrMbx2vC.cjs.map +1 -0
  46. package/dist/chunk-lucide-yNs0iz1-.mjs +158 -0
  47. package/dist/chunk-lucide-yNs0iz1-.mjs.map +1 -0
  48. package/dist/chunk-modal-C3LgRLur.cjs +3 -0
  49. package/dist/chunk-modal-C3LgRLur.cjs.map +1 -0
  50. package/dist/chunk-modal-D9vk2ENf.mjs +92 -0
  51. package/dist/chunk-modal-D9vk2ENf.mjs.map +1 -0
  52. package/dist/chunk-preference-BP-GO9Uk.cjs +3 -0
  53. package/dist/chunk-preference-BP-GO9Uk.cjs.map +1 -0
  54. package/dist/chunk-preference-BXXryZLY.cjs +3 -0
  55. package/dist/chunk-preference-BXXryZLY.cjs.map +1 -0
  56. package/dist/chunk-preference-Y15HwKd0.mjs +42 -0
  57. package/dist/chunk-preference-Y15HwKd0.mjs.map +1 -0
  58. package/dist/chunk-preference-x4EdmqU6.mjs +295 -0
  59. package/dist/chunk-preference-x4EdmqU6.mjs.map +1 -0
  60. package/dist/chunk-rolldown-runtime-Bvb_CV3F.cjs +1 -0
  61. package/dist/chunk-useLanguageLabel-38sEu2rP.cjs +3 -0
  62. package/dist/chunk-useLanguageLabel-38sEu2rP.cjs.map +1 -0
  63. package/dist/chunk-useLanguageLabel-BLdxHuep.mjs +38 -0
  64. package/dist/chunk-useLanguageLabel-BLdxHuep.mjs.map +1 -0
  65. package/dist/chunk-useLayout-CbUZVWpS.cjs +3 -0
  66. package/dist/chunk-useLayout-CbUZVWpS.cjs.map +1 -0
  67. package/dist/chunk-useLayout-CjXHRPLD.mjs +302 -0
  68. package/dist/chunk-useLayout-CjXHRPLD.mjs.map +1 -0
  69. package/dist/chunk-useTheme-C2Ip6OAs.mjs +34 -0
  70. package/dist/chunk-useTheme-C2Ip6OAs.mjs.map +1 -0
  71. package/dist/chunk-useTheme-DSps5NbC.cjs +3 -0
  72. package/dist/chunk-useTheme-DSps5NbC.cjs.map +1 -0
  73. package/dist/components.cjs +3 -3
  74. package/dist/components.cjs.map +1 -1
  75. package/dist/components.mjs +1122 -1472
  76. package/dist/components.mjs.map +1 -1
  77. package/dist/constants.cjs +0 -1
  78. package/dist/constants.cjs.map +1 -1
  79. package/dist/constants.mjs +0 -1
  80. package/dist/constants.mjs.map +1 -1
  81. package/dist/enums.cjs +1 -0
  82. package/dist/enums.mjs +43 -0
  83. package/dist/events.cjs +0 -1
  84. package/dist/events.cjs.map +1 -1
  85. package/dist/events.mjs +0 -1
  86. package/dist/events.mjs.map +1 -1
  87. package/dist/hooks.cjs +1 -4
  88. package/dist/hooks.mjs +12 -104
  89. package/dist/icons.cjs +3 -2
  90. package/dist/icons.cjs.map +1 -0
  91. package/dist/icons.mjs +19350 -73
  92. package/dist/icons.mjs.map +1 -0
  93. package/dist/languages.cjs +1 -2
  94. package/dist/languages.cjs.map +1 -1
  95. package/dist/languages.mjs +63 -76
  96. package/dist/languages.mjs.map +1 -1
  97. package/dist/layouts.cjs +2 -2
  98. package/dist/layouts.cjs.map +1 -1
  99. package/dist/layouts.mjs +787 -395
  100. package/dist/layouts.mjs.map +1 -1
  101. package/dist/navigations.cjs +0 -1
  102. package/dist/navigations.cjs.map +1 -1
  103. package/dist/navigations.mjs +0 -1
  104. package/dist/navigations.mjs.map +1 -1
  105. package/dist/pixel-blast.cjs +1 -191
  106. package/dist/pixel-blast.mjs +2 -503
  107. package/dist/providers.cjs +4 -0
  108. package/dist/providers.cjs.map +1 -0
  109. package/dist/providers.mjs +37 -0
  110. package/dist/providers.mjs.map +1 -0
  111. package/dist/services.cjs +0 -1
  112. package/dist/services.cjs.map +1 -1
  113. package/dist/services.mjs +0 -1
  114. package/dist/services.mjs.map +1 -1
  115. package/dist/src/designs/animations/index.d.ts +1 -0
  116. package/dist/src/designs/animations/index.d.ts.map +1 -1
  117. package/dist/src/designs/components/CardHeader.d.ts +9 -0
  118. package/dist/src/designs/components/CardHeader.d.ts.map +1 -0
  119. package/dist/src/designs/components/EmptyState/index.d.ts +10 -0
  120. package/dist/src/designs/components/EmptyState/index.d.ts.map +1 -0
  121. package/dist/src/designs/components/LayoutSwitcher/index.d.ts +1 -1
  122. package/dist/src/designs/components/LayoutSwitcher/index.d.ts.map +1 -1
  123. package/dist/src/designs/components/Logo/index.d.ts +15 -0
  124. package/dist/src/designs/components/Logo/index.d.ts.map +1 -0
  125. package/dist/src/designs/components/LucideIcon.d.ts +11 -0
  126. package/dist/src/designs/components/LucideIcon.d.ts.map +1 -0
  127. package/dist/src/designs/components/PageHeader/index.d.ts +11 -0
  128. package/dist/src/designs/components/PageHeader/index.d.ts.map +1 -0
  129. package/dist/src/designs/components/PreferencesPopover/index.d.ts +6 -0
  130. package/dist/src/designs/components/PreferencesPopover/index.d.ts.map +1 -0
  131. package/dist/src/designs/components/Suspense/index.d.ts +6 -60
  132. package/dist/src/designs/components/Suspense/index.d.ts.map +1 -1
  133. package/dist/src/designs/components/ThemeSettings/index.d.ts +2 -0
  134. package/dist/src/designs/components/ThemeSettings/index.d.ts.map +1 -0
  135. package/dist/src/designs/components/ThemeSwitcher/index.d.ts +1 -3
  136. package/dist/src/designs/components/ThemeSwitcher/index.d.ts.map +1 -1
  137. package/dist/src/designs/components/VirtuosoList.d.ts +37 -0
  138. package/dist/src/designs/components/VirtuosoList.d.ts.map +1 -0
  139. package/dist/src/designs/components/index.d.ts +19 -25
  140. package/dist/src/designs/components/index.d.ts.map +1 -1
  141. package/dist/src/designs/layouts/components/Background/index.d.ts +1 -1
  142. package/dist/src/designs/layouts/components/Background/index.d.ts.map +1 -1
  143. package/dist/src/designs/layouts/components/Header/index.d.ts +31 -3
  144. package/dist/src/designs/layouts/components/Header/index.d.ts.map +1 -1
  145. package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts +1 -1
  146. package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts.map +1 -1
  147. package/dist/src/designs/layouts/components/Main/index.d.ts +8 -0
  148. package/dist/src/designs/layouts/components/Main/index.d.ts.map +1 -0
  149. package/dist/src/designs/layouts/components/MainWrapper/index.d.ts +1 -1
  150. package/dist/src/designs/layouts/components/MainWrapper/index.d.ts.map +1 -1
  151. package/dist/src/designs/layouts/components/PageFrame/index.d.ts +10 -0
  152. package/dist/src/designs/layouts/components/PageFrame/index.d.ts.map +1 -0
  153. package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts +1 -1
  154. package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts.map +1 -1
  155. package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts +1 -1
  156. package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts.map +1 -1
  157. package/dist/src/designs/layouts/components/Sidebar/index.d.ts +74 -2
  158. package/dist/src/designs/layouts/components/Sidebar/index.d.ts.map +1 -1
  159. package/dist/src/designs/layouts/components/Sidebar/menu.d.ts +9 -0
  160. package/dist/src/designs/layouts/components/Sidebar/menu.d.ts.map +1 -0
  161. package/dist/src/designs/layouts/components/UserTopBar/index.d.ts +18 -0
  162. package/dist/src/designs/layouts/components/UserTopBar/index.d.ts.map +1 -0
  163. package/dist/src/designs/layouts/components/index.d.ts +9 -1
  164. package/dist/src/designs/layouts/components/index.d.ts.map +1 -1
  165. package/dist/src/designs/layouts/index.d.ts +2 -0
  166. package/dist/src/designs/layouts/index.d.ts.map +1 -1
  167. package/dist/src/designs/providers/ModalProvider/components/Base.d.ts +6 -0
  168. package/dist/src/designs/providers/ModalProvider/components/Base.d.ts.map +1 -0
  169. package/dist/src/designs/providers/ModalProvider/components/Confirm.d.ts +6 -0
  170. package/dist/src/designs/providers/ModalProvider/components/Confirm.d.ts.map +1 -0
  171. package/dist/src/designs/providers/ModalProvider/components/Loading.d.ts +6 -0
  172. package/dist/src/designs/providers/ModalProvider/components/Loading.d.ts.map +1 -0
  173. package/dist/src/designs/providers/ModalProvider/index.d.ts +10 -0
  174. package/dist/src/designs/providers/ModalProvider/index.d.ts.map +1 -0
  175. package/dist/src/{preference/constants.d.ts → enums/dashboard.d.ts} +4 -8
  176. package/dist/src/enums/dashboard.d.ts.map +1 -0
  177. package/dist/src/enums/index.d.ts +4 -0
  178. package/dist/src/enums/index.d.ts.map +1 -0
  179. package/dist/src/enums/language.d.ts +13 -0
  180. package/dist/src/enums/language.d.ts.map +1 -0
  181. package/dist/src/enums/theme.d.ts +107 -0
  182. package/dist/src/enums/theme.d.ts.map +1 -0
  183. package/dist/src/hooks/index.d.ts +2 -4
  184. package/dist/src/hooks/index.d.ts.map +1 -1
  185. package/dist/src/hooks/preference.d.ts +21 -0
  186. package/dist/src/hooks/preference.d.ts.map +1 -0
  187. package/dist/src/icons/animated/accessibility-icon.d.ts +13 -0
  188. package/dist/src/icons/animated/accessibility-icon.d.ts.map +1 -0
  189. package/dist/src/icons/animated/airplane-icon.d.ts +9 -0
  190. package/dist/src/icons/animated/airplane-icon.d.ts.map +1 -0
  191. package/dist/src/icons/animated/alarm-clock-plus-icon.d.ts +11 -0
  192. package/dist/src/icons/animated/alarm-clock-plus-icon.d.ts.map +1 -0
  193. package/dist/src/icons/animated/align-center-icon.d.ts +4 -0
  194. package/dist/src/icons/animated/align-center-icon.d.ts.map +1 -0
  195. package/dist/src/icons/animated/align-vertical-space-around-icon.d.ts +4 -0
  196. package/dist/src/icons/animated/align-vertical-space-around-icon.d.ts.map +1 -0
  197. package/dist/src/icons/animated/ambulance-icon.d.ts +4 -0
  198. package/dist/src/icons/animated/ambulance-icon.d.ts.map +1 -0
  199. package/dist/src/icons/animated/ampersand-icon.d.ts +4 -0
  200. package/dist/src/icons/animated/ampersand-icon.d.ts.map +1 -0
  201. package/dist/src/icons/animated/angry-icon.d.ts +4 -0
  202. package/dist/src/icons/animated/angry-icon.d.ts.map +1 -0
  203. package/dist/src/icons/animated/annoyed-icon.d.ts +4 -0
  204. package/dist/src/icons/animated/annoyed-icon.d.ts.map +1 -0
  205. package/dist/src/icons/animated/apple-brand-logo.d.ts +4 -0
  206. package/dist/src/icons/animated/apple-brand-logo.d.ts.map +1 -0
  207. package/dist/src/icons/animated/arrow-back-icon.d.ts +4 -0
  208. package/dist/src/icons/animated/arrow-back-icon.d.ts.map +1 -0
  209. package/dist/src/icons/animated/arrow-back-up-icon.d.ts +4 -0
  210. package/dist/src/icons/animated/arrow-back-up-icon.d.ts.map +1 -0
  211. package/dist/src/icons/animated/arrow-big-down-dash-icon.d.ts +4 -0
  212. package/dist/src/icons/animated/arrow-big-down-dash-icon.d.ts.map +1 -0
  213. package/dist/src/icons/animated/arrow-big-down-icon.d.ts +4 -0
  214. package/dist/src/icons/animated/arrow-big-down-icon.d.ts.map +1 -0
  215. package/dist/src/icons/animated/arrow-big-left-dash-icon.d.ts +4 -0
  216. package/dist/src/icons/animated/arrow-big-left-dash-icon.d.ts.map +1 -0
  217. package/dist/src/icons/animated/arrow-big-left-icon.d.ts +4 -0
  218. package/dist/src/icons/animated/arrow-big-left-icon.d.ts.map +1 -0
  219. package/dist/src/icons/animated/arrow-big-right-dash-icon.d.ts +4 -0
  220. package/dist/src/icons/animated/arrow-big-right-dash-icon.d.ts.map +1 -0
  221. package/dist/src/icons/animated/arrow-big-right-icon.d.ts +4 -0
  222. package/dist/src/icons/animated/arrow-big-right-icon.d.ts.map +1 -0
  223. package/dist/src/icons/animated/arrow-big-up-dash-icon.d.ts +4 -0
  224. package/dist/src/icons/animated/arrow-big-up-dash-icon.d.ts.map +1 -0
  225. package/dist/src/icons/animated/arrow-big-up-icon.d.ts +4 -0
  226. package/dist/src/icons/animated/arrow-big-up-icon.d.ts.map +1 -0
  227. package/dist/src/icons/animated/arrow-down-0-1-icon.d.ts +4 -0
  228. package/dist/src/icons/animated/arrow-down-0-1-icon.d.ts.map +1 -0
  229. package/dist/src/icons/animated/arrow-down-1-0-icon.d.ts +4 -0
  230. package/dist/src/icons/animated/arrow-down-1-0-icon.d.ts.map +1 -0
  231. package/dist/src/icons/animated/arrow-down-a-z-icon.d.ts +4 -0
  232. package/dist/src/icons/animated/arrow-down-a-z-icon.d.ts.map +1 -0
  233. package/dist/src/icons/animated/arrow-narrow-down-dashed-icon.d.ts +4 -0
  234. package/dist/src/icons/animated/arrow-narrow-down-dashed-icon.d.ts.map +1 -0
  235. package/dist/src/icons/animated/arrow-narrow-down-icon.d.ts +4 -0
  236. package/dist/src/icons/animated/arrow-narrow-down-icon.d.ts.map +1 -0
  237. package/dist/src/icons/animated/arrow-narrow-left-dashed-icon.d.ts +4 -0
  238. package/dist/src/icons/animated/arrow-narrow-left-dashed-icon.d.ts.map +1 -0
  239. package/dist/src/icons/animated/arrow-narrow-left-icon.d.ts +4 -0
  240. package/dist/src/icons/animated/arrow-narrow-left-icon.d.ts.map +1 -0
  241. package/dist/src/icons/animated/arrow-narrow-right-dashed-icon.d.ts +4 -0
  242. package/dist/src/icons/animated/arrow-narrow-right-dashed-icon.d.ts.map +1 -0
  243. package/dist/src/icons/animated/arrow-narrow-right-icon.d.ts +4 -0
  244. package/dist/src/icons/animated/arrow-narrow-right-icon.d.ts.map +1 -0
  245. package/dist/src/icons/animated/arrow-narrow-up-dashed-icon.d.ts +4 -0
  246. package/dist/src/icons/animated/arrow-narrow-up-dashed-icon.d.ts.map +1 -0
  247. package/dist/src/icons/animated/arrow-narrow-up-icon.d.ts +4 -0
  248. package/dist/src/icons/animated/arrow-narrow-up-icon.d.ts.map +1 -0
  249. package/dist/src/icons/animated/at-sign-icon.d.ts +4 -0
  250. package/dist/src/icons/animated/at-sign-icon.d.ts.map +1 -0
  251. package/dist/src/icons/animated/banana-icon.d.ts +4 -0
  252. package/dist/src/icons/animated/banana-icon.d.ts.map +1 -0
  253. package/dist/src/icons/animated/battery-charging-icon.d.ts +4 -0
  254. package/dist/src/icons/animated/battery-charging-icon.d.ts.map +1 -0
  255. package/dist/src/icons/animated/battery-icon.d.ts +4 -0
  256. package/dist/src/icons/animated/battery-icon.d.ts.map +1 -0
  257. package/dist/src/icons/animated/battery-pause-icon.d.ts +4 -0
  258. package/dist/src/icons/animated/battery-pause-icon.d.ts.map +1 -0
  259. package/dist/src/icons/animated/bell-off-icon.d.ts +4 -0
  260. package/dist/src/icons/animated/bell-off-icon.d.ts.map +1 -0
  261. package/dist/src/icons/animated/bluetooth-connected-icon.d.ts +4 -0
  262. package/dist/src/icons/animated/bluetooth-connected-icon.d.ts.map +1 -0
  263. package/dist/src/icons/animated/book-icon.d.ts +4 -0
  264. package/dist/src/icons/animated/book-icon.d.ts.map +1 -0
  265. package/dist/src/icons/animated/bookmark-icon.d.ts +4 -0
  266. package/dist/src/icons/animated/bookmark-icon.d.ts.map +1 -0
  267. package/dist/src/icons/animated/brain-circuit-icon.d.ts +4 -0
  268. package/dist/src/icons/animated/brain-circuit-icon.d.ts.map +1 -0
  269. package/dist/src/icons/animated/brand-aistudio-icon.d.ts +4 -0
  270. package/dist/src/icons/animated/brand-aistudio-icon.d.ts.map +1 -0
  271. package/dist/src/icons/animated/brand-anthropic-icon.d.ts +4 -0
  272. package/dist/src/icons/animated/brand-anthropic-icon.d.ts.map +1 -0
  273. package/dist/src/icons/animated/brand-aws-icon.d.ts +4 -0
  274. package/dist/src/icons/animated/brand-aws-icon.d.ts.map +1 -0
  275. package/dist/src/icons/animated/brand-bags-fm-icon.d.ts +4 -0
  276. package/dist/src/icons/animated/brand-bags-fm-icon.d.ts.map +1 -0
  277. package/dist/src/icons/animated/brand-chrome-icon.d.ts +4 -0
  278. package/dist/src/icons/animated/brand-chrome-icon.d.ts.map +1 -0
  279. package/dist/src/icons/animated/brand-cursor-icon.d.ts +4 -0
  280. package/dist/src/icons/animated/brand-cursor-icon.d.ts.map +1 -0
  281. package/dist/src/icons/animated/brand-gemini-icon.d.ts +4 -0
  282. package/dist/src/icons/animated/brand-gemini-icon.d.ts.map +1 -0
  283. package/dist/src/icons/animated/brand-google-icon.d.ts +4 -0
  284. package/dist/src/icons/animated/brand-google-icon.d.ts.map +1 -0
  285. package/dist/src/icons/animated/brand-grok-icon.d.ts +4 -0
  286. package/dist/src/icons/animated/brand-grok-icon.d.ts.map +1 -0
  287. package/dist/src/icons/animated/brand-lmstudio-icon.d.ts +4 -0
  288. package/dist/src/icons/animated/brand-lmstudio-icon.d.ts.map +1 -0
  289. package/dist/src/icons/animated/brand-midjourney-icon.d.ts +4 -0
  290. package/dist/src/icons/animated/brand-midjourney-icon.d.ts.map +1 -0
  291. package/dist/src/icons/animated/brand-nextjs-icon.d.ts +4 -0
  292. package/dist/src/icons/animated/brand-nextjs-icon.d.ts.map +1 -0
  293. package/dist/src/icons/animated/brand-notion-icon.d.ts +4 -0
  294. package/dist/src/icons/animated/brand-notion-icon.d.ts.map +1 -0
  295. package/dist/src/icons/animated/brand-ollama-icon.d.ts +4 -0
  296. package/dist/src/icons/animated/brand-ollama-icon.d.ts.map +1 -0
  297. package/dist/src/icons/animated/brand-openai-icon.d.ts +4 -0
  298. package/dist/src/icons/animated/brand-openai-icon.d.ts.map +1 -0
  299. package/dist/src/icons/animated/brand-paypal-icon.d.ts +4 -0
  300. package/dist/src/icons/animated/brand-paypal-icon.d.ts.map +1 -0
  301. package/dist/src/icons/animated/brand-qwen-icon.d.ts +4 -0
  302. package/dist/src/icons/animated/brand-qwen-icon.d.ts.map +1 -0
  303. package/dist/src/icons/animated/brand-railway-icon.d.ts +4 -0
  304. package/dist/src/icons/animated/brand-railway-icon.d.ts.map +1 -0
  305. package/dist/src/icons/animated/brand-react-icon.d.ts +4 -0
  306. package/dist/src/icons/animated/brand-react-icon.d.ts.map +1 -0
  307. package/dist/src/icons/animated/brand-react-native-icon.d.ts +4 -0
  308. package/dist/src/icons/animated/brand-react-native-icon.d.ts.map +1 -0
  309. package/dist/src/icons/animated/brand-stripe-icon.d.ts +4 -0
  310. package/dist/src/icons/animated/brand-stripe-icon.d.ts.map +1 -0
  311. package/dist/src/icons/animated/brand-telegram-icon.d.ts +4 -0
  312. package/dist/src/icons/animated/brand-telegram-icon.d.ts.map +1 -0
  313. package/dist/src/icons/animated/brand-threads-icon.d.ts +4 -0
  314. package/dist/src/icons/animated/brand-threads-icon.d.ts.map +1 -0
  315. package/dist/src/icons/animated/brand-twitch-icon.d.ts +4 -0
  316. package/dist/src/icons/animated/brand-twitch-icon.d.ts.map +1 -0
  317. package/dist/src/icons/animated/brand-vercel-icon.d.ts +4 -0
  318. package/dist/src/icons/animated/brand-vercel-icon.d.ts.map +1 -0
  319. package/dist/src/icons/animated/brand-windows-icon.d.ts +4 -0
  320. package/dist/src/icons/animated/brand-windows-icon.d.ts.map +1 -0
  321. package/dist/src/icons/animated/brand-wordpress-icon.d.ts +4 -0
  322. package/dist/src/icons/animated/brand-wordpress-icon.d.ts.map +1 -0
  323. package/dist/src/icons/animated/brand-xai-icon.d.ts +4 -0
  324. package/dist/src/icons/animated/brand-xai-icon.d.ts.map +1 -0
  325. package/dist/src/icons/animated/brand-zoom-icon.d.ts +4 -0
  326. package/dist/src/icons/animated/brand-zoom-icon.d.ts.map +1 -0
  327. package/dist/src/icons/animated/brightness-down-icon.d.ts +4 -0
  328. package/dist/src/icons/animated/brightness-down-icon.d.ts.map +1 -0
  329. package/dist/src/icons/animated/bug-icon.d.ts +4 -0
  330. package/dist/src/icons/animated/bug-icon.d.ts.map +1 -0
  331. package/dist/src/icons/animated/bulb-svg.d.ts +4 -0
  332. package/dist/src/icons/animated/bulb-svg.d.ts.map +1 -0
  333. package/dist/src/icons/animated/camera-icon.d.ts +4 -0
  334. package/dist/src/icons/animated/camera-icon.d.ts.map +1 -0
  335. package/dist/src/icons/animated/camera-off-icon.d.ts +4 -0
  336. package/dist/src/icons/animated/camera-off-icon.d.ts.map +1 -0
  337. package/dist/src/icons/animated/candy-cane-icon.d.ts +4 -0
  338. package/dist/src/icons/animated/candy-cane-icon.d.ts.map +1 -0
  339. package/dist/src/icons/animated/cart-icon.d.ts +4 -0
  340. package/dist/src/icons/animated/cart-icon.d.ts.map +1 -0
  341. package/dist/src/icons/animated/chart-bar-icon.d.ts +4 -0
  342. package/dist/src/icons/animated/chart-bar-icon.d.ts.map +1 -0
  343. package/dist/src/icons/animated/chart-covariate-icon.d.ts +4 -0
  344. package/dist/src/icons/animated/chart-covariate-icon.d.ts.map +1 -0
  345. package/dist/src/icons/animated/chart-histogram-icon.d.ts +4 -0
  346. package/dist/src/icons/animated/chart-histogram-icon.d.ts.map +1 -0
  347. package/dist/src/icons/animated/chart-line-icon.d.ts +4 -0
  348. package/dist/src/icons/animated/chart-line-icon.d.ts.map +1 -0
  349. package/dist/src/icons/animated/chart-pie-icon.d.ts +4 -0
  350. package/dist/src/icons/animated/chart-pie-icon.d.ts.map +1 -0
  351. package/dist/src/icons/animated/checked-icon.d.ts +4 -0
  352. package/dist/src/icons/animated/checked-icon.d.ts.map +1 -0
  353. package/dist/src/icons/animated/clock-icon.d.ts +4 -0
  354. package/dist/src/icons/animated/clock-icon.d.ts.map +1 -0
  355. package/dist/src/icons/animated/cloud-1-icon.d.ts +4 -0
  356. package/dist/src/icons/animated/cloud-1-icon.d.ts.map +1 -0
  357. package/dist/src/icons/animated/cloud-2-icon.d.ts +4 -0
  358. package/dist/src/icons/animated/cloud-2-icon.d.ts.map +1 -0
  359. package/dist/src/icons/animated/cloud-3-icon.d.ts +4 -0
  360. package/dist/src/icons/animated/cloud-3-icon.d.ts.map +1 -0
  361. package/dist/src/icons/animated/code-icon.d.ts +4 -0
  362. package/dist/src/icons/animated/code-icon.d.ts.map +1 -0
  363. package/dist/src/icons/animated/code-xml-icon.d.ts +4 -0
  364. package/dist/src/icons/animated/code-xml-icon.d.ts.map +1 -0
  365. package/dist/src/icons/animated/coffee-icon.d.ts +4 -0
  366. package/dist/src/icons/animated/coffee-icon.d.ts.map +1 -0
  367. package/dist/src/icons/animated/coin-bitcoin-icon.d.ts +4 -0
  368. package/dist/src/icons/animated/coin-bitcoin-icon.d.ts.map +1 -0
  369. package/dist/src/icons/animated/copy-icon.d.ts +4 -0
  370. package/dist/src/icons/animated/copy-icon.d.ts.map +1 -0
  371. package/dist/src/icons/animated/copy-off-icon.d.ts +4 -0
  372. package/dist/src/icons/animated/copy-off-icon.d.ts.map +1 -0
  373. package/dist/src/icons/animated/copyright-icon.d.ts +4 -0
  374. package/dist/src/icons/animated/copyright-icon.d.ts.map +1 -0
  375. package/dist/src/icons/animated/cpu-icon.d.ts +4 -0
  376. package/dist/src/icons/animated/cpu-icon.d.ts.map +1 -0
  377. package/dist/src/icons/animated/credit-card.d.ts +4 -0
  378. package/dist/src/icons/animated/credit-card.d.ts.map +1 -0
  379. package/dist/src/icons/animated/currency-bitcoin-icon.d.ts +4 -0
  380. package/dist/src/icons/animated/currency-bitcoin-icon.d.ts.map +1 -0
  381. package/dist/src/icons/animated/currency-dollar-icon.d.ts +4 -0
  382. package/dist/src/icons/animated/currency-dollar-icon.d.ts.map +1 -0
  383. package/dist/src/icons/animated/currency-ethereum-icon.d.ts +4 -0
  384. package/dist/src/icons/animated/currency-ethereum-icon.d.ts.map +1 -0
  385. package/dist/src/icons/animated/currency-euro-icon.d.ts +4 -0
  386. package/dist/src/icons/animated/currency-euro-icon.d.ts.map +1 -0
  387. package/dist/src/icons/animated/currency-rupee-icon.d.ts +4 -0
  388. package/dist/src/icons/animated/currency-rupee-icon.d.ts.map +1 -0
  389. package/dist/src/icons/animated/device-airpods-icon.d.ts +4 -0
  390. package/dist/src/icons/animated/device-airpods-icon.d.ts.map +1 -0
  391. package/dist/src/icons/animated/dialpad-icon.d.ts +4 -0
  392. package/dist/src/icons/animated/dialpad-icon.d.ts.map +1 -0
  393. package/dist/src/icons/animated/dino-icon.d.ts +4 -0
  394. package/dist/src/icons/animated/dino-icon.d.ts.map +1 -0
  395. package/dist/src/icons/animated/discord-icon.d.ts +4 -0
  396. package/dist/src/icons/animated/discord-icon.d.ts.map +1 -0
  397. package/dist/src/icons/animated/docker-icon.d.ts +4 -0
  398. package/dist/src/icons/animated/docker-icon.d.ts.map +1 -0
  399. package/dist/src/icons/animated/dots-horizontal-icon.d.ts +4 -0
  400. package/dist/src/icons/animated/dots-horizontal-icon.d.ts.map +1 -0
  401. package/dist/src/icons/animated/dots-vertical-icon.d.ts +4 -0
  402. package/dist/src/icons/animated/dots-vertical-icon.d.ts.map +1 -0
  403. package/dist/src/icons/animated/double-check-icon.d.ts +4 -0
  404. package/dist/src/icons/animated/double-check-icon.d.ts.map +1 -0
  405. package/dist/src/icons/animated/down-chevron.d.ts +4 -0
  406. package/dist/src/icons/animated/down-chevron.d.ts.map +1 -0
  407. package/dist/src/icons/animated/download-icon.d.ts +4 -0
  408. package/dist/src/icons/animated/download-icon.d.ts.map +1 -0
  409. package/dist/src/icons/animated/drum-icon.d.ts +4 -0
  410. package/dist/src/icons/animated/drum-icon.d.ts.map +1 -0
  411. package/dist/src/icons/animated/expand-icon.d.ts +4 -0
  412. package/dist/src/icons/animated/expand-icon.d.ts.map +1 -0
  413. package/dist/src/icons/animated/external-link-icon.d.ts +4 -0
  414. package/dist/src/icons/animated/external-link-icon.d.ts.map +1 -0
  415. package/dist/src/icons/animated/eye-icon.d.ts +4 -0
  416. package/dist/src/icons/animated/eye-icon.d.ts.map +1 -0
  417. package/dist/src/icons/animated/eye-off-icon.d.ts +4 -0
  418. package/dist/src/icons/animated/eye-off-icon.d.ts.map +1 -0
  419. package/dist/src/icons/animated/facebook-icon.d.ts +4 -0
  420. package/dist/src/icons/animated/facebook-icon.d.ts.map +1 -0
  421. package/dist/src/icons/animated/figma-icon.d.ts +4 -0
  422. package/dist/src/icons/animated/figma-icon.d.ts.map +1 -0
  423. package/dist/src/icons/animated/file-description-icon.d.ts +4 -0
  424. package/dist/src/icons/animated/file-description-icon.d.ts.map +1 -0
  425. package/dist/src/icons/animated/filled-bell-icon.d.ts +4 -0
  426. package/dist/src/icons/animated/filled-bell-icon.d.ts.map +1 -0
  427. package/dist/src/icons/animated/filled-checked-icon.d.ts +4 -0
  428. package/dist/src/icons/animated/filled-checked-icon.d.ts.map +1 -0
  429. package/dist/src/icons/animated/filter-icon.d.ts +4 -0
  430. package/dist/src/icons/animated/filter-icon.d.ts.map +1 -0
  431. package/dist/src/icons/animated/flame-icon.d.ts +4 -0
  432. package/dist/src/icons/animated/flame-icon.d.ts.map +1 -0
  433. package/dist/src/icons/animated/focus-icon.d.ts +4 -0
  434. package/dist/src/icons/animated/focus-icon.d.ts.map +1 -0
  435. package/dist/src/icons/animated/gamepad-icon.d.ts +4 -0
  436. package/dist/src/icons/animated/gamepad-icon.d.ts.map +1 -0
  437. package/dist/src/icons/animated/gauge-icon.d.ts +4 -0
  438. package/dist/src/icons/animated/gauge-icon.d.ts.map +1 -0
  439. package/dist/src/icons/animated/gear-icon.d.ts +4 -0
  440. package/dist/src/icons/animated/gear-icon.d.ts.map +1 -0
  441. package/dist/src/icons/animated/ghost-icon.d.ts +4 -0
  442. package/dist/src/icons/animated/ghost-icon.d.ts.map +1 -0
  443. package/dist/src/icons/animated/github-copilot-icon.d.ts +4 -0
  444. package/dist/src/icons/animated/github-copilot-icon.d.ts.map +1 -0
  445. package/dist/src/icons/animated/github-icon.d.ts +4 -0
  446. package/dist/src/icons/animated/github-icon.d.ts.map +1 -0
  447. package/dist/src/icons/animated/gitlab-icon.d.ts +4 -0
  448. package/dist/src/icons/animated/gitlab-icon.d.ts.map +1 -0
  449. package/dist/src/icons/animated/globe-icon.d.ts +4 -0
  450. package/dist/src/icons/animated/globe-icon.d.ts.map +1 -0
  451. package/dist/src/icons/animated/gmail-icon.d.ts +4 -0
  452. package/dist/src/icons/animated/gmail-icon.d.ts.map +1 -0
  453. package/dist/src/icons/animated/golang-icon.d.ts +4 -0
  454. package/dist/src/icons/animated/golang-icon.d.ts.map +1 -0
  455. package/dist/src/icons/animated/hand-heart-icon.d.ts +4 -0
  456. package/dist/src/icons/animated/hand-heart-icon.d.ts.map +1 -0
  457. package/dist/src/icons/animated/hashtag-icon.d.ts +4 -0
  458. package/dist/src/icons/animated/hashtag-icon.d.ts.map +1 -0
  459. package/dist/src/icons/animated/heart-icon.d.ts +4 -0
  460. package/dist/src/icons/animated/heart-icon.d.ts.map +1 -0
  461. package/dist/src/icons/animated/history-circle-icon.d.ts +4 -0
  462. package/dist/src/icons/animated/history-circle-icon.d.ts.map +1 -0
  463. package/dist/src/icons/animated/home-icon.d.ts +4 -0
  464. package/dist/src/icons/animated/home-icon.d.ts.map +1 -0
  465. package/dist/src/icons/animated/hotel-icon.d.ts +4 -0
  466. package/dist/src/icons/animated/hotel-icon.d.ts.map +1 -0
  467. package/dist/src/icons/animated/index.d.ts +267 -0
  468. package/dist/src/icons/animated/index.d.ts.map +1 -0
  469. package/dist/src/icons/animated/info-circle-icon.d.ts +4 -0
  470. package/dist/src/icons/animated/info-circle-icon.d.ts.map +1 -0
  471. package/dist/src/icons/animated/instagram-icon.d.ts +4 -0
  472. package/dist/src/icons/animated/instagram-icon.d.ts.map +1 -0
  473. package/dist/src/icons/animated/javascript-icon.d.ts +4 -0
  474. package/dist/src/icons/animated/javascript-icon.d.ts.map +1 -0
  475. package/dist/src/icons/animated/keyframes-icon.d.ts +4 -0
  476. package/dist/src/icons/animated/keyframes-icon.d.ts.map +1 -0
  477. package/dist/src/icons/animated/layers-icon.d.ts +4 -0
  478. package/dist/src/icons/animated/layers-icon.d.ts.map +1 -0
  479. package/dist/src/icons/animated/layout-bottombar-collapse-icon.d.ts +4 -0
  480. package/dist/src/icons/animated/layout-bottombar-collapse-icon.d.ts.map +1 -0
  481. package/dist/src/icons/animated/layout-dashboard-icon.d.ts +4 -0
  482. package/dist/src/icons/animated/layout-dashboard-icon.d.ts.map +1 -0
  483. package/dist/src/icons/animated/layout-sidebar-right-collapse-icon.d.ts +4 -0
  484. package/dist/src/icons/animated/layout-sidebar-right-collapse-icon.d.ts.map +1 -0
  485. package/dist/src/icons/animated/layout-sidebar-right-icon.d.ts +4 -0
  486. package/dist/src/icons/animated/layout-sidebar-right-icon.d.ts.map +1 -0
  487. package/dist/src/icons/animated/letter-a-icon.d.ts +4 -0
  488. package/dist/src/icons/animated/letter-a-icon.d.ts.map +1 -0
  489. package/dist/src/icons/animated/letter-b-icon.d.ts +4 -0
  490. package/dist/src/icons/animated/letter-b-icon.d.ts.map +1 -0
  491. package/dist/src/icons/animated/letter-c-icon.d.ts +4 -0
  492. package/dist/src/icons/animated/letter-c-icon.d.ts.map +1 -0
  493. package/dist/src/icons/animated/letter-d-icon.d.ts +4 -0
  494. package/dist/src/icons/animated/letter-d-icon.d.ts.map +1 -0
  495. package/dist/src/icons/animated/letter-e-icon.d.ts +4 -0
  496. package/dist/src/icons/animated/letter-e-icon.d.ts.map +1 -0
  497. package/dist/src/icons/animated/letter-f-icon.d.ts +4 -0
  498. package/dist/src/icons/animated/letter-f-icon.d.ts.map +1 -0
  499. package/dist/src/icons/animated/letter-g-icon.d.ts +4 -0
  500. package/dist/src/icons/animated/letter-g-icon.d.ts.map +1 -0
  501. package/dist/src/icons/animated/letter-h-icon.d.ts +4 -0
  502. package/dist/src/icons/animated/letter-h-icon.d.ts.map +1 -0
  503. package/dist/src/icons/animated/letter-i-icon.d.ts +4 -0
  504. package/dist/src/icons/animated/letter-i-icon.d.ts.map +1 -0
  505. package/dist/src/icons/animated/letter-j-icon.d.ts +4 -0
  506. package/dist/src/icons/animated/letter-j-icon.d.ts.map +1 -0
  507. package/dist/src/icons/animated/letter-k-icon.d.ts +4 -0
  508. package/dist/src/icons/animated/letter-k-icon.d.ts.map +1 -0
  509. package/dist/src/icons/animated/letter-l-icon.d.ts +4 -0
  510. package/dist/src/icons/animated/letter-l-icon.d.ts.map +1 -0
  511. package/dist/src/icons/animated/letter-m-icon.d.ts +4 -0
  512. package/dist/src/icons/animated/letter-m-icon.d.ts.map +1 -0
  513. package/dist/src/icons/animated/letter-n-icon.d.ts +4 -0
  514. package/dist/src/icons/animated/letter-n-icon.d.ts.map +1 -0
  515. package/dist/src/icons/animated/letter-o-icon.d.ts +4 -0
  516. package/dist/src/icons/animated/letter-o-icon.d.ts.map +1 -0
  517. package/dist/src/icons/animated/letter-p-icon.d.ts +4 -0
  518. package/dist/src/icons/animated/letter-p-icon.d.ts.map +1 -0
  519. package/dist/src/icons/animated/letter-q-icon.d.ts +4 -0
  520. package/dist/src/icons/animated/letter-q-icon.d.ts.map +1 -0
  521. package/dist/src/icons/animated/letter-r-icon.d.ts +4 -0
  522. package/dist/src/icons/animated/letter-r-icon.d.ts.map +1 -0
  523. package/dist/src/icons/animated/letter-s-icon.d.ts +4 -0
  524. package/dist/src/icons/animated/letter-s-icon.d.ts.map +1 -0
  525. package/dist/src/icons/animated/letter-t-icon.d.ts +4 -0
  526. package/dist/src/icons/animated/letter-t-icon.d.ts.map +1 -0
  527. package/dist/src/icons/animated/letter-u-icon.d.ts +4 -0
  528. package/dist/src/icons/animated/letter-u-icon.d.ts.map +1 -0
  529. package/dist/src/icons/animated/letter-v-icon.d.ts +4 -0
  530. package/dist/src/icons/animated/letter-v-icon.d.ts.map +1 -0
  531. package/dist/src/icons/animated/letter-w-icon.d.ts +4 -0
  532. package/dist/src/icons/animated/letter-w-icon.d.ts.map +1 -0
  533. package/dist/src/icons/animated/letter-x-icon.d.ts +4 -0
  534. package/dist/src/icons/animated/letter-x-icon.d.ts.map +1 -0
  535. package/dist/src/icons/animated/letter-y-icon.d.ts +4 -0
  536. package/dist/src/icons/animated/letter-y-icon.d.ts.map +1 -0
  537. package/dist/src/icons/animated/letter-z-icon.d.ts +4 -0
  538. package/dist/src/icons/animated/letter-z-icon.d.ts.map +1 -0
  539. package/dist/src/icons/animated/library-icon.d.ts +4 -0
  540. package/dist/src/icons/animated/library-icon.d.ts.map +1 -0
  541. package/dist/src/icons/animated/like-icon.d.ts +4 -0
  542. package/dist/src/icons/animated/like-icon.d.ts.map +1 -0
  543. package/dist/src/icons/animated/link-icon.d.ts +4 -0
  544. package/dist/src/icons/animated/link-icon.d.ts.map +1 -0
  545. package/dist/src/icons/animated/linkedin-icon.d.ts +4 -0
  546. package/dist/src/icons/animated/linkedin-icon.d.ts.map +1 -0
  547. package/dist/src/icons/animated/locate-icon.d.ts +4 -0
  548. package/dist/src/icons/animated/locate-icon.d.ts.map +1 -0
  549. package/dist/src/icons/animated/lock-icon.d.ts +4 -0
  550. package/dist/src/icons/animated/lock-icon.d.ts.map +1 -0
  551. package/dist/src/icons/animated/logout-icon.d.ts +4 -0
  552. package/dist/src/icons/animated/logout-icon.d.ts.map +1 -0
  553. package/dist/src/icons/animated/magnifier-icon.d.ts +4 -0
  554. package/dist/src/icons/animated/magnifier-icon.d.ts.map +1 -0
  555. package/dist/src/icons/animated/mail-filled-icon.d.ts +4 -0
  556. package/dist/src/icons/animated/mail-filled-icon.d.ts.map +1 -0
  557. package/dist/src/icons/animated/map-pin-icon.d.ts +4 -0
  558. package/dist/src/icons/animated/map-pin-icon.d.ts.map +1 -0
  559. package/dist/src/icons/animated/meh-icon.d.ts +4 -0
  560. package/dist/src/icons/animated/meh-icon.d.ts.map +1 -0
  561. package/dist/src/icons/animated/message-circle-icon.d.ts +4 -0
  562. package/dist/src/icons/animated/message-circle-icon.d.ts.map +1 -0
  563. package/dist/src/icons/animated/moon-icon.d.ts +4 -0
  564. package/dist/src/icons/animated/moon-icon.d.ts.map +1 -0
  565. package/dist/src/icons/animated/mouse-pointer-2-icon.d.ts +4 -0
  566. package/dist/src/icons/animated/mouse-pointer-2-icon.d.ts.map +1 -0
  567. package/dist/src/icons/animated/mysql-icon.d.ts +4 -0
  568. package/dist/src/icons/animated/mysql-icon.d.ts.map +1 -0
  569. package/dist/src/icons/animated/nodejs-icon.d.ts +4 -0
  570. package/dist/src/icons/animated/nodejs-icon.d.ts.map +1 -0
  571. package/dist/src/icons/animated/paint-icon.d.ts +4 -0
  572. package/dist/src/icons/animated/paint-icon.d.ts.map +1 -0
  573. package/dist/src/icons/animated/party-popper-icon.d.ts +4 -0
  574. package/dist/src/icons/animated/party-popper-icon.d.ts.map +1 -0
  575. package/dist/src/icons/animated/passport-icon.d.ts +4 -0
  576. package/dist/src/icons/animated/passport-icon.d.ts.map +1 -0
  577. package/dist/src/icons/animated/paw-print-icon.d.ts +4 -0
  578. package/dist/src/icons/animated/paw-print-icon.d.ts.map +1 -0
  579. package/dist/src/icons/animated/pen-icon.d.ts +4 -0
  580. package/dist/src/icons/animated/pen-icon.d.ts.map +1 -0
  581. package/dist/src/icons/animated/phone-volume.d.ts +4 -0
  582. package/dist/src/icons/animated/phone-volume.d.ts.map +1 -0
  583. package/dist/src/icons/animated/pinterest-icon.d.ts +4 -0
  584. package/dist/src/icons/animated/pinterest-icon.d.ts.map +1 -0
  585. package/dist/src/icons/animated/player-icon.d.ts +4 -0
  586. package/dist/src/icons/animated/player-icon.d.ts.map +1 -0
  587. package/dist/src/icons/animated/plug-connected-icon.d.ts +4 -0
  588. package/dist/src/icons/animated/plug-connected-icon.d.ts.map +1 -0
  589. package/dist/src/icons/animated/plug-connected-x-icon.d.ts +4 -0
  590. package/dist/src/icons/animated/plug-connected-x-icon.d.ts.map +1 -0
  591. package/dist/src/icons/animated/python-icon.d.ts +4 -0
  592. package/dist/src/icons/animated/python-icon.d.ts.map +1 -0
  593. package/dist/src/icons/animated/qrcode-icon.d.ts +4 -0
  594. package/dist/src/icons/animated/qrcode-icon.d.ts.map +1 -0
  595. package/dist/src/icons/animated/question-mark.d.ts +4 -0
  596. package/dist/src/icons/animated/question-mark.d.ts.map +1 -0
  597. package/dist/src/icons/animated/radio-icon.d.ts +4 -0
  598. package/dist/src/icons/animated/radio-icon.d.ts.map +1 -0
  599. package/dist/src/icons/animated/rainbow-icon.d.ts +4 -0
  600. package/dist/src/icons/animated/rainbow-icon.d.ts.map +1 -0
  601. package/dist/src/icons/animated/refresh-icon.d.ts +4 -0
  602. package/dist/src/icons/animated/refresh-icon.d.ts.map +1 -0
  603. package/dist/src/icons/animated/right-chevron.d.ts +4 -0
  604. package/dist/src/icons/animated/right-chevron.d.ts.map +1 -0
  605. package/dist/src/icons/animated/rocket-icon.d.ts +4 -0
  606. package/dist/src/icons/animated/rocket-icon.d.ts.map +1 -0
  607. package/dist/src/icons/animated/rosette-discount-check-icon.d.ts +4 -0
  608. package/dist/src/icons/animated/rosette-discount-check-icon.d.ts.map +1 -0
  609. package/dist/src/icons/animated/rosette-discount-icon.d.ts +4 -0
  610. package/dist/src/icons/animated/rosette-discount-icon.d.ts.map +1 -0
  611. package/dist/src/icons/animated/router-icon.d.ts +4 -0
  612. package/dist/src/icons/animated/router-icon.d.ts.map +1 -0
  613. package/dist/src/icons/animated/satellite-dish-icon.d.ts +4 -0
  614. package/dist/src/icons/animated/satellite-dish-icon.d.ts.map +1 -0
  615. package/dist/src/icons/animated/save-icon.d.ts +4 -0
  616. package/dist/src/icons/animated/save-icon.d.ts.map +1 -0
  617. package/dist/src/icons/animated/scan-barcode-icon.d.ts +4 -0
  618. package/dist/src/icons/animated/scan-barcode-icon.d.ts.map +1 -0
  619. package/dist/src/icons/animated/scan-heart-icon.d.ts +4 -0
  620. package/dist/src/icons/animated/scan-heart-icon.d.ts.map +1 -0
  621. package/dist/src/icons/animated/send-horizontal-icon.d.ts +4 -0
  622. package/dist/src/icons/animated/send-horizontal-icon.d.ts.map +1 -0
  623. package/dist/src/icons/animated/send-icon.d.ts +4 -0
  624. package/dist/src/icons/animated/send-icon.d.ts.map +1 -0
  625. package/dist/src/icons/animated/shield-check.d.ts +4 -0
  626. package/dist/src/icons/animated/shield-check.d.ts.map +1 -0
  627. package/dist/src/icons/animated/shopping-cart-icon.d.ts +4 -0
  628. package/dist/src/icons/animated/shopping-cart-icon.d.ts.map +1 -0
  629. package/dist/src/icons/animated/simple-checked-icon.d.ts +4 -0
  630. package/dist/src/icons/animated/simple-checked-icon.d.ts.map +1 -0
  631. package/dist/src/icons/animated/skull-emoji.d.ts +4 -0
  632. package/dist/src/icons/animated/skull-emoji.d.ts.map +1 -0
  633. package/dist/src/icons/animated/slack-icon.d.ts +4 -0
  634. package/dist/src/icons/animated/slack-icon.d.ts.map +1 -0
  635. package/dist/src/icons/animated/sliders-horizontal-icon.d.ts +4 -0
  636. package/dist/src/icons/animated/sliders-horizontal-icon.d.ts.map +1 -0
  637. package/dist/src/icons/animated/snapchat-icon.d.ts +4 -0
  638. package/dist/src/icons/animated/snapchat-icon.d.ts.map +1 -0
  639. package/dist/src/icons/animated/soup-icon.d.ts +4 -0
  640. package/dist/src/icons/animated/soup-icon.d.ts.map +1 -0
  641. package/dist/src/icons/animated/sparkles-icon.d.ts +4 -0
  642. package/dist/src/icons/animated/sparkles-icon.d.ts.map +1 -0
  643. package/dist/src/icons/animated/spotify-icon.d.ts +4 -0
  644. package/dist/src/icons/animated/spotify-icon.d.ts.map +1 -0
  645. package/dist/src/icons/animated/stack-3-icon.d.ts +4 -0
  646. package/dist/src/icons/animated/stack-3-icon.d.ts.map +1 -0
  647. package/dist/src/icons/animated/stack-icon.d.ts +4 -0
  648. package/dist/src/icons/animated/stack-icon.d.ts.map +1 -0
  649. package/dist/src/icons/animated/star-icon.d.ts +4 -0
  650. package/dist/src/icons/animated/star-icon.d.ts.map +1 -0
  651. package/dist/src/icons/animated/subscript-icon.d.ts +4 -0
  652. package/dist/src/icons/animated/subscript-icon.d.ts.map +1 -0
  653. package/dist/src/icons/animated/target-icon.d.ts +4 -0
  654. package/dist/src/icons/animated/target-icon.d.ts.map +1 -0
  655. package/dist/src/icons/animated/telephone-icon.d.ts +4 -0
  656. package/dist/src/icons/animated/telephone-icon.d.ts.map +1 -0
  657. package/dist/src/icons/animated/terminal-icon.d.ts +4 -0
  658. package/dist/src/icons/animated/terminal-icon.d.ts.map +1 -0
  659. package/dist/src/icons/animated/toggle-icon.d.ts +4 -0
  660. package/dist/src/icons/animated/toggle-icon.d.ts.map +1 -0
  661. package/dist/src/icons/animated/trash-icon.d.ts +9 -0
  662. package/dist/src/icons/animated/trash-icon.d.ts.map +1 -0
  663. package/dist/src/icons/animated/travel-bag.d.ts +4 -0
  664. package/dist/src/icons/animated/travel-bag.d.ts.map +1 -0
  665. package/dist/src/icons/animated/triangle-alert-icon.d.ts +4 -0
  666. package/dist/src/icons/animated/triangle-alert-icon.d.ts.map +1 -0
  667. package/dist/src/icons/animated/trophy-icon.d.ts +4 -0
  668. package/dist/src/icons/animated/trophy-icon.d.ts.map +1 -0
  669. package/dist/src/icons/animated/truck-electric-icon.d.ts +4 -0
  670. package/dist/src/icons/animated/truck-electric-icon.d.ts.map +1 -0
  671. package/dist/src/icons/animated/twitter-icon.d.ts +4 -0
  672. package/dist/src/icons/animated/twitter-icon.d.ts.map +1 -0
  673. package/dist/src/icons/animated/twitter-x-icon.d.ts +4 -0
  674. package/dist/src/icons/animated/twitter-x-icon.d.ts.map +1 -0
  675. package/dist/src/icons/animated/types.d.ts +33 -0
  676. package/dist/src/icons/animated/types.d.ts.map +1 -0
  677. package/dist/src/icons/animated/typescript-icon.d.ts +4 -0
  678. package/dist/src/icons/animated/typescript-icon.d.ts.map +1 -0
  679. package/dist/src/icons/animated/unlink-icon.d.ts +4 -0
  680. package/dist/src/icons/animated/unlink-icon.d.ts.map +1 -0
  681. package/dist/src/icons/animated/unordered-list-icon.d.ts +4 -0
  682. package/dist/src/icons/animated/unordered-list-icon.d.ts.map +1 -0
  683. package/dist/src/icons/animated/upload-icon.d.ts +4 -0
  684. package/dist/src/icons/animated/upload-icon.d.ts.map +1 -0
  685. package/dist/src/icons/animated/useAnimatedIconTrigger.d.ts +8 -0
  686. package/dist/src/icons/animated/useAnimatedIconTrigger.d.ts.map +1 -0
  687. package/dist/src/icons/animated/user-check-icon.d.ts +4 -0
  688. package/dist/src/icons/animated/user-check-icon.d.ts.map +1 -0
  689. package/dist/src/icons/animated/user-icon.d.ts +4 -0
  690. package/dist/src/icons/animated/user-icon.d.ts.map +1 -0
  691. package/dist/src/icons/animated/user-plus-icon.d.ts +4 -0
  692. package/dist/src/icons/animated/user-plus-icon.d.ts.map +1 -0
  693. package/dist/src/icons/animated/users-group-icon.d.ts +4 -0
  694. package/dist/src/icons/animated/users-group-icon.d.ts.map +1 -0
  695. package/dist/src/icons/animated/users-icon.d.ts +4 -0
  696. package/dist/src/icons/animated/users-icon.d.ts.map +1 -0
  697. package/dist/src/icons/animated/vinyl-icon.d.ts +4 -0
  698. package/dist/src/icons/animated/vinyl-icon.d.ts.map +1 -0
  699. package/dist/src/icons/animated/volume-2-icon.d.ts +4 -0
  700. package/dist/src/icons/animated/volume-2-icon.d.ts.map +1 -0
  701. package/dist/src/icons/animated/volume-x-icon.d.ts +4 -0
  702. package/dist/src/icons/animated/volume-x-icon.d.ts.map +1 -0
  703. package/dist/src/icons/animated/wallet-icon.d.ts +4 -0
  704. package/dist/src/icons/animated/wallet-icon.d.ts.map +1 -0
  705. package/dist/src/icons/animated/washing-machine-icon.d.ts +4 -0
  706. package/dist/src/icons/animated/washing-machine-icon.d.ts.map +1 -0
  707. package/dist/src/icons/animated/whatsapp-icon.d.ts +4 -0
  708. package/dist/src/icons/animated/whatsapp-icon.d.ts.map +1 -0
  709. package/dist/src/icons/animated/wifi-icon.d.ts +4 -0
  710. package/dist/src/icons/animated/wifi-icon.d.ts.map +1 -0
  711. package/dist/src/icons/animated/wifi-off-icon.d.ts +4 -0
  712. package/dist/src/icons/animated/wifi-off-icon.d.ts.map +1 -0
  713. package/dist/src/icons/animated/world-icon.d.ts +4 -0
  714. package/dist/src/icons/animated/world-icon.d.ts.map +1 -0
  715. package/dist/src/icons/animated/x-icon.d.ts +4 -0
  716. package/dist/src/icons/animated/x-icon.d.ts.map +1 -0
  717. package/dist/src/icons/animated/youtube-icon.d.ts +4 -0
  718. package/dist/src/icons/animated/youtube-icon.d.ts.map +1 -0
  719. package/dist/src/icons/index.d.ts +1 -0
  720. package/dist/src/icons/index.d.ts.map +1 -1
  721. package/dist/src/icons/lucide.d.ts +1 -1
  722. package/dist/src/icons/lucide.d.ts.map +1 -1
  723. package/dist/src/languages/hooks/index.d.ts +1 -1
  724. package/dist/src/languages/hooks/index.d.ts.map +1 -1
  725. package/dist/src/languages/hooks/useLanguageLabel.d.ts +8 -7
  726. package/dist/src/languages/hooks/useLanguageLabel.d.ts.map +1 -1
  727. package/dist/src/languages/hooks/usePreferenceLabel.d.ts +1 -1
  728. package/dist/src/languages/hooks/usePreferenceLabel.d.ts.map +1 -1
  729. package/dist/src/languages/hooks/useThemeLabel.d.ts +4 -5
  730. package/dist/src/languages/hooks/useThemeLabel.d.ts.map +1 -1
  731. package/dist/src/languages/index.d.ts +0 -2
  732. package/dist/src/languages/index.d.ts.map +1 -1
  733. package/dist/src/languages/languages/i18n.d.ts +4 -7
  734. package/dist/src/languages/languages/i18n.d.ts.map +1 -1
  735. package/dist/src/languages/languages/i18nResources.d.ts +1 -1
  736. package/dist/src/languages/languages/i18nResources.d.ts.map +1 -1
  737. package/dist/src/languages/resources/index.d.ts +2 -2
  738. package/dist/src/languages/types/components.d.ts +1 -24
  739. package/dist/src/languages/types/components.d.ts.map +1 -1
  740. package/dist/src/languages/types/i18n.d.ts +1 -4
  741. package/dist/src/languages/types/i18n.d.ts.map +1 -1
  742. package/dist/src/languages/types/language.d.ts +2 -11
  743. package/dist/src/languages/types/language.d.ts.map +1 -1
  744. package/dist/src/languages/utils/getLocalLanguage.d.ts +1 -1
  745. package/dist/src/languages/utils/getLocalLanguage.d.ts.map +1 -1
  746. package/dist/src/languages/utils/languageStorage.d.ts +2 -3
  747. package/dist/src/languages/utils/languageStorage.d.ts.map +1 -1
  748. package/dist/src/providers/LanguageProvider/index.d.ts +19 -0
  749. package/dist/src/providers/LanguageProvider/index.d.ts.map +1 -0
  750. package/dist/src/providers/ThemeProvider/index.d.ts +17 -0
  751. package/dist/src/providers/ThemeProvider/index.d.ts.map +1 -0
  752. package/dist/src/providers/index.d.ts +7 -0
  753. package/dist/src/providers/index.d.ts.map +1 -0
  754. package/dist/src/stores/index.d.ts +4 -0
  755. package/dist/src/stores/index.d.ts.map +1 -1
  756. package/dist/src/stores/layout.d.ts +41 -0
  757. package/dist/src/stores/layout.d.ts.map +1 -0
  758. package/dist/src/stores/makeStore.d.ts +1 -1
  759. package/dist/src/stores/modal.d.ts +67 -0
  760. package/dist/src/stores/modal.d.ts.map +1 -0
  761. package/dist/src/stores/preference.d.ts +52 -0
  762. package/dist/src/stores/preference.d.ts.map +1 -0
  763. package/dist/src/themes/fonts.d.ts +21 -0
  764. package/dist/src/themes/fonts.d.ts.map +1 -0
  765. package/dist/src/themes/hooks/index.d.ts +1 -3
  766. package/dist/src/themes/hooks/index.d.ts.map +1 -1
  767. package/dist/src/themes/hooks/useTheme.d.ts +25 -9
  768. package/dist/src/themes/hooks/useTheme.d.ts.map +1 -1
  769. package/dist/src/themes/index.d.ts +3 -4
  770. package/dist/src/themes/index.d.ts.map +1 -1
  771. package/dist/src/themes/radix/index.d.ts +2 -0
  772. package/dist/src/themes/radix/index.d.ts.map +1 -0
  773. package/dist/src/themes/radix/mappings.d.ts +39 -0
  774. package/dist/src/themes/radix/mappings.d.ts.map +1 -0
  775. package/dist/src/themes/types/components.d.ts +1 -24
  776. package/dist/src/themes/types/components.d.ts.map +1 -1
  777. package/dist/src/themes/types/context.d.ts +6 -12
  778. package/dist/src/themes/types/context.d.ts.map +1 -1
  779. package/dist/src/themes/types/index.d.ts +1 -6
  780. package/dist/src/themes/types/index.d.ts.map +1 -1
  781. package/dist/src/themes/types/theme.d.ts +15 -26
  782. package/dist/src/themes/types/theme.d.ts.map +1 -1
  783. package/dist/src/utils/factory/hooks.d.ts +44 -0
  784. package/dist/src/utils/factory/hooks.d.ts.map +1 -0
  785. package/dist/src/utils/factory/index.d.ts +2 -0
  786. package/dist/src/utils/factory/index.d.ts.map +1 -0
  787. package/dist/src/utils/index.d.ts +1 -0
  788. package/dist/src/utils/index.d.ts.map +1 -1
  789. package/dist/src/utils/safe.d.ts +4 -0
  790. package/dist/src/utils/safe.d.ts.map +1 -1
  791. package/dist/stores.cjs +1 -4
  792. package/dist/stores.mjs +32 -164
  793. package/dist/themes.cjs +2 -4
  794. package/dist/themes.mjs +27 -1473
  795. package/dist/types.cjs +0 -1
  796. package/dist/types.mjs +0 -1
  797. package/dist/utils.cjs +1 -2
  798. package/dist/utils.cjs.map +1 -1
  799. package/dist/utils.mjs +163 -181
  800. package/dist/utils.mjs.map +1 -1
  801. package/package.json +101 -43
  802. package/dist/chunk-BounceLoading-C-gq-XVr.mjs +0 -241
  803. package/dist/chunk-BounceLoading-C-gq-XVr.mjs.map +0 -1
  804. package/dist/chunk-BounceLoading-CkxvzNz8.cjs +0 -11
  805. package/dist/chunk-BounceLoading-CkxvzNz8.cjs.map +0 -1
  806. package/dist/chunk-animations-CiJbVYGC.mjs +0 -741
  807. package/dist/chunk-animations-CiJbVYGC.mjs.map +0 -1
  808. package/dist/chunk-animations-i85rn79V.cjs +0 -3
  809. package/dist/chunk-animations-i85rn79V.cjs.map +0 -1
  810. package/dist/chunk-chunk-D-Fg7nx1.cjs +0 -1
  811. package/dist/chunk-i18n-2-xL4pEi.cjs +0 -3
  812. package/dist/chunk-i18n-2-xL4pEi.cjs.map +0 -1
  813. package/dist/chunk-i18n-DgaoEbGL.mjs +0 -214
  814. package/dist/chunk-i18n-DgaoEbGL.mjs.map +0 -1
  815. package/dist/chunk-language-2r4uKROB.cjs +0 -3
  816. package/dist/chunk-language-2r4uKROB.cjs.map +0 -1
  817. package/dist/chunk-language-JRs5UIa2.mjs +0 -11
  818. package/dist/chunk-language-JRs5UIa2.mjs.map +0 -1
  819. package/dist/chunk-layout-BEAgFhif.mjs +0 -11
  820. package/dist/chunk-layout-BEAgFhif.mjs.map +0 -1
  821. package/dist/chunk-layout-mMQXuBLE.cjs +0 -3
  822. package/dist/chunk-layout-mMQXuBLE.cjs.map +0 -1
  823. package/dist/chunk-lucide-B99NZWfa.mjs +0 -158
  824. package/dist/chunk-lucide-B99NZWfa.mjs.map +0 -1
  825. package/dist/chunk-lucide-XL6d5__j.cjs +0 -3
  826. package/dist/chunk-lucide-XL6d5__j.cjs.map +0 -1
  827. package/dist/chunk-preference-DMhhY1Pl.mjs +0 -60
  828. package/dist/chunk-preference-DMhhY1Pl.mjs.map +0 -1
  829. package/dist/chunk-preference-DbNgeGhx.cjs +0 -3
  830. package/dist/chunk-preference-DbNgeGhx.cjs.map +0 -1
  831. package/dist/chunk-theme-CINVDd47.mjs +0 -17
  832. package/dist/chunk-theme-CINVDd47.mjs.map +0 -1
  833. package/dist/chunk-theme-D49XQfXe.cjs +0 -3
  834. package/dist/chunk-theme-D49XQfXe.cjs.map +0 -1
  835. package/dist/chunk-useLayout-BAIFfydj.cjs +0 -3
  836. package/dist/chunk-useLayout-BAIFfydj.cjs.map +0 -1
  837. package/dist/chunk-useLayout-BXsJlpcb.mjs +0 -12
  838. package/dist/chunk-useLayout-BXsJlpcb.mjs.map +0 -1
  839. package/dist/chunk-useTheme-BY1_pW9y.mjs +0 -13
  840. package/dist/chunk-useTheme-BY1_pW9y.mjs.map +0 -1
  841. package/dist/chunk-useTheme-Tw_7_cQf.cjs +0 -3
  842. package/dist/chunk-useTheme-Tw_7_cQf.cjs.map +0 -1
  843. package/dist/hooks.cjs.map +0 -1
  844. package/dist/hooks.mjs.map +0 -1
  845. package/dist/pixel-blast.cjs.map +0 -1
  846. package/dist/pixel-blast.mjs.map +0 -1
  847. package/dist/preference.cjs +0 -2
  848. package/dist/preference.mjs +0 -10
  849. package/dist/src/designs/components/Button/index.d.ts +0 -32
  850. package/dist/src/designs/components/Button/index.d.ts.map +0 -1
  851. package/dist/src/designs/components/Dropdown/index.d.ts +0 -25
  852. package/dist/src/designs/components/Dropdown/index.d.ts.map +0 -1
  853. package/dist/src/designs/components/Input/index.d.ts +0 -35
  854. package/dist/src/designs/components/Input/index.d.ts.map +0 -1
  855. package/dist/src/designs/components/KeyValueEditor/index.d.ts +0 -44
  856. package/dist/src/designs/components/KeyValueEditor/index.d.ts.map +0 -1
  857. package/dist/src/designs/components/SearchInput/index.d.ts +0 -15
  858. package/dist/src/designs/components/SearchInput/index.d.ts.map +0 -1
  859. package/dist/src/designs/components/ShowFilter/index.d.ts +0 -40
  860. package/dist/src/designs/components/ShowFilter/index.d.ts.map +0 -1
  861. package/dist/src/designs/components/SlideDownSwitcher/index.d.ts +0 -17
  862. package/dist/src/designs/components/SlideDownSwitcher/index.d.ts.map +0 -1
  863. package/dist/src/designs/components/Slider/index.d.ts +0 -39
  864. package/dist/src/designs/components/Slider/index.d.ts.map +0 -1
  865. package/dist/src/designs/components/Textarea/index.d.ts +0 -33
  866. package/dist/src/designs/components/Textarea/index.d.ts.map +0 -1
  867. package/dist/src/hooks/makeCursorFetchFunction.d.ts +0 -85
  868. package/dist/src/hooks/makeCursorFetchFunction.d.ts.map +0 -1
  869. package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts +0 -125
  870. package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts.map +0 -1
  871. package/dist/src/hooks/makeUnifiedQuery.d.ts +0 -20
  872. package/dist/src/hooks/makeUnifiedQuery.d.ts.map +0 -1
  873. package/dist/src/hooks/type.d.ts +0 -41
  874. package/dist/src/hooks/type.d.ts.map +0 -1
  875. package/dist/src/languages/providers/index.d.ts +0 -8
  876. package/dist/src/languages/providers/index.d.ts.map +0 -1
  877. package/dist/src/preference/constants.d.ts.map +0 -1
  878. package/dist/src/preference/core.d.ts +0 -12
  879. package/dist/src/preference/core.d.ts.map +0 -1
  880. package/dist/src/preference/index.d.ts +0 -27
  881. package/dist/src/preference/index.d.ts.map +0 -1
  882. package/dist/src/preference/nfx_slice.d.ts +0 -24
  883. package/dist/src/preference/nfx_slice.d.ts.map +0 -1
  884. package/dist/src/preference/types.d.ts +0 -28
  885. package/dist/src/preference/types.d.ts.map +0 -1
  886. package/dist/src/themes/hooks/useBaseVariables.d.ts +0 -8
  887. package/dist/src/themes/hooks/useBaseVariables.d.ts.map +0 -1
  888. package/dist/src/themes/hooks/useThemeVariables.d.ts +0 -11
  889. package/dist/src/themes/hooks/useThemeVariables.d.ts.map +0 -1
  890. package/dist/src/themes/hooks/useVariables.d.ts +0 -8
  891. package/dist/src/themes/hooks/useVariables.d.ts.map +0 -1
  892. package/dist/src/themes/providers/index.d.ts +0 -8
  893. package/dist/src/themes/providers/index.d.ts.map +0 -1
  894. package/dist/src/themes/themes/bases/android.d.ts +0 -5
  895. package/dist/src/themes/themes/bases/android.d.ts.map +0 -1
  896. package/dist/src/themes/themes/bases/default.d.ts +0 -6
  897. package/dist/src/themes/themes/bases/default.d.ts.map +0 -1
  898. package/dist/src/themes/themes/bases/index.d.ts +0 -9
  899. package/dist/src/themes/themes/bases/index.d.ts.map +0 -1
  900. package/dist/src/themes/themes/bases/ios.d.ts +0 -5
  901. package/dist/src/themes/themes/bases/ios.d.ts.map +0 -1
  902. package/dist/src/themes/themes/bases/linux.d.ts +0 -5
  903. package/dist/src/themes/themes/bases/linux.d.ts.map +0 -1
  904. package/dist/src/themes/themes/bases/windows.d.ts +0 -5
  905. package/dist/src/themes/themes/bases/windows.d.ts.map +0 -1
  906. package/dist/src/themes/themes/colors/coffee.d.ts +0 -8
  907. package/dist/src/themes/themes/colors/coffee.d.ts.map +0 -1
  908. package/dist/src/themes/themes/colors/corporate.d.ts +0 -8
  909. package/dist/src/themes/themes/colors/corporate.d.ts.map +0 -1
  910. package/dist/src/themes/themes/colors/cosmic.d.ts +0 -8
  911. package/dist/src/themes/themes/colors/cosmic.d.ts.map +0 -1
  912. package/dist/src/themes/themes/colors/dark.d.ts +0 -8
  913. package/dist/src/themes/themes/colors/dark.d.ts.map +0 -1
  914. package/dist/src/themes/themes/colors/default.d.ts +0 -8
  915. package/dist/src/themes/themes/colors/default.d.ts.map +0 -1
  916. package/dist/src/themes/themes/colors/forest.d.ts +0 -8
  917. package/dist/src/themes/themes/colors/forest.d.ts.map +0 -1
  918. package/dist/src/themes/themes/colors/index.d.ts +0 -14
  919. package/dist/src/themes/themes/colors/index.d.ts.map +0 -1
  920. package/dist/src/themes/themes/colors/light.d.ts +0 -8
  921. package/dist/src/themes/themes/colors/light.d.ts.map +0 -1
  922. package/dist/src/themes/themes/colors/wheat.d.ts +0 -8
  923. package/dist/src/themes/themes/colors/wheat.d.ts.map +0 -1
  924. package/dist/src/themes/themes/colors/wine.d.ts +0 -8
  925. package/dist/src/themes/themes/colors/wine.d.ts.map +0 -1
  926. package/dist/src/themes/themes/index.d.ts +0 -3
  927. package/dist/src/themes/themes/index.d.ts.map +0 -1
  928. package/dist/src/themes/utils/index.d.ts +0 -5
  929. package/dist/src/themes/utils/index.d.ts.map +0 -1
  930. package/dist/src/themes/utils/themeStorage.d.ts +0 -12
  931. package/dist/src/themes/utils/themeStorage.d.ts.map +0 -1
  932. package/dist/stores.cjs.map +0 -1
  933. package/dist/stores.mjs.map +0 -1
  934. package/dist/themes.cjs.map +0 -1
  935. package/dist/themes.mjs.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-animations-DKyNVF-O.mjs","names":[],"sources":["../src/designs/animations/ECGLoading/styles.module.css","../src/designs/animations/ECGLoading/index.tsx","../src/designs/animations/TruckLoading/styles.module.css","../src/designs/animations/TruckLoading/index.tsx","../src/designs/animations/BounceLoading/styles.module.css","../src/designs/animations/BounceLoading/index.tsx","../src/designs/animations/Waves/style.module.css","../src/designs/animations/Waves/index.tsx","../src/designs/animations/Squares/style.module.css","../src/designs/animations/Squares/index.tsx","../src/designs/animations/LetterGlitch/style.module.css","../src/designs/animations/LetterGlitch/index.tsx"],"sourcesContent":[".loading {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.loading svg polyline {\r\n fill: none;\r\n stroke-width: 3;\r\n stroke-linecap: round;\r\n stroke-linejoin: round;\r\n}\r\n\r\n.loading svg polyline.back {\r\n fill: none;\r\n stroke: var(--color-primary-alpha);\r\n}\r\n\r\n.loading svg polyline.front {\r\n fill: none;\r\n stroke: var(--color-primary);\r\n stroke-dasharray: 48, 144;\r\n stroke-dashoffset: 192;\r\n animation: dash_682 1.4s linear infinite;\r\n}\r\n\r\n@keyframes dash_682 {\r\n 72.5% {\r\n opacity: 0;\r\n }\r\n\r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n}","import { memo } from \"react\";\n\nimport styles from \"./styles.module.css\";\n\ninterface ECGLoadingProps {\n size?: \"small\" | \"medium\" | \"large\";\n className?: string;\n}\n\nconst ECGLoading = memo(({ size = \"medium\", className }: ECGLoadingProps) => {\n const sizeMap = {\n small: { width: \"48px\", height: \"36px\" },\n medium: { width: \"64px\", height: \"48px\" },\n large: { width: \"96px\", height: \"72px\" },\n };\n\n const { width, height } = sizeMap[size];\n\n return (\n <div className={`${styles.loading} ${className || \"\"}`}>\n <svg width={width} height={height} viewBox=\"0 0 64 48\">\n <polyline points=\"0.157 23.954, 14 23.954, 21.843 48, 43 0, 50 24, 64 24\" id=\"back\" className={styles.back} />\n <polyline points=\"0.157 23.954, 14 23.954, 21.843 48, 43 0, 50 24, 64 24\" id=\"front\" className={styles.front} />\n </svg>\n </div>\n );\n});\n\nECGLoading.displayName = \"ECGLoading\";\n\nexport default ECGLoading;\n",".loader {\r\n width: fit-content;\r\n height: fit-content;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.truckWrapper {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n align-items: center;\r\n justify-content: flex-end;\r\n overflow-x: hidden;\r\n}\r\n\r\n/* truck upper body */\r\n.truckBody {\r\n width: 65%;\r\n height: fit-content;\r\n margin-bottom: 6px;\r\n animation: motion 1s linear infinite;\r\n}\r\n\r\n/* truck suspension animation*/\r\n@keyframes motion {\r\n 0% {\r\n transform: translateY(0px);\r\n }\r\n 50% {\r\n transform: translateY(3px);\r\n }\r\n 100% {\r\n transform: translateY(0px);\r\n }\r\n}\r\n\r\n/* truck's tires */\r\n.truckTires {\r\n width: 65%;\r\n height: fit-content;\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 0px 10px 0px 15px;\r\n position: absolute;\r\n bottom: 0;\r\n}\r\n\r\n.tiresvg {\r\n width: 24px;\r\n}\r\n\r\n.road {\r\n width: 100%;\r\n height: 1.5px;\r\n background-color: var(--color-fg-heading);\r\n position: relative;\r\n bottom: 0;\r\n align-self: flex-end;\r\n border-radius: var(--radius-button);\r\n}\r\n\r\n.road::before {\r\n content: \"\";\r\n position: absolute;\r\n width: 20px;\r\n height: 100%;\r\n background-color: var(--color-fg-heading);\r\n right: -50%;\r\n border-radius: var(--radius-button);\r\n animation: roadAnimation 1.4s linear infinite;\r\n border-left: 10px solid var(--color-bg);\r\n}\r\n\r\n.road::after {\r\n content: \"\";\r\n position: absolute;\r\n width: 10px;\r\n height: 100%;\r\n background-color: var(--color-fg-heading);\r\n right: -65%;\r\n border-radius: var(--radius-button);\r\n animation: roadAnimation 1.4s linear infinite;\r\n border-left: 4px solid var(--color-bg);\r\n}\r\n\r\n.lampPost {\r\n position: absolute;\r\n bottom: 0;\r\n right: -90%;\r\n height: 45%;\r\n animation: roadAnimation 1.4s linear infinite;\r\n}\r\n\r\n@keyframes roadAnimation {\r\n 0% {\r\n transform: translateX(0px);\r\n }\r\n 100% {\r\n transform: translateX(-350px);\r\n }\r\n}\r\n","import { memo } from \"react\";\n\nimport styles from \"./styles.module.css\";\n\ninterface TruckLoadingProps {\n size?: \"small\" | \"medium\" | \"large\";\n className?: string;\n}\n\nconst TruckLoading = memo(({ size = \"medium\", className }: TruckLoadingProps) => {\n const sizeMap = {\n small: { width: \"150px\", height: \"75px\", svgScale: 0.75 },\n medium: { width: \"200px\", height: \"100px\", svgScale: 1 },\n large: { width: \"300px\", height: \"150px\", svgScale: 1.5 },\n };\n\n const { width, height, svgScale } = sizeMap[size];\n\n return (\n <div className={`${styles.loader} ${className || \"\"}`} style={{ width, height }}>\n <div className={styles.truckWrapper} style={{ transform: `scale(${svgScale})` }}>\n <div className={styles.truckBody}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 198 93\" className={styles.trucksvg}>\n <path\n strokeWidth=\"3\"\n stroke=\"var(--color-fg-heading)\"\n fill=\"var(--color-primary)\"\n d=\"M135 22.5H177.264C178.295 22.5 179.22 23.133 179.594 24.0939L192.33 56.8443C192.442 57.1332 192.5 57.4404 192.5 57.7504V89C192.5 90.3807 191.381 91.5 190 91.5H135C133.619 91.5 132.5 90.3807 132.5 89V25C132.5 23.6193 133.619 22.5 135 22.5Z\"\n />\n <path\n strokeWidth=\"3\"\n stroke=\"var(--color-fg-heading)\"\n fill=\"var(--color-bg-3)\"\n d=\"M146 33.5H181.741C182.779 33.5 183.709 34.1415 184.078 35.112L190.538 52.112C191.16 53.748 189.951 55.5 188.201 55.5H146C144.619 55.5 143.5 54.3807 143.5 53V36C143.5 34.6193 144.619 33.5 146 33.5Z\"\n />\n <path\n strokeWidth=\"2\"\n stroke=\"var(--color-fg-heading)\"\n fill=\"var(--color-fg-heading)\"\n d=\"M150 65C150 65.39 149.763 65.8656 149.127 66.2893C148.499 66.7083 147.573 67 146.5 67C145.427 67 144.501 66.7083 143.873 66.2893C143.237 65.8656 143 65.39 143 65C143 64.61 143.237 64.1344 143.873 63.7107C144.501 63.2917 145.427 63 146.5 63C147.573 63 148.499 63.2917 149.127 63.7107C149.763 64.1344 150 64.61 150 65Z\"\n />\n <rect strokeWidth=\"2\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-warning)\" rx=\"1\" height=\"7\" width=\"5\" y=\"63\" x=\"187\" />\n <rect strokeWidth=\"2\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-fg-heading)\" rx=\"1\" height=\"11\" width=\"4\" y=\"81\" x=\"193\" />\n <rect strokeWidth=\"3\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-bg-2)\" rx=\"2.5\" height=\"90\" width=\"121\" y=\"1.5\" x=\"6.5\" />\n <rect strokeWidth=\"2\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-bg-2)\" rx=\"2\" height=\"4\" width=\"6\" y=\"84\" x=\"1\" />\n </svg>\n </div>\n <div className={styles.truckTires}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 30 30\" className={styles.tiresvg}>\n <circle strokeWidth=\"3\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-fg-heading)\" r=\"13.5\" cy=\"15\" cx=\"15\" />\n <circle fill=\"var(--color-bg-2)\" r=\"7\" cy=\"15\" cx=\"15\" />\n </svg>\n <svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 30 30\" className={styles.tiresvg}>\n <circle strokeWidth=\"3\" stroke=\"var(--color-fg-heading)\" fill=\"var(--color-fg-heading)\" r=\"13.5\" cy=\"15\" cx=\"15\" />\n <circle fill=\"var(--color-bg-2)\" r=\"7\" cy=\"15\" cx=\"15\" />\n </svg>\n </div>\n <div className={styles.road} />\n\n <svg\n xmlSpace=\"preserve\"\n viewBox=\"0 0 453.459 453.459\"\n xmlns=\"http://www.w3.org/2000/svg\"\n version=\"1.1\"\n fill=\"var(--color-fg-heading)\"\n className={styles.lampPost}\n >\n <path\n d=\"M252.882,0c-37.781,0-68.686,29.953-70.245,67.358h-6.917v8.954c-26.109,2.163-45.463,10.011-45.463,19.366h9.993\nc-1.65,5.146-2.507,10.54-2.507,16.017c0,28.956,23.558,52.514,52.514,52.514c28.956,0,52.514-23.558,52.514-52.514\nc0-5.478-0.856-10.872-2.506-16.017h9.992c0-9.354-19.352-17.204-45.463-19.366v-8.954h-6.149C200.189,38.779,223.924,16,252.882,16\nc29.952,0,54.32,24.368,54.32,54.32c0,28.774-11.078,37.009-25.105,47.437c-17.444,12.968-37.216,27.667-37.216,78.884v113.914\nh-0.797c-5.068,0-9.174,4.108-9.174,9.177c0,2.844,1.293,5.383,3.321,7.066c-3.432,27.933-26.851,95.744-8.226,115.459v11.202h45.75\nv-11.202c18.625-19.715-4.794-87.527-8.227-115.459c2.029-1.683,3.322-4.223,3.322-7.066c0-5.068-4.107-9.177-9.176-9.177h-0.795\nV196.641c0-43.174,14.942-54.283,30.762-66.043c14.793-10.997,31.559-23.461,31.559-60.277C323.202,31.545,291.656,0,252.882,0z\nM232.77,111.694c0,23.442-19.071,42.514-42.514,42.514c-23.442,0-42.514-19.072-42.514-42.514c0-5.531,1.078-10.957,3.141-16.017\nh78.747C231.693,100.736,232.77,106.162,232.77,111.694z\"\n />\n </svg>\n </div>\n </div>\n );\n});\n\nTruckLoading.displayName = \"TruckLoading\";\n\nexport default TruckLoading;\n",".loader {\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.loader::before {\n content: \"\";\n width: 100%;\n height: 5px;\n background: var(--color-primary);\n opacity: 0.3;\n position: absolute;\n top: calc(100% + 12px);\n left: 0;\n border-radius: 50%;\n animation: shadow324 0.5s linear infinite;\n}\n\n.loader::after {\n content: \"\";\n width: 100%;\n height: 100%;\n background: var(--color-primary);\n position: absolute;\n top: 0;\n left: 0;\n}\n\n/* 正方形样式 */\n.square::after {\n border-radius: var(--radius-button);\n animation: jump7456Square 0.5s linear infinite;\n}\n\n/* 圆形样式 */\n.circle::after {\n border-radius: 50%;\n animation: jump7456Circle 0.5s linear infinite;\n}\n\n@keyframes jump7456Square {\n 15% {\n border-bottom-right-radius: 3px;\n }\n\n 25% {\n transform: translateY(9px) rotate(22.5deg);\n }\n\n 50% {\n transform: translateY(18px) scale(1, 0.9) rotate(45deg);\n border-bottom-right-radius: 40px;\n }\n\n 75% {\n transform: translateY(9px) rotate(67.5deg);\n }\n\n 100% {\n transform: translateY(0) rotate(90deg);\n }\n}\n\n@keyframes jump7456Circle {\n 15% {\n border-bottom-right-radius: 50%;\n }\n\n 25% {\n transform: translateY(9px) rotate(22.5deg);\n }\n\n 50% {\n transform: translateY(18px) scale(1, 0.9) rotate(45deg);\n border-bottom-right-radius: 40px;\n }\n\n 75% {\n transform: translateY(9px) rotate(67.5deg);\n }\n\n 100% {\n transform: translateY(0) rotate(90deg);\n }\n}\n\n@keyframes shadow324 {\n 0%,\n 100% {\n transform: scale(1, 1);\n }\n\n 50% {\n transform: scale(1.2, 1);\n }\n}\n","import { memo } from \"react\";\n\nimport styles from \"./styles.module.css\";\n\ninterface BounceLoadingProps {\n size?: \"small\" | \"medium\" | \"large\";\n shape?: \"square\" | \"circle\";\n className?: string;\n}\n\nconst BounceLoading = memo(({ size = \"medium\", shape = \"square\", className }: BounceLoadingProps) => {\n const sizeMap = {\n small: \"32px\",\n medium: \"48px\",\n large: \"64px\",\n };\n\n const loaderSize = sizeMap[size];\n\n return <div className={`${styles.loader} ${styles[shape]} ${className || \"\"}`} style={{ width: loaderSize, height: loaderSize }} />;\n});\n\nBounceLoading.displayName = \"BounceLoading\";\n\nexport default BounceLoading;\n",".waves {\n position: absolute;\n top: 0;\n left: 0;\n margin: 0;\n padding: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.waves::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n width: 0.5rem;\n height: 0.5rem;\n background: var(--color-bg);\n border-radius: 50%;\n transform: translate3d(calc(var(--x) - 50%), calc(var(--y) - 50%), 0);\n will-change: transform;\n}\n\n.wavesCanvas {\n display: block;\n width: 100%;\n height: 100%;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\nimport type { CSSProperties } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\nclass Grad {\n x: number;\n y: number;\n z: number;\n constructor(x: number, y: number, z: number) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n dot2(x: number, y: number): number {\n return this.x * x + this.y * y;\n }\n}\n\nclass Noise {\n grad3: Grad[];\n p: number[];\n perm: number[];\n gradP: Grad[];\n\n constructor(seed = 0) {\n this.grad3 = [\n new Grad(1, 1, 0),\n new Grad(-1, 1, 0),\n new Grad(1, -1, 0),\n new Grad(-1, -1, 0),\n new Grad(1, 0, 1),\n new Grad(-1, 0, 1),\n new Grad(1, 0, -1),\n new Grad(-1, 0, -1),\n new Grad(0, 1, 1),\n new Grad(0, -1, 1),\n new Grad(0, 1, -1),\n new Grad(0, -1, -1),\n ];\n this.p = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234,\n 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139,\n 48, 27, 166, 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80,\n 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202,\n 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221,\n 153, 101, 155, 167, 43, 172, 9, 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228, 251, 34, 242, 193, 238, 210,\n 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150,\n 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n ];\n this.perm = new Array(512);\n this.gradP = new Array(512);\n this.seed(seed);\n }\n seed(seed: number) {\n if (seed > 0 && seed < 1) seed *= 65536;\n seed = Math.floor(seed);\n if (seed < 256) seed |= seed << 8;\n for (let i = 0; i < 256; i++) {\n let v = i & 1 ? this.p[i] ^ (seed & 255) : this.p[i] ^ ((seed >> 8) & 255);\n this.perm[i] = this.perm[i + 256] = v;\n this.gradP[i] = this.gradP[i + 256] = this.grad3[v % 12];\n }\n }\n fade(t: number): number {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n lerp(a: number, b: number, t: number): number {\n return (1 - t) * a + t * b;\n }\n perlin2(x: number, y: number): number {\n let X = Math.floor(x),\n Y = Math.floor(y);\n x -= X;\n y -= Y;\n X &= 255;\n Y &= 255;\n const n00 = this.gradP[X + this.perm[Y]].dot2(x, y);\n const n01 = this.gradP[X + this.perm[Y + 1]].dot2(x, y - 1);\n const n10 = this.gradP[X + 1 + this.perm[Y]].dot2(x - 1, y);\n const n11 = this.gradP[X + 1 + this.perm[Y + 1]].dot2(x - 1, y - 1);\n const u = this.fade(x);\n return this.lerp(this.lerp(n00, n10, u), this.lerp(n01, n11, u), this.fade(y));\n }\n}\n\ninterface Point {\n x: number;\n y: number;\n wave: { x: number; y: number };\n cursor: { x: number; y: number; vx: number; vy: number };\n}\n\ninterface Mouse {\n x: number;\n y: number;\n lx: number;\n ly: number;\n sx: number;\n sy: number;\n v: number;\n vs: number;\n a: number;\n set: boolean;\n}\n\ninterface Config {\n lineColor: string;\n waveSpeedX: number;\n waveSpeedY: number;\n waveAmpX: number;\n waveAmpY: number;\n friction: number;\n tension: number;\n maxCursorMove: number;\n xGap: number;\n yGap: number;\n}\n\ninterface WavesProps {\n lineColor?: string;\n backgroundColor?: string;\n waveSpeedX?: number;\n waveSpeedY?: number;\n waveAmpX?: number;\n waveAmpY?: number;\n xGap?: number;\n yGap?: number;\n friction?: number;\n tension?: number;\n maxCursorMove?: number;\n style?: CSSProperties;\n className?: string;\n}\n\nconst Waves: React.FC<WavesProps> = ({\n lineColor = \"black\",\n backgroundColor = \"transparent\",\n waveSpeedX = 0.0125,\n waveSpeedY = 0.005,\n waveAmpX = 32,\n waveAmpY = 16,\n xGap = 10,\n yGap = 32,\n friction = 0.925,\n tension = 0.005,\n maxCursorMove = 100,\n style = {},\n className = \"\",\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const ctxRef = useRef<CanvasRenderingContext2D | null>(null);\n const boundingRef = useRef<{\n width: number;\n height: number;\n left: number;\n top: number;\n }>({\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n });\n const noiseRef = useRef(new Noise(Math.random()));\n const linesRef = useRef<Point[][]>([]);\n const mouseRef = useRef<Mouse>({\n x: -10,\n y: 0,\n lx: 0,\n ly: 0,\n sx: 0,\n sy: 0,\n v: 0,\n vs: 0,\n a: 0,\n set: false,\n });\n const configRef = useRef<Config>({\n lineColor,\n waveSpeedX,\n waveSpeedY,\n waveAmpX,\n waveAmpY,\n friction,\n tension,\n maxCursorMove,\n xGap,\n yGap,\n });\n const frameIdRef = useRef<number | null>(null);\n\n useEffect(() => {\n configRef.current = {\n lineColor,\n waveSpeedX,\n waveSpeedY,\n waveAmpX,\n waveAmpY,\n friction,\n tension,\n maxCursorMove,\n xGap,\n yGap,\n };\n }, [lineColor, waveSpeedX, waveSpeedY, waveAmpX, waveAmpY, friction, tension, maxCursorMove, xGap, yGap]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n const container = containerRef.current;\n if (!canvas || !container) return;\n ctxRef.current = canvas.getContext(\"2d\");\n\n function setSize() {\n if (!container || !canvas) return;\n const rect = container.getBoundingClientRect();\n boundingRef.current = {\n width: rect.width,\n height: rect.height,\n left: rect.left,\n top: rect.top,\n };\n canvas.width = rect.width;\n canvas.height = rect.height;\n }\n\n function setLines() {\n const { width, height } = boundingRef.current;\n linesRef.current = [];\n const oWidth = width + 200,\n oHeight = height + 30;\n const { xGap, yGap } = configRef.current;\n const totalLines = Math.ceil(oWidth / xGap);\n const totalPoints = Math.ceil(oHeight / yGap);\n const xStart = (width - xGap * totalLines) / 2;\n const yStart = (height - yGap * totalPoints) / 2;\n for (let i = 0; i <= totalLines; i++) {\n const pts: Point[] = [];\n for (let j = 0; j <= totalPoints; j++) {\n pts.push({\n x: xStart + xGap * i,\n y: yStart + yGap * j,\n wave: { x: 0, y: 0 },\n cursor: { x: 0, y: 0, vx: 0, vy: 0 },\n });\n }\n linesRef.current.push(pts);\n }\n }\n\n function movePoints(time: number) {\n const lines = linesRef.current;\n const mouse = mouseRef.current;\n const noise = noiseRef.current;\n const { waveSpeedX, waveSpeedY, waveAmpX, waveAmpY, friction, tension, maxCursorMove } = configRef.current;\n lines.forEach((pts) => {\n pts.forEach((p) => {\n const move = noise.perlin2((p.x + time * waveSpeedX) * 0.002, (p.y + time * waveSpeedY) * 0.0015) * 12;\n p.wave.x = Math.cos(move) * waveAmpX;\n p.wave.y = Math.sin(move) * waveAmpY;\n\n const dx = p.x - mouse.sx,\n dy = p.y - mouse.sy;\n const dist = Math.hypot(dx, dy);\n const l = Math.max(175, mouse.vs);\n if (dist < l) {\n const s = 1 - dist / l;\n const f = Math.cos(dist * 0.001) * s;\n p.cursor.vx += Math.cos(mouse.a) * f * l * mouse.vs * 0.00065;\n p.cursor.vy += Math.sin(mouse.a) * f * l * mouse.vs * 0.00065;\n }\n\n p.cursor.vx += (0 - p.cursor.x) * tension;\n p.cursor.vy += (0 - p.cursor.y) * tension;\n p.cursor.vx *= friction;\n p.cursor.vy *= friction;\n p.cursor.x += p.cursor.vx * 2;\n p.cursor.y += p.cursor.vy * 2;\n p.cursor.x = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.x));\n p.cursor.y = Math.min(maxCursorMove, Math.max(-maxCursorMove, p.cursor.y));\n });\n });\n }\n\n function moved(point: Point, withCursor = true): { x: number; y: number } {\n const x = point.x + point.wave.x + (withCursor ? point.cursor.x : 0);\n const y = point.y + point.wave.y + (withCursor ? point.cursor.y : 0);\n return { x: Math.round(x * 10) / 10, y: Math.round(y * 10) / 10 };\n }\n\n function drawLines() {\n const { width, height } = boundingRef.current;\n const ctx = ctxRef.current;\n if (!ctx) return;\n ctx.clearRect(0, 0, width, height);\n ctx.beginPath();\n ctx.strokeStyle = configRef.current.lineColor;\n linesRef.current.forEach((points) => {\n let p1 = moved(points[0], false);\n ctx.moveTo(p1.x, p1.y);\n points.forEach((p, idx) => {\n const isLast = idx === points.length - 1;\n p1 = moved(p, !isLast);\n const p2 = moved(points[idx + 1] || points[points.length - 1], !isLast);\n ctx.lineTo(p1.x, p1.y);\n if (isLast) ctx.moveTo(p2.x, p2.y);\n });\n });\n ctx.stroke();\n }\n\n function tick(t: number) {\n if (!container) return;\n const mouse = mouseRef.current;\n mouse.sx += (mouse.x - mouse.sx) * 0.1;\n mouse.sy += (mouse.y - mouse.sy) * 0.1;\n const dx = mouse.x - mouse.lx,\n dy = mouse.y - mouse.ly;\n const d = Math.hypot(dx, dy);\n mouse.v = d;\n mouse.vs += (d - mouse.vs) * 0.1;\n mouse.vs = Math.min(100, mouse.vs);\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.a = Math.atan2(dy, dx);\n container.style.setProperty(\"--x\", `${mouse.sx}px`);\n container.style.setProperty(\"--y\", `${mouse.sy}px`);\n\n movePoints(t);\n drawLines();\n frameIdRef.current = requestAnimationFrame(tick);\n }\n\n function onResize() {\n setSize();\n setLines();\n }\n function onMouseMove(e: MouseEvent) {\n updateMouse(e.clientX, e.clientY);\n }\n function onTouchMove(e: TouchEvent) {\n const touch = e.touches[0];\n updateMouse(touch.clientX, touch.clientY);\n }\n function updateMouse(x: number, y: number) {\n const mouse = mouseRef.current;\n const b = boundingRef.current;\n mouse.x = x - b.left;\n mouse.y = y - b.top;\n if (!mouse.set) {\n mouse.sx = mouse.x;\n mouse.sy = mouse.y;\n mouse.lx = mouse.x;\n mouse.ly = mouse.y;\n mouse.set = true;\n }\n }\n\n setSize();\n setLines();\n frameIdRef.current = requestAnimationFrame(tick);\n window.addEventListener(\"resize\", onResize);\n window.addEventListener(\"mousemove\", onMouseMove);\n window.addEventListener(\"touchmove\", onTouchMove, { passive: false });\n\n return () => {\n window.removeEventListener(\"resize\", onResize);\n window.removeEventListener(\"mousemove\", onMouseMove);\n window.removeEventListener(\"touchmove\", onTouchMove);\n if (frameIdRef.current !== null) {\n cancelAnimationFrame(frameIdRef.current);\n }\n };\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={`${styles.waves} ${className}`}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n margin: 0,\n padding: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n backgroundColor,\n ...style,\n }}\n >\n <canvas ref={canvasRef} className={styles.wavesCanvas} />\n </div>\n );\n};\n\nconst WaveBackground: React.FC<Omit<WavesProps, \"lineColor\" | \"backgroundColor\">> = (props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取线条颜色,降低颜色深度(变浅)\n const lineColor = useMemo(() => {\n // 尝试从主题变量中获取主色,如果没有则使用默认值\n const primary = currentTheme.colors.variables.primary || \"rgb(220, 38, 38)\";\n\n // 将颜色变浅的函数:向白色混合\n const lightenColor = (r: number, g: number, b: number, factor: number = 0.4) => {\n // factor: 0 = 原色, 1 = 白色\n const newR = Math.round(r + (255 - r) * factor);\n const newG = Math.round(g + (255 - g) * factor);\n const newB = Math.round(b + (255 - b) * factor);\n return `rgb(${newR}, ${newG}, ${newB})`;\n };\n\n // 如果已经是 hex 格式,转换为 rgb 并变浅\n if (primary.startsWith(\"#\")) {\n const hex = primary.slice(1);\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return lightenColor(r, g, b);\n }\n // 将 rgb() 格式变浅\n const match = primary.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n return lightenColor(r, g, b);\n }\n // 如果已经是 rgba 格式,提取 RGB 并变浅\n const rgbaMatch = primary.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)/);\n if (rgbaMatch) {\n const r = parseInt(rgbaMatch[1], 10);\n const g = parseInt(rgbaMatch[2], 10);\n const b = parseInt(rgbaMatch[3], 10);\n return lightenColor(r, g, b);\n }\n return primary;\n }, [currentTheme]);\n\n return <Waves lineColor={lineColor} backgroundColor=\"transparent\" waveSpeedX={0.05} waveSpeedY={0.01} waveAmpX={40} waveAmpY={20} {...props} />;\n};\n\nexport default WaveBackground;\n",".squaresCanvas {\n width: 100%;\n height: 100%;\n border: none;\n display: block;\n}\n","import React, { useEffect, useMemo, useRef } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\ntype CanvasStrokeStyle = string | CanvasGradient | CanvasPattern;\n\ninterface GridOffset {\n x: number;\n y: number;\n}\n\ninterface SquaresProps {\n direction?: \"diagonal\" | \"up\" | \"right\" | \"down\" | \"left\";\n speed?: number;\n borderColor?: CanvasStrokeStyle;\n squareSize?: number;\n hoverFillColor?: CanvasStrokeStyle;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst Squares: React.FC<SquaresProps> = ({\n direction = \"right\",\n speed = 1,\n borderColor = \"#6B7280\",\n squareSize = 40,\n hoverFillColor = \"#111827\",\n className = \"\",\n style = {},\n}) => {\n const { currentTheme } = useTheme();\n const vignetteEdgeColor = currentTheme.colors.variables.fgHeading;\n\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const requestRef = useRef<number | null>(null);\n const numSquaresX = useRef<number>(0);\n const numSquaresY = useRef<number>(0);\n const gridOffset = useRef<GridOffset>({ x: 0, y: 0 });\n const hoveredSquareRef = useRef<GridOffset | null>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const ctx = canvas.getContext(\"2d\");\n\n const resizeCanvas = () => {\n canvas.width = canvas.offsetWidth;\n canvas.height = canvas.offsetHeight;\n numSquaresX.current = Math.ceil(canvas.width / squareSize) + 1;\n numSquaresY.current = Math.ceil(canvas.height / squareSize) + 1;\n };\n\n window.addEventListener(\"resize\", resizeCanvas);\n resizeCanvas();\n\n const drawGrid = () => {\n if (!ctx) return;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\n\n for (let x = startX; x < canvas.width + squareSize; x += squareSize) {\n for (let y = startY; y < canvas.height + squareSize; y += squareSize) {\n const squareX = x - (gridOffset.current.x % squareSize);\n const squareY = y - (gridOffset.current.y % squareSize);\n\n if (\n hoveredSquareRef.current &&\n Math.floor((x - startX) / squareSize) === hoveredSquareRef.current.x &&\n Math.floor((y - startY) / squareSize) === hoveredSquareRef.current.y\n ) {\n ctx.fillStyle = hoverFillColor;\n ctx.fillRect(squareX, squareY, squareSize, squareSize);\n }\n\n ctx.strokeStyle = borderColor;\n ctx.strokeRect(squareX, squareY, squareSize, squareSize);\n }\n }\n\n const gradient = ctx.createRadialGradient(\n canvas.width / 2,\n canvas.height / 2,\n 0,\n canvas.width / 2,\n canvas.height / 2,\n Math.sqrt(canvas.width ** 2 + canvas.height ** 2) / 2,\n );\n gradient.addColorStop(0, \"rgba(0, 0, 0, 0)\");\n gradient.addColorStop(1, vignetteEdgeColor);\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n };\n\n const updateAnimation = () => {\n const effectiveSpeed = Math.max(speed, 0.1);\n switch (direction) {\n case \"right\":\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\n break;\n case \"left\":\n gridOffset.current.x = (gridOffset.current.x + effectiveSpeed + squareSize) % squareSize;\n break;\n case \"up\":\n gridOffset.current.y = (gridOffset.current.y + effectiveSpeed + squareSize) % squareSize;\n break;\n case \"down\":\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\n break;\n case \"diagonal\":\n gridOffset.current.x = (gridOffset.current.x - effectiveSpeed + squareSize) % squareSize;\n gridOffset.current.y = (gridOffset.current.y - effectiveSpeed + squareSize) % squareSize;\n break;\n default:\n break;\n }\n\n drawGrid();\n requestRef.current = requestAnimationFrame(updateAnimation);\n };\n\n const handleMouseMove = (event: MouseEvent) => {\n const rect = canvas.getBoundingClientRect();\n const mouseX = event.clientX - rect.left;\n const mouseY = event.clientY - rect.top;\n\n const startX = Math.floor(gridOffset.current.x / squareSize) * squareSize;\n const startY = Math.floor(gridOffset.current.y / squareSize) * squareSize;\n\n const hoveredSquareX = Math.floor((mouseX + gridOffset.current.x - startX) / squareSize);\n const hoveredSquareY = Math.floor((mouseY + gridOffset.current.y - startY) / squareSize);\n\n if (!hoveredSquareRef.current || hoveredSquareRef.current.x !== hoveredSquareX || hoveredSquareRef.current.y !== hoveredSquareY) {\n hoveredSquareRef.current = { x: hoveredSquareX, y: hoveredSquareY };\n }\n };\n\n const handleMouseLeave = () => {\n hoveredSquareRef.current = null;\n };\n\n canvas.addEventListener(\"mousemove\", handleMouseMove);\n canvas.addEventListener(\"mouseleave\", handleMouseLeave);\n requestRef.current = requestAnimationFrame(updateAnimation);\n\n return () => {\n window.removeEventListener(\"resize\", resizeCanvas);\n if (requestRef.current) cancelAnimationFrame(requestRef.current);\n canvas.removeEventListener(\"mousemove\", handleMouseMove);\n canvas.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, [direction, speed, borderColor, hoverFillColor, squareSize, vignetteEdgeColor]);\n\n return <canvas ref={canvasRef} className={`${styles.squaresCanvas} ${className}`} style={style} />;\n};\n\nconst SquareBackground: React.FC<Omit<SquaresProps, \"borderColor\" | \"hoverFillColor\">> = (props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取边框颜色\n const borderColor = useMemo(() => {\n const borderColorValue = currentTheme.colors.variables.border5 || currentTheme.colors.variables.fg || \"#6B7280\";\n if (borderColorValue.startsWith(\"#\")) {\n return borderColorValue;\n }\n const match = borderColorValue.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10).toString(16).padStart(2, \"0\");\n const g = parseInt(match[2], 10).toString(16).padStart(2, \"0\");\n const b = parseInt(match[3], 10).toString(16).padStart(2, \"0\");\n return `#${r}${g}${b}`;\n }\n return borderColorValue;\n }, [currentTheme]);\n\n // 从主题中获取悬停填充颜色\n const hoverFillColor = useMemo(() => {\n const baseColor = currentTheme.colors.variables.bg3 || currentTheme.colors.variables.border3 || \"#F3F4F6\";\n\n const darkenColor = (r: number, g: number, b: number, factor: number = 0.3) => {\n const newR = Math.round(r * (1 - factor));\n const newG = Math.round(g * (1 - factor));\n const newB = Math.round(b * (1 - factor));\n return `rgb(${newR}, ${newG}, ${newB})`;\n };\n\n if (baseColor.startsWith(\"#\")) {\n const hex = baseColor.slice(1);\n const r = parseInt(hex.slice(0, 2), 16);\n const g = parseInt(hex.slice(2, 4), 16);\n const b = parseInt(hex.slice(4, 6), 16);\n return darkenColor(r, g, b);\n }\n const match = baseColor.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10);\n const g = parseInt(match[2], 10);\n const b = parseInt(match[3], 10);\n return darkenColor(r, g, b);\n }\n return baseColor;\n }, [currentTheme]);\n\n return <Squares borderColor={borderColor} hoverFillColor={hoverFillColor} speed={0.5} squareSize={40} direction=\"diagonal\" {...props} />;\n};\n\nexport default SquareBackground;\n",".container {\n position: relative;\n width: 100%;\n height: 100%;\n background-color: var(--color-bg);\n overflow: hidden;\n}\n\n.canvas {\n display: block;\n width: 100%;\n height: 100%;\n}\n\n.outerVignette {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background: radial-gradient(circle, rgba(0, 0, 0, 0) 60%, rgba(0, 0, 0, 1) 100%);\n}\n\n.centerVignette {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background: radial-gradient(circle, rgba(0, 0, 0, 0.8) 0%, rgba(0, 0, 0, 0) 60%);\n}\n","import { memo, useCallback, useEffect, useMemo, useRef } from \"react\";\n\nimport { useTheme } from \"@/themes/hooks/useTheme\";\n\nimport styles from \"./style.module.css\";\n\ninterface LetterGlitchProps {\n glitchColors?: string[];\n glitchSpeed?: number;\n centerVignette?: boolean;\n outerVignette?: boolean;\n smooth?: boolean;\n characters?: string;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst LetterGlitch = memo(\n ({\n glitchColors = [\"#7F1D1D\", \"#16A34A\", \"#2563EB\"],\n glitchSpeed = 500, // 增加默认速度,减少更新频率\n centerVignette = false,\n outerVignette = true,\n smooth = true,\n characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!@#$&*()-_+=/[]{};:<>.,0123456789\",\n className = \"\",\n style = {},\n }: LetterGlitchProps) => {\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const animationRef = useRef<number | null>(null);\n const letters = useRef<\n {\n char: string;\n color: string;\n targetColor: string;\n colorProgress: number;\n }[]\n >([]);\n const grid = useRef({ columns: 0, rows: 0 });\n const context = useRef<CanvasRenderingContext2D | null>(null);\n const lastGlitchTime = useRef(Date.now());\n\n const lettersAndSymbols = useMemo(() => Array.from(characters), [characters]);\n\n // 缓存 hexToRgb 结果\n const rgbCache = useRef<Map<string, { r: number; g: number; b: number } | null>>(new Map());\n\n const fontSize = 16;\n const charWidth = 10;\n const charHeight = 20;\n\n const getRandomChar = useCallback(() => {\n return lettersAndSymbols[Math.floor(Math.random() * lettersAndSymbols.length)];\n }, [lettersAndSymbols]);\n\n const getRandomColor = useCallback(() => {\n return glitchColors[Math.floor(Math.random() * glitchColors.length)];\n }, [glitchColors]);\n\n const hexToRgb = useCallback((hex: string) => {\n // 检查缓存\n if (rgbCache.current.has(hex)) {\n return rgbCache.current.get(hex)!;\n }\n\n const shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n const normalizedHex = hex.replace(shorthandRegex, (_m, r, g, b) => {\n return r + r + g + g + b + b;\n });\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(normalizedHex);\n const rgb = result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n\n // 缓存结果\n rgbCache.current.set(hex, rgb);\n return rgb;\n }, []);\n\n const interpolateColor = (start: { r: number; g: number; b: number }, end: { r: number; g: number; b: number }, factor: number) => {\n const result = {\n r: Math.round(start.r + (end.r - start.r) * factor),\n g: Math.round(start.g + (end.g - start.g) * factor),\n b: Math.round(start.b + (end.b - start.b) * factor),\n };\n return `rgb(${result.r}, ${result.g}, ${result.b})`;\n };\n\n const calculateGrid = (width: number, height: number) => {\n const columns = Math.ceil(width / charWidth);\n const rows = Math.ceil(height / charHeight);\n return { columns, rows };\n };\n\n const initializeLetters = (columns: number, rows: number) => {\n grid.current = { columns, rows };\n const totalLetters = columns * rows;\n letters.current = Array.from({ length: totalLetters }, () => ({\n char: getRandomChar(),\n color: getRandomColor(),\n targetColor: getRandomColor(),\n colorProgress: 1,\n }));\n };\n\n const resizeCanvas = () => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n const parent = canvas.parentElement;\n if (!parent) return;\n\n const dpr = window.devicePixelRatio || 1;\n const rect = parent.getBoundingClientRect();\n\n canvas.width = rect.width * dpr;\n canvas.height = rect.height * dpr;\n\n canvas.style.width = `${rect.width}px`;\n canvas.style.height = `${rect.height}px`;\n\n if (context.current) {\n context.current.setTransform(dpr, 0, 0, dpr, 0, 0);\n }\n\n const { columns, rows } = calculateGrid(rect.width, rect.height);\n initializeLetters(columns, rows);\n drawLetters();\n };\n\n const drawLetters = useCallback(() => {\n if (!context.current || letters.current.length === 0) return;\n const ctx = context.current;\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.font = `${fontSize}px monospace`;\n ctx.textBaseline = \"top\";\n ctx.textAlign = \"left\";\n\n // 批量绘制,减少状态切换\n letters.current.forEach((letter, index) => {\n const x = (index % grid.current.columns) * charWidth;\n const y = Math.floor(index / grid.current.columns) * charHeight;\n ctx.fillStyle = letter.color;\n ctx.fillText(letter.char, x, y);\n });\n }, []);\n\n const updateLetters = useCallback(() => {\n if (!letters.current || letters.current.length === 0) return;\n\n // 减少更新比例,从 5% 降到 2%,降低性能消耗\n const updateCount = Math.max(1, Math.floor(letters.current.length * 0.02));\n\n for (let i = 0; i < updateCount; i++) {\n const index = Math.floor(Math.random() * letters.current.length);\n if (!letters.current[index]) continue;\n\n letters.current[index].char = getRandomChar();\n letters.current[index].targetColor = getRandomColor();\n\n if (!smooth) {\n letters.current[index].color = letters.current[index].targetColor;\n letters.current[index].colorProgress = 1;\n } else {\n letters.current[index].colorProgress = 0;\n }\n }\n }, [getRandomChar, getRandomColor, smooth]);\n\n const handleSmoothTransitions = useCallback(() => {\n let needsRedraw = false;\n let activeCount = 0;\n\n // 只处理正在过渡的字母,减少不必要的计算\n letters.current.forEach((letter) => {\n if (letter.colorProgress < 1) {\n activeCount++;\n letter.colorProgress += 0.03; // 稍微降低过渡速度,减少重绘频率\n if (letter.colorProgress > 1) letter.colorProgress = 1;\n\n const startRgb = hexToRgb(letter.color);\n const endRgb = hexToRgb(letter.targetColor);\n if (startRgb && endRgb) {\n letter.color = interpolateColor(startRgb, endRgb, letter.colorProgress);\n needsRedraw = true;\n }\n }\n });\n\n // 只有在有活动过渡时才重绘\n if (needsRedraw && activeCount > 0) {\n drawLetters();\n }\n }, [hexToRgb, drawLetters]);\n\n const animate = useCallback(() => {\n const now = Date.now();\n const timeSinceLastGlitch = now - lastGlitchTime.current;\n\n // 只在需要更新时才执行\n if (timeSinceLastGlitch >= glitchSpeed) {\n updateLetters();\n drawLetters();\n lastGlitchTime.current = now;\n } else if (smooth) {\n // 只在平滑模式下才检查过渡\n handleSmoothTransitions();\n }\n\n animationRef.current = requestAnimationFrame(animate);\n }, [glitchSpeed, smooth, updateLetters, handleSmoothTransitions]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n context.current = canvas.getContext(\"2d\");\n resizeCanvas();\n animate();\n\n let resizeTimeout: ReturnType<typeof setTimeout>;\n\n const handleResize = () => {\n clearTimeout(resizeTimeout);\n resizeTimeout = setTimeout(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n resizeCanvas();\n animate();\n }, 100);\n };\n\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current);\n }\n window.removeEventListener(\"resize\", handleResize);\n clearTimeout(resizeTimeout);\n // 清理缓存\n rgbCache.current.clear();\n };\n }, [glitchSpeed, smooth, glitchColors, animate]);\n\n return (\n <div className={`${styles.container} ${className}`} style={style}>\n <canvas ref={canvasRef} className={styles.canvas} />\n {outerVignette && <div className={styles.outerVignette}></div>}\n {centerVignette && <div className={styles.centerVignette}></div>}\n </div>\n );\n },\n);\n\nconst LetterGlitchBackground: React.FC<Omit<LetterGlitchProps, \"glitchColors\">> = memo((props) => {\n const { currentTheme } = useTheme();\n\n // 从主题中获取故障颜色数组\n const glitchColors = useMemo(() => {\n const primary = currentTheme.colors.variables.primary || \"#DC2626\";\n const info = currentTheme.colors.variables.info || \"#2563EB\";\n const success = currentTheme.colors.variables.success || \"#16A34A\";\n\n const toHex = (color: string): string => {\n if (color.startsWith(\"#\")) {\n return color;\n }\n const match = color.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const r = parseInt(match[1], 10).toString(16).padStart(2, \"0\");\n const g = parseInt(match[2], 10).toString(16).padStart(2, \"0\");\n const b = parseInt(match[3], 10).toString(16).padStart(2, \"0\");\n return `#${r}${g}${b}`;\n }\n return color;\n };\n\n return [toHex(primary), toHex(info), toHex(success)];\n }, [currentTheme]);\n\n return (\n <LetterGlitch\n glitchColors={glitchColors}\n glitchSpeed={300} // 增加默认速度,减少更新频率\n centerVignette={true}\n outerVignette={false}\n smooth={true}\n {...props}\n />\n );\n});\n\nLetterGlitchBackground.displayName = \"LetterGlitchBackground\";\n\nexport default LetterGlitchBackground;\n"],"mappings":";;;;;;;;;GCSM,KAAa,EAAA,CAAM,EAAE,MAAA,IAAO,UAAU,WAAA,EAAA,MAAiC;AAO3E,QAAM,EAAE,OAAA,GAAO,QAAA,EAAA,IAAW;AAAA,IALxB,OAAO;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,IAAO;AAAA,IACvC,QAAQ;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,IAAO;AAAA,IACxC,OAAO;AAAA,MAAE,OAAO;AAAA,MAAQ,QAAQ;AAAA,IAAO;AAAA,EAGf,EAAQ,CAAA;AAElC,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,GAAG,GAAO,OAAA,IAAW,KAAa,EAAA;AAAA,IAChD,UAAA,gBAAA,EAAC,OAAD;AAAA,MAAY,OAAA;AAAA,MAAe,QAAA;AAAA,MAAQ,SAAQ;AAAA,MAA3C,UAAA,CACE,gBAAA,EAAC,YAAD;AAAA,QAAU,QAAO;AAAA,QAAyD,IAAG;AAAA,QAAO,WAAW,GAAO;AAAA,MAAO,CAAA,GAC7G,gBAAA,EAAC,YAAD;AAAA,QAAU,QAAO;AAAA,QAAyD,IAAG;AAAA,QAAQ,WAAW,GAAO;AAAA,MAAQ,CAAA,CAC5G;AAAA;EACF,CAAA;AAET,CAAC;AAED,GAAW,cAAc;;;;;;;;;;;GEnBnB,KAAe,EAAA,CAAM,EAAE,MAAA,IAAO,UAAU,WAAA,EAAA,MAAmC;AAO/E,QAAM,EAAE,OAAA,GAAO,QAAA,GAAQ,UAAA,EAAA,IAAa;AAAA,IALlC,OAAO;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAQ,UAAU;AAAA,IAAK;AAAA,IACxD,QAAQ;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAS,UAAU;AAAA,IAAE;AAAA,IACvD,OAAO;AAAA,MAAE,OAAO;AAAA,MAAS,QAAQ;AAAA,MAAS,UAAU;AAAA,IAAI;AAAA,EAGtB,EAAQ,CAAA;AAE5C,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,GAAG,EAAO,MAAA,IAAU,KAAa,EAAA;AAAA,IAAM,OAAO;AAAA,MAAE,OAAA;AAAA,MAAO,QAAA;AAAA,IAAO;AAAA,IAC5E,UAAA,gBAAA,EAAC,OAAD;AAAA,MAAK,WAAW,EAAO;AAAA,MAAc,OAAO,EAAE,WAAW,SAAS,CAAA,IAAY;AAAA,MAA9E,UAAA;AAAA,QACE,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAW,EAAO;AAAA,UACrB,UAAA,gBAAA,EAAC,OAAD;AAAA,YAAK,OAAM;AAAA,YAA6B,MAAK;AAAA,YAAO,SAAQ;AAAA,YAAa,WAAW,EAAO;AAAA,YAA3F,UAAA;AAAA,cACE,gBAAA,EAAC,QAAD;AAAA,gBACE,aAAY;AAAA,gBACZ,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,GAAE;AAAA,cACH,CAAA;AAAA,cACD,gBAAA,EAAC,QAAD;AAAA,gBACE,aAAY;AAAA,gBACZ,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,GAAE;AAAA,cACH,CAAA;AAAA,cACD,gBAAA,EAAC,QAAD;AAAA,gBACE,aAAY;AAAA,gBACZ,QAAO;AAAA,gBACP,MAAK;AAAA,gBACL,GAAE;AAAA,cACH,CAAA;AAAA,cACD,gBAAA,EAAC,QAAD;AAAA,gBAAM,aAAY;AAAA,gBAAI,QAAO;AAAA,gBAA0B,MAAK;AAAA,gBAAuB,IAAG;AAAA,gBAAI,QAAO;AAAA,gBAAI,OAAM;AAAA,gBAAI,GAAE;AAAA,gBAAK,GAAE;AAAA,cAAO,CAAA;AAAA,cAC/H,gBAAA,EAAC,QAAD;AAAA,gBAAM,aAAY;AAAA,gBAAI,QAAO;AAAA,gBAA0B,MAAK;AAAA,gBAA0B,IAAG;AAAA,gBAAI,QAAO;AAAA,gBAAK,OAAM;AAAA,gBAAI,GAAE;AAAA,gBAAK,GAAE;AAAA,cAAO,CAAA;AAAA,cACnI,gBAAA,EAAC,QAAD;AAAA,gBAAM,aAAY;AAAA,gBAAI,QAAO;AAAA,gBAA0B,MAAK;AAAA,gBAAoB,IAAG;AAAA,gBAAM,QAAO;AAAA,gBAAK,OAAM;AAAA,gBAAM,GAAE;AAAA,gBAAM,GAAE;AAAA,cAAO,CAAA;AAAA,cAClI,gBAAA,EAAC,QAAD;AAAA,gBAAM,aAAY;AAAA,gBAAI,QAAO;AAAA,gBAA0B,MAAK;AAAA,gBAAoB,IAAG;AAAA,gBAAI,QAAO;AAAA,gBAAI,OAAM;AAAA,gBAAI,GAAE;AAAA,gBAAK,GAAE;AAAA,cAAK,CAAA;AAAA,YACvH;AAAA;QACF,CAAA;AAAA,QACL,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAW,EAAO;AAAA,UAAvB,UAAA,CACE,gBAAA,EAAC,OAAD;AAAA,YAAK,OAAM;AAAA,YAA6B,MAAK;AAAA,YAAO,SAAQ;AAAA,YAAY,WAAW,EAAO;AAAA,YAA1F,UAAA,CACE,gBAAA,EAAC,UAAD;AAAA,cAAQ,aAAY;AAAA,cAAI,QAAO;AAAA,cAA0B,MAAK;AAAA,cAA0B,GAAE;AAAA,cAAO,IAAG;AAAA,cAAK,IAAG;AAAA,YAAM,CAAA,GAClH,gBAAA,EAAC,UAAD;AAAA,cAAQ,MAAK;AAAA,cAAoB,GAAE;AAAA,cAAI,IAAG;AAAA,cAAK,IAAG;AAAA,YAAM,CAAA,CACrD;AAAA,UACL,CAAA,GAAA,gBAAA,EAAC,OAAD;AAAA,YAAK,OAAM;AAAA,YAA6B,MAAK;AAAA,YAAO,SAAQ;AAAA,YAAY,WAAW,EAAO;AAAA,YAA1F,UAAA,CACE,gBAAA,EAAC,UAAD;AAAA,cAAQ,aAAY;AAAA,cAAI,QAAO;AAAA,cAA0B,MAAK;AAAA,cAA0B,GAAE;AAAA,cAAO,IAAG;AAAA,cAAK,IAAG;AAAA,YAAM,CAAA,GAClH,gBAAA,EAAC,UAAD;AAAA,cAAQ,MAAK;AAAA,cAAoB,GAAE;AAAA,cAAI,IAAG;AAAA,cAAK,IAAG;AAAA,YAAM,CAAA,CACrD;AAAA,UACF,CAAA,CAAA;AAAA;QACL,gBAAA,EAAC,OAAD,EAAK,WAAW,EAAO,KAAO,CAAA;AAAA,QAE9B,gBAAA,EAAC,OAAD;AAAA,UACE,UAAS;AAAA,UACT,SAAQ;AAAA,UACR,OAAM;AAAA,UACN,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,WAAW,EAAO;AAAA,UAElB,UAAA,gBAAA,EAAC,QAAD,EACE,GAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wDASH,CAAA;AAAA,QACE,CAAA;AAAA,MACF;AAAA;EACF,CAAA;AAET,CAAC;AAED,GAAa,cAAc;;;;;;;;GE1ErB,KAAgB,EAAA,CAAM,EAAE,MAAA,IAAO,UAAU,OAAA,IAAQ,UAAU,WAAA,EAAA,MAAoC;AAOnG,QAAM,IAAa;AAAA,IALjB,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,OAAO;AAAA,EAGU,EAAQ,CAAA;AAE3B,SAAO,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,GAAG,GAAO,MAAA,IAAU,GAAO,CAAA,CAAA,IAAU,KAAa,EAAA;AAAA,IAAM,OAAO;AAAA,MAAE,OAAO;AAAA,MAAY,QAAQ;AAAA,IAAW;AAAA,EAAI,CAAA;AACpI,CAAC;AAED,GAAc,cAAc;;;;GEftB,IAAN,MAAW;AAAA,EACT;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,GAAW,GAAW,GAAW;AAC3C,SAAK,IAAI,GACT,KAAK,IAAI,GACT,KAAK,IAAI;AAAA,EACX;AAAA,EACA,KAAK,GAAW,GAAmB;AACjC,WAAO,KAAK,IAAI,IAAI,KAAK,IAAI;AAAA,EAC/B;AACF,GAEM,KAAN,MAAY;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,IAAO,GAAG;AACpB,SAAK,QAAQ;AAAA,MACX,IAAI,EAAK,GAAG,GAAG,CAAC;AAAA,MAChB,IAAI,EAAK,IAAI,GAAG,CAAC;AAAA,MACjB,IAAI,EAAK,GAAG,IAAI,CAAC;AAAA,MACjB,IAAI,EAAK,IAAI,IAAI,CAAC;AAAA,MAClB,IAAI,EAAK,GAAG,GAAG,CAAC;AAAA,MAChB,IAAI,EAAK,IAAI,GAAG,CAAC;AAAA,MACjB,IAAI,EAAK,GAAG,GAAG,EAAE;AAAA,MACjB,IAAI,EAAK,IAAI,GAAG,EAAE;AAAA,MAClB,IAAI,EAAK,GAAG,GAAG,CAAC;AAAA,MAChB,IAAI,EAAK,GAAG,IAAI,CAAC;AAAA,MACjB,IAAI,EAAK,GAAG,GAAG,EAAE;AAAA,MACjB,IAAI,EAAK,GAAG,IAAI,EAAE;AAAA,IACpB,GACA,KAAK,IAAI;AAAA,MACP;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAG;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAG;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACrJ;AAAA,MAAI;AAAA,MAAG;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MACnJ;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAG;AAAA,MAAK;AAAA,MACrJ;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAG;AAAA,MACrJ;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAG;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAClJ;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAG;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MACtJ;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAG;AAAA,MACrJ;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAK;AAAA,MAAI;AAAA,MAAI;AAAA,MAAK;AAAA,MAAI;AAAA,MAAK;AAAA,IAC9F,GACA,KAAK,OAAO,IAAI,MAAM,GAAG,GACzB,KAAK,QAAQ,IAAI,MAAM,GAAG,GAC1B,KAAK,KAAK,CAAI;AAAA,EAChB;AAAA,EACA,KAAK,GAAc;AACjB,IAAI,IAAO,KAAK,IAAO,MAAG,KAAQ,QAClC,IAAO,KAAK,MAAM,CAAI,GAClB,IAAO,QAAK,KAAQ,KAAQ;AAChC,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,UAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAA,IAAM,IAAO,MAAO,KAAK,EAAE,CAAA,IAAO,KAAQ,IAAK;AACtE,WAAK,KAAK,CAAA,IAAK,KAAK,KAAK,IAAI,GAAA,IAAO,GACpC,KAAK,MAAM,CAAA,IAAK,KAAK,MAAM,IAAI,GAAA,IAAO,KAAK,MAAM,IAAI,EAAA;AAAA,IACvD;AAAA,EACF;AAAA,EACA,KAAK,GAAmB;AACtB,WAAO,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM;AAAA,EACzC;AAAA,EACA,KAAK,GAAW,GAAW,GAAmB;AAC5C,YAAQ,IAAI,KAAK,IAAI,IAAI;AAAA,EAC3B;AAAA,EACA,QAAQ,GAAW,GAAmB;AACpC,QAAI,IAAI,KAAK,MAAM,CAAC,GAClB,IAAI,KAAK,MAAM,CAAC;AAClB,IAAA,KAAK,GACL,KAAK,GACL,KAAK,KACL,KAAK;AACL,UAAM,IAAM,KAAK,MAAM,IAAI,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,GAAG,CAAC,GAC5C,IAAM,KAAK,MAAM,IAAI,KAAK,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,GAAG,IAAI,CAAC,GACpD,IAAM,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,CAAC,GACpD,IAAM,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,CAAA,CAAA,EAAI,KAAK,IAAI,GAAG,IAAI,CAAC,GAC5D,IAAI,KAAK,KAAK,CAAC;AACrB,WAAO,KAAK,KAAK,KAAK,KAAK,GAAK,GAAK,CAAC,GAAG,KAAK,KAAK,GAAK,GAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;AAAA,EAC/E;AACF,GAmDM,KAAA,CAA+B,EACnC,WAAA,IAAY,SACZ,iBAAA,IAAkB,eAClB,YAAA,IAAa,QACb,YAAA,IAAa,MACb,UAAA,IAAW,IACX,UAAA,IAAW,IACX,MAAA,IAAO,IACP,MAAA,IAAO,IACP,UAAA,IAAW,OACX,SAAA,IAAU,MACV,eAAA,IAAgB,KAChB,OAAA,IAAQ,CAAC,GACT,WAAA,IAAY,GAAA,MACR;AACJ,QAAM,IAAe,EAAuB,IAAI,GAC1C,IAAY,EAA0B,IAAI,GAC1C,IAAS,EAAwC,IAAI,GACrD,IAAc,EAKjB;AAAA,IACD,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,KAAK;AAAA,EACP,CAAC,GACK,IAAW,EAAO,IAAI,GAAM,KAAK,OAAO,CAAC,CAAC,GAC1C,IAAW,EAAkB,CAAC,CAAC,GAC/B,IAAW,EAAc;AAAA,IAC7B,GAAG;AAAA,IACH,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,IAAI;AAAA,IACJ,GAAG;AAAA,IACH,KAAK;AAAA,EACP,CAAC,GACK,IAAY,EAAe;AAAA,IAC/B,WAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,EACF,CAAC,GACK,IAAa,EAAsB,IAAI;AAE7C,SAAA,GAAA,MAAgB;AACd,IAAA,EAAU,UAAU;AAAA,MAClB,WAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,IACF;AAAA,EACF,GAAG;AAAA,IAAC;AAAA,IAAW;AAAA,IAAY;AAAA,IAAY;AAAA,IAAU;AAAA,IAAU;AAAA,IAAU;AAAA,IAAS;AAAA,IAAe;AAAA,IAAM;AAAA,EAAI,CAAC,GAExG,GAAA,MAAgB;AACd,UAAM,IAAS,EAAU,SACnB,IAAY,EAAa;AAC/B,QAAI,CAAC,KAAU,CAAC,EAAW;AAC3B,IAAA,EAAO,UAAU,EAAO,WAAW,IAAI;AAEvC,aAAS,IAAU;AACjB,UAAI,CAAC,KAAa,CAAC,EAAQ;AAC3B,YAAM,IAAO,EAAU,sBAAsB;AAC7C,MAAA,EAAY,UAAU;AAAA,QACpB,OAAO,EAAK;AAAA,QACZ,QAAQ,EAAK;AAAA,QACb,MAAM,EAAK;AAAA,QACX,KAAK,EAAK;AAAA,MACZ,GACA,EAAO,QAAQ,EAAK,OACpB,EAAO,SAAS,EAAK;AAAA,IACvB;AAEA,aAAS,IAAW;AAClB,YAAM,EAAE,OAAA,GAAO,QAAA,EAAA,IAAW,EAAY;AACtC,MAAA,EAAS,UAAU,CAAC;AACpB,YAAM,IAAS,IAAQ,KACrB,IAAU,IAAS,IACf,EAAE,MAAA,GAAM,MAAA,EAAA,IAAS,EAAU,SAC3B,IAAa,KAAK,KAAK,IAAS,CAAI,GACpC,IAAc,KAAK,KAAK,IAAU,CAAI,GACtC,KAAU,IAAQ,IAAO,KAAc,GACvC,KAAU,IAAS,IAAO,KAAe;AAC/C,eAAS,IAAI,GAAG,KAAK,GAAY,KAAK;AACpC,cAAM,KAAe,CAAC;AACtB,iBAAS,IAAI,GAAG,KAAK,GAAa,IAChC,CAAA,GAAI,KAAK;AAAA,UACP,GAAG,IAAS,IAAO;AAAA,UACnB,GAAG,IAAS,IAAO;AAAA,UACnB,MAAM;AAAA,YAAE,GAAG;AAAA,YAAG,GAAG;AAAA,UAAE;AAAA,UACnB,QAAQ;AAAA,YAAE,GAAG;AAAA,YAAG,GAAG;AAAA,YAAG,IAAI;AAAA,YAAG,IAAI;AAAA,UAAE;AAAA,QACrC,CAAC;AAEH,QAAA,EAAS,QAAQ,KAAK,EAAG;AAAA,MAC3B;AAAA,IACF;AAEA,aAAS,EAAW,GAAc;AAChC,YAAM,IAAQ,EAAS,SACjB,IAAQ,EAAS,SACjB,IAAQ,EAAS,SACjB,EAAE,YAAA,GAAY,YAAA,GAAY,UAAA,GAAU,UAAA,GAAU,UAAA,GAAU,SAAA,GAAS,eAAA,EAAA,IAAkB,EAAU;AACnG,MAAA,EAAM,QAAA,CAAS,OAAQ;AACrB,QAAA,GAAI,QAAA,CAAS,MAAM;AACjB,gBAAM,KAAO,EAAM,SAAS,EAAE,IAAI,IAAO,KAAc,OAAQ,EAAE,IAAI,IAAO,KAAc,KAAM,IAAI;AACpG,UAAA,EAAE,KAAK,IAAI,KAAK,IAAI,EAAI,IAAI,GAC5B,EAAE,KAAK,IAAI,KAAK,IAAI,EAAI,IAAI;AAE5B,gBAAM,KAAK,EAAE,IAAI,EAAM,IACrB,KAAK,EAAE,IAAI,EAAM,IACb,KAAO,KAAK,MAAM,IAAI,EAAE,GACxB,KAAI,KAAK,IAAI,KAAK,EAAM,EAAE;AAChC,cAAI,KAAO,IAAG;AACZ,kBAAM,KAAI,IAAI,KAAO,IACf,KAAI,KAAK,IAAI,KAAO,IAAK,IAAI;AACnC,YAAA,EAAE,OAAO,MAAM,KAAK,IAAI,EAAM,CAAC,IAAI,KAAI,KAAI,EAAM,KAAK,OACtD,EAAE,OAAO,MAAM,KAAK,IAAI,EAAM,CAAC,IAAI,KAAI,KAAI,EAAM,KAAK;AAAA,UACxD;AAEA,UAAA,EAAE,OAAO,OAAO,IAAI,EAAE,OAAO,KAAK,GAClC,EAAE,OAAO,OAAO,IAAI,EAAE,OAAO,KAAK,GAClC,EAAE,OAAO,MAAM,GACf,EAAE,OAAO,MAAM,GACf,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,GAC5B,EAAE,OAAO,KAAK,EAAE,OAAO,KAAK,GAC5B,EAAE,OAAO,IAAI,KAAK,IAAI,GAAe,KAAK,IAAI,CAAC,GAAe,EAAE,OAAO,CAAC,CAAC,GACzE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAe,KAAK,IAAI,CAAC,GAAe,EAAE,OAAO,CAAC,CAAC;AAAA,QAC3E,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,aAAS,EAAM,GAAc,IAAa,IAAgC;AACxE,YAAM,IAAI,EAAM,IAAI,EAAM,KAAK,KAAK,IAAa,EAAM,OAAO,IAAI,IAC5D,IAAI,EAAM,IAAI,EAAM,KAAK,KAAK,IAAa,EAAM,OAAO,IAAI;AAClE,aAAO;AAAA,QAAE,GAAG,KAAK,MAAM,IAAI,EAAE,IAAI;AAAA,QAAI,GAAG,KAAK,MAAM,IAAI,EAAE,IAAI;AAAA,MAAG;AAAA,IAClE;AAEA,aAAS,IAAY;AACnB,YAAM,EAAE,OAAA,GAAO,QAAA,EAAA,IAAW,EAAY,SAChC,IAAM,EAAO;AACnB,MAAK,MACL,EAAI,UAAU,GAAG,GAAG,GAAO,CAAM,GACjC,EAAI,UAAU,GACd,EAAI,cAAc,EAAU,QAAQ,WACpC,EAAS,QAAQ,QAAA,CAAS,MAAW;AACnC,YAAI,IAAK,EAAM,EAAO,CAAA,GAAI,EAAK;AAC/B,QAAA,EAAI,OAAO,EAAG,GAAG,EAAG,CAAC,GACrB,EAAO,QAAA,CAAS,GAAG,MAAQ;AACzB,gBAAM,IAAS,MAAQ,EAAO,SAAS;AACvC,UAAA,IAAK,EAAM,GAAG,CAAC,CAAM;AACrB,gBAAM,IAAK,EAAM,EAAO,IAAM,CAAA,KAAM,EAAO,EAAO,SAAS,CAAA,GAAI,CAAC,CAAM;AACtE,UAAA,EAAI,OAAO,EAAG,GAAG,EAAG,CAAC,GACjB,KAAQ,EAAI,OAAO,EAAG,GAAG,EAAG,CAAC;AAAA,QACnC,CAAC;AAAA,MACH,CAAC,GACD,EAAI,OAAO;AAAA,IACb;AAEA,aAAS,EAAK,GAAW;AACvB,UAAI,CAAC,EAAW;AAChB,YAAM,IAAQ,EAAS;AACvB,MAAA,EAAM,OAAO,EAAM,IAAI,EAAM,MAAM,KACnC,EAAM,OAAO,EAAM,IAAI,EAAM,MAAM;AACnC,YAAM,IAAK,EAAM,IAAI,EAAM,IACzB,IAAK,EAAM,IAAI,EAAM,IACjB,IAAI,KAAK,MAAM,GAAI,CAAE;AAC3B,MAAA,EAAM,IAAI,GACV,EAAM,OAAO,IAAI,EAAM,MAAM,KAC7B,EAAM,KAAK,KAAK,IAAI,KAAK,EAAM,EAAE,GACjC,EAAM,KAAK,EAAM,GACjB,EAAM,KAAK,EAAM,GACjB,EAAM,IAAI,KAAK,MAAM,GAAI,CAAE,GAC3B,EAAU,MAAM,YAAY,OAAO,GAAG,EAAM,EAAA,IAAM,GAClD,EAAU,MAAM,YAAY,OAAO,GAAG,EAAM,EAAA,IAAM,GAElD,EAAW,CAAC,GACZ,EAAU,GACV,EAAW,UAAU,sBAAsB,CAAI;AAAA,IACjD;AAEA,aAAS,IAAW;AAClB,MAAA,EAAQ,GACR,EAAS;AAAA,IACX;AACA,aAAS,EAAY,GAAe;AAClC,MAAA,EAAY,EAAE,SAAS,EAAE,OAAO;AAAA,IAClC;AACA,aAAS,EAAY,GAAe;AAClC,YAAM,IAAQ,EAAE,QAAQ,CAAA;AACxB,MAAA,EAAY,EAAM,SAAS,EAAM,OAAO;AAAA,IAC1C;AACA,aAAS,EAAY,GAAW,GAAW;AACzC,YAAM,IAAQ,EAAS,SACjB,IAAI,EAAY;AACtB,MAAA,EAAM,IAAI,IAAI,EAAE,MAChB,EAAM,IAAI,IAAI,EAAE,KACX,EAAM,QACT,EAAM,KAAK,EAAM,GACjB,EAAM,KAAK,EAAM,GACjB,EAAM,KAAK,EAAM,GACjB,EAAM,KAAK,EAAM,GACjB,EAAM,MAAM;AAAA,IAEhB;AAEA,WAAA,EAAQ,GACR,EAAS,GACT,EAAW,UAAU,sBAAsB,CAAI,GAC/C,OAAO,iBAAiB,UAAU,CAAQ,GAC1C,OAAO,iBAAiB,aAAa,CAAW,GAChD,OAAO,iBAAiB,aAAa,GAAa,EAAE,SAAS,GAAM,CAAC,GAEpE,MAAa;AACX,aAAO,oBAAoB,UAAU,CAAQ,GAC7C,OAAO,oBAAoB,aAAa,CAAW,GACnD,OAAO,oBAAoB,aAAa,CAAW,GAC/C,EAAW,YAAY,QACzB,qBAAqB,EAAW,OAAO;AAAA,IAE3C;AAAA,EACF,GAAG,CAAC,CAAC,GAGH,gBAAA,EAAC,OAAD;AAAA,IACE,KAAK;AAAA,IACL,WAAW,GAAG,GAAO,KAAA,IAAS,CAAA;AAAA,IAC9B,OAAO;AAAA,MACL,UAAU;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,iBAAA;AAAA,MACA,GAAG;AAAA,IACL;AAAA,IAEA,UAAA,gBAAA,EAAC,UAAD;AAAA,MAAQ,KAAK;AAAA,MAAW,WAAW,GAAO;AAAA,IAAc,CAAA;AAAA,EACrD,CAAA;AAET,GAEM,KAAA,CAA+E,MAAU;AAC7F,QAAM,EAAE,cAAA,EAAA,IAAiB,GAAS,GAG5B,IAAY,EAAA,MAAc;AAE9B,UAAM,IAAU,EAAa,OAAO,UAAU,WAAW,oBAGnD,IAAA,CAAgB,GAAW,GAAW,GAAW,IAAiB,QAK/D,OAHM,KAAK,MAAM,KAAK,MAAM,KAAK,CAG1B,CAAA,KAFD,KAAK,MAAM,KAAK,MAAM,KAAK,CAEjB,CAAA,KADV,KAAK,MAAM,KAAK,MAAM,KAAK,CACR,CAAA;AAIlC,QAAI,EAAQ,WAAW,GAAG,GAAG;AAC3B,YAAM,IAAM,EAAQ,MAAM,CAAC;AAI3B,aAAO,EAHG,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EAGhB,GAFV,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EAEb,GADb,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EACV,CAAC;AAAA,IAC7B;AAEA,UAAM,IAAQ,EAAQ,MAAM,gCAAgC;AAC5D,QAAI,EAIF,QAAO,EAHG,SAAS,EAAM,CAAA,GAAI,EAGT,GAFV,SAAS,EAAM,CAAA,GAAI,EAEN,GADb,SAAS,EAAM,CAAA,GAAI,EACH,CAAC;AAG7B,UAAM,IAAY,EAAQ,MAAM,gCAAgC;AAChE,WAAI,IAIK,EAHG,SAAS,EAAU,CAAA,GAAI,EAGb,GAFV,SAAS,EAAU,CAAA,GAAI,EAEV,GADb,SAAS,EAAU,CAAA,GAAI,EACP,CAAC,IAEtB;AAAA,EACT,GAAG,CAAC,CAAY,CAAC;AAEjB,SAAO,gBAAA,EAAC,IAAD;AAAA,IAAkB,WAAA;AAAA,IAAW,iBAAgB;AAAA,IAAc,YAAY;AAAA,IAAM,YAAY;AAAA,IAAM,UAAU;AAAA,IAAI,UAAU;AAAA,IAAI,GAAI;AAAA,EAAQ,CAAA;AAChJ,2EEraM,KAAA,CAAmC,EACvC,WAAA,IAAY,SACZ,OAAA,IAAQ,GACR,aAAA,IAAc,WACd,YAAA,IAAa,IACb,gBAAA,IAAiB,WACjB,WAAA,IAAY,IACZ,OAAA,IAAQ,CAAC,EAAA,MACL;AACJ,QAAM,EAAE,cAAA,EAAA,IAAiB,GAAS,GAC5B,IAAoB,EAAa,OAAO,UAAU,WAElD,IAAY,EAA0B,IAAI,GAC1C,IAAa,EAAsB,IAAI,GACvC,IAAc,EAAe,CAAC,GAC9B,IAAc,EAAe,CAAC,GAC9B,IAAa,EAAmB;AAAA,IAAE,GAAG;AAAA,IAAG,GAAG;AAAA,EAAE,CAAC,GAC9C,IAAmB,EAA0B,IAAI;AAEvD,SAAA,GAAA,MAAgB;AACd,UAAM,IAAS,EAAU;AACzB,QAAI,CAAC,EAAQ;AACb,UAAM,IAAM,EAAO,WAAW,IAAI,GAE5B,IAAA,MAAqB;AACzB,MAAA,EAAO,QAAQ,EAAO,aACtB,EAAO,SAAS,EAAO,cACvB,EAAY,UAAU,KAAK,KAAK,EAAO,QAAQ,CAAU,IAAI,GAC7D,EAAY,UAAU,KAAK,KAAK,EAAO,SAAS,CAAU,IAAI;AAAA,IAChE;AAEA,WAAO,iBAAiB,UAAU,CAAY,GAC9C,EAAa;AAEb,UAAM,IAAA,MAAiB;AACrB,UAAI,CAAC,EAAK;AACV,MAAA,EAAI,UAAU,GAAG,GAAG,EAAO,OAAO,EAAO,MAAM;AAE/C,YAAM,IAAS,KAAK,MAAM,EAAW,QAAQ,IAAI,CAAU,IAAI,GACzD,IAAS,KAAK,MAAM,EAAW,QAAQ,IAAI,CAAU,IAAI;AAE/D,eAAS,IAAI,GAAQ,IAAI,EAAO,QAAQ,GAAY,KAAK,EACvD,UAAS,IAAI,GAAQ,IAAI,EAAO,SAAS,GAAY,KAAK,GAAY;AACpE,cAAM,IAAU,IAAK,EAAW,QAAQ,IAAI,GACtC,IAAU,IAAK,EAAW,QAAQ,IAAI;AAE5C,QACE,EAAiB,WACjB,KAAK,OAAO,IAAI,KAAU,CAAU,MAAM,EAAiB,QAAQ,KACnE,KAAK,OAAO,IAAI,KAAU,CAAU,MAAM,EAAiB,QAAQ,MAEnE,EAAI,YAAY,GAChB,EAAI,SAAS,GAAS,GAAS,GAAY,CAAU,IAGvD,EAAI,cAAc,GAClB,EAAI,WAAW,GAAS,GAAS,GAAY,CAAU;AAAA,MACzD;AAGF,YAAM,IAAW,EAAI,qBACnB,EAAO,QAAQ,GACf,EAAO,SAAS,GAChB,GACA,EAAO,QAAQ,GACf,EAAO,SAAS,GAChB,KAAK,KAAK,EAAO,SAAS,IAAI,EAAO,UAAU,CAAC,IAAI,CACtD;AACA,MAAA,EAAS,aAAa,GAAG,kBAAkB,GAC3C,EAAS,aAAa,GAAG,CAAiB,GAE1C,EAAI,YAAY,GAChB,EAAI,SAAS,GAAG,GAAG,EAAO,OAAO,EAAO,MAAM;AAAA,IAChD,GAEM,IAAA,MAAwB;AAC5B,YAAM,IAAiB,KAAK,IAAI,GAAO,GAAG;AAC1C,cAAQ,GAAR;AAAA,QACE,KAAK;AACH,UAAA,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc;AAC9E;AAAA,QACF,KAAK;AACH,UAAA,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc;AAC9E;AAAA,QACF,KAAK;AACH,UAAA,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc;AAC9E;AAAA,QACF,KAAK;AACH,UAAA,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc;AAC9E;AAAA,QACF,KAAK;AACH,UAAA,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc,GAC9E,EAAW,QAAQ,KAAK,EAAW,QAAQ,IAAI,IAAiB,KAAc;AAAA,MAIlF;AAEA,MAAA,EAAS,GACT,EAAW,UAAU,sBAAsB,CAAe;AAAA,IAC5D,GAEM,IAAA,CAAmB,MAAsB;AAC7C,YAAM,IAAO,EAAO,sBAAsB,GACpC,IAAS,EAAM,UAAU,EAAK,MAC9B,IAAS,EAAM,UAAU,EAAK,KAE9B,IAAS,KAAK,MAAM,EAAW,QAAQ,IAAI,CAAU,IAAI,GACzD,IAAS,KAAK,MAAM,EAAW,QAAQ,IAAI,CAAU,IAAI,GAEzD,IAAiB,KAAK,OAAO,IAAS,EAAW,QAAQ,IAAI,KAAU,CAAU,GACjF,IAAiB,KAAK,OAAO,IAAS,EAAW,QAAQ,IAAI,KAAU,CAAU;AAEvF,OAAI,CAAC,EAAiB,WAAW,EAAiB,QAAQ,MAAM,KAAkB,EAAiB,QAAQ,MAAM,OAC/G,EAAiB,UAAU;AAAA,QAAE,GAAG;AAAA,QAAgB,GAAG;AAAA,MAAe;AAAA,IAEtE,GAEM,IAAA,MAAyB;AAC7B,MAAA,EAAiB,UAAU;AAAA,IAC7B;AAEA,WAAA,EAAO,iBAAiB,aAAa,CAAe,GACpD,EAAO,iBAAiB,cAAc,CAAgB,GACtD,EAAW,UAAU,sBAAsB,CAAe,GAE1D,MAAa;AACX,aAAO,oBAAoB,UAAU,CAAY,GAC7C,EAAW,WAAS,qBAAqB,EAAW,OAAO,GAC/D,EAAO,oBAAoB,aAAa,CAAe,GACvD,EAAO,oBAAoB,cAAc,CAAgB;AAAA,IAC3D;AAAA,EACF,GAAG;AAAA,IAAC;AAAA,IAAW;AAAA,IAAO;AAAA,IAAa;AAAA,IAAgB;AAAA,IAAY;AAAA,EAAiB,CAAC,GAE1E,gBAAA,EAAC,UAAD;AAAA,IAAQ,KAAK;AAAA,IAAW,WAAW,GAAG,GAAO,aAAA,IAAiB,CAAA;AAAA,IAAoB,OAAA;AAAA,EAAQ,CAAA;AACnG,GAEM,KAAA,CAAoF,MAAU;AAClG,QAAM,EAAE,cAAA,EAAA,IAAiB,GAAS,GAG5B,IAAc,EAAA,MAAc;AAChC,UAAM,IAAmB,EAAa,OAAO,UAAU,WAAW,EAAa,OAAO,UAAU,MAAM;AACtG,QAAI,EAAiB,WAAW,GAAG,EACjC,QAAO;AAET,UAAM,IAAQ,EAAiB,MAAM,gCAAgC;AACrE,WAAI,IAIK,IAHG,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAG/C,CAAA,GAFD,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAE3C,CAAA,GADL,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GACvC,CAAA,KAEd;AAAA,EACT,GAAG,CAAC,CAAY,CAAC,GAGX,IAAiB,EAAA,MAAc;AACnC,UAAM,IAAY,EAAa,OAAO,UAAU,OAAO,EAAa,OAAO,UAAU,WAAW,WAE1F,IAAA,CAAe,GAAW,GAAW,GAAW,IAAiB,QAI9D,OAHM,KAAK,MAAM,KAAK,IAAI,EAGnB,CAAA,KAFD,KAAK,MAAM,KAAK,IAAI,EAEV,CAAA,KADV,KAAK,MAAM,KAAK,IAAI,EACD,CAAA;AAGlC,QAAI,EAAU,WAAW,GAAG,GAAG;AAC7B,YAAM,IAAM,EAAU,MAAM,CAAC;AAI7B,aAAO,EAHG,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EAGjB,GAFT,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EAEd,GADZ,SAAS,EAAI,MAAM,GAAG,CAAC,GAAG,EACX,CAAC;AAAA,IAC5B;AACA,UAAM,IAAQ,EAAU,MAAM,gCAAgC;AAC9D,WAAI,IAIK,EAHG,SAAS,EAAM,CAAA,GAAI,EAGV,GAFT,SAAS,EAAM,CAAA,GAAI,EAEP,GADZ,SAAS,EAAM,CAAA,GAAI,EACJ,CAAC,IAErB;AAAA,EACT,GAAG,CAAC,CAAY,CAAC;AAEjB,SAAO,gBAAA,EAAC,IAAD;AAAA,IAAsB,aAAA;AAAA,IAA6B,gBAAA;AAAA,IAAgB,OAAO;AAAA,IAAK,YAAY;AAAA,IAAI,WAAU;AAAA,IAAW,GAAI;AAAA,EAAQ,CAAA;AACzI;;;;;GE/LM,KAAe,EAAA,CAClB,EACC,cAAA,IAAe;AAAA,EAAC;AAAA,EAAW;AAAA,EAAW;AAAS,GAC/C,aAAA,IAAc,KACd,gBAAA,IAAiB,IACjB,eAAA,IAAgB,IAChB,QAAA,IAAS,IACT,YAAA,IAAa,yFACb,WAAA,IAAY,IACZ,OAAA,IAAQ,CAAC,EAAA,MACc;AACvB,QAAM,IAAY,EAAiC,IAAI,GACjD,IAAe,EAAsB,IAAI,GACzC,IAAU,EAOd,CAAC,CAAC,GACE,IAAO,EAAO;AAAA,IAAE,SAAS;AAAA,IAAG,MAAM;AAAA,EAAE,CAAC,GACrC,IAAU,EAAwC,IAAI,GACtD,IAAiB,EAAO,KAAK,IAAI,CAAC,GAElC,IAAoB,EAAA,MAAc,MAAM,KAAK,CAAU,GAAG,CAAC,CAAU,CAAC,GAGtE,IAAW,EAAgE,oBAAI,IAAI,CAAC,GAEpF,IAAW,IACX,IAAY,IACZ,IAAa,IAEb,IAAgB,EAAA,MACb,EAAkB,KAAK,MAAM,KAAK,OAAO,IAAI,EAAkB,MAAM,CAAA,GAC3E,CAAC,CAAiB,CAAC,GAEhB,IAAiB,EAAA,MACd,EAAa,KAAK,MAAM,KAAK,OAAO,IAAI,EAAa,MAAM,CAAA,GACjE,CAAC,CAAY,CAAC,GAEX,IAAW,EAAA,CAAa,MAAgB;AAE5C,QAAI,EAAS,QAAQ,IAAI,CAAG,EAC1B,QAAO,EAAS,QAAQ,IAAI,CAAG;AAIjC,UAAM,IAAgB,EAAI,QAAQ,oCAAA,CAAiB,GAAI,GAAG,GAAG,MACpD,IAAI,IAAI,IAAI,IAAI,IAAI,CAC5B,GAEK,IAAS,4CAA4C,KAAK,CAAa,GACvE,IAAM,IACR;AAAA,MACE,GAAG,SAAS,EAAO,CAAA,GAAI,EAAE;AAAA,MACzB,GAAG,SAAS,EAAO,CAAA,GAAI,EAAE;AAAA,MACzB,GAAG,SAAS,EAAO,CAAA,GAAI,EAAE;AAAA,IAC3B,IACA;AAGJ,WAAA,EAAS,QAAQ,IAAI,GAAK,CAAG,GACtB;AAAA,EACT,GAAG,CAAC,CAAC,GAEC,IAAA,CAAoB,GAA4C,GAA0C,MAAmB;AACjI,UAAM,IAAS;AAAA,MACb,GAAG,KAAK,MAAM,EAAM,KAAK,EAAI,IAAI,EAAM,KAAK,CAAM;AAAA,MAClD,GAAG,KAAK,MAAM,EAAM,KAAK,EAAI,IAAI,EAAM,KAAK,CAAM;AAAA,MAClD,GAAG,KAAK,MAAM,EAAM,KAAK,EAAI,IAAI,EAAM,KAAK,CAAM;AAAA,IACpD;AACA,WAAO,OAAO,EAAO,CAAA,KAAM,EAAO,CAAA,KAAM,EAAO,CAAA;AAAA,EACjD,GAEM,IAAA,CAAiB,GAAe,OAG7B;AAAA,IAAE,SAFO,KAAK,KAAK,IAAQ,CAEzB;AAAA,IAAS,MADL,KAAK,KAAK,IAAS,CACd;AAAA,EAAK,IAGnB,IAAA,CAAqB,GAAiB,MAAiB;AAC3D,IAAA,EAAK,UAAU;AAAA,MAAE,SAAA;AAAA,MAAS,MAAA;AAAA,IAAK;AAC/B,UAAM,IAAe,IAAU;AAC/B,IAAA,EAAQ,UAAU,MAAM,KAAK,EAAE,QAAQ,EAAa,GAAA,OAAU;AAAA,MAC5D,MAAM,EAAc;AAAA,MACpB,OAAO,EAAe;AAAA,MACtB,aAAa,EAAe;AAAA,MAC5B,eAAe;AAAA,IACjB,EAAE;AAAA,EACJ,GAEM,IAAA,MAAqB;AACzB,UAAM,IAAS,EAAU;AACzB,QAAI,CAAC,EAAQ;AACb,UAAM,IAAS,EAAO;AACtB,QAAI,CAAC,EAAQ;AAEb,UAAM,IAAM,OAAO,oBAAoB,GACjC,IAAO,EAAO,sBAAsB;AAE1C,IAAA,EAAO,QAAQ,EAAK,QAAQ,GAC5B,EAAO,SAAS,EAAK,SAAS,GAE9B,EAAO,MAAM,QAAQ,GAAG,EAAK,KAAA,MAC7B,EAAO,MAAM,SAAS,GAAG,EAAK,MAAA,MAE1B,EAAQ,WACV,EAAQ,QAAQ,aAAa,GAAK,GAAG,GAAG,GAAK,GAAG,CAAC;AAGnD,UAAM,EAAE,SAAA,GAAS,MAAA,EAAA,IAAS,EAAc,EAAK,OAAO,EAAK,MAAM;AAC/D,IAAA,EAAkB,GAAS,CAAI,GAC/B,EAAY;AAAA,EACd,GAEM,IAAc,EAAA,MAAkB;AACpC,QAAI,CAAC,EAAQ,WAAW,EAAQ,QAAQ,WAAW,EAAG;AACtD,UAAM,IAAM,EAAQ,SACd,IAAS,EAAU;AACzB,IAAK,MAEL,EAAI,UAAU,GAAG,GAAG,EAAO,OAAO,EAAO,MAAM,GAC/C,EAAI,OAAO,GAAG,CAAA,gBACd,EAAI,eAAe,OACnB,EAAI,YAAY,QAGhB,EAAQ,QAAQ,QAAA,CAAS,GAAQ,MAAU;AACzC,YAAM,IAAK,IAAQ,EAAK,QAAQ,UAAW,GACrC,IAAI,KAAK,MAAM,IAAQ,EAAK,QAAQ,OAAO,IAAI;AACrD,MAAA,EAAI,YAAY,EAAO,OACvB,EAAI,SAAS,EAAO,MAAM,GAAG,CAAC;AAAA,IAChC,CAAC;AAAA,EACH,GAAG,CAAC,CAAC,GAEC,IAAgB,EAAA,MAAkB;AACtC,QAAI,CAAC,EAAQ,WAAW,EAAQ,QAAQ,WAAW,EAAG;AAGtD,UAAM,IAAc,KAAK,IAAI,GAAG,KAAK,MAAM,EAAQ,QAAQ,SAAS,IAAI,CAAC;AAEzE,aAAS,IAAI,GAAG,IAAI,GAAa,KAAK;AACpC,YAAM,IAAQ,KAAK,MAAM,KAAK,OAAO,IAAI,EAAQ,QAAQ,MAAM;AAC/D,MAAK,EAAQ,QAAQ,CAAA,MAErB,EAAQ,QAAQ,CAAA,EAAO,OAAO,EAAc,GAC5C,EAAQ,QAAQ,CAAA,EAAO,cAAc,EAAe,GAE/C,IAIH,EAAQ,QAAQ,CAAA,EAAO,gBAAgB,KAHvC,EAAQ,QAAQ,CAAA,EAAO,QAAQ,EAAQ,QAAQ,CAAA,EAAO,aACtD,EAAQ,QAAQ,CAAA,EAAO,gBAAgB;AAAA,IAI3C;AAAA,EACF,GAAG;AAAA,IAAC;AAAA,IAAe;AAAA,IAAgB;AAAA,EAAM,CAAC,GAEpC,IAA0B,EAAA,MAAkB;AAChD,QAAI,IAAc,IACd,IAAc;AAGlB,IAAA,EAAQ,QAAQ,QAAA,CAAS,MAAW;AAClC,UAAI,EAAO,gBAAgB,GAAG;AAC5B,QAAA,KACA,EAAO,iBAAiB,MACpB,EAAO,gBAAgB,MAAG,EAAO,gBAAgB;AAErD,cAAM,IAAW,EAAS,EAAO,KAAK,GAChC,IAAS,EAAS,EAAO,WAAW;AAC1C,QAAI,KAAY,MACd,EAAO,QAAQ,EAAiB,GAAU,GAAQ,EAAO,aAAa,GACtE,IAAc;AAAA,MAElB;AAAA,IACF,CAAC,GAGG,KAAe,IAAc,KAC/B,EAAY;AAAA,EAEhB,GAAG,CAAC,GAAU,CAAW,CAAC,GAEpB,IAAU,EAAA,MAAkB;AAChC,UAAM,IAAM,KAAK,IAAI;AAIrB,IAH4B,IAAM,EAAe,WAGtB,KACzB,EAAc,GACd,EAAY,GACZ,EAAe,UAAU,KAChB,KAET,EAAwB,GAG1B,EAAa,UAAU,sBAAsB,CAAO;AAAA,EACtD,GAAG;AAAA,IAAC;AAAA,IAAa;AAAA,IAAQ;AAAA,IAAe;AAAA,EAAuB,CAAC;AAEhE,SAAA,GAAA,MAAgB;AACd,UAAM,IAAS,EAAU;AACzB,QAAI,CAAC,EAAQ;AAEb,IAAA,EAAQ,UAAU,EAAO,WAAW,IAAI,GACxC,EAAa,GACb,EAAQ;AAER,QAAI;AAEJ,UAAM,IAAA,MAAqB;AACzB,mBAAa,CAAa,GAC1B,IAAgB,WAAA,MAAiB;AAC/B,QAAI,EAAa,WACf,qBAAqB,EAAa,OAAO,GAE3C,EAAa,GACb,EAAQ;AAAA,MACV,GAAG,GAAG;AAAA,IACR;AAEA,kBAAO,iBAAiB,UAAU,CAAY,GAE9C,MAAa;AACX,MAAI,EAAa,WACf,qBAAqB,EAAa,OAAO,GAE3C,OAAO,oBAAoB,UAAU,CAAY,GACjD,aAAa,CAAa,GAE1B,EAAS,QAAQ,MAAM;AAAA,IACzB;AAAA,EACF,GAAG;AAAA,IAAC;AAAA,IAAa;AAAA,IAAQ;AAAA,IAAc;AAAA,EAAO,CAAC,GAG7C,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,GAAG,GAAO,SAAA,IAAa,CAAA;AAAA,IAAoB,OAAA;AAAA,IAA3D,UAAA;AAAA,MACE,gBAAA,EAAC,UAAD;AAAA,QAAQ,KAAK;AAAA,QAAW,WAAW,GAAO;AAAA,MAAS,CAAA;AAAA,MAClD,KAAiB,gBAAA,EAAC,OAAD,EAAK,WAAW,GAAO,cAAoB,CAAA;AAAA,MAC5D,KAAkB,gBAAA,EAAC,OAAD,EAAK,WAAW,GAAO,eAAqB,CAAA;AAAA,IAC5D;AAAA;AAET,CACF,GAEM,KAA4E,EAAA,CAAM,MAAU;AAChG,QAAM,EAAE,cAAA,EAAA,IAAiB,GAAS,GAG5B,IAAe,EAAA,MAAc;AACjC,UAAM,IAAU,EAAa,OAAO,UAAU,WAAW,WACnD,IAAO,EAAa,OAAO,UAAU,QAAQ,WAC7C,IAAU,EAAa,OAAO,UAAU,WAAW,WAEnD,IAAA,CAAS,MAA0B;AACvC,UAAI,EAAM,WAAW,GAAG,EACtB,QAAO;AAET,YAAM,IAAQ,EAAM,MAAM,gCAAgC;AAC1D,aAAI,IAIK,IAHG,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAG/C,CAAA,GAFD,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAE3C,CAAA,GADL,SAAS,EAAM,CAAA,GAAI,EAAE,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GACvC,CAAA,KAEd;AAAA,IACT;AAEA,WAAO;AAAA,MAAC,EAAM,CAAO;AAAA,MAAG,EAAM,CAAI;AAAA,MAAG,EAAM,CAAO;AAAA,IAAC;AAAA,EACrD,GAAG,CAAC,CAAY,CAAC;AAEjB,SACE,gBAAA,EAAC,IAAD;AAAA,IACgB,cAAA;AAAA,IACd,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,GAAI;AAAA,EACL,CAAA;AAEL,CAAC;AAED,GAAuB,cAAc"}
@@ -0,0 +1,104 @@
1
+ function K(a) {
2
+ return a === void 0 ? null : a;
3
+ }
4
+ function p(a) {
5
+ return a ?? void 0;
6
+ }
7
+ function y(a) {
8
+ return a === "" ? void 0 : a;
9
+ }
10
+ function u(a, r) {
11
+ const e = a ?? r;
12
+ return e === void 0 ? [] : e;
13
+ }
14
+ function w(a) {
15
+ return a ?? 0;
16
+ }
17
+ function W(a) {
18
+ return a == null || a === "" ? "" : a;
19
+ }
20
+ function g(a, r) {
21
+ return a ?? r;
22
+ }
23
+ function s(a, r, e) {
24
+ return typeof a == "string" && r.includes(a) ? a : e;
25
+ }
26
+ function x(a) {
27
+ if (a == null) return;
28
+ const r = Number(a);
29
+ return Number.isNaN(r) ? void 0 : r;
30
+ }
31
+ var t = /* @__PURE__ */ (function(a) {
32
+ return a.DEFAULT = "default", a.IOS = "ios", a.ANDROID = "android", a.WINDOWS = "windows", a.LINUX = "linux", a;
33
+ })({}), L = "default", v = Object.values(t), z = (a) => s(a, v, L), A = /* @__PURE__ */ (function(a) {
34
+ return a.LIGHT = "light", a.DARK = "dark", a.SYSTEM = "system", a;
35
+ })({}), i = "system", O = Object.values(A), X = (a) => s(a, O, i), N = /* @__PURE__ */ (function(a) {
36
+ return a.GRAY = "gray", a.GOLD = "gold", a.BRONZE = "bronze", a.BROWN = "brown", a.YELLOW = "yellow", a.AMBER = "amber", a.ORANGE = "orange", a.TOMATO = "tomato", a.RED = "red", a.RUBY = "ruby", a.CRIMSON = "crimson", a.PINK = "pink", a.PLUM = "plum", a.PURPLE = "purple", a.VIOLET = "violet", a.IRIS = "iris", a.INDIGO = "indigo", a.BLUE = "blue", a.CYAN = "cyan", a.TEAL = "teal", a.JADE = "jade", a.GREEN = "green", a.GRASS = "grass", a.LIME = "lime", a.MINT = "mint", a.SKY = "sky", a;
37
+ })({}), S = "tomato", U = Object.values(N), Z = (a) => s(a, U, S), f = /* @__PURE__ */ (function(a) {
38
+ return a.AUTO = "auto", a.GRAY = "gray", a.MAUVE = "mauve", a.SLATE = "slate", a.SAGE = "sage", a.OLIVE = "olive", a.SAND = "sand", a;
39
+ })({}), _ = "slate", R = Object.values(f), q = (a) => s(a, R, _), T = /* @__PURE__ */ (function(a) {
40
+ return a.NONE = "none", a.SMALL = "small", a.MEDIUM = "medium", a.LARGE = "large", a.FULL = "full", a;
41
+ })({}), D = "medium", I = Object.values(T), J = (a) => s(a, I, D), b = /* @__PURE__ */ (function(a) {
42
+ return a.S90 = "90%", a.S95 = "95%", a.S100 = "100%", a.S105 = "105%", a.S110 = "110%", a;
43
+ })({}), G = "100%", M = Object.values(b), h = (a) => s(a, M, G), d = /* @__PURE__ */ (function(a) {
44
+ return a.SOLID = "solid", a.TRANSLUCENT = "translucent", a;
45
+ })({}), E = "translucent", V = Object.values(d), k = (a) => s(a, V, E), F = /* @__PURE__ */ (function(a) {
46
+ return a.SYSTEM = "system", a.IBM_PLEX = "ibm-plex", a.NOTO = "noto", a.SOURCE_SANS = "source-sans", a;
47
+ })({}), P = "system", Y = Object.values(F), Q = (a) => s(a, Y, P), j = /* @__PURE__ */ (function(a) {
48
+ return a.EN = "en", a.ZH = "zh", a.FR = "fr", a;
49
+ })({}), $ = "zh", l = Object.values(j), C = (a) => s(a, l, "zh"), B = /* @__PURE__ */ (function(a) {
50
+ return a.NONE = "none", a.WAVES = "waves", a.SQUARES = "squares", a.LETTER_GLITCH = "letterGlitch", a.PIXEL_BLAST = "pixelBlast", a;
51
+ })({}), n = "none", H = Object.values(B), o = (a) => s(a, H, n);
52
+ export {
53
+ k as A,
54
+ F as B,
55
+ D as C,
56
+ q as D,
57
+ R as E,
58
+ M as F,
59
+ K as G,
60
+ s as H,
61
+ h as I,
62
+ W as J,
63
+ x as K,
64
+ b as L,
65
+ I as M,
66
+ J as N,
67
+ f as O,
68
+ T as P,
69
+ Y as R,
70
+ E as S,
71
+ P as T,
72
+ p as U,
73
+ u as V,
74
+ y as W,
75
+ w as Y,
76
+ t as _,
77
+ $ as a,
78
+ L as b,
79
+ j as c,
80
+ Z as d,
81
+ N as f,
82
+ z as g,
83
+ v as h,
84
+ B as i,
85
+ d as j,
86
+ V as k,
87
+ U as l,
88
+ A as m,
89
+ n,
90
+ l as o,
91
+ X as p,
92
+ g as q,
93
+ o as r,
94
+ C as s,
95
+ H as t,
96
+ O as u,
97
+ S as v,
98
+ G as w,
99
+ _ as x,
100
+ i as y,
101
+ Q as z
102
+ };
103
+
104
+ //# sourceMappingURL=chunk-dashboard-BsGK96hu.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-dashboard-BsGK96hu.mjs","names":[],"sources":["../src/utils/safe.ts","../src/enums/theme.ts","../src/enums/language.ts","../src/enums/dashboard.ts"],"sourcesContent":["/**\n * Safe 工具:将 Nilable / Emptyable / Array 等规范为 Nullable、Maybe、Zeroable、Stringable、Array,避免到处写 ?? undefined / ?? null / ?? 0 / ?? \"\" / ?? []。\n * Safe utils: normalize Nilable/Emptyable/array to Nullable, Maybe, Zeroable, Stringable, Array.\n */\n\nimport type { Nullable, Maybe, Nilable, Emptyable, Zeroable, Stringable, Array } from \"@/types\";\n\n/**\n * 将 Nilable 规范为 Nullable:undefined 转为 null,null 与 T 原样返回。返回类型 Nullable&lt;T&gt;。\n * Normalize Nilable to Nullable: convert undefined to null; null and T unchanged. Returns Nullable&lt;T&gt;.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @returns 若为 undefined 则 null,否则原值 (null if undefined, otherwise value)\n * @example safeNullable(apiResponse.data) // undefined → null,便于区分「未设置」与「空」\n */\nexport function safeNullable<T>(value: Nilable<T>): Nullable<T> {\n return (value === undefined ? null : value) as Nullable<T>;\n}\n\n/**\n * 将 Nilable 规范为 Maybe:null 转为 undefined,undefined 与 T 原样返回。返回类型 Maybe&lt;T&gt;。等同 value ?? undefined。\n * Normalize Nilable to Maybe: convert null to undefined; undefined and T unchanged. Returns Maybe&lt;T&gt;. Same as value ?? undefined.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @returns 若为 null 或 undefined 则 undefined,否则原值 (undefined if null/undefined, otherwise value)\n * @example safeMaybe(product.price) // 代替 product.price ?? undefined\n */\nexport function safeMaybe<T>(value: Nilable<T>): Maybe<T> {\n return value ?? undefined;\n}\n\n/**\n * 将 Emptyable 字符串规范为 Nilable:空字符串转为 undefined,null/undefined/非空串原样。返回类型 Nilable&lt;T&gt;。常用于表单、接口字段。\n * Normalize Emptyable string to Nilable: \"\" to undefined; null, undefined, non-empty string unchanged. Returns Nilable&lt;T&gt;. For form/API fields.\n * @param value - 可能为 null、undefined 或空字符串 (value that may be null, undefined or \"\")\n * @returns 若为 \"\" 则 undefined,否则原值 (undefined if \"\", otherwise value)\n * @example safeNilable(product.remark) // \"\" 也视为「无值」\n */\nexport function safeNilable<T extends string>(value: Emptyable<T>): Nilable<T> {\n return (value === \"\" ? undefined : value) as Nilable<T>;\n}\n\n/**\n * 将 Nilable 数组规范为数组:null/undefined 转为 [] 或 defaultValue。返回类型 Array&lt;T&gt;(即 T[])。\n * Normalize Nilable array to array: null/undefined to [] or defaultValue. Returns Array&lt;T&gt; (i.e. T[]).\n * @param value - 可能为 null 或 undefined 的数组 (array that may be null or undefined)\n * @param defaultValue - 可选,当 value 为 null/undefined 时使用;缺省为 [] (optional default when value is null/undefined; default is [])\n * @returns value ?? defaultValue ?? [] (never null/undefined)\n * @example safeArray(product.tags) // product.tags ?? []\n * @example safeArray(product.tags, ['default'])\n *\n * 参数使用 `Array&lt;T&gt;`(即 `T[]`,见 `@/types`)与全库类型别名一致;入参也接受 `readonly T[]`,便于兼容只读数组来源。\n */\nexport function safeArray<T>(value: Nilable<Array<T> | readonly T[]>, defaultValue?: Array<T>): Array<T> {\n const resolved = value ?? defaultValue;\n if (resolved === undefined) {\n return [] as Array<T>;\n }\n return resolved as Array<T>;\n}\n\n/**\n * 将 Nilable 数值规范为 Zeroable:null/undefined 转为 0。返回类型 Zeroable&lt;number&gt;(即 number,0 为兜底)。\n * Normalize Nilable number to Zeroable: null/undefined to 0. Returns Zeroable&lt;number&gt; (number with 0 as fallback).\n * @param value - 可能为 null 或 undefined 的数值 (number that may be null or undefined)\n * @returns value ?? 0 (never null/undefined)\n * @example safeZeroable(product.stock) // 代替 product.stock ?? 0\n */\nexport function safeZeroable(value: Nilable<number>): Zeroable<number> {\n return (value ?? 0) as Zeroable<number>;\n}\n\n/**\n * 将 Emptyable 字符串规范为 Stringable:null/undefined/\"\" 转为 \"\"。返回类型 Stringable&lt;string&gt;(即 string,\"\" 为兜底)。\n * Normalize Emptyable string to Stringable: null/undefined/\"\" to \"\". Returns Stringable&lt;string&gt; (string with \"\" as fallback).\n * @param value - 可能为 null、undefined 或空字符串 (value that may be null, undefined or \"\")\n * @returns 若为 null、undefined 或 \"\" 则 \"\",否则原值 (\"\" if null/undefined/\"\", otherwise value)\n * @example safeStringable(product.name) // 代替 product.name ?? \"\"\n */\nexport function safeStringable<T extends string>(value: Emptyable<T>): Stringable<T> {\n if (value === null || value === undefined || value === \"\") return \"\" as Stringable<T>;\n return value as Stringable<T>;\n}\n\n/**\n * 若值为 null/undefined 则返回默认值,否则返回原值。等同 value ?? defaultValue。\n * Return defaultValue when value is null/undefined, otherwise value. Same as value ?? defaultValue.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @param defaultValue - 默认值 (default value)\n * @returns value ?? defaultValue\n * @example safeOr(product.stock, 0)\n * @example safeOr(product.name, '')\n *\n * 使用两个类型参数时,若第一个实参无法收窄(例如索引访问、宽泛的 Record),`T` 可能被推断为 `unknown`,结果变成 `unknown`。\n * 因此提供**单类型**重载:当 `defaultValue` 与「有值时」的类型一致时,应写 `safeOr(x, fallback)` 且两者同型,返回即为 `T`。\n */\nexport function safeOr<T>(value: Nilable<T>, defaultValue: T): T;\nexport function safeOr<T, D>(value: Nilable<T>, defaultValue: D): T | D;\nexport function safeOr<T, D>(value: Nilable<T>, defaultValue: D): T | D {\n return value ?? defaultValue;\n}\n\n/**\n * 将字符串规范为允许的枚举成员;非法或缺省时回落 defaultValue。\n */\nexport function safeEnum<T extends string>(value: Nilable<string>, allowed: readonly T[], defaultValue: T): T {\n return typeof value === \"string\" && allowed.includes(value as T) ? (value as T) : defaultValue;\n}\n\n/**\n * 安全取数字:null/undefined/NaN 转为 undefined,合法数字原样。返回类型 Maybe&lt;number&gt;。\n * Safe number: null/undefined/NaN to undefined; valid number unchanged. Returns Maybe&lt;number&gt;.\n * @param value - 可能为 null、undefined 或非数字 (value that may be null, undefined or NaN)\n * @returns 若为 null、undefined 或 NaN 则 undefined,否则数字 (undefined if null/undefined/NaN, otherwise number)\n * @example safeNum(product.price) // 用于严格「有值才用」的场景\n */\nexport function safeNum(value: Nilable<number>): Maybe<number> {\n if (value === null || value === undefined) return undefined;\n const n = Number(value);\n return Number.isNaN(n) ? undefined : n;\n}\n","import { safeEnum } from \"@/utils/safe\";\n\nimport type { Nilable } from \"@/types\";\n\n/** 基础主题枚举(平台/圆角等,如 iOS 24 / Android|Windows 6 / Linux 4) */\nexport enum BaseEnum {\n DEFAULT = \"default\",\n IOS = \"ios\",\n ANDROID = \"android\",\n WINDOWS = \"windows\",\n LINUX = \"linux\",\n}\n\nexport const DEFAULT_BASE = BaseEnum.DEFAULT;\nexport const BASE_VALUES = Object.values(BaseEnum);\nexport const Base = (value: Nilable<string>) => safeEnum(value, BASE_VALUES, DEFAULT_BASE);\n\n/** 外观偏好:浅色 / 深色 / 跟随系统(解析后才映射到 Radix light|dark) */\nexport enum AppearanceEnum {\n LIGHT = \"light\",\n DARK = \"dark\",\n SYSTEM = \"system\",\n}\n\nexport const DEFAULT_APPEARANCE = AppearanceEnum.SYSTEM;\nexport const APPEARANCE_VALUES = Object.values(AppearanceEnum);\nexport const Appearance = (value: Nilable<string>) => safeEnum(value, APPEARANCE_VALUES, DEFAULT_APPEARANCE);\n\n/** Radix 强调色 */\nexport enum AccentColorEnum {\n GRAY = \"gray\",\n GOLD = \"gold\",\n BRONZE = \"bronze\",\n BROWN = \"brown\",\n YELLOW = \"yellow\",\n AMBER = \"amber\",\n ORANGE = \"orange\",\n TOMATO = \"tomato\",\n RED = \"red\",\n RUBY = \"ruby\",\n CRIMSON = \"crimson\",\n PINK = \"pink\",\n PLUM = \"plum\",\n PURPLE = \"purple\",\n VIOLET = \"violet\",\n IRIS = \"iris\",\n INDIGO = \"indigo\",\n BLUE = \"blue\",\n CYAN = \"cyan\",\n TEAL = \"teal\",\n JADE = \"jade\",\n GREEN = \"green\",\n GRASS = \"grass\",\n LIME = \"lime\",\n MINT = \"mint\",\n SKY = \"sky\",\n}\n\nexport const DEFAULT_ACCENT_COLOR = AccentColorEnum.TOMATO;\nexport const ACCENT_COLOR_VALUES = Object.values(AccentColorEnum);\nexport const AccentColor = (value: Nilable<string>) => safeEnum(value, ACCENT_COLOR_VALUES, DEFAULT_ACCENT_COLOR);\n\n/** Radix 中性灰 */\nexport enum GrayColorEnum {\n AUTO = \"auto\",\n GRAY = \"gray\",\n MAUVE = \"mauve\",\n SLATE = \"slate\",\n SAGE = \"sage\",\n OLIVE = \"olive\",\n SAND = \"sand\",\n}\n\nexport const DEFAULT_GRAY_COLOR = GrayColorEnum.SLATE;\nexport const GRAY_COLOR_VALUES = Object.values(GrayColorEnum);\nexport const GrayColor = (value: Nilable<string>) => safeEnum(value, GRAY_COLOR_VALUES, DEFAULT_GRAY_COLOR);\n\n/** Radix 圆角档位(按平台映射:none=Linux / small=Android / medium=Other / large=Windows / full=iOS) */\nexport enum RadiusEnum {\n NONE = \"none\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n FULL = \"full\",\n}\n\nexport const DEFAULT_RADIUS = RadiusEnum.MEDIUM;\nexport const RADIUS_VALUES = Object.values(RadiusEnum);\nexport const Radius = (value: Nilable<string>) => safeEnum(value, RADIUS_VALUES, DEFAULT_RADIUS);\n\n/** Radix 缩放比例 */\nexport enum ScalingEnum {\n S90 = \"90%\",\n S95 = \"95%\",\n S100 = \"100%\",\n S105 = \"105%\",\n S110 = \"110%\",\n}\n\nexport const DEFAULT_SCALING = ScalingEnum.S100;\nexport const SCALING_VALUES = Object.values(ScalingEnum);\nexport const Scaling = (value: Nilable<string>) => safeEnum(value, SCALING_VALUES, DEFAULT_SCALING);\n\n/** Radix 面板背景 */\nexport enum PanelBackgroundEnum {\n SOLID = \"solid\",\n TRANSLUCENT = \"translucent\",\n}\n\nexport const DEFAULT_PANEL_BACKGROUND = PanelBackgroundEnum.TRANSLUCENT;\nexport const PANEL_BACKGROUND_VALUES = Object.values(PanelBackgroundEnum);\nexport const PanelBackground = (value: Nilable<string>) => safeEnum(value, PANEL_BACKGROUND_VALUES, DEFAULT_PANEL_BACKGROUND);\n\n/** UI 正文字体族(webfont 栈 / 系统默认;见 themes/fonts.ts + themes/index.css) */\nexport enum ThemeFontFamilyEnum {\n SYSTEM = \"system\",\n IBM_PLEX = \"ibm-plex\",\n NOTO = \"noto\",\n SOURCE_SANS = \"source-sans\",\n}\n\nexport const DEFAULT_THEME_FONT_FAMILY = ThemeFontFamilyEnum.SYSTEM;\nexport const THEME_FONT_FAMILY_VALUES = Object.values(ThemeFontFamilyEnum);\nexport const ThemeFontFamily = (value: Nilable<string>) => safeEnum(value, THEME_FONT_FAMILY_VALUES, DEFAULT_THEME_FONT_FAMILY);\n","/**\n * 语言枚举与常量,不引用任何 JSON,供需要轻量引用的模块使用。\n */\nimport type { Nilable } from \"@/types\";\n\nimport { safeEnum } from \"@/utils/safe\";\n\nexport enum LanguageEnum {\n EN = \"en\",\n ZH = \"zh\",\n FR = \"fr\",\n}\n\nexport const DEFAULT_LANGUAGE = LanguageEnum.ZH;\nexport const LANGUAGE_VALUES = Object.values(LanguageEnum);\nexport const Language = (value: Nilable<string>) => safeEnum(value, LANGUAGE_VALUES, DEFAULT_LANGUAGE);\n","import type { Array, Nilable } from \"@/types\";\n\nimport { safeEnum } from \"@/utils/safe\";\n\n/** 仪表盘背景。Dashboard background. */\nexport enum DashboardBackgroundEnum {\n NONE = \"none\",\n WAVES = \"waves\",\n SQUARES = \"squares\",\n LETTER_GLITCH = \"letterGlitch\",\n PIXEL_BLAST = \"pixelBlast\",\n}\n\nexport const DEFAULT_DASHBOARD_BACKGROUND = DashboardBackgroundEnum.NONE;\nexport const DASHBOARD_BACKGROUND_VALUES: Array<DashboardBackgroundEnum> = Object.values(DashboardBackgroundEnum);\nexport const DashboardBackground = (value: Nilable<string>) =>\n safeEnum(value, DASHBOARD_BACKGROUND_VALUES, DEFAULT_DASHBOARD_BACKGROUND);\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ function F(e){return e===void 0?null:e}function m(e){return e??void 0}function B(e){return e===""?void 0:e}function V(e,t){const n=e??t;return n===void 0?[]:n}function M(e){return e??0}function Y(e){return e==null||e===""?"":e}function C(e,t){return e??t}function r(e,t,n){return typeof e=="string"&&t.includes(e)?e:n}function H(e){if(e==null)return;const t=Number(e);return Number.isNaN(t)?void 0:t}var u=(function(e){return e.DEFAULT="default",e.IOS="ios",e.ANDROID="android",e.WINDOWS="windows",e.LINUX="linux",e})({}),i="default",a=Object.values(u),K=e=>r(e,a,i),f=(function(e){return e.LIGHT="light",e.DARK="dark",e.SYSTEM="system",e})({}),b="system",O=Object.values(f),w=e=>r(e,O,b),A=(function(e){return e.GRAY="gray",e.GOLD="gold",e.BRONZE="bronze",e.BROWN="brown",e.YELLOW="yellow",e.AMBER="amber",e.ORANGE="orange",e.TOMATO="tomato",e.RED="red",e.RUBY="ruby",e.CRIMSON="crimson",e.PINK="pink",e.PLUM="plum",e.PURPLE="purple",e.VIOLET="violet",e.IRIS="iris",e.INDIGO="indigo",e.BLUE="blue",e.CYAN="cyan",e.TEAL="teal",e.JADE="jade",e.GREEN="green",e.GRASS="grass",e.LIME="lime",e.MINT="mint",e.SKY="sky",e})({}),o="tomato",c=Object.values(A),W=e=>r(e,c,o),L=(function(e){return e.AUTO="auto",e.GRAY="gray",e.MAUVE="mauve",e.SLATE="slate",e.SAGE="sage",e.OLIVE="olive",e.SAND="sand",e})({}),l="slate",d=Object.values(L),h=e=>r(e,d,l),P=(function(e){return e.NONE="none",e.SMALL="small",e.MEDIUM="medium",e.LARGE="large",e.FULL="full",e})({}),U="medium",_=Object.values(P),k=e=>r(e,_,U),S=(function(e){return e.S90="90%",e.S95="95%",e.S100="100%",e.S105="105%",e.S110="110%",e})({}),g="100%",N=Object.values(S),z=e=>r(e,N,g),E=(function(e){return e.SOLID="solid",e.TRANSLUCENT="translucent",e})({}),s="translucent",y=Object.values(E),Z=e=>r(e,y,s),j=(function(e){return e.SYSTEM="system",e.IBM_PLEX="ibm-plex",e.NOTO="noto",e.SOURCE_SANS="source-sans",e})({}),p="system",v=Object.values(j),x=e=>r(e,v,p),R=(function(e){return e.EN="en",e.ZH="zh",e.FR="fr",e})({}),X="zh",D=Object.values(R),q=e=>r(e,D,"zh"),T=(function(e){return e.NONE="none",e.WAVES="waves",e.SQUARES="squares",e.LETTER_GLITCH="letterGlitch",e.PIXEL_BLAST="pixelBlast",e})({}),G="none",I=Object.values(T),J=e=>r(e,I,G);Object.defineProperty(exports,"ACCENT_COLOR_VALUES",{enumerable:!0,get:function(){return c}});Object.defineProperty(exports,"APPEARANCE_VALUES",{enumerable:!0,get:function(){return O}});Object.defineProperty(exports,"AccentColor",{enumerable:!0,get:function(){return W}});Object.defineProperty(exports,"AccentColorEnum",{enumerable:!0,get:function(){return A}});Object.defineProperty(exports,"Appearance",{enumerable:!0,get:function(){return w}});Object.defineProperty(exports,"AppearanceEnum",{enumerable:!0,get:function(){return f}});Object.defineProperty(exports,"BASE_VALUES",{enumerable:!0,get:function(){return a}});Object.defineProperty(exports,"Base",{enumerable:!0,get:function(){return K}});Object.defineProperty(exports,"BaseEnum",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"DASHBOARD_BACKGROUND_VALUES",{enumerable:!0,get:function(){return I}});Object.defineProperty(exports,"DEFAULT_ACCENT_COLOR",{enumerable:!0,get:function(){return o}});Object.defineProperty(exports,"DEFAULT_APPEARANCE",{enumerable:!0,get:function(){return b}});Object.defineProperty(exports,"DEFAULT_BASE",{enumerable:!0,get:function(){return i}});Object.defineProperty(exports,"DEFAULT_DASHBOARD_BACKGROUND",{enumerable:!0,get:function(){return G}});Object.defineProperty(exports,"DEFAULT_GRAY_COLOR",{enumerable:!0,get:function(){return l}});Object.defineProperty(exports,"DEFAULT_LANGUAGE",{enumerable:!0,get:function(){return X}});Object.defineProperty(exports,"DEFAULT_PANEL_BACKGROUND",{enumerable:!0,get:function(){return s}});Object.defineProperty(exports,"DEFAULT_RADIUS",{enumerable:!0,get:function(){return U}});Object.defineProperty(exports,"DEFAULT_SCALING",{enumerable:!0,get:function(){return g}});Object.defineProperty(exports,"DEFAULT_THEME_FONT_FAMILY",{enumerable:!0,get:function(){return p}});Object.defineProperty(exports,"DashboardBackground",{enumerable:!0,get:function(){return J}});Object.defineProperty(exports,"DashboardBackgroundEnum",{enumerable:!0,get:function(){return T}});Object.defineProperty(exports,"GRAY_COLOR_VALUES",{enumerable:!0,get:function(){return d}});Object.defineProperty(exports,"GrayColor",{enumerable:!0,get:function(){return h}});Object.defineProperty(exports,"GrayColorEnum",{enumerable:!0,get:function(){return L}});Object.defineProperty(exports,"LANGUAGE_VALUES",{enumerable:!0,get:function(){return D}});Object.defineProperty(exports,"Language",{enumerable:!0,get:function(){return q}});Object.defineProperty(exports,"LanguageEnum",{enumerable:!0,get:function(){return R}});Object.defineProperty(exports,"PANEL_BACKGROUND_VALUES",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"PanelBackground",{enumerable:!0,get:function(){return Z}});Object.defineProperty(exports,"PanelBackgroundEnum",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"RADIUS_VALUES",{enumerable:!0,get:function(){return _}});Object.defineProperty(exports,"Radius",{enumerable:!0,get:function(){return k}});Object.defineProperty(exports,"RadiusEnum",{enumerable:!0,get:function(){return P}});Object.defineProperty(exports,"SCALING_VALUES",{enumerable:!0,get:function(){return N}});Object.defineProperty(exports,"Scaling",{enumerable:!0,get:function(){return z}});Object.defineProperty(exports,"ScalingEnum",{enumerable:!0,get:function(){return S}});Object.defineProperty(exports,"THEME_FONT_FAMILY_VALUES",{enumerable:!0,get:function(){return v}});Object.defineProperty(exports,"ThemeFontFamily",{enumerable:!0,get:function(){return x}});Object.defineProperty(exports,"ThemeFontFamilyEnum",{enumerable:!0,get:function(){return j}});Object.defineProperty(exports,"safeArray",{enumerable:!0,get:function(){return V}});Object.defineProperty(exports,"safeEnum",{enumerable:!0,get:function(){return r}});Object.defineProperty(exports,"safeMaybe",{enumerable:!0,get:function(){return m}});Object.defineProperty(exports,"safeNilable",{enumerable:!0,get:function(){return B}});Object.defineProperty(exports,"safeNullable",{enumerable:!0,get:function(){return F}});Object.defineProperty(exports,"safeNum",{enumerable:!0,get:function(){return H}});Object.defineProperty(exports,"safeOr",{enumerable:!0,get:function(){return C}});Object.defineProperty(exports,"safeStringable",{enumerable:!0,get:function(){return Y}});Object.defineProperty(exports,"safeZeroable",{enumerable:!0,get:function(){return M}});
2
+
3
+ //# sourceMappingURL=chunk-dashboard-CFT0HjSM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-dashboard-CFT0HjSM.cjs","names":[],"sources":["../src/utils/safe.ts","../src/enums/theme.ts","../src/enums/language.ts","../src/enums/dashboard.ts"],"sourcesContent":["/**\n * Safe 工具:将 Nilable / Emptyable / Array 等规范为 Nullable、Maybe、Zeroable、Stringable、Array,避免到处写 ?? undefined / ?? null / ?? 0 / ?? \"\" / ?? []。\n * Safe utils: normalize Nilable/Emptyable/array to Nullable, Maybe, Zeroable, Stringable, Array.\n */\n\nimport type { Nullable, Maybe, Nilable, Emptyable, Zeroable, Stringable, Array } from \"@/types\";\n\n/**\n * 将 Nilable 规范为 Nullable:undefined 转为 null,null 与 T 原样返回。返回类型 Nullable&lt;T&gt;。\n * Normalize Nilable to Nullable: convert undefined to null; null and T unchanged. Returns Nullable&lt;T&gt;.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @returns 若为 undefined 则 null,否则原值 (null if undefined, otherwise value)\n * @example safeNullable(apiResponse.data) // undefined → null,便于区分「未设置」与「空」\n */\nexport function safeNullable<T>(value: Nilable<T>): Nullable<T> {\n return (value === undefined ? null : value) as Nullable<T>;\n}\n\n/**\n * 将 Nilable 规范为 Maybe:null 转为 undefined,undefined 与 T 原样返回。返回类型 Maybe&lt;T&gt;。等同 value ?? undefined。\n * Normalize Nilable to Maybe: convert null to undefined; undefined and T unchanged. Returns Maybe&lt;T&gt;. Same as value ?? undefined.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @returns 若为 null 或 undefined 则 undefined,否则原值 (undefined if null/undefined, otherwise value)\n * @example safeMaybe(product.price) // 代替 product.price ?? undefined\n */\nexport function safeMaybe<T>(value: Nilable<T>): Maybe<T> {\n return value ?? undefined;\n}\n\n/**\n * 将 Emptyable 字符串规范为 Nilable:空字符串转为 undefined,null/undefined/非空串原样。返回类型 Nilable&lt;T&gt;。常用于表单、接口字段。\n * Normalize Emptyable string to Nilable: \"\" to undefined; null, undefined, non-empty string unchanged. Returns Nilable&lt;T&gt;. For form/API fields.\n * @param value - 可能为 null、undefined 或空字符串 (value that may be null, undefined or \"\")\n * @returns 若为 \"\" 则 undefined,否则原值 (undefined if \"\", otherwise value)\n * @example safeNilable(product.remark) // \"\" 也视为「无值」\n */\nexport function safeNilable<T extends string>(value: Emptyable<T>): Nilable<T> {\n return (value === \"\" ? undefined : value) as Nilable<T>;\n}\n\n/**\n * 将 Nilable 数组规范为数组:null/undefined 转为 [] 或 defaultValue。返回类型 Array&lt;T&gt;(即 T[])。\n * Normalize Nilable array to array: null/undefined to [] or defaultValue. Returns Array&lt;T&gt; (i.e. T[]).\n * @param value - 可能为 null 或 undefined 的数组 (array that may be null or undefined)\n * @param defaultValue - 可选,当 value 为 null/undefined 时使用;缺省为 [] (optional default when value is null/undefined; default is [])\n * @returns value ?? defaultValue ?? [] (never null/undefined)\n * @example safeArray(product.tags) // product.tags ?? []\n * @example safeArray(product.tags, ['default'])\n *\n * 参数使用 `Array&lt;T&gt;`(即 `T[]`,见 `@/types`)与全库类型别名一致;入参也接受 `readonly T[]`,便于兼容只读数组来源。\n */\nexport function safeArray<T>(value: Nilable<Array<T> | readonly T[]>, defaultValue?: Array<T>): Array<T> {\n const resolved = value ?? defaultValue;\n if (resolved === undefined) {\n return [] as Array<T>;\n }\n return resolved as Array<T>;\n}\n\n/**\n * 将 Nilable 数值规范为 Zeroable:null/undefined 转为 0。返回类型 Zeroable&lt;number&gt;(即 number,0 为兜底)。\n * Normalize Nilable number to Zeroable: null/undefined to 0. Returns Zeroable&lt;number&gt; (number with 0 as fallback).\n * @param value - 可能为 null 或 undefined 的数值 (number that may be null or undefined)\n * @returns value ?? 0 (never null/undefined)\n * @example safeZeroable(product.stock) // 代替 product.stock ?? 0\n */\nexport function safeZeroable(value: Nilable<number>): Zeroable<number> {\n return (value ?? 0) as Zeroable<number>;\n}\n\n/**\n * 将 Emptyable 字符串规范为 Stringable:null/undefined/\"\" 转为 \"\"。返回类型 Stringable&lt;string&gt;(即 string,\"\" 为兜底)。\n * Normalize Emptyable string to Stringable: null/undefined/\"\" to \"\". Returns Stringable&lt;string&gt; (string with \"\" as fallback).\n * @param value - 可能为 null、undefined 或空字符串 (value that may be null, undefined or \"\")\n * @returns 若为 null、undefined 或 \"\" 则 \"\",否则原值 (\"\" if null/undefined/\"\", otherwise value)\n * @example safeStringable(product.name) // 代替 product.name ?? \"\"\n */\nexport function safeStringable<T extends string>(value: Emptyable<T>): Stringable<T> {\n if (value === null || value === undefined || value === \"\") return \"\" as Stringable<T>;\n return value as Stringable<T>;\n}\n\n/**\n * 若值为 null/undefined 则返回默认值,否则返回原值。等同 value ?? defaultValue。\n * Return defaultValue when value is null/undefined, otherwise value. Same as value ?? defaultValue.\n * @param value - 可能为 null 或 undefined 的值 (value that may be null or undefined)\n * @param defaultValue - 默认值 (default value)\n * @returns value ?? defaultValue\n * @example safeOr(product.stock, 0)\n * @example safeOr(product.name, '')\n *\n * 使用两个类型参数时,若第一个实参无法收窄(例如索引访问、宽泛的 Record),`T` 可能被推断为 `unknown`,结果变成 `unknown`。\n * 因此提供**单类型**重载:当 `defaultValue` 与「有值时」的类型一致时,应写 `safeOr(x, fallback)` 且两者同型,返回即为 `T`。\n */\nexport function safeOr<T>(value: Nilable<T>, defaultValue: T): T;\nexport function safeOr<T, D>(value: Nilable<T>, defaultValue: D): T | D;\nexport function safeOr<T, D>(value: Nilable<T>, defaultValue: D): T | D {\n return value ?? defaultValue;\n}\n\n/**\n * 将字符串规范为允许的枚举成员;非法或缺省时回落 defaultValue。\n */\nexport function safeEnum<T extends string>(value: Nilable<string>, allowed: readonly T[], defaultValue: T): T {\n return typeof value === \"string\" && allowed.includes(value as T) ? (value as T) : defaultValue;\n}\n\n/**\n * 安全取数字:null/undefined/NaN 转为 undefined,合法数字原样。返回类型 Maybe&lt;number&gt;。\n * Safe number: null/undefined/NaN to undefined; valid number unchanged. Returns Maybe&lt;number&gt;.\n * @param value - 可能为 null、undefined 或非数字 (value that may be null, undefined or NaN)\n * @returns 若为 null、undefined 或 NaN 则 undefined,否则数字 (undefined if null/undefined/NaN, otherwise number)\n * @example safeNum(product.price) // 用于严格「有值才用」的场景\n */\nexport function safeNum(value: Nilable<number>): Maybe<number> {\n if (value === null || value === undefined) return undefined;\n const n = Number(value);\n return Number.isNaN(n) ? undefined : n;\n}\n","import { safeEnum } from \"@/utils/safe\";\n\nimport type { Nilable } from \"@/types\";\n\n/** 基础主题枚举(平台/圆角等,如 iOS 24 / Android|Windows 6 / Linux 4) */\nexport enum BaseEnum {\n DEFAULT = \"default\",\n IOS = \"ios\",\n ANDROID = \"android\",\n WINDOWS = \"windows\",\n LINUX = \"linux\",\n}\n\nexport const DEFAULT_BASE = BaseEnum.DEFAULT;\nexport const BASE_VALUES = Object.values(BaseEnum);\nexport const Base = (value: Nilable<string>) => safeEnum(value, BASE_VALUES, DEFAULT_BASE);\n\n/** 外观偏好:浅色 / 深色 / 跟随系统(解析后才映射到 Radix light|dark) */\nexport enum AppearanceEnum {\n LIGHT = \"light\",\n DARK = \"dark\",\n SYSTEM = \"system\",\n}\n\nexport const DEFAULT_APPEARANCE = AppearanceEnum.SYSTEM;\nexport const APPEARANCE_VALUES = Object.values(AppearanceEnum);\nexport const Appearance = (value: Nilable<string>) => safeEnum(value, APPEARANCE_VALUES, DEFAULT_APPEARANCE);\n\n/** Radix 强调色 */\nexport enum AccentColorEnum {\n GRAY = \"gray\",\n GOLD = \"gold\",\n BRONZE = \"bronze\",\n BROWN = \"brown\",\n YELLOW = \"yellow\",\n AMBER = \"amber\",\n ORANGE = \"orange\",\n TOMATO = \"tomato\",\n RED = \"red\",\n RUBY = \"ruby\",\n CRIMSON = \"crimson\",\n PINK = \"pink\",\n PLUM = \"plum\",\n PURPLE = \"purple\",\n VIOLET = \"violet\",\n IRIS = \"iris\",\n INDIGO = \"indigo\",\n BLUE = \"blue\",\n CYAN = \"cyan\",\n TEAL = \"teal\",\n JADE = \"jade\",\n GREEN = \"green\",\n GRASS = \"grass\",\n LIME = \"lime\",\n MINT = \"mint\",\n SKY = \"sky\",\n}\n\nexport const DEFAULT_ACCENT_COLOR = AccentColorEnum.TOMATO;\nexport const ACCENT_COLOR_VALUES = Object.values(AccentColorEnum);\nexport const AccentColor = (value: Nilable<string>) => safeEnum(value, ACCENT_COLOR_VALUES, DEFAULT_ACCENT_COLOR);\n\n/** Radix 中性灰 */\nexport enum GrayColorEnum {\n AUTO = \"auto\",\n GRAY = \"gray\",\n MAUVE = \"mauve\",\n SLATE = \"slate\",\n SAGE = \"sage\",\n OLIVE = \"olive\",\n SAND = \"sand\",\n}\n\nexport const DEFAULT_GRAY_COLOR = GrayColorEnum.SLATE;\nexport const GRAY_COLOR_VALUES = Object.values(GrayColorEnum);\nexport const GrayColor = (value: Nilable<string>) => safeEnum(value, GRAY_COLOR_VALUES, DEFAULT_GRAY_COLOR);\n\n/** Radix 圆角档位(按平台映射:none=Linux / small=Android / medium=Other / large=Windows / full=iOS) */\nexport enum RadiusEnum {\n NONE = \"none\",\n SMALL = \"small\",\n MEDIUM = \"medium\",\n LARGE = \"large\",\n FULL = \"full\",\n}\n\nexport const DEFAULT_RADIUS = RadiusEnum.MEDIUM;\nexport const RADIUS_VALUES = Object.values(RadiusEnum);\nexport const Radius = (value: Nilable<string>) => safeEnum(value, RADIUS_VALUES, DEFAULT_RADIUS);\n\n/** Radix 缩放比例 */\nexport enum ScalingEnum {\n S90 = \"90%\",\n S95 = \"95%\",\n S100 = \"100%\",\n S105 = \"105%\",\n S110 = \"110%\",\n}\n\nexport const DEFAULT_SCALING = ScalingEnum.S100;\nexport const SCALING_VALUES = Object.values(ScalingEnum);\nexport const Scaling = (value: Nilable<string>) => safeEnum(value, SCALING_VALUES, DEFAULT_SCALING);\n\n/** Radix 面板背景 */\nexport enum PanelBackgroundEnum {\n SOLID = \"solid\",\n TRANSLUCENT = \"translucent\",\n}\n\nexport const DEFAULT_PANEL_BACKGROUND = PanelBackgroundEnum.TRANSLUCENT;\nexport const PANEL_BACKGROUND_VALUES = Object.values(PanelBackgroundEnum);\nexport const PanelBackground = (value: Nilable<string>) => safeEnum(value, PANEL_BACKGROUND_VALUES, DEFAULT_PANEL_BACKGROUND);\n\n/** UI 正文字体族(webfont 栈 / 系统默认;见 themes/fonts.ts + themes/index.css) */\nexport enum ThemeFontFamilyEnum {\n SYSTEM = \"system\",\n IBM_PLEX = \"ibm-plex\",\n NOTO = \"noto\",\n SOURCE_SANS = \"source-sans\",\n}\n\nexport const DEFAULT_THEME_FONT_FAMILY = ThemeFontFamilyEnum.SYSTEM;\nexport const THEME_FONT_FAMILY_VALUES = Object.values(ThemeFontFamilyEnum);\nexport const ThemeFontFamily = (value: Nilable<string>) => safeEnum(value, THEME_FONT_FAMILY_VALUES, DEFAULT_THEME_FONT_FAMILY);\n","/**\n * 语言枚举与常量,不引用任何 JSON,供需要轻量引用的模块使用。\n */\nimport type { Nilable } from \"@/types\";\n\nimport { safeEnum } from \"@/utils/safe\";\n\nexport enum LanguageEnum {\n EN = \"en\",\n ZH = \"zh\",\n FR = \"fr\",\n}\n\nexport const DEFAULT_LANGUAGE = LanguageEnum.ZH;\nexport const LANGUAGE_VALUES = Object.values(LanguageEnum);\nexport const Language = (value: Nilable<string>) => safeEnum(value, LANGUAGE_VALUES, DEFAULT_LANGUAGE);\n","import type { Array, Nilable } from \"@/types\";\n\nimport { safeEnum } from \"@/utils/safe\";\n\n/** 仪表盘背景。Dashboard background. */\nexport enum DashboardBackgroundEnum {\n NONE = \"none\",\n WAVES = \"waves\",\n SQUARES = \"squares\",\n LETTER_GLITCH = \"letterGlitch\",\n PIXEL_BLAST = \"pixelBlast\",\n}\n\nexport const DEFAULT_DASHBOARD_BACKGROUND = DashboardBackgroundEnum.NONE;\nexport const DASHBOARD_BACKGROUND_VALUES: Array<DashboardBackgroundEnum> = Object.values(DashboardBackgroundEnum);\nexport const DashboardBackground = (value: Nilable<string>) =>\n safeEnum(value, DASHBOARD_BACKGROUND_VALUES, DEFAULT_DASHBOARD_BACKGROUND);\n"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ import { useMemo as f } from "react";
2
+ import { useInfiniteQuery as F, useQuery as S, useSuspenseInfiniteQuery as Q, useSuspenseQuery as P } from "@tanstack/react-query";
3
+ var y = 20;
4
+ function p(e) {
5
+ return e?.limit ?? y;
6
+ }
7
+ function m(e) {
8
+ return e?.offset ?? 0;
9
+ }
10
+ function d(e, o) {
11
+ return async (n = 0, s) => {
12
+ const i = p(s), u = m(s), { items: t, total: r } = await e({
13
+ ...s,
14
+ offset: u + n * i,
15
+ limit: i
16
+ });
17
+ return t?.length && o?.(t), {
18
+ items: t,
19
+ total: r
20
+ };
21
+ };
22
+ }
23
+ function E(e, o) {
24
+ return async (n = "", s) => {
25
+ const i = s?.limit ?? y, { items: u, nextCursor: t } = await e({
26
+ ...s,
27
+ offset: n,
28
+ limit: i
29
+ });
30
+ return u?.length && o?.(u), {
31
+ items: u,
32
+ nextCursor: t
33
+ };
34
+ };
35
+ }
36
+ function g(e, o, n, s) {
37
+ const i = p(n), u = m(n);
38
+ return {
39
+ queryKey: [...e, n],
40
+ queryFn: ({ pageParam: t }) => o(t, n),
41
+ initialPageParam: 0,
42
+ getNextPageParam: (t, r) => u + r.length * i < t.total ? r.length : void 0,
43
+ select: (t) => t.pages.flatMap((r) => r.items),
44
+ retry: (t, r) => {
45
+ const a = r?.status && r.status >= 500 || r?.code === "NETWORK_ERROR", c = typeof s?.retry == "number" ? s.retry : 3;
46
+ return a && t < c;
47
+ },
48
+ ...s
49
+ };
50
+ }
51
+ function l(e, o, n, s) {
52
+ const { postProcess: i, ...u } = s ?? {};
53
+ return {
54
+ queryKey: n !== void 0 ? [...o, n] : o,
55
+ queryFn: async () => {
56
+ const t = await e(n || {});
57
+ return i?.(t), t;
58
+ },
59
+ select: (t) => t,
60
+ retry: (t, r) => {
61
+ const a = r?.status ?? r?.response?.status, c = typeof a == "number" && a >= 500 || r?.code === "NETWORK_ERROR", O = typeof u?.retry == "number" ? u.retry : 3;
62
+ return c && t < O;
63
+ },
64
+ ...u
65
+ };
66
+ }
67
+ function h(e, o, n, s) {
68
+ return S(l(e, o, n, s));
69
+ }
70
+ function q(e, o, n, s) {
71
+ return P(l(e, o, n, s));
72
+ }
73
+ function I(e, o, n, s) {
74
+ const i = n ?? {}, { postProcess: u, ...t } = s ?? {}, r = f(() => d(e, u), [e, u]);
75
+ return F(g(o, r, i, t));
76
+ }
77
+ function R(e, o, n, s) {
78
+ const i = n ?? {}, { postProcess: u, ...t } = s ?? {}, r = f(() => d(e, u), [e, u]);
79
+ return Q(g(o, r, i, t));
80
+ }
81
+ export {
82
+ R as a,
83
+ h as i,
84
+ E as n,
85
+ q as o,
86
+ I as r,
87
+ d as t
88
+ };
89
+
90
+ //# sourceMappingURL=chunk-hooks-Cy_8mdDG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-hooks-Cy_8mdDG.mjs","names":[],"sources":["../src/utils/factory/hooks.ts"],"sourcesContent":["/**\n * Hooks 模块:分页 fetch 与统一 React Query hooks(稳定身份,可在业务 hook body 内直接调用)。\n */\nimport type {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n UseQueryOptions,\n UseQueryResult,\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n UseSuspenseQueryOptions,\n UseSuspenseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithNextCursor, ListDTOWithTotalNumber, OffsetLimitNumber, OffsetLimitString } from \"@/types/api\";\n\nimport { useMemo } from \"react\";\nimport { useInfiniteQuery, useQuery, useSuspenseInfiniteQuery, useSuspenseQuery } from \"@tanstack/react-query\";\n\ntype InfiniteListFilter = Partial<OffsetLimitNumber>;\n\ntype FetchNumberListParams<F extends InfiniteListFilter = InfiniteListFilter> = F & OffsetLimitNumber;\n\ntype FetchStringListParams<F extends object = Record<string, unknown>> = F & OffsetLimitString;\n\ntype MutationCtx = {\n prev?: unknown;\n};\n\ntype InfiniteQueryOptions<T> = Omit<UseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype StringInfiniteQueryOptions<T> = Omit<UseInfiniteQueryOptions<ListDTOWithNextCursor<T>, AxiosError, T[]>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype SuspenseInfiniteQueryOptions<T> = Omit<\n UseSuspenseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype InfiniteQueryOptionsUnion<T> = InfiniteQueryOptions<T> | SuspenseInfiniteQueryOptions<T>;\n\ntype SuspenseUnifiedQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\"> & {\n postProcess?: (data: T) => void;\n};\n\ntype NormalUnifiedQueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\"> & {\n postProcess?: (data: T) => void;\n};\n\ntype UnifiedQueryParams<T> = {\n options?: SuspenseUnifiedQueryOptions<T>;\n postProcess?: (data: T) => void;\n} & Record<string, unknown>;\n\ntype QueryOptions<T> = NormalUnifiedQueryOptions<T>;\ntype SuspenseQueryOptions<T> = SuspenseUnifiedQueryOptions<T>;\n\nconst DEFAULT_PAGE_SIZE = 20;\n\nexport type {\n FetchNumberListParams,\n FetchStringListParams,\n InfiniteListFilter,\n InfiniteQueryOptions,\n InfiniteQueryOptionsUnion,\n MutationCtx,\n NormalUnifiedQueryOptions,\n StringInfiniteQueryOptions,\n SuspenseInfiniteQueryOptions,\n SuspenseUnifiedQueryOptions,\n UnifiedQueryParams,\n};\n\nfunction resolvePageSize(filter?: InfiniteListFilter): number {\n return filter?.limit ?? DEFAULT_PAGE_SIZE;\n}\n\nfunction resolveBaseOffset(filter?: InfiniteListFilter): number {\n return filter?.offset ?? 0;\n}\n\nfunction makeCursorFetchFunction<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchFunc: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: number = 0, filter?: F): Promise<ListDTOWithTotalNumber<T>> => {\n const pageSize = resolvePageSize(filter);\n const baseOffset = resolveBaseOffset(filter);\n const payload = {\n ...filter,\n offset: baseOffset + pageParam * pageSize,\n limit: pageSize,\n } as F;\n const { items, total } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, total };\n };\n}\n\nfunction makeStringCursorFetchFunction<T, F extends Partial<Pick<OffsetLimitString, \"limit\">> & object = Partial<Pick<OffsetLimitString, \"limit\">>>(\n fetchFunc: (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: string = \"\", filter?: F): Promise<ListDTOWithNextCursor<T>> => {\n const pageSize = filter?.limit ?? DEFAULT_PAGE_SIZE;\n const payload = {\n ...filter,\n offset: pageParam,\n limit: pageSize,\n } as FetchStringListParams<F>;\n const { items, nextCursor } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, nextCursor };\n };\n}\n\nexport { makeCursorFetchFunction, makeStringCursorFetchFunction };\n\nfunction buildInfiniteCommonOptions<T, F extends InfiniteListFilter = InfiniteListFilter>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter: F,\n options: Omit<InfiniteQueryOptionsUnion<T>, \"postProcess\"> | undefined,\n) {\n const pageSize = resolvePageSize(filter);\n const baseOffset = resolveBaseOffset(filter);\n return {\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: [...queryKey, filter],\n queryFn: ({ pageParam }: { pageParam: number }) => fetchFunction(pageParam, filter),\n initialPageParam: 0,\n getNextPageParam: (lastPage: ListDTOWithTotalNumber<T>, allPages: ListDTOWithTotalNumber<T>[]) =>\n baseOffset + allPages.length * pageSize < lastPage.total ? allPages.length : undefined,\n select: (d: InfiniteData<ListDTOWithTotalNumber<T>>) => d.pages.flatMap((p) => p.items),\n retry: (failureCount: number, error: AxiosError) => {\n const transient = (error?.status && error.status >= 500) || error?.code === \"NETWORK_ERROR\";\n const retryMax = typeof options?.retry === \"number\" ? options.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(options as Partial<ReturnType<typeof useInfiniteQuery>>),\n };\n}\n\nfunction buildQueryCommonOptions<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter: F | undefined,\n options: QueryOptions<T> | SuspenseQueryOptions<T> | undefined,\n) {\n const { postProcess, ...queryOptions } = options ?? {};\n return {\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: async () => {\n const data = await fetchRemote(filter || ({} as F));\n postProcess?.(data);\n return data;\n },\n select: (data: T) => data,\n retry: (failureCount: number, error: AxiosError) => {\n const status = error?.status ?? error?.response?.status;\n const transient = (typeof status === \"number\" && status >= 500) || error?.code === \"NETWORK_ERROR\";\n const retryMax = typeof queryOptions?.retry === \"number\" ? queryOptions.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(queryOptions as object),\n };\n}\n\nfunction useUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter?: F,\n options?: QueryOptions<T>,\n): UseQueryResult<T, AxiosError> {\n return useQuery(buildQueryCommonOptions(fetchRemote, queryKey, filter, options));\n}\n\nfunction useUnifiedSuspenseQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter?: F,\n options?: SuspenseQueryOptions<T>,\n): UseSuspenseQueryResult<T, AxiosError> {\n return useSuspenseQuery(buildQueryCommonOptions(fetchRemote, queryKey, filter, options));\n}\n\nfunction useUnifiedInfiniteQuery<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchRemote: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n queryKey: QueryKey,\n filter?: F,\n options?: InfiniteQueryOptions<T>,\n): UseInfiniteQueryResult<T[], AxiosError> {\n const resolvedFilter = (filter ?? {}) as F;\n const { postProcess, ...queryOptions } = options ?? {};\n const fetchFunction = useMemo(() => makeCursorFetchFunction(fetchRemote, postProcess), [fetchRemote, postProcess]);\n return useInfiniteQuery(buildInfiniteCommonOptions(queryKey, fetchFunction, resolvedFilter, queryOptions));\n}\n\nfunction useUnifiedSuspenseInfiniteQuery<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchRemote: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n queryKey: QueryKey,\n filter?: F,\n options?: SuspenseInfiniteQueryOptions<T>,\n): UseSuspenseInfiniteQueryResult<T[], AxiosError> {\n const resolvedFilter = (filter ?? {}) as F;\n const { postProcess, ...queryOptions } = options ?? {};\n const fetchFunction = useMemo(() => makeCursorFetchFunction(fetchRemote, postProcess), [fetchRemote, postProcess]);\n return useSuspenseInfiniteQuery(buildInfiniteCommonOptions(queryKey, fetchFunction, resolvedFilter, queryOptions));\n}\n\nexport { useUnifiedInfiniteQuery, useUnifiedQuery, useUnifiedSuspenseInfiniteQuery, useUnifiedSuspenseQuery };\n"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ let p=require("react"),a=require("@tanstack/react-query");var m=20;function d(t){return t?.limit??m}function l(t){return t?.offset??0}function y(t,i){return async(n=0,r)=>{const o=d(r),s=l(r),{items:e,total:u}=await t({...r,offset:s+n*o,limit:o});return e?.length&&i?.(e),{items:e,total:u}}}function F(t,i){return async(n="",r)=>{const o=r?.limit??m,{items:s,nextCursor:e}=await t({...r,offset:n,limit:o});return s?.length&&i?.(s),{items:s,nextCursor:e}}}function b(t,i,n,r){const o=d(n),s=l(n);return{queryKey:[...t,n],queryFn:({pageParam:e})=>i(e,n),initialPageParam:0,getNextPageParam:(e,u)=>s+u.length*o<e.total?u.length:void 0,select:e=>e.pages.flatMap(u=>u.items),retry:(e,u)=>{const c=u?.status&&u.status>=500||u?.code==="NETWORK_ERROR",f=typeof r?.retry=="number"?r.retry:3;return c&&e<f},...r}}function g(t,i,n,r){const{postProcess:o,...s}=r??{};return{queryKey:n!==void 0?[...i,n]:i,queryFn:async()=>{const e=await t(n||{});return o?.(e),e},select:e=>e,retry:(e,u)=>{const c=u?.status??u?.response?.status,f=typeof c=="number"&&c>=500||u?.code==="NETWORK_ERROR",O=typeof s?.retry=="number"?s.retry:3;return f&&e<O},...s}}function P(t,i,n,r){return(0,a.useQuery)(g(t,i,n,r))}function Q(t,i,n,r){return(0,a.useSuspenseQuery)(g(t,i,n,r))}function S(t,i,n,r){const o=n??{},{postProcess:s,...e}=r??{},u=(0,p.useMemo)(()=>y(t,s),[t,s]);return(0,a.useInfiniteQuery)(b(i,u,o,e))}function q(t,i,n,r){const o=n??{},{postProcess:s,...e}=r??{},u=(0,p.useMemo)(()=>y(t,s),[t,s]);return(0,a.useSuspenseInfiniteQuery)(b(i,u,o,e))}Object.defineProperty(exports,"makeCursorFetchFunction",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"makeStringCursorFetchFunction",{enumerable:!0,get:function(){return F}});Object.defineProperty(exports,"useUnifiedInfiniteQuery",{enumerable:!0,get:function(){return S}});Object.defineProperty(exports,"useUnifiedQuery",{enumerable:!0,get:function(){return P}});Object.defineProperty(exports,"useUnifiedSuspenseInfiniteQuery",{enumerable:!0,get:function(){return q}});Object.defineProperty(exports,"useUnifiedSuspenseQuery",{enumerable:!0,get:function(){return Q}});
2
+
3
+ //# sourceMappingURL=chunk-hooks-yVn82nBZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunk-hooks-yVn82nBZ.cjs","names":[],"sources":["../src/utils/factory/hooks.ts"],"sourcesContent":["/**\n * Hooks 模块:分页 fetch 与统一 React Query hooks(稳定身份,可在业务 hook body 内直接调用)。\n */\nimport type {\n InfiniteData,\n QueryKey,\n UseInfiniteQueryOptions,\n UseInfiniteQueryResult,\n UseQueryOptions,\n UseQueryResult,\n UseSuspenseInfiniteQueryOptions,\n UseSuspenseInfiniteQueryResult,\n UseSuspenseQueryOptions,\n UseSuspenseQueryResult,\n} from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithNextCursor, ListDTOWithTotalNumber, OffsetLimitNumber, OffsetLimitString } from \"@/types/api\";\n\nimport { useMemo } from \"react\";\nimport { useInfiniteQuery, useQuery, useSuspenseInfiniteQuery, useSuspenseQuery } from \"@tanstack/react-query\";\n\ntype InfiniteListFilter = Partial<OffsetLimitNumber>;\n\ntype FetchNumberListParams<F extends InfiniteListFilter = InfiniteListFilter> = F & OffsetLimitNumber;\n\ntype FetchStringListParams<F extends object = Record<string, unknown>> = F & OffsetLimitString;\n\ntype MutationCtx = {\n prev?: unknown;\n};\n\ntype InfiniteQueryOptions<T> = Omit<UseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype StringInfiniteQueryOptions<T> = Omit<UseInfiniteQueryOptions<ListDTOWithNextCursor<T>, AxiosError, T[]>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype SuspenseInfiniteQueryOptions<T> = Omit<\n UseSuspenseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n> & {\n postProcess?: (data: T[]) => void;\n};\n\ntype InfiniteQueryOptionsUnion<T> = InfiniteQueryOptions<T> | SuspenseInfiniteQueryOptions<T>;\n\ntype SuspenseUnifiedQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\"> & {\n postProcess?: (data: T) => void;\n};\n\ntype NormalUnifiedQueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\"> & {\n postProcess?: (data: T) => void;\n};\n\ntype UnifiedQueryParams<T> = {\n options?: SuspenseUnifiedQueryOptions<T>;\n postProcess?: (data: T) => void;\n} & Record<string, unknown>;\n\ntype QueryOptions<T> = NormalUnifiedQueryOptions<T>;\ntype SuspenseQueryOptions<T> = SuspenseUnifiedQueryOptions<T>;\n\nconst DEFAULT_PAGE_SIZE = 20;\n\nexport type {\n FetchNumberListParams,\n FetchStringListParams,\n InfiniteListFilter,\n InfiniteQueryOptions,\n InfiniteQueryOptionsUnion,\n MutationCtx,\n NormalUnifiedQueryOptions,\n StringInfiniteQueryOptions,\n SuspenseInfiniteQueryOptions,\n SuspenseUnifiedQueryOptions,\n UnifiedQueryParams,\n};\n\nfunction resolvePageSize(filter?: InfiniteListFilter): number {\n return filter?.limit ?? DEFAULT_PAGE_SIZE;\n}\n\nfunction resolveBaseOffset(filter?: InfiniteListFilter): number {\n return filter?.offset ?? 0;\n}\n\nfunction makeCursorFetchFunction<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchFunc: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: number = 0, filter?: F): Promise<ListDTOWithTotalNumber<T>> => {\n const pageSize = resolvePageSize(filter);\n const baseOffset = resolveBaseOffset(filter);\n const payload = {\n ...filter,\n offset: baseOffset + pageParam * pageSize,\n limit: pageSize,\n } as F;\n const { items, total } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, total };\n };\n}\n\nfunction makeStringCursorFetchFunction<T, F extends Partial<Pick<OffsetLimitString, \"limit\">> & object = Partial<Pick<OffsetLimitString, \"limit\">>>(\n fetchFunc: (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: string = \"\", filter?: F): Promise<ListDTOWithNextCursor<T>> => {\n const pageSize = filter?.limit ?? DEFAULT_PAGE_SIZE;\n const payload = {\n ...filter,\n offset: pageParam,\n limit: pageSize,\n } as FetchStringListParams<F>;\n const { items, nextCursor } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, nextCursor };\n };\n}\n\nexport { makeCursorFetchFunction, makeStringCursorFetchFunction };\n\nfunction buildInfiniteCommonOptions<T, F extends InfiniteListFilter = InfiniteListFilter>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter: F,\n options: Omit<InfiniteQueryOptionsUnion<T>, \"postProcess\"> | undefined,\n) {\n const pageSize = resolvePageSize(filter);\n const baseOffset = resolveBaseOffset(filter);\n return {\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: [...queryKey, filter],\n queryFn: ({ pageParam }: { pageParam: number }) => fetchFunction(pageParam, filter),\n initialPageParam: 0,\n getNextPageParam: (lastPage: ListDTOWithTotalNumber<T>, allPages: ListDTOWithTotalNumber<T>[]) =>\n baseOffset + allPages.length * pageSize < lastPage.total ? allPages.length : undefined,\n select: (d: InfiniteData<ListDTOWithTotalNumber<T>>) => d.pages.flatMap((p) => p.items),\n retry: (failureCount: number, error: AxiosError) => {\n const transient = (error?.status && error.status >= 500) || error?.code === \"NETWORK_ERROR\";\n const retryMax = typeof options?.retry === \"number\" ? options.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(options as Partial<ReturnType<typeof useInfiniteQuery>>),\n };\n}\n\nfunction buildQueryCommonOptions<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter: F | undefined,\n options: QueryOptions<T> | SuspenseQueryOptions<T> | undefined,\n) {\n const { postProcess, ...queryOptions } = options ?? {};\n return {\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: async () => {\n const data = await fetchRemote(filter || ({} as F));\n postProcess?.(data);\n return data;\n },\n select: (data: T) => data,\n retry: (failureCount: number, error: AxiosError) => {\n const status = error?.status ?? error?.response?.status;\n const transient = (typeof status === \"number\" && status >= 500) || error?.code === \"NETWORK_ERROR\";\n const retryMax = typeof queryOptions?.retry === \"number\" ? queryOptions.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(queryOptions as object),\n };\n}\n\nfunction useUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter?: F,\n options?: QueryOptions<T>,\n): UseQueryResult<T, AxiosError> {\n return useQuery(buildQueryCommonOptions(fetchRemote, queryKey, filter, options));\n}\n\nfunction useUnifiedSuspenseQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n queryKey: QueryKey,\n filter?: F,\n options?: SuspenseQueryOptions<T>,\n): UseSuspenseQueryResult<T, AxiosError> {\n return useSuspenseQuery(buildQueryCommonOptions(fetchRemote, queryKey, filter, options));\n}\n\nfunction useUnifiedInfiniteQuery<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchRemote: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n queryKey: QueryKey,\n filter?: F,\n options?: InfiniteQueryOptions<T>,\n): UseInfiniteQueryResult<T[], AxiosError> {\n const resolvedFilter = (filter ?? {}) as F;\n const { postProcess, ...queryOptions } = options ?? {};\n const fetchFunction = useMemo(() => makeCursorFetchFunction(fetchRemote, postProcess), [fetchRemote, postProcess]);\n return useInfiniteQuery(buildInfiniteCommonOptions(queryKey, fetchFunction, resolvedFilter, queryOptions));\n}\n\nfunction useUnifiedSuspenseInfiniteQuery<T, F extends InfiniteListFilter = InfiniteListFilter>(\n fetchRemote: (params: F) => Promise<ListDTOWithTotalNumber<T>>,\n queryKey: QueryKey,\n filter?: F,\n options?: SuspenseInfiniteQueryOptions<T>,\n): UseSuspenseInfiniteQueryResult<T[], AxiosError> {\n const resolvedFilter = (filter ?? {}) as F;\n const { postProcess, ...queryOptions } = options ?? {};\n const fetchFunction = useMemo(() => makeCursorFetchFunction(fetchRemote, postProcess), [fetchRemote, postProcess]);\n return useSuspenseInfiniteQuery(buildInfiniteCommonOptions(queryKey, fetchFunction, resolvedFilter, queryOptions));\n}\n\nexport { useUnifiedInfiniteQuery, useUnifiedQuery, useUnifiedSuspenseInfiniteQuery, useUnifiedSuspenseQuery };\n"],"mappings":"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"}