@work-rjkashyap/unified-ui 0.3.4 → 0.3.6
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/CHANGELOG.md +105 -0
- package/LICENSE +21 -0
- package/dist/components/accordion.cjs +225 -0
- package/dist/components/accordion.d.cts +157 -0
- package/dist/components/accordion.d.ts +157 -0
- package/dist/components/accordion.mjs +199 -0
- package/dist/components/alert-dialog.cjs +246 -0
- package/dist/components/alert-dialog.d.cts +61 -0
- package/dist/components/alert-dialog.d.ts +61 -0
- package/dist/components/alert-dialog.mjs +218 -0
- package/dist/components/alert.cjs +401 -0
- package/dist/components/alert.d.cts +217 -0
- package/dist/components/alert.d.ts +217 -0
- package/dist/components/alert.mjs +374 -0
- package/dist/components/aspect-ratio.cjs +45 -0
- package/dist/components/aspect-ratio.d.cts +10 -0
- package/dist/components/aspect-ratio.d.ts +10 -0
- package/dist/components/aspect-ratio.mjs +23 -0
- package/dist/components/avatar.cjs +348 -0
- package/dist/components/avatar.d.cts +198 -0
- package/dist/components/avatar.d.ts +198 -0
- package/dist/components/avatar.mjs +329 -0
- package/dist/components/badge.cjs +325 -0
- package/dist/components/badge.d.cts +259 -0
- package/dist/components/badge.d.ts +259 -0
- package/dist/components/badge.mjs +298 -0
- package/dist/components/banner.cjs +147 -0
- package/dist/components/banner.d.cts +31 -0
- package/dist/components/banner.d.ts +31 -0
- package/dist/components/banner.mjs +122 -0
- package/dist/components/breadcrumb.cjs +266 -0
- package/dist/components/breadcrumb.d.cts +159 -0
- package/dist/components/breadcrumb.d.ts +159 -0
- package/dist/components/breadcrumb.mjs +235 -0
- package/dist/components/button.cjs +254 -0
- package/dist/components/button.d.cts +126 -0
- package/dist/components/button.d.ts +126 -0
- package/dist/components/button.mjs +229 -0
- package/dist/components/calendar.cjs +511 -0
- package/dist/components/calendar.d.cts +94 -0
- package/dist/components/calendar.d.ts +94 -0
- package/dist/components/calendar.mjs +492 -0
- package/dist/components/card.cjs +234 -0
- package/dist/components/card.d.cts +190 -0
- package/dist/components/card.d.ts +190 -0
- package/dist/components/card.mjs +210 -0
- package/dist/components/carousel.cjs +234 -0
- package/dist/components/carousel.d.cts +30 -0
- package/dist/components/carousel.d.ts +30 -0
- package/dist/components/carousel.mjs +217 -0
- package/dist/components/chart.cjs +122 -0
- package/dist/components/chart.d.cts +103 -0
- package/dist/components/chart.d.ts +103 -0
- package/dist/components/chart.mjs +96 -0
- package/dist/components/checkbox.cjs +318 -0
- package/dist/components/checkbox.d.cts +182 -0
- package/dist/components/checkbox.d.ts +182 -0
- package/dist/components/checkbox.mjs +296 -0
- package/dist/components/code-highlight.cjs +335 -0
- package/dist/components/code-highlight.d.cts +18 -0
- package/dist/components/code-highlight.d.ts +18 -0
- package/dist/components/code-highlight.mjs +308 -0
- package/dist/components/code.cjs +265 -0
- package/dist/components/code.d.cts +40 -0
- package/dist/components/code.d.ts +40 -0
- package/dist/components/code.mjs +243 -0
- package/dist/components/collapsible.cjs +143 -0
- package/dist/components/collapsible.d.cts +159 -0
- package/dist/components/collapsible.d.ts +159 -0
- package/dist/components/collapsible.mjs +123 -0
- package/dist/components/color-picker.cjs +348 -0
- package/dist/components/color-picker.d.cts +35 -0
- package/dist/components/color-picker.d.ts +35 -0
- package/dist/components/color-picker.mjs +331 -0
- package/dist/components/combobox.cjs +584 -0
- package/dist/components/combobox.d.cts +183 -0
- package/dist/components/combobox.d.ts +183 -0
- package/dist/components/combobox.mjs +571 -0
- package/dist/components/command.cjs +329 -0
- package/dist/components/command.d.cts +97 -0
- package/dist/components/command.d.ts +97 -0
- package/dist/components/command.mjs +311 -0
- package/dist/components/confirm-dialog.cjs +100 -0
- package/dist/components/confirm-dialog.d.cts +25 -0
- package/dist/components/confirm-dialog.d.ts +25 -0
- package/dist/components/confirm-dialog.mjs +86 -0
- package/dist/components/context-menu.cjs +325 -0
- package/dist/components/context-menu.d.cts +259 -0
- package/dist/components/context-menu.d.ts +259 -0
- package/dist/components/context-menu.mjs +290 -0
- package/dist/components/copy-button.cjs +203 -0
- package/dist/components/copy-button.d.cts +22 -0
- package/dist/components/copy-button.d.ts +22 -0
- package/dist/components/copy-button.mjs +178 -0
- package/dist/components/data-list.cjs +140 -0
- package/dist/components/data-list.d.cts +36 -0
- package/dist/components/data-list.d.ts +36 -0
- package/dist/components/data-list.mjs +113 -0
- package/dist/components/data-table-toolbar.cjs +338 -0
- package/dist/components/data-table-toolbar.d.cts +84 -0
- package/dist/components/data-table-toolbar.d.ts +84 -0
- package/dist/components/data-table-toolbar.mjs +320 -0
- package/dist/components/data-table.cjs +1324 -0
- package/dist/components/data-table.d.cts +349 -0
- package/dist/components/data-table.d.ts +349 -0
- package/dist/components/data-table.mjs +1323 -0
- package/dist/components/date-picker.cjs +282 -0
- package/dist/components/date-picker.d.cts +97 -0
- package/dist/components/date-picker.d.ts +97 -0
- package/dist/components/date-picker.mjs +258 -0
- package/dist/components/dialog.cjs +319 -0
- package/dist/components/dialog.d.cts +74 -0
- package/dist/components/dialog.d.ts +74 -0
- package/dist/components/dialog.mjs +292 -0
- package/dist/components/drawer.cjs +262 -0
- package/dist/components/drawer.d.cts +113 -0
- package/dist/components/drawer.d.ts +113 -0
- package/dist/components/drawer.mjs +230 -0
- package/dist/components/dropdown-menu.cjs +328 -0
- package/dist/components/dropdown-menu.d.cts +95 -0
- package/dist/components/dropdown-menu.d.ts +95 -0
- package/dist/components/dropdown-menu.mjs +293 -0
- package/dist/components/empty-state.cjs +123 -0
- package/dist/components/empty-state.d.cts +15 -0
- package/dist/components/empty-state.d.ts +15 -0
- package/dist/components/empty-state.mjs +99 -0
- package/dist/components/file-upload.cjs +442 -0
- package/dist/components/file-upload.d.cts +35 -0
- package/dist/components/file-upload.d.ts +35 -0
- package/dist/components/file-upload.mjs +423 -0
- package/dist/components/form-field.cjs +191 -0
- package/dist/components/form-field.d.cts +163 -0
- package/dist/components/form-field.d.ts +163 -0
- package/dist/components/form-field.mjs +167 -0
- package/dist/components/hover-card.cjs +99 -0
- package/dist/components/hover-card.d.cts +28 -0
- package/dist/components/hover-card.d.ts +28 -0
- package/dist/components/hover-card.mjs +75 -0
- package/dist/components/image-gallery.cjs +359 -0
- package/dist/components/image-gallery.d.cts +46 -0
- package/dist/components/image-gallery.d.ts +46 -0
- package/dist/components/image-gallery.mjs +340 -0
- package/dist/components/index.cjs +719 -0
- package/dist/components/index.d.cts +84 -0
- package/dist/components/index.d.ts +84 -0
- package/dist/components/index.mjs +771 -0
- package/dist/components/infinite-scroll.cjs +95 -0
- package/dist/components/infinite-scroll.d.cts +54 -0
- package/dist/components/infinite-scroll.d.ts +54 -0
- package/dist/components/infinite-scroll.mjs +71 -0
- package/dist/components/input-group.cjs +202 -0
- package/dist/components/input-group.d.cts +22 -0
- package/dist/components/input-group.d.ts +22 -0
- package/dist/components/input-group.mjs +178 -0
- package/dist/components/input.cjs +318 -0
- package/dist/components/input.d.cts +99 -0
- package/dist/components/input.d.ts +99 -0
- package/dist/components/input.mjs +296 -0
- package/dist/components/kbd.cjs +69 -0
- package/dist/components/kbd.d.cts +25 -0
- package/dist/components/kbd.d.ts +25 -0
- package/dist/components/kbd.mjs +44 -0
- package/dist/components/label.cjs +138 -0
- package/dist/components/label.d.cts +91 -0
- package/dist/components/label.d.ts +91 -0
- package/dist/components/label.mjs +113 -0
- package/dist/components/markdown.cjs +179 -0
- package/dist/components/markdown.d.cts +41 -0
- package/dist/components/markdown.d.ts +41 -0
- package/dist/components/markdown.mjs +155 -0
- package/dist/components/menubar.cjs +365 -0
- package/dist/components/menubar.d.cts +88 -0
- package/dist/components/menubar.d.ts +88 -0
- package/dist/components/menubar.mjs +329 -0
- package/dist/components/navigation-menu.cjs +280 -0
- package/dist/components/navigation-menu.d.cts +123 -0
- package/dist/components/navigation-menu.d.ts +123 -0
- package/dist/components/navigation-menu.mjs +250 -0
- package/dist/components/number-input.cjs +419 -0
- package/dist/components/number-input.d.cts +111 -0
- package/dist/components/number-input.d.ts +111 -0
- package/dist/components/number-input.mjs +400 -0
- package/dist/components/pagination.cjs +322 -0
- package/dist/components/pagination.d.cts +119 -0
- package/dist/components/pagination.d.ts +119 -0
- package/dist/components/pagination.mjs +297 -0
- package/dist/components/pin-input.cjs +321 -0
- package/dist/components/pin-input.d.cts +112 -0
- package/dist/components/pin-input.d.ts +112 -0
- package/dist/components/pin-input.mjs +303 -0
- package/dist/components/popover.cjs +194 -0
- package/dist/components/popover.d.cts +108 -0
- package/dist/components/popover.d.ts +108 -0
- package/dist/components/popover.mjs +168 -0
- package/dist/components/progress.cjs +237 -0
- package/dist/components/progress.d.cts +137 -0
- package/dist/components/progress.d.ts +137 -0
- package/dist/components/progress.mjs +211 -0
- package/dist/components/radio.cjs +344 -0
- package/dist/components/radio.d.cts +145 -0
- package/dist/components/radio.d.ts +145 -0
- package/dist/components/radio.mjs +320 -0
- package/dist/components/resizable.cjs +121 -0
- package/dist/components/resizable.d.cts +23 -0
- package/dist/components/resizable.d.ts +23 -0
- package/dist/components/resizable.mjs +99 -0
- package/dist/components/scroll-area.cjs +168 -0
- package/dist/components/scroll-area.d.cts +131 -0
- package/dist/components/scroll-area.d.ts +131 -0
- package/dist/components/scroll-area.mjs +143 -0
- package/dist/components/search-input.cjs +261 -0
- package/dist/components/search-input.d.cts +26 -0
- package/dist/components/search-input.d.ts +26 -0
- package/dist/components/search-input.mjs +243 -0
- package/dist/components/select.cjs +320 -0
- package/dist/components/select.d.cts +55 -0
- package/dist/components/select.d.ts +55 -0
- package/dist/components/select.mjs +288 -0
- package/dist/components/separator.cjs +193 -0
- package/dist/components/separator.d.cts +92 -0
- package/dist/components/separator.d.ts +92 -0
- package/dist/components/separator.mjs +170 -0
- package/dist/components/sheet.cjs +399 -0
- package/dist/components/sheet.d.cts +219 -0
- package/dist/components/sheet.d.ts +219 -0
- package/dist/components/sheet.mjs +379 -0
- package/dist/components/sidebar.cjs +1077 -0
- package/dist/components/sidebar.d.cts +733 -0
- package/dist/components/sidebar.d.ts +733 -0
- package/dist/components/sidebar.mjs +1033 -0
- package/dist/components/skeleton.cjs +210 -0
- package/dist/components/skeleton.d.cts +202 -0
- package/dist/components/skeleton.d.ts +202 -0
- package/dist/components/skeleton.mjs +182 -0
- package/dist/components/slider.cjs +319 -0
- package/dist/components/slider.d.cts +82 -0
- package/dist/components/slider.d.ts +82 -0
- package/dist/components/slider.mjs +296 -0
- package/dist/components/sonner.cjs +119 -0
- package/dist/components/sonner.d.cts +60 -0
- package/dist/components/sonner.d.ts +60 -0
- package/dist/components/sonner.mjs +94 -0
- package/dist/components/spinner.cjs +238 -0
- package/dist/components/spinner.d.cts +101 -0
- package/dist/components/spinner.d.ts +101 -0
- package/dist/components/spinner.mjs +213 -0
- package/dist/components/stat.cjs +180 -0
- package/dist/components/stat.d.cts +21 -0
- package/dist/components/stat.d.ts +21 -0
- package/dist/components/stat.mjs +161 -0
- package/dist/components/steps.cjs +228 -0
- package/dist/components/steps.d.cts +76 -0
- package/dist/components/steps.d.ts +76 -0
- package/dist/components/steps.mjs +207 -0
- package/dist/components/switch.cjs +243 -0
- package/dist/components/switch.d.cts +90 -0
- package/dist/components/switch.d.ts +90 -0
- package/dist/components/switch.mjs +228 -0
- package/dist/components/table.cjs +381 -0
- package/dist/components/table.d.cts +181 -0
- package/dist/components/table.d.ts +181 -0
- package/dist/components/table.mjs +349 -0
- package/dist/components/tabs.cjs +326 -0
- package/dist/components/tabs.d.cts +154 -0
- package/dist/components/tabs.d.ts +154 -0
- package/dist/components/tabs.mjs +304 -0
- package/dist/components/textarea.cjs +258 -0
- package/dist/components/textarea.d.cts +112 -0
- package/dist/components/textarea.d.ts +112 -0
- package/dist/components/textarea.mjs +233 -0
- package/dist/components/theme-toggle.cjs +282 -0
- package/dist/components/theme-toggle.d.cts +58 -0
- package/dist/components/theme-toggle.d.ts +58 -0
- package/dist/components/theme-toggle.mjs +258 -0
- package/dist/components/timeline.cjs +178 -0
- package/dist/components/timeline.d.cts +41 -0
- package/dist/components/timeline.d.ts +41 -0
- package/dist/components/timeline.mjs +157 -0
- package/dist/components/toast.cjs +546 -0
- package/dist/components/toast.d.cts +169 -0
- package/dist/components/toast.d.ts +169 -0
- package/dist/components/toast.mjs +528 -0
- package/dist/components/toggle-group.cjs +204 -0
- package/dist/components/toggle-group.d.cts +215 -0
- package/dist/components/toggle-group.d.ts +215 -0
- package/dist/components/toggle-group.mjs +180 -0
- package/dist/components/toggle.cjs +155 -0
- package/dist/components/toggle.d.cts +100 -0
- package/dist/components/toggle.d.ts +100 -0
- package/dist/components/toggle.mjs +130 -0
- package/dist/components/tooltip.cjs +155 -0
- package/dist/components/tooltip.d.cts +129 -0
- package/dist/components/tooltip.d.ts +129 -0
- package/dist/components/tooltip.mjs +132 -0
- package/dist/components/tree-view.cjs +450 -0
- package/dist/components/tree-view.d.cts +67 -0
- package/dist/components/tree-view.d.ts +67 -0
- package/dist/components/tree-view.mjs +433 -0
- package/dist/components/video-player.cjs +344 -0
- package/dist/components/video-player.d.cts +34 -0
- package/dist/components/video-player.d.ts +34 -0
- package/dist/components/video-player.mjs +320 -0
- package/dist/components/virtual-list.cjs +153 -0
- package/dist/components/virtual-list.d.cts +53 -0
- package/dist/components/virtual-list.d.ts +53 -0
- package/dist/components/virtual-list.mjs +136 -0
- package/dist/components/visually-hidden.cjs +43 -0
- package/dist/components/visually-hidden.d.cts +9 -0
- package/dist/components/visually-hidden.d.ts +9 -0
- package/dist/components/visually-hidden.mjs +21 -0
- package/dist/index.cjs +1081 -1957
- package/dist/index.d.cts +99 -11
- package/dist/index.d.ts +99 -11
- package/dist/index.mjs +1138 -16
- package/dist/motion/hooks.cjs +98 -0
- package/dist/motion/hooks.d.cts +32 -0
- package/dist/motion/hooks.d.ts +32 -0
- package/dist/motion/hooks.mjs +70 -0
- package/dist/motion/index.cjs +157 -0
- package/dist/motion/index.d.cts +5 -0
- package/dist/motion/index.d.ts +5 -0
- package/dist/motion/index.mjs +137 -0
- package/dist/motion/presets.cjs +609 -0
- package/dist/{motion.d.ts → motion/presets.d.cts} +1 -30
- package/dist/{motion.d.cts → motion/presets.d.ts} +1 -30
- package/dist/{chunk-PLRSH37T.mjs → motion/presets.mjs} +119 -126
- package/dist/primitives/container.cjs +88 -0
- package/dist/primitives/container.d.cts +82 -0
- package/dist/primitives/container.d.ts +82 -0
- package/dist/primitives/container.mjs +64 -0
- package/dist/primitives/divider.cjs +74 -0
- package/dist/primitives/divider.d.cts +30 -0
- package/dist/primitives/divider.d.ts +30 -0
- package/dist/primitives/divider.mjs +50 -0
- package/dist/primitives/index.cjs +54 -0
- package/dist/primitives/index.d.cts +6 -0
- package/dist/primitives/index.d.ts +6 -0
- package/dist/primitives/index.mjs +33 -0
- package/dist/primitives/stack.cjs +167 -0
- package/dist/primitives/stack.d.cts +132 -0
- package/dist/primitives/stack.d.ts +132 -0
- package/dist/primitives/stack.mjs +142 -0
- package/dist/primitives/typography.cjs +260 -0
- package/dist/primitives/typography.d.cts +157 -0
- package/dist/primitives/typography.d.ts +157 -0
- package/dist/primitives/typography.mjs +229 -0
- package/dist/theme/contract.cjs +246 -0
- package/dist/theme/contract.d.cts +76 -0
- package/dist/theme/contract.d.ts +76 -0
- package/dist/theme/contract.mjs +221 -0
- package/dist/theme/customizer-store.cjs +266 -0
- package/dist/theme/customizer-store.d.cts +76 -0
- package/dist/theme/customizer-store.d.ts +76 -0
- package/dist/theme/customizer-store.mjs +261 -0
- package/dist/theme/customizer.cjs +812 -0
- package/dist/theme/customizer.d.cts +13 -0
- package/dist/theme/customizer.d.ts +13 -0
- package/dist/theme/customizer.mjs +803 -0
- package/dist/theme/index.cjs +105 -0
- package/dist/theme/index.d.cts +13 -0
- package/dist/theme/index.d.ts +13 -0
- package/dist/theme/index.mjs +87 -0
- package/dist/theme/presets.cjs +1205 -0
- package/dist/theme/presets.d.cts +232 -0
- package/dist/theme/presets.d.ts +232 -0
- package/dist/theme/presets.mjs +1175 -0
- package/dist/theme/provider.cjs +122 -0
- package/dist/theme/provider.d.cts +57 -0
- package/dist/theme/provider.d.ts +57 -0
- package/dist/theme/provider.mjs +104 -0
- package/dist/{chunk-AAEWG5VR.mjs → tokens/colors.cjs} +94 -94
- package/dist/{z-index-DmLl6FUD.d.ts → tokens/colors.d.cts} +118 -72
- package/dist/{z-index-DmLl6FUD.d.cts → tokens/colors.d.ts} +118 -72
- package/dist/{chunk-6ZZZBOCH.cjs → tokens/colors.mjs} +47 -121
- package/dist/tokens/index.cjs +96 -0
- package/dist/tokens/index.d.cts +7 -0
- package/dist/tokens/index.d.ts +7 -0
- package/dist/tokens/index.mjs +71 -0
- package/dist/{chunk-XCKK6P46.cjs → tokens/motion.cjs} +46 -18
- package/dist/{motion-D9wQbcKL.d.cts → tokens/motion.d.cts} +1 -1
- package/dist/{motion-D9wQbcKL.d.ts → tokens/motion.d.ts} +1 -1
- package/dist/{chunk-EZ2L3XPS.mjs → tokens/motion.mjs} +16 -10
- package/dist/tokens/radius.cjs +41 -0
- package/dist/tokens/radius.d.cts +18 -0
- package/dist/tokens/radius.d.ts +18 -0
- package/dist/tokens/radius.mjs +17 -0
- package/dist/tokens/shadows.cjs +57 -0
- package/dist/tokens/shadows.d.cts +32 -0
- package/dist/tokens/shadows.d.ts +32 -0
- package/dist/tokens/shadows.mjs +32 -0
- package/dist/tokens/spacing.cjs +51 -0
- package/dist/tokens/spacing.d.cts +26 -0
- package/dist/tokens/spacing.d.ts +26 -0
- package/dist/{chunk-NMPHV6ZD.mjs → tokens/spacing.mjs} +4 -4
- package/dist/{chunk-ECIGDEAH.cjs → tokens/typography.cjs} +43 -16
- package/dist/{typography-DlvVjEdE.d.ts → tokens/typography.d.cts} +1 -1
- package/dist/{typography-DlvVjEdE.d.cts → tokens/typography.d.ts} +1 -1
- package/dist/{chunk-ITBG42M5.mjs → tokens/typography.mjs} +14 -9
- package/dist/tokens/z-index.cjs +47 -0
- package/dist/tokens/z-index.d.cts +24 -0
- package/dist/tokens/z-index.d.ts +24 -0
- package/dist/tokens/z-index.mjs +23 -0
- package/dist/utils/cn.cjs +102 -0
- package/dist/utils/cn.d.cts +84 -0
- package/dist/utils/cn.d.ts +84 -0
- package/dist/{chunk-ZT3PCXDF.mjs → utils/cn.mjs} +14 -7
- package/dist/{chunk-33QEKXRQ.cjs → utils/contrast.cjs} +68 -38
- package/dist/utils/contrast.d.cts +209 -0
- package/dist/utils/contrast.d.ts +209 -0
- package/dist/{chunk-5NZDQWRV.mjs → utils/contrast.mjs} +27 -18
- package/dist/utils/focus-ring.cjs +81 -0
- package/dist/utils/focus-ring.d.cts +80 -0
- package/dist/utils/focus-ring.d.ts +80 -0
- package/dist/utils/focus-ring.mjs +47 -0
- package/dist/utils/index.cjs +107 -0
- package/dist/utils/index.d.cts +6 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.mjs +88 -0
- package/dist/utils/types.cjs +38 -0
- package/dist/utils/types.d.cts +187 -0
- package/dist/utils/types.d.ts +187 -0
- package/dist/utils/types.mjs +13 -0
- package/package.json +191 -191
- package/dist/chunk-2JFREULQ.cjs +0 -29
- package/dist/chunk-3EHT6IOA.cjs +0 -49
- package/dist/chunk-4ON3M3OM.cjs +0 -73
- package/dist/chunk-A2DGHQL2.cjs +0 -21808
- package/dist/chunk-BJ55D5IK.mjs +0 -2433
- package/dist/chunk-F4JJFWWU.cjs +0 -604
- package/dist/chunk-FUWXGHWQ.cjs +0 -468
- package/dist/chunk-MBYCK2JJ.mjs +0 -37
- package/dist/chunk-OHEH57BV.mjs +0 -455
- package/dist/chunk-RUG3BW2B.cjs +0 -2471
- package/dist/chunk-XAIUX2YS.mjs +0 -21477
- package/dist/components.cjs +0 -1247
- package/dist/components.d.cts +0 -7881
- package/dist/components.d.ts +0 -7881
- package/dist/components.mjs +0 -6
- package/dist/motion.cjs +0 -264
- package/dist/motion.mjs +0 -3
- package/dist/primitives.cjs +0 -57
- package/dist/primitives.d.cts +0 -390
- package/dist/primitives.d.ts +0 -390
- package/dist/primitives.mjs +0 -4
- package/dist/theme.cjs +0 -159
- package/dist/theme.d.cts +0 -440
- package/dist/theme.d.ts +0 -440
- package/dist/theme.mjs +0 -6
- package/dist/tokens.cjs +0 -137
- package/dist/tokens.d.cts +0 -30
- package/dist/tokens.d.ts +0 -30
- package/dist/tokens.mjs +0 -4
- package/dist/utils.cjs +0 -164
- package/dist/utils.d.cts +0 -525
- package/dist/utils.d.ts +0 -525
- package/dist/utils.mjs +0 -3
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
"use client";
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
var spinner_exports = {};
|
|
21
|
+
__export(spinner_exports, {
|
|
22
|
+
Spinner: () => Spinner,
|
|
23
|
+
spinnerVariants: () => spinnerVariants
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(spinner_exports);
|
|
26
|
+
var import_jsx_runtime = (
|
|
27
|
+
// Reduced motion fallback — uses CSS animate-spin (a simple
|
|
28
|
+
// rotation that the browser can optimize or skip per OS settings)
|
|
29
|
+
require("react/jsx-runtime")
|
|
30
|
+
);
|
|
31
|
+
var import_cn = require("../utils/cn.cjs");
|
|
32
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
33
|
+
var import_framer_motion = require("framer-motion");
|
|
34
|
+
var import_react = require("react");
|
|
35
|
+
const spinnerVariants = (0, import_class_variance_authority.cva)(
|
|
36
|
+
// Base styles — shared across all variants and sizes
|
|
37
|
+
[
|
|
38
|
+
// Ensure the spinner is inline and doesn't collapse
|
|
39
|
+
"shrink-0"
|
|
40
|
+
],
|
|
41
|
+
{
|
|
42
|
+
variants: {
|
|
43
|
+
// -----------------------------------------------------------------
|
|
44
|
+
// Size Variants
|
|
45
|
+
// -----------------------------------------------------------------
|
|
46
|
+
size: {
|
|
47
|
+
/**
|
|
48
|
+
* Extra Small — for inline indicators, buttons, badges.
|
|
49
|
+
* 14px (size-3.5)
|
|
50
|
+
*/
|
|
51
|
+
xs: "size-3.5",
|
|
52
|
+
/**
|
|
53
|
+
* Small — for compact UIs, table cells, small buttons.
|
|
54
|
+
* 16px (size-4)
|
|
55
|
+
*/
|
|
56
|
+
sm: "size-4",
|
|
57
|
+
/**
|
|
58
|
+
* Medium — default size for most loading states.
|
|
59
|
+
* 20px (size-5)
|
|
60
|
+
*/
|
|
61
|
+
md: "size-5",
|
|
62
|
+
/**
|
|
63
|
+
* Large — for prominent loading indicators, empty states.
|
|
64
|
+
* 24px (size-6)
|
|
65
|
+
*/
|
|
66
|
+
lg: "size-6"
|
|
67
|
+
},
|
|
68
|
+
// -----------------------------------------------------------------
|
|
69
|
+
// Color Variants
|
|
70
|
+
// -----------------------------------------------------------------
|
|
71
|
+
variant: {
|
|
72
|
+
/**
|
|
73
|
+
* Default — uses the current text color.
|
|
74
|
+
* Inherits from the parent element's color.
|
|
75
|
+
*/
|
|
76
|
+
default: "text-current",
|
|
77
|
+
/**
|
|
78
|
+
* Primary — uses the brand/primary color.
|
|
79
|
+
* For prominent loading states on neutral backgrounds.
|
|
80
|
+
*/
|
|
81
|
+
primary: "text-primary",
|
|
82
|
+
/**
|
|
83
|
+
* Secondary — uses the secondary/foreground color.
|
|
84
|
+
* For subtle loading indicators.
|
|
85
|
+
*/
|
|
86
|
+
secondary: "text-foreground",
|
|
87
|
+
/**
|
|
88
|
+
* Muted — uses the muted-foreground color.
|
|
89
|
+
* For very subtle, non-intrusive loading states.
|
|
90
|
+
*/
|
|
91
|
+
muted: "text-muted-foreground"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
defaultVariants: {
|
|
95
|
+
size: "md",
|
|
96
|
+
variant: "default"
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
const labelSizeMap = {
|
|
101
|
+
xs: "text-xs",
|
|
102
|
+
sm: "text-xs",
|
|
103
|
+
md: "text-sm",
|
|
104
|
+
lg: "text-sm"
|
|
105
|
+
};
|
|
106
|
+
const spinTransition = {
|
|
107
|
+
rotate: {
|
|
108
|
+
duration: 0.8,
|
|
109
|
+
ease: "linear",
|
|
110
|
+
repeat: Number.POSITIVE_INFINITY
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const spinAnimate = {
|
|
114
|
+
rotate: 360
|
|
115
|
+
};
|
|
116
|
+
const Spinner = (0, import_react.forwardRef)(
|
|
117
|
+
function Spinner2({
|
|
118
|
+
size = "md",
|
|
119
|
+
variant = "default",
|
|
120
|
+
label,
|
|
121
|
+
labelPosition = "right",
|
|
122
|
+
"aria-label": ariaLabel,
|
|
123
|
+
strokeWidth = 2.5,
|
|
124
|
+
className,
|
|
125
|
+
...rest
|
|
126
|
+
}, ref) {
|
|
127
|
+
const prefersReduced = (0, import_framer_motion.useReducedMotion)();
|
|
128
|
+
const resolvedAriaLabel = ariaLabel ?? (typeof label === "string" ? label : "Loading");
|
|
129
|
+
const MotionSvg = import_framer_motion.motion.svg;
|
|
130
|
+
const spinnerElement = prefersReduced ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
131
|
+
"svg",
|
|
132
|
+
{
|
|
133
|
+
className: (0, import_cn.cn)("animate-spin", spinnerVariants({ size, variant })),
|
|
134
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
135
|
+
fill: "none",
|
|
136
|
+
viewBox: "0 0 24 24",
|
|
137
|
+
"aria-hidden": "true",
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
140
|
+
"circle",
|
|
141
|
+
{
|
|
142
|
+
cx: "12",
|
|
143
|
+
cy: "12",
|
|
144
|
+
r: "10",
|
|
145
|
+
stroke: "currentColor",
|
|
146
|
+
strokeWidth,
|
|
147
|
+
className: "opacity-20"
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
151
|
+
"path",
|
|
152
|
+
{
|
|
153
|
+
d: "M12 2a10 10 0 0 1 10 10",
|
|
154
|
+
stroke: "currentColor",
|
|
155
|
+
strokeWidth,
|
|
156
|
+
strokeLinecap: "round"
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
]
|
|
160
|
+
}
|
|
161
|
+
) : (
|
|
162
|
+
// Full Framer Motion animation
|
|
163
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
164
|
+
MotionSvg,
|
|
165
|
+
{
|
|
166
|
+
className: (0, import_cn.cn)(spinnerVariants({ size, variant })),
|
|
167
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
168
|
+
fill: "none",
|
|
169
|
+
viewBox: "0 0 24 24",
|
|
170
|
+
animate: spinAnimate,
|
|
171
|
+
transition: spinTransition,
|
|
172
|
+
"aria-hidden": "true",
|
|
173
|
+
children: [
|
|
174
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
175
|
+
"circle",
|
|
176
|
+
{
|
|
177
|
+
cx: "12",
|
|
178
|
+
cy: "12",
|
|
179
|
+
r: "10",
|
|
180
|
+
stroke: "currentColor",
|
|
181
|
+
strokeWidth,
|
|
182
|
+
className: "opacity-20"
|
|
183
|
+
}
|
|
184
|
+
),
|
|
185
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
186
|
+
"path",
|
|
187
|
+
{
|
|
188
|
+
d: "M12 2a10 10 0 0 1 10 10",
|
|
189
|
+
stroke: "currentColor",
|
|
190
|
+
strokeWidth,
|
|
191
|
+
strokeLinecap: "round"
|
|
192
|
+
}
|
|
193
|
+
)
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
);
|
|
198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
199
|
+
"div",
|
|
200
|
+
{
|
|
201
|
+
ref,
|
|
202
|
+
role: "status",
|
|
203
|
+
"aria-label": resolvedAriaLabel,
|
|
204
|
+
className: (0, import_cn.cn)(
|
|
205
|
+
"inline-flex items-center",
|
|
206
|
+
labelPosition === "bottom" ? "flex-col gap-2" : "flex-row gap-2",
|
|
207
|
+
className
|
|
208
|
+
),
|
|
209
|
+
"data-ds": "",
|
|
210
|
+
"data-ds-component": "spinner",
|
|
211
|
+
"data-ds-size": size,
|
|
212
|
+
"data-ds-variant": variant,
|
|
213
|
+
...rest,
|
|
214
|
+
children: [
|
|
215
|
+
spinnerElement,
|
|
216
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
217
|
+
"span",
|
|
218
|
+
{
|
|
219
|
+
className: (0, import_cn.cn)(
|
|
220
|
+
"leading-5",
|
|
221
|
+
labelSizeMap[size],
|
|
222
|
+
variant === "muted" ? "text-muted-foreground" : "text-foreground"
|
|
223
|
+
),
|
|
224
|
+
children: label
|
|
225
|
+
}
|
|
226
|
+
),
|
|
227
|
+
!label && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: resolvedAriaLabel })
|
|
228
|
+
]
|
|
229
|
+
}
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
);
|
|
233
|
+
Spinner.displayName = "Spinner";
|
|
234
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
235
|
+
0 && (module.exports = {
|
|
236
|
+
Spinner,
|
|
237
|
+
spinnerVariants
|
|
238
|
+
});
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
declare const spinnerVariants: (props?: ({
|
|
7
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
8
|
+
variant?: "default" | "primary" | "secondary" | "muted" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
|
+
type SpinnerSize = "xs" | "sm" | "md" | "lg";
|
|
11
|
+
type SpinnerVariant = "default" | "primary" | "secondary" | "muted";
|
|
12
|
+
interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children">, VariantProps<typeof spinnerVariants> {
|
|
13
|
+
/**
|
|
14
|
+
* Size of the spinner.
|
|
15
|
+
* @default "md"
|
|
16
|
+
*/
|
|
17
|
+
size?: SpinnerSize;
|
|
18
|
+
/**
|
|
19
|
+
* Color variant of the spinner.
|
|
20
|
+
* @default "default"
|
|
21
|
+
*/
|
|
22
|
+
variant?: SpinnerVariant;
|
|
23
|
+
/**
|
|
24
|
+
* Optional label text displayed alongside the spinner.
|
|
25
|
+
* Provides visible context for the loading state.
|
|
26
|
+
*/
|
|
27
|
+
label?: ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Position of the label relative to the spinner.
|
|
30
|
+
* @default "right"
|
|
31
|
+
*/
|
|
32
|
+
labelPosition?: "right" | "bottom";
|
|
33
|
+
/**
|
|
34
|
+
* Accessible label for screen readers.
|
|
35
|
+
* If `label` is a string, it will be used as the default.
|
|
36
|
+
* @default "Loading"
|
|
37
|
+
*/
|
|
38
|
+
"aria-label"?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Thickness of the spinner stroke.
|
|
41
|
+
* @default "2"
|
|
42
|
+
*/
|
|
43
|
+
strokeWidth?: number;
|
|
44
|
+
/** Additional CSS classes to merge on the root element. */
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Spinner — an animated loading indicator.
|
|
49
|
+
*
|
|
50
|
+
* Built on the design system's token layer with CVA for variant composition.
|
|
51
|
+
* Uses Framer Motion for smooth, GPU-accelerated rotation with automatic
|
|
52
|
+
* reduced-motion support (falls back to CSS `animate-spin`).
|
|
53
|
+
*
|
|
54
|
+
* The spinner renders as a circular arc (3/4 circle) that rotates
|
|
55
|
+
* continuously. A faded track circle provides visual context for the
|
|
56
|
+
* rotation path.
|
|
57
|
+
*
|
|
58
|
+
* Accessibility:
|
|
59
|
+
* - Uses `role="status"` for live region semantics
|
|
60
|
+
* - Includes screen-reader-only text via `aria-label`
|
|
61
|
+
* - SVG elements are decorative (`aria-hidden`)
|
|
62
|
+
* - Respects `prefers-reduced-motion` — uses CSS fallback
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* // Basic usage
|
|
67
|
+
* <Spinner />
|
|
68
|
+
*
|
|
69
|
+
* // Sizes
|
|
70
|
+
* <Spinner size="xs" />
|
|
71
|
+
* <Spinner size="sm" />
|
|
72
|
+
* <Spinner size="md" />
|
|
73
|
+
* <Spinner size="lg" />
|
|
74
|
+
*
|
|
75
|
+
* // Variants
|
|
76
|
+
* <Spinner variant="primary" />
|
|
77
|
+
* <Spinner variant="secondary" />
|
|
78
|
+
* <Spinner variant="muted" />
|
|
79
|
+
*
|
|
80
|
+
* // With label (inline)
|
|
81
|
+
* <Spinner label="Loading…" />
|
|
82
|
+
*
|
|
83
|
+
* // With label (stacked)
|
|
84
|
+
* <Spinner label="Loading data…" labelPosition="bottom" />
|
|
85
|
+
*
|
|
86
|
+
* // Inside a button
|
|
87
|
+
* <Button disabled>
|
|
88
|
+
* <Spinner size="xs" variant="default" />
|
|
89
|
+
* Saving…
|
|
90
|
+
* </Button>
|
|
91
|
+
*
|
|
92
|
+
* // Custom aria-label
|
|
93
|
+
* <Spinner aria-label="Fetching results" />
|
|
94
|
+
*
|
|
95
|
+
* // Custom stroke width
|
|
96
|
+
* <Spinner size="lg" strokeWidth={3} />
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
declare const Spinner: react.ForwardRefExoticComponent<SpinnerProps & react.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
|
|
101
|
+
export { Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, spinnerVariants };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
|
+
import { VariantProps } from 'class-variance-authority';
|
|
5
|
+
|
|
6
|
+
declare const spinnerVariants: (props?: ({
|
|
7
|
+
size?: "xs" | "sm" | "md" | "lg" | null | undefined;
|
|
8
|
+
variant?: "default" | "primary" | "secondary" | "muted" | null | undefined;
|
|
9
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
|
+
type SpinnerSize = "xs" | "sm" | "md" | "lg";
|
|
11
|
+
type SpinnerVariant = "default" | "primary" | "secondary" | "muted";
|
|
12
|
+
interface SpinnerProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "children">, VariantProps<typeof spinnerVariants> {
|
|
13
|
+
/**
|
|
14
|
+
* Size of the spinner.
|
|
15
|
+
* @default "md"
|
|
16
|
+
*/
|
|
17
|
+
size?: SpinnerSize;
|
|
18
|
+
/**
|
|
19
|
+
* Color variant of the spinner.
|
|
20
|
+
* @default "default"
|
|
21
|
+
*/
|
|
22
|
+
variant?: SpinnerVariant;
|
|
23
|
+
/**
|
|
24
|
+
* Optional label text displayed alongside the spinner.
|
|
25
|
+
* Provides visible context for the loading state.
|
|
26
|
+
*/
|
|
27
|
+
label?: ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Position of the label relative to the spinner.
|
|
30
|
+
* @default "right"
|
|
31
|
+
*/
|
|
32
|
+
labelPosition?: "right" | "bottom";
|
|
33
|
+
/**
|
|
34
|
+
* Accessible label for screen readers.
|
|
35
|
+
* If `label` is a string, it will be used as the default.
|
|
36
|
+
* @default "Loading"
|
|
37
|
+
*/
|
|
38
|
+
"aria-label"?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Thickness of the spinner stroke.
|
|
41
|
+
* @default "2"
|
|
42
|
+
*/
|
|
43
|
+
strokeWidth?: number;
|
|
44
|
+
/** Additional CSS classes to merge on the root element. */
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Spinner — an animated loading indicator.
|
|
49
|
+
*
|
|
50
|
+
* Built on the design system's token layer with CVA for variant composition.
|
|
51
|
+
* Uses Framer Motion for smooth, GPU-accelerated rotation with automatic
|
|
52
|
+
* reduced-motion support (falls back to CSS `animate-spin`).
|
|
53
|
+
*
|
|
54
|
+
* The spinner renders as a circular arc (3/4 circle) that rotates
|
|
55
|
+
* continuously. A faded track circle provides visual context for the
|
|
56
|
+
* rotation path.
|
|
57
|
+
*
|
|
58
|
+
* Accessibility:
|
|
59
|
+
* - Uses `role="status"` for live region semantics
|
|
60
|
+
* - Includes screen-reader-only text via `aria-label`
|
|
61
|
+
* - SVG elements are decorative (`aria-hidden`)
|
|
62
|
+
* - Respects `prefers-reduced-motion` — uses CSS fallback
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```tsx
|
|
66
|
+
* // Basic usage
|
|
67
|
+
* <Spinner />
|
|
68
|
+
*
|
|
69
|
+
* // Sizes
|
|
70
|
+
* <Spinner size="xs" />
|
|
71
|
+
* <Spinner size="sm" />
|
|
72
|
+
* <Spinner size="md" />
|
|
73
|
+
* <Spinner size="lg" />
|
|
74
|
+
*
|
|
75
|
+
* // Variants
|
|
76
|
+
* <Spinner variant="primary" />
|
|
77
|
+
* <Spinner variant="secondary" />
|
|
78
|
+
* <Spinner variant="muted" />
|
|
79
|
+
*
|
|
80
|
+
* // With label (inline)
|
|
81
|
+
* <Spinner label="Loading…" />
|
|
82
|
+
*
|
|
83
|
+
* // With label (stacked)
|
|
84
|
+
* <Spinner label="Loading data…" labelPosition="bottom" />
|
|
85
|
+
*
|
|
86
|
+
* // Inside a button
|
|
87
|
+
* <Button disabled>
|
|
88
|
+
* <Spinner size="xs" variant="default" />
|
|
89
|
+
* Saving…
|
|
90
|
+
* </Button>
|
|
91
|
+
*
|
|
92
|
+
* // Custom aria-label
|
|
93
|
+
* <Spinner aria-label="Fetching results" />
|
|
94
|
+
*
|
|
95
|
+
* // Custom stroke width
|
|
96
|
+
* <Spinner size="lg" strokeWidth={3} />
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
declare const Spinner: react.ForwardRefExoticComponent<SpinnerProps & react.RefAttributes<HTMLDivElement>>;
|
|
100
|
+
|
|
101
|
+
export { Spinner, type SpinnerProps, type SpinnerSize, type SpinnerVariant, spinnerVariants };
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../utils/cn.mjs";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import { motion, useReducedMotion } from "framer-motion";
|
|
6
|
+
import { forwardRef } from "react";
|
|
7
|
+
const spinnerVariants = cva(
|
|
8
|
+
// Base styles — shared across all variants and sizes
|
|
9
|
+
[
|
|
10
|
+
// Ensure the spinner is inline and doesn't collapse
|
|
11
|
+
"shrink-0"
|
|
12
|
+
],
|
|
13
|
+
{
|
|
14
|
+
variants: {
|
|
15
|
+
// -----------------------------------------------------------------
|
|
16
|
+
// Size Variants
|
|
17
|
+
// -----------------------------------------------------------------
|
|
18
|
+
size: {
|
|
19
|
+
/**
|
|
20
|
+
* Extra Small — for inline indicators, buttons, badges.
|
|
21
|
+
* 14px (size-3.5)
|
|
22
|
+
*/
|
|
23
|
+
xs: "size-3.5",
|
|
24
|
+
/**
|
|
25
|
+
* Small — for compact UIs, table cells, small buttons.
|
|
26
|
+
* 16px (size-4)
|
|
27
|
+
*/
|
|
28
|
+
sm: "size-4",
|
|
29
|
+
/**
|
|
30
|
+
* Medium — default size for most loading states.
|
|
31
|
+
* 20px (size-5)
|
|
32
|
+
*/
|
|
33
|
+
md: "size-5",
|
|
34
|
+
/**
|
|
35
|
+
* Large — for prominent loading indicators, empty states.
|
|
36
|
+
* 24px (size-6)
|
|
37
|
+
*/
|
|
38
|
+
lg: "size-6"
|
|
39
|
+
},
|
|
40
|
+
// -----------------------------------------------------------------
|
|
41
|
+
// Color Variants
|
|
42
|
+
// -----------------------------------------------------------------
|
|
43
|
+
variant: {
|
|
44
|
+
/**
|
|
45
|
+
* Default — uses the current text color.
|
|
46
|
+
* Inherits from the parent element's color.
|
|
47
|
+
*/
|
|
48
|
+
default: "text-current",
|
|
49
|
+
/**
|
|
50
|
+
* Primary — uses the brand/primary color.
|
|
51
|
+
* For prominent loading states on neutral backgrounds.
|
|
52
|
+
*/
|
|
53
|
+
primary: "text-primary",
|
|
54
|
+
/**
|
|
55
|
+
* Secondary — uses the secondary/foreground color.
|
|
56
|
+
* For subtle loading indicators.
|
|
57
|
+
*/
|
|
58
|
+
secondary: "text-foreground",
|
|
59
|
+
/**
|
|
60
|
+
* Muted — uses the muted-foreground color.
|
|
61
|
+
* For very subtle, non-intrusive loading states.
|
|
62
|
+
*/
|
|
63
|
+
muted: "text-muted-foreground"
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
defaultVariants: {
|
|
67
|
+
size: "md",
|
|
68
|
+
variant: "default"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
const labelSizeMap = {
|
|
73
|
+
xs: "text-xs",
|
|
74
|
+
sm: "text-xs",
|
|
75
|
+
md: "text-sm",
|
|
76
|
+
lg: "text-sm"
|
|
77
|
+
};
|
|
78
|
+
const spinTransition = {
|
|
79
|
+
rotate: {
|
|
80
|
+
duration: 0.8,
|
|
81
|
+
ease: "linear",
|
|
82
|
+
repeat: Number.POSITIVE_INFINITY
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const spinAnimate = {
|
|
86
|
+
rotate: 360
|
|
87
|
+
};
|
|
88
|
+
const Spinner = forwardRef(
|
|
89
|
+
function Spinner2({
|
|
90
|
+
size = "md",
|
|
91
|
+
variant = "default",
|
|
92
|
+
label,
|
|
93
|
+
labelPosition = "right",
|
|
94
|
+
"aria-label": ariaLabel,
|
|
95
|
+
strokeWidth = 2.5,
|
|
96
|
+
className,
|
|
97
|
+
...rest
|
|
98
|
+
}, ref) {
|
|
99
|
+
const prefersReduced = useReducedMotion();
|
|
100
|
+
const resolvedAriaLabel = ariaLabel ?? (typeof label === "string" ? label : "Loading");
|
|
101
|
+
const MotionSvg = motion.svg;
|
|
102
|
+
const spinnerElement = prefersReduced ? (
|
|
103
|
+
// Reduced motion fallback — uses CSS animate-spin (a simple
|
|
104
|
+
// rotation that the browser can optimize or skip per OS settings)
|
|
105
|
+
/* @__PURE__ */ jsxs(
|
|
106
|
+
"svg",
|
|
107
|
+
{
|
|
108
|
+
className: cn("animate-spin", spinnerVariants({ size, variant })),
|
|
109
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
110
|
+
fill: "none",
|
|
111
|
+
viewBox: "0 0 24 24",
|
|
112
|
+
"aria-hidden": "true",
|
|
113
|
+
children: [
|
|
114
|
+
/* @__PURE__ */ jsx(
|
|
115
|
+
"circle",
|
|
116
|
+
{
|
|
117
|
+
cx: "12",
|
|
118
|
+
cy: "12",
|
|
119
|
+
r: "10",
|
|
120
|
+
stroke: "currentColor",
|
|
121
|
+
strokeWidth,
|
|
122
|
+
className: "opacity-20"
|
|
123
|
+
}
|
|
124
|
+
),
|
|
125
|
+
/* @__PURE__ */ jsx(
|
|
126
|
+
"path",
|
|
127
|
+
{
|
|
128
|
+
d: "M12 2a10 10 0 0 1 10 10",
|
|
129
|
+
stroke: "currentColor",
|
|
130
|
+
strokeWidth,
|
|
131
|
+
strokeLinecap: "round"
|
|
132
|
+
}
|
|
133
|
+
)
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
)
|
|
137
|
+
) : (
|
|
138
|
+
// Full Framer Motion animation
|
|
139
|
+
/* @__PURE__ */ jsxs(
|
|
140
|
+
MotionSvg,
|
|
141
|
+
{
|
|
142
|
+
className: cn(spinnerVariants({ size, variant })),
|
|
143
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
144
|
+
fill: "none",
|
|
145
|
+
viewBox: "0 0 24 24",
|
|
146
|
+
animate: spinAnimate,
|
|
147
|
+
transition: spinTransition,
|
|
148
|
+
"aria-hidden": "true",
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ jsx(
|
|
151
|
+
"circle",
|
|
152
|
+
{
|
|
153
|
+
cx: "12",
|
|
154
|
+
cy: "12",
|
|
155
|
+
r: "10",
|
|
156
|
+
stroke: "currentColor",
|
|
157
|
+
strokeWidth,
|
|
158
|
+
className: "opacity-20"
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
/* @__PURE__ */ jsx(
|
|
162
|
+
"path",
|
|
163
|
+
{
|
|
164
|
+
d: "M12 2a10 10 0 0 1 10 10",
|
|
165
|
+
stroke: "currentColor",
|
|
166
|
+
strokeWidth,
|
|
167
|
+
strokeLinecap: "round"
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
)
|
|
173
|
+
);
|
|
174
|
+
return /* @__PURE__ */ jsxs(
|
|
175
|
+
"div",
|
|
176
|
+
{
|
|
177
|
+
ref,
|
|
178
|
+
role: "status",
|
|
179
|
+
"aria-label": resolvedAriaLabel,
|
|
180
|
+
className: cn(
|
|
181
|
+
"inline-flex items-center",
|
|
182
|
+
labelPosition === "bottom" ? "flex-col gap-2" : "flex-row gap-2",
|
|
183
|
+
className
|
|
184
|
+
),
|
|
185
|
+
"data-ds": "",
|
|
186
|
+
"data-ds-component": "spinner",
|
|
187
|
+
"data-ds-size": size,
|
|
188
|
+
"data-ds-variant": variant,
|
|
189
|
+
...rest,
|
|
190
|
+
children: [
|
|
191
|
+
spinnerElement,
|
|
192
|
+
label && /* @__PURE__ */ jsx(
|
|
193
|
+
"span",
|
|
194
|
+
{
|
|
195
|
+
className: cn(
|
|
196
|
+
"leading-5",
|
|
197
|
+
labelSizeMap[size],
|
|
198
|
+
variant === "muted" ? "text-muted-foreground" : "text-foreground"
|
|
199
|
+
),
|
|
200
|
+
children: label
|
|
201
|
+
}
|
|
202
|
+
),
|
|
203
|
+
!label && /* @__PURE__ */ jsx("span", { className: "sr-only", children: resolvedAriaLabel })
|
|
204
|
+
]
|
|
205
|
+
}
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
);
|
|
209
|
+
Spinner.displayName = "Spinner";
|
|
210
|
+
export {
|
|
211
|
+
Spinner,
|
|
212
|
+
spinnerVariants
|
|
213
|
+
};
|