@glyphui/ui 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -12
- package/dist/chart.d.ts +14 -202
- package/dist/chart.js +14 -456
- package/dist/components/accordion/accordion.d.ts +15 -0
- package/dist/components/accordion/accordion.js +69 -0
- package/dist/components/accordion/accordion.styles.d.ts +65 -0
- package/dist/components/accordion/accordion.styles.js +30 -0
- package/dist/components/accordion/index.d.ts +3 -0
- package/dist/components/alert/alert-icons.js +62 -0
- package/dist/components/alert/alert.d.ts +19 -0
- package/dist/components/alert/alert.js +64 -0
- package/dist/components/alert/alert.styles.d.ts +107 -0
- package/dist/components/alert/alert.styles.js +86 -0
- package/dist/components/alert/index.d.ts +3 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +29 -0
- package/dist/components/alert-dialog/alert-dialog.js +89 -0
- package/dist/components/alert-dialog/alert-dialog.styles.d.ts +63 -0
- package/dist/components/alert-dialog/alert-dialog.styles.js +19 -0
- package/dist/components/alert-dialog/confirm-dialog.js +22 -0
- package/dist/components/alert-dialog/confirm.d.ts +30 -0
- package/dist/components/alert-dialog/confirm.js +62 -0
- package/dist/components/alert-dialog/index.d.ts +4 -0
- package/dist/components/aspect-ratio/aspect-ratio.d.ts +55 -0
- package/dist/components/aspect-ratio/aspect-ratio.js +28 -0
- package/dist/components/aspect-ratio/index.d.ts +2 -0
- package/dist/components/avatar/avatar.d.ts +13 -0
- package/dist/components/avatar/avatar.js +50 -0
- package/dist/components/avatar/avatar.styles.d.ts +77 -0
- package/dist/components/avatar/avatar.styles.js +32 -0
- package/dist/components/avatar/index.d.ts +3 -0
- package/dist/components/badge/badge.d.ts +10 -0
- package/dist/components/badge/badge.js +28 -0
- package/dist/components/badge/badge.styles.d.ts +62 -0
- package/dist/components/badge/badge.styles.js +72 -0
- package/dist/components/badge/index.d.ts +3 -0
- package/dist/components/banner/banner.d.ts +17 -0
- package/dist/components/banner/banner.js +71 -0
- package/dist/components/banner/banner.styles.d.ts +98 -0
- package/dist/components/banner/banner.styles.js +27 -0
- package/dist/components/banner/index.d.ts +3 -0
- package/dist/components/blockquote/blockquote.d.ts +72 -0
- package/dist/components/blockquote/blockquote.js +47 -0
- package/dist/components/blockquote/index.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +28 -0
- package/dist/components/breadcrumb/breadcrumb.js +85 -0
- package/dist/components/breadcrumb/breadcrumb.styles.d.ts +63 -0
- package/dist/components/breadcrumb/breadcrumb.styles.js +18 -0
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/button/button.d.ts +20 -0
- package/dist/components/button/button.js +52 -0
- package/dist/components/button/button.styles.d.ts +146 -0
- package/dist/components/button/button.styles.js +64 -0
- package/dist/components/button/index.d.ts +3 -0
- package/dist/components/calendar/calendar.d.ts +9 -0
- package/dist/components/calendar/calendar.js +75 -0
- package/dist/components/calendar/calendar.styles.d.ts +171 -0
- package/dist/components/calendar/calendar.styles.js +42 -0
- package/dist/components/calendar/index.d.ts +4 -0
- package/dist/components/card/card.d.ts +17 -0
- package/dist/components/card/card.js +79 -0
- package/dist/components/card/card.styles.d.ts +113 -0
- package/dist/components/card/card.styles.js +38 -0
- package/dist/components/card/index.d.ts +3 -0
- package/dist/components/carousel/carousel.d.ts +37 -0
- package/dist/components/carousel/carousel.js +190 -0
- package/dist/components/carousel/carousel.styles.d.ts +74 -0
- package/dist/components/carousel/carousel.styles.js +35 -0
- package/dist/components/carousel/index.d.ts +3 -0
- package/dist/components/checkbox/checkbox.d.ts +37 -0
- package/dist/components/checkbox/checkbox.js +44 -0
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/code/code.d.ts +18 -0
- package/dist/components/code/code.js +75 -0
- package/dist/components/code/code.styles.d.ts +76 -0
- package/dist/components/code/code.styles.js +18 -0
- package/dist/components/code/index.d.ts +3 -0
- package/dist/components/collapsible/collapsible.d.ts +56 -0
- package/dist/components/collapsible/collapsible.js +43 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/combobox/combobox.d.ts +50 -0
- package/dist/components/combobox/combobox.js +141 -0
- package/dist/components/combobox/combobox.styles.d.ts +110 -0
- package/dist/components/combobox/combobox.styles.js +42 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/command-menu/command-menu.d.ts +40 -0
- package/dist/components/command-menu/command-menu.js +148 -0
- package/dist/components/command-menu/command-menu.styles.d.ts +105 -0
- package/dist/components/command-menu/command-menu.styles.js +30 -0
- package/dist/components/command-menu/index.d.ts +3 -0
- package/dist/components/container/container.d.ts +34 -0
- package/dist/components/container/container.js +30 -0
- package/dist/components/container/index.d.ts +2 -0
- package/dist/components/context-menu/context-menu.d.ts +34 -0
- package/dist/components/context-menu/context-menu.js +157 -0
- package/dist/components/context-menu/context-menu.styles.d.ts +135 -0
- package/dist/components/context-menu/context-menu.styles.js +14 -0
- package/dist/components/context-menu/index.d.ts +3 -0
- package/dist/components/copy-button/copy-button.d.ts +61 -0
- package/dist/components/copy-button/copy-button.js +79 -0
- package/dist/components/copy-button/index.d.ts +2 -0
- package/dist/components/date-picker/date-picker.d.ts +51 -0
- package/dist/components/date-picker/date-picker.js +235 -0
- package/dist/components/date-picker/date-picker.styles.d.ts +77 -0
- package/dist/components/date-picker/date-picker.styles.js +31 -0
- package/dist/components/date-picker/index.d.ts +3 -0
- package/dist/components/description-list/description-list.d.ts +15 -0
- package/dist/components/description-list/description-list.js +51 -0
- package/dist/components/description-list/description-list.styles.d.ts +74 -0
- package/dist/components/description-list/description-list.styles.js +35 -0
- package/dist/components/description-list/index.d.ts +3 -0
- package/dist/components/dialog/close-icon.js +22 -0
- package/dist/components/dialog/dialog.d.ts +21 -0
- package/dist/components/dialog/dialog.js +79 -0
- package/dist/components/dialog/dialog.styles.d.ts +83 -0
- package/dist/components/dialog/dialog.styles.js +34 -0
- package/dist/components/dialog/index.d.ts +3 -0
- package/dist/components/dropdown-menu/dropdown-menu.d.ts +34 -0
- package/dist/components/dropdown-menu/dropdown-menu.js +160 -0
- package/dist/components/dropdown-menu/dropdown-menu.styles.d.ts +83 -0
- package/dist/components/dropdown-menu/dropdown-menu.styles.js +38 -0
- package/dist/components/dropdown-menu/index.d.ts +3 -0
- package/dist/components/eyebrow/eyebrow.d.ts +9 -0
- package/dist/components/eyebrow/eyebrow.js +20 -0
- package/dist/components/eyebrow/eyebrow.styles.d.ts +38 -0
- package/dist/components/eyebrow/eyebrow.styles.js +13 -0
- package/dist/components/eyebrow/index.d.ts +3 -0
- package/dist/components/field/field-context.d.ts +25 -0
- package/dist/components/field/field-context.js +27 -0
- package/dist/components/field/field.d.ts +28 -0
- package/dist/{field-CWZ_FdkD.js → components/field/field.js} +20 -34
- package/dist/components/field/field.styles.d.ts +53 -0
- package/dist/components/field/field.styles.js +22 -0
- package/dist/components/field/index.d.ts +4 -0
- package/dist/components/file-upload/file-upload.d.ts +52 -0
- package/dist/components/file-upload/file-upload.js +266 -0
- package/dist/components/file-upload/file-upload.styles.d.ts +123 -0
- package/dist/components/file-upload/file-upload.styles.js +32 -0
- package/dist/components/file-upload/index.d.ts +3 -0
- package/dist/components/grid/grid.d.ts +168 -0
- package/dist/components/grid/grid.js +126 -0
- package/dist/components/grid/index.d.ts +2 -0
- package/dist/components/heading/heading.d.ts +12 -0
- package/dist/components/heading/heading.js +28 -0
- package/dist/components/heading/heading.styles.d.ts +65 -0
- package/dist/components/heading/heading.styles.js +15 -0
- package/dist/components/heading/index.d.ts +3 -0
- package/dist/components/hover-card/hover-card.d.ts +43 -0
- package/dist/components/hover-card/hover-card.js +27 -0
- package/dist/components/hover-card/index.d.ts +2 -0
- package/dist/components/input/index.d.ts +3 -0
- package/dist/components/input/input.d.ts +13 -0
- package/dist/components/input/input.js +33 -0
- package/dist/components/input/input.styles.d.ts +55 -0
- package/dist/components/input/input.styles.js +33 -0
- package/dist/components/input-otp/index.d.ts +4 -0
- package/dist/components/input-otp/index.js +5 -0
- package/dist/components/input-otp/input-otp.d.ts +23 -0
- package/dist/components/input-otp/input-otp.js +86 -0
- package/dist/components/input-otp/input-otp.styles.d.ts +71 -0
- package/dist/components/input-otp/input-otp.styles.js +30 -0
- package/dist/components/kbd/index.d.ts +2 -0
- package/dist/components/kbd/kbd.d.ts +30 -0
- package/dist/components/kbd/kbd.js +17 -0
- package/dist/components/label/index.d.ts +2 -0
- package/dist/components/label/label.d.ts +31 -0
- package/dist/components/label/label.js +17 -0
- package/dist/components/link/index.d.ts +3 -0
- package/dist/components/link/link.d.ts +14 -0
- package/dist/components/link/link.js +57 -0
- package/dist/components/link/link.styles.d.ts +89 -0
- package/dist/components/link/link.styles.js +33 -0
- package/dist/components/modal/index.d.ts +3 -0
- package/dist/components/modal/modal.d.ts +33 -0
- package/dist/components/modal/modal.js +56 -0
- package/dist/components/modal/modal.styles.d.ts +61 -0
- package/dist/components/modal/modal.styles.js +14 -0
- package/dist/components/navigation-menu/index.d.ts +3 -0
- package/dist/components/navigation-menu/navigation-menu.d.ts +37 -0
- package/dist/components/navigation-menu/navigation-menu.js +138 -0
- package/dist/components/navigation-menu/navigation-menu.styles.d.ts +111 -0
- package/dist/components/navigation-menu/navigation-menu.styles.js +39 -0
- package/dist/components/number-input/index.d.ts +3 -0
- package/dist/components/number-input/number-input.d.ts +30 -0
- package/dist/components/number-input/number-input.js +151 -0
- package/dist/components/number-input/number-input.styles.d.ts +68 -0
- package/dist/components/number-input/number-input.styles.js +35 -0
- package/dist/components/pagination/index.d.ts +4 -0
- package/dist/components/pagination/pagination-range.d.ts +11 -0
- package/dist/components/pagination/pagination-range.js +42 -0
- package/dist/components/pagination/pagination.d.ts +18 -0
- package/dist/components/pagination/pagination.js +94 -0
- package/dist/components/pagination/pagination.styles.d.ts +65 -0
- package/dist/components/pagination/pagination.styles.js +35 -0
- package/dist/components/password-input/index.d.ts +3 -0
- package/dist/components/password-input/password-input.d.ts +20 -0
- package/dist/components/password-input/password-input.js +106 -0
- package/dist/components/password-input/password-input.styles.d.ts +66 -0
- package/dist/components/password-input/password-input.styles.js +21 -0
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/popover.d.ts +52 -0
- package/dist/components/popover/popover.js +35 -0
- package/dist/components/progress/index.d.ts +3 -0
- package/dist/components/progress/progress.d.ts +29 -0
- package/dist/components/progress/progress.js +108 -0
- package/dist/components/progress/progress.styles.d.ts +236 -0
- package/dist/components/progress/progress.styles.js +69 -0
- package/dist/components/prose/index.d.ts +2 -0
- package/dist/components/prose/prose.d.ts +90 -0
- package/dist/components/prose/prose.js +67 -0
- package/dist/components/radio-group/index.d.ts +3 -0
- package/dist/components/radio-group/radio-group.d.ts +26 -0
- package/dist/components/radio-group/radio-group.js +102 -0
- package/dist/components/radio-group/radio-group.styles.d.ts +80 -0
- package/dist/components/radio-group/radio-group.styles.js +56 -0
- package/dist/components/resizable/index.d.ts +3 -0
- package/dist/components/resizable/resizable.d.ts +17 -0
- package/dist/components/resizable/resizable.js +81 -0
- package/dist/components/resizable/resizable.styles.d.ts +53 -0
- package/dist/components/resizable/resizable.styles.js +19 -0
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.d.ts +70 -0
- package/dist/components/scroll-area/scroll-area.js +70 -0
- package/dist/components/section/index.d.ts +2 -0
- package/dist/components/section/section.d.ts +52 -0
- package/dist/components/section/section.js +41 -0
- package/dist/components/segmented-control/index.d.ts +2 -0
- package/dist/components/segmented-control/segmented-control.d.ts +92 -0
- package/dist/components/segmented-control/segmented-control.js +86 -0
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/select.d.ts +85 -0
- package/dist/components/select/select.js +81 -0
- package/dist/components/separator/index.d.ts +2 -0
- package/dist/components/separator/separator.d.ts +40 -0
- package/dist/components/separator/separator.js +27 -0
- package/dist/components/sheet/index.d.ts +3 -0
- package/dist/components/sheet/sheet.d.ts +20 -0
- package/dist/components/sheet/sheet.js +83 -0
- package/dist/components/sheet/sheet.styles.d.ts +101 -0
- package/dist/components/sheet/sheet.styles.js +62 -0
- package/dist/components/skeleton/index.d.ts +2 -0
- package/dist/components/skeleton/skeleton.d.ts +30 -0
- package/dist/components/skeleton/skeleton.js +18 -0
- package/dist/components/slider/index.d.ts +3 -0
- package/dist/components/slider/slider.d.ts +38 -0
- package/dist/components/slider/slider.js +68 -0
- package/dist/components/slider/slider.styles.d.ts +56 -0
- package/dist/components/slider/slider.styles.js +23 -0
- package/dist/components/spinner/index.d.ts +3 -0
- package/dist/components/spinner/spinner.d.ts +9 -0
- package/dist/components/spinner/spinner.js +36 -0
- package/dist/components/spinner/spinner.styles.d.ts +53 -0
- package/dist/components/spinner/spinner.styles.js +18 -0
- package/dist/components/stack/index.d.ts +2 -0
- package/dist/components/stack/stack.d.ts +109 -0
- package/dist/components/stack/stack.js +62 -0
- package/dist/components/stat-card/index.d.ts +3 -0
- package/dist/components/stat-card/stat-card.d.ts +22 -0
- package/dist/components/stat-card/stat-card.js +82 -0
- package/dist/components/stat-card/stat-card.styles.d.ts +83 -0
- package/dist/components/stat-card/stat-card.styles.js +16 -0
- package/dist/components/stepper/index.d.ts +3 -0
- package/dist/components/stepper/stepper.d.ts +20 -0
- package/dist/components/stepper/stepper.js +100 -0
- package/dist/components/stepper/stepper.styles.d.ts +170 -0
- package/dist/components/stepper/stepper.styles.js +67 -0
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/switch.d.ts +51 -0
- package/dist/components/switch/switch.js +43 -0
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/table.d.ts +78 -0
- package/dist/components/table/table.js +82 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/tabs.d.ts +73 -0
- package/dist/components/tabs/tabs.js +103 -0
- package/dist/components/tag-input/index.d.ts +3 -0
- package/dist/components/tag-input/tag-input.d.ts +30 -0
- package/dist/components/tag-input/tag-input.js +149 -0
- package/dist/components/tag-input/tag-input.styles.d.ts +71 -0
- package/dist/components/tag-input/tag-input.styles.js +29 -0
- package/dist/components/text/index.d.ts +3 -0
- package/dist/components/text/text.d.ts +9 -0
- package/dist/components/text/text.js +25 -0
- package/dist/components/text/text.styles.d.ts +188 -0
- package/dist/components/text/text.styles.js +36 -0
- package/dist/components/textarea/index.d.ts +2 -0
- package/dist/components/textarea/textarea.d.ts +29 -0
- package/dist/components/textarea/textarea.js +23 -0
- package/dist/components/timeline/index.d.ts +3 -0
- package/dist/components/timeline/timeline.d.ts +28 -0
- package/dist/components/timeline/timeline.js +61 -0
- package/dist/components/timeline/timeline.styles.d.ts +110 -0
- package/dist/components/timeline/timeline.styles.js +30 -0
- package/dist/components/toast/index.d.ts +2 -0
- package/dist/components/toast/toast.d.ts +119 -0
- package/dist/components/toast/toast.js +75 -0
- package/dist/components/toggle/index.d.ts +3 -0
- package/dist/components/toggle/toggle.d.ts +20 -0
- package/dist/components/toggle/toggle.js +58 -0
- package/dist/components/toggle/toggle.styles.d.ts +80 -0
- package/dist/components/toggle/toggle.styles.js +34 -0
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/tooltip.d.ts +39 -0
- package/dist/components/tooltip/tooltip.js +29 -0
- package/dist/components/tree-view/index.d.ts +3 -0
- package/dist/components/tree-view/tree-view.d.ts +31 -0
- package/dist/components/tree-view/tree-view.js +192 -0
- package/dist/components/tree-view/tree-view.styles.d.ts +59 -0
- package/dist/components/tree-view/tree-view.styles.js +32 -0
- package/dist/components/visually-hidden/index.d.ts +2 -0
- package/dist/components/visually-hidden/visually-hidden.d.ts +10 -0
- package/dist/components/visually-hidden/visually-hidden.js +16 -0
- package/dist/data-table.d.ts +3 -110
- package/dist/data-table.js +2 -224
- package/dist/form.d.ts +2 -79
- package/dist/form.js +1 -83
- package/dist/hooks/index.d.ts +5 -0
- package/dist/hooks/use-component-config.d.ts +13 -0
- package/dist/hooks/use-component-config.js +22 -0
- package/dist/hooks/use-controllable-state.d.ts +9 -0
- package/dist/hooks/use-controllable-state.js +18 -0
- package/dist/hooks/use-media-query.d.ts +4 -0
- package/dist/hooks/use-media-query.js +13 -0
- package/dist/hooks/use-scrolled.d.ts +4 -0
- package/dist/hooks/use-scrolled.js +17 -0
- package/dist/index.d.ts +223 -6849
- package/dist/index.js +148 -6718
- package/dist/internal/dev.js +12 -0
- package/dist/internal/icons.js +91 -0
- package/dist/motion/active-indicator.d.ts +12 -0
- package/dist/motion/active-indicator.js +26 -0
- package/dist/motion/animated-number.d.ts +21 -0
- package/dist/motion/animated-number.js +88 -0
- package/dist/motion/features.js +10 -0
- package/dist/motion/index.d.ts +10 -0
- package/dist/motion/index.js +10 -0
- package/dist/motion/motion-root.js +48 -0
- package/dist/motion/page-transition.d.ts +16 -0
- package/dist/motion/page-transition.js +23 -0
- package/dist/motion/presence-list.js +46 -0
- package/dist/motion/presence.d.ts +11 -0
- package/dist/motion/presence.js +17 -0
- package/dist/motion/reveal.d.ts +18 -0
- package/dist/motion/reveal.js +37 -0
- package/dist/motion/stagger.d.ts +29 -0
- package/dist/motion/stagger.js +52 -0
- package/dist/motion/use-motion-settings.d.ts +25 -0
- package/dist/motion/use-motion-settings.js +47 -0
- package/dist/motion/use-reveal.d.ts +11 -0
- package/dist/motion/use-reveal.js +41 -0
- package/dist/patterns/app-shell/app-shell-context.d.ts +14 -0
- package/dist/patterns/app-shell/app-shell-context.js +16 -0
- package/dist/patterns/app-shell/app-shell.d.ts +21 -0
- package/dist/patterns/app-shell/app-shell.js +82 -0
- package/dist/patterns/app-shell/app-shell.styles.d.ts +302 -0
- package/dist/patterns/app-shell/app-shell.styles.js +106 -0
- package/dist/patterns/app-shell/index.d.ts +7 -0
- package/dist/patterns/app-shell/navbar.d.ts +29 -0
- package/dist/patterns/app-shell/navbar.js +116 -0
- package/dist/patterns/app-shell/page-header.d.ts +12 -0
- package/dist/patterns/app-shell/page-header.js +38 -0
- package/dist/patterns/app-shell/sidebar.d.ts +31 -0
- package/dist/patterns/app-shell/sidebar.js +141 -0
- package/dist/patterns/async/async.d.ts +40 -0
- package/dist/patterns/async/async.js +61 -0
- package/dist/patterns/async/index.d.ts +3 -0
- package/dist/patterns/async/states.d.ts +68 -0
- package/dist/patterns/async/states.js +116 -0
- package/dist/patterns/chart/cartesian.d.ts +128 -0
- package/dist/patterns/chart/cartesian.js +552 -0
- package/dist/patterns/chart/chart-card.d.ts +39 -0
- package/dist/patterns/chart/chart-card.js +103 -0
- package/dist/patterns/chart/chart-parts.d.ts +53 -0
- package/dist/patterns/chart/chart-parts.js +282 -0
- package/dist/patterns/chart/chart.styles.d.ts +200 -0
- package/dist/patterns/chart/chart.styles.js +43 -0
- package/dist/patterns/chart/export.d.ts +45 -0
- package/dist/patterns/chart/export.js +293 -0
- package/dist/patterns/chart/funnel.d.ts +23 -0
- package/dist/patterns/chart/funnel.js +129 -0
- package/dist/patterns/chart/heatmap.d.ts +37 -0
- package/dist/patterns/chart/heatmap.js +258 -0
- package/dist/patterns/chart/icons.js +39 -0
- package/dist/patterns/chart/pie.d.ts +36 -0
- package/dist/patterns/chart/pie.js +120 -0
- package/dist/patterns/chart/radial.d.ts +75 -0
- package/dist/patterns/chart/radial.js +282 -0
- package/dist/patterns/chart/sankey.d.ts +29 -0
- package/dist/patterns/chart/sankey.js +136 -0
- package/dist/patterns/chart/scatter.d.ts +42 -0
- package/dist/patterns/chart/scatter.js +203 -0
- package/dist/patterns/chart/sparkline.d.ts +20 -0
- package/dist/patterns/chart/sparkline.js +102 -0
- package/dist/patterns/chart/treemap.d.ts +25 -0
- package/dist/patterns/chart/treemap.js +128 -0
- package/dist/patterns/chart/use-element-width.js +23 -0
- package/dist/patterns/data-table/data-table.d.ts +109 -0
- package/dist/patterns/data-table/data-table.js +233 -0
- package/dist/patterns/form/form.d.ts +89 -0
- package/dist/patterns/form/form.js +111 -0
- package/dist/provider/color-mode-script.d.ts +15 -0
- package/dist/provider/color-mode-script.js +13 -0
- package/dist/provider/color-mode.d.ts +24 -0
- package/dist/provider/color-mode.js +87 -0
- package/dist/provider/glyph-context.d.ts +51 -0
- package/dist/provider/glyph-context.js +28 -0
- package/dist/provider/glyph-provider.d.ts +37 -0
- package/dist/provider/glyph-provider.js +48 -0
- package/dist/provider/index.d.ts +6 -0
- package/dist/provider/theme-scope.d.ts +12 -0
- package/dist/provider/theme-scope.js +42 -0
- package/dist/provider/theme-style.js +15 -0
- package/dist/react-router.d.ts +18 -0
- package/dist/react-router.js +44 -0
- package/dist/register.d.ts +57 -0
- package/dist/themes.d.ts +22 -0
- package/dist/themes.js +49 -0
- package/dist/utils/cn.d.ts +6 -0
- package/dist/utils/cn.js +12 -0
- package/dist/utils/compose-refs.js +11 -0
- package/dist/{registry-BGSJoiLq.d.ts → utils/registry.d.ts} +2 -3
- package/dist/utils/styles.js +20 -0
- package/dist/{tv-DuMh7UH2.d.ts → utils/tv.d.ts} +2 -2
- package/dist/utils/tv.js +8 -0
- package/dist/utils/tw-merge-config.js +13 -0
- package/dist/vite.d.ts +27 -0
- package/dist/vite.js +29 -0
- package/fonts.css +10 -0
- package/package.json +33 -5
- package/src/components/accordion/accordion.styles.ts +1 -1
- package/src/components/alert/alert.styles.ts +1 -1
- package/src/components/alert-dialog/alert-dialog.styles.ts +5 -4
- package/src/components/alert-dialog/confirm-dialog.tsx +42 -0
- package/src/components/alert-dialog/confirm.tsx +12 -31
- package/src/components/aspect-ratio/aspect-ratio.tsx +1 -1
- package/src/components/avatar/avatar.styles.ts +1 -1
- package/src/components/badge/badge.styles.ts +12 -17
- package/src/components/banner/banner.styles.ts +5 -5
- package/src/components/blockquote/blockquote.tsx +1 -1
- package/src/components/breadcrumb/breadcrumb.styles.ts +1 -1
- package/src/components/button/button.styles.ts +6 -2
- package/src/components/calendar/calendar.styles.ts +4 -3
- package/src/components/card/card.styles.ts +1 -1
- package/src/components/carousel/carousel.styles.ts +1 -1
- package/src/components/checkbox/checkbox.tsx +20 -5
- package/src/components/code/code.styles.ts +2 -2
- package/src/components/collapsible/collapsible.tsx +1 -1
- package/src/components/combobox/combobox.styles.ts +5 -2
- package/src/components/command-menu/command-menu.styles.ts +6 -4
- package/src/components/container/container.tsx +1 -1
- package/src/components/context-menu/context-menu.styles.ts +4 -2
- package/src/components/copy-button/copy-button.tsx +1 -1
- package/src/components/date-picker/date-picker.styles.ts +2 -2
- package/src/components/description-list/description-list.styles.ts +1 -1
- package/src/components/dialog/dialog.styles.ts +11 -4
- package/src/components/dropdown-menu/dropdown-menu.styles.ts +5 -5
- package/src/components/eyebrow/eyebrow.styles.ts +2 -2
- package/src/components/field/field-context.ts +2 -0
- package/src/components/field/field.styles.ts +5 -3
- package/src/components/field/field.tsx +25 -4
- package/src/components/file-upload/file-upload.styles.ts +4 -4
- package/src/components/file-upload/file-upload.tsx +51 -48
- package/src/components/grid/grid.tsx +1 -1
- package/src/components/heading/heading.styles.ts +1 -1
- package/src/components/hover-card/hover-card.tsx +5 -2
- package/src/components/input/input.styles.ts +1 -1
- package/src/components/input-otp/input-otp.styles.ts +1 -1
- package/src/components/kbd/kbd.tsx +1 -1
- package/src/components/label/label.tsx +1 -1
- package/src/components/link/link.styles.ts +2 -2
- package/src/components/modal/modal.styles.ts +3 -1
- package/src/components/modal/modal.tsx +30 -5
- package/src/components/navigation-menu/navigation-menu.styles.ts +2 -2
- package/src/components/navigation-menu/navigation-menu.tsx +14 -4
- package/src/components/number-input/number-input.styles.ts +1 -1
- package/src/components/pagination/pagination.styles.ts +6 -4
- package/src/components/pagination/pagination.tsx +14 -1
- package/src/components/password-input/password-input.styles.ts +4 -4
- package/src/components/popover/popover.tsx +1 -1
- package/src/components/progress/progress.styles.ts +2 -2
- package/src/components/prose/prose.tsx +2 -2
- package/src/components/radio-group/radio-group.styles.ts +1 -1
- package/src/components/resizable/resizable.styles.ts +1 -1
- package/src/components/scroll-area/scroll-area.tsx +24 -2
- package/src/components/section/section.tsx +1 -1
- package/src/components/segmented-control/segmented-control.tsx +40 -9
- package/src/components/select/select.tsx +2 -2
- package/src/components/separator/separator.tsx +1 -1
- package/src/components/sheet/sheet.styles.ts +1 -1
- package/src/components/skeleton/skeleton.tsx +1 -1
- package/src/components/slider/slider.styles.ts +1 -1
- package/src/components/slider/slider.tsx +9 -2
- package/src/components/spinner/spinner.styles.ts +1 -1
- package/src/components/stack/stack.tsx +1 -1
- package/src/components/stat-card/stat-card.styles.ts +1 -1
- package/src/components/stepper/stepper.styles.ts +3 -3
- package/src/components/switch/switch.tsx +2 -2
- package/src/components/table/table.tsx +1 -1
- package/src/components/tabs/tabs.tsx +46 -15
- package/src/components/tag-input/tag-input.styles.ts +2 -2
- package/src/components/tag-input/tag-input.tsx +27 -18
- package/src/components/text/text.styles.ts +5 -5
- package/src/components/textarea/textarea.tsx +1 -1
- package/src/components/timeline/timeline.styles.ts +1 -1
- package/src/components/toast/toast.tsx +1 -1
- package/src/components/toggle/toggle.styles.ts +1 -1
- package/src/components/tooltip/tooltip.tsx +6 -3
- package/src/components/tree-view/tree-view.styles.ts +1 -1
- package/src/index.ts +3 -0
- package/src/integrations/react-router.tsx +39 -0
- package/src/integrations/vite.test-d.ts +6 -0
- package/src/integrations/vite.test.ts +28 -0
- package/src/integrations/vite.ts +33 -0
- package/src/internal/dev.ts +12 -0
- package/src/motion/active-indicator.tsx +26 -0
- package/src/motion/animated-number.tsx +113 -0
- package/src/motion/features.ts +7 -0
- package/src/motion/index.ts +9 -0
- package/src/motion/motion-root.tsx +46 -0
- package/src/motion/page-transition.tsx +30 -0
- package/src/motion/presence-list.tsx +42 -0
- package/src/motion/presence.tsx +13 -0
- package/src/motion/reveal.tsx +50 -0
- package/src/motion/stagger.tsx +81 -0
- package/src/motion/use-motion-settings.ts +52 -0
- package/src/motion/use-reveal.ts +54 -0
- package/src/patterns/app-shell/app-shell.styles.ts +19 -12
- package/src/patterns/app-shell/navbar.tsx +34 -16
- package/src/patterns/app-shell/sidebar.tsx +35 -9
- package/src/patterns/async/states.tsx +1 -1
- package/src/patterns/chart/cartesian.tsx +755 -0
- package/src/patterns/chart/chart-card.tsx +148 -0
- package/src/patterns/chart/chart-parts.tsx +330 -57
- package/src/patterns/chart/chart.styles.ts +29 -3
- package/src/patterns/chart/export.ts +334 -0
- package/src/patterns/chart/funnel.tsx +171 -0
- package/src/patterns/chart/heatmap.tsx +339 -0
- package/src/patterns/chart/icons.tsx +44 -0
- package/src/patterns/chart/index.ts +52 -7
- package/src/patterns/chart/pie.tsx +169 -0
- package/src/patterns/chart/radial.tsx +361 -0
- package/src/patterns/chart/sankey.tsx +197 -0
- package/src/patterns/chart/scatter.tsx +254 -0
- package/src/patterns/chart/sparkline.tsx +111 -0
- package/src/patterns/chart/test-utils.tsx +35 -0
- package/src/patterns/chart/treemap.tsx +198 -0
- package/src/patterns/chart/use-element-width.ts +20 -0
- package/src/patterns/data-table/data-table.tsx +1 -1
- package/src/patterns/form/form.tsx +49 -7
- package/src/patterns/form/index.ts +1 -0
- package/src/provider/color-mode-script.ts +28 -0
- package/src/provider/color-mode.tsx +14 -20
- package/src/provider/glyph-context.ts +41 -1
- package/src/provider/glyph-provider.tsx +45 -14
- package/src/provider/index.ts +4 -0
- package/src/provider/theme-scope.tsx +20 -11
- package/src/themes.ts +3 -3
- package/src/utils/styles.ts +17 -3
- package/styles.css +194 -3
- package/dist/field-context-anGPYXbW.js +0 -267
- package/dist/index-BWK4czIG.d.ts +0 -233
- package/dist/states-DR-OoDT-.js +0 -288
- package/dist/tv-DBAGlgXJ.js +0 -58
- package/src/patterns/chart/chart.tsx +0 -369
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { avatarStyles } from "./components/avatar/avatar.styles.js";
|
|
2
|
+
import { badgeStyles } from "./components/badge/badge.styles.js";
|
|
3
|
+
import { buttonStyles } from "./components/button/button.styles.js";
|
|
4
|
+
import { cardStyles } from "./components/card/card.styles.js";
|
|
5
|
+
import { checkboxStyles } from "./components/checkbox/checkbox.js";
|
|
6
|
+
import { eyebrowStyles } from "./components/eyebrow/eyebrow.styles.js";
|
|
7
|
+
import { fieldStyles } from "./components/field/field.styles.js";
|
|
8
|
+
import { headingStyles } from "./components/heading/heading.styles.js";
|
|
9
|
+
import { inputStyles } from "./components/input/input.styles.js";
|
|
10
|
+
import { kbdStyles } from "./components/kbd/kbd.js";
|
|
11
|
+
import { labelStyles } from "./components/label/label.js";
|
|
12
|
+
import { segmentedControlStyles } from "./components/segmented-control/segmented-control.js";
|
|
13
|
+
import { selectStyles } from "./components/select/select.js";
|
|
14
|
+
import { separatorStyles } from "./components/separator/separator.js";
|
|
15
|
+
import { skeletonStyles } from "./components/skeleton/skeleton.js";
|
|
16
|
+
import { spinnerStyles } from "./components/spinner/spinner.styles.js";
|
|
17
|
+
import { switchStyles } from "./components/switch/switch.js";
|
|
18
|
+
import { tableStyles } from "./components/table/table.js";
|
|
19
|
+
import { tabsStyles } from "./components/tabs/tabs.js";
|
|
20
|
+
import { textStyles } from "./components/text/text.styles.js";
|
|
21
|
+
import { textareaStyles } from "./components/textarea/textarea.js";
|
|
22
|
+
import { tooltipStyles } from "./components/tooltip/tooltip.js";
|
|
23
|
+
import { appShellStyles, navbarStyles, pageHeaderStyles, sidebarStyles } from "./patterns/app-shell/app-shell.styles.js";
|
|
24
|
+
import { stateStyles } from "./patterns/async/states.js";
|
|
25
|
+
import { StylesEntry } from "./utils/registry.js";
|
|
26
|
+
//#region src/register.d.ts
|
|
27
|
+
declare module '@glyphui/tokens' {
|
|
28
|
+
interface GlyphComponentRegistry {
|
|
29
|
+
AppShell: StylesEntry<typeof appShellStyles>;
|
|
30
|
+
Avatar: StylesEntry<typeof avatarStyles>;
|
|
31
|
+
Badge: StylesEntry<typeof badgeStyles>;
|
|
32
|
+
Button: StylesEntry<typeof buttonStyles>;
|
|
33
|
+
Card: StylesEntry<typeof cardStyles>;
|
|
34
|
+
Checkbox: StylesEntry<typeof checkboxStyles>;
|
|
35
|
+
EmptyState: StylesEntry<typeof stateStyles>;
|
|
36
|
+
Eyebrow: StylesEntry<typeof eyebrowStyles>;
|
|
37
|
+
Field: StylesEntry<typeof fieldStyles>;
|
|
38
|
+
Heading: StylesEntry<typeof headingStyles>;
|
|
39
|
+
Input: StylesEntry<typeof inputStyles>;
|
|
40
|
+
Kbd: StylesEntry<typeof kbdStyles>;
|
|
41
|
+
Label: StylesEntry<typeof labelStyles>;
|
|
42
|
+
Navbar: StylesEntry<typeof navbarStyles>;
|
|
43
|
+
PageHeader: StylesEntry<typeof pageHeaderStyles>;
|
|
44
|
+
SegmentedControl: StylesEntry<typeof segmentedControlStyles>;
|
|
45
|
+
Select: StylesEntry<typeof selectStyles>;
|
|
46
|
+
Separator: StylesEntry<typeof separatorStyles>;
|
|
47
|
+
Sidebar: StylesEntry<typeof sidebarStyles>;
|
|
48
|
+
Skeleton: StylesEntry<typeof skeletonStyles>;
|
|
49
|
+
Spinner: StylesEntry<typeof spinnerStyles>;
|
|
50
|
+
Switch: StylesEntry<typeof switchStyles>;
|
|
51
|
+
Table: StylesEntry<typeof tableStyles>;
|
|
52
|
+
Tabs: StylesEntry<typeof tabsStyles>;
|
|
53
|
+
Text: StylesEntry<typeof textStyles>;
|
|
54
|
+
Textarea: StylesEntry<typeof textareaStyles>;
|
|
55
|
+
Tooltip: StylesEntry<typeof tooltipStyles>;
|
|
56
|
+
}
|
|
57
|
+
}
|
package/dist/themes.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./register.js";
|
|
2
|
+
//#region src/themes.d.ts
|
|
3
|
+
/**
|
|
4
|
+
* Built-in themes: the token presets from @glyphui/tokens plus per-component recipes.
|
|
5
|
+
* Extend any of them in your theme file: `defineTheme({ name: 'acme', extends: presets.glyph, ... })`.
|
|
6
|
+
*/
|
|
7
|
+
/** Precise, dark-first, one electric-blue accent, layered soft shadows, Geist. */
|
|
8
|
+
export declare const glyph: import("@glyphui/tokens").Theme;
|
|
9
|
+
/** Zero radius, heavy borders, hard offset shadows, loud color. */
|
|
10
|
+
export declare const brutalist: import("@glyphui/tokens").Theme;
|
|
11
|
+
/** Serif display type, warm paper neutrals, deep green ink, hairlines instead of shadows. */
|
|
12
|
+
export declare const editorial: import("@glyphui/tokens").Theme;
|
|
13
|
+
/** Pill shapes, lavender and mint, chunky rounded type, springy motion. */
|
|
14
|
+
export declare const playful: import("@glyphui/tokens").Theme;
|
|
15
|
+
export declare const presets: {
|
|
16
|
+
readonly glyph: import("@glyphui/tokens").Theme;
|
|
17
|
+
readonly brutalist: import("@glyphui/tokens").Theme;
|
|
18
|
+
readonly editorial: import("@glyphui/tokens").Theme;
|
|
19
|
+
readonly playful: import("@glyphui/tokens").Theme;
|
|
20
|
+
};
|
|
21
|
+
export type PresetName = keyof typeof presets;
|
|
22
|
+
//#endregion
|
package/dist/themes.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { defineTheme, presets } from "@glyphui/tokens";
|
|
3
|
+
//#region src/themes.ts
|
|
4
|
+
/**
|
|
5
|
+
* Built-in themes: the token presets from @glyphui/tokens plus per-component recipes.
|
|
6
|
+
* Extend any of them in your theme file: `defineTheme({ name: 'acme', extends: presets.glyph, ... })`.
|
|
7
|
+
*/
|
|
8
|
+
/** Precise, dark-first, one electric-blue accent, layered soft shadows, Geist. */
|
|
9
|
+
const glyph = presets.glyph;
|
|
10
|
+
/** Zero radius, heavy borders, hard offset shadows, loud color. */
|
|
11
|
+
const brutalist = /* @__PURE__ */ defineTheme({
|
|
12
|
+
name: "brutalist",
|
|
13
|
+
extends: presets.brutalist,
|
|
14
|
+
components: {
|
|
15
|
+
Button: { className: { base: "font-bold uppercase tracking-wide shadow-sm hover:-translate-x-px hover:-translate-y-px hover:shadow-md active:translate-x-[3px] active:translate-y-[3px] active:shadow-none" } },
|
|
16
|
+
Badge: { className: { base: "font-bold uppercase" } },
|
|
17
|
+
Card: { defaultVariants: { variant: "elevated" } },
|
|
18
|
+
Heading: { className: { base: "uppercase" } },
|
|
19
|
+
Input: { className: { root: "shadow-sm focus-within:ring-0 focus-within:shadow-md" } }
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
/** Serif display type, warm paper neutrals, deep green ink, hairlines instead of shadows. */
|
|
23
|
+
const editorial = /* @__PURE__ */ defineTheme({
|
|
24
|
+
name: "editorial",
|
|
25
|
+
extends: presets.editorial,
|
|
26
|
+
components: {
|
|
27
|
+
Card: { defaultVariants: { variant: "outline" } },
|
|
28
|
+
Eyebrow: { className: { base: "font-sans tracking-[0.18em]" } },
|
|
29
|
+
Button: { className: { base: "tracking-wide" } }
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
/** Pill shapes, lavender and mint, chunky rounded type, springy motion. */
|
|
33
|
+
const playful = /* @__PURE__ */ defineTheme({
|
|
34
|
+
name: "playful",
|
|
35
|
+
extends: presets.playful,
|
|
36
|
+
components: {
|
|
37
|
+
Button: { className: { base: "font-bold hover:-translate-y-0.5 active:translate-y-0 active:scale-[0.97]" } },
|
|
38
|
+
Card: { defaultVariants: { variant: "elevated" } },
|
|
39
|
+
Badge: { className: { base: "font-semibold" } }
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const presets$1 = {
|
|
43
|
+
glyph,
|
|
44
|
+
brutalist,
|
|
45
|
+
editorial,
|
|
46
|
+
playful
|
|
47
|
+
};
|
|
48
|
+
//#endregion
|
|
49
|
+
export { brutalist, editorial, glyph, playful, presets$1 as presets };
|
package/dist/utils/cn.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { twMergeConfig } from "./tw-merge-config.js";
|
|
3
|
+
import { clsx } from "clsx";
|
|
4
|
+
import { extendTailwindMerge } from "tailwind-merge";
|
|
5
|
+
//#region src/utils/cn.ts
|
|
6
|
+
const twMerge = extendTailwindMerge(twMergeConfig);
|
|
7
|
+
/** Joins class names and resolves Tailwind conflicts (last one wins). */
|
|
8
|
+
function cn(...inputs) {
|
|
9
|
+
return twMerge(clsx(inputs));
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { cn };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region src/utils/compose-refs.ts
|
|
3
|
+
/** Combines several refs into one callback ref. */
|
|
4
|
+
function composeRefs(...refs) {
|
|
5
|
+
return (node) => {
|
|
6
|
+
for (const ref of refs) if (typeof ref === "function") ref(node);
|
|
7
|
+
else if (ref) ref.current = node;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { composeRefs };
|
|
@@ -2,8 +2,7 @@ import { ComponentEntry } from "@glyphui/tokens";
|
|
|
2
2
|
import { VariantProps } from "tailwind-variants";
|
|
3
3
|
//#region src/utils/registry.d.ts
|
|
4
4
|
/** Derives a registry entry (variant props + slot names) from a component's `tv()` styles. */
|
|
5
|
-
type StylesEntry<T extends ((...args: any) => any) & {
|
|
5
|
+
export type StylesEntry<T extends ((...args: any) => any) & {
|
|
6
6
|
slots: unknown;
|
|
7
7
|
}> = ComponentEntry<VariantProps<T>, Extract<keyof NonNullable<T['slots']>, string>>;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { StylesEntry as t };
|
|
8
|
+
//#endregion
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
//#region src/utils/styles.ts
|
|
3
|
+
/** Shared class fragments. Kept as literals so Tailwind's scanner picks them up. */
|
|
4
|
+
const focusRing = "outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background";
|
|
5
|
+
const themedBorder = "border-(length:--glyph-border-width)";
|
|
6
|
+
const transition = "transition-[color,background-color,border-color,box-shadow,transform,translate,scale,opacity] duration-(--glyph-duration-base) ease-standard";
|
|
7
|
+
/**
|
|
8
|
+
* Enter and exit for anything Radix positions next to a trigger: springs out of the trigger
|
|
9
|
+
* (pair with the primitive's transform-origin class) and leaves quickly. Distance and scale
|
|
10
|
+
* follow the motion level; the side moves it toward the trigger.
|
|
11
|
+
*/
|
|
12
|
+
const popoverMotion = "animate-pop-in data-[state=closed]:animate-pop-out data-[side=bottom]:[--glyph-motion-y:calc(var(--glyph-motion-distance)*-1)] data-[side=top]:[--glyph-motion-y:var(--glyph-motion-distance)] data-[side=left]:[--glyph-motion-x:var(--glyph-motion-distance)] data-[side=right]:[--glyph-motion-x:calc(var(--glyph-motion-distance)*-1)]";
|
|
13
|
+
/** Popover surfaces: Select, Tooltip-like menus. */
|
|
14
|
+
const popover = `z-50 overflow-hidden rounded-[min(var(--radius-md),var(--radius-lg))] border-(length:--glyph-border-width) border-border bg-raised text-foreground shadow-lg ${popoverMotion}`;
|
|
15
|
+
/** Dimmed backdrop behind dialogs and sheets. */
|
|
16
|
+
const overlayMotion = "data-[state=open]:animate-fade-in data-[state=closed]:animate-fade-out";
|
|
17
|
+
/** Centered dialogs: rise and scale in on the theme's spring, settle out quickly. */
|
|
18
|
+
const dialogMotion = "animate-dialog-in data-[state=closed]:animate-dialog-out";
|
|
19
|
+
//#endregion
|
|
20
|
+
export { dialogMotion, focusRing, overlayMotion, popover, popoverMotion, themedBorder, transition };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VariantProps as VariantProps$1 } from "tailwind-variants";
|
|
2
2
|
//#region src/utils/tv.d.ts
|
|
3
3
|
/** `tailwind-variants` preconfigured with Glyph's merge rules. All component styles use this. */
|
|
4
|
-
declare const tv: import("tailwind-variants").TV;
|
|
4
|
+
export declare const tv: import("tailwind-variants").TV;
|
|
5
5
|
//#endregion
|
|
6
|
-
export {
|
|
6
|
+
export type { VariantProps$1 as VariantProps };
|
package/dist/utils/tv.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { twMergeConfig } from "./tw-merge-config.js";
|
|
3
|
+
import { createTV } from "tailwind-variants";
|
|
4
|
+
//#region src/utils/tv.ts
|
|
5
|
+
/** `tailwind-variants` preconfigured with Glyph's merge rules. All component styles use this. */
|
|
6
|
+
const tv = createTV({ twMergeConfig });
|
|
7
|
+
//#endregion
|
|
8
|
+
export { tv };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { textTokens } from "@glyphui/tokens";
|
|
3
|
+
//#region src/utils/tw-merge-config.ts
|
|
4
|
+
/**
|
|
5
|
+
* Teaches tailwind-merge about Glyph's custom utilities so `cn('text-h1', 'text-small')`
|
|
6
|
+
* keeps only the last size instead of treating `text-h1` as a color.
|
|
7
|
+
*/
|
|
8
|
+
const twMergeConfig = { extend: { theme: {
|
|
9
|
+
text: [...textTokens],
|
|
10
|
+
radius: ["pill"]
|
|
11
|
+
} } };
|
|
12
|
+
//#endregion
|
|
13
|
+
export { twMergeConfig };
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ColorModeOptions } from "./provider/color-mode-script.js";
|
|
2
|
+
//#region src/integrations/vite.d.ts
|
|
3
|
+
/** The subset of Vite's `Plugin` this plugin uses, so `vite` stays an optional peer. */
|
|
4
|
+
export interface GlyphVitePlugin {
|
|
5
|
+
name: string;
|
|
6
|
+
transformIndexHtml: {
|
|
7
|
+
order: 'pre';
|
|
8
|
+
handler: () => {
|
|
9
|
+
tag: 'script';
|
|
10
|
+
children: string;
|
|
11
|
+
injectTo: 'head-prepend';
|
|
12
|
+
}[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Injects Glyph's color-mode script into `index.html` so dark-mode visitors never see a
|
|
17
|
+
* light flash. Pass the same `defaultMode` and `storageKey` as `GlyphProvider`.
|
|
18
|
+
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* // vite.config.ts
|
|
21
|
+
* import { glyphColorMode } from '@glyphui/ui/vite'
|
|
22
|
+
* export default defineConfig({ plugins: [react(), tailwindcss(), glyphColorMode()] })
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function glyphColorMode(options?: ColorModeOptions): GlyphVitePlugin;
|
|
26
|
+
//#endregion
|
|
27
|
+
export type { ColorModeOptions };
|
package/dist/vite.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { getColorModeScript } from "./provider/color-mode-script.js";
|
|
3
|
+
//#region src/integrations/vite.ts
|
|
4
|
+
/**
|
|
5
|
+
* Injects Glyph's color-mode script into `index.html` so dark-mode visitors never see a
|
|
6
|
+
* light flash. Pass the same `defaultMode` and `storageKey` as `GlyphProvider`.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* // vite.config.ts
|
|
10
|
+
* import { glyphColorMode } from '@glyphui/ui/vite'
|
|
11
|
+
* export default defineConfig({ plugins: [react(), tailwindcss(), glyphColorMode()] })
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
function glyphColorMode(options = {}) {
|
|
15
|
+
const script = getColorModeScript(options);
|
|
16
|
+
return {
|
|
17
|
+
name: "glyph:color-mode",
|
|
18
|
+
transformIndexHtml: {
|
|
19
|
+
order: "pre",
|
|
20
|
+
handler: () => [{
|
|
21
|
+
tag: "script",
|
|
22
|
+
children: script,
|
|
23
|
+
injectTo: "head-prepend"
|
|
24
|
+
}]
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { glyphColorMode };
|
package/fonts.css
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Geist and Geist Mono, the fonts the default `glyph` theme uses. Import once, before the
|
|
3
|
+
* Glyph stylesheet:
|
|
4
|
+
*
|
|
5
|
+
* @import "@glyphui/ui/fonts.css";
|
|
6
|
+
* @import "tailwindcss";
|
|
7
|
+
* @import "@glyphui/ui/styles.css";
|
|
8
|
+
*/
|
|
9
|
+
@import "@fontsource-variable/geist";
|
|
10
|
+
@import "@fontsource-variable/geist-mono";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@glyphui/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "React components on Tailwind CSS v4 that take their entire look from one theme file. Forms, data tables, app layouts and async states included.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Mohak Gupta (https://github.com/khalmohak)",
|
|
@@ -24,7 +24,8 @@
|
|
|
24
24
|
"theme",
|
|
25
25
|
"dark-mode",
|
|
26
26
|
"forms",
|
|
27
|
-
"data-table"
|
|
27
|
+
"data-table",
|
|
28
|
+
"react-router"
|
|
28
29
|
],
|
|
29
30
|
"type": "module",
|
|
30
31
|
"sideEffects": [
|
|
@@ -51,25 +52,40 @@
|
|
|
51
52
|
"types": "./dist/chart.d.ts",
|
|
52
53
|
"default": "./dist/chart.js"
|
|
53
54
|
},
|
|
55
|
+
"./react-router": {
|
|
56
|
+
"@glyphui/source": "./src/integrations/react-router.tsx",
|
|
57
|
+
"types": "./dist/react-router.d.ts",
|
|
58
|
+
"default": "./dist/react-router.js"
|
|
59
|
+
},
|
|
60
|
+
"./vite": {
|
|
61
|
+
"@glyphui/source": "./src/integrations/vite.ts",
|
|
62
|
+
"types": "./dist/vite.d.ts",
|
|
63
|
+
"default": "./dist/vite.js"
|
|
64
|
+
},
|
|
54
65
|
"./styles.css": "./styles.css",
|
|
66
|
+
"./fonts.css": "./fonts.css",
|
|
55
67
|
"./package.json": "./package.json"
|
|
56
68
|
},
|
|
57
69
|
"files": [
|
|
58
70
|
"dist",
|
|
59
71
|
"src",
|
|
60
72
|
"styles.css",
|
|
73
|
+
"fonts.css",
|
|
61
74
|
"!src/**/*.test.tsx",
|
|
62
75
|
"!src/**/*.test-d.tsx",
|
|
63
76
|
"!src/test"
|
|
64
77
|
],
|
|
65
78
|
"dependencies": {
|
|
66
|
-
"@
|
|
79
|
+
"@fontsource-variable/geist": "^5.3.0",
|
|
80
|
+
"@fontsource-variable/geist-mono": "^5.3.0",
|
|
81
|
+
"@glyphui/tokens": "^0.5.0",
|
|
67
82
|
"@standard-schema/spec": "^1.1.0",
|
|
68
83
|
"clsx": "^2.1.1",
|
|
69
84
|
"cmdk": "^1.1.1",
|
|
70
85
|
"date-fns": "^4.4.0",
|
|
71
86
|
"embla-carousel-react": "^8.6.0",
|
|
72
87
|
"input-otp": "^1.5.0",
|
|
88
|
+
"motion": "14.0.0",
|
|
73
89
|
"radix-ui": "^1.6.7",
|
|
74
90
|
"react-day-picker": "^9.14.0",
|
|
75
91
|
"react-resizable-panels": "^3.0.6",
|
|
@@ -83,8 +99,10 @@
|
|
|
83
99
|
"react": ">=19",
|
|
84
100
|
"react-dom": ">=19",
|
|
85
101
|
"react-hook-form": "^7.55.0",
|
|
102
|
+
"react-router": ">=7",
|
|
86
103
|
"recharts": "^3.0.0",
|
|
87
|
-
"tailwindcss": ">=4.1"
|
|
104
|
+
"tailwindcss": ">=4.1",
|
|
105
|
+
"vite": ">=5"
|
|
88
106
|
},
|
|
89
107
|
"peerDependenciesMeta": {
|
|
90
108
|
"@hookform/resolvers": {
|
|
@@ -96,8 +114,14 @@
|
|
|
96
114
|
"react-hook-form": {
|
|
97
115
|
"optional": true
|
|
98
116
|
},
|
|
117
|
+
"react-router": {
|
|
118
|
+
"optional": true
|
|
119
|
+
},
|
|
99
120
|
"recharts": {
|
|
100
121
|
"optional": true
|
|
122
|
+
},
|
|
123
|
+
"vite": {
|
|
124
|
+
"optional": true
|
|
101
125
|
}
|
|
102
126
|
},
|
|
103
127
|
"devDependencies": {
|
|
@@ -110,13 +134,16 @@
|
|
|
110
134
|
"@testing-library/user-event": "^14.6.7",
|
|
111
135
|
"@types/react": "^19.2.18",
|
|
112
136
|
"@types/react-dom": "^19.2.7",
|
|
137
|
+
"@vitest/coverage-v8": "3.2.7",
|
|
113
138
|
"jsdom": "^27.4.0",
|
|
114
139
|
"react": "^19.2.8",
|
|
115
140
|
"react-dom": "^19.2.8",
|
|
116
141
|
"react-hook-form": "^7.89.0",
|
|
142
|
+
"react-router": "^7.18.4",
|
|
117
143
|
"recharts": "^3.10.1",
|
|
118
144
|
"tsdown": "^0.23.0",
|
|
119
145
|
"typescript": "~5.9.3",
|
|
146
|
+
"vite": "^7.3.6",
|
|
120
147
|
"vitest": "^3.2.7",
|
|
121
148
|
"zod": "^4.6.5"
|
|
122
149
|
},
|
|
@@ -128,6 +155,7 @@
|
|
|
128
155
|
"build": "tsdown",
|
|
129
156
|
"typecheck": "tsc",
|
|
130
157
|
"test": "vitest run",
|
|
131
|
-
"
|
|
158
|
+
"test:coverage": "vitest run --coverage",
|
|
159
|
+
"check:exports": "attw --pack . --profile esm-only --exclude-entrypoints ./styles.css ./fonts.css"
|
|
132
160
|
}
|
|
133
161
|
}
|
|
@@ -2,7 +2,7 @@ import type { StylesEntry } from '../../utils/registry'
|
|
|
2
2
|
import { focusRing, themedBorder, transition } from '../../utils/styles'
|
|
3
3
|
import { tv, type VariantProps } from '../../utils/tv'
|
|
4
4
|
|
|
5
|
-
export const accordionStyles = tv({
|
|
5
|
+
export const accordionStyles = /* @__PURE__ */ tv({
|
|
6
6
|
slots: {
|
|
7
7
|
root: 'w-full',
|
|
8
8
|
item: '',
|
|
@@ -3,7 +3,7 @@ import { themedBorder } from '../../utils/styles'
|
|
|
3
3
|
import { tv, type VariantProps } from '../../utils/tv'
|
|
4
4
|
|
|
5
5
|
// Soft fills per tone. Icon color is mixed toward the foreground so it stays readable in both modes.
|
|
6
|
-
export const alertStyles = tv({
|
|
6
|
+
export const alertStyles = /* @__PURE__ */ tv({
|
|
7
7
|
slots: {
|
|
8
8
|
root: ['relative flex w-full items-start gap-3 rounded-md px-4 py-3 text-small', themedBorder],
|
|
9
9
|
icon: 'mt-0.5 flex size-4 shrink-0 items-center justify-center [&>svg]:size-4',
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { StylesEntry } from '../../utils/registry'
|
|
2
|
-
import { themedBorder } from '../../utils/styles'
|
|
2
|
+
import { dialogMotion, overlayMotion, themedBorder } from '../../utils/styles'
|
|
3
3
|
import { tv } from '../../utils/tv'
|
|
4
4
|
|
|
5
|
-
export const alertDialogStyles = tv({
|
|
5
|
+
export const alertDialogStyles = /* @__PURE__ */ tv({
|
|
6
6
|
slots: {
|
|
7
|
-
overlay: 'fixed inset-0 z-50
|
|
7
|
+
overlay: ['fixed inset-0 z-50 bg-overlay', overlayMotion],
|
|
8
8
|
content: [
|
|
9
9
|
'fixed top-1/2 left-1/2 z-50 grid w-[calc(100vw-2rem)] max-w-md -translate-x-1/2 -translate-y-1/2 gap-5',
|
|
10
|
-
'rounded-xl border-border bg-surface p-6 text-foreground shadow-lg outline-none
|
|
10
|
+
'rounded-xl border-border bg-surface p-6 text-foreground shadow-lg outline-none',
|
|
11
|
+
dialogMotion,
|
|
11
12
|
themedBorder,
|
|
12
13
|
],
|
|
13
14
|
header: 'flex flex-col gap-1.5',
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AlertDialog,
|
|
3
|
+
AlertDialogAction,
|
|
4
|
+
AlertDialogCancel,
|
|
5
|
+
AlertDialogContent,
|
|
6
|
+
AlertDialogDescription,
|
|
7
|
+
AlertDialogFooter,
|
|
8
|
+
AlertDialogHeader,
|
|
9
|
+
AlertDialogTitle,
|
|
10
|
+
} from './alert-dialog'
|
|
11
|
+
import type { ConfirmOptions } from './confirm'
|
|
12
|
+
|
|
13
|
+
export interface ConfirmDialogProps {
|
|
14
|
+
open: boolean
|
|
15
|
+
options: ConfirmOptions
|
|
16
|
+
onSettle: (confirmed: boolean) => void
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** The dialog behind `useConfirm()`. Loaded lazily by ConfirmProvider. */
|
|
20
|
+
export function ConfirmDialog({ open, options, onSettle }: ConfirmDialogProps) {
|
|
21
|
+
const danger = options.tone === 'danger'
|
|
22
|
+
return (
|
|
23
|
+
<AlertDialog open={open} onOpenChange={(next) => !next && onSettle(false)}>
|
|
24
|
+
<AlertDialogContent>
|
|
25
|
+
<AlertDialogHeader>
|
|
26
|
+
<AlertDialogTitle>{options.title}</AlertDialogTitle>
|
|
27
|
+
{options.description && (
|
|
28
|
+
<AlertDialogDescription>{options.description}</AlertDialogDescription>
|
|
29
|
+
)}
|
|
30
|
+
</AlertDialogHeader>
|
|
31
|
+
<AlertDialogFooter>
|
|
32
|
+
<AlertDialogCancel onClick={() => onSettle(false)}>
|
|
33
|
+
{options.cancelLabel ?? 'Cancel'}
|
|
34
|
+
</AlertDialogCancel>
|
|
35
|
+
<AlertDialogAction tone={options.tone} onClick={() => onSettle(true)}>
|
|
36
|
+
{options.confirmLabel ?? (danger ? 'Delete' : 'Confirm')}
|
|
37
|
+
</AlertDialogAction>
|
|
38
|
+
</AlertDialogFooter>
|
|
39
|
+
</AlertDialogContent>
|
|
40
|
+
</AlertDialog>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createContext,
|
|
3
|
+
lazy,
|
|
3
4
|
type ReactNode,
|
|
5
|
+
Suspense,
|
|
4
6
|
useCallback,
|
|
5
7
|
useContext,
|
|
6
8
|
useMemo,
|
|
7
9
|
useRef,
|
|
8
10
|
useState,
|
|
9
11
|
} from 'react'
|
|
10
|
-
import {
|
|
11
|
-
AlertDialog,
|
|
12
|
-
AlertDialogAction,
|
|
13
|
-
AlertDialogCancel,
|
|
14
|
-
AlertDialogContent,
|
|
15
|
-
AlertDialogDescription,
|
|
16
|
-
AlertDialogFooter,
|
|
17
|
-
AlertDialogHeader,
|
|
18
|
-
AlertDialogTitle,
|
|
19
|
-
} from './alert-dialog'
|
|
20
12
|
|
|
21
13
|
export interface ConfirmOptions {
|
|
22
14
|
title: ReactNode
|
|
@@ -31,6 +23,11 @@ export type ConfirmFn = (options: ConfirmOptions) => Promise<boolean>
|
|
|
31
23
|
|
|
32
24
|
const ConfirmContext = createContext<ConfirmFn | null>(null)
|
|
33
25
|
|
|
26
|
+
// The dialog loads the first time confirm() is called, so apps that never confirm don't ship it.
|
|
27
|
+
const ConfirmDialog = lazy(() =>
|
|
28
|
+
import('./confirm-dialog').then((m) => ({ default: m.ConfirmDialog })),
|
|
29
|
+
)
|
|
30
|
+
|
|
34
31
|
interface Pending {
|
|
35
32
|
options: ConfirmOptions
|
|
36
33
|
resolve: (value: boolean) => void
|
|
@@ -64,31 +61,15 @@ export function ConfirmProvider({ children }: { children: ReactNode }) {
|
|
|
64
61
|
|
|
65
62
|
const value = useMemo(() => confirm, [confirm])
|
|
66
63
|
const options = pending?.options
|
|
67
|
-
const danger = options?.tone === 'danger'
|
|
68
64
|
|
|
69
65
|
return (
|
|
70
66
|
<ConfirmContext.Provider value={value}>
|
|
71
67
|
{children}
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
<
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
{options.description && (
|
|
78
|
-
<AlertDialogDescription>{options.description}</AlertDialogDescription>
|
|
79
|
-
)}
|
|
80
|
-
</AlertDialogHeader>
|
|
81
|
-
<AlertDialogFooter>
|
|
82
|
-
<AlertDialogCancel onClick={() => settle(false)}>
|
|
83
|
-
{options.cancelLabel ?? 'Cancel'}
|
|
84
|
-
</AlertDialogCancel>
|
|
85
|
-
<AlertDialogAction tone={options.tone} onClick={() => settle(true)}>
|
|
86
|
-
{options.confirmLabel ?? (danger ? 'Delete' : 'Confirm')}
|
|
87
|
-
</AlertDialogAction>
|
|
88
|
-
</AlertDialogFooter>
|
|
89
|
-
</AlertDialogContent>
|
|
90
|
-
)}
|
|
91
|
-
</AlertDialog>
|
|
68
|
+
{options && (
|
|
69
|
+
<Suspense fallback={null}>
|
|
70
|
+
<ConfirmDialog open={open} options={options} onSettle={settle} />
|
|
71
|
+
</Suspense>
|
|
72
|
+
)}
|
|
92
73
|
</ConfirmContext.Provider>
|
|
93
74
|
)
|
|
94
75
|
}
|
|
@@ -4,7 +4,7 @@ import { useComponentConfig } from '../../hooks/use-component-config'
|
|
|
4
4
|
import type { StylesEntry } from '../../utils/registry'
|
|
5
5
|
import { tv, type VariantProps } from '../../utils/tv'
|
|
6
6
|
|
|
7
|
-
export const aspectRatioStyles = tv({
|
|
7
|
+
export const aspectRatioStyles = /* @__PURE__ */ tv({
|
|
8
8
|
slots: {
|
|
9
9
|
base: 'overflow-hidden [&>img]:size-full [&>img]:object-cover [&>video]:size-full [&>video]:object-cover',
|
|
10
10
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { tv, type VariantProps } from '../../utils/tv'
|
|
2
2
|
|
|
3
|
-
export const avatarStyles = tv({
|
|
3
|
+
export const avatarStyles = /* @__PURE__ */ tv({
|
|
4
4
|
slots: {
|
|
5
5
|
root: 'relative inline-flex shrink-0 select-none items-center justify-center overflow-hidden rounded-pill bg-muted align-middle',
|
|
6
6
|
image: 'size-full object-cover',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { themedBorder } from '../../utils/styles'
|
|
2
2
|
import { tv, type VariantProps } from '../../utils/tv'
|
|
3
3
|
|
|
4
|
-
// Tinted text
|
|
4
|
+
// Tinted text uses the theme's status text colors, which stay readable on tinted backgrounds.
|
|
5
5
|
const tones = {
|
|
6
6
|
neutral: {
|
|
7
7
|
soft: 'bg-muted text-muted-foreground',
|
|
@@ -9,41 +9,36 @@ const tones = {
|
|
|
9
9
|
outline: 'border-border-strong text-foreground',
|
|
10
10
|
},
|
|
11
11
|
primary: {
|
|
12
|
-
soft: 'bg-primary/14 text-
|
|
12
|
+
soft: 'bg-primary/14 text-primary-text',
|
|
13
13
|
solid: 'bg-primary text-primary-foreground',
|
|
14
|
-
outline:
|
|
15
|
-
'border-primary/50 text-[color-mix(in_oklab,var(--color-primary)_62%,var(--color-foreground))]',
|
|
14
|
+
outline: 'border-primary/50 text-primary-text',
|
|
16
15
|
},
|
|
17
16
|
success: {
|
|
18
|
-
soft: 'bg-success/14 text-
|
|
17
|
+
soft: 'bg-success/14 text-success-text',
|
|
19
18
|
solid: 'bg-success text-success-foreground',
|
|
20
|
-
outline:
|
|
21
|
-
'border-success/50 text-[color-mix(in_oklab,var(--color-success)_62%,var(--color-foreground))]',
|
|
19
|
+
outline: 'border-success/50 text-success-text',
|
|
22
20
|
},
|
|
23
21
|
warning: {
|
|
24
|
-
soft: 'bg-warning/
|
|
22
|
+
soft: 'bg-warning/14 text-warning-text',
|
|
25
23
|
solid: 'bg-warning text-warning-foreground',
|
|
26
|
-
outline:
|
|
27
|
-
'border-warning/50 text-[color-mix(in_oklab,var(--color-warning)_62%,var(--color-foreground))]',
|
|
24
|
+
outline: 'border-warning/50 text-warning-text',
|
|
28
25
|
},
|
|
29
26
|
danger: {
|
|
30
|
-
soft: 'bg-danger/14 text-
|
|
27
|
+
soft: 'bg-danger/14 text-danger-text',
|
|
31
28
|
solid: 'bg-danger text-danger-foreground',
|
|
32
|
-
outline:
|
|
33
|
-
'border-danger/50 text-[color-mix(in_oklab,var(--color-danger)_62%,var(--color-foreground))]',
|
|
29
|
+
outline: 'border-danger/50 text-danger-text',
|
|
34
30
|
},
|
|
35
31
|
info: {
|
|
36
|
-
soft: 'bg-info/14 text-
|
|
32
|
+
soft: 'bg-info/14 text-info-text',
|
|
37
33
|
solid: 'bg-info text-info-foreground',
|
|
38
|
-
outline:
|
|
39
|
-
'border-info/50 text-[color-mix(in_oklab,var(--color-info)_62%,var(--color-foreground))]',
|
|
34
|
+
outline: 'border-info/50 text-info-text',
|
|
40
35
|
},
|
|
41
36
|
} as const
|
|
42
37
|
|
|
43
38
|
type Tone = keyof typeof tones
|
|
44
39
|
type Variant = keyof (typeof tones)[Tone]
|
|
45
40
|
|
|
46
|
-
export const badgeStyles = tv({
|
|
41
|
+
export const badgeStyles = /* @__PURE__ */ tv({
|
|
47
42
|
slots: {
|
|
48
43
|
base: [
|
|
49
44
|
'inline-flex h-5.5 w-fit shrink-0 items-center gap-1.5 whitespace-nowrap rounded-pill border-transparent px-2',
|