@zentauri-ui/zentauri-components 1.3.1 → 1.4.1
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 +90 -0
- package/cli/cli.integration.test.ts +79 -0
- package/cli/index.mjs +718 -0
- package/cli/registry.json +63 -0
- package/cli/rewrite-imports.mjs +57 -0
- package/cli/rewrite-imports.test.ts +71 -0
- package/dist/ui/slider.js +21 -25
- package/dist/ui/slider.js.map +1 -1
- package/dist/ui/slider.mjs +21 -25
- package/dist/ui/slider.mjs.map +1 -1
- package/package.json +9 -3
- package/{dist/hooks/index.d.ts → src/hooks/index.ts} +28 -7
- package/{dist/hooks/useBodyScrollLock/index.d.ts → src/hooks/useBodyScrollLock/index.ts} +0 -1
- package/src/hooks/useBodyScrollLock/useBodyScrollLock.test.ts +51 -0
- package/src/hooks/useBodyScrollLock/useBodyScrollLock.ts +48 -0
- package/src/hooks/useClickOutside/index.ts +5 -0
- package/src/hooks/useClickOutside/useClickOutside.test.tsx +60 -0
- package/src/hooks/useClickOutside/useClickOutside.ts +52 -0
- package/{dist/hooks/useClipboard/index.d.ts → src/hooks/useClipboard/index.ts} +0 -1
- package/src/hooks/useClipboard/useClipboard.test.ts +101 -0
- package/src/hooks/useClipboard/useClipboard.ts +69 -0
- package/src/hooks/useControllableState/index.ts +4 -0
- package/src/hooks/useControllableState/useControllableState.test.ts +59 -0
- package/src/hooks/useControllableState/useControllableState.ts +49 -0
- package/{dist/hooks/useDebouncedValue/index.d.ts → src/hooks/useDebouncedValue/index.ts} +0 -1
- package/src/hooks/useDebouncedValue/useDebouncedValue.test.ts +74 -0
- package/{dist/hooks/useDebouncedValue/useDebouncedValue.d.ts → src/hooks/useDebouncedValue/useDebouncedValue.ts} +18 -2
- package/src/hooks/useDisclosure/index.ts +5 -0
- package/src/hooks/useDisclosure/useDisclosure.test.ts +64 -0
- package/src/hooks/useDisclosure/useDisclosure.ts +62 -0
- package/src/hooks/useDocumentTitle/index.ts +4 -0
- package/src/hooks/useDocumentTitle/useDocumentTitle.test.ts +40 -0
- package/src/hooks/useDocumentTitle/useDocumentTitle.ts +58 -0
- package/{dist/hooks/useFocusManagement/index.d.ts → src/hooks/useFocusManagement/index.ts} +0 -1
- package/src/hooks/useFocusManagement/useFocusManagement.test.tsx +45 -0
- package/src/hooks/useFocusManagement/useFocusManagement.ts +77 -0
- package/{dist/hooks/useHover/index.d.ts → src/hooks/useHover/index.ts} +0 -1
- package/src/hooks/useHover/useHover.test.ts +45 -0
- package/src/hooks/useHover/useHover.ts +45 -0
- package/{dist/hooks/useInView/index.d.ts → src/hooks/useInView/index.ts} +0 -1
- package/src/hooks/useInView/useInView.test.ts +43 -0
- package/{dist/hooks/useInView/useInView.d.ts → src/hooks/useInView/useInView.ts} +15 -4
- package/src/hooks/useIntersectionObserver/index.ts +4 -0
- package/src/hooks/useIntersectionObserver/useIntersectionObserver.test.ts +75 -0
- package/src/hooks/useIntersectionObserver/useIntersectionObserver.ts +54 -0
- package/{dist/hooks/useIsMounted/index.d.ts → src/hooks/useIsMounted/index.ts} +0 -1
- package/src/hooks/useIsMounted/useIsMounted.test.ts +25 -0
- package/{dist/hooks/useIsMounted/useIsMounted.d.ts → src/hooks/useIsMounted/useIsMounted.ts} +14 -2
- package/{dist/hooks/useIsomorphicLayoutEffect/index.d.ts → src/hooks/useIsomorphicLayoutEffect/index.ts} +0 -1
- package/src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.test.ts +19 -0
- package/{dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts → src/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.ts} +6 -3
- package/src/hooks/useLocalStorage/index.ts +4 -0
- package/src/hooks/useLocalStorage/useLocalStorage.test.ts +99 -0
- package/src/hooks/useLocalStorage/useLocalStorage.ts +109 -0
- package/{dist/hooks/useMediaQuery/index.d.ts → src/hooks/useMediaQuery/index.ts} +0 -1
- package/src/hooks/useMediaQuery/useMediaQuery.test.ts +63 -0
- package/src/hooks/useMediaQuery/useMediaQuery.ts +37 -0
- package/{dist/hooks/useNetworkStatus/index.d.ts → src/hooks/useNetworkStatus/index.ts} +0 -1
- package/src/hooks/useNetworkStatus/useNetworkStatus.test.ts +53 -0
- package/src/hooks/useNetworkStatus/useNetworkStatus.ts +33 -0
- package/{dist/hooks/usePageVisibility/index.d.ts → src/hooks/usePageVisibility/index.ts} +0 -1
- package/src/hooks/usePageVisibility/usePageVisibility.test.ts +21 -0
- package/src/hooks/usePageVisibility/usePageVisibility.ts +31 -0
- package/src/hooks/usePagination/index.ts +6 -0
- package/src/hooks/usePagination/usePagination.test.ts +139 -0
- package/src/hooks/usePagination/usePagination.ts +153 -0
- package/src/hooks/usePrefersColorScheme/index.ts +4 -0
- package/src/hooks/usePrefersColorScheme/usePrefersColorScheme.test.ts +53 -0
- package/{dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts → src/hooks/usePrefersColorScheme/usePrefersColorScheme.ts} +14 -2
- package/{dist/hooks/usePrefersReducedMotion/index.d.ts → src/hooks/usePrefersReducedMotion/index.ts} +0 -1
- package/src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.test.ts +27 -0
- package/{dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts → src/hooks/usePrefersReducedMotion/usePrefersReducedMotion.ts} +7 -2
- package/src/hooks/useResizeObserver/index.ts +4 -0
- package/src/hooks/useResizeObserver/useResizeObserver.test.ts +68 -0
- package/src/hooks/useResizeObserver/useResizeObserver.ts +58 -0
- package/src/hooks/useSessionStorage/index.ts +4 -0
- package/src/hooks/useSessionStorage/useSessionStorage.test.ts +54 -0
- package/src/hooks/useSessionStorage/useSessionStorage.ts +84 -0
- package/{dist/hooks/useThrottledCallback/index.d.ts → src/hooks/useThrottledCallback/index.ts} +0 -1
- package/src/hooks/useThrottledCallback/useThrottledCallback.test.ts +75 -0
- package/{dist/hooks/useThrottledCallback/useThrottledCallback.d.ts → src/hooks/useThrottledCallback/useThrottledCallback.ts} +25 -2
- package/{dist/hooks/useToggle/index.d.ts → src/hooks/useToggle/index.ts} +0 -1
- package/src/hooks/useToggle/useToggle.test.ts +40 -0
- package/src/hooks/useToggle/useToggle.ts +22 -0
- package/{dist/hooks/useWindowSize/index.d.ts → src/hooks/useWindowSize/index.ts} +0 -1
- package/src/hooks/useWindowSize/useWindowSize.test.ts +23 -0
- package/src/hooks/useWindowSize/useWindowSize.ts +39 -0
- package/src/lib/utils.ts +25 -0
- package/src/ui/accordion/accordion-base.tsx +223 -0
- package/src/ui/accordion/accordion.test.tsx +146 -0
- package/src/ui/accordion/accordion.tsx +11 -0
- package/src/ui/accordion/animated/accordion-content-animated.tsx +46 -0
- package/src/ui/accordion/animated/accordion-root-animated.tsx +10 -0
- package/src/ui/accordion/animated/animations.ts +16 -0
- package/{dist/ui/accordion/animated/index.d.ts → src/ui/accordion/animated/index.ts} +2 -1
- package/{dist/ui/accordion/animated/types.d.ts → src/ui/accordion/animated/types.ts} +4 -3
- package/src/ui/accordion/index.ts +23 -0
- package/{dist/ui/accordion/types.d.ts → src/ui/accordion/types.ts} +30 -21
- package/src/ui/accordion/variants.ts +115 -0
- package/src/ui/alert/alert-base.tsx +157 -0
- package/src/ui/alert/alert.test.tsx +150 -0
- package/src/ui/alert/alert.tsx +9 -0
- package/src/ui/alert/animated/alert-animated.tsx +20 -0
- package/src/ui/alert/animated/animations.ts +20 -0
- package/src/ui/alert/animated/index.ts +3 -0
- package/src/ui/alert/animated/types.ts +16 -0
- package/src/ui/alert/index.ts +22 -0
- package/{dist/ui/alert/types.d.ts → src/ui/alert/types.ts} +18 -11
- package/src/ui/alert/variants.ts +74 -0
- package/src/ui/avatar/animated/animations.ts +11 -0
- package/src/ui/avatar/animated/avatar-animated.tsx +25 -0
- package/{dist/ui/avatar/animated/index.d.ts → src/ui/avatar/animated/index.ts} +3 -2
- package/{dist/ui/avatar/animated/types.d.ts → src/ui/avatar/animated/types.ts} +11 -3
- package/src/ui/avatar/avatar-base.tsx +184 -0
- package/src/ui/avatar/avatar.test.tsx +51 -0
- package/src/ui/avatar/avatar.tsx +11 -0
- package/src/ui/avatar/index.ts +16 -0
- package/{dist/ui/avatar/types.d.ts → src/ui/avatar/types.ts} +22 -11
- package/src/ui/avatar/variants.ts +52 -0
- package/src/ui/badge/animated/animations.ts +20 -0
- package/src/ui/badge/animated/badge-animated.tsx +28 -0
- package/{dist/ui/badge/animated/index.d.ts → src/ui/badge/animated/index.ts} +3 -2
- package/src/ui/badge/animated/types.ts +18 -0
- package/src/ui/badge/badge-base.tsx +53 -0
- package/src/ui/badge/badge.test.tsx +48 -0
- package/src/ui/badge/badge.tsx +9 -0
- package/{dist/ui/badge/index.d.ts → src/ui/badge/index.ts} +2 -1
- package/src/ui/badge/types.ts +25 -0
- package/src/ui/badge/variants.ts +85 -0
- package/src/ui/breadcrumb/breadcrumb.test.tsx +62 -0
- package/src/ui/breadcrumb/breadcrumb.tsx +135 -0
- package/src/ui/breadcrumb/index.ts +28 -0
- package/{dist/ui/breadcrumb/types.d.ts → src/ui/breadcrumb/types.ts} +18 -15
- package/src/ui/breadcrumb/variants.ts +53 -0
- package/src/ui/buttons/animated/animations.ts +34 -0
- package/src/ui/buttons/animated/button-animated.tsx +70 -0
- package/{dist/ui/buttons/animated/index.d.ts → src/ui/buttons/animated/index.ts} +2 -1
- package/src/ui/buttons/animated/types.ts +29 -0
- package/src/ui/buttons/button-base.tsx +59 -0
- package/src/ui/buttons/button.test.tsx +480 -0
- package/src/ui/buttons/button.tsx +9 -0
- package/{dist/ui/buttons/index.d.ts → src/ui/buttons/index.ts} +2 -1
- package/{dist/ui/buttons/types.d.ts → src/ui/buttons/types.ts} +10 -6
- package/src/ui/buttons/variants.ts +77 -0
- package/src/ui/card/animated/animations.ts +32 -0
- package/src/ui/card/animated/card-animated.tsx +28 -0
- package/{dist/ui/card/animated/index.d.ts → src/ui/card/animated/index.ts} +9 -2
- package/{dist/ui/card/animated/types.d.ts → src/ui/card/animated/types.ts} +4 -2
- package/src/ui/card/card-base.tsx +146 -0
- package/src/ui/card/card.test.tsx +79 -0
- package/src/ui/card/card.tsx +11 -0
- package/src/ui/card/index.ts +21 -0
- package/src/ui/card/types.ts +42 -0
- package/src/ui/card/variants.ts +122 -0
- package/src/ui/divider/animated/animations.ts +27 -0
- package/src/ui/divider/animated/divider-animated.tsx +24 -0
- package/{dist/ui/divider/animated/index.d.ts → src/ui/divider/animated/index.ts} +2 -1
- package/{dist/ui/divider/animated/types.d.ts → src/ui/divider/animated/types.ts} +13 -3
- package/src/ui/divider/divider-base.tsx +80 -0
- package/src/ui/divider/divider.tsx +9 -0
- package/src/ui/divider/index.ts +14 -0
- package/{dist/ui/divider/types.d.ts → src/ui/divider/types.ts} +11 -8
- package/src/ui/divider/variants.ts +98 -0
- package/src/ui/drawer/animated/animations.ts +39 -0
- package/src/ui/drawer/animated/drawer-content-animated.tsx +101 -0
- package/{dist/ui/drawer/animated/index.d.ts → src/ui/drawer/animated/index.ts} +11 -2
- package/src/ui/drawer/animated/types.ts +18 -0
- package/src/ui/drawer/drawer-base.tsx +259 -0
- package/src/ui/drawer/drawer.test.tsx +132 -0
- package/src/ui/drawer/drawer.tsx +11 -0
- package/src/ui/drawer/index.ts +21 -0
- package/src/ui/drawer/types.ts +39 -0
- package/src/ui/drawer/variants.ts +122 -0
- package/src/ui/dropdown/dropdown.test.tsx +114 -0
- package/src/ui/dropdown/dropdown.tsx +179 -0
- package/src/ui/dropdown/index.ts +15 -0
- package/src/ui/dropdown/types.ts +68 -0
- package/src/ui/dropdown/variants.ts +138 -0
- package/src/ui/empty-state/animated/animations.ts +19 -0
- package/src/ui/empty-state/animated/empty-state-animated.tsx +23 -0
- package/src/ui/empty-state/animated/index.ts +7 -0
- package/{dist/ui/empty-state/animated/types.d.ts → src/ui/empty-state/animated/types.ts} +17 -5
- package/src/ui/empty-state/empty-state-base.tsx +114 -0
- package/src/ui/empty-state/empty-state.tsx +9 -0
- package/{dist/ui/empty-state/index.d.ts → src/ui/empty-state/index.ts} +7 -2
- package/{dist/ui/empty-state/types.d.ts → src/ui/empty-state/types.ts} +10 -6
- package/src/ui/empty-state/variants.ts +51 -0
- package/src/ui/file-upload/file-upload.test.tsx +36 -0
- package/src/ui/file-upload/file-upload.tsx +119 -0
- package/{dist/ui/file-upload/index.d.ts → src/ui/file-upload/index.ts} +2 -1
- package/{dist/ui/file-upload/types.d.ts → src/ui/file-upload/types.ts} +6 -3
- package/src/ui/file-upload/variants.ts +29 -0
- package/src/ui/inputs/animated/animations.ts +36 -0
- package/{dist/ui/inputs/animated/index.d.ts → src/ui/inputs/animated/index.ts} +2 -1
- package/src/ui/inputs/animated/input-animated.tsx +124 -0
- package/src/ui/inputs/animated/types.ts +40 -0
- package/{dist/ui/inputs/index.d.ts → src/ui/inputs/index.ts} +2 -1
- package/src/ui/inputs/input-base.tsx +114 -0
- package/src/ui/inputs/input.test.tsx +414 -0
- package/src/ui/inputs/input.tsx +8 -0
- package/src/ui/inputs/types.ts +18 -0
- package/src/ui/inputs/variants.ts +316 -0
- package/src/ui/modal/animated/animations.ts +29 -0
- package/{dist/ui/modal/animated/index.d.ts → src/ui/modal/animated/index.ts} +2 -1
- package/src/ui/modal/animated/modal-content-animated.tsx +96 -0
- package/src/ui/modal/animated/types.ts +23 -0
- package/src/ui/modal/index.ts +21 -0
- package/src/ui/modal/modal-base.tsx +279 -0
- package/src/ui/modal/modal.test.tsx +129 -0
- package/src/ui/modal/modal.tsx +8 -0
- package/src/ui/modal/types.ts +31 -0
- package/src/ui/modal/variants.ts +109 -0
- package/src/ui/pagination/index.ts +13 -0
- package/src/ui/pagination/pagination.test.tsx +165 -0
- package/src/ui/pagination/pagination.tsx +237 -0
- package/{dist/ui/pagination/types.d.ts → src/ui/pagination/types.ts} +37 -27
- package/src/ui/pagination/variants.ts +97 -0
- package/src/ui/progress/animated/animations.ts +9 -0
- package/src/ui/progress/animated/index.ts +17 -0
- package/src/ui/progress/animated/progress-animated.tsx +133 -0
- package/{dist/ui/progress/animated/types.d.ts → src/ui/progress/animated/types.ts} +20 -8
- package/{dist/ui/progress/index.d.ts → src/ui/progress/index.ts} +7 -2
- package/src/ui/progress/progress-base.tsx +151 -0
- package/src/ui/progress/progress.test.tsx +84 -0
- package/src/ui/progress/progress.tsx +12 -0
- package/src/ui/progress/types.ts +33 -0
- package/src/ui/progress/variants.ts +105 -0
- package/src/ui/select/index.ts +25 -0
- package/src/ui/select/select.test.tsx +128 -0
- package/src/ui/select/select.tsx +221 -0
- package/src/ui/select/types.ts +77 -0
- package/src/ui/select/variants.ts +163 -0
- package/src/ui/skeleton/animated/animations.ts +15 -0
- package/src/ui/skeleton/animated/index.ts +20 -0
- package/src/ui/skeleton/animated/skeleton-animated.tsx +119 -0
- package/{dist/ui/skeleton/animated/types.d.ts → src/ui/skeleton/animated/types.ts} +30 -11
- package/src/ui/skeleton/index.ts +24 -0
- package/src/ui/skeleton/skeleton-base.tsx +288 -0
- package/src/ui/skeleton/skeleton.tsx +8 -0
- package/{dist/ui/skeleton/types.d.ts → src/ui/skeleton/types.ts} +15 -7
- package/src/ui/skeleton/variants.ts +254 -0
- package/src/ui/slider/index.ts +22 -0
- package/src/ui/slider/slider.test.tsx +94 -0
- package/src/ui/slider/slider.tsx +728 -0
- package/src/ui/slider/types.ts +66 -0
- package/src/ui/slider/variants.ts +81 -0
- package/{dist/ui/spinner/animated/index.d.ts → src/ui/spinner/animated/index.ts} +2 -1
- package/src/ui/spinner/animated/spinner.test.tsx +41 -0
- package/src/ui/spinner/animated/spinner.tsx +143 -0
- package/{dist/ui/spinner/animated/types.d.ts → src/ui/spinner/animated/types.ts} +6 -4
- package/src/ui/spinner/animated/variants.ts +50 -0
- package/src/ui/stepper/index.ts +22 -0
- package/src/ui/stepper/stepper.test.tsx +183 -0
- package/src/ui/stepper/stepper.tsx +172 -0
- package/{dist/ui/stepper/types.d.ts → src/ui/stepper/types.ts} +18 -11
- package/src/ui/stepper/variants.ts +69 -0
- package/src/ui/table/animated/animations.ts +9 -0
- package/src/ui/table/animated/index.ts +15 -0
- package/src/ui/table/animated/table-animated.tsx +15 -0
- package/src/ui/table/animated/types.ts +16 -0
- package/src/ui/table/index.ts +22 -0
- package/src/ui/table/table-base.tsx +197 -0
- package/src/ui/table/table.tsx +13 -0
- package/src/ui/table/types.ts +47 -0
- package/src/ui/table/variants.ts +105 -0
- package/src/ui/tabs/animated/animations.ts +48 -0
- package/{dist/ui/tabs/animated/index.d.ts → src/ui/tabs/animated/index.ts} +6 -2
- package/src/ui/tabs/animated/tabs-content-animated.tsx +46 -0
- package/src/ui/tabs/animated/types.ts +24 -0
- package/{dist/ui/tabs/index.d.ts → src/ui/tabs/index.ts} +8 -2
- package/src/ui/tabs/tabs-base.tsx +185 -0
- package/src/ui/tabs/tabs.test.tsx +53 -0
- package/{dist/ui/tabs/tabs.d.ts → src/ui/tabs/tabs.tsx} +1 -1
- package/src/ui/tabs/types.ts +88 -0
- package/src/ui/tabs/variants.ts +70 -0
- package/src/ui/toast/animated/animations.ts +17 -0
- package/src/ui/toast/animated/index.ts +9 -0
- package/src/ui/toast/animated/toast-animated.tsx +96 -0
- package/src/ui/toast/animated/types.ts +13 -0
- package/src/ui/toast/index.ts +26 -0
- package/src/ui/toast/toast-base.tsx +231 -0
- package/src/ui/toast/toast.test.tsx +102 -0
- package/src/ui/toast/toast.tsx +13 -0
- package/{dist/ui/toast/types.d.ts → src/ui/toast/types.ts} +35 -23
- package/src/ui/toast/variants.ts +73 -0
- package/src/ui/toggle/animated/animations.ts +9 -0
- package/src/ui/toggle/animated/index.ts +7 -0
- package/src/ui/toggle/animated/toggle-animated.tsx +76 -0
- package/{dist/ui/toggle/animated/types.d.ts → src/ui/toggle/animated/types.ts} +6 -2
- package/{dist/ui/toggle/index.d.ts → src/ui/toggle/index.ts} +2 -1
- package/src/ui/toggle/toggle-base.tsx +70 -0
- package/src/ui/toggle/toggle.test.tsx +44 -0
- package/src/ui/toggle/toggle.tsx +9 -0
- package/{dist/ui/toggle/types.d.ts → src/ui/toggle/types.ts} +7 -3
- package/src/ui/toggle/variants.ts +84 -0
- package/src/ui/tooltip/animated/animations.ts +16 -0
- package/src/ui/tooltip/animated/index.ts +10 -0
- package/src/ui/tooltip/animated/tooltip-content-animated.tsx +47 -0
- package/src/ui/tooltip/animated/types.ts +19 -0
- package/src/ui/tooltip/index.ts +17 -0
- package/src/ui/tooltip/tooltip-base.tsx +152 -0
- package/src/ui/tooltip/tooltip.test.tsx +84 -0
- package/src/ui/tooltip/tooltip.tsx +8 -0
- package/src/ui/tooltip/types.ts +57 -0
- package/src/ui/tooltip/variants.ts +61 -0
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useBodyScrollLock/index.d.ts.map +0 -1
- package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts +0 -13
- package/dist/hooks/useBodyScrollLock/useBodyScrollLock.d.ts.map +0 -1
- package/dist/hooks/useClickOutside/index.d.ts +0 -2
- package/dist/hooks/useClickOutside/index.d.ts.map +0 -1
- package/dist/hooks/useClickOutside/useClickOutside.d.ts +0 -22
- package/dist/hooks/useClickOutside/useClickOutside.d.ts.map +0 -1
- package/dist/hooks/useClipboard/index.d.ts.map +0 -1
- package/dist/hooks/useClipboard/useClipboard.d.ts +0 -21
- package/dist/hooks/useClipboard/useClipboard.d.ts.map +0 -1
- package/dist/hooks/useControllableState/index.d.ts +0 -2
- package/dist/hooks/useControllableState/index.d.ts.map +0 -1
- package/dist/hooks/useControllableState/useControllableState.d.ts +0 -21
- package/dist/hooks/useControllableState/useControllableState.d.ts.map +0 -1
- package/dist/hooks/useDebouncedValue/index.d.ts.map +0 -1
- package/dist/hooks/useDebouncedValue/useDebouncedValue.d.ts.map +0 -1
- package/dist/hooks/useDisclosure/index.d.ts +0 -2
- package/dist/hooks/useDisclosure/index.d.ts.map +0 -1
- package/dist/hooks/useDisclosure/useDisclosure.d.ts +0 -24
- package/dist/hooks/useDisclosure/useDisclosure.d.ts.map +0 -1
- package/dist/hooks/useDocumentTitle/index.d.ts +0 -2
- package/dist/hooks/useDocumentTitle/index.d.ts.map +0 -1
- package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts +0 -18
- package/dist/hooks/useDocumentTitle/useDocumentTitle.d.ts.map +0 -1
- package/dist/hooks/useFocusManagement/index.d.ts.map +0 -1
- package/dist/hooks/useFocusManagement/useFocusManagement.d.ts +0 -22
- package/dist/hooks/useFocusManagement/useFocusManagement.d.ts.map +0 -1
- package/dist/hooks/useHover/index.d.ts.map +0 -1
- package/dist/hooks/useHover/useHover.d.ts +0 -13
- package/dist/hooks/useHover/useHover.d.ts.map +0 -1
- package/dist/hooks/useInView/index.d.ts.map +0 -1
- package/dist/hooks/useInView/useInView.d.ts.map +0 -1
- package/dist/hooks/useIntersectionObserver/index.d.ts +0 -2
- package/dist/hooks/useIntersectionObserver/index.d.ts.map +0 -1
- package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts +0 -17
- package/dist/hooks/useIntersectionObserver/useIntersectionObserver.d.ts.map +0 -1
- package/dist/hooks/useIsMounted/index.d.ts.map +0 -1
- package/dist/hooks/useIsMounted/useIsMounted.d.ts.map +0 -1
- package/dist/hooks/useIsomorphicLayoutEffect/index.d.ts.map +0 -1
- package/dist/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.d.ts.map +0 -1
- package/dist/hooks/useLocalStorage/index.d.ts +0 -2
- package/dist/hooks/useLocalStorage/index.d.ts.map +0 -1
- package/dist/hooks/useLocalStorage/useLocalStorage.d.ts +0 -21
- package/dist/hooks/useLocalStorage/useLocalStorage.d.ts.map +0 -1
- package/dist/hooks/useMediaQuery/index.d.ts.map +0 -1
- package/dist/hooks/useMediaQuery/useMediaQuery.d.ts +0 -12
- package/dist/hooks/useMediaQuery/useMediaQuery.d.ts.map +0 -1
- package/dist/hooks/useNetworkStatus/index.d.ts.map +0 -1
- package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts +0 -9
- package/dist/hooks/useNetworkStatus/useNetworkStatus.d.ts.map +0 -1
- package/dist/hooks/usePageVisibility/index.d.ts.map +0 -1
- package/dist/hooks/usePageVisibility/usePageVisibility.d.ts +0 -9
- package/dist/hooks/usePageVisibility/usePageVisibility.d.ts.map +0 -1
- package/dist/hooks/usePagination/index.d.ts +0 -2
- package/dist/hooks/usePagination/index.d.ts.map +0 -1
- package/dist/hooks/usePagination/usePagination.d.ts +0 -30
- package/dist/hooks/usePagination/usePagination.d.ts.map +0 -1
- package/dist/hooks/usePrefersColorScheme/index.d.ts +0 -2
- package/dist/hooks/usePrefersColorScheme/index.d.ts.map +0 -1
- package/dist/hooks/usePrefersColorScheme/usePrefersColorScheme.d.ts.map +0 -1
- package/dist/hooks/usePrefersReducedMotion/index.d.ts.map +0 -1
- package/dist/hooks/usePrefersReducedMotion/usePrefersReducedMotion.d.ts.map +0 -1
- package/dist/hooks/useResizeObserver/index.d.ts +0 -2
- package/dist/hooks/useResizeObserver/index.d.ts.map +0 -1
- package/dist/hooks/useResizeObserver/useResizeObserver.d.ts +0 -21
- package/dist/hooks/useResizeObserver/useResizeObserver.d.ts.map +0 -1
- package/dist/hooks/useSessionStorage/index.d.ts +0 -2
- package/dist/hooks/useSessionStorage/index.d.ts.map +0 -1
- package/dist/hooks/useSessionStorage/useSessionStorage.d.ts +0 -21
- package/dist/hooks/useSessionStorage/useSessionStorage.d.ts.map +0 -1
- package/dist/hooks/useThrottledCallback/index.d.ts.map +0 -1
- package/dist/hooks/useThrottledCallback/useThrottledCallback.d.ts.map +0 -1
- package/dist/hooks/useToggle/index.d.ts.map +0 -1
- package/dist/hooks/useToggle/useToggle.d.ts +0 -8
- package/dist/hooks/useToggle/useToggle.d.ts.map +0 -1
- package/dist/hooks/useWindowSize/index.d.ts.map +0 -1
- package/dist/hooks/useWindowSize/useWindowSize.d.ts +0 -13
- package/dist/hooks/useWindowSize/useWindowSize.d.ts.map +0 -1
- package/dist/lib/utils.d.ts +0 -6
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/ui/accordion/accordion-base.d.ts +0 -20
- package/dist/ui/accordion/accordion-base.d.ts.map +0 -1
- package/dist/ui/accordion/accordion.d.ts +0 -8
- package/dist/ui/accordion/accordion.d.ts.map +0 -1
- package/dist/ui/accordion/animated/accordion-content-animated.d.ts +0 -6
- package/dist/ui/accordion/animated/accordion-content-animated.d.ts.map +0 -1
- package/dist/ui/accordion/animated/accordion-root-animated.d.ts +0 -6
- package/dist/ui/accordion/animated/accordion-root-animated.d.ts.map +0 -1
- package/dist/ui/accordion/animated/animations.d.ts +0 -6
- package/dist/ui/accordion/animated/animations.d.ts.map +0 -1
- package/dist/ui/accordion/animated/index.d.ts.map +0 -1
- package/dist/ui/accordion/animated/types.d.ts.map +0 -1
- package/dist/ui/accordion/index.d.ts +0 -5
- package/dist/ui/accordion/index.d.ts.map +0 -1
- package/dist/ui/accordion/types.d.ts.map +0 -1
- package/dist/ui/accordion/variants.d.ts +0 -14
- package/dist/ui/accordion/variants.d.ts.map +0 -1
- package/dist/ui/alert/alert-base.d.ts +0 -28
- package/dist/ui/alert/alert-base.d.ts.map +0 -1
- package/dist/ui/alert/alert.d.ts +0 -6
- package/dist/ui/alert/alert.d.ts.map +0 -1
- package/dist/ui/alert/animated/alert-animated.d.ts +0 -3
- package/dist/ui/alert/animated/alert-animated.d.ts.map +0 -1
- package/dist/ui/alert/animated/animations.d.ts +0 -3
- package/dist/ui/alert/animated/animations.d.ts.map +0 -1
- package/dist/ui/alert/animated/index.d.ts +0 -4
- package/dist/ui/alert/animated/index.d.ts.map +0 -1
- package/dist/ui/alert/animated/types.d.ts +0 -8
- package/dist/ui/alert/animated/types.d.ts.map +0 -1
- package/dist/ui/alert/index.d.ts +0 -5
- package/dist/ui/alert/index.d.ts.map +0 -1
- package/dist/ui/alert/types.d.ts.map +0 -1
- package/dist/ui/alert/variants.d.ts +0 -11
- package/dist/ui/alert/variants.d.ts.map +0 -1
- package/dist/ui/avatar/animated/animations.d.ts +0 -3
- package/dist/ui/avatar/animated/animations.d.ts.map +0 -1
- package/dist/ui/avatar/animated/avatar-animated.d.ts +0 -6
- package/dist/ui/avatar/animated/avatar-animated.d.ts.map +0 -1
- package/dist/ui/avatar/animated/index.d.ts.map +0 -1
- package/dist/ui/avatar/animated/types.d.ts.map +0 -1
- package/dist/ui/avatar/avatar-base.d.ts +0 -25
- package/dist/ui/avatar/avatar-base.d.ts.map +0 -1
- package/dist/ui/avatar/avatar.d.ts +0 -8
- package/dist/ui/avatar/avatar.d.ts.map +0 -1
- package/dist/ui/avatar/index.d.ts +0 -5
- package/dist/ui/avatar/index.d.ts.map +0 -1
- package/dist/ui/avatar/types.d.ts.map +0 -1
- package/dist/ui/avatar/variants.d.ts +0 -8
- package/dist/ui/avatar/variants.d.ts.map +0 -1
- package/dist/ui/badge/animated/animations.d.ts +0 -3
- package/dist/ui/badge/animated/animations.d.ts.map +0 -1
- package/dist/ui/badge/animated/badge-animated.d.ts +0 -6
- package/dist/ui/badge/animated/badge-animated.d.ts.map +0 -1
- package/dist/ui/badge/animated/index.d.ts.map +0 -1
- package/dist/ui/badge/animated/types.d.ts +0 -10
- package/dist/ui/badge/animated/types.d.ts.map +0 -1
- package/dist/ui/badge/badge-base.d.ts +0 -6
- package/dist/ui/badge/badge-base.d.ts.map +0 -1
- package/dist/ui/badge/badge.d.ts +0 -6
- package/dist/ui/badge/badge.d.ts.map +0 -1
- package/dist/ui/badge/index.d.ts.map +0 -1
- package/dist/ui/badge/types.d.ts +0 -17
- package/dist/ui/badge/types.d.ts.map +0 -1
- package/dist/ui/badge/variants.d.ts +0 -40
- package/dist/ui/badge/variants.d.ts.map +0 -1
- package/dist/ui/breadcrumb/breadcrumb.d.ts +0 -33
- package/dist/ui/breadcrumb/breadcrumb.d.ts.map +0 -1
- package/dist/ui/breadcrumb/index.d.ts +0 -4
- package/dist/ui/breadcrumb/index.d.ts.map +0 -1
- package/dist/ui/breadcrumb/types.d.ts.map +0 -1
- package/dist/ui/breadcrumb/variants.d.ts +0 -11
- package/dist/ui/breadcrumb/variants.d.ts.map +0 -1
- package/dist/ui/buttons/animated/animations.d.ts +0 -3
- package/dist/ui/buttons/animated/animations.d.ts.map +0 -1
- package/dist/ui/buttons/animated/button-animated.d.ts +0 -6
- package/dist/ui/buttons/animated/button-animated.d.ts.map +0 -1
- package/dist/ui/buttons/animated/index.d.ts.map +0 -1
- package/dist/ui/buttons/animated/types.d.ts +0 -16
- package/dist/ui/buttons/animated/types.d.ts.map +0 -1
- package/dist/ui/buttons/button-base.d.ts +0 -6
- package/dist/ui/buttons/button-base.d.ts.map +0 -1
- package/dist/ui/buttons/button.d.ts +0 -6
- package/dist/ui/buttons/button.d.ts.map +0 -1
- package/dist/ui/buttons/index.d.ts.map +0 -1
- package/dist/ui/buttons/types.d.ts.map +0 -1
- package/dist/ui/buttons/variants.d.ts +0 -5
- package/dist/ui/buttons/variants.d.ts.map +0 -1
- package/dist/ui/card/animated/animations.d.ts +0 -7
- package/dist/ui/card/animated/animations.d.ts.map +0 -1
- package/dist/ui/card/animated/card-animated.d.ts +0 -6
- package/dist/ui/card/animated/card-animated.d.ts.map +0 -1
- package/dist/ui/card/animated/index.d.ts.map +0 -1
- package/dist/ui/card/animated/types.d.ts.map +0 -1
- package/dist/ui/card/card-base.d.ts +0 -26
- package/dist/ui/card/card-base.d.ts.map +0 -1
- package/dist/ui/card/card.d.ts +0 -6
- package/dist/ui/card/card.d.ts.map +0 -1
- package/dist/ui/card/index.d.ts +0 -5
- package/dist/ui/card/index.d.ts.map +0 -1
- package/dist/ui/card/types.d.ts +0 -29
- package/dist/ui/card/types.d.ts.map +0 -1
- package/dist/ui/card/variants.d.ts +0 -18
- package/dist/ui/card/variants.d.ts.map +0 -1
- package/dist/ui/divider/animated/animations.d.ts +0 -6
- package/dist/ui/divider/animated/animations.d.ts.map +0 -1
- package/dist/ui/divider/animated/divider-animated.d.ts +0 -6
- package/dist/ui/divider/animated/divider-animated.d.ts.map +0 -1
- package/dist/ui/divider/animated/index.d.ts.map +0 -1
- package/dist/ui/divider/animated/types.d.ts.map +0 -1
- package/dist/ui/divider/divider-base.d.ts +0 -6
- package/dist/ui/divider/divider-base.d.ts.map +0 -1
- package/dist/ui/divider/divider.d.ts +0 -6
- package/dist/ui/divider/divider.d.ts.map +0 -1
- package/dist/ui/divider/index.d.ts +0 -4
- package/dist/ui/divider/index.d.ts.map +0 -1
- package/dist/ui/divider/types.d.ts.map +0 -1
- package/dist/ui/divider/variants.d.ts +0 -14
- package/dist/ui/divider/variants.d.ts.map +0 -1
- package/dist/ui/drawer/animated/animations.d.ts +0 -3
- package/dist/ui/drawer/animated/animations.d.ts.map +0 -1
- package/dist/ui/drawer/animated/drawer-content-animated.d.ts +0 -6
- package/dist/ui/drawer/animated/drawer-content-animated.d.ts.map +0 -1
- package/dist/ui/drawer/animated/index.d.ts.map +0 -1
- package/dist/ui/drawer/animated/types.d.ts +0 -9
- package/dist/ui/drawer/animated/types.d.ts.map +0 -1
- package/dist/ui/drawer/drawer-base.d.ts +0 -35
- package/dist/ui/drawer/drawer-base.d.ts.map +0 -1
- package/dist/ui/drawer/drawer.d.ts +0 -2
- package/dist/ui/drawer/drawer.d.ts.map +0 -1
- package/dist/ui/drawer/index.d.ts +0 -4
- package/dist/ui/drawer/index.d.ts.map +0 -1
- package/dist/ui/drawer/types.d.ts +0 -33
- package/dist/ui/drawer/types.d.ts.map +0 -1
- package/dist/ui/drawer/variants.d.ts +0 -10
- package/dist/ui/drawer/variants.d.ts.map +0 -1
- package/dist/ui/dropdown/dropdown.d.ts +0 -6
- package/dist/ui/dropdown/dropdown.d.ts.map +0 -1
- package/dist/ui/dropdown/index.d.ts +0 -4
- package/dist/ui/dropdown/index.d.ts.map +0 -1
- package/dist/ui/dropdown/types.d.ts +0 -38
- package/dist/ui/dropdown/types.d.ts.map +0 -1
- package/dist/ui/dropdown/variants.d.ts +0 -12
- package/dist/ui/dropdown/variants.d.ts.map +0 -1
- package/dist/ui/empty-state/animated/animations.d.ts +0 -3
- package/dist/ui/empty-state/animated/animations.d.ts.map +0 -1
- package/dist/ui/empty-state/animated/empty-state-animated.d.ts +0 -6
- package/dist/ui/empty-state/animated/empty-state-animated.d.ts.map +0 -1
- package/dist/ui/empty-state/animated/index.d.ts +0 -4
- package/dist/ui/empty-state/animated/index.d.ts.map +0 -1
- package/dist/ui/empty-state/animated/types.d.ts.map +0 -1
- package/dist/ui/empty-state/empty-state-base.d.ts +0 -23
- package/dist/ui/empty-state/empty-state-base.d.ts.map +0 -1
- package/dist/ui/empty-state/empty-state.d.ts +0 -6
- package/dist/ui/empty-state/empty-state.d.ts.map +0 -1
- package/dist/ui/empty-state/index.d.ts.map +0 -1
- package/dist/ui/empty-state/types.d.ts.map +0 -1
- package/dist/ui/empty-state/variants.d.ts +0 -12
- package/dist/ui/empty-state/variants.d.ts.map +0 -1
- package/dist/ui/file-upload/file-upload.d.ts +0 -8
- package/dist/ui/file-upload/file-upload.d.ts.map +0 -1
- package/dist/ui/file-upload/index.d.ts.map +0 -1
- package/dist/ui/file-upload/types.d.ts.map +0 -1
- package/dist/ui/file-upload/variants.d.ts +0 -4
- package/dist/ui/file-upload/variants.d.ts.map +0 -1
- package/dist/ui/inputs/animated/animations.d.ts +0 -3
- package/dist/ui/inputs/animated/animations.d.ts.map +0 -1
- package/dist/ui/inputs/animated/index.d.ts.map +0 -1
- package/dist/ui/inputs/animated/input-animated.d.ts +0 -6
- package/dist/ui/inputs/animated/input-animated.d.ts.map +0 -1
- package/dist/ui/inputs/animated/types.d.ts +0 -16
- package/dist/ui/inputs/animated/types.d.ts.map +0 -1
- package/dist/ui/inputs/index.d.ts.map +0 -1
- package/dist/ui/inputs/input-base.d.ts +0 -6
- package/dist/ui/inputs/input-base.d.ts.map +0 -1
- package/dist/ui/inputs/input.d.ts +0 -6
- package/dist/ui/inputs/input.d.ts.map +0 -1
- package/dist/ui/inputs/types.d.ts +0 -12
- package/dist/ui/inputs/types.d.ts.map +0 -1
- package/dist/ui/inputs/variants.d.ts +0 -7
- package/dist/ui/inputs/variants.d.ts.map +0 -1
- package/dist/ui/modal/animated/animations.d.ts +0 -3
- package/dist/ui/modal/animated/animations.d.ts.map +0 -1
- package/dist/ui/modal/animated/index.d.ts.map +0 -1
- package/dist/ui/modal/animated/modal-content-animated.d.ts +0 -6
- package/dist/ui/modal/animated/modal-content-animated.d.ts.map +0 -1
- package/dist/ui/modal/animated/types.d.ts +0 -9
- package/dist/ui/modal/animated/types.d.ts.map +0 -1
- package/dist/ui/modal/index.d.ts +0 -5
- package/dist/ui/modal/index.d.ts.map +0 -1
- package/dist/ui/modal/modal-base.d.ts +0 -47
- package/dist/ui/modal/modal-base.d.ts.map +0 -1
- package/dist/ui/modal/modal.d.ts +0 -6
- package/dist/ui/modal/modal.d.ts.map +0 -1
- package/dist/ui/modal/types.d.ts +0 -26
- package/dist/ui/modal/types.d.ts.map +0 -1
- package/dist/ui/modal/variants.d.ts +0 -10
- package/dist/ui/modal/variants.d.ts.map +0 -1
- package/dist/ui/pagination/index.d.ts +0 -5
- package/dist/ui/pagination/index.d.ts.map +0 -1
- package/dist/ui/pagination/pagination.d.ts +0 -17
- package/dist/ui/pagination/pagination.d.ts.map +0 -1
- package/dist/ui/pagination/types.d.ts.map +0 -1
- package/dist/ui/pagination/variants.d.ts +0 -12
- package/dist/ui/pagination/variants.d.ts.map +0 -1
- package/dist/ui/progress/animated/animations.d.ts +0 -3
- package/dist/ui/progress/animated/animations.d.ts.map +0 -1
- package/dist/ui/progress/animated/index.d.ts +0 -4
- package/dist/ui/progress/animated/index.d.ts.map +0 -1
- package/dist/ui/progress/animated/progress-animated.d.ts +0 -16
- package/dist/ui/progress/animated/progress-animated.d.ts.map +0 -1
- package/dist/ui/progress/animated/types.d.ts.map +0 -1
- package/dist/ui/progress/index.d.ts.map +0 -1
- package/dist/ui/progress/progress-base.d.ts +0 -23
- package/dist/ui/progress/progress-base.d.ts.map +0 -1
- package/dist/ui/progress/progress.d.ts +0 -6
- package/dist/ui/progress/progress.d.ts.map +0 -1
- package/dist/ui/progress/types.d.ts +0 -28
- package/dist/ui/progress/types.d.ts.map +0 -1
- package/dist/ui/progress/variants.d.ts +0 -15
- package/dist/ui/progress/variants.d.ts.map +0 -1
- package/dist/ui/select/index.d.ts +0 -4
- package/dist/ui/select/index.d.ts.map +0 -1
- package/dist/ui/select/select.d.ts +0 -10
- package/dist/ui/select/select.d.ts.map +0 -1
- package/dist/ui/select/types.d.ts +0 -48
- package/dist/ui/select/types.d.ts.map +0 -1
- package/dist/ui/select/variants.d.ts +0 -14
- package/dist/ui/select/variants.d.ts.map +0 -1
- package/dist/ui/skeleton/animated/animations.d.ts +0 -3
- package/dist/ui/skeleton/animated/animations.d.ts.map +0 -1
- package/dist/ui/skeleton/animated/index.d.ts +0 -4
- package/dist/ui/skeleton/animated/index.d.ts.map +0 -1
- package/dist/ui/skeleton/animated/skeleton-animated.d.ts +0 -22
- package/dist/ui/skeleton/animated/skeleton-animated.d.ts.map +0 -1
- package/dist/ui/skeleton/animated/types.d.ts.map +0 -1
- package/dist/ui/skeleton/index.d.ts +0 -5
- package/dist/ui/skeleton/index.d.ts.map +0 -1
- package/dist/ui/skeleton/skeleton-base.d.ts +0 -24
- package/dist/ui/skeleton/skeleton-base.d.ts.map +0 -1
- package/dist/ui/skeleton/skeleton.d.ts +0 -2
- package/dist/ui/skeleton/skeleton.d.ts.map +0 -1
- package/dist/ui/skeleton/types.d.ts.map +0 -1
- package/dist/ui/skeleton/variants.d.ts +0 -38
- package/dist/ui/skeleton/variants.d.ts.map +0 -1
- package/dist/ui/slider/index.d.ts +0 -4
- package/dist/ui/slider/index.d.ts.map +0 -1
- package/dist/ui/slider/slider.d.ts +0 -33
- package/dist/ui/slider/slider.d.ts.map +0 -1
- package/dist/ui/slider/types.d.ts +0 -49
- package/dist/ui/slider/types.d.ts.map +0 -1
- package/dist/ui/slider/variants.d.ts +0 -13
- package/dist/ui/slider/variants.d.ts.map +0 -1
- package/dist/ui/spinner/animated/index.d.ts.map +0 -1
- package/dist/ui/spinner/animated/spinner.d.ts +0 -6
- package/dist/ui/spinner/animated/spinner.d.ts.map +0 -1
- package/dist/ui/spinner/animated/types.d.ts.map +0 -1
- package/dist/ui/spinner/animated/variants.d.ts +0 -6
- package/dist/ui/spinner/animated/variants.d.ts.map +0 -1
- package/dist/ui/stepper/index.d.ts +0 -4
- package/dist/ui/stepper/index.d.ts.map +0 -1
- package/dist/ui/stepper/stepper.d.ts +0 -33
- package/dist/ui/stepper/stepper.d.ts.map +0 -1
- package/dist/ui/stepper/types.d.ts.map +0 -1
- package/dist/ui/stepper/variants.d.ts +0 -11
- package/dist/ui/stepper/variants.d.ts.map +0 -1
- package/dist/ui/table/animated/animations.d.ts +0 -3
- package/dist/ui/table/animated/animations.d.ts.map +0 -1
- package/dist/ui/table/animated/index.d.ts +0 -5
- package/dist/ui/table/animated/index.d.ts.map +0 -1
- package/dist/ui/table/animated/table-animated.d.ts +0 -5
- package/dist/ui/table/animated/table-animated.d.ts.map +0 -1
- package/dist/ui/table/animated/types.d.ts +0 -8
- package/dist/ui/table/animated/types.d.ts.map +0 -1
- package/dist/ui/table/index.d.ts +0 -4
- package/dist/ui/table/index.d.ts.map +0 -1
- package/dist/ui/table/table-base.d.ts +0 -38
- package/dist/ui/table/table-base.d.ts.map +0 -1
- package/dist/ui/table/table.d.ts +0 -2
- package/dist/ui/table/table.d.ts.map +0 -1
- package/dist/ui/table/types.d.ts +0 -33
- package/dist/ui/table/types.d.ts.map +0 -1
- package/dist/ui/table/variants.d.ts +0 -14
- package/dist/ui/table/variants.d.ts.map +0 -1
- package/dist/ui/tabs/animated/animations.d.ts +0 -5
- package/dist/ui/tabs/animated/animations.d.ts.map +0 -1
- package/dist/ui/tabs/animated/index.d.ts.map +0 -1
- package/dist/ui/tabs/animated/tabs-content-animated.d.ts +0 -6
- package/dist/ui/tabs/animated/tabs-content-animated.d.ts.map +0 -1
- package/dist/ui/tabs/animated/types.d.ts +0 -14
- package/dist/ui/tabs/animated/types.d.ts.map +0 -1
- package/dist/ui/tabs/index.d.ts.map +0 -1
- package/dist/ui/tabs/tabs-base.d.ts +0 -8
- package/dist/ui/tabs/tabs-base.d.ts.map +0 -1
- package/dist/ui/tabs/tabs.d.ts.map +0 -1
- package/dist/ui/tabs/types.d.ts +0 -40
- package/dist/ui/tabs/types.d.ts.map +0 -1
- package/dist/ui/tabs/variants.d.ts +0 -11
- package/dist/ui/tabs/variants.d.ts.map +0 -1
- package/dist/ui/toast/animated/animations.d.ts +0 -3
- package/dist/ui/toast/animated/animations.d.ts.map +0 -1
- package/dist/ui/toast/animated/index.d.ts +0 -4
- package/dist/ui/toast/animated/index.d.ts.map +0 -1
- package/dist/ui/toast/animated/toast-animated.d.ts +0 -10
- package/dist/ui/toast/animated/toast-animated.d.ts.map +0 -1
- package/dist/ui/toast/animated/types.d.ts +0 -5
- package/dist/ui/toast/animated/types.d.ts.map +0 -1
- package/dist/ui/toast/index.d.ts +0 -4
- package/dist/ui/toast/index.d.ts.map +0 -1
- package/dist/ui/toast/toast-base.d.ts +0 -35
- package/dist/ui/toast/toast-base.d.ts.map +0 -1
- package/dist/ui/toast/toast.d.ts +0 -2
- package/dist/ui/toast/toast.d.ts.map +0 -1
- package/dist/ui/toast/types.d.ts.map +0 -1
- package/dist/ui/toast/variants.d.ts +0 -8
- package/dist/ui/toast/variants.d.ts.map +0 -1
- package/dist/ui/toggle/animated/animations.d.ts +0 -3
- package/dist/ui/toggle/animated/animations.d.ts.map +0 -1
- package/dist/ui/toggle/animated/index.d.ts +0 -4
- package/dist/ui/toggle/animated/index.d.ts.map +0 -1
- package/dist/ui/toggle/animated/toggle-animated.d.ts +0 -6
- package/dist/ui/toggle/animated/toggle-animated.d.ts.map +0 -1
- package/dist/ui/toggle/animated/types.d.ts.map +0 -1
- package/dist/ui/toggle/index.d.ts.map +0 -1
- package/dist/ui/toggle/toggle-base.d.ts +0 -6
- package/dist/ui/toggle/toggle-base.d.ts.map +0 -1
- package/dist/ui/toggle/toggle.d.ts +0 -6
- package/dist/ui/toggle/toggle.d.ts.map +0 -1
- package/dist/ui/toggle/types.d.ts.map +0 -1
- package/dist/ui/toggle/variants.d.ts +0 -8
- package/dist/ui/toggle/variants.d.ts.map +0 -1
- package/dist/ui/tooltip/animated/animations.d.ts +0 -3
- package/dist/ui/tooltip/animated/animations.d.ts.map +0 -1
- package/dist/ui/tooltip/animated/index.d.ts +0 -4
- package/dist/ui/tooltip/animated/index.d.ts.map +0 -1
- package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts +0 -3
- package/dist/ui/tooltip/animated/tooltip-content-animated.d.ts.map +0 -1
- package/dist/ui/tooltip/animated/types.d.ts +0 -9
- package/dist/ui/tooltip/animated/types.d.ts.map +0 -1
- package/dist/ui/tooltip/index.d.ts +0 -4
- package/dist/ui/tooltip/index.d.ts.map +0 -1
- package/dist/ui/tooltip/tooltip-base.d.ts +0 -7
- package/dist/ui/tooltip/tooltip-base.d.ts.map +0 -1
- package/dist/ui/tooltip/tooltip.d.ts +0 -2
- package/dist/ui/tooltip/tooltip.d.ts.map +0 -1
- package/dist/ui/tooltip/types.d.ts +0 -30
- package/dist/ui/tooltip/types.d.ts.map +0 -1
- package/dist/ui/tooltip/variants.d.ts +0 -6
- package/dist/ui/tooltip/variants.d.ts.map +0 -1
- package/dist/vitest-setup.d.ts +0 -2
- package/dist/vitest-setup.d.ts.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Subscribes to `window.matchMedia(query)` and returns whether the query currently matches.
|
|
7
|
+
*
|
|
8
|
+
* On the server or when `matchMedia` is missing, `defaultValue` is used for the initial render and the effect no-ops.
|
|
9
|
+
* The `change` listener keeps `matches` updated when the viewport or user settings change.
|
|
10
|
+
*
|
|
11
|
+
* @param query - A valid media query string, e.g. `"(min-width: 768px)"`.
|
|
12
|
+
* @param defaultValue - Value to use before hydration or when `matchMedia` is unavailable (default `false`).
|
|
13
|
+
* @returns Current `matches` boolean for the query.
|
|
14
|
+
*/
|
|
15
|
+
export function useMediaQuery(
|
|
16
|
+
query: string,
|
|
17
|
+
defaultValue = false,
|
|
18
|
+
): boolean {
|
|
19
|
+
const [matches, setMatches] = useState(defaultValue);
|
|
20
|
+
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (typeof window === "undefined" || !window.matchMedia) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const media = window.matchMedia(query);
|
|
26
|
+
const onChange = () => {
|
|
27
|
+
setMatches(media.matches);
|
|
28
|
+
};
|
|
29
|
+
setMatches(media.matches);
|
|
30
|
+
media.addEventListener("change", onChange);
|
|
31
|
+
return () => {
|
|
32
|
+
media.removeEventListener("change", onChange);
|
|
33
|
+
};
|
|
34
|
+
}, [query]);
|
|
35
|
+
|
|
36
|
+
return matches;
|
|
37
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { act, renderHook } from "@testing-library/react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { useNetworkStatus } from "./useNetworkStatus";
|
|
5
|
+
|
|
6
|
+
describe("useNetworkStatus", () => {
|
|
7
|
+
const originalOnLine = navigator.onLine;
|
|
8
|
+
|
|
9
|
+
afterEach(() => {
|
|
10
|
+
Object.defineProperty(navigator, "onLine", {
|
|
11
|
+
configurable: true,
|
|
12
|
+
writable: true,
|
|
13
|
+
value: originalOnLine,
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it("should reflect navigator.onLine initially", () => {
|
|
18
|
+
Object.defineProperty(navigator, "onLine", {
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: true,
|
|
22
|
+
});
|
|
23
|
+
const { result } = renderHook(() => useNetworkStatus());
|
|
24
|
+
expect(result.current).toBe(true);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("should update on offline and online window events", () => {
|
|
28
|
+
Object.defineProperty(navigator, "onLine", {
|
|
29
|
+
configurable: true,
|
|
30
|
+
writable: true,
|
|
31
|
+
value: true,
|
|
32
|
+
});
|
|
33
|
+
const { result } = renderHook(() => useNetworkStatus());
|
|
34
|
+
act(() => {
|
|
35
|
+
Object.defineProperty(navigator, "onLine", {
|
|
36
|
+
configurable: true,
|
|
37
|
+
writable: true,
|
|
38
|
+
value: false,
|
|
39
|
+
});
|
|
40
|
+
window.dispatchEvent(new Event("offline"));
|
|
41
|
+
});
|
|
42
|
+
expect(result.current).toBe(false);
|
|
43
|
+
act(() => {
|
|
44
|
+
Object.defineProperty(navigator, "onLine", {
|
|
45
|
+
configurable: true,
|
|
46
|
+
writable: true,
|
|
47
|
+
value: true,
|
|
48
|
+
});
|
|
49
|
+
window.dispatchEvent(new Event("online"));
|
|
50
|
+
});
|
|
51
|
+
expect(result.current).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Reflects browser online/offline connectivity using `navigator.onLine` and the `window` `"online"` / `"offline"` events.
|
|
7
|
+
*
|
|
8
|
+
* Defaults to `true` during SSR when `navigator` is undefined. Does not expose `connection` quality metrics—only reachability hints.
|
|
9
|
+
*
|
|
10
|
+
* @returns `true` when the browser believes the device is online, `false` when offline.
|
|
11
|
+
*/
|
|
12
|
+
export function useNetworkStatus(): boolean {
|
|
13
|
+
const [online, setOnline] = useState(() =>
|
|
14
|
+
typeof navigator === "undefined" ? true : navigator.onLine,
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const onOnline = () => {
|
|
19
|
+
setOnline(true);
|
|
20
|
+
};
|
|
21
|
+
const onOffline = () => {
|
|
22
|
+
setOnline(false);
|
|
23
|
+
};
|
|
24
|
+
window.addEventListener("online", onOnline);
|
|
25
|
+
window.addEventListener("offline", onOffline);
|
|
26
|
+
return () => {
|
|
27
|
+
window.removeEventListener("online", onOnline);
|
|
28
|
+
window.removeEventListener("offline", onOffline);
|
|
29
|
+
};
|
|
30
|
+
}, []);
|
|
31
|
+
|
|
32
|
+
return online;
|
|
33
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { act, renderHook } from "@testing-library/react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { usePageVisibility } from "./usePageVisibility";
|
|
5
|
+
|
|
6
|
+
describe("usePageVisibility", () => {
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
vi.restoreAllMocks();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it("should track document.visibilityState via visibilitychange", () => {
|
|
12
|
+
vi.spyOn(document, "visibilityState", "get").mockReturnValue("visible");
|
|
13
|
+
const { result } = renderHook(() => usePageVisibility());
|
|
14
|
+
expect(result.current).toBe("visible");
|
|
15
|
+
vi.spyOn(document, "visibilityState", "get").mockReturnValue("hidden");
|
|
16
|
+
act(() => {
|
|
17
|
+
document.dispatchEvent(new Event("visibilitychange"));
|
|
18
|
+
});
|
|
19
|
+
expect(result.current).toBe("hidden");
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Tracks `document.visibilityState` (`"visible"`, `"hidden"`, or `"prerender"`) across tab visibility changes.
|
|
7
|
+
*
|
|
8
|
+
* Subscribes to `"visibilitychange"` so backgrounding a tab or switching windows updates state. SSR defaults to `"visible"`.
|
|
9
|
+
*
|
|
10
|
+
* @returns Current `DocumentVisibilityState` from the Page Visibility API.
|
|
11
|
+
*/
|
|
12
|
+
export function usePageVisibility(): DocumentVisibilityState {
|
|
13
|
+
const [state, setState] = useState<DocumentVisibilityState>(() =>
|
|
14
|
+
typeof document === "undefined" ? "visible" : document.visibilityState,
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (typeof document === "undefined") {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const onChange = () => {
|
|
22
|
+
setState(document.visibilityState);
|
|
23
|
+
};
|
|
24
|
+
document.addEventListener("visibilitychange", onChange);
|
|
25
|
+
return () => {
|
|
26
|
+
document.removeEventListener("visibilitychange", onChange);
|
|
27
|
+
};
|
|
28
|
+
}, []);
|
|
29
|
+
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { act, renderHook } from "@testing-library/react";
|
|
2
|
+
import { describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { buildPaginationItems, usePagination } from "./usePagination";
|
|
5
|
+
|
|
6
|
+
describe("buildPaginationItems", () => {
|
|
7
|
+
it("should return empty list when pageCount is zero", () => {
|
|
8
|
+
expect(
|
|
9
|
+
buildPaginationItems({
|
|
10
|
+
pageCount: 0,
|
|
11
|
+
currentPage: 1,
|
|
12
|
+
siblingCount: 1,
|
|
13
|
+
boundaryCount: 1,
|
|
14
|
+
}),
|
|
15
|
+
).toEqual([]);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
it("should return full page range when within totalNumbers window", () => {
|
|
19
|
+
const items = buildPaginationItems({
|
|
20
|
+
pageCount: 5,
|
|
21
|
+
currentPage: 3,
|
|
22
|
+
siblingCount: 1,
|
|
23
|
+
boundaryCount: 1,
|
|
24
|
+
});
|
|
25
|
+
expect(items).toEqual([
|
|
26
|
+
{ type: "page", value: 1 },
|
|
27
|
+
{ type: "page", value: 2 },
|
|
28
|
+
{ type: "page", value: 3 },
|
|
29
|
+
{ type: "page", value: 4 },
|
|
30
|
+
{ type: "page", value: 5 },
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it("should insert ellipsis when range is fragmented", () => {
|
|
35
|
+
const items = buildPaginationItems({
|
|
36
|
+
pageCount: 10,
|
|
37
|
+
currentPage: 5,
|
|
38
|
+
siblingCount: 1,
|
|
39
|
+
boundaryCount: 1,
|
|
40
|
+
});
|
|
41
|
+
const ellipsisKeys = items
|
|
42
|
+
.filter((item) => item.type === "ellipsis")
|
|
43
|
+
.map((item) => item.key);
|
|
44
|
+
expect(ellipsisKeys.length).toBeGreaterThan(0);
|
|
45
|
+
const pages = items
|
|
46
|
+
.filter((item) => item.type === "page")
|
|
47
|
+
.map((item) => item.value);
|
|
48
|
+
expect(pages).toContain(1);
|
|
49
|
+
expect(pages).toContain(10);
|
|
50
|
+
expect(pages).toContain(5);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("should clamp current page into range", () => {
|
|
54
|
+
const items = buildPaginationItems({
|
|
55
|
+
pageCount: 3,
|
|
56
|
+
currentPage: 99,
|
|
57
|
+
siblingCount: 0,
|
|
58
|
+
boundaryCount: 1,
|
|
59
|
+
});
|
|
60
|
+
expect(items.every((i) => i.type === "page")).toBe(true);
|
|
61
|
+
expect(items.some((i) => i.type === "page" && i.value === 3)).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe("usePagination", () => {
|
|
66
|
+
it("should use internal state when uncontrolled", () => {
|
|
67
|
+
const { result } = renderHook(() =>
|
|
68
|
+
usePagination({ pageCount: 5, defaultPage: 2 }),
|
|
69
|
+
);
|
|
70
|
+
expect(result.current.currentPage).toBe(2);
|
|
71
|
+
expect(result.current.canGoPrev).toBe(true);
|
|
72
|
+
expect(result.current.canGoNext).toBe(true);
|
|
73
|
+
act(() => {
|
|
74
|
+
result.current.setPage(4);
|
|
75
|
+
});
|
|
76
|
+
expect(result.current.currentPage).toBe(4);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it("should clamp setPage into 1 and pageCount", () => {
|
|
80
|
+
const { result } = renderHook(() =>
|
|
81
|
+
usePagination({ pageCount: 3, defaultPage: 2 }),
|
|
82
|
+
);
|
|
83
|
+
act(() => {
|
|
84
|
+
result.current.setPage(0);
|
|
85
|
+
});
|
|
86
|
+
expect(result.current.currentPage).toBe(1);
|
|
87
|
+
act(() => {
|
|
88
|
+
result.current.setPage(100);
|
|
89
|
+
});
|
|
90
|
+
expect(result.current.currentPage).toBe(3);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("should follow controlled page prop", () => {
|
|
94
|
+
const onPageChange = vi.fn();
|
|
95
|
+
const { result, rerender } = renderHook(
|
|
96
|
+
({ page }: { page: number }) =>
|
|
97
|
+
usePagination({ pageCount: 4, page, onPageChange }),
|
|
98
|
+
{ initialProps: { page: 1 } },
|
|
99
|
+
);
|
|
100
|
+
expect(result.current.currentPage).toBe(1);
|
|
101
|
+
act(() => {
|
|
102
|
+
result.current.setPage(3);
|
|
103
|
+
});
|
|
104
|
+
expect(result.current.currentPage).toBe(1);
|
|
105
|
+
expect(onPageChange).toHaveBeenCalledWith(3);
|
|
106
|
+
rerender({ page: 3 });
|
|
107
|
+
expect(result.current.currentPage).toBe(3);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("should not change page on goPrev when already first", () => {
|
|
111
|
+
const { result } = renderHook(() =>
|
|
112
|
+
usePagination({ pageCount: 3, defaultPage: 1 }),
|
|
113
|
+
);
|
|
114
|
+
act(() => {
|
|
115
|
+
result.current.goPrev();
|
|
116
|
+
});
|
|
117
|
+
expect(result.current.currentPage).toBe(1);
|
|
118
|
+
expect(result.current.canGoPrev).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("should not change page on goNext when already last", () => {
|
|
122
|
+
const { result } = renderHook(() =>
|
|
123
|
+
usePagination({ pageCount: 3, defaultPage: 3 }),
|
|
124
|
+
);
|
|
125
|
+
act(() => {
|
|
126
|
+
result.current.goNext();
|
|
127
|
+
});
|
|
128
|
+
expect(result.current.currentPage).toBe(3);
|
|
129
|
+
expect(result.current.canGoNext).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("should set canGoPrev and canGoNext false when pageCount is zero", () => {
|
|
133
|
+
const { result } = renderHook(() =>
|
|
134
|
+
usePagination({ pageCount: 0, defaultPage: 1 }),
|
|
135
|
+
);
|
|
136
|
+
expect(result.current.canGoPrev).toBe(false);
|
|
137
|
+
expect(result.current.canGoNext).toBe(false);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo, useState } from "react";
|
|
4
|
+
|
|
5
|
+
import type {
|
|
6
|
+
PaginationPageItem,
|
|
7
|
+
UsePaginationParams,
|
|
8
|
+
UsePaginationResult,
|
|
9
|
+
} from "../../ui/pagination/types";
|
|
10
|
+
import { clampPage, range } from "../../lib/utils";
|
|
11
|
+
|
|
12
|
+
export type { PaginationPageItem } from "../../ui/pagination/types";
|
|
13
|
+
|
|
14
|
+
export type BuildPaginationItemsParams = {
|
|
15
|
+
pageCount: number;
|
|
16
|
+
currentPage: number;
|
|
17
|
+
siblingCount: number;
|
|
18
|
+
boundaryCount: number;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Headless pagination state: current page, derived page button items, and prev/next helpers.
|
|
23
|
+
*
|
|
24
|
+
* Supports controlled mode when `page` is passed from the parent, or internal state seeded by `defaultPage`.
|
|
25
|
+
* All page indices are **1-based** and clamped to `[1, pageCount]` via {@link clampPage}. `items` is memoized from
|
|
26
|
+
* {@link buildPaginationItems} for rendering numeric pages and ellipsis gaps.
|
|
27
|
+
*
|
|
28
|
+
* @param params - See `UsePaginationParams` in `../ui/pagination/types` for full fields (`pageCount`, `page`, `onPageChange`, etc.).
|
|
29
|
+
* @returns Current page, item list, `setPage`, navigation helpers, and `canGoPrev` / `canGoNext` flags.
|
|
30
|
+
*/
|
|
31
|
+
export function usePagination({
|
|
32
|
+
pageCount,
|
|
33
|
+
page,
|
|
34
|
+
defaultPage = 1,
|
|
35
|
+
siblingCount = 1,
|
|
36
|
+
boundaryCount = 1,
|
|
37
|
+
onPageChange,
|
|
38
|
+
}: UsePaginationParams): UsePaginationResult {
|
|
39
|
+
const [internalPage, setInternalPage] = useState(() =>
|
|
40
|
+
clampPage(defaultPage, pageCount),
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
const isControlled = page !== undefined;
|
|
44
|
+
const currentPage = clampPage(isControlled ? page : internalPage, pageCount);
|
|
45
|
+
|
|
46
|
+
const setPage = useCallback(
|
|
47
|
+
(next: number) => {
|
|
48
|
+
const clamped = clampPage(next, pageCount);
|
|
49
|
+
if (!isControlled) {
|
|
50
|
+
setInternalPage(clamped);
|
|
51
|
+
}
|
|
52
|
+
onPageChange?.(clamped);
|
|
53
|
+
},
|
|
54
|
+
[isControlled, onPageChange, pageCount],
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
const items = useMemo(
|
|
58
|
+
() =>
|
|
59
|
+
buildPaginationItems({
|
|
60
|
+
pageCount,
|
|
61
|
+
currentPage,
|
|
62
|
+
siblingCount,
|
|
63
|
+
boundaryCount,
|
|
64
|
+
}),
|
|
65
|
+
[boundaryCount, currentPage, pageCount, siblingCount],
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
const canGoPrev = pageCount > 0 && currentPage > 1;
|
|
69
|
+
const canGoNext = pageCount > 0 && currentPage < pageCount;
|
|
70
|
+
|
|
71
|
+
const goPrev = useCallback(() => {
|
|
72
|
+
if (canGoPrev) {
|
|
73
|
+
setPage(currentPage - 1);
|
|
74
|
+
}
|
|
75
|
+
}, [canGoPrev, currentPage, setPage]);
|
|
76
|
+
|
|
77
|
+
const goNext = useCallback(() => {
|
|
78
|
+
if (canGoNext) {
|
|
79
|
+
setPage(currentPage + 1);
|
|
80
|
+
}
|
|
81
|
+
}, [canGoNext, currentPage, setPage]);
|
|
82
|
+
|
|
83
|
+
return {
|
|
84
|
+
currentPage,
|
|
85
|
+
pageCount,
|
|
86
|
+
items,
|
|
87
|
+
setPage,
|
|
88
|
+
goPrev,
|
|
89
|
+
goNext,
|
|
90
|
+
canGoPrev,
|
|
91
|
+
canGoNext,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Builds the ordered list of page numbers and ellipsis markers for a pagination control.
|
|
97
|
+
*
|
|
98
|
+
* @param params.pageCount - Total number of pages (must be >= 0; empty list when 0).
|
|
99
|
+
* @param params.currentPage - Active page index (1-based).
|
|
100
|
+
* @param params.siblingCount - How many page buttons to show on each side of the current page.
|
|
101
|
+
* @param params.boundaryCount - How many pages to pin at the start and end of the range.
|
|
102
|
+
* @returns Items suitable for rendering, e.g. page `1`, ellipsis gap, middle window, ellipsis, last page.
|
|
103
|
+
*/
|
|
104
|
+
export function buildPaginationItems({
|
|
105
|
+
pageCount,
|
|
106
|
+
currentPage,
|
|
107
|
+
siblingCount,
|
|
108
|
+
boundaryCount,
|
|
109
|
+
}: BuildPaginationItemsParams): PaginationPageItem[] {
|
|
110
|
+
if (pageCount <= 0) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
const safeBoundary = Math.max(1, boundaryCount);
|
|
115
|
+
const safeSibling = Math.max(0, siblingCount);
|
|
116
|
+
const current = clampPage(currentPage, pageCount);
|
|
117
|
+
|
|
118
|
+
const totalNumbers = safeBoundary * 2 + safeSibling * 2 + 1;
|
|
119
|
+
if (pageCount <= totalNumbers) {
|
|
120
|
+
return range(1, pageCount).map((value) => ({ type: "page", value }));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const leftBoundaryEnd = safeBoundary;
|
|
124
|
+
const rightBoundaryStart = pageCount - safeBoundary + 1;
|
|
125
|
+
|
|
126
|
+
const siblingsStart = Math.max(current - safeSibling, leftBoundaryEnd + 1);
|
|
127
|
+
const siblingsEnd = Math.min(current + safeSibling, rightBoundaryStart - 1);
|
|
128
|
+
|
|
129
|
+
const pages = new Set<number>();
|
|
130
|
+
for (let p = 1; p <= leftBoundaryEnd; p += 1) {
|
|
131
|
+
pages.add(p);
|
|
132
|
+
}
|
|
133
|
+
for (let p = rightBoundaryStart; p <= pageCount; p += 1) {
|
|
134
|
+
pages.add(p);
|
|
135
|
+
}
|
|
136
|
+
for (let p = siblingsStart; p <= siblingsEnd; p += 1) {
|
|
137
|
+
pages.add(p);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const sorted = [...pages].sort((a, b) => a - b);
|
|
141
|
+
const items: PaginationPageItem[] = [];
|
|
142
|
+
|
|
143
|
+
for (let i = 0; i < sorted.length; i += 1) {
|
|
144
|
+
const value = sorted[i];
|
|
145
|
+
const prev = sorted[i - 1];
|
|
146
|
+
if (i > 0 && prev !== undefined && value && value - prev > 1) {
|
|
147
|
+
items.push({ type: "ellipsis", key: `gap-${prev}-${value}` });
|
|
148
|
+
}
|
|
149
|
+
items.push({ type: "page", value: value as number });
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return items;
|
|
153
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { act, renderHook } from "@testing-library/react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { usePrefersColorScheme } from "./usePrefersColorScheme";
|
|
5
|
+
|
|
6
|
+
function createDarkPreferenceMatchMedia(initialDark: boolean) {
|
|
7
|
+
let dark = initialDark;
|
|
8
|
+
const listeners = new Set<() => void>();
|
|
9
|
+
return {
|
|
10
|
+
setDark(next: boolean) {
|
|
11
|
+
dark = next;
|
|
12
|
+
listeners.forEach((listener) => listener());
|
|
13
|
+
},
|
|
14
|
+
implementation: (query: string) => {
|
|
15
|
+
const mql = {
|
|
16
|
+
media: query,
|
|
17
|
+
get matches() {
|
|
18
|
+
return query === "(prefers-color-scheme: dark)" && dark;
|
|
19
|
+
},
|
|
20
|
+
addEventListener: (_type: string, listener: () => void) => {
|
|
21
|
+
listeners.add(listener);
|
|
22
|
+
},
|
|
23
|
+
removeEventListener: (_type: string, listener: () => void) => {
|
|
24
|
+
listeners.delete(listener);
|
|
25
|
+
},
|
|
26
|
+
addListener: vi.fn(),
|
|
27
|
+
removeListener: vi.fn(),
|
|
28
|
+
dispatchEvent: vi.fn(),
|
|
29
|
+
};
|
|
30
|
+
return mql as unknown as MediaQueryList;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
describe("usePrefersColorScheme", () => {
|
|
36
|
+
afterEach(() => {
|
|
37
|
+
vi.spyOn(window, "matchMedia").mockRestore();
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("should map dark media query to dark scheme", () => {
|
|
41
|
+
const { setDark, implementation } = createDarkPreferenceMatchMedia(false);
|
|
42
|
+
const matchMediaSpy = vi
|
|
43
|
+
.spyOn(window, "matchMedia")
|
|
44
|
+
.mockImplementation(implementation);
|
|
45
|
+
const { result } = renderHook(() => usePrefersColorScheme("light"));
|
|
46
|
+
expect(matchMediaSpy).toHaveBeenCalledWith("(prefers-color-scheme: dark)");
|
|
47
|
+
expect(result.current).toBe("light");
|
|
48
|
+
act(() => {
|
|
49
|
+
setDark(true);
|
|
50
|
+
});
|
|
51
|
+
expect(result.current).toBe("dark");
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMediaQuery } from "../useMediaQuery";
|
|
4
|
+
|
|
1
5
|
export type ColorSchemePreference = "light" | "dark";
|
|
6
|
+
|
|
2
7
|
/**
|
|
3
8
|
* Resolves the user’s preferred color scheme from `prefers-color-scheme: dark` via {@link useMediaQuery}.
|
|
4
9
|
*
|
|
5
10
|
* @param defaultScheme - Hydration / SSR fallback when media queries are unavailable (`"light"` or `"dark"`).
|
|
6
11
|
* @returns `"dark"` when the dark media query matches, otherwise `"light"`.
|
|
7
12
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
13
|
+
export function usePrefersColorScheme(
|
|
14
|
+
defaultScheme: ColorSchemePreference = "light",
|
|
15
|
+
): ColorSchemePreference {
|
|
16
|
+
const prefersDark = useMediaQuery(
|
|
17
|
+
"(prefers-color-scheme: dark)",
|
|
18
|
+
defaultScheme === "dark",
|
|
19
|
+
);
|
|
20
|
+
return prefersDark ? "dark" : "light";
|
|
21
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { renderHook } from "@testing-library/react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
|
|
4
|
+
import { usePrefersReducedMotion } from "./usePrefersReducedMotion";
|
|
5
|
+
|
|
6
|
+
describe("usePrefersReducedMotion", () => {
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
vi.spyOn(window, "matchMedia").mockRestore();
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it("should subscribe to prefers-reduced-motion reduce query", () => {
|
|
12
|
+
const matchMediaSpy = vi.spyOn(window, "matchMedia").mockImplementation(
|
|
13
|
+
() =>
|
|
14
|
+
({
|
|
15
|
+
matches: true,
|
|
16
|
+
addEventListener: vi.fn(),
|
|
17
|
+
removeEventListener: vi.fn(),
|
|
18
|
+
addListener: vi.fn(),
|
|
19
|
+
removeListener: vi.fn(),
|
|
20
|
+
dispatchEvent: vi.fn(),
|
|
21
|
+
}) as unknown as MediaQueryList,
|
|
22
|
+
);
|
|
23
|
+
const { result } = renderHook(() => usePrefersReducedMotion());
|
|
24
|
+
expect(matchMediaSpy).toHaveBeenCalledWith("(prefers-reduced-motion: reduce)");
|
|
25
|
+
expect(result.current).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useMediaQuery } from "../useMediaQuery";
|
|
4
|
+
|
|
1
5
|
/**
|
|
2
6
|
* Returns whether the user prefers reduced motion (`prefers-reduced-motion: reduce`).
|
|
3
7
|
*
|
|
@@ -5,5 +9,6 @@
|
|
|
5
9
|
*
|
|
6
10
|
* @returns `true` when reduced motion is requested.
|
|
7
11
|
*/
|
|
8
|
-
export
|
|
9
|
-
|
|
12
|
+
export function usePrefersReducedMotion(): boolean {
|
|
13
|
+
return useMediaQuery("(prefers-reduced-motion: reduce)");
|
|
14
|
+
}
|