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.
- package/README.md +67 -271
- package/dist/animations.cjs +1 -2
- package/dist/animations.mjs +9 -9
- package/dist/apis.cjs +0 -1
- package/dist/apis.cjs.map +1 -1
- package/dist/apis.mjs +0 -1
- package/dist/apis.mjs.map +1 -1
- package/dist/chunk-LucideIcon-Chc7x8mN.mjs +15 -0
- package/dist/chunk-LucideIcon-Chc7x8mN.mjs.map +1 -0
- package/dist/chunk-LucideIcon-CuoAB_OX.cjs +3 -0
- package/dist/chunk-LucideIcon-CuoAB_OX.cjs.map +1 -0
- package/dist/chunk-ModalProvider-BgLSJXhS.cjs +3 -0
- package/dist/chunk-ModalProvider-BgLSJXhS.cjs.map +1 -0
- package/dist/chunk-ModalProvider-CpzFzfWG.mjs +220 -0
- package/dist/chunk-ModalProvider-CpzFzfWG.mjs.map +1 -0
- package/dist/chunk-PixelBlast-BbJ2VmCL.cjs +190 -0
- package/dist/chunk-PixelBlast-BbJ2VmCL.cjs.map +1 -0
- package/dist/chunk-PixelBlast-BiBrG_NH.mjs +504 -0
- package/dist/chunk-PixelBlast-BiBrG_NH.mjs.map +1 -0
- package/dist/chunk-ThemeProvider-C4kxX2D0.cjs +3 -0
- package/dist/chunk-ThemeProvider-C4kxX2D0.cjs.map +1 -0
- package/dist/chunk-ThemeProvider-D0U8V6ky.mjs +28 -0
- package/dist/chunk-ThemeProvider-D0U8V6ky.mjs.map +1 -0
- package/dist/chunk-animations-CkOpTtX1.cjs +11 -0
- package/dist/chunk-animations-CkOpTtX1.cjs.map +1 -0
- package/dist/chunk-animations-DKyNVF-O.mjs +973 -0
- package/dist/chunk-animations-DKyNVF-O.mjs.map +1 -0
- package/dist/chunk-dashboard-BsGK96hu.mjs +104 -0
- package/dist/chunk-dashboard-BsGK96hu.mjs.map +1 -0
- package/dist/chunk-dashboard-CFT0HjSM.cjs +3 -0
- package/dist/chunk-dashboard-CFT0HjSM.cjs.map +1 -0
- package/dist/chunk-hooks-Cy_8mdDG.mjs +90 -0
- package/dist/chunk-hooks-Cy_8mdDG.mjs.map +1 -0
- package/dist/chunk-hooks-yVn82nBZ.cjs +3 -0
- package/dist/chunk-hooks-yVn82nBZ.cjs.map +1 -0
- package/dist/chunk-i18n-B8pZ_hpC.mjs +435 -0
- package/dist/chunk-i18n-B8pZ_hpC.mjs.map +1 -0
- package/dist/chunk-i18n-C06d89Eq.cjs +3 -0
- package/dist/chunk-i18n-C06d89Eq.cjs.map +1 -0
- package/dist/chunk-layout-BDpxG0Ca.mjs +27 -0
- package/dist/chunk-layout-BDpxG0Ca.mjs.map +1 -0
- package/dist/chunk-layout-DKCQHheg.cjs +3 -0
- package/dist/chunk-layout-DKCQHheg.cjs.map +1 -0
- package/dist/chunk-lucide-CrMbx2vC.cjs +3 -0
- package/dist/chunk-lucide-CrMbx2vC.cjs.map +1 -0
- package/dist/chunk-lucide-yNs0iz1-.mjs +158 -0
- package/dist/chunk-lucide-yNs0iz1-.mjs.map +1 -0
- package/dist/chunk-modal-C3LgRLur.cjs +3 -0
- package/dist/chunk-modal-C3LgRLur.cjs.map +1 -0
- package/dist/chunk-modal-D9vk2ENf.mjs +92 -0
- package/dist/chunk-modal-D9vk2ENf.mjs.map +1 -0
- package/dist/chunk-preference-BP-GO9Uk.cjs +3 -0
- package/dist/chunk-preference-BP-GO9Uk.cjs.map +1 -0
- package/dist/chunk-preference-BXXryZLY.cjs +3 -0
- package/dist/chunk-preference-BXXryZLY.cjs.map +1 -0
- package/dist/chunk-preference-Y15HwKd0.mjs +42 -0
- package/dist/chunk-preference-Y15HwKd0.mjs.map +1 -0
- package/dist/chunk-preference-x4EdmqU6.mjs +295 -0
- package/dist/chunk-preference-x4EdmqU6.mjs.map +1 -0
- package/dist/chunk-rolldown-runtime-Bvb_CV3F.cjs +1 -0
- package/dist/chunk-useLanguageLabel-38sEu2rP.cjs +3 -0
- package/dist/chunk-useLanguageLabel-38sEu2rP.cjs.map +1 -0
- package/dist/chunk-useLanguageLabel-BLdxHuep.mjs +38 -0
- package/dist/chunk-useLanguageLabel-BLdxHuep.mjs.map +1 -0
- package/dist/chunk-useLayout-CbUZVWpS.cjs +3 -0
- package/dist/chunk-useLayout-CbUZVWpS.cjs.map +1 -0
- package/dist/chunk-useLayout-CjXHRPLD.mjs +302 -0
- package/dist/chunk-useLayout-CjXHRPLD.mjs.map +1 -0
- package/dist/chunk-useTheme-C2Ip6OAs.mjs +34 -0
- package/dist/chunk-useTheme-C2Ip6OAs.mjs.map +1 -0
- package/dist/chunk-useTheme-DSps5NbC.cjs +3 -0
- package/dist/chunk-useTheme-DSps5NbC.cjs.map +1 -0
- package/dist/components.cjs +3 -3
- package/dist/components.cjs.map +1 -1
- package/dist/components.mjs +1122 -1472
- package/dist/components.mjs.map +1 -1
- package/dist/constants.cjs +0 -1
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.mjs +0 -1
- package/dist/constants.mjs.map +1 -1
- package/dist/enums.cjs +1 -0
- package/dist/enums.mjs +43 -0
- package/dist/events.cjs +0 -1
- package/dist/events.cjs.map +1 -1
- package/dist/events.mjs +0 -1
- package/dist/events.mjs.map +1 -1
- package/dist/hooks.cjs +1 -4
- package/dist/hooks.mjs +12 -104
- package/dist/icons.cjs +3 -2
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.mjs +19350 -73
- package/dist/icons.mjs.map +1 -0
- package/dist/languages.cjs +1 -2
- package/dist/languages.cjs.map +1 -1
- package/dist/languages.mjs +63 -76
- package/dist/languages.mjs.map +1 -1
- package/dist/layouts.cjs +2 -2
- package/dist/layouts.cjs.map +1 -1
- package/dist/layouts.mjs +787 -395
- package/dist/layouts.mjs.map +1 -1
- package/dist/navigations.cjs +0 -1
- package/dist/navigations.cjs.map +1 -1
- package/dist/navigations.mjs +0 -1
- package/dist/navigations.mjs.map +1 -1
- package/dist/pixel-blast.cjs +1 -191
- package/dist/pixel-blast.mjs +2 -503
- package/dist/providers.cjs +4 -0
- package/dist/providers.cjs.map +1 -0
- package/dist/providers.mjs +37 -0
- package/dist/providers.mjs.map +1 -0
- package/dist/services.cjs +0 -1
- package/dist/services.cjs.map +1 -1
- package/dist/services.mjs +0 -1
- package/dist/services.mjs.map +1 -1
- package/dist/src/designs/animations/index.d.ts +1 -0
- package/dist/src/designs/animations/index.d.ts.map +1 -1
- package/dist/src/designs/components/CardHeader.d.ts +9 -0
- package/dist/src/designs/components/CardHeader.d.ts.map +1 -0
- package/dist/src/designs/components/EmptyState/index.d.ts +10 -0
- package/dist/src/designs/components/EmptyState/index.d.ts.map +1 -0
- package/dist/src/designs/components/LayoutSwitcher/index.d.ts +1 -1
- package/dist/src/designs/components/LayoutSwitcher/index.d.ts.map +1 -1
- package/dist/src/designs/components/Logo/index.d.ts +15 -0
- package/dist/src/designs/components/Logo/index.d.ts.map +1 -0
- package/dist/src/designs/components/LucideIcon.d.ts +11 -0
- package/dist/src/designs/components/LucideIcon.d.ts.map +1 -0
- package/dist/src/designs/components/PageHeader/index.d.ts +11 -0
- package/dist/src/designs/components/PageHeader/index.d.ts.map +1 -0
- package/dist/src/designs/components/PreferencesPopover/index.d.ts +6 -0
- package/dist/src/designs/components/PreferencesPopover/index.d.ts.map +1 -0
- package/dist/src/designs/components/Suspense/index.d.ts +6 -60
- package/dist/src/designs/components/Suspense/index.d.ts.map +1 -1
- package/dist/src/designs/components/ThemeSettings/index.d.ts +2 -0
- package/dist/src/designs/components/ThemeSettings/index.d.ts.map +1 -0
- package/dist/src/designs/components/ThemeSwitcher/index.d.ts +1 -3
- package/dist/src/designs/components/ThemeSwitcher/index.d.ts.map +1 -1
- package/dist/src/designs/components/VirtuosoList.d.ts +37 -0
- package/dist/src/designs/components/VirtuosoList.d.ts.map +1 -0
- package/dist/src/designs/components/index.d.ts +19 -25
- package/dist/src/designs/components/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/Background/index.d.ts +1 -1
- package/dist/src/designs/layouts/components/Background/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/Header/index.d.ts +31 -3
- package/dist/src/designs/layouts/components/Header/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts +1 -1
- package/dist/src/designs/layouts/components/LayoutFrame/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/Main/index.d.ts +8 -0
- package/dist/src/designs/layouts/components/Main/index.d.ts.map +1 -0
- package/dist/src/designs/layouts/components/MainWrapper/index.d.ts +1 -1
- package/dist/src/designs/layouts/components/MainWrapper/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/PageFrame/index.d.ts +10 -0
- package/dist/src/designs/layouts/components/PageFrame/index.d.ts.map +1 -0
- package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts +1 -1
- package/dist/src/designs/layouts/components/SideHideLayout/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts +1 -1
- package/dist/src/designs/layouts/components/SideShowLayout/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/Sidebar/index.d.ts +74 -2
- package/dist/src/designs/layouts/components/Sidebar/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/components/Sidebar/menu.d.ts +9 -0
- package/dist/src/designs/layouts/components/Sidebar/menu.d.ts.map +1 -0
- package/dist/src/designs/layouts/components/UserTopBar/index.d.ts +18 -0
- package/dist/src/designs/layouts/components/UserTopBar/index.d.ts.map +1 -0
- package/dist/src/designs/layouts/components/index.d.ts +9 -1
- package/dist/src/designs/layouts/components/index.d.ts.map +1 -1
- package/dist/src/designs/layouts/index.d.ts +2 -0
- package/dist/src/designs/layouts/index.d.ts.map +1 -1
- package/dist/src/designs/providers/ModalProvider/components/Base.d.ts +6 -0
- package/dist/src/designs/providers/ModalProvider/components/Base.d.ts.map +1 -0
- package/dist/src/designs/providers/ModalProvider/components/Confirm.d.ts +6 -0
- package/dist/src/designs/providers/ModalProvider/components/Confirm.d.ts.map +1 -0
- package/dist/src/designs/providers/ModalProvider/components/Loading.d.ts +6 -0
- package/dist/src/designs/providers/ModalProvider/components/Loading.d.ts.map +1 -0
- package/dist/src/designs/providers/ModalProvider/index.d.ts +10 -0
- package/dist/src/designs/providers/ModalProvider/index.d.ts.map +1 -0
- package/dist/src/{preference/constants.d.ts → enums/dashboard.d.ts} +4 -8
- package/dist/src/enums/dashboard.d.ts.map +1 -0
- package/dist/src/enums/index.d.ts +4 -0
- package/dist/src/enums/index.d.ts.map +1 -0
- package/dist/src/enums/language.d.ts +13 -0
- package/dist/src/enums/language.d.ts.map +1 -0
- package/dist/src/enums/theme.d.ts +107 -0
- package/dist/src/enums/theme.d.ts.map +1 -0
- package/dist/src/hooks/index.d.ts +2 -4
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/preference.d.ts +21 -0
- package/dist/src/hooks/preference.d.ts.map +1 -0
- package/dist/src/icons/animated/accessibility-icon.d.ts +13 -0
- package/dist/src/icons/animated/accessibility-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/airplane-icon.d.ts +9 -0
- package/dist/src/icons/animated/airplane-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/alarm-clock-plus-icon.d.ts +11 -0
- package/dist/src/icons/animated/alarm-clock-plus-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/align-center-icon.d.ts +4 -0
- package/dist/src/icons/animated/align-center-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/align-vertical-space-around-icon.d.ts +4 -0
- package/dist/src/icons/animated/align-vertical-space-around-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/ambulance-icon.d.ts +4 -0
- package/dist/src/icons/animated/ambulance-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/ampersand-icon.d.ts +4 -0
- package/dist/src/icons/animated/ampersand-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/angry-icon.d.ts +4 -0
- package/dist/src/icons/animated/angry-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/annoyed-icon.d.ts +4 -0
- package/dist/src/icons/animated/annoyed-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/apple-brand-logo.d.ts +4 -0
- package/dist/src/icons/animated/apple-brand-logo.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-back-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-back-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-back-up-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-back-up-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-down-dash-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-down-dash-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-down-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-down-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-left-dash-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-left-dash-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-left-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-left-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-right-dash-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-right-dash-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-right-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-right-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-up-dash-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-up-dash-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-big-up-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-big-up-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-down-0-1-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-down-0-1-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-down-1-0-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-down-1-0-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-down-a-z-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-down-a-z-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-down-dashed-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-down-dashed-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-down-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-down-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-left-dashed-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-left-dashed-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-left-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-left-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-right-dashed-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-right-dashed-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-right-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-right-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-up-dashed-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-up-dashed-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/arrow-narrow-up-icon.d.ts +4 -0
- package/dist/src/icons/animated/arrow-narrow-up-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/at-sign-icon.d.ts +4 -0
- package/dist/src/icons/animated/at-sign-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/banana-icon.d.ts +4 -0
- package/dist/src/icons/animated/banana-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/battery-charging-icon.d.ts +4 -0
- package/dist/src/icons/animated/battery-charging-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/battery-icon.d.ts +4 -0
- package/dist/src/icons/animated/battery-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/battery-pause-icon.d.ts +4 -0
- package/dist/src/icons/animated/battery-pause-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/bell-off-icon.d.ts +4 -0
- package/dist/src/icons/animated/bell-off-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/bluetooth-connected-icon.d.ts +4 -0
- package/dist/src/icons/animated/bluetooth-connected-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/book-icon.d.ts +4 -0
- package/dist/src/icons/animated/book-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/bookmark-icon.d.ts +4 -0
- package/dist/src/icons/animated/bookmark-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brain-circuit-icon.d.ts +4 -0
- package/dist/src/icons/animated/brain-circuit-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-aistudio-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-aistudio-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-anthropic-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-anthropic-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-aws-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-aws-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-bags-fm-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-bags-fm-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-chrome-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-chrome-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-cursor-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-cursor-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-gemini-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-gemini-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-google-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-google-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-grok-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-grok-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-lmstudio-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-lmstudio-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-midjourney-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-midjourney-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-nextjs-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-nextjs-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-notion-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-notion-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-ollama-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-ollama-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-openai-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-openai-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-paypal-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-paypal-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-qwen-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-qwen-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-railway-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-railway-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-react-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-react-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-react-native-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-react-native-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-stripe-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-stripe-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-telegram-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-telegram-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-threads-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-threads-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-twitch-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-twitch-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-vercel-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-vercel-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-windows-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-windows-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-wordpress-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-wordpress-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-xai-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-xai-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brand-zoom-icon.d.ts +4 -0
- package/dist/src/icons/animated/brand-zoom-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/brightness-down-icon.d.ts +4 -0
- package/dist/src/icons/animated/brightness-down-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/bug-icon.d.ts +4 -0
- package/dist/src/icons/animated/bug-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/bulb-svg.d.ts +4 -0
- package/dist/src/icons/animated/bulb-svg.d.ts.map +1 -0
- package/dist/src/icons/animated/camera-icon.d.ts +4 -0
- package/dist/src/icons/animated/camera-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/camera-off-icon.d.ts +4 -0
- package/dist/src/icons/animated/camera-off-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/candy-cane-icon.d.ts +4 -0
- package/dist/src/icons/animated/candy-cane-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/cart-icon.d.ts +4 -0
- package/dist/src/icons/animated/cart-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/chart-bar-icon.d.ts +4 -0
- package/dist/src/icons/animated/chart-bar-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/chart-covariate-icon.d.ts +4 -0
- package/dist/src/icons/animated/chart-covariate-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/chart-histogram-icon.d.ts +4 -0
- package/dist/src/icons/animated/chart-histogram-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/chart-line-icon.d.ts +4 -0
- package/dist/src/icons/animated/chart-line-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/chart-pie-icon.d.ts +4 -0
- package/dist/src/icons/animated/chart-pie-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/checked-icon.d.ts +4 -0
- package/dist/src/icons/animated/checked-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/clock-icon.d.ts +4 -0
- package/dist/src/icons/animated/clock-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/cloud-1-icon.d.ts +4 -0
- package/dist/src/icons/animated/cloud-1-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/cloud-2-icon.d.ts +4 -0
- package/dist/src/icons/animated/cloud-2-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/cloud-3-icon.d.ts +4 -0
- package/dist/src/icons/animated/cloud-3-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/code-icon.d.ts +4 -0
- package/dist/src/icons/animated/code-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/code-xml-icon.d.ts +4 -0
- package/dist/src/icons/animated/code-xml-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/coffee-icon.d.ts +4 -0
- package/dist/src/icons/animated/coffee-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/coin-bitcoin-icon.d.ts +4 -0
- package/dist/src/icons/animated/coin-bitcoin-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/copy-icon.d.ts +4 -0
- package/dist/src/icons/animated/copy-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/copy-off-icon.d.ts +4 -0
- package/dist/src/icons/animated/copy-off-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/copyright-icon.d.ts +4 -0
- package/dist/src/icons/animated/copyright-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/cpu-icon.d.ts +4 -0
- package/dist/src/icons/animated/cpu-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/credit-card.d.ts +4 -0
- package/dist/src/icons/animated/credit-card.d.ts.map +1 -0
- package/dist/src/icons/animated/currency-bitcoin-icon.d.ts +4 -0
- package/dist/src/icons/animated/currency-bitcoin-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/currency-dollar-icon.d.ts +4 -0
- package/dist/src/icons/animated/currency-dollar-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/currency-ethereum-icon.d.ts +4 -0
- package/dist/src/icons/animated/currency-ethereum-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/currency-euro-icon.d.ts +4 -0
- package/dist/src/icons/animated/currency-euro-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/currency-rupee-icon.d.ts +4 -0
- package/dist/src/icons/animated/currency-rupee-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/device-airpods-icon.d.ts +4 -0
- package/dist/src/icons/animated/device-airpods-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/dialpad-icon.d.ts +4 -0
- package/dist/src/icons/animated/dialpad-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/dino-icon.d.ts +4 -0
- package/dist/src/icons/animated/dino-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/discord-icon.d.ts +4 -0
- package/dist/src/icons/animated/discord-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/docker-icon.d.ts +4 -0
- package/dist/src/icons/animated/docker-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/dots-horizontal-icon.d.ts +4 -0
- package/dist/src/icons/animated/dots-horizontal-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/dots-vertical-icon.d.ts +4 -0
- package/dist/src/icons/animated/dots-vertical-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/double-check-icon.d.ts +4 -0
- package/dist/src/icons/animated/double-check-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/down-chevron.d.ts +4 -0
- package/dist/src/icons/animated/down-chevron.d.ts.map +1 -0
- package/dist/src/icons/animated/download-icon.d.ts +4 -0
- package/dist/src/icons/animated/download-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/drum-icon.d.ts +4 -0
- package/dist/src/icons/animated/drum-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/expand-icon.d.ts +4 -0
- package/dist/src/icons/animated/expand-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/external-link-icon.d.ts +4 -0
- package/dist/src/icons/animated/external-link-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/eye-icon.d.ts +4 -0
- package/dist/src/icons/animated/eye-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/eye-off-icon.d.ts +4 -0
- package/dist/src/icons/animated/eye-off-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/facebook-icon.d.ts +4 -0
- package/dist/src/icons/animated/facebook-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/figma-icon.d.ts +4 -0
- package/dist/src/icons/animated/figma-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/file-description-icon.d.ts +4 -0
- package/dist/src/icons/animated/file-description-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/filled-bell-icon.d.ts +4 -0
- package/dist/src/icons/animated/filled-bell-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/filled-checked-icon.d.ts +4 -0
- package/dist/src/icons/animated/filled-checked-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/filter-icon.d.ts +4 -0
- package/dist/src/icons/animated/filter-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/flame-icon.d.ts +4 -0
- package/dist/src/icons/animated/flame-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/focus-icon.d.ts +4 -0
- package/dist/src/icons/animated/focus-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/gamepad-icon.d.ts +4 -0
- package/dist/src/icons/animated/gamepad-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/gauge-icon.d.ts +4 -0
- package/dist/src/icons/animated/gauge-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/gear-icon.d.ts +4 -0
- package/dist/src/icons/animated/gear-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/ghost-icon.d.ts +4 -0
- package/dist/src/icons/animated/ghost-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/github-copilot-icon.d.ts +4 -0
- package/dist/src/icons/animated/github-copilot-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/github-icon.d.ts +4 -0
- package/dist/src/icons/animated/github-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/gitlab-icon.d.ts +4 -0
- package/dist/src/icons/animated/gitlab-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/globe-icon.d.ts +4 -0
- package/dist/src/icons/animated/globe-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/gmail-icon.d.ts +4 -0
- package/dist/src/icons/animated/gmail-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/golang-icon.d.ts +4 -0
- package/dist/src/icons/animated/golang-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/hand-heart-icon.d.ts +4 -0
- package/dist/src/icons/animated/hand-heart-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/hashtag-icon.d.ts +4 -0
- package/dist/src/icons/animated/hashtag-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/heart-icon.d.ts +4 -0
- package/dist/src/icons/animated/heart-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/history-circle-icon.d.ts +4 -0
- package/dist/src/icons/animated/history-circle-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/home-icon.d.ts +4 -0
- package/dist/src/icons/animated/home-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/hotel-icon.d.ts +4 -0
- package/dist/src/icons/animated/hotel-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/index.d.ts +267 -0
- package/dist/src/icons/animated/index.d.ts.map +1 -0
- package/dist/src/icons/animated/info-circle-icon.d.ts +4 -0
- package/dist/src/icons/animated/info-circle-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/instagram-icon.d.ts +4 -0
- package/dist/src/icons/animated/instagram-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/javascript-icon.d.ts +4 -0
- package/dist/src/icons/animated/javascript-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/keyframes-icon.d.ts +4 -0
- package/dist/src/icons/animated/keyframes-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/layers-icon.d.ts +4 -0
- package/dist/src/icons/animated/layers-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/layout-bottombar-collapse-icon.d.ts +4 -0
- package/dist/src/icons/animated/layout-bottombar-collapse-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/layout-dashboard-icon.d.ts +4 -0
- package/dist/src/icons/animated/layout-dashboard-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/layout-sidebar-right-collapse-icon.d.ts +4 -0
- package/dist/src/icons/animated/layout-sidebar-right-collapse-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/layout-sidebar-right-icon.d.ts +4 -0
- package/dist/src/icons/animated/layout-sidebar-right-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-a-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-a-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-b-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-b-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-c-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-c-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-d-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-d-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-e-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-e-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-f-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-f-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-g-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-g-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-h-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-h-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-i-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-i-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-j-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-j-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-k-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-k-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-l-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-l-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-m-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-m-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-n-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-n-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-o-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-o-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-p-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-p-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-q-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-q-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-r-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-r-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-s-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-s-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-t-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-t-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-u-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-u-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-v-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-v-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-w-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-w-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-x-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-x-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-y-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-y-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/letter-z-icon.d.ts +4 -0
- package/dist/src/icons/animated/letter-z-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/library-icon.d.ts +4 -0
- package/dist/src/icons/animated/library-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/like-icon.d.ts +4 -0
- package/dist/src/icons/animated/like-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/link-icon.d.ts +4 -0
- package/dist/src/icons/animated/link-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/linkedin-icon.d.ts +4 -0
- package/dist/src/icons/animated/linkedin-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/locate-icon.d.ts +4 -0
- package/dist/src/icons/animated/locate-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/lock-icon.d.ts +4 -0
- package/dist/src/icons/animated/lock-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/logout-icon.d.ts +4 -0
- package/dist/src/icons/animated/logout-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/magnifier-icon.d.ts +4 -0
- package/dist/src/icons/animated/magnifier-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/mail-filled-icon.d.ts +4 -0
- package/dist/src/icons/animated/mail-filled-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/map-pin-icon.d.ts +4 -0
- package/dist/src/icons/animated/map-pin-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/meh-icon.d.ts +4 -0
- package/dist/src/icons/animated/meh-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/message-circle-icon.d.ts +4 -0
- package/dist/src/icons/animated/message-circle-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/moon-icon.d.ts +4 -0
- package/dist/src/icons/animated/moon-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/mouse-pointer-2-icon.d.ts +4 -0
- package/dist/src/icons/animated/mouse-pointer-2-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/mysql-icon.d.ts +4 -0
- package/dist/src/icons/animated/mysql-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/nodejs-icon.d.ts +4 -0
- package/dist/src/icons/animated/nodejs-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/paint-icon.d.ts +4 -0
- package/dist/src/icons/animated/paint-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/party-popper-icon.d.ts +4 -0
- package/dist/src/icons/animated/party-popper-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/passport-icon.d.ts +4 -0
- package/dist/src/icons/animated/passport-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/paw-print-icon.d.ts +4 -0
- package/dist/src/icons/animated/paw-print-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/pen-icon.d.ts +4 -0
- package/dist/src/icons/animated/pen-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/phone-volume.d.ts +4 -0
- package/dist/src/icons/animated/phone-volume.d.ts.map +1 -0
- package/dist/src/icons/animated/pinterest-icon.d.ts +4 -0
- package/dist/src/icons/animated/pinterest-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/player-icon.d.ts +4 -0
- package/dist/src/icons/animated/player-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/plug-connected-icon.d.ts +4 -0
- package/dist/src/icons/animated/plug-connected-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/plug-connected-x-icon.d.ts +4 -0
- package/dist/src/icons/animated/plug-connected-x-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/python-icon.d.ts +4 -0
- package/dist/src/icons/animated/python-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/qrcode-icon.d.ts +4 -0
- package/dist/src/icons/animated/qrcode-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/question-mark.d.ts +4 -0
- package/dist/src/icons/animated/question-mark.d.ts.map +1 -0
- package/dist/src/icons/animated/radio-icon.d.ts +4 -0
- package/dist/src/icons/animated/radio-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/rainbow-icon.d.ts +4 -0
- package/dist/src/icons/animated/rainbow-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/refresh-icon.d.ts +4 -0
- package/dist/src/icons/animated/refresh-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/right-chevron.d.ts +4 -0
- package/dist/src/icons/animated/right-chevron.d.ts.map +1 -0
- package/dist/src/icons/animated/rocket-icon.d.ts +4 -0
- package/dist/src/icons/animated/rocket-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/rosette-discount-check-icon.d.ts +4 -0
- package/dist/src/icons/animated/rosette-discount-check-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/rosette-discount-icon.d.ts +4 -0
- package/dist/src/icons/animated/rosette-discount-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/router-icon.d.ts +4 -0
- package/dist/src/icons/animated/router-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/satellite-dish-icon.d.ts +4 -0
- package/dist/src/icons/animated/satellite-dish-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/save-icon.d.ts +4 -0
- package/dist/src/icons/animated/save-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/scan-barcode-icon.d.ts +4 -0
- package/dist/src/icons/animated/scan-barcode-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/scan-heart-icon.d.ts +4 -0
- package/dist/src/icons/animated/scan-heart-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/send-horizontal-icon.d.ts +4 -0
- package/dist/src/icons/animated/send-horizontal-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/send-icon.d.ts +4 -0
- package/dist/src/icons/animated/send-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/shield-check.d.ts +4 -0
- package/dist/src/icons/animated/shield-check.d.ts.map +1 -0
- package/dist/src/icons/animated/shopping-cart-icon.d.ts +4 -0
- package/dist/src/icons/animated/shopping-cart-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/simple-checked-icon.d.ts +4 -0
- package/dist/src/icons/animated/simple-checked-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/skull-emoji.d.ts +4 -0
- package/dist/src/icons/animated/skull-emoji.d.ts.map +1 -0
- package/dist/src/icons/animated/slack-icon.d.ts +4 -0
- package/dist/src/icons/animated/slack-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/sliders-horizontal-icon.d.ts +4 -0
- package/dist/src/icons/animated/sliders-horizontal-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/snapchat-icon.d.ts +4 -0
- package/dist/src/icons/animated/snapchat-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/soup-icon.d.ts +4 -0
- package/dist/src/icons/animated/soup-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/sparkles-icon.d.ts +4 -0
- package/dist/src/icons/animated/sparkles-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/spotify-icon.d.ts +4 -0
- package/dist/src/icons/animated/spotify-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/stack-3-icon.d.ts +4 -0
- package/dist/src/icons/animated/stack-3-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/stack-icon.d.ts +4 -0
- package/dist/src/icons/animated/stack-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/star-icon.d.ts +4 -0
- package/dist/src/icons/animated/star-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/subscript-icon.d.ts +4 -0
- package/dist/src/icons/animated/subscript-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/target-icon.d.ts +4 -0
- package/dist/src/icons/animated/target-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/telephone-icon.d.ts +4 -0
- package/dist/src/icons/animated/telephone-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/terminal-icon.d.ts +4 -0
- package/dist/src/icons/animated/terminal-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/toggle-icon.d.ts +4 -0
- package/dist/src/icons/animated/toggle-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/trash-icon.d.ts +9 -0
- package/dist/src/icons/animated/trash-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/travel-bag.d.ts +4 -0
- package/dist/src/icons/animated/travel-bag.d.ts.map +1 -0
- package/dist/src/icons/animated/triangle-alert-icon.d.ts +4 -0
- package/dist/src/icons/animated/triangle-alert-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/trophy-icon.d.ts +4 -0
- package/dist/src/icons/animated/trophy-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/truck-electric-icon.d.ts +4 -0
- package/dist/src/icons/animated/truck-electric-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/twitter-icon.d.ts +4 -0
- package/dist/src/icons/animated/twitter-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/twitter-x-icon.d.ts +4 -0
- package/dist/src/icons/animated/twitter-x-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/types.d.ts +33 -0
- package/dist/src/icons/animated/types.d.ts.map +1 -0
- package/dist/src/icons/animated/typescript-icon.d.ts +4 -0
- package/dist/src/icons/animated/typescript-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/unlink-icon.d.ts +4 -0
- package/dist/src/icons/animated/unlink-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/unordered-list-icon.d.ts +4 -0
- package/dist/src/icons/animated/unordered-list-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/upload-icon.d.ts +4 -0
- package/dist/src/icons/animated/upload-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/useAnimatedIconTrigger.d.ts +8 -0
- package/dist/src/icons/animated/useAnimatedIconTrigger.d.ts.map +1 -0
- package/dist/src/icons/animated/user-check-icon.d.ts +4 -0
- package/dist/src/icons/animated/user-check-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/user-icon.d.ts +4 -0
- package/dist/src/icons/animated/user-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/user-plus-icon.d.ts +4 -0
- package/dist/src/icons/animated/user-plus-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/users-group-icon.d.ts +4 -0
- package/dist/src/icons/animated/users-group-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/users-icon.d.ts +4 -0
- package/dist/src/icons/animated/users-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/vinyl-icon.d.ts +4 -0
- package/dist/src/icons/animated/vinyl-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/volume-2-icon.d.ts +4 -0
- package/dist/src/icons/animated/volume-2-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/volume-x-icon.d.ts +4 -0
- package/dist/src/icons/animated/volume-x-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/wallet-icon.d.ts +4 -0
- package/dist/src/icons/animated/wallet-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/washing-machine-icon.d.ts +4 -0
- package/dist/src/icons/animated/washing-machine-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/whatsapp-icon.d.ts +4 -0
- package/dist/src/icons/animated/whatsapp-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/wifi-icon.d.ts +4 -0
- package/dist/src/icons/animated/wifi-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/wifi-off-icon.d.ts +4 -0
- package/dist/src/icons/animated/wifi-off-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/world-icon.d.ts +4 -0
- package/dist/src/icons/animated/world-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/x-icon.d.ts +4 -0
- package/dist/src/icons/animated/x-icon.d.ts.map +1 -0
- package/dist/src/icons/animated/youtube-icon.d.ts +4 -0
- package/dist/src/icons/animated/youtube-icon.d.ts.map +1 -0
- package/dist/src/icons/index.d.ts +1 -0
- package/dist/src/icons/index.d.ts.map +1 -1
- package/dist/src/icons/lucide.d.ts +1 -1
- package/dist/src/icons/lucide.d.ts.map +1 -1
- package/dist/src/languages/hooks/index.d.ts +1 -1
- package/dist/src/languages/hooks/index.d.ts.map +1 -1
- package/dist/src/languages/hooks/useLanguageLabel.d.ts +8 -7
- package/dist/src/languages/hooks/useLanguageLabel.d.ts.map +1 -1
- package/dist/src/languages/hooks/usePreferenceLabel.d.ts +1 -1
- package/dist/src/languages/hooks/usePreferenceLabel.d.ts.map +1 -1
- package/dist/src/languages/hooks/useThemeLabel.d.ts +4 -5
- package/dist/src/languages/hooks/useThemeLabel.d.ts.map +1 -1
- package/dist/src/languages/index.d.ts +0 -2
- package/dist/src/languages/index.d.ts.map +1 -1
- package/dist/src/languages/languages/i18n.d.ts +4 -7
- package/dist/src/languages/languages/i18n.d.ts.map +1 -1
- package/dist/src/languages/languages/i18nResources.d.ts +1 -1
- package/dist/src/languages/languages/i18nResources.d.ts.map +1 -1
- package/dist/src/languages/resources/index.d.ts +2 -2
- package/dist/src/languages/types/components.d.ts +1 -24
- package/dist/src/languages/types/components.d.ts.map +1 -1
- package/dist/src/languages/types/i18n.d.ts +1 -4
- package/dist/src/languages/types/i18n.d.ts.map +1 -1
- package/dist/src/languages/types/language.d.ts +2 -11
- package/dist/src/languages/types/language.d.ts.map +1 -1
- package/dist/src/languages/utils/getLocalLanguage.d.ts +1 -1
- package/dist/src/languages/utils/getLocalLanguage.d.ts.map +1 -1
- package/dist/src/languages/utils/languageStorage.d.ts +2 -3
- package/dist/src/languages/utils/languageStorage.d.ts.map +1 -1
- package/dist/src/providers/LanguageProvider/index.d.ts +19 -0
- package/dist/src/providers/LanguageProvider/index.d.ts.map +1 -0
- package/dist/src/providers/ThemeProvider/index.d.ts +17 -0
- package/dist/src/providers/ThemeProvider/index.d.ts.map +1 -0
- package/dist/src/providers/index.d.ts +7 -0
- package/dist/src/providers/index.d.ts.map +1 -0
- package/dist/src/stores/index.d.ts +4 -0
- package/dist/src/stores/index.d.ts.map +1 -1
- package/dist/src/stores/layout.d.ts +41 -0
- package/dist/src/stores/layout.d.ts.map +1 -0
- package/dist/src/stores/makeStore.d.ts +1 -1
- package/dist/src/stores/modal.d.ts +67 -0
- package/dist/src/stores/modal.d.ts.map +1 -0
- package/dist/src/stores/preference.d.ts +52 -0
- package/dist/src/stores/preference.d.ts.map +1 -0
- package/dist/src/themes/fonts.d.ts +21 -0
- package/dist/src/themes/fonts.d.ts.map +1 -0
- package/dist/src/themes/hooks/index.d.ts +1 -3
- package/dist/src/themes/hooks/index.d.ts.map +1 -1
- package/dist/src/themes/hooks/useTheme.d.ts +25 -9
- package/dist/src/themes/hooks/useTheme.d.ts.map +1 -1
- package/dist/src/themes/index.d.ts +3 -4
- package/dist/src/themes/index.d.ts.map +1 -1
- package/dist/src/themes/radix/index.d.ts +2 -0
- package/dist/src/themes/radix/index.d.ts.map +1 -0
- package/dist/src/themes/radix/mappings.d.ts +39 -0
- package/dist/src/themes/radix/mappings.d.ts.map +1 -0
- package/dist/src/themes/types/components.d.ts +1 -24
- package/dist/src/themes/types/components.d.ts.map +1 -1
- package/dist/src/themes/types/context.d.ts +6 -12
- package/dist/src/themes/types/context.d.ts.map +1 -1
- package/dist/src/themes/types/index.d.ts +1 -6
- package/dist/src/themes/types/index.d.ts.map +1 -1
- package/dist/src/themes/types/theme.d.ts +15 -26
- package/dist/src/themes/types/theme.d.ts.map +1 -1
- package/dist/src/utils/factory/hooks.d.ts +44 -0
- package/dist/src/utils/factory/hooks.d.ts.map +1 -0
- package/dist/src/utils/factory/index.d.ts +2 -0
- package/dist/src/utils/factory/index.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/safe.d.ts +4 -0
- package/dist/src/utils/safe.d.ts.map +1 -1
- package/dist/stores.cjs +1 -4
- package/dist/stores.mjs +32 -164
- package/dist/themes.cjs +2 -4
- package/dist/themes.mjs +27 -1473
- package/dist/types.cjs +0 -1
- package/dist/types.mjs +0 -1
- package/dist/utils.cjs +1 -2
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.mjs +163 -181
- package/dist/utils.mjs.map +1 -1
- package/package.json +101 -43
- package/dist/chunk-BounceLoading-C-gq-XVr.mjs +0 -241
- package/dist/chunk-BounceLoading-C-gq-XVr.mjs.map +0 -1
- package/dist/chunk-BounceLoading-CkxvzNz8.cjs +0 -11
- package/dist/chunk-BounceLoading-CkxvzNz8.cjs.map +0 -1
- package/dist/chunk-animations-CiJbVYGC.mjs +0 -741
- package/dist/chunk-animations-CiJbVYGC.mjs.map +0 -1
- package/dist/chunk-animations-i85rn79V.cjs +0 -3
- package/dist/chunk-animations-i85rn79V.cjs.map +0 -1
- package/dist/chunk-chunk-D-Fg7nx1.cjs +0 -1
- package/dist/chunk-i18n-2-xL4pEi.cjs +0 -3
- package/dist/chunk-i18n-2-xL4pEi.cjs.map +0 -1
- package/dist/chunk-i18n-DgaoEbGL.mjs +0 -214
- package/dist/chunk-i18n-DgaoEbGL.mjs.map +0 -1
- package/dist/chunk-language-2r4uKROB.cjs +0 -3
- package/dist/chunk-language-2r4uKROB.cjs.map +0 -1
- package/dist/chunk-language-JRs5UIa2.mjs +0 -11
- package/dist/chunk-language-JRs5UIa2.mjs.map +0 -1
- package/dist/chunk-layout-BEAgFhif.mjs +0 -11
- package/dist/chunk-layout-BEAgFhif.mjs.map +0 -1
- package/dist/chunk-layout-mMQXuBLE.cjs +0 -3
- package/dist/chunk-layout-mMQXuBLE.cjs.map +0 -1
- package/dist/chunk-lucide-B99NZWfa.mjs +0 -158
- package/dist/chunk-lucide-B99NZWfa.mjs.map +0 -1
- package/dist/chunk-lucide-XL6d5__j.cjs +0 -3
- package/dist/chunk-lucide-XL6d5__j.cjs.map +0 -1
- package/dist/chunk-preference-DMhhY1Pl.mjs +0 -60
- package/dist/chunk-preference-DMhhY1Pl.mjs.map +0 -1
- package/dist/chunk-preference-DbNgeGhx.cjs +0 -3
- package/dist/chunk-preference-DbNgeGhx.cjs.map +0 -1
- package/dist/chunk-theme-CINVDd47.mjs +0 -17
- package/dist/chunk-theme-CINVDd47.mjs.map +0 -1
- package/dist/chunk-theme-D49XQfXe.cjs +0 -3
- package/dist/chunk-theme-D49XQfXe.cjs.map +0 -1
- package/dist/chunk-useLayout-BAIFfydj.cjs +0 -3
- package/dist/chunk-useLayout-BAIFfydj.cjs.map +0 -1
- package/dist/chunk-useLayout-BXsJlpcb.mjs +0 -12
- package/dist/chunk-useLayout-BXsJlpcb.mjs.map +0 -1
- package/dist/chunk-useTheme-BY1_pW9y.mjs +0 -13
- package/dist/chunk-useTheme-BY1_pW9y.mjs.map +0 -1
- package/dist/chunk-useTheme-Tw_7_cQf.cjs +0 -3
- package/dist/chunk-useTheme-Tw_7_cQf.cjs.map +0 -1
- package/dist/hooks.cjs.map +0 -1
- package/dist/hooks.mjs.map +0 -1
- package/dist/pixel-blast.cjs.map +0 -1
- package/dist/pixel-blast.mjs.map +0 -1
- package/dist/preference.cjs +0 -2
- package/dist/preference.mjs +0 -10
- package/dist/src/designs/components/Button/index.d.ts +0 -32
- package/dist/src/designs/components/Button/index.d.ts.map +0 -1
- package/dist/src/designs/components/Dropdown/index.d.ts +0 -25
- package/dist/src/designs/components/Dropdown/index.d.ts.map +0 -1
- package/dist/src/designs/components/Input/index.d.ts +0 -35
- package/dist/src/designs/components/Input/index.d.ts.map +0 -1
- package/dist/src/designs/components/KeyValueEditor/index.d.ts +0 -44
- package/dist/src/designs/components/KeyValueEditor/index.d.ts.map +0 -1
- package/dist/src/designs/components/SearchInput/index.d.ts +0 -15
- package/dist/src/designs/components/SearchInput/index.d.ts.map +0 -1
- package/dist/src/designs/components/ShowFilter/index.d.ts +0 -40
- package/dist/src/designs/components/ShowFilter/index.d.ts.map +0 -1
- package/dist/src/designs/components/SlideDownSwitcher/index.d.ts +0 -17
- package/dist/src/designs/components/SlideDownSwitcher/index.d.ts.map +0 -1
- package/dist/src/designs/components/Slider/index.d.ts +0 -39
- package/dist/src/designs/components/Slider/index.d.ts.map +0 -1
- package/dist/src/designs/components/Textarea/index.d.ts +0 -33
- package/dist/src/designs/components/Textarea/index.d.ts.map +0 -1
- package/dist/src/hooks/makeCursorFetchFunction.d.ts +0 -85
- package/dist/src/hooks/makeCursorFetchFunction.d.ts.map +0 -1
- package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts +0 -125
- package/dist/src/hooks/makeUnifiedInfiniteQuery.d.ts.map +0 -1
- package/dist/src/hooks/makeUnifiedQuery.d.ts +0 -20
- package/dist/src/hooks/makeUnifiedQuery.d.ts.map +0 -1
- package/dist/src/hooks/type.d.ts +0 -41
- package/dist/src/hooks/type.d.ts.map +0 -1
- package/dist/src/languages/providers/index.d.ts +0 -8
- package/dist/src/languages/providers/index.d.ts.map +0 -1
- package/dist/src/preference/constants.d.ts.map +0 -1
- package/dist/src/preference/core.d.ts +0 -12
- package/dist/src/preference/core.d.ts.map +0 -1
- package/dist/src/preference/index.d.ts +0 -27
- package/dist/src/preference/index.d.ts.map +0 -1
- package/dist/src/preference/nfx_slice.d.ts +0 -24
- package/dist/src/preference/nfx_slice.d.ts.map +0 -1
- package/dist/src/preference/types.d.ts +0 -28
- package/dist/src/preference/types.d.ts.map +0 -1
- package/dist/src/themes/hooks/useBaseVariables.d.ts +0 -8
- package/dist/src/themes/hooks/useBaseVariables.d.ts.map +0 -1
- package/dist/src/themes/hooks/useThemeVariables.d.ts +0 -11
- package/dist/src/themes/hooks/useThemeVariables.d.ts.map +0 -1
- package/dist/src/themes/hooks/useVariables.d.ts +0 -8
- package/dist/src/themes/hooks/useVariables.d.ts.map +0 -1
- package/dist/src/themes/providers/index.d.ts +0 -8
- package/dist/src/themes/providers/index.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/android.d.ts +0 -5
- package/dist/src/themes/themes/bases/android.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/default.d.ts +0 -6
- package/dist/src/themes/themes/bases/default.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/index.d.ts +0 -9
- package/dist/src/themes/themes/bases/index.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/ios.d.ts +0 -5
- package/dist/src/themes/themes/bases/ios.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/linux.d.ts +0 -5
- package/dist/src/themes/themes/bases/linux.d.ts.map +0 -1
- package/dist/src/themes/themes/bases/windows.d.ts +0 -5
- package/dist/src/themes/themes/bases/windows.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/coffee.d.ts +0 -8
- package/dist/src/themes/themes/colors/coffee.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/corporate.d.ts +0 -8
- package/dist/src/themes/themes/colors/corporate.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/cosmic.d.ts +0 -8
- package/dist/src/themes/themes/colors/cosmic.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/dark.d.ts +0 -8
- package/dist/src/themes/themes/colors/dark.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/default.d.ts +0 -8
- package/dist/src/themes/themes/colors/default.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/forest.d.ts +0 -8
- package/dist/src/themes/themes/colors/forest.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/index.d.ts +0 -14
- package/dist/src/themes/themes/colors/index.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/light.d.ts +0 -8
- package/dist/src/themes/themes/colors/light.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/wheat.d.ts +0 -8
- package/dist/src/themes/themes/colors/wheat.d.ts.map +0 -1
- package/dist/src/themes/themes/colors/wine.d.ts +0 -8
- package/dist/src/themes/themes/colors/wine.d.ts.map +0 -1
- package/dist/src/themes/themes/index.d.ts +0 -3
- package/dist/src/themes/themes/index.d.ts.map +0 -1
- package/dist/src/themes/utils/index.d.ts +0 -5
- package/dist/src/themes/utils/index.d.ts.map +0 -1
- package/dist/src/themes/utils/themeStorage.d.ts +0 -12
- package/dist/src/themes/utils/themeStorage.d.ts.map +0 -1
- package/dist/stores.cjs.map +0 -1
- package/dist/stores.mjs.map +0 -1
- package/dist/themes.cjs.map +0 -1
- package/dist/themes.mjs.map +0 -1
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
var A = /* @__PURE__ */ (function(r) {
|
|
2
|
-
return r.EN = "en", r.ZH = "zh", r.FR = "fr", r;
|
|
3
|
-
})(A || {}), a = "zh", G = Object.values(A), s = "language-storage";
|
|
4
|
-
export {
|
|
5
|
-
A as i,
|
|
6
|
-
s as n,
|
|
7
|
-
G as r,
|
|
8
|
-
a as t
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=chunk-language-JRs5UIa2.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-language-JRs5UIa2.mjs","names":[],"sources":["../src/languages/types/language.ts"],"sourcesContent":["/**\n * 语言枚举与常量,不引用任何 JSON,供需要轻量引用的模块使用。\n * Language enum and constants; no JSON deps for lightweight usage.\n */\nenum LanguageEnum {\n EN = \"en\",\n ZH = \"zh\",\n FR = \"fr\",\n}\n\nconst DEFAULT_LANGUAGE = LanguageEnum.ZH;\nconst LANGUAGE_VALUES = Object.values(LanguageEnum);\nconst LANGUAGE_STORAGE_KEY = \"language-storage\";\n\nexport { LanguageEnum, DEFAULT_LANGUAGE, LANGUAGE_VALUES, LANGUAGE_STORAGE_KEY };\n"],"mappings":"AAIA,IAAK,IAAL,0BAAA,GAAA;AACE,SAAA,EAAA,KAAA,MACA,EAAA,KAAA,MACA,EAAA,KAAA;AACF,GAJK,KAAA,CAAA,CAIL,GAEM,IAAA,MACA,IAAkB,OAAO,OAAO,CAAY,GAC5C,IAAuB"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
var r = /* @__PURE__ */ (function(a) {
|
|
2
|
-
return a.SHOW = "show", a.HIDE = "hide", a;
|
|
3
|
-
})(r || {}), s = "show", O = Object.values(r), t = "layout-storage";
|
|
4
|
-
export {
|
|
5
|
-
r as i,
|
|
6
|
-
O as n,
|
|
7
|
-
t as r,
|
|
8
|
-
s as t
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
//# sourceMappingURL=chunk-layout-BEAgFhif.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-layout-BEAgFhif.mjs","names":[],"sources":["../src/designs/layouts/types/layout.ts"],"sourcesContent":["/**\n * 布局模式枚举与常量。Layout mode enum and constants.\n */\nenum LayoutModeEnum {\n SHOW = \"show\",\n HIDE = \"hide\",\n}\n\nconst DEFAULT_LAYOUT_MODE = LayoutModeEnum.SHOW;\nconst LAYOUT_MODE_VALUES = Object.values(LayoutModeEnum);\nconst LAYOUT_STORAGE_KEY = \"layout-storage\";\n\nexport { LayoutModeEnum, DEFAULT_LAYOUT_MODE, LAYOUT_MODE_VALUES, LAYOUT_STORAGE_KEY };\n"],"mappings":"AAGA,IAAK,IAAL,0BAAA,GAAA;AACE,SAAA,EAAA,OAAA,QACA,EAAA,OAAA;AACF,GAHK,KAAA,CAAA,CAGL,GAEM,IAAA,QACA,IAAqB,OAAO,OAAO,CAAc,GACjD,IAAqB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var r=(function(e){return e.SHOW="show",e.HIDE="hide",e})(r||{}),t="show",n=Object.values(r),u="layout-storage";Object.defineProperty(exports,"DEFAULT_LAYOUT_MODE",{enumerable:!0,get:function(){return t}});Object.defineProperty(exports,"LAYOUT_MODE_VALUES",{enumerable:!0,get:function(){return n}});Object.defineProperty(exports,"LAYOUT_STORAGE_KEY",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"LayoutModeEnum",{enumerable:!0,get:function(){return r}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-layout-mMQXuBLE.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-layout-mMQXuBLE.cjs","names":[],"sources":["../src/designs/layouts/types/layout.ts"],"sourcesContent":["/**\n * 布局模式枚举与常量。Layout mode enum and constants.\n */\nenum LayoutModeEnum {\n SHOW = \"show\",\n HIDE = \"hide\",\n}\n\nconst DEFAULT_LAYOUT_MODE = LayoutModeEnum.SHOW;\nconst LAYOUT_MODE_VALUES = Object.values(LayoutModeEnum);\nconst LAYOUT_STORAGE_KEY = \"layout-storage\";\n\nexport { LayoutModeEnum, DEFAULT_LAYOUT_MODE, LAYOUT_MODE_VALUES, LAYOUT_STORAGE_KEY };\n"],"mappings":"AAGA,IAAK,GAAL,SAAA,EAAA,CACE,OAAA,EAAA,KAAA,OACA,EAAA,KAAA,QACF,GAHK,GAAA,CAAA,CAGL,EAEM,EAAA,OACA,EAAqB,OAAO,OAAO,CAAc,EACjD,EAAqB"}
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import { AlertCircle as t, ArrowLeft as l, ArrowRight as i, Ban as n, Bell as d, Box as C, Briefcase as c, Calendar as h, Camera as L, Check as g, CheckCircle as u, ChevronDown as f, ChevronLeft as p, ChevronRight as U, ChevronUp as k, Clock as y, Coffee as v, CreditCard as P, DollarSign as F, Edit as S, ExternalLink as T, Eye as m, EyeOff as x, FileText as B, Filter as E, FolderOpen as G, FolderPlus as R, FolderTree as A, Folders as M, Globe as O, GraduationCap as w, GripVertical as H, Hash as X, History as _, Home as b, Image as D, Info as I, Languages as K, Layers as V, LayoutGrid as W, LayoutList as j, Leaf as q, List as z, Loader as J, Loader2 as N, Lock as Q, LockKeyhole as Y, LogOut as Z, Mail as $, Menu as aa, MessageCircle as ea, Package as sa, Pencil as ra, Phone as oa, Plus as ta, Search as la, Settings as ia, Shield as na, Tag as da, Trash2 as Ca, TrendingUp as ca, Upload as ha, User as La, UserCheck as ga, UserPlus as ua, UserRound as fa, UserRoundSearch as pa, UserX as Ua, Wand2 as ka, X as ya, XCircle as va } from "lucide-react";
|
|
2
|
-
var r = Object.defineProperty, Pa = (e, o) => {
|
|
3
|
-
let a = {};
|
|
4
|
-
for (var s in e)
|
|
5
|
-
r(a, s, {
|
|
6
|
-
get: e[s],
|
|
7
|
-
enumerable: !0
|
|
8
|
-
});
|
|
9
|
-
return o || r(a, Symbol.toStringTag, { value: "Module" }), a;
|
|
10
|
-
}, Sa = /* @__PURE__ */ Pa({
|
|
11
|
-
AlertCircle: () => t,
|
|
12
|
-
ArrowLeft: () => l,
|
|
13
|
-
ArrowRight: () => i,
|
|
14
|
-
Ban: () => n,
|
|
15
|
-
Bell: () => d,
|
|
16
|
-
Box: () => C,
|
|
17
|
-
Briefcase: () => c,
|
|
18
|
-
Calendar: () => h,
|
|
19
|
-
Camera: () => L,
|
|
20
|
-
Check: () => g,
|
|
21
|
-
CheckCircle: () => u,
|
|
22
|
-
ChevronDown: () => f,
|
|
23
|
-
ChevronLeft: () => p,
|
|
24
|
-
ChevronRight: () => U,
|
|
25
|
-
ChevronUp: () => k,
|
|
26
|
-
Clock: () => y,
|
|
27
|
-
Coffee: () => v,
|
|
28
|
-
CreditCard: () => P,
|
|
29
|
-
DollarSign: () => F,
|
|
30
|
-
Edit: () => S,
|
|
31
|
-
ExternalLink: () => T,
|
|
32
|
-
Eye: () => m,
|
|
33
|
-
EyeOff: () => x,
|
|
34
|
-
FileText: () => B,
|
|
35
|
-
Filter: () => E,
|
|
36
|
-
FolderOpen: () => G,
|
|
37
|
-
FolderPlus: () => R,
|
|
38
|
-
FolderTree: () => A,
|
|
39
|
-
Folders: () => M,
|
|
40
|
-
Globe: () => O,
|
|
41
|
-
GraduationCap: () => w,
|
|
42
|
-
GripVertical: () => H,
|
|
43
|
-
Hash: () => X,
|
|
44
|
-
History: () => _,
|
|
45
|
-
Home: () => b,
|
|
46
|
-
Image: () => D,
|
|
47
|
-
Info: () => I,
|
|
48
|
-
Languages: () => K,
|
|
49
|
-
Layers: () => V,
|
|
50
|
-
LayoutGrid: () => W,
|
|
51
|
-
LayoutList: () => j,
|
|
52
|
-
Leaf: () => q,
|
|
53
|
-
List: () => z,
|
|
54
|
-
Loader: () => J,
|
|
55
|
-
Loader2: () => N,
|
|
56
|
-
Lock: () => Q,
|
|
57
|
-
LockKeyhole: () => Y,
|
|
58
|
-
LogOut: () => Z,
|
|
59
|
-
Mail: () => $,
|
|
60
|
-
Menu: () => aa,
|
|
61
|
-
MessageCircle: () => ea,
|
|
62
|
-
Package: () => sa,
|
|
63
|
-
Pencil: () => ra,
|
|
64
|
-
Phone: () => oa,
|
|
65
|
-
Plus: () => ta,
|
|
66
|
-
Search: () => la,
|
|
67
|
-
Settings: () => ia,
|
|
68
|
-
Shield: () => na,
|
|
69
|
-
Tag: () => da,
|
|
70
|
-
Trash2: () => Ca,
|
|
71
|
-
TrendingUp: () => ca,
|
|
72
|
-
Upload: () => ha,
|
|
73
|
-
User: () => La,
|
|
74
|
-
UserCheck: () => ga,
|
|
75
|
-
UserPlus: () => ua,
|
|
76
|
-
UserRound: () => fa,
|
|
77
|
-
UserRoundSearch: () => pa,
|
|
78
|
-
UserX: () => Ua,
|
|
79
|
-
Wand2: () => ka,
|
|
80
|
-
X: () => ya,
|
|
81
|
-
XCircle: () => va
|
|
82
|
-
});
|
|
83
|
-
export {
|
|
84
|
-
ra as $,
|
|
85
|
-
O as A,
|
|
86
|
-
W as B,
|
|
87
|
-
x as C,
|
|
88
|
-
R as D,
|
|
89
|
-
G as E,
|
|
90
|
-
b as F,
|
|
91
|
-
N as G,
|
|
92
|
-
q as H,
|
|
93
|
-
D as I,
|
|
94
|
-
Z as J,
|
|
95
|
-
Q as K,
|
|
96
|
-
I as L,
|
|
97
|
-
H as M,
|
|
98
|
-
X as N,
|
|
99
|
-
A as O,
|
|
100
|
-
_ as P,
|
|
101
|
-
sa as Q,
|
|
102
|
-
K as R,
|
|
103
|
-
m as S,
|
|
104
|
-
E as T,
|
|
105
|
-
z as U,
|
|
106
|
-
j as V,
|
|
107
|
-
J as W,
|
|
108
|
-
aa as X,
|
|
109
|
-
$ as Y,
|
|
110
|
-
ea as Z,
|
|
111
|
-
v as _,
|
|
112
|
-
va as _t,
|
|
113
|
-
d as a,
|
|
114
|
-
da as at,
|
|
115
|
-
S as b,
|
|
116
|
-
h as c,
|
|
117
|
-
ha as ct,
|
|
118
|
-
u as d,
|
|
119
|
-
ua as dt,
|
|
120
|
-
oa as et,
|
|
121
|
-
f,
|
|
122
|
-
fa as ft,
|
|
123
|
-
y as g,
|
|
124
|
-
ya as gt,
|
|
125
|
-
k as h,
|
|
126
|
-
ka as ht,
|
|
127
|
-
n as i,
|
|
128
|
-
na as it,
|
|
129
|
-
w as j,
|
|
130
|
-
M as k,
|
|
131
|
-
L as l,
|
|
132
|
-
La as lt,
|
|
133
|
-
U as m,
|
|
134
|
-
Ua as mt,
|
|
135
|
-
l as n,
|
|
136
|
-
la as nt,
|
|
137
|
-
C as o,
|
|
138
|
-
Ca as ot,
|
|
139
|
-
p,
|
|
140
|
-
pa as pt,
|
|
141
|
-
Y as q,
|
|
142
|
-
i as r,
|
|
143
|
-
ia as rt,
|
|
144
|
-
c as s,
|
|
145
|
-
ca as st,
|
|
146
|
-
t,
|
|
147
|
-
ta as tt,
|
|
148
|
-
g as u,
|
|
149
|
-
ga as ut,
|
|
150
|
-
P as v,
|
|
151
|
-
Sa as vt,
|
|
152
|
-
B as w,
|
|
153
|
-
T as x,
|
|
154
|
-
F as y,
|
|
155
|
-
V as z
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
//# sourceMappingURL=chunk-lucide-B99NZWfa.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-lucide-B99NZWfa.mjs","names":[],"sources":["../src/icons/lucide.ts"],"sourcesContent":["export type { LucideIcon } from \"lucide-react\";\n\nexport {\n AlertCircle,\n ArrowLeft,\n ArrowRight,\n Ban,\n Bell,\n Box,\n Briefcase,\n Calendar,\n Camera,\n Check,\n CheckCircle,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n Clock,\n Coffee,\n CreditCard,\n DollarSign,\n Edit,\n ExternalLink,\n Eye,\n EyeOff,\n FileText,\n Filter,\n FolderOpen,\n FolderPlus,\n FolderTree,\n Folders,\n Globe,\n GraduationCap,\n GripVertical,\n Hash,\n History,\n Home,\n Image,\n Info,\n Languages,\n LayoutGrid,\n LayoutList,\n Leaf,\n Layers,\n List,\n Loader,\n Loader2,\n Lock,\n LockKeyhole,\n LogOut,\n Mail,\n Menu,\n MessageCircle,\n Package,\n Pencil,\n Phone,\n Plus,\n Search,\n Settings,\n Shield,\n Tag,\n Trash2,\n TrendingUp,\n Upload,\n User,\n UserCheck,\n UserPlus,\n UserRound,\n UserRoundSearch,\n UserX,\n Wand2,\n X,\n XCircle,\n} from \"lucide-react\";\n"],"mappings":""}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const r=require("./chunk-chunk-D-Fg7nx1.cjs");let e=require("lucide-react");var o=r.__exportAll({AlertCircle:()=>e.AlertCircle,ArrowLeft:()=>e.ArrowLeft,ArrowRight:()=>e.ArrowRight,Ban:()=>e.Ban,Bell:()=>e.Bell,Box:()=>e.Box,Briefcase:()=>e.Briefcase,Calendar:()=>e.Calendar,Camera:()=>e.Camera,Check:()=>e.Check,CheckCircle:()=>e.CheckCircle,ChevronDown:()=>e.ChevronDown,ChevronLeft:()=>e.ChevronLeft,ChevronRight:()=>e.ChevronRight,ChevronUp:()=>e.ChevronUp,Clock:()=>e.Clock,Coffee:()=>e.Coffee,CreditCard:()=>e.CreditCard,DollarSign:()=>e.DollarSign,Edit:()=>e.Edit,ExternalLink:()=>e.ExternalLink,Eye:()=>e.Eye,EyeOff:()=>e.EyeOff,FileText:()=>e.FileText,Filter:()=>e.Filter,FolderOpen:()=>e.FolderOpen,FolderPlus:()=>e.FolderPlus,FolderTree:()=>e.FolderTree,Folders:()=>e.Folders,Globe:()=>e.Globe,GraduationCap:()=>e.GraduationCap,GripVertical:()=>e.GripVertical,Hash:()=>e.Hash,History:()=>e.History,Home:()=>e.Home,Image:()=>e.Image,Info:()=>e.Info,Languages:()=>e.Languages,Layers:()=>e.Layers,LayoutGrid:()=>e.LayoutGrid,LayoutList:()=>e.LayoutList,Leaf:()=>e.Leaf,List:()=>e.List,Loader:()=>e.Loader,Loader2:()=>e.Loader2,Lock:()=>e.Lock,LockKeyhole:()=>e.LockKeyhole,LogOut:()=>e.LogOut,Mail:()=>e.Mail,Menu:()=>e.Menu,MessageCircle:()=>e.MessageCircle,Package:()=>e.Package,Pencil:()=>e.Pencil,Phone:()=>e.Phone,Plus:()=>e.Plus,Search:()=>e.Search,Settings:()=>e.Settings,Shield:()=>e.Shield,Tag:()=>e.Tag,Trash2:()=>e.Trash2,TrendingUp:()=>e.TrendingUp,Upload:()=>e.Upload,User:()=>e.User,UserCheck:()=>e.UserCheck,UserPlus:()=>e.UserPlus,UserRound:()=>e.UserRound,UserRoundSearch:()=>e.UserRoundSearch,UserX:()=>e.UserX,Wand2:()=>e.Wand2,X:()=>e.X,XCircle:()=>e.XCircle});Object.defineProperty(exports,"lucide_exports",{enumerable:!0,get:function(){return o}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-lucide-XL6d5__j.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-lucide-XL6d5__j.cjs","names":[],"sources":["../src/icons/lucide.ts"],"sourcesContent":["export type { LucideIcon } from \"lucide-react\";\n\nexport {\n AlertCircle,\n ArrowLeft,\n ArrowRight,\n Ban,\n Bell,\n Box,\n Briefcase,\n Calendar,\n Camera,\n Check,\n CheckCircle,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n ChevronUp,\n Clock,\n Coffee,\n CreditCard,\n DollarSign,\n Edit,\n ExternalLink,\n Eye,\n EyeOff,\n FileText,\n Filter,\n FolderOpen,\n FolderPlus,\n FolderTree,\n Folders,\n Globe,\n GraduationCap,\n GripVertical,\n Hash,\n History,\n Home,\n Image,\n Info,\n Languages,\n LayoutGrid,\n LayoutList,\n Leaf,\n Layers,\n List,\n Loader,\n Loader2,\n Lock,\n LockKeyhole,\n LogOut,\n Mail,\n Menu,\n MessageCircle,\n Package,\n Pencil,\n Phone,\n Plus,\n Search,\n Settings,\n Shield,\n Tag,\n Trash2,\n TrendingUp,\n Upload,\n User,\n UserCheck,\n UserPlus,\n UserRound,\n UserRoundSearch,\n UserX,\n Wand2,\n X,\n XCircle,\n} from \"lucide-react\";\n"],"mappings":""}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { c, n as i, r as l, s as d } from "./chunk-theme-CINVDd47.mjs";
|
|
2
|
-
import { i as a } from "./chunk-layout-BEAgFhif.mjs";
|
|
3
|
-
import { i as f, r as g } from "./chunk-language-JRs5UIa2.mjs";
|
|
4
|
-
var E = /* @__PURE__ */ (function(e) {
|
|
5
|
-
return e.NONE = "none", e.WAVES = "waves", e.SQUARES = "squares", e.LETTER_GLITCH = "letterGlitch", e.PIXEL_BLAST = "pixelBlast", e;
|
|
6
|
-
})({}), A = "none", S = Object.values(E);
|
|
7
|
-
function u(e) {
|
|
8
|
-
return e !== null && typeof e == "object" && !Array.isArray(e);
|
|
9
|
-
}
|
|
10
|
-
function y(e) {
|
|
11
|
-
const n = e.layoutMode === a.HIDE ? a.HIDE : a.SHOW, t = typeof e.base == "string" && i.includes(e.base) ? e.base : l.DEFAULT, o = typeof e.language == "string" && g.includes(e.language) ? e.language : f.ZH, s = typeof e.dashboardBackground == "string" && S.includes(e.dashboardBackground) ? e.dashboardBackground : A;
|
|
12
|
-
return {
|
|
13
|
-
theme: typeof e.theme == "string" && d.includes(e.theme) ? e.theme : c.DEFAULT,
|
|
14
|
-
base: t,
|
|
15
|
-
language: o,
|
|
16
|
-
layoutMode: n,
|
|
17
|
-
dashboardBackground: s
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
function p(e) {
|
|
21
|
-
return {
|
|
22
|
-
theme: e.theme || void 0,
|
|
23
|
-
base: e.base || void 0,
|
|
24
|
-
language: e.language || void 0,
|
|
25
|
-
layoutMode: e.layoutMode,
|
|
26
|
-
dashboardBackground: e.dashboardBackground
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
var T = "nfx";
|
|
30
|
-
function _(e, n) {
|
|
31
|
-
if (!e || typeof e != "string") return null;
|
|
32
|
-
try {
|
|
33
|
-
const t = JSON.parse(e);
|
|
34
|
-
if (!u(t)) return null;
|
|
35
|
-
const o = t.nfx, s = y(u(o) ? o : {}), r = { ...t };
|
|
36
|
-
return delete r.nfx, {
|
|
37
|
-
nfx: s,
|
|
38
|
-
...n ? n(r) : {}
|
|
39
|
-
};
|
|
40
|
-
} catch {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function h(e, n) {
|
|
45
|
-
const { nfx: t, ...o } = e, s = n ? n(o) : o;
|
|
46
|
-
return JSON.stringify({
|
|
47
|
-
nfx: p(t),
|
|
48
|
-
...s
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
export {
|
|
52
|
-
A as a,
|
|
53
|
-
S as i,
|
|
54
|
-
h as n,
|
|
55
|
-
E as o,
|
|
56
|
-
T as r,
|
|
57
|
-
_ as t
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=chunk-preference-DMhhY1Pl.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-preference-DMhhY1Pl.mjs","names":[],"sources":["../src/preference/constants.ts","../src/preference/nfx_slice.ts","../src/preference/types.ts","../src/preference/core.ts"],"sourcesContent":["/**\n * 用户偏好相关常量:仪表盘背景等\n * Preference-related constants: dashboard background, etc.\n */\n\nimport type { Array } from \"@/types\";\n\n/** 仪表盘背景枚举。Dashboard background enum. */\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;\n\n/** 仪表盘背景可选值列表。Dashboard background values list. */\nexport const DASHBOARD_BACKGROUND_VALUES: Array<DashboardBackgroundEnum> = Object.values(DashboardBackgroundEnum);\n","import { LayoutModeEnum } from \"@/designs/layouts/types\";\nimport { LANGUAGE_VALUES, LanguageEnum } from \"@/languages/types\";\nimport { BASE_VALUES, BaseEnum, THEME_VALUES, ThemeEnum } from \"@/themes/types\";\n\nimport { DASHBOARD_BACKGROUND_VALUES, DashboardBackgroundEnum, DEFAULT_DASHBOARD_BACKGROUND } from \"./constants\";\nimport type { NfxPreferenceSlice } from \"./types\";\n\n/** 后端 `nfx` 对象允许的 JSON 形状(字段均可选)。 */\nexport type NfxBackendShape = {\n theme?: ThemeEnum;\n base?: BaseEnum;\n language?: LanguageEnum;\n layoutMode?: LayoutModeEnum;\n dashboardBackground?: DashboardBackgroundEnum;\n};\n\n/** 判断值是否为「普通对象」(非 null、非数组)。 */\nexport function isPlainRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === \"object\" && !Array.isArray(v);\n}\n\n/**\n * 将后端 `nfx` 对象的原始字段规范化为前端 `NfxPreferenceSlice`(非法或缺失字段用 NFX 默认值)。\n */\nexport function parseNfxFields(raw: NfxBackendShape): NfxPreferenceSlice {\n const layoutMode = raw.layoutMode === LayoutModeEnum.HIDE ? LayoutModeEnum.HIDE : LayoutModeEnum.SHOW;\n const base = typeof raw.base === \"string\" && BASE_VALUES.includes(raw.base) ? raw.base : BaseEnum.DEFAULT;\n const language =\n typeof raw.language === \"string\" && LANGUAGE_VALUES.includes(raw.language) ? raw.language : LanguageEnum.ZH;\n const dashboardBackground =\n typeof raw.dashboardBackground === \"string\" && DASHBOARD_BACKGROUND_VALUES.includes(raw.dashboardBackground)\n ? raw.dashboardBackground\n : DEFAULT_DASHBOARD_BACKGROUND;\n const theme = typeof raw.theme === \"string\" && THEME_VALUES.includes(raw.theme) ? raw.theme : ThemeEnum.DEFAULT;\n return {\n theme,\n base,\n language,\n layoutMode,\n dashboardBackground,\n };\n}\n\n/**\n * 将前端 `NfxPreferenceSlice` 转为写入 JSON 的 `nfx` 对象(与 `theme`/`base`/`language` 的省略规则一致)。\n */\nexport function nfxSliceToBackend(nfx: NfxPreferenceSlice): NfxBackendShape {\n return {\n theme: nfx.theme || undefined,\n base: nfx.base || undefined,\n language: nfx.language || undefined,\n layoutMode: nfx.layoutMode,\n dashboardBackground: nfx.dashboardBackground,\n };\n}\n","import type { LayoutModeEnum } from \"@/designs/layouts/types\";\nimport type { LanguageEnum } from \"@/languages/types\";\nimport type { BaseEnum, ThemeEnum } from \"@/themes/types\";\n\nimport type { DashboardBackgroundEnum } from \"./constants\";\n\n/**\n * 根对象上 NFX 内置块使用的键名(字面量 `\"nfx\"`)。\n * Literal key name for the NFX slice on the preference JSON root.\n */\nexport const NFX_PREFERENCE_ROOT_KEY = \"nfx\" as const;\n\n/**\n * NFX 负责的内置字段(存于 JSON 的 `nfx` 对象内)。\n * Built-in fields owned by NFX (nested under the `nfx` object in JSON).\n */\nexport type NfxPreferenceSlice = {\n theme: ThemeEnum;\n base: BaseEnum;\n language: LanguageEnum;\n layoutMode: LayoutModeEnum;\n dashboardBackground: DashboardBackgroundEnum;\n};\n\n/**\n * 完整偏好:必有 `nfx`;`TExtra` 为与 `nfx` 平级的其它顶层键。\n * 默认 `TExtra` 为 `Record<string, unknown>`(**勿用** `Record<string, never>`:会与 `nfx` 索引冲突导致无法赋值)。\n */\nexport type Preference<TExtra extends Record<string, unknown> = Record<string, unknown>> = {\n nfx: NfxPreferenceSlice;\n} & TExtra;\n","import type { Nilable, Nullable } from \"@/types\";\n\nimport { isPlainRecord, nfxSliceToBackend, parseNfxFields, type NfxBackendShape } from \"./nfx_slice\";\nimport { NFX_PREFERENCE_ROOT_KEY, type NfxPreferenceSlice, type Preference } from \"./types\";\n\n/**\n * 解析后端 preference 字符串:`nfx` 由本包规范化(缺省或非对象则按 `{}` → 默认值);\n * `parseExtra(rest)` 的 `rest` 为根对象去掉 `nfx` 后的键值(宿主扩展,线 snake / 内存 camel 在函数内自行处理)。\n */\nexport function parsePreferenceJson<TExtra extends Record<string, unknown> = Record<string, unknown>>(\n json: Nilable<string>,\n parseExtra?: (raw: Record<string, unknown>) => TExtra,\n): Nullable<Preference<TExtra>> {\n if (!json || typeof json !== \"string\") return null;\n try {\n const data = JSON.parse(json) as unknown;\n if (!isPlainRecord(data)) return null;\n const nfxSource = data[NFX_PREFERENCE_ROOT_KEY];\n const nfxRaw = isPlainRecord(nfxSource) ? nfxSource : {};\n const nfx = parseNfxFields(nfxRaw as NfxBackendShape);\n const rest = { ...data };\n delete rest[NFX_PREFERENCE_ROOT_KEY];\n const extra = parseExtra ? parseExtra(rest) : ({} as TExtra);\n return { nfx, ...extra };\n } catch {\n return null;\n }\n}\n\n/**\n * 序列化:`serializeExtra` 把内存中的扩展部分写成根上要合并的顶层键;省略则对扩展做浅拷贝(键名原样写入 JSON)。\n */\nexport function preferenceToJson<TExtra extends Record<string, unknown> = Record<string, unknown>>(\n preference: Preference<TExtra>,\n serializeExtra?: (extra: TExtra) => Record<string, unknown>,\n): string {\n const { nfx, ...extra } = preference as { nfx: NfxPreferenceSlice } & Record<string, unknown>;\n const extraBag = serializeExtra ? serializeExtra(extra as unknown as TExtra) : extra;\n return JSON.stringify({\n [NFX_PREFERENCE_ROOT_KEY]: nfxSliceToBackend(nfx),\n ...extraBag,\n });\n}\n"],"mappings":";;;AAQA,IAAY,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,OAAA,QACA,EAAA,QAAA,SACA,EAAA,UAAA,WACA,EAAA,gBAAA,gBACA,EAAA,cAAA;AACF,GAAA,CAAA,CAAA,GAEa,IAAA,QAGA,IAA8D,OAAO,OAAO,CAAuB;ACFhH,SAAgB,EAAc,GAA0C;AACtE,SAAO,MAAM,QAAQ,OAAO,KAAM,YAAY,CAAC,MAAM,QAAQ,CAAC;AAChE;AAKA,SAAgB,EAAe,GAA0C;AACvE,QAAM,IAAa,EAAI,eAAe,EAAe,OAAO,EAAe,OAAO,EAAe,MAC3F,IAAO,OAAO,EAAI,QAAS,YAAY,EAAY,SAAS,EAAI,IAAI,IAAI,EAAI,OAAO,EAAS,SAC5F,IACJ,OAAO,EAAI,YAAa,YAAY,EAAgB,SAAS,EAAI,QAAQ,IAAI,EAAI,WAAW,EAAa,IACrG,IACJ,OAAO,EAAI,uBAAwB,YAAY,EAA4B,SAAS,EAAI,mBAAmB,IACvG,EAAI,sBACJ;AAEN,SAAO;AAAA,IACL,OAFY,OAAO,EAAI,SAAU,YAAY,EAAa,SAAS,EAAI,KAAK,IAAI,EAAI,QAAQ,EAAU;AAAA,IAGtG,MAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,EACF;AACF;AAKA,SAAgB,EAAkB,GAA0C;AAC1E,SAAO;AAAA,IACL,OAAO,EAAI,SAAS;AAAA,IACpB,MAAM,EAAI,QAAQ;AAAA,IAClB,UAAU,EAAI,YAAY;AAAA,IAC1B,YAAY,EAAI;AAAA,IAChB,qBAAqB,EAAI;AAAA,EAC3B;AACF;AC5CA,IAAa,IAA0B;ACDvC,SAAgB,EACd,GACA,GAC8B;AAC9B,MAAI,CAAC,KAAQ,OAAO,KAAS,SAAU,QAAO;AAC9C,MAAI;AACF,UAAM,IAAO,KAAK,MAAM,CAAI;AAC5B,QAAI,CAAC,EAAc,CAAI,EAAG,QAAO;AACjC,UAAM,IAAY,EAAA,KAEZ,IAAM,EADG,EAAc,CAAS,IAAI,IAAY,CAAC,CACH,GAC9C,IAAO,EAAE,GAAG,EAAK;AACvB,kBAAO,EAAA,KAEA;AAAA,MAAE,KAAA;AAAA,MAAK,GADA,IAAa,EAAW,CAAI,IAAK,CAAC;AAAA,IACzB;AAAA,EACzB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAKA,SAAgB,EACd,GACA,GACQ;AACR,QAAM,EAAE,KAAA,GAAK,GAAG,EAAA,IAAU,GACpB,IAAW,IAAiB,EAAe,CAA0B,IAAI;AAC/E,SAAO,KAAK,UAAU;AAAA,SACO,EAAkB,CAAG;AAAA,IAChD,GAAG;AAAA,EACL,CAAC;AACH"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
const o=require("./chunk-theme-D49XQfXe.cjs"),a=require("./chunk-layout-mMQXuBLE.cjs"),s=require("./chunk-language-2r4uKROB.cjs");var l=(function(e){return e.NONE="none",e.WAVES="waves",e.SQUARES="squares",e.LETTER_GLITCH="letterGlitch",e.PIXEL_BLAST="pixelBlast",e})({}),d="none",f=Object.values(l);function i(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function g(e){const n=e.layoutMode===a.LayoutModeEnum.HIDE?a.LayoutModeEnum.HIDE:a.LayoutModeEnum.SHOW,t=typeof e.base=="string"&&o.BASE_VALUES.includes(e.base)?e.base:o.BaseEnum.DEFAULT,r=typeof e.language=="string"&&s.LANGUAGE_VALUES.includes(e.language)?e.language:s.LanguageEnum.ZH,u=typeof e.dashboardBackground=="string"&&f.includes(e.dashboardBackground)?e.dashboardBackground:d;return{theme:typeof e.theme=="string"&&o.THEME_VALUES.includes(e.theme)?e.theme:o.ThemeEnum.DEFAULT,base:t,language:r,layoutMode:n,dashboardBackground:u}}function E(e){return{theme:e.theme||void 0,base:e.base||void 0,language:e.language||void 0,layoutMode:e.layoutMode,dashboardBackground:e.dashboardBackground}}var A="nfx";function y(e,n){if(!e||typeof e!="string")return null;try{const t=JSON.parse(e);if(!i(t))return null;const r=t.nfx,u=g(i(r)?r:{}),c={...t};return delete c.nfx,{nfx:u,...n?n(c):{}}}catch{return null}}function b(e,n){const{nfx:t,...r}=e,u=n?n(r):r;return JSON.stringify({nfx:E(t),...u})}Object.defineProperty(exports,"DASHBOARD_BACKGROUND_VALUES",{enumerable:!0,get:function(){return f}});Object.defineProperty(exports,"DEFAULT_DASHBOARD_BACKGROUND",{enumerable:!0,get:function(){return d}});Object.defineProperty(exports,"DashboardBackgroundEnum",{enumerable:!0,get:function(){return l}});Object.defineProperty(exports,"NFX_PREFERENCE_ROOT_KEY",{enumerable:!0,get:function(){return A}});Object.defineProperty(exports,"parsePreferenceJson",{enumerable:!0,get:function(){return y}});Object.defineProperty(exports,"preferenceToJson",{enumerable:!0,get:function(){return b}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-preference-DbNgeGhx.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-preference-DbNgeGhx.cjs","names":[],"sources":["../src/preference/constants.ts","../src/preference/nfx_slice.ts","../src/preference/types.ts","../src/preference/core.ts"],"sourcesContent":["/**\n * 用户偏好相关常量:仪表盘背景等\n * Preference-related constants: dashboard background, etc.\n */\n\nimport type { Array } from \"@/types\";\n\n/** 仪表盘背景枚举。Dashboard background enum. */\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;\n\n/** 仪表盘背景可选值列表。Dashboard background values list. */\nexport const DASHBOARD_BACKGROUND_VALUES: Array<DashboardBackgroundEnum> = Object.values(DashboardBackgroundEnum);\n","import { LayoutModeEnum } from \"@/designs/layouts/types\";\nimport { LANGUAGE_VALUES, LanguageEnum } from \"@/languages/types\";\nimport { BASE_VALUES, BaseEnum, THEME_VALUES, ThemeEnum } from \"@/themes/types\";\n\nimport { DASHBOARD_BACKGROUND_VALUES, DashboardBackgroundEnum, DEFAULT_DASHBOARD_BACKGROUND } from \"./constants\";\nimport type { NfxPreferenceSlice } from \"./types\";\n\n/** 后端 `nfx` 对象允许的 JSON 形状(字段均可选)。 */\nexport type NfxBackendShape = {\n theme?: ThemeEnum;\n base?: BaseEnum;\n language?: LanguageEnum;\n layoutMode?: LayoutModeEnum;\n dashboardBackground?: DashboardBackgroundEnum;\n};\n\n/** 判断值是否为「普通对象」(非 null、非数组)。 */\nexport function isPlainRecord(v: unknown): v is Record<string, unknown> {\n return v !== null && typeof v === \"object\" && !Array.isArray(v);\n}\n\n/**\n * 将后端 `nfx` 对象的原始字段规范化为前端 `NfxPreferenceSlice`(非法或缺失字段用 NFX 默认值)。\n */\nexport function parseNfxFields(raw: NfxBackendShape): NfxPreferenceSlice {\n const layoutMode = raw.layoutMode === LayoutModeEnum.HIDE ? LayoutModeEnum.HIDE : LayoutModeEnum.SHOW;\n const base = typeof raw.base === \"string\" && BASE_VALUES.includes(raw.base) ? raw.base : BaseEnum.DEFAULT;\n const language =\n typeof raw.language === \"string\" && LANGUAGE_VALUES.includes(raw.language) ? raw.language : LanguageEnum.ZH;\n const dashboardBackground =\n typeof raw.dashboardBackground === \"string\" && DASHBOARD_BACKGROUND_VALUES.includes(raw.dashboardBackground)\n ? raw.dashboardBackground\n : DEFAULT_DASHBOARD_BACKGROUND;\n const theme = typeof raw.theme === \"string\" && THEME_VALUES.includes(raw.theme) ? raw.theme : ThemeEnum.DEFAULT;\n return {\n theme,\n base,\n language,\n layoutMode,\n dashboardBackground,\n };\n}\n\n/**\n * 将前端 `NfxPreferenceSlice` 转为写入 JSON 的 `nfx` 对象(与 `theme`/`base`/`language` 的省略规则一致)。\n */\nexport function nfxSliceToBackend(nfx: NfxPreferenceSlice): NfxBackendShape {\n return {\n theme: nfx.theme || undefined,\n base: nfx.base || undefined,\n language: nfx.language || undefined,\n layoutMode: nfx.layoutMode,\n dashboardBackground: nfx.dashboardBackground,\n };\n}\n","import type { LayoutModeEnum } from \"@/designs/layouts/types\";\nimport type { LanguageEnum } from \"@/languages/types\";\nimport type { BaseEnum, ThemeEnum } from \"@/themes/types\";\n\nimport type { DashboardBackgroundEnum } from \"./constants\";\n\n/**\n * 根对象上 NFX 内置块使用的键名(字面量 `\"nfx\"`)。\n * Literal key name for the NFX slice on the preference JSON root.\n */\nexport const NFX_PREFERENCE_ROOT_KEY = \"nfx\" as const;\n\n/**\n * NFX 负责的内置字段(存于 JSON 的 `nfx` 对象内)。\n * Built-in fields owned by NFX (nested under the `nfx` object in JSON).\n */\nexport type NfxPreferenceSlice = {\n theme: ThemeEnum;\n base: BaseEnum;\n language: LanguageEnum;\n layoutMode: LayoutModeEnum;\n dashboardBackground: DashboardBackgroundEnum;\n};\n\n/**\n * 完整偏好:必有 `nfx`;`TExtra` 为与 `nfx` 平级的其它顶层键。\n * 默认 `TExtra` 为 `Record<string, unknown>`(**勿用** `Record<string, never>`:会与 `nfx` 索引冲突导致无法赋值)。\n */\nexport type Preference<TExtra extends Record<string, unknown> = Record<string, unknown>> = {\n nfx: NfxPreferenceSlice;\n} & TExtra;\n","import type { Nilable, Nullable } from \"@/types\";\n\nimport { isPlainRecord, nfxSliceToBackend, parseNfxFields, type NfxBackendShape } from \"./nfx_slice\";\nimport { NFX_PREFERENCE_ROOT_KEY, type NfxPreferenceSlice, type Preference } from \"./types\";\n\n/**\n * 解析后端 preference 字符串:`nfx` 由本包规范化(缺省或非对象则按 `{}` → 默认值);\n * `parseExtra(rest)` 的 `rest` 为根对象去掉 `nfx` 后的键值(宿主扩展,线 snake / 内存 camel 在函数内自行处理)。\n */\nexport function parsePreferenceJson<TExtra extends Record<string, unknown> = Record<string, unknown>>(\n json: Nilable<string>,\n parseExtra?: (raw: Record<string, unknown>) => TExtra,\n): Nullable<Preference<TExtra>> {\n if (!json || typeof json !== \"string\") return null;\n try {\n const data = JSON.parse(json) as unknown;\n if (!isPlainRecord(data)) return null;\n const nfxSource = data[NFX_PREFERENCE_ROOT_KEY];\n const nfxRaw = isPlainRecord(nfxSource) ? nfxSource : {};\n const nfx = parseNfxFields(nfxRaw as NfxBackendShape);\n const rest = { ...data };\n delete rest[NFX_PREFERENCE_ROOT_KEY];\n const extra = parseExtra ? parseExtra(rest) : ({} as TExtra);\n return { nfx, ...extra };\n } catch {\n return null;\n }\n}\n\n/**\n * 序列化:`serializeExtra` 把内存中的扩展部分写成根上要合并的顶层键;省略则对扩展做浅拷贝(键名原样写入 JSON)。\n */\nexport function preferenceToJson<TExtra extends Record<string, unknown> = Record<string, unknown>>(\n preference: Preference<TExtra>,\n serializeExtra?: (extra: TExtra) => Record<string, unknown>,\n): string {\n const { nfx, ...extra } = preference as { nfx: NfxPreferenceSlice } & Record<string, unknown>;\n const extraBag = serializeExtra ? serializeExtra(extra as unknown as TExtra) : extra;\n return JSON.stringify({\n [NFX_PREFERENCE_ROOT_KEY]: nfxSliceToBackend(nfx),\n ...extraBag,\n });\n}\n"],"mappings":"kIAQA,IAAY,GAAL,SAAA,EAAA,CACL,OAAA,EAAA,KAAA,OACA,EAAA,MAAA,QACA,EAAA,QAAA,UACA,EAAA,cAAA,eACA,EAAA,YAAA,cACF,GAAA,CAAA,CAAA,EAEa,EAAA,OAGA,EAA8D,OAAO,OAAO,CAAuB,ECFhH,SAAgB,EAAc,EAA0C,CACtE,OAAO,IAAM,MAAQ,OAAO,GAAM,UAAY,CAAC,MAAM,QAAQ,CAAC,CAChE,CAKA,SAAgB,EAAe,EAA0C,CACvE,MAAM,EAAa,EAAI,aAAe,EAAA,eAAe,KAAO,EAAA,eAAe,KAAO,EAAA,eAAe,KAC3F,EAAO,OAAO,EAAI,MAAS,UAAY,EAAA,YAAY,SAAS,EAAI,IAAI,EAAI,EAAI,KAAO,EAAA,SAAS,QAC5F,EACJ,OAAO,EAAI,UAAa,UAAY,EAAA,gBAAgB,SAAS,EAAI,QAAQ,EAAI,EAAI,SAAW,EAAA,aAAa,GACrG,EACJ,OAAO,EAAI,qBAAwB,UAAY,EAA4B,SAAS,EAAI,mBAAmB,EACvG,EAAI,oBACJ,EAEN,MAAO,CACL,MAFY,OAAO,EAAI,OAAU,UAAY,EAAA,aAAa,SAAS,EAAI,KAAK,EAAI,EAAI,MAAQ,EAAA,UAAU,QAGtG,KAAA,EACA,SAAA,EACA,WAAA,EACA,oBAAA,CACF,CACF,CAKA,SAAgB,EAAkB,EAA0C,CAC1E,MAAO,CACL,MAAO,EAAI,OAAS,OACpB,KAAM,EAAI,MAAQ,OAClB,SAAU,EAAI,UAAY,OAC1B,WAAY,EAAI,WAChB,oBAAqB,EAAI,mBAC3B,CACF,CC5CA,IAAa,EAA0B,MCDvC,SAAgB,EACd,EACA,EAC8B,CAC9B,GAAI,CAAC,GAAQ,OAAO,GAAS,SAAU,OAAO,KAC9C,GAAI,CACF,MAAM,EAAO,KAAK,MAAM,CAAI,EAC5B,GAAI,CAAC,EAAc,CAAI,EAAG,OAAO,KACjC,MAAM,EAAY,EAAA,IAEZ,EAAM,EADG,EAAc,CAAS,EAAI,EAAY,CAAC,CACH,EAC9C,EAAO,CAAE,GAAG,CAAK,EACvB,cAAO,EAAA,IAEA,CAAE,IAAA,EAAK,GADA,EAAa,EAAW,CAAI,EAAK,CAAC,CACzB,CACzB,MAAQ,CACN,OAAO,IACT,CACF,CAKA,SAAgB,EACd,EACA,EACQ,CACR,KAAM,CAAE,IAAA,EAAK,GAAG,CAAA,EAAU,EACpB,EAAW,EAAiB,EAAe,CAA0B,EAAI,EAC/E,OAAO,KAAK,UAAU,KACO,EAAkB,CAAG,EAChD,GAAG,CACL,CAAC,CACH"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
var r = /* @__PURE__ */ (function(a) {
|
|
2
|
-
return a.DEFAULT = "default", a.LIGHT = "light", a.CORPORATE = "corporate", a.FOREST = "forest", a.DARK = "dark", a.COSMIC = "cosmic", a.COFFEE = "coffee", a.WINE = "wine", a.WHEAT = "wheat", a;
|
|
3
|
-
})({}), A = "default", o = Object.values(r), t = /* @__PURE__ */ (function(a) {
|
|
4
|
-
return a.DEFAULT = "default", a.IOS = "ios", a.ANDROID = "android", a.WINDOWS = "windows", a.LINUX = "linux", a;
|
|
5
|
-
})({}), O = "default", s = Object.values(t), E = "theme-color", S = "theme-base";
|
|
6
|
-
export {
|
|
7
|
-
O as a,
|
|
8
|
-
r as c,
|
|
9
|
-
E as i,
|
|
10
|
-
s as n,
|
|
11
|
-
A as o,
|
|
12
|
-
t as r,
|
|
13
|
-
o as s,
|
|
14
|
-
S as t
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=chunk-theme-CINVDd47.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-theme-CINVDd47.mjs","names":[],"sources":["../src/themes/types/theme.ts"],"sourcesContent":["/**\n * 主题相关类型:颜色变量、基础变量、主题枚举与常量。\n * Theme types: color/base variables, theme enums and constants.\n */\n\n/** 颜色变量(主题色、背景、边框、文字、图表等一切与颜色相关) */\nexport interface ColorVariables {\n // ─── 主色 Primary ───────────────────────────────────────────────\n\n /** 主品牌色 — 按钮、链接、激活态 | `--color-primary` */\n primary: string;\n /** 主色悬停 — 按钮 hover / ShowFilter active | `--color-primary-hover` */\n primaryHover: string;\n /** 主色浅色 — 标签底色、浅色按钮、选中态背景 | `--color-primary-light` */\n primaryLight: string;\n /** 主色极浅底 — Input/SearchInput focus 发光底、选中行底 | `--color-primary-bg` */\n primaryBg: string;\n /** 主色 RGB 三元组 — 用于 `rgba(var(--color-primary-rgb), α)` 计算 | `--color-primary-rgb` */\n primaryRgb: string;\n /** 主色半透明 — focus ring 外环、Dropdown 聚焦阴影 | `--color-primary-transparent` `--color-primary-alpha` */\n primaryTransparent: string;\n /** 主色上的前景文字 — 按钮白字 / 深色背景字 | `--color-primary-fg` */\n primaryFg: string;\n\n // ─── 语义色 Semantic ─────────────────────────────────────────────\n\n /** 成功色 — Toast 成功、状态徽标 | `--color-success` */\n success: string;\n /** 成功色浅底 — 成功 Alert 背景 | `--color-success-light` */\n successLight: string;\n /** 成功色 RGB — `rgba(var(--color-success-rgb), α)` | `--color-success-rgb` */\n successRgb: string;\n /** 信息色 — 提示 Alert、Badge | `--color-info` */\n info: string;\n /** 信息色浅底 — 信息 Alert 背景 | `--color-info-light` */\n infoLight: string;\n /** 信息色 RGB — `rgba(var(--color-info-rgb), α)` | `--color-info-rgb` */\n infoRgb: string;\n /** 警告色 — 警告 Toast、图标 | `--color-warning` */\n warning: string;\n /** 警告色浅底 — 警告 Alert 背景 | `--color-warning-light` */\n warningLight: string;\n /** 警告色 RGB — `rgba(var(--color-warning-rgb), α)` | `--color-warning-rgb` */\n warningRgb: string;\n /** 危险色 — 删除按钮、表单错误边框 | `--color-danger` `--color-error` */\n danger: string;\n /** 危险色浅底 — 危险按钮 hover、错误 Alert 底 | `--color-danger-light` */\n dangerLight: string;\n /** 危险色 RGB — Input/Textarea 错误 focus ring | `--color-danger-rgb` `--color-error-rgb` */\n dangerRgb: string;\n\n // ─── 背景 Background ────────────────────────────────────────────\n\n /** 页面底色 — html body、最外层容器 | `--color-bg` `--color-bg-1` */\n bg: string;\n /** 二级背景 — Sidebar、Footer、卡片 | `--color-bg-2` */\n bg2: string;\n /** 三级背景 — 菜单 hover、条纹行 | `--color-bg-3` */\n bg3: string;\n /** 四级背景 — 深层嵌套面板 | `--color-bg-4` */\n bg4: string;\n /** 辅助背景 — Suspense fallback 面板 | `--color-bg-secondary` */\n bgSecondary: string;\n\n // ─── 边框 Border ─────────────────────────────────────────────────\n\n /** 最浅边框 — 容器默认边框 | `--color-border` */\n border: string;\n /** 二级边框 — 分隔线 | `--color-border-2` */\n border2: string;\n /** 三级边框 — Input 非激活边、列表分隔 | `--color-border-3` */\n border3: string;\n /** 四级边框 — Input/Button 默认边框 | `--color-border-4` */\n border4: string;\n /** 五级边框(最深) — disabled Input 边框 | `--color-border-5` */\n border5: string;\n /** 悬停边框 — Suspense retry hover、ShowFilter hover | `--color-border-hover` */\n borderHover: string;\n\n // ─── 前景 / 文字 Foreground ──────────────────────────────────────\n\n /** 辅助图标色 — icon placeholder、ShowFilter 默认色 | `--color-fg` */\n fg: string;\n /** 正文文字 — 段落、表格内容 | `--color-fg-text` */\n fgText: string;\n /** 标题文字 — h1-h6、Input label | `--color-fg-heading` */\n fgHeading: string;\n /** 高亮文字 — 链接、Dropdown 选中项 | `--color-fg-highlight` */\n fgHighlight: string;\n /** 次要文字 — placeholder、hint、辅助说明 | `--color-fg-muted` */\n fgMuted: string;\n /** 主色上的文字 — primary 按钮/Badge 内文字 | `--color-fg-on-primary` */\n fgOnPrimary: string;\n /** 分隔线 — Sidebar 底部分隔、Dropdown 选项间隔 | `--color-separator` */\n separator: string;\n\n // ─── 全局效果 Effects ────────────────────────────────────────────\n\n /** 遮罩层 — Modal/Drawer 背景蒙版 | `--color-overlay` */\n overlay: string;\n /** 阴影色 — 卡片/弹出层 box-shadow 基色 | `--color-shadow` */\n shadow: string;\n /** 焦点环 — 键盘 Tab 导航 focus outline | `--color-ring` */\n ring: string;\n\n // ─── 通用图表系列 Chart Series ───────────────────────────────────\n\n /** 图表系列 1(通常=主色) — 多系列折线/柱状图第 1 组 | `--color-chart-1` */\n chart1: string;\n /** 图表系列 2 — 第 2 组数据线 | `--color-chart-2` */\n chart2: string;\n /** 图表系列 3 — 第 3 组数据线 | `--color-chart-3` */\n chart3: string;\n /** 图表系列 4 — 第 4 组数据线 | `--color-chart-4` */\n chart4: string;\n /** 图表系列 5 — 第 5 组数据线 | `--color-chart-5` */\n chart5: string;\n\n // ─── 专用图表 Specific Charts ────────────────────────────────────\n\n /** 温度计仪表盘 — 圆弧填充渐变(5 色由浅到深)、空弧、滑块 */\n temperature: {\n arcFill: string[];\n arcEmpty: string;\n thumbBg: string;\n thumbBorder: string;\n };\n\n /** 太阳能面板图 — 渐变、阴影、第二系列 */\n solar: {\n gradientLeft: string;\n gradientRight: string;\n shadowColor: string;\n secondSeriesFill: string;\n };\n\n /** 流量图 — tooltip、坐标轴、数据点、渐变 */\n traffic: {\n tooltipBg: string;\n tooltipBorderColor: string;\n tooltipTextColor: string;\n yAxisSplitLine: string;\n lineBg: string;\n itemColor: string;\n itemBorderColor: string;\n itemEmphasisBorderColor: string;\n shadowLineDarkBg: string;\n shadowLineShadow: string;\n gradFrom: string;\n gradTo: string;\n };\n\n /** 电力图 — tooltip、坐标轴、折线渐变、面积渐变 */\n electricity: {\n tooltipBg: string;\n tooltipLineColor: string;\n tooltipBorderColor: string;\n tooltipTextColor: string;\n axisLineColor: string;\n xAxisTextColor: string;\n yAxisSplitLine: string;\n itemBorderColor: string;\n lineGradFrom: string;\n lineGradTo: string;\n lineShadow: string;\n areaGradFrom: string;\n areaGradTo: string;\n shadowLineDarkBg: string;\n };\n\n /** ECharts 全局 — 画布底色、文字、坐标轴、tooltip */\n echarts: {\n bg: string;\n textColor: string;\n axisLineColor: string;\n splitLineColor: string;\n itemHoverShadowColor: string;\n tooltipBackgroundColor: string;\n };\n\n /** Chart.js 全局 — 坐标轴、文字 */\n chartjs: {\n axisLineColor: string;\n textColor: string;\n };\n}\n\n/** 非颜色变量(圆角等,可随平台不同:iOS 24 / Android|Windows 6 / Linux 4) */\nexport interface BaseVariables {\n radius: {\n button: number;\n card: number;\n input: number;\n modal: number;\n badge: number;\n avatar: number;\n };\n\n spacing: {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n page: number;\n card: number;\n sectionGap: number;\n gridGap: number;\n };\n\n border: {\n thin: number;\n base: number;\n thick: number;\n focusRing: number;\n };\n\n size: {\n buttonSm: number;\n buttonMd: number;\n buttonLg: number;\n inputSm: number;\n inputMd: number;\n inputLg: number;\n navbarHeight: number;\n sidebarWidth: number;\n };\n\n typography: {\n fontFamilyBase: string;\n fontFamilyHeading: string;\n fontSizeXs: number;\n fontSizeSm: number;\n fontSizeMd: number;\n fontSizeLg: number;\n fontSizeXl: number;\n fontWeightNormal: number;\n fontWeightMedium: number;\n fontWeightBold: number;\n lineHeightBase: number;\n };\n\n motion: {\n fast: number;\n base: number;\n slow: number;\n easingStandard: string;\n };\n\n zIndex: {\n dropdown: number;\n sticky: number;\n modal: number;\n toast: number;\n tooltip: number;\n };\n}\n\n/** 颜色主题:name/displayName 表示这套配色是谁 */\nexport interface ColorTheme {\n name: string;\n displayName: string;\n variables: ColorVariables;\n}\n\n/** 基础主题:name/displayName 表示这套基础规范是谁(如 iOS / Android / 默认) */\nexport interface BaseTheme {\n name: string;\n displayName: string;\n variables: BaseVariables;\n}\n\n/** 完整主题 = 颜色主题 + 基础主题 */\nexport interface Theme {\n colors: ColorTheme;\n base: BaseTheme;\n}\n\n/** 颜色主题枚举 */\nexport enum ThemeEnum {\n DEFAULT = \"default\",\n LIGHT = \"light\",\n CORPORATE = \"corporate\",\n FOREST = \"forest\",\n DARK = \"dark\",\n COSMIC = \"cosmic\",\n COFFEE = \"coffee\",\n WINE = \"wine\",\n WHEAT = \"wheat\",\n}\n\nexport const DEFAULT_THEME = ThemeEnum.DEFAULT;\nexport const THEME_VALUES = Object.values(ThemeEnum);\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);\n\nexport const COLOR_STORAGE_KEY = \"theme-color\";\nexport const BASE_STORAGE_KEY = \"theme-base\";\n"],"mappings":"AAuRA,IAAY,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,UAAA,WACA,EAAA,QAAA,SACA,EAAA,YAAA,aACA,EAAA,SAAA,UACA,EAAA,OAAA,QACA,EAAA,SAAA,UACA,EAAA,SAAA,UACA,EAAA,OAAA,QACA,EAAA,QAAA;AACF,GAAA,CAAA,CAAA,GAEa,IAAA,WACA,IAAe,OAAO,OAAO,CAAS,GAGvC,IAAL,0BAAA,GAAA;AACL,SAAA,EAAA,UAAA,WACA,EAAA,MAAA,OACA,EAAA,UAAA,WACA,EAAA,UAAA,WACA,EAAA,QAAA;AACF,GAAA,CAAA,CAAA,GAEa,IAAA,WACA,IAAc,OAAO,OAAO,CAAQ,GAEpC,IAAoB,eACpB,IAAmB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
var r=(function(e){return e.DEFAULT="default",e.LIGHT="light",e.CORPORATE="corporate",e.FOREST="forest",e.DARK="dark",e.COSMIC="cosmic",e.COFFEE="coffee",e.WINE="wine",e.WHEAT="wheat",e})({}),n="default",u=Object.values(r),t=(function(e){return e.DEFAULT="default",e.IOS="ios",e.ANDROID="android",e.WINDOWS="windows",e.LINUX="linux",e})({}),o="default",E=Object.values(t),O="theme-color",c="theme-base";Object.defineProperty(exports,"BASE_STORAGE_KEY",{enumerable:!0,get:function(){return c}});Object.defineProperty(exports,"BASE_VALUES",{enumerable:!0,get:function(){return E}});Object.defineProperty(exports,"BaseEnum",{enumerable:!0,get:function(){return t}});Object.defineProperty(exports,"COLOR_STORAGE_KEY",{enumerable:!0,get:function(){return O}});Object.defineProperty(exports,"DEFAULT_BASE",{enumerable:!0,get:function(){return o}});Object.defineProperty(exports,"DEFAULT_THEME",{enumerable:!0,get:function(){return n}});Object.defineProperty(exports,"THEME_VALUES",{enumerable:!0,get:function(){return u}});Object.defineProperty(exports,"ThemeEnum",{enumerable:!0,get:function(){return r}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-theme-D49XQfXe.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-theme-D49XQfXe.cjs","names":[],"sources":["../src/themes/types/theme.ts"],"sourcesContent":["/**\n * 主题相关类型:颜色变量、基础变量、主题枚举与常量。\n * Theme types: color/base variables, theme enums and constants.\n */\n\n/** 颜色变量(主题色、背景、边框、文字、图表等一切与颜色相关) */\nexport interface ColorVariables {\n // ─── 主色 Primary ───────────────────────────────────────────────\n\n /** 主品牌色 — 按钮、链接、激活态 | `--color-primary` */\n primary: string;\n /** 主色悬停 — 按钮 hover / ShowFilter active | `--color-primary-hover` */\n primaryHover: string;\n /** 主色浅色 — 标签底色、浅色按钮、选中态背景 | `--color-primary-light` */\n primaryLight: string;\n /** 主色极浅底 — Input/SearchInput focus 发光底、选中行底 | `--color-primary-bg` */\n primaryBg: string;\n /** 主色 RGB 三元组 — 用于 `rgba(var(--color-primary-rgb), α)` 计算 | `--color-primary-rgb` */\n primaryRgb: string;\n /** 主色半透明 — focus ring 外环、Dropdown 聚焦阴影 | `--color-primary-transparent` `--color-primary-alpha` */\n primaryTransparent: string;\n /** 主色上的前景文字 — 按钮白字 / 深色背景字 | `--color-primary-fg` */\n primaryFg: string;\n\n // ─── 语义色 Semantic ─────────────────────────────────────────────\n\n /** 成功色 — Toast 成功、状态徽标 | `--color-success` */\n success: string;\n /** 成功色浅底 — 成功 Alert 背景 | `--color-success-light` */\n successLight: string;\n /** 成功色 RGB — `rgba(var(--color-success-rgb), α)` | `--color-success-rgb` */\n successRgb: string;\n /** 信息色 — 提示 Alert、Badge | `--color-info` */\n info: string;\n /** 信息色浅底 — 信息 Alert 背景 | `--color-info-light` */\n infoLight: string;\n /** 信息色 RGB — `rgba(var(--color-info-rgb), α)` | `--color-info-rgb` */\n infoRgb: string;\n /** 警告色 — 警告 Toast、图标 | `--color-warning` */\n warning: string;\n /** 警告色浅底 — 警告 Alert 背景 | `--color-warning-light` */\n warningLight: string;\n /** 警告色 RGB — `rgba(var(--color-warning-rgb), α)` | `--color-warning-rgb` */\n warningRgb: string;\n /** 危险色 — 删除按钮、表单错误边框 | `--color-danger` `--color-error` */\n danger: string;\n /** 危险色浅底 — 危险按钮 hover、错误 Alert 底 | `--color-danger-light` */\n dangerLight: string;\n /** 危险色 RGB — Input/Textarea 错误 focus ring | `--color-danger-rgb` `--color-error-rgb` */\n dangerRgb: string;\n\n // ─── 背景 Background ────────────────────────────────────────────\n\n /** 页面底色 — html body、最外层容器 | `--color-bg` `--color-bg-1` */\n bg: string;\n /** 二级背景 — Sidebar、Footer、卡片 | `--color-bg-2` */\n bg2: string;\n /** 三级背景 — 菜单 hover、条纹行 | `--color-bg-3` */\n bg3: string;\n /** 四级背景 — 深层嵌套面板 | `--color-bg-4` */\n bg4: string;\n /** 辅助背景 — Suspense fallback 面板 | `--color-bg-secondary` */\n bgSecondary: string;\n\n // ─── 边框 Border ─────────────────────────────────────────────────\n\n /** 最浅边框 — 容器默认边框 | `--color-border` */\n border: string;\n /** 二级边框 — 分隔线 | `--color-border-2` */\n border2: string;\n /** 三级边框 — Input 非激活边、列表分隔 | `--color-border-3` */\n border3: string;\n /** 四级边框 — Input/Button 默认边框 | `--color-border-4` */\n border4: string;\n /** 五级边框(最深) — disabled Input 边框 | `--color-border-5` */\n border5: string;\n /** 悬停边框 — Suspense retry hover、ShowFilter hover | `--color-border-hover` */\n borderHover: string;\n\n // ─── 前景 / 文字 Foreground ──────────────────────────────────────\n\n /** 辅助图标色 — icon placeholder、ShowFilter 默认色 | `--color-fg` */\n fg: string;\n /** 正文文字 — 段落、表格内容 | `--color-fg-text` */\n fgText: string;\n /** 标题文字 — h1-h6、Input label | `--color-fg-heading` */\n fgHeading: string;\n /** 高亮文字 — 链接、Dropdown 选中项 | `--color-fg-highlight` */\n fgHighlight: string;\n /** 次要文字 — placeholder、hint、辅助说明 | `--color-fg-muted` */\n fgMuted: string;\n /** 主色上的文字 — primary 按钮/Badge 内文字 | `--color-fg-on-primary` */\n fgOnPrimary: string;\n /** 分隔线 — Sidebar 底部分隔、Dropdown 选项间隔 | `--color-separator` */\n separator: string;\n\n // ─── 全局效果 Effects ────────────────────────────────────────────\n\n /** 遮罩层 — Modal/Drawer 背景蒙版 | `--color-overlay` */\n overlay: string;\n /** 阴影色 — 卡片/弹出层 box-shadow 基色 | `--color-shadow` */\n shadow: string;\n /** 焦点环 — 键盘 Tab 导航 focus outline | `--color-ring` */\n ring: string;\n\n // ─── 通用图表系列 Chart Series ───────────────────────────────────\n\n /** 图表系列 1(通常=主色) — 多系列折线/柱状图第 1 组 | `--color-chart-1` */\n chart1: string;\n /** 图表系列 2 — 第 2 组数据线 | `--color-chart-2` */\n chart2: string;\n /** 图表系列 3 — 第 3 组数据线 | `--color-chart-3` */\n chart3: string;\n /** 图表系列 4 — 第 4 组数据线 | `--color-chart-4` */\n chart4: string;\n /** 图表系列 5 — 第 5 组数据线 | `--color-chart-5` */\n chart5: string;\n\n // ─── 专用图表 Specific Charts ────────────────────────────────────\n\n /** 温度计仪表盘 — 圆弧填充渐变(5 色由浅到深)、空弧、滑块 */\n temperature: {\n arcFill: string[];\n arcEmpty: string;\n thumbBg: string;\n thumbBorder: string;\n };\n\n /** 太阳能面板图 — 渐变、阴影、第二系列 */\n solar: {\n gradientLeft: string;\n gradientRight: string;\n shadowColor: string;\n secondSeriesFill: string;\n };\n\n /** 流量图 — tooltip、坐标轴、数据点、渐变 */\n traffic: {\n tooltipBg: string;\n tooltipBorderColor: string;\n tooltipTextColor: string;\n yAxisSplitLine: string;\n lineBg: string;\n itemColor: string;\n itemBorderColor: string;\n itemEmphasisBorderColor: string;\n shadowLineDarkBg: string;\n shadowLineShadow: string;\n gradFrom: string;\n gradTo: string;\n };\n\n /** 电力图 — tooltip、坐标轴、折线渐变、面积渐变 */\n electricity: {\n tooltipBg: string;\n tooltipLineColor: string;\n tooltipBorderColor: string;\n tooltipTextColor: string;\n axisLineColor: string;\n xAxisTextColor: string;\n yAxisSplitLine: string;\n itemBorderColor: string;\n lineGradFrom: string;\n lineGradTo: string;\n lineShadow: string;\n areaGradFrom: string;\n areaGradTo: string;\n shadowLineDarkBg: string;\n };\n\n /** ECharts 全局 — 画布底色、文字、坐标轴、tooltip */\n echarts: {\n bg: string;\n textColor: string;\n axisLineColor: string;\n splitLineColor: string;\n itemHoverShadowColor: string;\n tooltipBackgroundColor: string;\n };\n\n /** Chart.js 全局 — 坐标轴、文字 */\n chartjs: {\n axisLineColor: string;\n textColor: string;\n };\n}\n\n/** 非颜色变量(圆角等,可随平台不同:iOS 24 / Android|Windows 6 / Linux 4) */\nexport interface BaseVariables {\n radius: {\n button: number;\n card: number;\n input: number;\n modal: number;\n badge: number;\n avatar: number;\n };\n\n spacing: {\n xs: number;\n sm: number;\n md: number;\n lg: number;\n xl: number;\n page: number;\n card: number;\n sectionGap: number;\n gridGap: number;\n };\n\n border: {\n thin: number;\n base: number;\n thick: number;\n focusRing: number;\n };\n\n size: {\n buttonSm: number;\n buttonMd: number;\n buttonLg: number;\n inputSm: number;\n inputMd: number;\n inputLg: number;\n navbarHeight: number;\n sidebarWidth: number;\n };\n\n typography: {\n fontFamilyBase: string;\n fontFamilyHeading: string;\n fontSizeXs: number;\n fontSizeSm: number;\n fontSizeMd: number;\n fontSizeLg: number;\n fontSizeXl: number;\n fontWeightNormal: number;\n fontWeightMedium: number;\n fontWeightBold: number;\n lineHeightBase: number;\n };\n\n motion: {\n fast: number;\n base: number;\n slow: number;\n easingStandard: string;\n };\n\n zIndex: {\n dropdown: number;\n sticky: number;\n modal: number;\n toast: number;\n tooltip: number;\n };\n}\n\n/** 颜色主题:name/displayName 表示这套配色是谁 */\nexport interface ColorTheme {\n name: string;\n displayName: string;\n variables: ColorVariables;\n}\n\n/** 基础主题:name/displayName 表示这套基础规范是谁(如 iOS / Android / 默认) */\nexport interface BaseTheme {\n name: string;\n displayName: string;\n variables: BaseVariables;\n}\n\n/** 完整主题 = 颜色主题 + 基础主题 */\nexport interface Theme {\n colors: ColorTheme;\n base: BaseTheme;\n}\n\n/** 颜色主题枚举 */\nexport enum ThemeEnum {\n DEFAULT = \"default\",\n LIGHT = \"light\",\n CORPORATE = \"corporate\",\n FOREST = \"forest\",\n DARK = \"dark\",\n COSMIC = \"cosmic\",\n COFFEE = \"coffee\",\n WINE = \"wine\",\n WHEAT = \"wheat\",\n}\n\nexport const DEFAULT_THEME = ThemeEnum.DEFAULT;\nexport const THEME_VALUES = Object.values(ThemeEnum);\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);\n\nexport const COLOR_STORAGE_KEY = \"theme-color\";\nexport const BASE_STORAGE_KEY = \"theme-base\";\n"],"mappings":"AAuRA,IAAY,GAAL,SAAA,EAAA,CACL,OAAA,EAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,UAAA,YACA,EAAA,OAAA,SACA,EAAA,KAAA,OACA,EAAA,OAAA,SACA,EAAA,OAAA,SACA,EAAA,KAAA,OACA,EAAA,MAAA,SACF,GAAA,CAAA,CAAA,EAEa,EAAA,UACA,EAAe,OAAO,OAAO,CAAS,EAGvC,GAAL,SAAA,EAAA,CACL,OAAA,EAAA,QAAA,UACA,EAAA,IAAA,MACA,EAAA,QAAA,UACA,EAAA,QAAA,UACA,EAAA,MAAA,SACF,GAAA,CAAA,CAAA,EAEa,EAAA,UACA,EAAc,OAAO,OAAO,CAAQ,EAEpC,EAAoB,cACpB,EAAmB"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
let t=require("react");var r=(0,t.createContext)(void 0),u=()=>{const e=(0,t.useContext)(r);if(e===void 0)throw new Error("useLayout must be used within a LayoutProvider");return e};Object.defineProperty(exports,"LayoutContext",{enumerable:!0,get:function(){return r}});Object.defineProperty(exports,"useLayout",{enumerable:!0,get:function(){return u}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-useLayout-BAIFfydj.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-useLayout-BAIFfydj.cjs","names":[],"sources":["../src/designs/layouts/hooks/useLayout.ts"],"sourcesContent":["/**\n * 布局上下文与 useLayout:供子组件消费侧栏状态与 setLayoutMode。\n * Layout context and useLayout: for consuming sidebar state and setLayoutMode.\n */\nimport type { LayoutContextType } from \"../types\";\n\nimport { createContext, useContext } from \"react\";\n\nconst LayoutContext = createContext<LayoutContextType | undefined>(undefined);\n\nconst useLayout = () => {\n const context = useContext(LayoutContext);\n if (context === undefined) {\n throw new Error(\"useLayout must be used within a LayoutProvider\");\n }\n return context;\n};\n\nexport default useLayout;\nexport { LayoutContext, useLayout };\n"],"mappings":"uBAQA,IAAM,KAAA,EAAA,eAA6D,MAAS,EAEtE,EAAA,IAAkB,CACtB,MAAM,KAAA,EAAA,YAAqB,CAAa,EACxC,GAAI,IAAY,OACd,MAAM,IAAI,MAAM,gDAAgD,EAElE,OAAO,CACT"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createContext as o, useContext as e } from "react";
|
|
2
|
-
var r = o(void 0), u = () => {
|
|
3
|
-
const t = e(r);
|
|
4
|
-
if (t === void 0) throw new Error("useLayout must be used within a LayoutProvider");
|
|
5
|
-
return t;
|
|
6
|
-
};
|
|
7
|
-
export {
|
|
8
|
-
u as n,
|
|
9
|
-
r as t
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=chunk-useLayout-BXsJlpcb.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-useLayout-BXsJlpcb.mjs","names":[],"sources":["../src/designs/layouts/hooks/useLayout.ts"],"sourcesContent":["/**\n * 布局上下文与 useLayout:供子组件消费侧栏状态与 setLayoutMode。\n * Layout context and useLayout: for consuming sidebar state and setLayoutMode.\n */\nimport type { LayoutContextType } from \"../types\";\n\nimport { createContext, useContext } from \"react\";\n\nconst LayoutContext = createContext<LayoutContextType | undefined>(undefined);\n\nconst useLayout = () => {\n const context = useContext(LayoutContext);\n if (context === undefined) {\n throw new Error(\"useLayout must be used within a LayoutProvider\");\n }\n return context;\n};\n\nexport default useLayout;\nexport { LayoutContext, useLayout };\n"],"mappings":";AAQA,IAAM,IAAgB,EAA6C,MAAS,GAEtE,IAAA,MAAkB;AACtB,QAAM,IAAU,EAAW,CAAa;AACxC,MAAI,MAAY,OACd,OAAM,IAAI,MAAM,gDAAgD;AAElE,SAAO;AACT"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { createContext as t, useContext as o } from "react";
|
|
2
|
-
var r = t(void 0);
|
|
3
|
-
function i() {
|
|
4
|
-
const e = o(r);
|
|
5
|
-
if (e === void 0) throw new Error("useTheme must be used within a ThemeProvider");
|
|
6
|
-
return e;
|
|
7
|
-
}
|
|
8
|
-
export {
|
|
9
|
-
i as n,
|
|
10
|
-
r as t
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=chunk-useTheme-BY1_pW9y.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-useTheme-BY1_pW9y.mjs","names":[],"sources":["../src/themes/hooks/useTheme.ts"],"sourcesContent":["/**\n * 主题上下文与 useTheme:供子组件消费当前主题与 setTheme/setBase。\n * Theme context and useTheme: for consuming current theme and setTheme/setBase.\n */\nimport type { ThemeContextType } from \"../types\";\n\nimport { createContext, useContext } from \"react\";\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nfunction useTheme(): ThemeContextType {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n\nexport { ThemeContext, useTheme };\nexport type { ThemeContextType } from \"../types\";\n"],"mappings":";AAQA,IAAM,IAAe,EAA4C,MAAS;AAE1E,SAAS,IAA6B;AACpC,QAAM,IAAU,EAAW,CAAY;AACvC,MAAI,MAAY,OACd,OAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAO;AACT"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
let t=require("react");var r=(0,t.createContext)(void 0);function n(){const e=(0,t.useContext)(r);if(e===void 0)throw new Error("useTheme must be used within a ThemeProvider");return e}Object.defineProperty(exports,"ThemeContext",{enumerable:!0,get:function(){return r}});Object.defineProperty(exports,"useTheme",{enumerable:!0,get:function(){return n}});
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=chunk-useTheme-Tw_7_cQf.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunk-useTheme-Tw_7_cQf.cjs","names":[],"sources":["../src/themes/hooks/useTheme.ts"],"sourcesContent":["/**\n * 主题上下文与 useTheme:供子组件消费当前主题与 setTheme/setBase。\n * Theme context and useTheme: for consuming current theme and setTheme/setBase.\n */\nimport type { ThemeContextType } from \"../types\";\n\nimport { createContext, useContext } from \"react\";\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nfunction useTheme(): ThemeContextType {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n}\n\nexport { ThemeContext, useTheme };\nexport type { ThemeContextType } from \"../types\";\n"],"mappings":"uBAQA,IAAM,KAAA,EAAA,eAA2D,MAAS,EAE1E,SAAS,GAA6B,CACpC,MAAM,KAAA,EAAA,YAAqB,CAAY,EACvC,GAAI,IAAY,OACd,MAAM,IAAI,MAAM,8CAA8C,EAEhE,OAAO,CACT"}
|
package/dist/hooks.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.cjs","names":[],"sources":["../src/hooks/makeCursorFetchFunction.tsx","../src/hooks/type.ts","../src/hooks/makeUnifiedInfiniteQuery.tsx","../src/hooks/makeUnifiedQuery.tsx"],"sourcesContent":["import type { ListDTOWithNextCursor, ListDTOWithTotalNumber } from \"@/types/api\";\nimport type { FetchNumberListParams, FetchStringListParams } from \"./type\";\n\n/**\n * 创建基于游标(Cursor)的分页获取函数\n *\n * 将标准的分页 API(基于 offset/limit)转换为游标分页函数,用于无限查询。\n * 自动计算下一页游标,并支持数据后处理。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchFunc - 远程数据获取函数,接收 FetchListParams 参数,返回包含 items 和 total 的结果\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在每次数据获取后调用\n *\n * @returns {Function} 返回一个游标分页函数,接收 pageParam(页码)和 filter(过滤器)参数\n *\n * @example\n * ```tsx\n * * 定义标准的分页 API\n * const fetchProductsAPI = async (params: { offset: number; limit: number; category?: string }) => {\n * const response = await fetch('/api/products?' + new URLSearchParams(params));\n * const { items, total } = await response.json();\n * return { items, total };\n * };\n *\n * * 创建游标分页函数\n * const fetchProducts = makeCursorFetchFunction(\n * fetchProductsAPI,\n * 20,\n * (data) => {\n * * 数据后处理:为每个商品添加缓存\n * data.forEach(product => cache.set(product.id, product));\n * }\n * );\n *\n * * 使用游标函数\n * const firstPage = await fetchProducts(0, { category: \"electronics\" });\n * * 返回: ListDTOWithTotalNumber<Product> = { items, total }\n * * getNextPageParam 由 makeUnifiedInfiniteQuery 根据 total 与 pageSize 计算\n * ```\n *\n * @remarks\n * **为什么需要游标转换?**\n * - React Query 的无限查询使用 pageParam(游标)来跟踪分页位置\n * - 后端 API 通常使用 offset/limit 分页,两者需要转换才能配合使用\n * - 游标模式更适合无限滚动,避免在组件中手动计算 offset\n *\n * **游标计算逻辑:**\n * - **offset 计算**:`offset = pageParam × pageSize`\n * - 示例:pageParam=0 → offset=0(第一页)\n * - 示例:pageParam=2, pageSize=20 → offset=40(第三页,跳过前 40 条)\n * - **nextCursor 判断**:`(pageParam + 1) × pageSize < total ? pageParam + 1 : undefined`\n * - 如果下一页的起始位置小于总数,返回下一页页码\n * - 否则返回 undefined,告知 React Query 没有更多数据\n *\n * **为什么 pageParam 从 0 开始?**\n * - 符合数组索引习惯,第 0 页、第 1 页...\n * - 计算 offset 时公式更简洁:`offset = pageParam × pageSize`\n * - 避免使用 1-based 索引时需要额外的 -1 运算\n *\n * **postProcess 的作用:**\n * - 在数据返回后、缓存前执行,适合进行副作用操作\n * - 常见用途:更新单项缓存、触发分析事件、数据预处理\n * - 不影响返回值,保持数据流的纯净性\n */\nfunction makeCursorFetchFunction<T, F extends object = Record<string, unknown>>(\n fetchFunc: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: number = 0, filter?: F): Promise<ListDTOWithTotalNumber<T>> => {\n const payload = {\n ...filter,\n offset: pageParam * pageSize,\n limit: pageSize,\n } as FetchNumberListParams<F>;\n const { items, total } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, total };\n };\n}\n\n/**\n * 创建基于字符串游标的分页获取函数(用于 nextCursor 为 string 的 API)。\n * Creates cursor-based fetch function for string cursor (API returns nextCursor: string).\n *\n * @param fetchFunc - 远程获取函数,参数含 offset: string, limit,返回 { items, nextCursor }。Fetch (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>.\n * @param pageSize - 每页条数,默认 20。Page size.\n * @param postProcess - 可选,数据返回后调用。Optional post-process (data: T[]) => void.\n * @returns 返回 (pageParam: string, filter?: F) => Promise<ListDTOWithNextCursor<T>>。Returns async cursor fetcher.\n * @example\n * ```ts\n * const fetch = makeStringCursorFetchFunction(fetchByToken, 20);\n * const page = await fetch(\"\", { q: \"x\" });\n * if (page.nextCursor) await fetch(page.nextCursor, { q: \"x\" });\n * ```\n */\nfunction makeStringCursorFetchFunction<T, F extends object = Record<string, unknown>>(\n fetchFunc: (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: string = \"\", filter?: F): Promise<ListDTOWithNextCursor<T>> => {\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","/**\n * Hooks 模块类型:分页 payload、列表参数、React Query options 等。\n * Types for hooks: page payloads, list params, React Query options.\n */\nimport type { UseInfiniteQueryOptions, UseQueryOptions, UseSuspenseInfiniteQueryOptions, UseSuspenseQueryOptions } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithNextCursor, ListDTOWithTotalNumber, OffsetLimitNumber, OffsetLimitString } from \"@/types/api\";\n\n//! ================ Query Mode Constants ================\n\n/** 普通模式(useQuery),可配合 enabled 等。Normal mode (useQuery); supports enabled etc. */\nconst NORMAL = \"normal\" as const;\n\n/** Suspense 模式(useSuspenseQuery),由 React 挂起。Suspense mode (useSuspenseQuery); suspended by React. */\nconst SUSPENSE = \"suspense\" as const;\n\n/** 仅允许 \"normal\" | \"suspense\",请使用 NORMAL / SUSPENSE 避免拼写错误。Only \"normal\" | \"suspense\"; use NORMAL / SUSPENSE to avoid typos. */\ntype QueryMode = typeof NORMAL | typeof SUSPENSE;\n\n//! ================ Base Type ================\n// 列表/分页形状与 offset/limit 参数均来自 @/types/api。\n\n/** F & OffsetLimitNumber,数字分页列表请求参数。Params for number-offset list fetch. */\ntype FetchNumberListParams<F extends object = Record<string, unknown>> = F & OffsetLimitNumber;\n\n/** F & OffsetLimitString,字符串游标列表请求参数。Params for string-cursor list fetch. */\ntype FetchStringListParams<F extends object = Record<string, unknown>> = F & OffsetLimitString;\n\n/** 变更上下文(如 prev)。Mutation context (e.g. prev). */\ntype MutationCtx = {\n prev?: unknown;\n};\n\n//! ================ High Order Type ================\n\n/** 无限查询 options(不含 queryKey/queryFn/getNextPageParam/initialPageParam)。Infinite query options (excludes queryKey, queryFn, getNextPageParam, initialPageParam). */\ntype InfiniteQueryOptions<T> = Omit<\n UseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** 字符串游标无限查询 options。String-cursor infinite query options. */\ntype StringInfiniteQueryOptions<T> = Omit<\n UseInfiniteQueryOptions<ListDTOWithNextCursor<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** Suspense 无限查询 options。Suspense infinite query options. */\ntype SuspenseInfiniteQueryOptions<T> = Omit<\n UseSuspenseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** InfiniteQueryOptions | SuspenseInfiniteQueryOptions。Union of normal and suspense infinite query options. */\ntype InfiniteQueryOptionsUnion<T> = InfiniteQueryOptions<T> | SuspenseInfiniteQueryOptions<T>;\n\n/** 单条查询 Suspense options。Single-item suspense query options. */\ntype SuspenseUnifiedQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/** 普通单条查询 options(含 enabled)。Normal single-item query options (includes enabled). */\ntype NormalUnifiedQueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/** 单条查询参数(options、postProcess + 业务参数)。Single-item query params (options, postProcess, and business params). */\ntype UnifiedQueryParams<T> = {\n options?: SuspenseUnifiedQueryOptions<T>;\n postProcess?: (data: T) => void;\n} & Record<string, unknown>;\n\nexport { NORMAL, SUSPENSE };\nexport type {\n FetchNumberListParams,\n FetchStringListParams,\n InfiniteQueryOptions,\n InfiniteQueryOptionsUnion,\n MutationCtx,\n NormalUnifiedQueryOptions,\n QueryMode,\n StringInfiniteQueryOptions,\n SuspenseInfiniteQueryOptions,\n SuspenseUnifiedQueryOptions,\n UnifiedQueryParams,\n};\n","import type { InfiniteData, QueryKey, UseInfiniteQueryResult, UseSuspenseInfiniteQueryResult } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithTotalNumber } from \"@/types/api\";\nimport type { FetchNumberListParams, InfiniteQueryOptions, InfiniteQueryOptionsUnion, QueryMode, SuspenseInfiniteQueryOptions } from \"./type\";\n\nimport { useMemo } from \"react\";\nimport { useInfiniteQuery, useSuspenseInfiniteQuery } from \"@tanstack/react-query\";\n\nimport { makeCursorFetchFunction } from \"./makeCursorFetchFunction\";\nimport { NORMAL, SUSPENSE } from \"./type\";\n\n//! ================ Function overloads ================\n\n/**\n * 创建统一的无限查询 Hook(Suspense 模式)\n *\n * 这是一个高阶函数工厂,用于创建支持无限滚动的数据查询 Hook。\n * 它自动处理分页、缓存、错误重试等常见场景,并支持 Suspense 模式。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchRemote - 远程数据获取函数,接收分页参数和过滤器,返回 Promise\n * @param {string} mode - 查询模式,设置为 \"suspense\" 启用 React Suspense 支持\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在数据返回后调用\n *\n * @returns {Function} 返回一个 Hook 函数,接收 queryKey、filter 和 options 参数\n *\n * @example\n * ```tsx\n * * 定义 API 获取函数\n * const fetchProducts = async (params: FetchListParams<ProductFilter>) => {\n * const { items, total } = await api.getProducts(params);\n * return { items, total };\n * };\n *\n * * 创建 Hook(Suspense 模式)\n * const useProductList = makeUnifiedInfiniteQuery(\n * fetchProducts,\n * \"suspense\",\n * 20,\n * (data) => console.warn('数据已加载:', data.length)\n * );\n *\n * * 在组件中使用\n * function ProductList() {\n * const { data, fetchNextPage, hasNextPage } = useProductList(\n * [\"products\"],\n * { category: \"electronics\" },\n * { staleTime: 60000 }\n * );\n *\n * return (\n * <div>\n * {data.map(product => <ProductCard key={product.id} {...product} />)}\n * {hasNextPage && <button onClick={() => fetchNextPage()}>加载更多</button>}\n * </div>\n * );\n * }\n * ```\n *\n * @remarks\n * **为什么需要这个函数?**\n * - React Query 的无限查询 API 较为底层,需要手动配置 queryFn、initialPageParam、getNextPageParam 等\n * - 大多数列表查询都有相似的分页逻辑(offset/limit),重复编写这些配置容易出错\n * - 通过工厂函数统一封装,确保分页逻辑的一致性,减少样板代码\n *\n * **为什么区分 Suspense 和普通模式?**\n * - Suspense 模式:数据未就绪时会挂起组件渲染,适合配合 React Suspense 边界使用\n * - 普通模式:提供 isLoading 状态,需要手动处理加载状态,更灵活\n * - 两种模式的 Hook 返回类型不同,TypeScript 需要通过函数重载区分\n *\n * **内部实现原理:**\n * 1. **游标转换**:使用 makeCursorFetchFunction 将 offset/limit 转换为页码游标\n * 2. **查询键构造**:自动将 filter 合并到 queryKey 中,确保不同过滤条件有独立缓存\n * 3. **数据扁平化**:通过 select 将分页数据 pages 扁平化为单一数组,简化组件使用\n * 4. **智能重试**:仅对 5xx 服务器错误和网络错误重试,避免对 4xx 客户端错误无意义重试\n * 5. **选项合并**:使用 spread 运算符允许外部覆盖默认配置(如 staleTime、retry)\n */\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode: \"suspense\",\n pageSize?: number,\n postProcess?: (data: T[]) => void,\n): (queryKey: QueryKey, filter?: F, options?: SuspenseInfiniteQueryOptions<T>) => UseSuspenseInfiniteQueryResult<T[], AxiosError>;\n\n/**\n * 创建统一的无限查询 Hook(普通模式)\n *\n * 这是一个高阶函数工厂,用于创建支持无限滚动的数据查询 Hook。\n * 它自动处理分页、缓存、错误重试等常见场景,普通模式不使用 Suspense。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchRemote - 远程数据获取函数,接收分页参数和过滤器,返回 Promise\n * @param {string} [mode=\"normal\"] - 查询模式,设置为 \"normal\" 或省略使用普通模式\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在数据返回后调用\n *\n * @returns {Function} 返回一个 Hook 函数,接收 queryKey、filter 和 options 参数\n *\n * @example\n * ```tsx\n * * 定义 API 获取函数\n * const fetchProducts = async (params: FetchListParams<ProductFilter>) => {\n * const { items, total } = await api.getProducts(params);\n * return { items, total };\n * };\n *\n * * 创建 Hook(普通模式)\n * const useProductList = makeUnifiedInfiniteQuery(\n * fetchProducts,\n * \"normal\", * 或省略此参数\n * 20\n * );\n *\n * * 在组件中使用\n * function ProductList() {\n * const { data, fetchNextPage, hasNextPage, isLoading } = useProductList(\n * [\"products\"],\n * { category: \"electronics\" },\n * { staleTime: 60000 }\n * );\n *\n * if (isLoading) return <Loading />;\n *\n * return (\n * <div>\n * {data?.map(product => <ProductCard key={product.id} {...product} />)}\n * {hasNextPage && <button onClick={() => fetchNextPage()}>加载更多</button>}\n * </div>\n * );\n * }\n * ```\n */\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode?: \"normal\",\n pageSize?: number,\n postProcess?: (data: T[]) => void,\n): (queryKey: QueryKey, filter?: F, options?: InfiniteQueryOptions<T>) => UseInfiniteQueryResult<T[], AxiosError>;\n\n//! ================ Function implementation ================\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode: QueryMode = NORMAL,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n const fetchFunction = makeCursorFetchFunction(fetchRemote, pageSize, postProcess);\n if (mode === SUSPENSE) {\n return (queryKey: QueryKey, filter?: F, options?: SuspenseInfiniteQueryOptions<T>) =>\n useCreateSuspenseInfiniteQuery(queryKey, fetchFunction, filter, options, pageSize);\n }\n return (queryKey: QueryKey, filter?: F, options?: InfiniteQueryOptions<T>) =>\n useCreateNormalInfiniteQuery(queryKey, fetchFunction, filter, options, pageSize);\n}\n\nexport { makeUnifiedInfiniteQuery };\n\n//! ================ Private Function ================\n\nfunction buildCommonOptions<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: InfiniteQueryOptionsUnion<T>,\n pageSize?: number,\n) {\n return {\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: ({ pageParam }: { pageParam: number }) => fetchFunction(pageParam, filter || ({} as F)),\n initialPageParam: 0,\n getNextPageParam: (lastPage: ListDTOWithTotalNumber<T>, allPages: ListDTOWithTotalNumber<T>[]) =>\n pageSize != null && 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 useCreateNormalInfiniteQuery<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: InfiniteQueryOptions<T>,\n pageSize?: number,\n) {\n const common = useMemo(() => buildCommonOptions(queryKey, fetchFunction, filter, options, pageSize), [queryKey, fetchFunction, filter, options, pageSize]);\n return useInfiniteQuery(common);\n}\n\nfunction useCreateSuspenseInfiniteQuery<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: SuspenseInfiniteQueryOptions<T>,\n pageSize?: number,\n) {\n const common = useMemo(() => buildCommonOptions(queryKey, fetchFunction, filter, options, pageSize), [queryKey, fetchFunction, filter, options, pageSize]);\n return useSuspenseInfiniteQuery(common);\n}\n","import type { QueryKey, UseQueryOptions, UseQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { QueryMode } from \"./type\";\n\nimport { useMemo } from \"react\";\nimport { useQuery, useSuspenseQuery } from \"@tanstack/react-query\";\n\nimport { NORMAL } from \"./type\";\n\ntype QueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\ntype SuspenseQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/**\n * 创建统一的单条查询 Hook 工厂(支持 normal / suspense 模式)。\n * Creates a unified single-item query Hook factory (normal or suspense mode).\n *\n * @param fetchRemote - 拉取函数,接收 filter 返回 Promise<T>。Fetch function (params: F) => Promise<T>.\n * @param mode - \"suspense\" 或 \"normal\"(默认)。Query mode.\n * @param postProcess - 可选,数据返回后调用。Optional post-process (data: T) => void.\n * @returns 返回一个 Hook:(queryKey, filter?, options?) => UseQueryResult 或 UseSuspenseQueryResult。Returns a Hook.\n * @example\n * ```ts\n * const useProfile = makeUnifiedQuery(fetchProfile, \"normal\");\n * const { data } = useProfile(profileKey, { id }, { enabled: !!id });\n * ```\n */\n// ------------------ Overload Signatures ------------------\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode: \"suspense\",\n postProcess?: (data: T) => void,\n): (queryKey: QueryKey, filter?: F, options?: Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">) => UseSuspenseQueryResult<T, AxiosError>;\n\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode?: \"normal\",\n postProcess?: (data: T) => void,\n): (queryKey: QueryKey, filter?: F, options?: Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">) => UseQueryResult<T, AxiosError>;\n\n// ------------------ Implementation ------------------\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode: QueryMode = NORMAL,\n postProcess?: (data: T) => void,\n) {\n const fetchFunction = async (filter: F): Promise<T> => {\n const data = await fetchRemote(filter);\n postProcess?.(data);\n return data;\n };\n\n const buildCommonOptions = (queryKey: QueryKey, filter?: F, options?: QueryOptions<T> | SuspenseQueryOptions<T>) => {\n return {\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: () => fetchFunction(filter || ({} as F)),\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 options?.retry === \"number\" ? options.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(options as object),\n };\n };\n\n // Normal Query\n function useQueryNormal(queryKey: QueryKey, filter?: F, options?: QueryOptions<T>): UseQueryResult<T, AxiosError> {\n const common = useMemo(() => buildCommonOptions(queryKey, filter, options), [queryKey, filter, options]);\n return useQuery(common);\n }\n\n // Suspense Query\n function useQuerySuspense(queryKey: QueryKey, filter?: F, options?: SuspenseQueryOptions<T>): UseSuspenseQueryResult<T, AxiosError> {\n const common = useMemo(() => buildCommonOptions(queryKey, filter, options), [queryKey, filter, options]);\n return useSuspenseQuery(common);\n }\n\n if (mode === \"suspense\") {\n return (queryKey: QueryKey, filter?: F, options?: SuspenseQueryOptions<T>) => useQuerySuspense(queryKey, filter, options);\n }\n return (queryKey: QueryKey, filter?: F, options?: QueryOptions<T>) => useQueryNormal(queryKey, filter, options);\n}\n\nexport { makeUnifiedQuery };\n"],"mappings":";6HAmEA,SAAS,EACP,EACA,EAAmB,GACnB,EACA,CACA,MAAO,OAAO,EAAoB,EAAG,IAAmD,CAMtF,KAAM,CAAE,MAAA,EAAO,MAAA,CAAA,EAAU,MAAM,EAAU,CAJvC,GAAG,EACH,OAAQ,EAAY,EACpB,MAAO,CAEgC,CAAO,EAChD,OAAI,GAAO,QAAQ,IAAc,CAAK,EAC/B,CAAE,MAAA,EAAO,MAAA,CAAM,CACxB,CACF,CAiBA,SAAS,EACP,EACA,EAAmB,GACnB,EACA,CACA,MAAO,OAAO,EAAoB,GAAI,IAAkD,CAMtF,KAAM,CAAE,MAAA,EAAO,WAAA,CAAA,EAAe,MAAM,EAAU,CAJ5C,GAAG,EACH,OAAQ,EACR,MAAO,CAEqC,CAAO,EACrD,OAAI,GAAO,QAAQ,IAAc,CAAK,EAC/B,CAAE,MAAA,EAAO,WAAA,CAAW,CAC7B,CACF,CCvGA,IAAM,EAAS,SAGT,EAAW,WCmIjB,SAAS,EACP,EACA,EAAkB,EAClB,EAAmB,GACnB,EACA,CACA,MAAM,EAAgB,EAAwB,EAAa,EAAU,CAAW,EAChF,OAAI,IAAA,WACF,CAAQ,EAAoB,EAAY,IACtC,EAA+B,EAAU,EAAe,EAAQ,EAAS,CAAQ,EAErF,CAAQ,EAAoB,EAAY,IACtC,EAA6B,EAAU,EAAe,EAAQ,EAAS,CAAQ,CACnF,CAMA,SAAS,EACP,EACA,EACA,EACA,EACA,EACA,CACA,MAAO,CAEL,SAAU,IAAW,OAAY,CAAC,GAAG,EAAU,CAAM,EAAI,EACzD,QAAA,CAAU,CAAE,UAAA,CAAA,IAAuC,EAAc,EAAW,GAAW,CAAC,CAAO,EAC/F,iBAAkB,EAClB,iBAAA,CAAmB,EAAqC,IACtD,GAAY,MAAQ,EAAS,OAAS,EAAW,EAAS,MAAQ,EAAS,OAAS,OACtF,OAAS,GAA+C,EAAE,MAAM,QAAS,GAAM,EAAE,KAAK,EACtF,MAAA,CAAQ,EAAsB,IAAsB,CAClD,MAAM,EAAa,GAAO,QAAU,EAAM,QAAU,KAAQ,GAAO,OAAS,gBACtE,EAAW,OAAO,GAAS,OAAU,SAAW,EAAQ,MAAQ,EACtE,OAAO,GAAa,EAAe,CACrC,EACA,GAAI,CACN,CACF,CAEA,SAAS,EACP,EACA,EACA,EACA,EACA,EACA,CAEA,SAAA,EAAA,qBAAA,EAAA,SAAA,IAD6B,EAAmB,EAAU,EAAe,EAAQ,EAAS,CAAQ,EAAG,CAAC,EAAU,EAAe,EAAQ,EAAS,CAAQ,CAChI,CAAM,CAChC,CAEA,SAAS,EACP,EACA,EACA,EACA,EACA,EACA,CAEA,SAAA,EAAA,6BAAA,EAAA,SAAA,IAD6B,EAAmB,EAAU,EAAe,EAAQ,EAAS,CAAQ,EAAG,CAAC,EAAU,EAAe,EAAQ,EAAS,CAAQ,CACxH,CAAM,CACxC,CCxKA,SAAS,EACP,EACA,EAAkB,EAClB,EACA,CACA,MAAM,EAAgB,MAAO,GAA0B,CACrD,MAAM,EAAO,MAAM,EAAY,CAAM,EACrC,OAAA,IAAc,CAAI,EACX,CACT,EAEM,EAAA,CAAsB,EAAoB,EAAY,KACnD,CACL,SAAU,IAAW,OAAY,CAAC,GAAG,EAAU,CAAM,EAAI,EACzD,QAAA,IAAe,EAAc,GAAW,CAAC,CAAO,EAChD,OAAS,GAAY,EACrB,MAAA,CAAQ,EAAsB,IAAsB,CAClD,MAAM,EAAS,GAAO,QAAU,GAAO,UAAU,OAC3C,EAAa,OAAO,GAAW,UAAY,GAAU,KAAQ,GAAO,OAAS,gBAC7E,EAAW,OAAO,GAAS,OAAU,SAAW,EAAQ,MAAQ,EACtE,OAAO,GAAa,EAAe,CACrC,EACA,GAAI,CACN,GAIF,SAAS,EAAe,EAAoB,EAAY,EAA0D,CAEhH,SAAA,EAAA,aAAA,EAAA,SAAA,IAD6B,EAAmB,EAAU,EAAQ,CAAO,EAAG,CAAC,EAAU,EAAQ,CAAO,CACtF,CAAM,CACxB,CAGA,SAAS,EAAiB,EAAoB,EAAY,EAA0E,CAElI,SAAA,EAAA,qBAAA,EAAA,SAAA,IAD6B,EAAmB,EAAU,EAAQ,CAAO,EAAG,CAAC,EAAU,EAAQ,CAAO,CAC9E,CAAM,CAChC,CAEA,OAAI,IAAS,WACX,CAAQ,EAAoB,EAAY,IAAsC,EAAiB,EAAU,EAAQ,CAAO,EAE1H,CAAQ,EAAoB,EAAY,IAA8B,EAAe,EAAU,EAAQ,CAAO,CAChH"}
|
package/dist/hooks.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.mjs","names":[],"sources":["../src/hooks/makeCursorFetchFunction.tsx","../src/hooks/type.ts","../src/hooks/makeUnifiedInfiniteQuery.tsx","../src/hooks/makeUnifiedQuery.tsx"],"sourcesContent":["import type { ListDTOWithNextCursor, ListDTOWithTotalNumber } from \"@/types/api\";\nimport type { FetchNumberListParams, FetchStringListParams } from \"./type\";\n\n/**\n * 创建基于游标(Cursor)的分页获取函数\n *\n * 将标准的分页 API(基于 offset/limit)转换为游标分页函数,用于无限查询。\n * 自动计算下一页游标,并支持数据后处理。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchFunc - 远程数据获取函数,接收 FetchListParams 参数,返回包含 items 和 total 的结果\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在每次数据获取后调用\n *\n * @returns {Function} 返回一个游标分页函数,接收 pageParam(页码)和 filter(过滤器)参数\n *\n * @example\n * ```tsx\n * * 定义标准的分页 API\n * const fetchProductsAPI = async (params: { offset: number; limit: number; category?: string }) => {\n * const response = await fetch('/api/products?' + new URLSearchParams(params));\n * const { items, total } = await response.json();\n * return { items, total };\n * };\n *\n * * 创建游标分页函数\n * const fetchProducts = makeCursorFetchFunction(\n * fetchProductsAPI,\n * 20,\n * (data) => {\n * * 数据后处理:为每个商品添加缓存\n * data.forEach(product => cache.set(product.id, product));\n * }\n * );\n *\n * * 使用游标函数\n * const firstPage = await fetchProducts(0, { category: \"electronics\" });\n * * 返回: ListDTOWithTotalNumber<Product> = { items, total }\n * * getNextPageParam 由 makeUnifiedInfiniteQuery 根据 total 与 pageSize 计算\n * ```\n *\n * @remarks\n * **为什么需要游标转换?**\n * - React Query 的无限查询使用 pageParam(游标)来跟踪分页位置\n * - 后端 API 通常使用 offset/limit 分页,两者需要转换才能配合使用\n * - 游标模式更适合无限滚动,避免在组件中手动计算 offset\n *\n * **游标计算逻辑:**\n * - **offset 计算**:`offset = pageParam × pageSize`\n * - 示例:pageParam=0 → offset=0(第一页)\n * - 示例:pageParam=2, pageSize=20 → offset=40(第三页,跳过前 40 条)\n * - **nextCursor 判断**:`(pageParam + 1) × pageSize < total ? pageParam + 1 : undefined`\n * - 如果下一页的起始位置小于总数,返回下一页页码\n * - 否则返回 undefined,告知 React Query 没有更多数据\n *\n * **为什么 pageParam 从 0 开始?**\n * - 符合数组索引习惯,第 0 页、第 1 页...\n * - 计算 offset 时公式更简洁:`offset = pageParam × pageSize`\n * - 避免使用 1-based 索引时需要额外的 -1 运算\n *\n * **postProcess 的作用:**\n * - 在数据返回后、缓存前执行,适合进行副作用操作\n * - 常见用途:更新单项缓存、触发分析事件、数据预处理\n * - 不影响返回值,保持数据流的纯净性\n */\nfunction makeCursorFetchFunction<T, F extends object = Record<string, unknown>>(\n fetchFunc: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: number = 0, filter?: F): Promise<ListDTOWithTotalNumber<T>> => {\n const payload = {\n ...filter,\n offset: pageParam * pageSize,\n limit: pageSize,\n } as FetchNumberListParams<F>;\n const { items, total } = await fetchFunc(payload);\n if (items?.length) postProcess?.(items);\n return { items, total };\n };\n}\n\n/**\n * 创建基于字符串游标的分页获取函数(用于 nextCursor 为 string 的 API)。\n * Creates cursor-based fetch function for string cursor (API returns nextCursor: string).\n *\n * @param fetchFunc - 远程获取函数,参数含 offset: string, limit,返回 { items, nextCursor }。Fetch (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>.\n * @param pageSize - 每页条数,默认 20。Page size.\n * @param postProcess - 可选,数据返回后调用。Optional post-process (data: T[]) => void.\n * @returns 返回 (pageParam: string, filter?: F) => Promise<ListDTOWithNextCursor<T>>。Returns async cursor fetcher.\n * @example\n * ```ts\n * const fetch = makeStringCursorFetchFunction(fetchByToken, 20);\n * const page = await fetch(\"\", { q: \"x\" });\n * if (page.nextCursor) await fetch(page.nextCursor, { q: \"x\" });\n * ```\n */\nfunction makeStringCursorFetchFunction<T, F extends object = Record<string, unknown>>(\n fetchFunc: (params: FetchStringListParams<F>) => Promise<ListDTOWithNextCursor<T>>,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n return async (pageParam: string = \"\", filter?: F): Promise<ListDTOWithNextCursor<T>> => {\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","/**\n * Hooks 模块类型:分页 payload、列表参数、React Query options 等。\n * Types for hooks: page payloads, list params, React Query options.\n */\nimport type { UseInfiniteQueryOptions, UseQueryOptions, UseSuspenseInfiniteQueryOptions, UseSuspenseQueryOptions } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithNextCursor, ListDTOWithTotalNumber, OffsetLimitNumber, OffsetLimitString } from \"@/types/api\";\n\n//! ================ Query Mode Constants ================\n\n/** 普通模式(useQuery),可配合 enabled 等。Normal mode (useQuery); supports enabled etc. */\nconst NORMAL = \"normal\" as const;\n\n/** Suspense 模式(useSuspenseQuery),由 React 挂起。Suspense mode (useSuspenseQuery); suspended by React. */\nconst SUSPENSE = \"suspense\" as const;\n\n/** 仅允许 \"normal\" | \"suspense\",请使用 NORMAL / SUSPENSE 避免拼写错误。Only \"normal\" | \"suspense\"; use NORMAL / SUSPENSE to avoid typos. */\ntype QueryMode = typeof NORMAL | typeof SUSPENSE;\n\n//! ================ Base Type ================\n// 列表/分页形状与 offset/limit 参数均来自 @/types/api。\n\n/** F & OffsetLimitNumber,数字分页列表请求参数。Params for number-offset list fetch. */\ntype FetchNumberListParams<F extends object = Record<string, unknown>> = F & OffsetLimitNumber;\n\n/** F & OffsetLimitString,字符串游标列表请求参数。Params for string-cursor list fetch. */\ntype FetchStringListParams<F extends object = Record<string, unknown>> = F & OffsetLimitString;\n\n/** 变更上下文(如 prev)。Mutation context (e.g. prev). */\ntype MutationCtx = {\n prev?: unknown;\n};\n\n//! ================ High Order Type ================\n\n/** 无限查询 options(不含 queryKey/queryFn/getNextPageParam/initialPageParam)。Infinite query options (excludes queryKey, queryFn, getNextPageParam, initialPageParam). */\ntype InfiniteQueryOptions<T> = Omit<\n UseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** 字符串游标无限查询 options。String-cursor infinite query options. */\ntype StringInfiniteQueryOptions<T> = Omit<\n UseInfiniteQueryOptions<ListDTOWithNextCursor<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** Suspense 无限查询 options。Suspense infinite query options. */\ntype SuspenseInfiniteQueryOptions<T> = Omit<\n UseSuspenseInfiniteQueryOptions<ListDTOWithTotalNumber<T>, AxiosError, T[]>,\n \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"\n>;\n\n/** InfiniteQueryOptions | SuspenseInfiniteQueryOptions。Union of normal and suspense infinite query options. */\ntype InfiniteQueryOptionsUnion<T> = InfiniteQueryOptions<T> | SuspenseInfiniteQueryOptions<T>;\n\n/** 单条查询 Suspense options。Single-item suspense query options. */\ntype SuspenseUnifiedQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/** 普通单条查询 options(含 enabled)。Normal single-item query options (includes enabled). */\ntype NormalUnifiedQueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/** 单条查询参数(options、postProcess + 业务参数)。Single-item query params (options, postProcess, and business params). */\ntype UnifiedQueryParams<T> = {\n options?: SuspenseUnifiedQueryOptions<T>;\n postProcess?: (data: T) => void;\n} & Record<string, unknown>;\n\nexport { NORMAL, SUSPENSE };\nexport type {\n FetchNumberListParams,\n FetchStringListParams,\n InfiniteQueryOptions,\n InfiniteQueryOptionsUnion,\n MutationCtx,\n NormalUnifiedQueryOptions,\n QueryMode,\n StringInfiniteQueryOptions,\n SuspenseInfiniteQueryOptions,\n SuspenseUnifiedQueryOptions,\n UnifiedQueryParams,\n};\n","import type { InfiniteData, QueryKey, UseInfiniteQueryResult, UseSuspenseInfiniteQueryResult } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { ListDTOWithTotalNumber } from \"@/types/api\";\nimport type { FetchNumberListParams, InfiniteQueryOptions, InfiniteQueryOptionsUnion, QueryMode, SuspenseInfiniteQueryOptions } from \"./type\";\n\nimport { useMemo } from \"react\";\nimport { useInfiniteQuery, useSuspenseInfiniteQuery } from \"@tanstack/react-query\";\n\nimport { makeCursorFetchFunction } from \"./makeCursorFetchFunction\";\nimport { NORMAL, SUSPENSE } from \"./type\";\n\n//! ================ Function overloads ================\n\n/**\n * 创建统一的无限查询 Hook(Suspense 模式)\n *\n * 这是一个高阶函数工厂,用于创建支持无限滚动的数据查询 Hook。\n * 它自动处理分页、缓存、错误重试等常见场景,并支持 Suspense 模式。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchRemote - 远程数据获取函数,接收分页参数和过滤器,返回 Promise\n * @param {string} mode - 查询模式,设置为 \"suspense\" 启用 React Suspense 支持\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在数据返回后调用\n *\n * @returns {Function} 返回一个 Hook 函数,接收 queryKey、filter 和 options 参数\n *\n * @example\n * ```tsx\n * * 定义 API 获取函数\n * const fetchProducts = async (params: FetchListParams<ProductFilter>) => {\n * const { items, total } = await api.getProducts(params);\n * return { items, total };\n * };\n *\n * * 创建 Hook(Suspense 模式)\n * const useProductList = makeUnifiedInfiniteQuery(\n * fetchProducts,\n * \"suspense\",\n * 20,\n * (data) => console.warn('数据已加载:', data.length)\n * );\n *\n * * 在组件中使用\n * function ProductList() {\n * const { data, fetchNextPage, hasNextPage } = useProductList(\n * [\"products\"],\n * { category: \"electronics\" },\n * { staleTime: 60000 }\n * );\n *\n * return (\n * <div>\n * {data.map(product => <ProductCard key={product.id} {...product} />)}\n * {hasNextPage && <button onClick={() => fetchNextPage()}>加载更多</button>}\n * </div>\n * );\n * }\n * ```\n *\n * @remarks\n * **为什么需要这个函数?**\n * - React Query 的无限查询 API 较为底层,需要手动配置 queryFn、initialPageParam、getNextPageParam 等\n * - 大多数列表查询都有相似的分页逻辑(offset/limit),重复编写这些配置容易出错\n * - 通过工厂函数统一封装,确保分页逻辑的一致性,减少样板代码\n *\n * **为什么区分 Suspense 和普通模式?**\n * - Suspense 模式:数据未就绪时会挂起组件渲染,适合配合 React Suspense 边界使用\n * - 普通模式:提供 isLoading 状态,需要手动处理加载状态,更灵活\n * - 两种模式的 Hook 返回类型不同,TypeScript 需要通过函数重载区分\n *\n * **内部实现原理:**\n * 1. **游标转换**:使用 makeCursorFetchFunction 将 offset/limit 转换为页码游标\n * 2. **查询键构造**:自动将 filter 合并到 queryKey 中,确保不同过滤条件有独立缓存\n * 3. **数据扁平化**:通过 select 将分页数据 pages 扁平化为单一数组,简化组件使用\n * 4. **智能重试**:仅对 5xx 服务器错误和网络错误重试,避免对 4xx 客户端错误无意义重试\n * 5. **选项合并**:使用 spread 运算符允许外部覆盖默认配置(如 staleTime、retry)\n */\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode: \"suspense\",\n pageSize?: number,\n postProcess?: (data: T[]) => void,\n): (queryKey: QueryKey, filter?: F, options?: SuspenseInfiniteQueryOptions<T>) => UseSuspenseInfiniteQueryResult<T[], AxiosError>;\n\n/**\n * 创建统一的无限查询 Hook(普通模式)\n *\n * 这是一个高阶函数工厂,用于创建支持无限滚动的数据查询 Hook。\n * 它自动处理分页、缓存、错误重试等常见场景,普通模式不使用 Suspense。\n *\n * @template T - 数据项类型\n * @template F - 过滤器对象类型,必须是对象类型,默认为 Record<string, unknown>\n *\n * @param {Function} fetchRemote - 远程数据获取函数,接收分页参数和过滤器,返回 Promise\n * @param {string} [mode=\"normal\"] - 查询模式,设置为 \"normal\" 或省略使用普通模式\n * @param {number} [pageSize=20] - 每页数据条数,默认 20\n * @param {Function} [postProcess] - 可选的数据后处理函数,在数据返回后调用\n *\n * @returns {Function} 返回一个 Hook 函数,接收 queryKey、filter 和 options 参数\n *\n * @example\n * ```tsx\n * * 定义 API 获取函数\n * const fetchProducts = async (params: FetchListParams<ProductFilter>) => {\n * const { items, total } = await api.getProducts(params);\n * return { items, total };\n * };\n *\n * * 创建 Hook(普通模式)\n * const useProductList = makeUnifiedInfiniteQuery(\n * fetchProducts,\n * \"normal\", * 或省略此参数\n * 20\n * );\n *\n * * 在组件中使用\n * function ProductList() {\n * const { data, fetchNextPage, hasNextPage, isLoading } = useProductList(\n * [\"products\"],\n * { category: \"electronics\" },\n * { staleTime: 60000 }\n * );\n *\n * if (isLoading) return <Loading />;\n *\n * return (\n * <div>\n * {data?.map(product => <ProductCard key={product.id} {...product} />)}\n * {hasNextPage && <button onClick={() => fetchNextPage()}>加载更多</button>}\n * </div>\n * );\n * }\n * ```\n */\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode?: \"normal\",\n pageSize?: number,\n postProcess?: (data: T[]) => void,\n): (queryKey: QueryKey, filter?: F, options?: InfiniteQueryOptions<T>) => UseInfiniteQueryResult<T[], AxiosError>;\n\n//! ================ Function implementation ================\nfunction makeUnifiedInfiniteQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: FetchNumberListParams<F>) => Promise<ListDTOWithTotalNumber<T>>,\n mode: QueryMode = NORMAL,\n pageSize: number = 20,\n postProcess?: (data: T[]) => void,\n) {\n const fetchFunction = makeCursorFetchFunction(fetchRemote, pageSize, postProcess);\n if (mode === SUSPENSE) {\n return (queryKey: QueryKey, filter?: F, options?: SuspenseInfiniteQueryOptions<T>) =>\n useCreateSuspenseInfiniteQuery(queryKey, fetchFunction, filter, options, pageSize);\n }\n return (queryKey: QueryKey, filter?: F, options?: InfiniteQueryOptions<T>) =>\n useCreateNormalInfiniteQuery(queryKey, fetchFunction, filter, options, pageSize);\n}\n\nexport { makeUnifiedInfiniteQuery };\n\n//! ================ Private Function ================\n\nfunction buildCommonOptions<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: InfiniteQueryOptionsUnion<T>,\n pageSize?: number,\n) {\n return {\n // eslint-disable-next-line @tanstack/query/exhaustive-deps\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: ({ pageParam }: { pageParam: number }) => fetchFunction(pageParam, filter || ({} as F)),\n initialPageParam: 0,\n getNextPageParam: (lastPage: ListDTOWithTotalNumber<T>, allPages: ListDTOWithTotalNumber<T>[]) =>\n pageSize != null && 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 useCreateNormalInfiniteQuery<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: InfiniteQueryOptions<T>,\n pageSize?: number,\n) {\n const common = useMemo(() => buildCommonOptions(queryKey, fetchFunction, filter, options, pageSize), [queryKey, fetchFunction, filter, options, pageSize]);\n return useInfiniteQuery(common);\n}\n\nfunction useCreateSuspenseInfiniteQuery<T, F extends object = Record<string, unknown>>(\n queryKey: QueryKey,\n fetchFunction: (pageParam: number, filter?: F) => Promise<ListDTOWithTotalNumber<T>>,\n filter?: F,\n options?: SuspenseInfiniteQueryOptions<T>,\n pageSize?: number,\n) {\n const common = useMemo(() => buildCommonOptions(queryKey, fetchFunction, filter, options, pageSize), [queryKey, fetchFunction, filter, options, pageSize]);\n return useSuspenseInfiniteQuery(common);\n}\n","import type { QueryKey, UseQueryOptions, UseQueryResult, UseSuspenseQueryOptions, UseSuspenseQueryResult } from \"@tanstack/react-query\";\nimport type { AxiosError } from \"axios\";\nimport type { QueryMode } from \"./type\";\n\nimport { useMemo } from \"react\";\nimport { useQuery, useSuspenseQuery } from \"@tanstack/react-query\";\n\nimport { NORMAL } from \"./type\";\n\ntype QueryOptions<T> = Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\ntype SuspenseQueryOptions<T> = Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">;\n\n/**\n * 创建统一的单条查询 Hook 工厂(支持 normal / suspense 模式)。\n * Creates a unified single-item query Hook factory (normal or suspense mode).\n *\n * @param fetchRemote - 拉取函数,接收 filter 返回 Promise<T>。Fetch function (params: F) => Promise<T>.\n * @param mode - \"suspense\" 或 \"normal\"(默认)。Query mode.\n * @param postProcess - 可选,数据返回后调用。Optional post-process (data: T) => void.\n * @returns 返回一个 Hook:(queryKey, filter?, options?) => UseQueryResult 或 UseSuspenseQueryResult。Returns a Hook.\n * @example\n * ```ts\n * const useProfile = makeUnifiedQuery(fetchProfile, \"normal\");\n * const { data } = useProfile(profileKey, { id }, { enabled: !!id });\n * ```\n */\n// ------------------ Overload Signatures ------------------\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode: \"suspense\",\n postProcess?: (data: T) => void,\n): (queryKey: QueryKey, filter?: F, options?: Omit<UseSuspenseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">) => UseSuspenseQueryResult<T, AxiosError>;\n\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode?: \"normal\",\n postProcess?: (data: T) => void,\n): (queryKey: QueryKey, filter?: F, options?: Omit<UseQueryOptions<T, AxiosError, T>, \"queryKey\" | \"queryFn\">) => UseQueryResult<T, AxiosError>;\n\n// ------------------ Implementation ------------------\nfunction makeUnifiedQuery<T, F extends object = Record<string, unknown>>(\n fetchRemote: (params: F) => Promise<T>,\n mode: QueryMode = NORMAL,\n postProcess?: (data: T) => void,\n) {\n const fetchFunction = async (filter: F): Promise<T> => {\n const data = await fetchRemote(filter);\n postProcess?.(data);\n return data;\n };\n\n const buildCommonOptions = (queryKey: QueryKey, filter?: F, options?: QueryOptions<T> | SuspenseQueryOptions<T>) => {\n return {\n queryKey: filter !== undefined ? [...queryKey, filter] : queryKey,\n queryFn: () => fetchFunction(filter || ({} as F)),\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 options?.retry === \"number\" ? options.retry : 3;\n return transient && failureCount < retryMax;\n },\n ...(options as object),\n };\n };\n\n // Normal Query\n function useQueryNormal(queryKey: QueryKey, filter?: F, options?: QueryOptions<T>): UseQueryResult<T, AxiosError> {\n const common = useMemo(() => buildCommonOptions(queryKey, filter, options), [queryKey, filter, options]);\n return useQuery(common);\n }\n\n // Suspense Query\n function useQuerySuspense(queryKey: QueryKey, filter?: F, options?: SuspenseQueryOptions<T>): UseSuspenseQueryResult<T, AxiosError> {\n const common = useMemo(() => buildCommonOptions(queryKey, filter, options), [queryKey, filter, options]);\n return useSuspenseQuery(common);\n }\n\n if (mode === \"suspense\") {\n return (queryKey: QueryKey, filter?: F, options?: SuspenseQueryOptions<T>) => useQuerySuspense(queryKey, filter, options);\n }\n return (queryKey: QueryKey, filter?: F, options?: QueryOptions<T>) => useQueryNormal(queryKey, filter, options);\n}\n\nexport { makeUnifiedQuery };\n"],"mappings":";;;AAmEA,SAAS,EACP,GACA,IAAmB,IACnB,GACA;AACA,SAAO,OAAO,IAAoB,GAAG,MAAmD;AAMtF,UAAM,EAAE,OAAA,GAAO,OAAA,EAAA,IAAU,MAAM,EAAU;AAAA,MAJvC,GAAG;AAAA,MACH,QAAQ,IAAY;AAAA,MACpB,OAAO;AAAA,IAEgC,CAAO;AAChD,WAAI,GAAO,UAAQ,IAAc,CAAK,GAC/B;AAAA,MAAE,OAAA;AAAA,MAAO,OAAA;AAAA,IAAM;AAAA,EACxB;AACF;AAiBA,SAAS,EACP,GACA,IAAmB,IACnB,GACA;AACA,SAAO,OAAO,IAAoB,IAAI,MAAkD;AAMtF,UAAM,EAAE,OAAA,GAAO,YAAA,EAAA,IAAe,MAAM,EAAU;AAAA,MAJ5C,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,OAAO;AAAA,IAEqC,CAAO;AACrD,WAAI,GAAO,UAAQ,IAAc,CAAK,GAC/B;AAAA,MAAE,OAAA;AAAA,MAAO,YAAA;AAAA,IAAW;AAAA,EAC7B;AACF;ACvGA,IAAM,IAAS,UAGT,IAAW;ACmIjB,SAAS,EACP,GACA,IAAkB,GAClB,IAAmB,IACnB,GACA;AACA,QAAM,IAAgB,EAAwB,GAAa,GAAU,CAAW;AAChF,SAAI,MAAA,aACF,CAAQ,GAAoB,GAAY,MACtC,EAA+B,GAAU,GAAe,GAAQ,GAAS,CAAQ,IAErF,CAAQ,GAAoB,GAAY,MACtC,EAA6B,GAAU,GAAe,GAAQ,GAAS,CAAQ;AACnF;AAMA,SAAS,EACP,GACA,GACA,GACA,GACA,GACA;AACA,SAAO;AAAA,IAEL,UAAU,MAAW,SAAY,CAAC,GAAG,GAAU,CAAM,IAAI;AAAA,IACzD,SAAA,CAAU,EAAE,WAAA,EAAA,MAAuC,EAAc,GAAW,KAAW,CAAC,CAAO;AAAA,IAC/F,kBAAkB;AAAA,IAClB,kBAAA,CAAmB,GAAqC,MACtD,KAAY,QAAQ,EAAS,SAAS,IAAW,EAAS,QAAQ,EAAS,SAAS;AAAA,IACtF,QAAA,CAAS,MAA+C,EAAE,MAAM,QAAA,CAAS,MAAM,EAAE,KAAK;AAAA,IACtF,OAAA,CAAQ,GAAsB,MAAsB;AAClD,YAAM,IAAa,GAAO,UAAU,EAAM,UAAU,OAAQ,GAAO,SAAS,iBACtE,IAAW,OAAO,GAAS,SAAU,WAAW,EAAQ,QAAQ;AACtE,aAAO,KAAa,IAAe;AAAA,IACrC;AAAA,IACA,GAAI;AAAA,EACN;AACF;AAEA,SAAS,EACP,GACA,GACA,GACA,GACA,GACA;AAEA,SAAO,EADQ,EAAA,MAAc,EAAmB,GAAU,GAAe,GAAQ,GAAS,CAAQ,GAAG;AAAA,IAAC;AAAA,IAAU;AAAA,IAAe;AAAA,IAAQ;AAAA,IAAS;AAAA,EAAQ,CAChI,CAAM;AAChC;AAEA,SAAS,EACP,GACA,GACA,GACA,GACA,GACA;AAEA,SAAO,EADQ,EAAA,MAAc,EAAmB,GAAU,GAAe,GAAQ,GAAS,CAAQ,GAAG;AAAA,IAAC;AAAA,IAAU;AAAA,IAAe;AAAA,IAAQ;AAAA,IAAS;AAAA,EAAQ,CACxH,CAAM;AACxC;ACxKA,SAAS,EACP,GACA,IAAkB,GAClB,GACA;AACA,QAAM,IAAgB,OAAO,MAA0B;AACrD,UAAM,IAAO,MAAM,EAAY,CAAM;AACrC,WAAA,IAAc,CAAI,GACX;AAAA,EACT,GAEM,IAAA,CAAsB,GAAoB,GAAY,OACnD;AAAA,IACL,UAAU,MAAW,SAAY,CAAC,GAAG,GAAU,CAAM,IAAI;AAAA,IACzD,SAAA,MAAe,EAAc,KAAW,CAAC,CAAO;AAAA,IAChD,QAAA,CAAS,MAAY;AAAA,IACrB,OAAA,CAAQ,GAAsB,MAAsB;AAClD,YAAM,IAAS,GAAO,UAAU,GAAO,UAAU,QAC3C,IAAa,OAAO,KAAW,YAAY,KAAU,OAAQ,GAAO,SAAS,iBAC7E,IAAW,OAAO,GAAS,SAAU,WAAW,EAAQ,QAAQ;AACtE,aAAO,KAAa,IAAe;AAAA,IACrC;AAAA,IACA,GAAI;AAAA,EACN;AAIF,WAAS,EAAe,GAAoB,GAAY,GAA0D;AAEhH,WAAO,EADQ,EAAA,MAAc,EAAmB,GAAU,GAAQ,CAAO,GAAG;AAAA,MAAC;AAAA,MAAU;AAAA,MAAQ;AAAA,IAAO,CACtF,CAAM;AAAA,EACxB;AAGA,WAAS,EAAiB,GAAoB,GAAY,GAA0E;AAElI,WAAO,EADQ,EAAA,MAAc,EAAmB,GAAU,GAAQ,CAAO,GAAG;AAAA,MAAC;AAAA,MAAU;AAAA,MAAQ;AAAA,IAAO,CAC9E,CAAM;AAAA,EAChC;AAEA,SAAI,MAAS,aACX,CAAQ,GAAoB,GAAY,MAAsC,EAAiB,GAAU,GAAQ,CAAO,IAE1H,CAAQ,GAAoB,GAAY,MAA8B,EAAe,GAAU,GAAQ,CAAO;AAChH"}
|