@adea-ai/ui 0.60.3 → 0.61.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 +108 -34
- package/dist/components/composites/account-menu/account-menu.d.ts +48 -0
- package/dist/components/composites/account-menu/account-menu.d.ts.map +1 -0
- package/dist/components/composites/account-menu/account-menu.js +119 -0
- package/dist/components/composites/account-menu/account-menu.js.map +1 -0
- package/dist/components/composites/account-menu/index.d.ts +2 -0
- package/dist/components/composites/account-menu/index.d.ts.map +1 -0
- package/dist/components/composites/list-row/index.d.ts +2 -0
- package/dist/components/composites/list-row/index.d.ts.map +1 -0
- package/dist/components/composites/list-row/list-row.d.ts +44 -0
- package/dist/components/composites/list-row/list-row.d.ts.map +1 -0
- package/dist/components/composites/list-row/list-row.js +124 -0
- package/dist/components/composites/list-row/list-row.js.map +1 -0
- package/dist/components/composites/settings/index.d.ts +2 -0
- package/dist/components/composites/settings/index.d.ts.map +1 -0
- package/dist/components/composites/settings/settings.d.ts +49 -0
- package/dist/components/composites/settings/settings.d.ts.map +1 -0
- package/dist/components/composites/settings/settings.js +148 -0
- package/dist/components/composites/settings/settings.js.map +1 -0
- package/dist/components/composites/stat/index.d.ts +2 -0
- package/dist/components/composites/stat/index.d.ts.map +1 -0
- package/dist/components/composites/stat/stat.d.ts +48 -0
- package/dist/components/composites/stat/stat.d.ts.map +1 -0
- package/dist/components/composites/stat/stat.js +148 -0
- package/dist/components/composites/stat/stat.js.map +1 -0
- package/dist/components/composites/update-dialog/index.d.ts +2 -0
- package/dist/components/composites/update-dialog/index.d.ts.map +1 -0
- package/dist/components/composites/update-dialog/update-dialog.d.ts +108 -0
- package/dist/components/composites/update-dialog/update-dialog.d.ts.map +1 -0
- package/dist/components/composites/update-dialog/update-dialog.js +452 -0
- package/dist/components/composites/update-dialog/update-dialog.js.map +1 -0
- package/dist/components/composites/workspace-mark/index.d.ts +2 -0
- package/dist/components/composites/workspace-mark/index.d.ts.map +1 -0
- package/dist/components/composites/workspace-mark/workspace-mark.d.ts +24 -0
- package/dist/components/composites/workspace-mark/workspace-mark.d.ts.map +1 -0
- package/dist/components/composites/workspace-mark/workspace-mark.js +76 -0
- package/dist/components/composites/workspace-mark/workspace-mark.js.map +1 -0
- package/dist/components/conversation/conversation-avatar.d.ts +21 -0
- package/dist/components/conversation/conversation-avatar.d.ts.map +1 -0
- package/dist/components/conversation/conversation-avatar.js +52 -0
- package/dist/components/conversation/conversation-avatar.js.map +1 -0
- package/dist/components/conversation/conversation-surface.d.ts +27 -0
- package/dist/components/conversation/conversation-surface.d.ts.map +1 -0
- package/dist/components/conversation/conversation-surface.js +118 -0
- package/dist/components/conversation/conversation-surface.js.map +1 -0
- package/dist/components/conversation/index.d.ts +6 -0
- package/dist/components/conversation/index.d.ts.map +1 -0
- package/dist/components/conversation/message-composer.d.ts +70 -0
- package/dist/components/conversation/message-composer.d.ts.map +1 -0
- package/dist/components/conversation/message-composer.js +235 -0
- package/dist/components/conversation/message-composer.js.map +1 -0
- package/dist/components/conversation/message-row.d.ts +101 -0
- package/dist/components/conversation/message-row.d.ts.map +1 -0
- package/dist/components/conversation/message-row.js +389 -0
- package/dist/components/conversation/message-row.js.map +1 -0
- package/dist/components/conversation/thread-panel.d.ts +45 -0
- package/dist/components/conversation/thread-panel.d.ts.map +1 -0
- package/dist/components/conversation/thread-panel.js +123 -0
- package/dist/components/conversation/thread-panel.js.map +1 -0
- package/dist/components/layout/app-shell/app-shell.d.ts +45 -0
- package/dist/components/layout/app-shell/app-shell.d.ts.map +1 -0
- package/dist/components/layout/app-shell/app-shell.js +89 -0
- package/dist/components/layout/app-shell/app-shell.js.map +1 -0
- package/dist/components/layout/app-shell/index.d.ts +2 -0
- package/dist/components/layout/app-shell/index.d.ts.map +1 -0
- package/dist/components/layout/page/index.d.ts +2 -0
- package/dist/components/layout/page/index.d.ts.map +1 -0
- package/dist/components/layout/page/page.d.ts +31 -0
- package/dist/components/layout/page/page.d.ts.map +1 -0
- package/dist/components/layout/page/page.js +143 -0
- package/dist/components/layout/page/page.js.map +1 -0
- package/dist/components/layout/panel/index.d.ts +2 -0
- package/dist/components/layout/panel/index.d.ts.map +1 -0
- package/dist/components/layout/panel/panel.d.ts +44 -0
- package/dist/components/layout/panel/panel.d.ts.map +1 -0
- package/dist/components/layout/panel/panel.js +151 -0
- package/dist/components/layout/panel/panel.js.map +1 -0
- package/dist/components/layout/side-rail/index.d.ts +3 -0
- package/dist/components/layout/side-rail/index.d.ts.map +1 -0
- package/dist/components/layout/side-rail/side-rail-context.d.ts +23 -0
- package/dist/components/layout/side-rail/side-rail-context.d.ts.map +1 -0
- package/dist/components/layout/side-rail/side-rail-context.js +18 -0
- package/dist/components/layout/side-rail/side-rail-context.js.map +1 -0
- package/dist/components/layout/side-rail/side-rail.d.ts +101 -0
- package/dist/components/layout/side-rail/side-rail.d.ts.map +1 -0
- package/dist/components/layout/side-rail/side-rail.js +336 -0
- package/dist/components/layout/side-rail/side-rail.js.map +1 -0
- package/dist/components/layout/sidebar-nav/index.d.ts +2 -0
- package/dist/components/layout/sidebar-nav/index.d.ts.map +1 -0
- package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts +62 -0
- package/dist/components/layout/sidebar-nav/sidebar-nav.d.ts.map +1 -0
- package/dist/components/layout/sidebar-nav/sidebar-nav.js +231 -0
- package/dist/components/layout/sidebar-nav/sidebar-nav.js.map +1 -0
- package/dist/components/layout/status-bar/index.d.ts +2 -0
- package/dist/components/layout/status-bar/index.d.ts.map +1 -0
- package/dist/components/layout/status-bar/status-bar.d.ts +23 -0
- package/dist/components/layout/status-bar/status-bar.d.ts.map +1 -0
- package/dist/components/layout/status-bar/status-bar.js +68 -0
- package/dist/components/layout/status-bar/status-bar.js.map +1 -0
- package/dist/components/layout/top-bar/index.d.ts +2 -0
- package/dist/components/layout/top-bar/index.d.ts.map +1 -0
- package/dist/components/layout/top-bar/top-bar.d.ts +59 -0
- package/dist/components/layout/top-bar/top-bar.d.ts.map +1 -0
- package/dist/components/layout/top-bar/top-bar.js +118 -0
- package/dist/components/layout/top-bar/top-bar.js.map +1 -0
- package/dist/components/motion/index.d.ts +3 -0
- package/dist/components/motion/index.d.ts.map +1 -0
- package/dist/components/motion/index.js +3 -0
- package/dist/components/motion/presence.d.ts +29 -0
- package/dist/components/motion/presence.d.ts.map +1 -0
- package/dist/components/motion/presence.js +10 -0
- package/dist/components/motion/presence.js.map +1 -0
- package/dist/components/theme/appearance-panel.d.ts +25 -0
- package/dist/components/theme/appearance-panel.d.ts.map +1 -0
- package/dist/components/theme/appearance-panel.js +162 -0
- package/dist/components/theme/appearance-panel.js.map +1 -0
- package/dist/components/theme/index.d.ts +5 -0
- package/dist/components/theme/index.d.ts.map +1 -0
- package/dist/components/theme/theme-picker.d.ts +54 -0
- package/dist/components/theme/theme-picker.d.ts.map +1 -0
- package/dist/components/theme/theme-picker.js +156 -0
- package/dist/components/theme/theme-picker.js.map +1 -0
- package/dist/components/theme/theme-provider.d.ts +130 -0
- package/dist/components/theme/theme-provider.d.ts.map +1 -0
- package/dist/components/theme/theme-provider.js +164 -0
- package/dist/components/theme/theme-provider.js.map +1 -0
- package/dist/components/theme/theme-toggle.d.ts +19 -0
- package/dist/components/theme/theme-toggle.d.ts.map +1 -0
- package/dist/components/theme/theme-toggle.js +69 -0
- package/dist/components/theme/theme-toggle.js.map +1 -0
- package/dist/components/ui/accordion/accordion.d.ts +18 -0
- package/dist/components/ui/accordion/accordion.d.ts.map +1 -0
- package/dist/components/ui/accordion/accordion.js +60 -0
- package/dist/components/ui/accordion/accordion.js.map +1 -0
- package/dist/components/ui/accordion/index.d.ts +2 -0
- package/dist/components/ui/accordion/index.d.ts.map +1 -0
- package/dist/components/ui/alert/alert.d.ts +26 -0
- package/dist/components/ui/alert/alert.d.ts.map +1 -0
- package/dist/components/ui/alert/alert.js +89 -0
- package/dist/components/ui/alert/alert.js.map +1 -0
- package/dist/components/ui/alert/index.d.ts +2 -0
- package/dist/components/ui/alert/index.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts +29 -0
- package/dist/components/ui/alert-dialog/alert-dialog.d.ts.map +1 -0
- package/dist/components/ui/alert-dialog/alert-dialog.js +155 -0
- package/dist/components/ui/alert-dialog/alert-dialog.js.map +1 -0
- package/dist/components/ui/alert-dialog/index.d.ts +2 -0
- package/dist/components/ui/alert-dialog/index.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts +22 -0
- package/dist/components/ui/aspect-ratio/aspect-ratio.d.ts.map +1 -0
- package/dist/components/ui/aspect-ratio/aspect-ratio.js +29 -0
- package/dist/components/ui/aspect-ratio/aspect-ratio.js.map +1 -0
- package/dist/components/ui/aspect-ratio/index.d.ts +2 -0
- package/dist/components/ui/aspect-ratio/index.d.ts.map +1 -0
- package/dist/components/ui/avatar/avatar.d.ts +41 -0
- package/dist/components/ui/avatar/avatar.d.ts.map +1 -0
- package/dist/components/ui/avatar/avatar.js +106 -0
- package/dist/components/ui/avatar/avatar.js.map +1 -0
- package/dist/components/ui/avatar/index.d.ts +2 -0
- package/dist/components/ui/avatar/index.d.ts.map +1 -0
- package/dist/components/ui/badge/badge.d.ts +22 -0
- package/dist/components/ui/badge/badge.d.ts.map +1 -0
- package/dist/components/ui/badge/badge.js +58 -0
- package/dist/components/ui/badge/badge.js.map +1 -0
- package/dist/components/ui/badge/index.d.ts +2 -0
- package/dist/components/ui/badge/index.d.ts.map +1 -0
- package/dist/components/ui/board/board.d.ts +78 -0
- package/dist/components/ui/board/board.d.ts.map +1 -0
- package/dist/components/ui/board/board.js +200 -0
- package/dist/components/ui/board/board.js.map +1 -0
- package/dist/components/ui/board/index.d.ts +2 -0
- package/dist/components/ui/board/index.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb/breadcrumb.d.ts +24 -0
- package/dist/components/ui/breadcrumb/breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/breadcrumb/breadcrumb.js +109 -0
- package/dist/components/ui/breadcrumb/breadcrumb.js.map +1 -0
- package/dist/components/ui/breadcrumb/index.d.ts +2 -0
- package/dist/components/ui/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/ui/button/button.d.ts +30 -0
- package/dist/components/ui/button/button.d.ts.map +1 -0
- package/dist/components/ui/button/button.js +80 -0
- package/dist/components/ui/button/button.js.map +1 -0
- package/dist/components/ui/button/index.d.ts +2 -0
- package/dist/components/ui/button/index.d.ts.map +1 -0
- package/dist/components/ui/button-group/button-group.d.ts +39 -0
- package/dist/components/ui/button-group/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group/button-group.js +63 -0
- package/dist/components/ui/button-group/button-group.js.map +1 -0
- package/dist/components/ui/button-group/index.d.ts +2 -0
- package/dist/components/ui/button-group/index.d.ts.map +1 -0
- package/dist/components/ui/calendar/calendar.d.ts +93 -0
- package/dist/components/ui/calendar/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar/calendar.js +243 -0
- package/dist/components/ui/calendar/calendar.js.map +1 -0
- package/dist/components/ui/calendar/index.d.ts +2 -0
- package/dist/components/ui/calendar/index.d.ts.map +1 -0
- package/dist/components/ui/card/card.d.ts +23 -0
- package/dist/components/ui/card/card.d.ts.map +1 -0
- package/dist/components/ui/card/card.js +98 -0
- package/dist/components/ui/card/card.js.map +1 -0
- package/dist/components/ui/card/index.d.ts +2 -0
- package/dist/components/ui/card/index.d.ts.map +1 -0
- package/dist/components/ui/carousel/carousel.d.ts +66 -0
- package/dist/components/ui/carousel/carousel.d.ts.map +1 -0
- package/dist/components/ui/carousel/carousel.js +178 -0
- package/dist/components/ui/carousel/carousel.js.map +1 -0
- package/dist/components/ui/carousel/index.d.ts +2 -0
- package/dist/components/ui/carousel/index.d.ts.map +1 -0
- package/dist/components/ui/chart/chart.d.ts +154 -0
- package/dist/components/ui/chart/chart.d.ts.map +1 -0
- package/dist/components/ui/chart/chart.js +373 -0
- package/dist/components/ui/chart/chart.js.map +1 -0
- package/dist/components/ui/chart/index.d.ts +2 -0
- package/dist/components/ui/chart/index.d.ts.map +1 -0
- package/dist/components/ui/checkbox/checkbox.d.ts +33 -0
- package/dist/components/ui/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/ui/checkbox/checkbox.js +76 -0
- package/dist/components/ui/checkbox/checkbox.js.map +1 -0
- package/dist/components/ui/checkbox/index.d.ts +2 -0
- package/dist/components/ui/checkbox/index.d.ts.map +1 -0
- package/dist/components/ui/code-block/code-block.d.ts +75 -0
- package/dist/components/ui/code-block/code-block.d.ts.map +1 -0
- package/dist/components/ui/code-block/code-block.js +186 -0
- package/dist/components/ui/code-block/code-block.js.map +1 -0
- package/dist/components/ui/code-block/index.d.ts +2 -0
- package/dist/components/ui/code-block/index.d.ts.map +1 -0
- package/dist/components/ui/collapsible/collapsible.d.ts +17 -0
- package/dist/components/ui/collapsible/collapsible.d.ts.map +1 -0
- package/dist/components/ui/collapsible/collapsible.js +38 -0
- package/dist/components/ui/collapsible/collapsible.js.map +1 -0
- package/dist/components/ui/collapsible/index.d.ts +2 -0
- package/dist/components/ui/collapsible/index.d.ts.map +1 -0
- package/dist/components/ui/combobox/combobox.d.ts +28 -0
- package/dist/components/ui/combobox/combobox.d.ts.map +1 -0
- package/dist/components/ui/combobox/combobox.js +102 -0
- package/dist/components/ui/combobox/combobox.js.map +1 -0
- package/dist/components/ui/combobox/index.d.ts +2 -0
- package/dist/components/ui/combobox/index.d.ts.map +1 -0
- package/dist/components/ui/command/command.d.ts +53 -0
- package/dist/components/ui/command/command.d.ts.map +1 -0
- package/dist/components/ui/command/command.js +137 -0
- package/dist/components/ui/command/command.js.map +1 -0
- package/dist/components/ui/command/index.d.ts +2 -0
- package/dist/components/ui/command/index.d.ts.map +1 -0
- package/dist/components/ui/context-menu/context-menu.d.ts +32 -0
- package/dist/components/ui/context-menu/context-menu.d.ts.map +1 -0
- package/dist/components/ui/context-menu/context-menu.js +119 -0
- package/dist/components/ui/context-menu/context-menu.js.map +1 -0
- package/dist/components/ui/context-menu/index.d.ts +2 -0
- package/dist/components/ui/context-menu/index.d.ts.map +1 -0
- package/dist/components/ui/detail-panel/detail-panel.d.ts +61 -0
- package/dist/components/ui/detail-panel/detail-panel.d.ts.map +1 -0
- package/dist/components/ui/detail-panel/detail-panel.js +132 -0
- package/dist/components/ui/detail-panel/detail-panel.js.map +1 -0
- package/dist/components/ui/detail-panel/index.d.ts +2 -0
- package/dist/components/ui/detail-panel/index.d.ts.map +1 -0
- package/dist/components/ui/dialog/dialog.d.ts +40 -0
- package/dist/components/ui/dialog/dialog.d.ts.map +1 -0
- package/dist/components/ui/dialog/dialog.js +125 -0
- package/dist/components/ui/dialog/dialog.js.map +1 -0
- package/dist/components/ui/dialog/index.d.ts +2 -0
- package/dist/components/ui/dialog/index.d.ts.map +1 -0
- package/dist/components/ui/diff-block/diff-block.d.ts +95 -0
- package/dist/components/ui/diff-block/diff-block.d.ts.map +1 -0
- package/dist/components/ui/diff-block/diff-block.js +230 -0
- package/dist/components/ui/diff-block/diff-block.js.map +1 -0
- package/dist/components/ui/diff-block/diff-block.test.d.ts +2 -0
- package/dist/components/ui/diff-block/diff-block.test.d.ts.map +1 -0
- package/dist/components/ui/diff-block/index.d.ts +2 -0
- package/dist/components/ui/diff-block/index.d.ts.map +1 -0
- package/dist/components/ui/drawer/drawer.d.ts +39 -0
- package/dist/components/ui/drawer/drawer.d.ts.map +1 -0
- package/dist/components/ui/drawer/drawer.js +106 -0
- package/dist/components/ui/drawer/drawer.js.map +1 -0
- package/dist/components/ui/drawer/index.d.ts +2 -0
- package/dist/components/ui/drawer/index.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts +48 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.d.ts.map +1 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.js +151 -0
- package/dist/components/ui/dropdown-menu/dropdown-menu.js.map +1 -0
- package/dist/components/ui/dropdown-menu/index.d.ts +2 -0
- package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/ui/empty/empty.d.ts +27 -0
- package/dist/components/ui/empty/empty.d.ts.map +1 -0
- package/dist/components/ui/{empty.js → empty/empty.js} +28 -23
- package/dist/components/ui/empty/empty.js.map +1 -0
- package/dist/components/ui/empty/index.d.ts +2 -0
- package/dist/components/ui/empty/index.d.ts.map +1 -0
- package/dist/components/ui/entity-icon/entity-icon.d.ts +59 -0
- package/dist/components/ui/entity-icon/entity-icon.d.ts.map +1 -0
- package/dist/components/ui/entity-icon/entity-icon.js +145 -0
- package/dist/components/ui/entity-icon/entity-icon.js.map +1 -0
- package/dist/components/ui/entity-icon/index.d.ts +2 -0
- package/dist/components/ui/entity-icon/index.d.ts.map +1 -0
- package/dist/components/ui/field/field.d.ts +39 -0
- package/dist/components/ui/field/field.d.ts.map +1 -0
- package/dist/components/ui/field/field.js +111 -0
- package/dist/components/ui/field/field.js.map +1 -0
- package/dist/components/ui/field/index.d.ts +2 -0
- package/dist/components/ui/field/index.d.ts.map +1 -0
- package/dist/components/ui/hover-card/hover-card.d.ts +17 -0
- package/dist/components/ui/hover-card/hover-card.d.ts.map +1 -0
- package/dist/components/ui/hover-card/hover-card.js +40 -0
- package/dist/components/ui/hover-card/hover-card.js.map +1 -0
- package/dist/components/ui/hover-card/index.d.ts +2 -0
- package/dist/components/ui/hover-card/index.d.ts.map +1 -0
- package/dist/components/ui/input/index.d.ts +2 -0
- package/dist/components/ui/input/index.d.ts.map +1 -0
- package/dist/components/ui/input/input.d.ts +15 -0
- package/dist/components/ui/input/input.d.ts.map +1 -0
- package/dist/components/ui/input/input.js +36 -0
- package/dist/components/ui/input/input.js.map +1 -0
- package/dist/components/ui/input-group/index.d.ts +2 -0
- package/dist/components/ui/input-group/index.d.ts.map +1 -0
- package/dist/components/ui/input-group/input-group.d.ts +34 -0
- package/dist/components/ui/input-group/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group/input-group.js +93 -0
- package/dist/components/ui/input-group/input-group.js.map +1 -0
- package/dist/components/ui/input-otp/index.d.ts +2 -0
- package/dist/components/ui/input-otp/index.d.ts.map +1 -0
- package/dist/components/ui/input-otp/input-otp.d.ts +37 -0
- package/dist/components/ui/input-otp/input-otp.d.ts.map +1 -0
- package/dist/components/ui/input-otp/input-otp.js +92 -0
- package/dist/components/ui/input-otp/input-otp.js.map +1 -0
- package/dist/components/ui/item/index.d.ts +2 -0
- package/dist/components/ui/item/index.d.ts.map +1 -0
- package/dist/components/ui/item/item.d.ts +49 -0
- package/dist/components/ui/item/item.d.ts.map +1 -0
- package/dist/components/ui/item/item.js +163 -0
- package/dist/components/ui/item/item.js.map +1 -0
- package/dist/components/ui/kbd/index.d.ts +2 -0
- package/dist/components/ui/kbd/index.d.ts.map +1 -0
- package/dist/components/ui/kbd/kbd.d.ts +14 -0
- package/dist/components/ui/kbd/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd/kbd.js +40 -0
- package/dist/components/ui/kbd/kbd.js.map +1 -0
- package/dist/components/ui/label/index.d.ts +2 -0
- package/dist/components/ui/label/index.d.ts.map +1 -0
- package/dist/components/ui/label/label.d.ts +17 -0
- package/dist/components/ui/label/label.d.ts.map +1 -0
- package/dist/components/ui/label/label.js +33 -0
- package/dist/components/ui/label/label.js.map +1 -0
- package/dist/components/ui/menubar/index.d.ts +2 -0
- package/dist/components/ui/menubar/index.d.ts.map +1 -0
- package/dist/components/ui/menubar/menubar.d.ts +38 -0
- package/dist/components/ui/menubar/menubar.d.ts.map +1 -0
- package/dist/components/ui/menubar/menubar.js +138 -0
- package/dist/components/ui/menubar/menubar.js.map +1 -0
- package/dist/components/ui/modal-dialog/index.d.ts +2 -0
- package/dist/components/ui/modal-dialog/index.d.ts.map +1 -0
- package/dist/components/ui/modal-dialog/modal-dialog.d.ts +35 -0
- package/dist/components/ui/modal-dialog/modal-dialog.d.ts.map +1 -0
- package/dist/components/ui/modal-dialog/modal-dialog.js +78 -0
- package/dist/components/ui/modal-dialog/modal-dialog.js.map +1 -0
- package/dist/components/ui/navigation-menu/index.d.ts +2 -0
- package/dist/components/ui/navigation-menu/index.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts +77 -0
- package/dist/components/ui/navigation-menu/navigation-menu.d.ts.map +1 -0
- package/dist/components/ui/navigation-menu/navigation-menu.js +116 -0
- package/dist/components/ui/navigation-menu/navigation-menu.js.map +1 -0
- package/dist/components/ui/pagination/index.d.ts +2 -0
- package/dist/components/ui/pagination/index.d.ts.map +1 -0
- package/dist/components/ui/pagination/pagination.d.ts +33 -0
- package/dist/components/ui/pagination/pagination.d.ts.map +1 -0
- package/dist/components/ui/pagination/pagination.js +92 -0
- package/dist/components/ui/pagination/pagination.js.map +1 -0
- package/dist/components/ui/popover/index.d.ts +2 -0
- package/dist/components/ui/popover/index.d.ts.map +1 -0
- package/dist/components/ui/popover/popover.d.ts +26 -0
- package/dist/components/ui/popover/popover.d.ts.map +1 -0
- package/dist/components/ui/popover/popover.js +66 -0
- package/dist/components/ui/popover/popover.js.map +1 -0
- package/dist/components/ui/progress/index.d.ts +2 -0
- package/dist/components/ui/progress/index.d.ts.map +1 -0
- package/dist/components/ui/progress/progress.d.ts +29 -0
- package/dist/components/ui/progress/progress.d.ts.map +1 -0
- package/dist/components/ui/progress/progress.js +53 -0
- package/dist/components/ui/progress/progress.js.map +1 -0
- package/dist/components/ui/radio-group/index.d.ts +2 -0
- package/dist/components/ui/radio-group/index.d.ts.map +1 -0
- package/dist/components/ui/radio-group/radio-group.d.ts +26 -0
- package/dist/components/ui/radio-group/radio-group.d.ts.map +1 -0
- package/dist/components/ui/radio-group/radio-group.js +77 -0
- package/dist/components/ui/radio-group/radio-group.js.map +1 -0
- package/dist/components/ui/resizable/index.d.ts +2 -0
- package/dist/components/ui/resizable/index.d.ts.map +1 -0
- package/dist/components/ui/resizable/resizable.d.ts +33 -0
- package/dist/components/ui/resizable/resizable.d.ts.map +1 -0
- package/dist/components/ui/resizable/resizable.js +57 -0
- package/dist/components/ui/resizable/resizable.js.map +1 -0
- package/dist/components/ui/scroll-area/index.d.ts +2 -0
- package/dist/components/ui/scroll-area/index.d.ts.map +1 -0
- package/dist/components/ui/scroll-area/scroll-area.d.ts +26 -0
- package/dist/components/ui/scroll-area/scroll-area.d.ts.map +1 -0
- package/dist/components/ui/scroll-area/scroll-area.js +36 -0
- package/dist/components/ui/scroll-area/scroll-area.js.map +1 -0
- package/dist/components/ui/select/index.d.ts +2 -0
- package/dist/components/ui/select/index.d.ts.map +1 -0
- package/dist/components/ui/select/select.d.ts +63 -0
- package/dist/components/ui/select/select.d.ts.map +1 -0
- package/dist/components/ui/select/select.js +142 -0
- package/dist/components/ui/select/select.js.map +1 -0
- package/dist/components/ui/separator/index.d.ts +2 -0
- package/dist/components/ui/separator/index.d.ts.map +1 -0
- package/dist/components/ui/separator/separator.d.ts +17 -0
- package/dist/components/ui/separator/separator.d.ts.map +1 -0
- package/dist/components/ui/separator/separator.js +24 -0
- package/dist/components/ui/separator/separator.js.map +1 -0
- package/dist/components/ui/sheet/index.d.ts +2 -0
- package/dist/components/ui/sheet/index.d.ts.map +1 -0
- package/dist/components/ui/sheet/sheet.d.ts +32 -0
- package/dist/components/ui/sheet/sheet.d.ts.map +1 -0
- package/dist/components/ui/sheet/sheet.js +118 -0
- package/dist/components/ui/sheet/sheet.js.map +1 -0
- package/dist/components/ui/skeleton/index.d.ts +2 -0
- package/dist/components/ui/skeleton/index.d.ts.map +1 -0
- package/dist/components/ui/skeleton/skeleton.d.ts +15 -0
- package/dist/components/ui/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/ui/skeleton/skeleton.js +31 -0
- package/dist/components/ui/skeleton/skeleton.js.map +1 -0
- package/dist/components/ui/slider/index.d.ts +2 -0
- package/dist/components/ui/slider/index.d.ts.map +1 -0
- package/dist/components/ui/slider/slider.d.ts +22 -0
- package/dist/components/ui/slider/slider.d.ts.map +1 -0
- package/dist/components/ui/slider/slider.js +59 -0
- package/dist/components/ui/slider/slider.js.map +1 -0
- package/dist/components/ui/spinner/index.d.ts +2 -0
- package/dist/components/ui/spinner/index.d.ts.map +1 -0
- package/dist/components/ui/spinner/spinner.d.ts +25 -0
- package/dist/components/ui/spinner/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner/spinner.js +57 -0
- package/dist/components/ui/spinner/spinner.js.map +1 -0
- package/dist/components/ui/status-chip/index.d.ts +2 -0
- package/dist/components/ui/status-chip/index.d.ts.map +1 -0
- package/dist/components/ui/status-chip/status-chip.d.ts +70 -0
- package/dist/components/ui/status-chip/status-chip.d.ts.map +1 -0
- package/dist/components/ui/status-chip/status-chip.js +140 -0
- package/dist/components/ui/status-chip/status-chip.js.map +1 -0
- package/dist/components/ui/switch/index.d.ts +2 -0
- package/dist/components/ui/switch/index.d.ts.map +1 -0
- package/dist/components/ui/switch/switch.d.ts +36 -0
- package/dist/components/ui/switch/switch.d.ts.map +1 -0
- package/dist/components/ui/switch/switch.js +74 -0
- package/dist/components/ui/switch/switch.js.map +1 -0
- package/dist/components/ui/table/index.d.ts +2 -0
- package/dist/components/ui/table/index.d.ts.map +1 -0
- package/dist/components/ui/table/table.d.ts +29 -0
- package/dist/components/ui/table/table.d.ts.map +1 -0
- package/dist/components/ui/table/table.js +129 -0
- package/dist/components/ui/table/table.js.map +1 -0
- package/dist/components/ui/tabs/index.d.ts +2 -0
- package/dist/components/ui/tabs/index.d.ts.map +1 -0
- package/dist/components/ui/tabs/tabs.d.ts +23 -0
- package/dist/components/ui/tabs/tabs.d.ts.map +1 -0
- package/dist/components/ui/tabs/tabs.js +43 -0
- package/dist/components/ui/tabs/tabs.js.map +1 -0
- package/dist/components/ui/textarea/index.d.ts +2 -0
- package/dist/components/ui/textarea/index.d.ts.map +1 -0
- package/dist/components/ui/textarea/textarea.d.ts +14 -0
- package/dist/components/ui/textarea/textarea.d.ts.map +1 -0
- package/dist/components/ui/textarea/textarea.js +30 -0
- package/dist/components/ui/textarea/textarea.js.map +1 -0
- package/dist/components/ui/toast/index.d.ts +2 -0
- package/dist/components/ui/toast/index.d.ts.map +1 -0
- package/dist/components/ui/toast/toast.d.ts +68 -0
- package/dist/components/ui/toast/toast.d.ts.map +1 -0
- package/dist/components/ui/toast/toast.js +186 -0
- package/dist/components/ui/toast/toast.js.map +1 -0
- package/dist/components/ui/toggle/index.d.ts +2 -0
- package/dist/components/ui/toggle/index.d.ts.map +1 -0
- package/dist/components/ui/toggle/toggle.d.ts +22 -0
- package/dist/components/ui/toggle/toggle.d.ts.map +1 -0
- package/dist/components/ui/toggle/toggle.js +64 -0
- package/dist/components/ui/toggle/toggle.js.map +1 -0
- package/dist/components/ui/toggle-group/index.d.ts +2 -0
- package/dist/components/ui/toggle-group/index.d.ts.map +1 -0
- package/dist/components/ui/toggle-group/toggle-group.d.ts +35 -0
- package/dist/components/ui/toggle-group/toggle-group.d.ts.map +1 -0
- package/dist/components/ui/toggle-group/toggle-group.js +38 -0
- package/dist/components/ui/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/ui/tooltip/index.d.ts +2 -0
- package/dist/components/ui/tooltip/index.d.ts.map +1 -0
- package/dist/components/ui/tooltip/tooltip.d.ts +18 -0
- package/dist/components/ui/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/ui/tooltip/tooltip.js +67 -0
- package/dist/components/ui/tooltip/tooltip.js.map +1 -0
- package/dist/index.d.ts +96 -19
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +90 -20
- package/dist/lib/keyed-rows.d.ts +36 -0
- package/dist/lib/keyed-rows.d.ts.map +1 -0
- package/dist/lib/keyed-rows.js +53 -0
- package/dist/lib/keyed-rows.js.map +1 -0
- package/dist/lib/keyed-rows.test.d.ts +2 -0
- package/dist/lib/keyed-rows.test.d.ts.map +1 -0
- package/dist/lib/overlay.d.ts +44 -0
- package/dist/lib/overlay.d.ts.map +1 -0
- package/dist/lib/overlay.js +57 -0
- package/dist/lib/overlay.js.map +1 -0
- package/dist/lib/themes.d.ts +197 -0
- package/dist/lib/themes.d.ts.map +1 -0
- package/dist/lib/themes.js +303 -0
- package/dist/lib/themes.js.map +1 -0
- package/dist/lib/tokens.d.ts +103 -0
- package/dist/lib/tokens.d.ts.map +1 -0
- package/dist/lib/tokens.js +805 -0
- package/dist/lib/tokens.js.map +1 -0
- package/dist/lib/utils.d.ts +27 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +61 -3
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/variants.d.ts +57 -0
- package/dist/lib/variants.d.ts.map +1 -0
- package/dist/lib/variants.js +49 -0
- package/dist/lib/variants.js.map +1 -0
- package/dist/lib/version-notes.d.ts +24 -0
- package/dist/lib/version-notes.d.ts.map +1 -0
- package/dist/lib/version-notes.js +41 -1
- package/dist/lib/version-notes.js.map +1 -0
- package/dist/r/accordion.json +23 -0
- package/dist/r/account-menu.json +25 -0
- package/dist/r/alert-dialog.json +22 -0
- package/dist/r/alert.json +22 -0
- package/dist/r/app-shell.json +20 -0
- package/dist/r/aspect-ratio.json +20 -0
- package/dist/r/avatar.json +20 -0
- package/dist/r/badge.json +22 -0
- package/dist/r/board.json +20 -0
- package/dist/r/breadcrumb.json +22 -0
- package/dist/r/button-group.json +22 -0
- package/dist/r/button.json +22 -0
- package/dist/r/calendar.json +25 -0
- package/dist/r/card.json +20 -0
- package/dist/r/carousel.json +26 -0
- package/dist/r/chart.json +23 -0
- package/dist/r/checkbox.json +23 -0
- package/dist/r/code-block.json +24 -0
- package/dist/r/collapsible.json +22 -0
- package/dist/r/combobox.json +23 -0
- package/dist/r/command.json +23 -0
- package/dist/r/context-menu.json +23 -0
- package/dist/r/conversation.json +48 -0
- package/dist/r/detail-panel.json +24 -0
- package/dist/r/dialog.json +23 -0
- package/dist/r/diff-block.json +20 -0
- package/dist/r/drawer.json +22 -0
- package/dist/r/dropdown-menu.json +23 -0
- package/dist/r/empty.json +20 -0
- package/dist/r/entity-icon.json +20 -0
- package/dist/r/field.json +22 -0
- package/dist/r/hover-card.json +22 -0
- package/dist/r/input-group.json +20 -0
- package/dist/r/input-otp.json +22 -0
- package/dist/r/input.json +20 -0
- package/dist/r/item.json +20 -0
- package/dist/r/kbd.json +20 -0
- package/dist/r/label.json +20 -0
- package/dist/r/list-row.json +22 -0
- package/dist/r/menubar.json +23 -0
- package/dist/r/modal-dialog.json +22 -0
- package/dist/r/navigation-menu.json +23 -0
- package/dist/r/page.json +20 -0
- package/dist/r/pagination.json +23 -0
- package/dist/r/panel.json +20 -0
- package/dist/r/popover.json +22 -0
- package/dist/r/progress.json +22 -0
- package/dist/r/radio-group.json +23 -0
- package/dist/r/registry.json +1676 -0
- package/dist/r/resizable.json +23 -0
- package/dist/r/scroll-area.json +20 -0
- package/dist/r/select.json +23 -0
- package/dist/r/separator.json +22 -0
- package/dist/r/settings.json +20 -0
- package/dist/r/sheet.json +25 -0
- package/dist/r/side-rail.json +27 -0
- package/dist/r/sidebar-nav.json +23 -0
- package/dist/r/skeleton.json +20 -0
- package/dist/r/slider.json +22 -0
- package/dist/r/spinner.json +22 -0
- package/dist/r/stat.json +22 -0
- package/dist/r/status-bar.json +20 -0
- package/dist/r/status-chip.json +22 -0
- package/dist/r/switch.json +22 -0
- package/dist/r/table.json +20 -0
- package/dist/r/tabs.json +22 -0
- package/dist/r/textarea.json +20 -0
- package/dist/r/theme.json +36 -0
- package/dist/r/toast.json +23 -0
- package/dist/r/toggle-group.json +24 -0
- package/dist/r/toggle.json +22 -0
- package/dist/r/tooltip.json +22 -0
- package/dist/r/top-bar.json +20 -0
- package/dist/r/update-dialog.json +27 -0
- package/dist/r/workspace-mark.json +22 -0
- package/package.json +75 -21
- package/registry.json +1676 -0
- package/src/components/composites/account-menu/account-menu.tsx +150 -0
- package/src/components/composites/account-menu/index.ts +1 -0
- package/src/components/composites/list-row/index.ts +1 -0
- package/src/components/composites/list-row/list-row.tsx +116 -0
- package/src/components/composites/settings/index.ts +1 -0
- package/src/components/composites/settings/settings.tsx +142 -0
- package/src/components/composites/stat/index.ts +9 -0
- package/src/components/composites/stat/stat.tsx +155 -0
- package/src/components/composites/update-dialog/index.ts +7 -0
- package/src/components/composites/update-dialog/update-dialog.tsx +529 -0
- package/src/components/composites/workspace-mark/index.ts +1 -0
- package/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
- package/src/components/conversation/conversation-avatar.tsx +60 -0
- package/src/components/conversation/conversation-surface.tsx +107 -0
- package/src/components/conversation/index.ts +25 -0
- package/src/components/conversation/message-composer.tsx +239 -0
- package/src/components/conversation/message-row.tsx +387 -0
- package/src/components/conversation/thread-panel.tsx +141 -0
- package/src/components/layout/app-shell/app-shell.tsx +92 -0
- package/src/components/layout/app-shell/index.ts +1 -0
- package/src/components/layout/page/index.ts +9 -0
- package/src/components/layout/page/page.tsx +122 -0
- package/src/components/layout/panel/index.ts +12 -0
- package/src/components/layout/panel/panel.tsx +166 -0
- package/src/components/layout/side-rail/index.ts +12 -0
- package/src/components/layout/side-rail/side-rail-context.ts +42 -0
- package/src/components/layout/side-rail/side-rail.tsx +405 -0
- package/src/components/layout/sidebar-nav/index.ts +14 -0
- package/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
- package/src/components/layout/status-bar/index.ts +1 -0
- package/src/components/layout/status-bar/status-bar.tsx +73 -0
- package/src/components/layout/top-bar/index.ts +10 -0
- package/src/components/layout/top-bar/top-bar.tsx +166 -0
- package/src/components/motion/index.ts +2 -0
- package/src/components/motion/presence.tsx +32 -0
- package/src/components/theme/appearance-panel.tsx +179 -0
- package/src/components/theme/index.ts +22 -0
- package/src/components/theme/theme-picker.tsx +174 -0
- package/src/components/theme/theme-provider.tsx +309 -0
- package/src/components/theme/theme-toggle.tsx +64 -0
- package/src/components/ui/accordion/accordion.tsx +66 -0
- package/src/components/ui/accordion/index.ts +1 -0
- package/src/components/ui/alert/alert.tsx +95 -0
- package/src/components/ui/alert/index.ts +1 -0
- package/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
- package/src/components/ui/alert-dialog/index.ts +13 -0
- package/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
- package/src/components/ui/aspect-ratio/index.ts +1 -0
- package/src/components/ui/avatar/avatar.tsx +114 -0
- package/src/components/ui/avatar/index.ts +9 -0
- package/src/components/ui/badge/badge.tsx +59 -0
- package/src/components/ui/badge/index.ts +1 -0
- package/src/components/ui/board/board.tsx +254 -0
- package/src/components/ui/board/index.ts +10 -0
- package/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
- package/src/components/ui/breadcrumb/index.ts +9 -0
- package/src/components/ui/button/button.tsx +89 -0
- package/src/components/ui/button/index.ts +1 -0
- package/src/components/ui/button-group/button-group.tsx +92 -0
- package/src/components/ui/button-group/index.ts +6 -0
- package/src/components/ui/calendar/calendar.tsx +277 -0
- package/src/components/ui/calendar/index.ts +1 -0
- package/src/components/ui/card/card.tsx +82 -0
- package/src/components/ui/card/index.ts +10 -0
- package/src/components/ui/carousel/carousel.tsx +209 -0
- package/src/components/ui/carousel/index.ts +1 -0
- package/src/components/ui/chart/chart.tsx +413 -0
- package/src/components/ui/chart/index.ts +17 -0
- package/src/components/ui/checkbox/checkbox.tsx +99 -0
- package/src/components/ui/checkbox/index.ts +1 -0
- package/src/components/ui/code-block/code-block.tsx +238 -0
- package/src/components/ui/code-block/index.ts +1 -0
- package/src/components/ui/collapsible/collapsible.tsx +54 -0
- package/src/components/ui/collapsible/index.ts +1 -0
- package/src/components/ui/combobox/combobox.tsx +142 -0
- package/src/components/ui/combobox/index.ts +10 -0
- package/src/components/ui/command/command.tsx +214 -0
- package/src/components/ui/command/index.ts +12 -0
- package/src/components/ui/context-menu/context-menu.tsx +163 -0
- package/src/components/ui/context-menu/index.ts +15 -0
- package/src/components/ui/detail-panel/detail-panel.tsx +161 -0
- package/src/components/ui/detail-panel/index.ts +9 -0
- package/src/components/ui/dialog/dialog.tsx +138 -0
- package/src/components/ui/dialog/index.ts +14 -0
- package/src/components/ui/diff-block/diff-block.tsx +286 -0
- package/src/components/ui/diff-block/index.ts +11 -0
- package/src/components/ui/drawer/drawer.tsx +144 -0
- package/src/components/ui/drawer/index.ts +13 -0
- package/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
- package/src/components/ui/dropdown-menu/index.ts +18 -0
- package/src/components/ui/empty/empty.tsx +104 -0
- package/src/components/ui/empty/index.ts +10 -0
- package/src/components/ui/entity-icon/entity-icon.tsx +154 -0
- package/src/components/ui/entity-icon/index.ts +1 -0
- package/src/components/ui/field/field.tsx +131 -0
- package/src/components/ui/field/index.ts +11 -0
- package/src/components/ui/hover-card/hover-card.tsx +48 -0
- package/src/components/ui/hover-card/index.ts +1 -0
- package/src/components/ui/input/index.ts +1 -0
- package/src/components/ui/input/input.tsx +41 -0
- package/src/components/ui/input-group/index.ts +8 -0
- package/src/components/ui/input-group/input-group.tsx +111 -0
- package/src/components/ui/input-otp/index.ts +1 -0
- package/src/components/ui/input-otp/input-otp.tsx +108 -0
- package/src/components/ui/item/index.ts +10 -0
- package/src/components/ui/item/item.tsx +146 -0
- package/src/components/ui/kbd/index.ts +1 -0
- package/src/components/ui/kbd/kbd.tsx +42 -0
- package/src/components/ui/label/index.ts +1 -0
- package/src/components/ui/label/label.tsx +36 -0
- package/src/components/ui/menubar/index.ts +16 -0
- package/src/components/ui/menubar/menubar.tsx +190 -0
- package/src/components/ui/modal-dialog/index.ts +1 -0
- package/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
- package/src/components/ui/navigation-menu/index.ts +13 -0
- package/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
- package/src/components/ui/pagination/index.ts +8 -0
- package/src/components/ui/pagination/pagination.tsx +144 -0
- package/src/components/ui/popover/index.ts +10 -0
- package/src/components/ui/popover/popover.tsx +81 -0
- package/src/components/ui/progress/index.ts +1 -0
- package/src/components/ui/progress/progress.tsx +67 -0
- package/src/components/ui/radio-group/index.ts +1 -0
- package/src/components/ui/radio-group/radio-group.tsx +78 -0
- package/src/components/ui/resizable/index.ts +6 -0
- package/src/components/ui/resizable/resizable.tsx +74 -0
- package/src/components/ui/scroll-area/index.ts +1 -0
- package/src/components/ui/scroll-area/scroll-area.tsx +66 -0
- package/src/components/ui/select/index.ts +11 -0
- package/src/components/ui/select/select.tsx +188 -0
- package/src/components/ui/separator/index.ts +1 -0
- package/src/components/ui/separator/separator.tsx +40 -0
- package/src/components/ui/sheet/index.ts +13 -0
- package/src/components/ui/sheet/sheet.tsx +132 -0
- package/src/components/ui/skeleton/index.ts +1 -0
- package/src/components/ui/skeleton/skeleton.tsx +28 -0
- package/src/components/ui/slider/index.ts +1 -0
- package/src/components/ui/slider/slider.tsx +81 -0
- package/src/components/ui/spinner/index.ts +1 -0
- package/src/components/ui/spinner/spinner.tsx +58 -0
- package/src/components/ui/status-chip/index.ts +8 -0
- package/src/components/ui/status-chip/status-chip.tsx +142 -0
- package/src/components/ui/switch/index.ts +1 -0
- package/src/components/ui/switch/switch.tsx +100 -0
- package/src/components/ui/table/index.ts +11 -0
- package/src/components/ui/table/table.tsx +125 -0
- package/src/components/ui/tabs/index.ts +8 -0
- package/src/components/ui/tabs/tabs.tsx +77 -0
- package/src/components/ui/textarea/index.ts +1 -0
- package/src/components/ui/textarea/textarea.tsx +36 -0
- package/src/components/ui/toast/index.ts +1 -0
- package/src/components/ui/toast/toast.tsx +220 -0
- package/src/components/ui/toggle/index.ts +1 -0
- package/src/components/ui/toggle/toggle.tsx +60 -0
- package/src/components/ui/toggle-group/index.ts +6 -0
- package/src/components/ui/toggle-group/toggle-group.tsx +66 -0
- package/src/components/ui/tooltip/index.ts +9 -0
- package/src/components/ui/tooltip/tooltip.tsx +102 -0
- package/src/index.ts +154 -0
- package/src/lib/keyed-rows.ts +68 -0
- package/src/lib/overlay.ts +70 -0
- package/src/lib/themes.ts +490 -0
- package/src/lib/tokens.ts +688 -0
- package/src/lib/utils.ts +74 -4
- package/src/lib/variants.ts +62 -0
- package/src/lib/version-notes.ts +35 -0
- package/src/styles/base.css +489 -484
- package/src/styles/fonts.css +26 -0
- package/src/styles/globals.css +14 -3
- package/src/styles/theme.css +838 -229
- package/LICENSE +0 -201
- package/dist/components/account-drawer.d.ts +0 -11
- package/dist/components/account-drawer.js +0 -120
- package/dist/components/appearance.d.ts +0 -261
- package/dist/components/appearance.js +0 -802
- package/dist/components/on-screen-controls.d.ts +0 -8
- package/dist/components/on-screen-controls.js +0 -162
- package/dist/components/scene-settings.d.ts +0 -33
- package/dist/components/scene-settings.js +0 -253
- package/dist/components/theme-preview.d.ts +0 -40
- package/dist/components/theme-preview.js +0 -210
- package/dist/components/theme-provider.d.ts +0 -52
- package/dist/components/theme-provider.js +0 -128
- package/dist/components/theme-swatch.d.ts +0 -12
- package/dist/components/theme-swatch.js +0 -66
- package/dist/components/theme-toggle.d.ts +0 -7
- package/dist/components/theme-toggle.js +0 -64
- package/dist/components/ui/badge.d.ts +0 -8
- package/dist/components/ui/badge.js +0 -34
- package/dist/components/ui/button.d.ts +0 -9
- package/dist/components/ui/button.js +0 -52
- package/dist/components/ui/card.d.ts +0 -4
- package/dist/components/ui/card.js +0 -28
- package/dist/components/ui/dialog.d.ts +0 -15
- package/dist/components/ui/dialog.js +0 -104
- package/dist/components/ui/drawer.d.ts +0 -24
- package/dist/components/ui/drawer.js +0 -120
- package/dist/components/ui/dropdown-menu.d.ts +0 -35
- package/dist/components/ui/dropdown-menu.js +0 -180
- package/dist/components/ui/empty.d.ts +0 -12
- package/dist/components/ui/field.d.ts +0 -25
- package/dist/components/ui/field.js +0 -188
- package/dist/components/ui/input.d.ts +0 -3
- package/dist/components/ui/input.js +0 -22
- package/dist/components/ui/label.d.ts +0 -3
- package/dist/components/ui/label.js +0 -17
- package/dist/components/ui/radio-group.d.ts +0 -5
- package/dist/components/ui/radio-group.js +0 -39
- package/dist/components/ui/separator.d.ts +0 -7
- package/dist/components/ui/separator.js +0 -20
- package/dist/components/ui/skeleton.d.ts +0 -3
- package/dist/components/ui/skeleton.js +0 -17
- package/dist/components/ui/spinner.d.ts +0 -5
- package/dist/components/ui/spinner.js +0 -17
- package/dist/components/ui/switch.d.ts +0 -8
- package/dist/components/ui/switch.js +0 -59
- package/dist/components/ui/tabs.d.ts +0 -11
- package/dist/components/ui/tabs.js +0 -57
- package/dist/components/ui/toggle-group.d.ts +0 -13
- package/dist/components/ui/toggle-group.js +0 -95
- package/dist/components/ui/toggle.d.ts +0 -10
- package/dist/components/ui/toggle.js +0 -41
- package/dist/components/ui/tooltip.d.ts +0 -15
- package/dist/components/ui/tooltip.js +0 -55
- package/dist/components/version-dialog.d.ts +0 -25
- package/dist/components/version-dialog.js +0 -330
- package/dist/components/workspace-brand.d.ts +0 -5
- package/dist/components/workspace-brand.js +0 -13
- package/dist/components/workspace-logo.d.ts +0 -3
- package/dist/components/workspace-logo.js +0 -17
- package/src/components/account-drawer.tsx +0 -114
- package/src/components/appearance.ts +0 -1112
- package/src/components/on-screen-controls.tsx +0 -149
- package/src/components/scene-settings.tsx +0 -199
- package/src/components/theme-preview.tsx +0 -170
- package/src/components/theme-provider.tsx +0 -214
- package/src/components/theme-swatch.tsx +0 -49
- package/src/components/theme-toggle.tsx +0 -48
- package/src/components/ui/badge.tsx +0 -40
- package/src/components/ui/button.tsx +0 -58
- package/src/components/ui/card.tsx +0 -21
- package/src/components/ui/dialog.tsx +0 -132
- package/src/components/ui/drawer.tsx +0 -168
- package/src/components/ui/dropdown-menu.tsx +0 -235
- package/src/components/ui/empty.tsx +0 -97
- package/src/components/ui/field.tsx +0 -220
- package/src/components/ui/input.tsx +0 -20
- package/src/components/ui/label.tsx +0 -19
- package/src/components/ui/radio-group.tsx +0 -41
- package/src/components/ui/separator.tsx +0 -28
- package/src/components/ui/skeleton.tsx +0 -16
- package/src/components/ui/spinner.tsx +0 -20
- package/src/components/ui/switch.tsx +0 -59
- package/src/components/ui/tabs.tsx +0 -76
- package/src/components/ui/toggle-group.tsx +0 -98
- package/src/components/ui/toggle.tsx +0 -42
- package/src/components/ui/tooltip.tsx +0 -61
- package/src/components/version-dialog.tsx +0 -368
- package/src/components/workspace-brand.tsx +0 -18
- package/src/components/workspace-logo.tsx +0 -21
- package/src/index.tsx +0 -53
- package/src/styles/auth-shell.css +0 -167
- package/src/styles/conventional-workspace.css +0 -2858
- package/src/styles/dev-view.css +0 -899
- package/src/styles/workspace-shell.css +0 -82
- package/tsconfig.json +0 -11
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { ChevronRight, MoreHorizontal } from 'lucide-solid'
|
|
2
|
+
import type { ComponentProps } from 'solid-js'
|
|
3
|
+
import { Show, splitProps } from 'solid-js'
|
|
4
|
+
import { cn } from '#lib/utils'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Breadcrumb.
|
|
8
|
+
*
|
|
9
|
+
* The path to the current view, in a real `<nav>` wrapping an ordered list so
|
|
10
|
+
* the structure is announced rather than read as loose text. The final crumb is
|
|
11
|
+
* the current page and is marked `aria-current="page"` instead of being a link
|
|
12
|
+
* to itself.
|
|
13
|
+
*
|
|
14
|
+
* A long path collapses from the middle: the root says where the user started
|
|
15
|
+
* and the last crumbs say what they are looking at, so those are the parts that
|
|
16
|
+
* have to survive.
|
|
17
|
+
*/
|
|
18
|
+
export function Breadcrumb(props: ComponentProps<'nav'>) {
|
|
19
|
+
const [local, rest] = splitProps(props, ['class', 'aria-label'])
|
|
20
|
+
|
|
21
|
+
return (
|
|
22
|
+
<nav
|
|
23
|
+
data-slot="breadcrumb"
|
|
24
|
+
aria-label={local['aria-label'] ?? 'Breadcrumb'}
|
|
25
|
+
class={cn('text-muted-foreground', local.class)}
|
|
26
|
+
{...rest}
|
|
27
|
+
/>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function BreadcrumbList(props: ComponentProps<'ol'>) {
|
|
32
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
33
|
+
return (
|
|
34
|
+
<ol
|
|
35
|
+
data-slot="breadcrumb-list"
|
|
36
|
+
class={cn('flex flex-wrap items-center gap-1.5 text-sm break-words', local.class)}
|
|
37
|
+
{...rest}
|
|
38
|
+
/>
|
|
39
|
+
)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export function BreadcrumbItem(props: ComponentProps<'li'>) {
|
|
43
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
44
|
+
return (
|
|
45
|
+
<li
|
|
46
|
+
data-slot="breadcrumb-item"
|
|
47
|
+
class={cn('inline-flex items-center gap-1.5', local.class)}
|
|
48
|
+
{...rest}
|
|
49
|
+
/>
|
|
50
|
+
)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export type BreadcrumbLinkProps = ComponentProps<'a'> & {
|
|
54
|
+
/** Render as the current page rather than as a link. */
|
|
55
|
+
current?: boolean
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export function BreadcrumbLink(props: BreadcrumbLinkProps) {
|
|
59
|
+
const [local, rest] = splitProps(props, ['class', 'current'])
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<Show
|
|
63
|
+
when={!local.current}
|
|
64
|
+
fallback={
|
|
65
|
+
<span
|
|
66
|
+
data-slot="breadcrumb-page"
|
|
67
|
+
aria-current="page"
|
|
68
|
+
class={cn('font-medium text-foreground', local.class)}
|
|
69
|
+
{...(rest as ComponentProps<'span'>)}
|
|
70
|
+
/>
|
|
71
|
+
}
|
|
72
|
+
>
|
|
73
|
+
<a
|
|
74
|
+
data-slot="breadcrumb-link"
|
|
75
|
+
class={cn(
|
|
76
|
+
'rounded-sm transition-colors ease-out outline-none hover:text-foreground',
|
|
77
|
+
'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',
|
|
78
|
+
local.class
|
|
79
|
+
)}
|
|
80
|
+
{...rest}
|
|
81
|
+
/>
|
|
82
|
+
</Show>
|
|
83
|
+
)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function BreadcrumbSeparator(props: ComponentProps<'li'>) {
|
|
87
|
+
const [local, rest] = splitProps(props, ['class', 'children'])
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<li
|
|
91
|
+
data-slot="breadcrumb-separator"
|
|
92
|
+
role="presentation"
|
|
93
|
+
aria-hidden="true"
|
|
94
|
+
class={cn('[&_svg]:size-3.5', local.class)}
|
|
95
|
+
{...rest}
|
|
96
|
+
>
|
|
97
|
+
{local.children ?? <ChevronRight />}
|
|
98
|
+
</li>
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export function BreadcrumbEllipsis(props: ComponentProps<'span'>) {
|
|
103
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<span
|
|
107
|
+
data-slot="breadcrumb-ellipsis"
|
|
108
|
+
role="presentation"
|
|
109
|
+
aria-hidden="true"
|
|
110
|
+
class={cn('flex size-6 items-center justify-center', local.class)}
|
|
111
|
+
{...rest}
|
|
112
|
+
>
|
|
113
|
+
<MoreHorizontal class="size-4" />
|
|
114
|
+
<span class="visually-hidden">More</span>
|
|
115
|
+
</span>
|
|
116
|
+
)
|
|
117
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Polymorphic, type PolymorphicProps } from '@kobalte/core/polymorphic'
|
|
2
|
+
import { type ComponentProps, splitProps, type ValidComponent } from 'solid-js'
|
|
3
|
+
import { cva, controlInteractive, controlSize, type VariantProps } from '#lib/variants'
|
|
4
|
+
import { cn } from '#lib/utils'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Button.
|
|
8
|
+
*
|
|
9
|
+
* One appearance ladder shared by every pressable thing in the system: a
|
|
10
|
+
* button, a toolbar control, a dialog action, and a menu row all draw from the
|
|
11
|
+
* same tokens, so a row of them cannot drift apart.
|
|
12
|
+
*
|
|
13
|
+
* The variants answer "what is this for", never "what colour is it". A caller
|
|
14
|
+
* that wants a red button writes `variant="destructive"`; the red lives here.
|
|
15
|
+
* That is also what lets the design-system linter tell a caller which variant
|
|
16
|
+
* to use instead of only which class was wrong.
|
|
17
|
+
*
|
|
18
|
+
* Polymorphic: pass `as="a"` (or any component) and the button becomes it
|
|
19
|
+
* while keeping the same styling contract. This replaces the React-era
|
|
20
|
+
* `asChild` primitive, which has no Solid equivalent that preserves props.
|
|
21
|
+
*/
|
|
22
|
+
export const buttonVariants = cva(
|
|
23
|
+
`${controlInteractive} inline-flex shrink-0 items-center justify-center rounded-md font-medium whitespace-nowrap select-none [&_svg]:pointer-events-none [&_svg]:shrink-0`,
|
|
24
|
+
{
|
|
25
|
+
variants: {
|
|
26
|
+
variant: {
|
|
27
|
+
/** The one primary action in a view. */
|
|
28
|
+
default: 'bg-primary text-primary-foreground hover:bg-primary-hover',
|
|
29
|
+
secondary: 'bg-secondary text-secondary-foreground hover:bg-surface-hover',
|
|
30
|
+
/** For the action that destroys something. Never the default. */
|
|
31
|
+
destructive:
|
|
32
|
+
'bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive-subtle',
|
|
33
|
+
/** A bordered button for a surface that already has a fill. */
|
|
34
|
+
outline:
|
|
35
|
+
'border border-border bg-transparent text-foreground hover:bg-surface-hover hover:border-input',
|
|
36
|
+
/** No chrome until hover. The default for toolbar and row actions. */
|
|
37
|
+
ghost: 'text-foreground hover:bg-surface-hover',
|
|
38
|
+
/** A tinted primary, for a secondary action inside a primary flow. */
|
|
39
|
+
subtle: 'bg-primary-subtle text-primary hover:bg-primary-subtle/80',
|
|
40
|
+
success: 'bg-success text-success-foreground hover:bg-success/90',
|
|
41
|
+
link: 'text-primary underline-offset-4 hover:underline',
|
|
42
|
+
},
|
|
43
|
+
size: {
|
|
44
|
+
'2xs': `${controlSize['2xs']} [&_svg]:size-3`,
|
|
45
|
+
xs: `${controlSize.xs} [&_svg]:size-3.5`,
|
|
46
|
+
sm: `${controlSize.sm} [&_svg]:size-3.5`,
|
|
47
|
+
md: `${controlSize.md} [&_svg]:size-4`,
|
|
48
|
+
lg: `${controlSize.lg} [&_svg]:size-4`,
|
|
49
|
+
xl: `${controlSize.xl} [&_svg]:size-5`,
|
|
50
|
+
/* Square, for an icon with no label. The accessible name then has to
|
|
51
|
+
come from `aria-label` or a visually hidden label — an icon-only
|
|
52
|
+
button with neither is the accessibility finding the Storybook lane
|
|
53
|
+
catches on every story. */
|
|
54
|
+
'icon-2xs': 'size-control-2xs p-0 [&_svg]:size-3',
|
|
55
|
+
'icon-xs': 'size-control-xs p-0 [&_svg]:size-3.5',
|
|
56
|
+
'icon-sm': 'size-control-sm p-0 [&_svg]:size-3.5',
|
|
57
|
+
'icon-md': 'size-control-md p-0 [&_svg]:size-4',
|
|
58
|
+
'icon-lg': 'size-control-lg p-0 [&_svg]:size-4',
|
|
59
|
+
'icon-xl': 'size-control-xl p-0 [&_svg]:size-5',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
defaultVariants: {
|
|
63
|
+
variant: 'default',
|
|
64
|
+
size: 'md',
|
|
65
|
+
},
|
|
66
|
+
}
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
type ButtonVariantProps = VariantProps<typeof buttonVariants>
|
|
70
|
+
|
|
71
|
+
export type ButtonProps<T extends ValidComponent = 'button'> = PolymorphicProps<
|
|
72
|
+
T,
|
|
73
|
+
ButtonVariantProps & {
|
|
74
|
+
class?: string
|
|
75
|
+
}
|
|
76
|
+
>
|
|
77
|
+
|
|
78
|
+
export function Button<T extends ValidComponent = 'button'>(props: ButtonProps<T>) {
|
|
79
|
+
const [local, rest] = splitProps(props as ButtonProps, ['variant', 'size', 'class'])
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<Polymorphic
|
|
83
|
+
as="button"
|
|
84
|
+
type="button"
|
|
85
|
+
class={cn(buttonVariants({ variant: local.variant, size: local.size }), local.class)}
|
|
86
|
+
{...(rest as ComponentProps<'button'>)}
|
|
87
|
+
/>
|
|
88
|
+
)
|
|
89
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Button, buttonVariants, type ButtonProps } from './button'
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { ComponentProps } from 'solid-js'
|
|
2
|
+
import { splitProps } from 'solid-js'
|
|
3
|
+
import { cn } from '#lib/utils'
|
|
4
|
+
import { Separator } from '../separator/separator'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ButtonGroup.
|
|
8
|
+
*
|
|
9
|
+
* Several controls acting as one. The point is the *join*: the items share a
|
|
10
|
+
* border, collapse the seam between them, and round only at the ends, so a row of
|
|
11
|
+
* buttons reads as a single object with segments rather than as buttons that happen
|
|
12
|
+
* to be adjacent.
|
|
13
|
+
*
|
|
14
|
+
* The joining lives on the group, through child selectors, so an item never has to
|
|
15
|
+
* know whether it sits at an end — which is also where the border collapse belongs.
|
|
16
|
+
* A caller composing a group out of `Button`, `Select` and `InputGroup` therefore
|
|
17
|
+
* gets the same treatment without those components knowing about it.
|
|
18
|
+
*
|
|
19
|
+
* The group is a `role="group"` with a label, because a screen reader announcing
|
|
20
|
+
* four unrelated buttons where the sighted user sees one control is the failure
|
|
21
|
+
* this prevents.
|
|
22
|
+
*/
|
|
23
|
+
export type ButtonGroupProps = ComponentProps<'div'> & {
|
|
24
|
+
/** The group's accessible name. Required: a group with no name is announced as loose buttons. */
|
|
25
|
+
label: string
|
|
26
|
+
orientation?: 'horizontal' | 'vertical'
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function ButtonGroup(props: ButtonGroupProps) {
|
|
30
|
+
const [local, rest] = splitProps(props, ['class', 'label', 'orientation', 'children'])
|
|
31
|
+
|
|
32
|
+
const horizontal = () => local.orientation !== 'vertical'
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div
|
|
36
|
+
data-slot="button-group"
|
|
37
|
+
role="group"
|
|
38
|
+
aria-label={local.label}
|
|
39
|
+
class={cn(
|
|
40
|
+
'flex w-fit items-stretch',
|
|
41
|
+
horizontal() ? 'flex-row' : 'flex-col',
|
|
42
|
+
/* Ends keep their outer radius; everything between them is squared, and the
|
|
43
|
+
seam is collapsed by pulling each item back over its neighbour's border. */
|
|
44
|
+
horizontal()
|
|
45
|
+
? '[&>*:first-child]:rounded-e-none [&>*:last-child]:rounded-s-none [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:not(:first-child)]:-ms-px'
|
|
46
|
+
: '[&>*:first-child]:rounded-b-none [&>*:last-child]:rounded-t-none [&>*:not(:first-child):not(:last-child)]:rounded-none [&>*:not(:first-child)]:-mt-px',
|
|
47
|
+
local.class
|
|
48
|
+
)}
|
|
49
|
+
{...rest}
|
|
50
|
+
>
|
|
51
|
+
{local.children}
|
|
52
|
+
</div>
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A separator inside a group. `orientation` follows the group: a vertical rule in a
|
|
58
|
+
* horizontal group, and the reverse.
|
|
59
|
+
*/
|
|
60
|
+
export function ButtonGroupSeparator(
|
|
61
|
+
props: ComponentProps<typeof Separator> & { orientation?: 'horizontal' | 'vertical' }
|
|
62
|
+
) {
|
|
63
|
+
const [local, rest] = splitProps(props, ['class', 'orientation'])
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<Separator
|
|
67
|
+
orientation={local.orientation ?? 'vertical'}
|
|
68
|
+
class={cn('self-stretch', local.class)}
|
|
69
|
+
{...rest}
|
|
70
|
+
/>
|
|
71
|
+
)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Static text in a group — a unit, a label, a readout that is not a control. It
|
|
76
|
+
* takes the group's border and height so it sits in the row as a peer, but it is
|
|
77
|
+
* not focusable and does not pretend to be.
|
|
78
|
+
*/
|
|
79
|
+
export function ButtonGroupText(props: ComponentProps<'div'>) {
|
|
80
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
81
|
+
|
|
82
|
+
return (
|
|
83
|
+
<div
|
|
84
|
+
data-slot="button-group-text"
|
|
85
|
+
class={cn(
|
|
86
|
+
'bg-muted text-muted-foreground flex items-center gap-2 rounded-md border border-border px-control-sm text-sm',
|
|
87
|
+
local.class
|
|
88
|
+
)}
|
|
89
|
+
{...rest}
|
|
90
|
+
/>
|
|
91
|
+
)
|
|
92
|
+
}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import { For, Show, splitProps, type ComponentProps, type JSX } from 'solid-js'
|
|
2
|
+
import Calendar, {
|
|
3
|
+
type RootProps as CorvuCalendarProps,
|
|
4
|
+
type RootSingleProps,
|
|
5
|
+
} from '@corvu/calendar'
|
|
6
|
+
|
|
7
|
+
/** The three modes corvu's calendar is a union over. */
|
|
8
|
+
export type CalendarMode = 'single' | 'multiple' | 'range'
|
|
9
|
+
import { ChevronLeft, ChevronRight } from 'lucide-solid'
|
|
10
|
+
import { cn } from '#lib/utils'
|
|
11
|
+
import { Button } from '../button'
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Calendar.
|
|
15
|
+
*
|
|
16
|
+
* A month grid, over `@corvu/calendar`. The primitive owns the hard part — the
|
|
17
|
+
* roving `tabindex` that makes a grid of days one tab stop rather than 42, the
|
|
18
|
+
* arrow-key navigation, the `aria-selected`/`aria-disabled` bookkeeping, and the
|
|
19
|
+
* `data-*` attributes that carry the states.
|
|
20
|
+
*
|
|
21
|
+
* What this component owns is the *presentation* of those states, and it is worth
|
|
22
|
+
* saying why they are styled from `data-*` rather than from props: a day is today,
|
|
23
|
+
* selected, in range, at a range end, and disabled independently, and a range
|
|
24
|
+
* start that is also today has to read as both. Boolean props cannot express that
|
|
25
|
+
* without a combinatorial explosion; the data attributes can.
|
|
26
|
+
*
|
|
27
|
+
* `mode` is the primitive's discriminated union — `single`, `multiple`, `range` —
|
|
28
|
+
* so `value` and `onValueChange` change type with it. That is why this forwards
|
|
29
|
+
* the props rather than normalising them: a normalised `Date[]` would lose what a
|
|
30
|
+
* range needs to know which end moved.
|
|
31
|
+
*
|
|
32
|
+
* Three things the primitive leaves open, and this closes:
|
|
33
|
+
*
|
|
34
|
+
* 1. **The month caption is a heading**, wired to the grid's `aria-labelledby`, so
|
|
35
|
+
* the grid has a name and a screen reader user can hear which month they are in.
|
|
36
|
+
* 2. **The nav buttons have accessible names.** A bare chevron is not a name.
|
|
37
|
+
* 3. **Today is a ring, not a fill.** A fill would be indistinguishable from
|
|
38
|
+
* selected, and today is often also selected.
|
|
39
|
+
*
|
|
40
|
+
* The sub-components come off the default export as statics (`Calendar.Cell`,
|
|
41
|
+
* `Calendar.CellTrigger`, …) — corvu's shape, and the reason this file does not
|
|
42
|
+
* import seven names.
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* The props this wrapper adds on top of the primitive's own. They are separate so
|
|
47
|
+
* `splitProps` has a fixed list to pull out, and so the mode-specific props stay
|
|
48
|
+
* the primitive's to define.
|
|
49
|
+
*/
|
|
50
|
+
type CalendarExtras = {
|
|
51
|
+
/** Weekday header labels, Sunday first. Defaults to the locale's short names. */
|
|
52
|
+
weekdayLabels?: readonly string[]
|
|
53
|
+
/** Accessible names for the month navigation. Override for a non-English app. */
|
|
54
|
+
previousLabel?: string
|
|
55
|
+
nextLabel?: string
|
|
56
|
+
/** Format a month for the caption. Defaults to `Intl.DateTimeFormat`. */
|
|
57
|
+
formatMonth?: (month: Date) => string
|
|
58
|
+
class?: string
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* `Omit` distributes over a union, which would collapse the three modes into one
|
|
63
|
+
* shape and lose the discriminant. This keeps them apart. `children` is dropped
|
|
64
|
+
* because the surface supplies the grid itself — the caller's job is the value,
|
|
65
|
+
* not the layout.
|
|
66
|
+
*/
|
|
67
|
+
type DistributiveOmit<T, K extends PropertyKey> = T extends unknown ? Omit<T, K> : never
|
|
68
|
+
|
|
69
|
+
/** The props of any of the three modes. `mode` decides the shape of `value`. */
|
|
70
|
+
export type CalendarProps = DistributiveOmit<CorvuCalendarProps, 'children'> & CalendarExtras
|
|
71
|
+
|
|
72
|
+
const EXTRAS = ['weekdayLabels', 'previousLabel', 'nextLabel', 'formatMonth', 'class'] as const
|
|
73
|
+
|
|
74
|
+
const MONTH_FORMAT: Intl.DateTimeFormatOptions = { month: 'long', year: 'numeric' }
|
|
75
|
+
|
|
76
|
+
function monthLabel(month: Date, format?: (month: Date) => string): string {
|
|
77
|
+
return format ? format(month) : new Intl.DateTimeFormat(undefined, MONTH_FORMAT).format(month)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* A day's accessible name: the full date, because the visible number is only
|
|
82
|
+
* meaningful next to its column heading.
|
|
83
|
+
*/
|
|
84
|
+
function dayLabel(day: Date): string {
|
|
85
|
+
return new Intl.DateTimeFormat(undefined, {
|
|
86
|
+
day: 'numeric',
|
|
87
|
+
month: 'long',
|
|
88
|
+
year: 'numeric',
|
|
89
|
+
}).format(day)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** The locale's short weekday names, Sunday first — which is the order corvu's `weeks` use. */
|
|
93
|
+
function defaultWeekdays(): string[] {
|
|
94
|
+
const format = new Intl.DateTimeFormat(undefined, { weekday: 'short' })
|
|
95
|
+
// 2024-01-07 is a Sunday, so index 0 is Sunday without arithmetic.
|
|
96
|
+
return Array.from({ length: 7 }, (_, index) => format.format(new Date(2024, 0, 7 + index)))
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* The grid, inside the root's context. A separate component because
|
|
101
|
+
* `Calendar.useContext` is only available to a descendant, and reading `months()`
|
|
102
|
+
* in the same component that provides it renders one month behind.
|
|
103
|
+
*/
|
|
104
|
+
function CalendarGrid(props: {
|
|
105
|
+
weekdayLabels?: readonly string[]
|
|
106
|
+
previousLabel: string
|
|
107
|
+
nextLabel: string
|
|
108
|
+
formatMonth?: (month: Date) => string
|
|
109
|
+
}) {
|
|
110
|
+
const context = Calendar.useContext()
|
|
111
|
+
const weekdays = () => props.weekdayLabels ?? defaultWeekdays()
|
|
112
|
+
|
|
113
|
+
return (
|
|
114
|
+
<For each={context.months()}>
|
|
115
|
+
{(month, index) => (
|
|
116
|
+
<div class="flex flex-col gap-2">
|
|
117
|
+
<div class="flex items-center justify-between gap-2">
|
|
118
|
+
<Calendar.Nav
|
|
119
|
+
action="prev-month"
|
|
120
|
+
as={Button}
|
|
121
|
+
variant="ghost"
|
|
122
|
+
size="icon-sm"
|
|
123
|
+
aria-label={props.previousLabel}
|
|
124
|
+
>
|
|
125
|
+
<ChevronLeft aria-hidden="true" />
|
|
126
|
+
</Calendar.Nav>
|
|
127
|
+
<Calendar.Label index={index()} class="text-sm font-semibold text-foreground">
|
|
128
|
+
{monthLabel(month.month, props.formatMonth)}
|
|
129
|
+
</Calendar.Label>
|
|
130
|
+
<Calendar.Nav
|
|
131
|
+
action="next-month"
|
|
132
|
+
as={Button}
|
|
133
|
+
variant="ghost"
|
|
134
|
+
size="icon-sm"
|
|
135
|
+
aria-label={props.nextLabel}
|
|
136
|
+
>
|
|
137
|
+
<ChevronRight aria-hidden="true" />
|
|
138
|
+
</Calendar.Nav>
|
|
139
|
+
</div>
|
|
140
|
+
<Calendar.Table class="w-full border-collapse">
|
|
141
|
+
<thead>
|
|
142
|
+
<tr>
|
|
143
|
+
<For each={weekdays()}>
|
|
144
|
+
{(label) => (
|
|
145
|
+
<Calendar.HeadCell
|
|
146
|
+
as="th"
|
|
147
|
+
scope="col"
|
|
148
|
+
class="pb-1 text-2xs font-medium text-muted-foreground"
|
|
149
|
+
>
|
|
150
|
+
{label}
|
|
151
|
+
</Calendar.HeadCell>
|
|
152
|
+
)}
|
|
153
|
+
</For>
|
|
154
|
+
</tr>
|
|
155
|
+
</thead>
|
|
156
|
+
<tbody>
|
|
157
|
+
<For each={month.weeks}>
|
|
158
|
+
{(week) => (
|
|
159
|
+
<tr>
|
|
160
|
+
<For each={week}>
|
|
161
|
+
{(day) => (
|
|
162
|
+
<Calendar.Cell as="td" class="p-0.5 text-center">
|
|
163
|
+
<Calendar.CellTrigger
|
|
164
|
+
as="button"
|
|
165
|
+
day={day}
|
|
166
|
+
month={month.month}
|
|
167
|
+
class={cn(
|
|
168
|
+
'w-full rounded-md text-xs text-foreground transition-colors',
|
|
169
|
+
'min-h-control-xs',
|
|
170
|
+
'hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none',
|
|
171
|
+
// Styled from data states, so a day can be a range
|
|
172
|
+
// end and today at once without a prop per pair.
|
|
173
|
+
'data-selected:bg-primary data-selected:text-primary-foreground',
|
|
174
|
+
'data-in-range:bg-primary-subtle',
|
|
175
|
+
'data-range-start:rounded-r-none data-range-end:rounded-l-none',
|
|
176
|
+
'data-today:ring-1 data-today:ring-ring',
|
|
177
|
+
'data-disabled:text-muted-foreground data-disabled:line-through',
|
|
178
|
+
'data-disabled:hover:bg-transparent'
|
|
179
|
+
)}
|
|
180
|
+
>
|
|
181
|
+
{/*
|
|
182
|
+
The trigger renders no children of its own, so the
|
|
183
|
+
day number is the caller's — without it every cell
|
|
184
|
+
is an unnamed button (`button-name`).
|
|
185
|
+
|
|
186
|
+
The number is what a sighted reader needs and the
|
|
187
|
+
full date is what a screen reader user needs: "25"
|
|
188
|
+
alone is meaningless out of context. So the number
|
|
189
|
+
is hidden from the accessibility tree and the date
|
|
190
|
+
supplies the name.
|
|
191
|
+
*/}
|
|
192
|
+
<span aria-hidden="true">{day.getDate()}</span>
|
|
193
|
+
<span class="visually-hidden">{dayLabel(day)}</span>
|
|
194
|
+
</Calendar.CellTrigger>
|
|
195
|
+
</Calendar.Cell>
|
|
196
|
+
)}
|
|
197
|
+
</For>
|
|
198
|
+
</tr>
|
|
199
|
+
)}
|
|
200
|
+
</For>
|
|
201
|
+
</tbody>
|
|
202
|
+
</Calendar.Table>
|
|
203
|
+
</div>
|
|
204
|
+
)}
|
|
205
|
+
</For>
|
|
206
|
+
)
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Generic over the mode on purpose. `splitProps` cannot carry a discriminant
|
|
211
|
+
* through destructuring — the rest object widens to `mode: 'single' | 'multiple' |
|
|
212
|
+
* 'range'`, which is assignable to no single member of the primitive's union. A
|
|
213
|
+
* type parameter keeps `mode` a literal, so `Extract` resolves the right member
|
|
214
|
+
* and the forwarding stays checked rather than cast.
|
|
215
|
+
*/
|
|
216
|
+
export function CalendarSurface<M extends CalendarMode>(props: CalendarProps & { mode: M }) {
|
|
217
|
+
const [local, rest] = splitProps(props as CalendarProps, [...EXTRAS])
|
|
218
|
+
|
|
219
|
+
return (
|
|
220
|
+
<div class={cn('w-fit rounded-lg border border-border bg-card p-3', local.class)}>
|
|
221
|
+
<Calendar {...(rest as Extract<CorvuCalendarProps, { mode: M }>)}>
|
|
222
|
+
<CalendarGrid
|
|
223
|
+
weekdayLabels={local.weekdayLabels}
|
|
224
|
+
previousLabel={local.previousLabel ?? 'Previous month'}
|
|
225
|
+
nextLabel={local.nextLabel ?? 'Next month'}
|
|
226
|
+
formatMonth={local.formatMonth}
|
|
227
|
+
/>
|
|
228
|
+
</Calendar>
|
|
229
|
+
</div>
|
|
230
|
+
)
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Built from the primitive's *single* props rather than from `CalendarProps` with
|
|
235
|
+
* `mode` omitted. Omitting a discriminant leaves the other members of the union
|
|
236
|
+
* behind — `value` stays `Date | Date[] | {from,to}` — and the picker would then
|
|
237
|
+
* have to cast to prove what its own name already says.
|
|
238
|
+
*/
|
|
239
|
+
export type DatePickerProps = Omit<RootSingleProps, 'mode' | 'children'> &
|
|
240
|
+
CalendarExtras & {
|
|
241
|
+
/** A labelled heading above the grid. */
|
|
242
|
+
label?: string
|
|
243
|
+
/** A footer slot: the confirm and cancel row a picker usually has. */
|
|
244
|
+
footer?: JSX.Element
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* A single-day picker: the calendar with a name and a footer. Split from
|
|
249
|
+
* `CalendarSurface` because a bare calendar is a control inside a form the caller
|
|
250
|
+
* already owns, while a picker is a thing the caller drops in — and the two want
|
|
251
|
+
* different surroundings.
|
|
252
|
+
*/
|
|
253
|
+
export function DatePicker(props: DatePickerProps) {
|
|
254
|
+
const [local, rest] = splitProps(props, ['value', 'onValueChange', 'label', 'footer', 'class'])
|
|
255
|
+
|
|
256
|
+
return (
|
|
257
|
+
<div class={cn('grid w-fit gap-2', local.class)}>
|
|
258
|
+
<Show when={local.label}>
|
|
259
|
+
<p class="text-xs font-semibold text-foreground">{local.label}</p>
|
|
260
|
+
</Show>
|
|
261
|
+
<CalendarSurface
|
|
262
|
+
{...rest}
|
|
263
|
+
mode="single"
|
|
264
|
+
value={local.value}
|
|
265
|
+
onValueChange={local.onValueChange}
|
|
266
|
+
/>
|
|
267
|
+
<Show when={local.footer}>
|
|
268
|
+
<div class="flex justify-end gap-2">{local.footer}</div>
|
|
269
|
+
</Show>
|
|
270
|
+
</div>
|
|
271
|
+
)
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/** Re-exported so a caller can type a value it holds. */
|
|
275
|
+
export type { CalendarProps as CorvuCalendarProps }
|
|
276
|
+
export { Calendar as CalendarRoot }
|
|
277
|
+
export type CalendarElementProps = ComponentProps<'div'>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { CalendarSurface, DatePicker, type CalendarProps, type DatePickerProps } from './calendar'
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { ComponentProps, JSX } from 'solid-js'
|
|
2
|
+
import { splitProps } from 'solid-js'
|
|
3
|
+
import { cn } from '#lib/utils'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Card.
|
|
7
|
+
*
|
|
8
|
+
* A surface that sits on the canvas. Every card carries its own edge — a
|
|
9
|
+
* border — because in the light theme `--card` and `--background` are both
|
|
10
|
+
* white, and a borderless card there is invisible. Making the border
|
|
11
|
+
* structural rather than optional is what stops one app's cards from reading
|
|
12
|
+
* as floating panels and another's as nothing at all.
|
|
13
|
+
*
|
|
14
|
+
* The parts are separate components rather than a template because a card's
|
|
15
|
+
* header, content and footer have different padding on purpose: the header and
|
|
16
|
+
* footer are tight, the content breathes.
|
|
17
|
+
*/
|
|
18
|
+
export function Card(props: ComponentProps<'div'>) {
|
|
19
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
20
|
+
return (
|
|
21
|
+
<div
|
|
22
|
+
data-slot="card"
|
|
23
|
+
class={cn(
|
|
24
|
+
'bg-card text-card-foreground flex flex-col gap-4 rounded-xl border border-border py-4 shadow-xs',
|
|
25
|
+
local.class
|
|
26
|
+
)}
|
|
27
|
+
{...rest}
|
|
28
|
+
/>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function CardHeader(props: ComponentProps<'div'>) {
|
|
33
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
34
|
+
return (
|
|
35
|
+
<div data-slot="card-header" class={cn('flex flex-col gap-1 px-4', local.class)} {...rest} />
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function CardTitle(props: ComponentProps<'div'>) {
|
|
40
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
41
|
+
return (
|
|
42
|
+
<div
|
|
43
|
+
data-slot="card-title"
|
|
44
|
+
class={cn('text-base leading-none font-semibold tracking-tight', local.class)}
|
|
45
|
+
{...rest}
|
|
46
|
+
/>
|
|
47
|
+
)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function CardDescription(props: ComponentProps<'div'>) {
|
|
51
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
52
|
+
return (
|
|
53
|
+
<div
|
|
54
|
+
data-slot="card-description"
|
|
55
|
+
class={cn('text-muted-foreground text-sm', local.class)}
|
|
56
|
+
{...rest}
|
|
57
|
+
/>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export function CardAction(props: ComponentProps<'div'>) {
|
|
62
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
63
|
+
return (
|
|
64
|
+
<div
|
|
65
|
+
data-slot="card-action"
|
|
66
|
+
class={cn('col-start-2 row-span-2 row-start-1 self-start justify-self-end', local.class)}
|
|
67
|
+
{...rest}
|
|
68
|
+
/>
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function CardContent(props: ComponentProps<'div'>) {
|
|
73
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
74
|
+
return <div data-slot="card-content" class={cn('px-4', local.class)} {...rest} />
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export function CardFooter(props: ComponentProps<'div'>) {
|
|
78
|
+
const [local, rest] = splitProps(props, ['class'])
|
|
79
|
+
return <div data-slot="card-footer" class={cn('flex items-center px-4', local.class)} {...rest} />
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export type CardProps = ComponentProps<'div'> & JSX.HTMLAttributes<HTMLDivElement>
|