@work-rjkashyap/unified-ui 0.3.3 → 0.3.5
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 -1933
- 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-IVZAB7BV.mjs → tokens/colors.cjs} +212 -86
- package/dist/{z-index-Dd8IllRx.d.cts → tokens/colors.d.cts} +235 -72
- package/dist/{z-index-Dd8IllRx.d.ts → tokens/colors.d.ts} +235 -72
- package/dist/{chunk-ZBGR7MUW.cjs → tokens/colors.mjs} +165 -104
- 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-5TP7J7T4.cjs +0 -1766
- package/dist/chunk-A2DGHQL2.cjs +0 -21808
- package/dist/chunk-EQWESXRH.mjs +0 -1735
- 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-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 -131
- package/dist/theme.d.cts +0 -414
- package/dist/theme.d.ts +0 -414
- 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,159 @@
|
|
|
1
|
+
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
4
|
+
interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Custom separator to render between items.
|
|
7
|
+
* Defaults to a chevron-right icon.
|
|
8
|
+
*/
|
|
9
|
+
separator?: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Accessible label for the breadcrumb navigation landmark.
|
|
12
|
+
* @default "Breadcrumb"
|
|
13
|
+
*/
|
|
14
|
+
"aria-label"?: string;
|
|
15
|
+
/** Additional CSS classes. */
|
|
16
|
+
className?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Breadcrumb — the root `<nav>` container for breadcrumb navigation.
|
|
20
|
+
*
|
|
21
|
+
* Wraps children in a semantic navigation landmark. Use with
|
|
22
|
+
* `BreadcrumbList`, `BreadcrumbItem`, `BreadcrumbLink`, etc.
|
|
23
|
+
*/
|
|
24
|
+
declare const Breadcrumb: react.ForwardRefExoticComponent<BreadcrumbProps & react.RefAttributes<HTMLElement>>;
|
|
25
|
+
interface BreadcrumbListProps extends React.HTMLAttributes<HTMLOListElement> {
|
|
26
|
+
/** Additional CSS classes. */
|
|
27
|
+
className?: string;
|
|
28
|
+
/** List children. */
|
|
29
|
+
children?: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* BreadcrumbList — an ordered list containing breadcrumb items.
|
|
33
|
+
*/
|
|
34
|
+
declare const BreadcrumbList: react.ForwardRefExoticComponent<BreadcrumbListProps & react.RefAttributes<HTMLOListElement>>;
|
|
35
|
+
interface BreadcrumbItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
|
|
36
|
+
/** Additional CSS classes. */
|
|
37
|
+
className?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* BreadcrumbItem — a single item in the breadcrumb trail.
|
|
41
|
+
*/
|
|
42
|
+
declare const BreadcrumbItem: react.ForwardRefExoticComponent<BreadcrumbItemProps & react.RefAttributes<HTMLLIElement>>;
|
|
43
|
+
interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
44
|
+
/** Additional CSS classes. */
|
|
45
|
+
className?: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* BreadcrumbLink — a navigable link within a breadcrumb item.
|
|
49
|
+
*
|
|
50
|
+
* Renders as an `<a>` element. For framework-specific link components
|
|
51
|
+
* (e.g. Next.js `Link`), wrap the framework component or pass it via
|
|
52
|
+
* composition:
|
|
53
|
+
*
|
|
54
|
+
* ```tsx
|
|
55
|
+
* <BreadcrumbItem>
|
|
56
|
+
* <Link href="/docs" className="...breadcrumb link styles...">Docs</Link>
|
|
57
|
+
* </BreadcrumbItem>
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
declare const BreadcrumbLink: react.ForwardRefExoticComponent<BreadcrumbLinkProps & react.RefAttributes<HTMLAnchorElement>>;
|
|
61
|
+
interface BreadcrumbPageProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
62
|
+
/** Additional CSS classes. */
|
|
63
|
+
className?: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* BreadcrumbPage — the current (non-linked) page in the breadcrumb trail.
|
|
67
|
+
*
|
|
68
|
+
* Rendered with `aria-current="page"` and a distinct foreground color
|
|
69
|
+
* to indicate the user's current location.
|
|
70
|
+
*/
|
|
71
|
+
declare const BreadcrumbPage: react.ForwardRefExoticComponent<BreadcrumbPageProps & react.RefAttributes<HTMLSpanElement>>;
|
|
72
|
+
interface BreadcrumbSeparatorProps extends React.LiHTMLAttributes<HTMLLIElement> {
|
|
73
|
+
/** Custom separator content. Defaults to a chevron-right icon. */
|
|
74
|
+
children?: ReactNode;
|
|
75
|
+
/** Additional CSS classes. */
|
|
76
|
+
className?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* BreadcrumbSeparator — visual divider between breadcrumb items.
|
|
80
|
+
*
|
|
81
|
+
* Defaults to a chevron-right icon. Pass custom children (string or
|
|
82
|
+
* ReactNode) to use a different separator.
|
|
83
|
+
*/
|
|
84
|
+
declare const BreadcrumbSeparator: react.ForwardRefExoticComponent<BreadcrumbSeparatorProps & react.RefAttributes<HTMLLIElement>>;
|
|
85
|
+
interface BreadcrumbEllipsisProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
86
|
+
/** Additional CSS classes. */
|
|
87
|
+
className?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* BreadcrumbEllipsis — a "…" placeholder indicating truncated items.
|
|
91
|
+
*
|
|
92
|
+
* Used by `BreadcrumbNav` when items exceed `maxItems`. Can also be
|
|
93
|
+
* used manually in the composable API.
|
|
94
|
+
*/
|
|
95
|
+
declare const BreadcrumbEllipsis: react.ForwardRefExoticComponent<BreadcrumbEllipsisProps & react.RefAttributes<HTMLSpanElement>>;
|
|
96
|
+
interface BreadcrumbNavItem {
|
|
97
|
+
/** Display label for the breadcrumb segment. */
|
|
98
|
+
label: ReactNode;
|
|
99
|
+
/**
|
|
100
|
+
* URL to navigate to. When omitted, the item is rendered as the
|
|
101
|
+
* current page (non-linked, last item).
|
|
102
|
+
*/
|
|
103
|
+
href?: string;
|
|
104
|
+
}
|
|
105
|
+
interface BreadcrumbNavProps extends Omit<BreadcrumbProps, "children"> {
|
|
106
|
+
/** Breadcrumb items in order from root to current page. */
|
|
107
|
+
items: BreadcrumbNavItem[];
|
|
108
|
+
/**
|
|
109
|
+
* Maximum number of items to show before collapsing middle items
|
|
110
|
+
* into an ellipsis. Set to 0 or Infinity to disable truncation.
|
|
111
|
+
*
|
|
112
|
+
* When truncating, the first item and the last `maxItems - 2` items
|
|
113
|
+
* are always visible, with an ellipsis in between.
|
|
114
|
+
*
|
|
115
|
+
* @default Infinity (no truncation)
|
|
116
|
+
*/
|
|
117
|
+
maxItems?: number;
|
|
118
|
+
/**
|
|
119
|
+
* Custom separator to use between items.
|
|
120
|
+
* @default <ChevronRightIcon /> (via BreadcrumbSeparator)
|
|
121
|
+
*/
|
|
122
|
+
separator?: ReactNode;
|
|
123
|
+
/** Additional CSS classes on the root nav. */
|
|
124
|
+
className?: string;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* BreadcrumbNav — a composed breadcrumb component that renders a full
|
|
128
|
+
* breadcrumb trail from an array of items.
|
|
129
|
+
*
|
|
130
|
+
* Handles separator insertion, truncation with ellipsis, and
|
|
131
|
+
* current-page detection automatically.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```tsx
|
|
135
|
+
* <BreadcrumbNav
|
|
136
|
+
* items={[
|
|
137
|
+
* { label: "Home", href: "/" },
|
|
138
|
+
* { label: "Products", href: "/products" },
|
|
139
|
+
* { label: "Electronics", href: "/products/electronics" },
|
|
140
|
+
* { label: "Laptops", href: "/products/electronics/laptops" },
|
|
141
|
+
* { label: "MacBook Pro" },
|
|
142
|
+
* ]}
|
|
143
|
+
* maxItems={4}
|
|
144
|
+
* />
|
|
145
|
+
* // Renders: Home > … > Laptops > MacBook Pro
|
|
146
|
+
*
|
|
147
|
+
* <BreadcrumbNav
|
|
148
|
+
* items={[
|
|
149
|
+
* { label: "Home", href: "/" },
|
|
150
|
+
* { label: "Docs", href: "/docs" },
|
|
151
|
+
* { label: "Getting Started" },
|
|
152
|
+
* ]}
|
|
153
|
+
* />
|
|
154
|
+
* // Renders: Home > Docs > Getting Started
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
declare const BreadcrumbNav: react.ForwardRefExoticComponent<BreadcrumbNavProps & react.RefAttributes<HTMLElement>>;
|
|
158
|
+
|
|
159
|
+
export { Breadcrumb, BreadcrumbEllipsis, type BreadcrumbEllipsisProps, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbLink, type BreadcrumbLinkProps, BreadcrumbList, type BreadcrumbListProps, BreadcrumbNav, type BreadcrumbNavItem, type BreadcrumbNavProps, BreadcrumbPage, type BreadcrumbPageProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps };
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { cn } from "../utils/cn";
|
|
4
|
+
import { focusRingCompactClasses } from "../utils/focus-ring";
|
|
5
|
+
import { forwardRef, useMemo } from "react";
|
|
6
|
+
function ChevronRightIcon({ className }) {
|
|
7
|
+
return /* @__PURE__ */ jsx(
|
|
8
|
+
"svg",
|
|
9
|
+
{
|
|
10
|
+
className,
|
|
11
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
12
|
+
viewBox: "0 0 24 24",
|
|
13
|
+
fill: "none",
|
|
14
|
+
stroke: "currentColor",
|
|
15
|
+
strokeWidth: "2",
|
|
16
|
+
strokeLinecap: "round",
|
|
17
|
+
strokeLinejoin: "round",
|
|
18
|
+
"aria-hidden": "true",
|
|
19
|
+
children: /* @__PURE__ */ jsx("path", { d: "m9 18 6-6-6-6" })
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
function MoreHorizontalIcon({ className }) {
|
|
24
|
+
return /* @__PURE__ */ jsxs(
|
|
25
|
+
"svg",
|
|
26
|
+
{
|
|
27
|
+
className,
|
|
28
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
29
|
+
viewBox: "0 0 24 24",
|
|
30
|
+
fill: "none",
|
|
31
|
+
stroke: "currentColor",
|
|
32
|
+
strokeWidth: "2",
|
|
33
|
+
strokeLinecap: "round",
|
|
34
|
+
strokeLinejoin: "round",
|
|
35
|
+
"aria-hidden": "true",
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ jsx("circle", { cx: "12", cy: "12", r: "1" }),
|
|
38
|
+
/* @__PURE__ */ jsx("circle", { cx: "19", cy: "12", r: "1" }),
|
|
39
|
+
/* @__PURE__ */ jsx("circle", { cx: "5", cy: "12", r: "1" })
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
const Breadcrumb = forwardRef(
|
|
45
|
+
function Breadcrumb2({ "aria-label": ariaLabel = "Breadcrumb", className, children, ...rest }, ref) {
|
|
46
|
+
return /* @__PURE__ */ jsx(
|
|
47
|
+
"nav",
|
|
48
|
+
{
|
|
49
|
+
ref,
|
|
50
|
+
"aria-label": ariaLabel,
|
|
51
|
+
className: cn("not-prose", className),
|
|
52
|
+
"data-ds": "",
|
|
53
|
+
"data-ds-component": "breadcrumb",
|
|
54
|
+
...rest,
|
|
55
|
+
children
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
Breadcrumb.displayName = "Breadcrumb";
|
|
61
|
+
const BreadcrumbList = forwardRef(
|
|
62
|
+
function BreadcrumbList2({ className, children, ...rest }, ref) {
|
|
63
|
+
return /* @__PURE__ */ jsx(
|
|
64
|
+
"ol",
|
|
65
|
+
{
|
|
66
|
+
ref,
|
|
67
|
+
className: cn(
|
|
68
|
+
"flex flex-wrap items-center gap-1.5",
|
|
69
|
+
"text-xs leading-4 tracking-wide",
|
|
70
|
+
"text-muted-foreground",
|
|
71
|
+
className
|
|
72
|
+
),
|
|
73
|
+
"data-ds": "",
|
|
74
|
+
"data-ds-component": "breadcrumb-list",
|
|
75
|
+
...rest,
|
|
76
|
+
children
|
|
77
|
+
}
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
BreadcrumbList.displayName = "BreadcrumbList";
|
|
82
|
+
const BreadcrumbItem = forwardRef(
|
|
83
|
+
function BreadcrumbItem2({ className, children, ...rest }, ref) {
|
|
84
|
+
return /* @__PURE__ */ jsx(
|
|
85
|
+
"li",
|
|
86
|
+
{
|
|
87
|
+
ref,
|
|
88
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
89
|
+
"data-ds": "",
|
|
90
|
+
"data-ds-component": "breadcrumb-item",
|
|
91
|
+
...rest,
|
|
92
|
+
children
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
);
|
|
97
|
+
BreadcrumbItem.displayName = "BreadcrumbItem";
|
|
98
|
+
const BreadcrumbLink = forwardRef(function BreadcrumbLink2({ className, children, ...rest }, ref) {
|
|
99
|
+
return /* @__PURE__ */ jsx(
|
|
100
|
+
"a",
|
|
101
|
+
{
|
|
102
|
+
ref,
|
|
103
|
+
className: cn(
|
|
104
|
+
"no-underline",
|
|
105
|
+
"text-muted-foreground",
|
|
106
|
+
"transition-colors duration-fast",
|
|
107
|
+
"hover:text-foreground",
|
|
108
|
+
focusRingCompactClasses,
|
|
109
|
+
"rounded-sm",
|
|
110
|
+
className
|
|
111
|
+
),
|
|
112
|
+
"data-ds": "",
|
|
113
|
+
"data-ds-component": "breadcrumb-link",
|
|
114
|
+
...rest,
|
|
115
|
+
children
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
});
|
|
119
|
+
BreadcrumbLink.displayName = "BreadcrumbLink";
|
|
120
|
+
const BreadcrumbPage = forwardRef(
|
|
121
|
+
function BreadcrumbPage2({ className, children, ...rest }, ref) {
|
|
122
|
+
return /* @__PURE__ */ jsx(
|
|
123
|
+
"span",
|
|
124
|
+
{
|
|
125
|
+
ref,
|
|
126
|
+
"aria-current": "page",
|
|
127
|
+
className: cn("font-medium", "text-foreground", className),
|
|
128
|
+
"data-ds": "",
|
|
129
|
+
"data-ds-component": "breadcrumb-page",
|
|
130
|
+
...rest,
|
|
131
|
+
children
|
|
132
|
+
}
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
);
|
|
136
|
+
BreadcrumbPage.displayName = "BreadcrumbPage";
|
|
137
|
+
const BreadcrumbSeparator = forwardRef(function BreadcrumbSeparator2({ className, children, ...rest }, ref) {
|
|
138
|
+
return /* @__PURE__ */ jsx(
|
|
139
|
+
"li",
|
|
140
|
+
{
|
|
141
|
+
ref,
|
|
142
|
+
role: "presentation",
|
|
143
|
+
"aria-hidden": "true",
|
|
144
|
+
className: cn(
|
|
145
|
+
"inline-flex items-center",
|
|
146
|
+
"text-muted-foreground/60",
|
|
147
|
+
"[&>svg]:size-3",
|
|
148
|
+
className
|
|
149
|
+
),
|
|
150
|
+
"data-ds": "",
|
|
151
|
+
"data-ds-component": "breadcrumb-separator",
|
|
152
|
+
...rest,
|
|
153
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, {})
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
});
|
|
157
|
+
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
|
158
|
+
const BreadcrumbEllipsis = forwardRef(function BreadcrumbEllipsis2({ className, ...rest }, ref) {
|
|
159
|
+
return /* @__PURE__ */ jsxs(
|
|
160
|
+
"span",
|
|
161
|
+
{
|
|
162
|
+
ref,
|
|
163
|
+
role: "presentation",
|
|
164
|
+
"aria-hidden": "true",
|
|
165
|
+
className: cn(
|
|
166
|
+
"inline-flex items-center justify-center size-5",
|
|
167
|
+
"text-muted-foreground",
|
|
168
|
+
className
|
|
169
|
+
),
|
|
170
|
+
"data-ds": "",
|
|
171
|
+
"data-ds-component": "breadcrumb-ellipsis",
|
|
172
|
+
...rest,
|
|
173
|
+
children: [
|
|
174
|
+
/* @__PURE__ */ jsx(MoreHorizontalIcon, { className: "size-4" }),
|
|
175
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "More pages" })
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
});
|
|
180
|
+
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
|
|
181
|
+
const BreadcrumbNav = forwardRef(
|
|
182
|
+
function BreadcrumbNav2({
|
|
183
|
+
items,
|
|
184
|
+
maxItems = Number.POSITIVE_INFINITY,
|
|
185
|
+
separator,
|
|
186
|
+
className,
|
|
187
|
+
...rest
|
|
188
|
+
}, ref) {
|
|
189
|
+
const visibleItems = useMemo(() => {
|
|
190
|
+
if (items.length <= maxItems || maxItems < 2 || !Number.isFinite(maxItems)) {
|
|
191
|
+
return { items, truncated: false };
|
|
192
|
+
}
|
|
193
|
+
const tailCount = maxItems - 2;
|
|
194
|
+
const first = items[0];
|
|
195
|
+
const tail = items.slice(items.length - Math.max(tailCount, 1));
|
|
196
|
+
return {
|
|
197
|
+
items: [first, ...tail],
|
|
198
|
+
truncated: true
|
|
199
|
+
};
|
|
200
|
+
}, [items, maxItems]);
|
|
201
|
+
return /* @__PURE__ */ jsx(Breadcrumb, { ref, className, ...rest, children: /* @__PURE__ */ jsx(BreadcrumbList, { children: visibleItems.items.flatMap((item, index) => {
|
|
202
|
+
const itemKey = item.href ?? `page-${index}`;
|
|
203
|
+
const isLast = index === visibleItems.items.length - 1;
|
|
204
|
+
const isFirst = index === 0;
|
|
205
|
+
const showEllipsis = visibleItems.truncated && isFirst;
|
|
206
|
+
const elements = [];
|
|
207
|
+
elements.push(
|
|
208
|
+
/* @__PURE__ */ jsx(BreadcrumbItem, { children: isLast && !item.href ? /* @__PURE__ */ jsx(BreadcrumbPage, { children: item.label }) : /* @__PURE__ */ jsx(BreadcrumbLink, { href: item.href, children: item.label }) }, `item-${itemKey}`)
|
|
209
|
+
);
|
|
210
|
+
if (showEllipsis) {
|
|
211
|
+
elements.push(
|
|
212
|
+
/* @__PURE__ */ jsx(BreadcrumbSeparator, { children: separator }, "sep-ellipsis-before"),
|
|
213
|
+
/* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbEllipsis, {}) }, "ellipsis")
|
|
214
|
+
);
|
|
215
|
+
}
|
|
216
|
+
if (!isLast) {
|
|
217
|
+
elements.push(
|
|
218
|
+
/* @__PURE__ */ jsx(BreadcrumbSeparator, { children: separator }, `sep-${itemKey}`)
|
|
219
|
+
);
|
|
220
|
+
}
|
|
221
|
+
return elements;
|
|
222
|
+
}) }) });
|
|
223
|
+
}
|
|
224
|
+
);
|
|
225
|
+
BreadcrumbNav.displayName = "BreadcrumbNav";
|
|
226
|
+
export {
|
|
227
|
+
Breadcrumb,
|
|
228
|
+
BreadcrumbEllipsis,
|
|
229
|
+
BreadcrumbItem,
|
|
230
|
+
BreadcrumbLink,
|
|
231
|
+
BreadcrumbList,
|
|
232
|
+
BreadcrumbNav,
|
|
233
|
+
BreadcrumbPage,
|
|
234
|
+
BreadcrumbSeparator
|
|
235
|
+
};
|
|
@@ -0,0 +1,254 @@
|
|
|
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 button_exports = {};
|
|
21
|
+
__export(button_exports, {
|
|
22
|
+
Button: () => Button,
|
|
23
|
+
buttonVariants: () => buttonVariants
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(button_exports);
|
|
26
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
27
|
+
var import_cn = require("../utils/cn");
|
|
28
|
+
var import_focus_ring = require("../utils/focus-ring");
|
|
29
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
30
|
+
var import_react = require("react");
|
|
31
|
+
const buttonVariants = (0, import_class_variance_authority.cva)(
|
|
32
|
+
// Base styles — shared across all variants and sizes
|
|
33
|
+
[
|
|
34
|
+
// Opt out of prose typography overrides (prevents underline on <a> buttons)
|
|
35
|
+
"not-prose no-underline",
|
|
36
|
+
// Layout
|
|
37
|
+
"inline-flex items-center justify-center gap-2",
|
|
38
|
+
// Typography
|
|
39
|
+
"text-sm font-medium leading-5",
|
|
40
|
+
// Shape
|
|
41
|
+
"rounded-md",
|
|
42
|
+
// Transition (uses design system motion tokens)
|
|
43
|
+
"transition-[color,background-color,border-color,box-shadow,opacity,transform]",
|
|
44
|
+
"duration-fast ease-standard",
|
|
45
|
+
// Focus ring — WCAG AA compliant, visible on keyboard navigation only
|
|
46
|
+
import_focus_ring.focusRingClasses,
|
|
47
|
+
// Disabled — consistent across all variants
|
|
48
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
49
|
+
// Cursor
|
|
50
|
+
"cursor-pointer disabled:cursor-not-allowed",
|
|
51
|
+
// Prevent text selection on rapid clicks
|
|
52
|
+
"select-none",
|
|
53
|
+
// Smooth press feedback
|
|
54
|
+
"active:scale-[0.98] disabled:active:scale-100"
|
|
55
|
+
],
|
|
56
|
+
{
|
|
57
|
+
variants: {
|
|
58
|
+
// -----------------------------------------------------------------
|
|
59
|
+
// Visual Variants
|
|
60
|
+
// -----------------------------------------------------------------
|
|
61
|
+
variant: {
|
|
62
|
+
/**
|
|
63
|
+
* Primary — the main call-to-action. Uses brand color.
|
|
64
|
+
* High visual prominence. Use sparingly (1–2 per view).
|
|
65
|
+
*/
|
|
66
|
+
primary: [
|
|
67
|
+
"bg-primary text-primary-foreground",
|
|
68
|
+
"hover:bg-primary-hover",
|
|
69
|
+
"active:bg-primary-active"
|
|
70
|
+
],
|
|
71
|
+
/**
|
|
72
|
+
* Secondary — for secondary actions. Uses muted surface color.
|
|
73
|
+
* Medium visual prominence. Pairs with primary buttons.
|
|
74
|
+
*/
|
|
75
|
+
secondary: [
|
|
76
|
+
"bg-secondary text-secondary-foreground",
|
|
77
|
+
"border border-border",
|
|
78
|
+
"hover:bg-secondary-hover",
|
|
79
|
+
"active:bg-secondary-active"
|
|
80
|
+
],
|
|
81
|
+
/**
|
|
82
|
+
* Ghost — minimal visual weight. No background until hover.
|
|
83
|
+
* Low visual prominence. Use for tertiary actions, toolbars, nav.
|
|
84
|
+
*/
|
|
85
|
+
ghost: [
|
|
86
|
+
"bg-transparent text-foreground",
|
|
87
|
+
"hover:bg-muted hover:text-foreground",
|
|
88
|
+
"active:bg-secondary-active"
|
|
89
|
+
],
|
|
90
|
+
/**
|
|
91
|
+
* Danger — destructive actions. Uses danger (red) color.
|
|
92
|
+
* High visual prominence. Use for delete, remove, revoke actions.
|
|
93
|
+
*/
|
|
94
|
+
danger: [
|
|
95
|
+
"bg-danger text-danger-foreground",
|
|
96
|
+
"hover:bg-danger-hover",
|
|
97
|
+
"active:bg-danger-active"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
// -----------------------------------------------------------------
|
|
101
|
+
// Size Variants
|
|
102
|
+
// -----------------------------------------------------------------
|
|
103
|
+
size: {
|
|
104
|
+
/**
|
|
105
|
+
* Small — compact buttons for dense UIs, tables, toolbars.
|
|
106
|
+
* Height: 32px (h-8), Padding: 12px horizontal, Font: 12px
|
|
107
|
+
*/
|
|
108
|
+
sm: "h-8 px-3 text-xs gap-1.5",
|
|
109
|
+
/**
|
|
110
|
+
* Medium — default size for most buttons.
|
|
111
|
+
* Height: var(--ds-control-height), Padding: var(--ds-padding-button-x), Font: 14px
|
|
112
|
+
*/
|
|
113
|
+
md: "h-(--ds-control-height) px-(--ds-padding-button-x) text-sm gap-2",
|
|
114
|
+
/**
|
|
115
|
+
* Large — prominent buttons for hero sections, forms.
|
|
116
|
+
* Height: 40px (h-10), Padding: 20px horizontal, Font: 14px
|
|
117
|
+
*/
|
|
118
|
+
lg: "h-10 px-5 text-sm gap-2"
|
|
119
|
+
},
|
|
120
|
+
// -----------------------------------------------------------------
|
|
121
|
+
// Width Variants
|
|
122
|
+
// -----------------------------------------------------------------
|
|
123
|
+
fullWidth: {
|
|
124
|
+
true: "w-full",
|
|
125
|
+
false: ""
|
|
126
|
+
},
|
|
127
|
+
// -----------------------------------------------------------------
|
|
128
|
+
// Icon-Only Variant
|
|
129
|
+
// -----------------------------------------------------------------
|
|
130
|
+
iconOnly: {
|
|
131
|
+
true: "!px-0",
|
|
132
|
+
false: ""
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
// -------------------------------------------------------------------
|
|
136
|
+
// Compound Variants
|
|
137
|
+
// -------------------------------------------------------------------
|
|
138
|
+
// Handle special combinations that can't be expressed as individual
|
|
139
|
+
// variant values.
|
|
140
|
+
// -------------------------------------------------------------------
|
|
141
|
+
compoundVariants: [
|
|
142
|
+
// Icon-only buttons are square (width = height)
|
|
143
|
+
{ iconOnly: true, size: "sm", className: "w-8" },
|
|
144
|
+
{ iconOnly: true, size: "md", className: "w-9" },
|
|
145
|
+
{ iconOnly: true, size: "lg", className: "w-10" }
|
|
146
|
+
],
|
|
147
|
+
// -------------------------------------------------------------------
|
|
148
|
+
// Default Variants
|
|
149
|
+
// -------------------------------------------------------------------
|
|
150
|
+
defaultVariants: {
|
|
151
|
+
variant: "primary",
|
|
152
|
+
size: "md",
|
|
153
|
+
fullWidth: false,
|
|
154
|
+
iconOnly: false
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
);
|
|
158
|
+
function ButtonSpinner({ className }) {
|
|
159
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
160
|
+
"svg",
|
|
161
|
+
{
|
|
162
|
+
className: (0, import_cn.cn)("animate-spin size-4", className),
|
|
163
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
164
|
+
fill: "none",
|
|
165
|
+
viewBox: "0 0 24 24",
|
|
166
|
+
"aria-hidden": "true",
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
169
|
+
"circle",
|
|
170
|
+
{
|
|
171
|
+
className: "opacity-25",
|
|
172
|
+
cx: "12",
|
|
173
|
+
cy: "12",
|
|
174
|
+
r: "10",
|
|
175
|
+
stroke: "currentColor",
|
|
176
|
+
strokeWidth: "4"
|
|
177
|
+
}
|
|
178
|
+
),
|
|
179
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
180
|
+
"path",
|
|
181
|
+
{
|
|
182
|
+
className: "opacity-75",
|
|
183
|
+
fill: "currentColor",
|
|
184
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
185
|
+
}
|
|
186
|
+
)
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
const Button = (0, import_react.forwardRef)(
|
|
192
|
+
function Button2({
|
|
193
|
+
variant = "primary",
|
|
194
|
+
size = "md",
|
|
195
|
+
fullWidth = false,
|
|
196
|
+
loading = false,
|
|
197
|
+
loadingText,
|
|
198
|
+
iconLeft,
|
|
199
|
+
iconRight,
|
|
200
|
+
iconOnly = false,
|
|
201
|
+
disabled = false,
|
|
202
|
+
as: Component = "button",
|
|
203
|
+
className,
|
|
204
|
+
children,
|
|
205
|
+
...rest
|
|
206
|
+
}, ref) {
|
|
207
|
+
const isDisabled = disabled || loading;
|
|
208
|
+
const iconSizeClass = size === "sm" ? "[&>svg]:size-3.5" : "[&>svg]:size-4";
|
|
209
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
210
|
+
Component,
|
|
211
|
+
{
|
|
212
|
+
ref,
|
|
213
|
+
type: Component === "button" ? "button" : void 0,
|
|
214
|
+
disabled: isDisabled,
|
|
215
|
+
"aria-disabled": isDisabled || void 0,
|
|
216
|
+
"aria-busy": loading || void 0,
|
|
217
|
+
className: (0, import_cn.cn)(
|
|
218
|
+
buttonVariants({ variant, size, fullWidth, iconOnly }),
|
|
219
|
+
iconSizeClass,
|
|
220
|
+
className
|
|
221
|
+
),
|
|
222
|
+
"data-ds": "",
|
|
223
|
+
"data-ds-component": "button",
|
|
224
|
+
"data-ds-variant": variant,
|
|
225
|
+
"data-ds-size": size,
|
|
226
|
+
...loading ? { "data-ds-loading": "" } : {},
|
|
227
|
+
...rest,
|
|
228
|
+
children: [
|
|
229
|
+
loading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonSpinner, { className: size === "sm" ? "size-3.5" : "size-4" }),
|
|
230
|
+
loading && loadingText ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { children: loadingText }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
231
|
+
!loading && iconLeft && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconLeft }),
|
|
232
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
233
|
+
"span",
|
|
234
|
+
{
|
|
235
|
+
className: (0, import_cn.cn)(
|
|
236
|
+
"inline-flex items-center gap-[inherit]",
|
|
237
|
+
loading && !loadingText && "invisible"
|
|
238
|
+
),
|
|
239
|
+
children
|
|
240
|
+
}
|
|
241
|
+
),
|
|
242
|
+
!loading && iconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "shrink-0", "aria-hidden": "true", children: iconRight })
|
|
243
|
+
] })
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
);
|
|
247
|
+
}
|
|
248
|
+
);
|
|
249
|
+
Button.displayName = "Button";
|
|
250
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
251
|
+
0 && (module.exports = {
|
|
252
|
+
Button,
|
|
253
|
+
buttonVariants
|
|
254
|
+
});
|