@adea-ai/ui 0.60.4 → 0.61.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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 +25 -0
- package/dist/r/account-menu.json +26 -0
- package/dist/r/alert-dialog.json +24 -0
- package/dist/r/alert.json +24 -0
- package/dist/r/app-shell.json +22 -0
- package/dist/r/aspect-ratio.json +22 -0
- package/dist/r/avatar.json +22 -0
- package/dist/r/badge.json +24 -0
- package/dist/r/board.json +22 -0
- package/dist/r/breadcrumb.json +24 -0
- package/dist/r/button-group.json +23 -0
- package/dist/r/button.json +24 -0
- package/dist/r/calendar.json +26 -0
- package/dist/r/card.json +22 -0
- package/dist/r/carousel.json +27 -0
- package/dist/r/chart.json +25 -0
- package/dist/r/checkbox.json +25 -0
- package/dist/r/code-block.json +25 -0
- package/dist/r/collapsible.json +24 -0
- package/dist/r/combobox.json +25 -0
- package/dist/r/command.json +25 -0
- package/dist/r/context-menu.json +25 -0
- package/dist/r/conversation.json +49 -0
- package/dist/r/detail-panel.json +25 -0
- package/dist/r/dialog.json +25 -0
- package/dist/r/diff-block.json +22 -0
- package/dist/r/drawer.json +24 -0
- package/dist/r/dropdown-menu.json +25 -0
- package/dist/r/empty.json +22 -0
- package/dist/r/entity-icon.json +22 -0
- package/dist/r/field.json +24 -0
- package/dist/r/hover-card.json +24 -0
- package/dist/r/input-group.json +22 -0
- package/dist/r/input-otp.json +24 -0
- package/dist/r/input.json +22 -0
- package/dist/r/item.json +22 -0
- package/dist/r/kbd.json +22 -0
- package/dist/r/label.json +22 -0
- package/dist/r/lib.json +50 -0
- package/dist/r/list-row.json +24 -0
- package/dist/r/menubar.json +25 -0
- package/dist/r/modal-dialog.json +23 -0
- package/dist/r/motion.json +22 -0
- package/dist/r/navigation-menu.json +25 -0
- package/dist/r/page.json +22 -0
- package/dist/r/pagination.json +25 -0
- package/dist/r/panel.json +22 -0
- package/dist/r/popover.json +24 -0
- package/dist/r/progress.json +24 -0
- package/dist/r/radio-group.json +25 -0
- package/dist/r/registry.json +1923 -0
- package/dist/r/resizable.json +25 -0
- package/dist/r/scroll-area.json +22 -0
- package/dist/r/select.json +25 -0
- package/dist/r/separator.json +24 -0
- package/dist/r/settings.json +22 -0
- package/dist/r/sheet.json +26 -0
- package/dist/r/side-rail.json +29 -0
- package/dist/r/sidebar-nav.json +25 -0
- package/dist/r/skeleton.json +22 -0
- package/dist/r/slider.json +24 -0
- package/dist/r/spinner.json +24 -0
- package/dist/r/src/components/composites/account-menu/account-menu.tsx +150 -0
- package/dist/r/src/components/composites/account-menu/index.ts +1 -0
- package/dist/r/src/components/composites/list-row/index.ts +1 -0
- package/dist/r/src/components/composites/list-row/list-row.tsx +116 -0
- package/dist/r/src/components/composites/settings/index.ts +1 -0
- package/dist/r/src/components/composites/settings/settings.tsx +142 -0
- package/dist/r/src/components/composites/stat/index.ts +9 -0
- package/dist/r/src/components/composites/stat/stat.tsx +155 -0
- package/dist/r/src/components/composites/update-dialog/index.ts +7 -0
- package/dist/r/src/components/composites/update-dialog/update-dialog.tsx +529 -0
- package/dist/r/src/components/composites/workspace-mark/index.ts +1 -0
- package/dist/r/src/components/composites/workspace-mark/workspace-mark.tsx +72 -0
- package/dist/r/src/components/conversation/conversation-avatar.tsx +60 -0
- package/dist/r/src/components/conversation/conversation-surface.tsx +107 -0
- package/dist/r/src/components/conversation/index.ts +25 -0
- package/dist/r/src/components/conversation/message-composer.tsx +239 -0
- package/dist/r/src/components/conversation/message-row.tsx +387 -0
- package/dist/r/src/components/conversation/thread-panel.tsx +141 -0
- package/dist/r/src/components/layout/app-shell/app-shell.tsx +92 -0
- package/dist/r/src/components/layout/app-shell/index.ts +1 -0
- package/dist/r/src/components/layout/page/index.ts +9 -0
- package/dist/r/src/components/layout/page/page.tsx +122 -0
- package/dist/r/src/components/layout/panel/index.ts +12 -0
- package/dist/r/src/components/layout/panel/panel.tsx +166 -0
- package/dist/r/src/components/layout/side-rail/index.ts +12 -0
- package/dist/r/src/components/layout/side-rail/side-rail-context.ts +42 -0
- package/dist/r/src/components/layout/side-rail/side-rail.tsx +405 -0
- package/dist/r/src/components/layout/sidebar-nav/index.ts +14 -0
- package/dist/r/src/components/layout/sidebar-nav/sidebar-nav.tsx +244 -0
- package/dist/r/src/components/layout/status-bar/index.ts +1 -0
- package/dist/r/src/components/layout/status-bar/status-bar.tsx +73 -0
- package/dist/r/src/components/layout/top-bar/index.ts +10 -0
- package/dist/r/src/components/layout/top-bar/top-bar.tsx +166 -0
- package/dist/r/src/components/motion/index.ts +2 -0
- package/dist/r/src/components/motion/presence.tsx +32 -0
- package/dist/r/src/components/theme/appearance-panel.tsx +179 -0
- package/dist/r/src/components/theme/index.ts +22 -0
- package/dist/r/src/components/theme/theme-picker.tsx +174 -0
- package/dist/r/src/components/theme/theme-provider.tsx +309 -0
- package/dist/r/src/components/theme/theme-toggle.tsx +64 -0
- package/dist/r/src/components/ui/accordion/accordion.tsx +66 -0
- package/dist/r/src/components/ui/accordion/index.ts +1 -0
- package/dist/r/src/components/ui/alert/alert.tsx +95 -0
- package/dist/r/src/components/ui/alert/index.ts +1 -0
- package/dist/r/src/components/ui/alert-dialog/alert-dialog.tsx +176 -0
- package/dist/r/src/components/ui/alert-dialog/index.ts +13 -0
- package/dist/r/src/components/ui/aspect-ratio/aspect-ratio.tsx +38 -0
- package/dist/r/src/components/ui/aspect-ratio/index.ts +1 -0
- package/dist/r/src/components/ui/avatar/avatar.tsx +114 -0
- package/dist/r/src/components/ui/avatar/index.ts +9 -0
- package/dist/r/src/components/ui/badge/badge.tsx +59 -0
- package/dist/r/src/components/ui/badge/index.ts +1 -0
- package/dist/r/src/components/ui/board/board.tsx +254 -0
- package/dist/r/src/components/ui/board/index.ts +10 -0
- package/dist/r/src/components/ui/breadcrumb/breadcrumb.tsx +117 -0
- package/dist/r/src/components/ui/breadcrumb/index.ts +9 -0
- package/dist/r/src/components/ui/button/button.tsx +89 -0
- package/dist/r/src/components/ui/button/index.ts +1 -0
- package/dist/r/src/components/ui/button-group/button-group.tsx +92 -0
- package/dist/r/src/components/ui/button-group/index.ts +6 -0
- package/dist/r/src/components/ui/calendar/calendar.tsx +277 -0
- package/dist/r/src/components/ui/calendar/index.ts +1 -0
- package/dist/r/src/components/ui/card/card.tsx +82 -0
- package/dist/r/src/components/ui/card/index.ts +10 -0
- package/dist/r/src/components/ui/carousel/carousel.tsx +209 -0
- package/dist/r/src/components/ui/carousel/index.ts +1 -0
- package/dist/r/src/components/ui/chart/chart.tsx +413 -0
- package/dist/r/src/components/ui/chart/index.ts +17 -0
- package/dist/r/src/components/ui/checkbox/checkbox.tsx +99 -0
- package/dist/r/src/components/ui/checkbox/index.ts +1 -0
- package/dist/r/src/components/ui/code-block/code-block.tsx +238 -0
- package/dist/r/src/components/ui/code-block/index.ts +1 -0
- package/dist/r/src/components/ui/collapsible/collapsible.tsx +54 -0
- package/dist/r/src/components/ui/collapsible/index.ts +1 -0
- package/dist/r/src/components/ui/combobox/combobox.tsx +142 -0
- package/dist/r/src/components/ui/combobox/index.ts +10 -0
- package/dist/r/src/components/ui/command/command.tsx +214 -0
- package/dist/r/src/components/ui/command/index.ts +12 -0
- package/dist/r/src/components/ui/context-menu/context-menu.tsx +163 -0
- package/dist/r/src/components/ui/context-menu/index.ts +15 -0
- package/dist/r/src/components/ui/detail-panel/detail-panel.tsx +161 -0
- package/dist/r/src/components/ui/detail-panel/index.ts +9 -0
- package/dist/r/src/components/ui/dialog/dialog.tsx +138 -0
- package/dist/r/src/components/ui/dialog/index.ts +14 -0
- package/dist/r/src/components/ui/diff-block/diff-block.tsx +286 -0
- package/dist/r/src/components/ui/diff-block/index.ts +11 -0
- package/dist/r/src/components/ui/drawer/drawer.tsx +144 -0
- package/dist/r/src/components/ui/drawer/index.ts +13 -0
- package/dist/r/src/components/ui/dropdown-menu/dropdown-menu.tsx +203 -0
- package/dist/r/src/components/ui/dropdown-menu/index.ts +18 -0
- package/dist/r/src/components/ui/empty/empty.tsx +104 -0
- package/dist/r/src/components/ui/empty/index.ts +10 -0
- package/dist/r/src/components/ui/entity-icon/entity-icon.tsx +154 -0
- package/dist/r/src/components/ui/entity-icon/index.ts +1 -0
- package/dist/r/src/components/ui/field/field.tsx +131 -0
- package/dist/r/src/components/ui/field/index.ts +11 -0
- package/dist/r/src/components/ui/hover-card/hover-card.tsx +48 -0
- package/dist/r/src/components/ui/hover-card/index.ts +1 -0
- package/dist/r/src/components/ui/input/index.ts +1 -0
- package/dist/r/src/components/ui/input/input.tsx +41 -0
- package/dist/r/src/components/ui/input-group/index.ts +8 -0
- package/dist/r/src/components/ui/input-group/input-group.tsx +111 -0
- package/dist/r/src/components/ui/input-otp/index.ts +1 -0
- package/dist/r/src/components/ui/input-otp/input-otp.tsx +108 -0
- package/dist/r/src/components/ui/item/index.ts +10 -0
- package/dist/r/src/components/ui/item/item.tsx +146 -0
- package/dist/r/src/components/ui/kbd/index.ts +1 -0
- package/dist/r/src/components/ui/kbd/kbd.tsx +42 -0
- package/dist/r/src/components/ui/label/index.ts +1 -0
- package/dist/r/src/components/ui/label/label.tsx +36 -0
- package/dist/r/src/components/ui/menubar/index.ts +16 -0
- package/dist/r/src/components/ui/menubar/menubar.tsx +190 -0
- package/dist/r/src/components/ui/modal-dialog/index.ts +1 -0
- package/dist/r/src/components/ui/modal-dialog/modal-dialog.tsx +95 -0
- package/dist/r/src/components/ui/navigation-menu/index.ts +13 -0
- package/dist/r/src/components/ui/navigation-menu/navigation-menu.tsx +229 -0
- package/dist/r/src/components/ui/pagination/index.ts +8 -0
- package/dist/r/src/components/ui/pagination/pagination.tsx +144 -0
- package/dist/r/src/components/ui/popover/index.ts +10 -0
- package/dist/r/src/components/ui/popover/popover.tsx +81 -0
- package/dist/r/src/components/ui/progress/index.ts +1 -0
- package/dist/r/src/components/ui/progress/progress.tsx +67 -0
- package/dist/r/src/components/ui/radio-group/index.ts +1 -0
- package/dist/r/src/components/ui/radio-group/radio-group.tsx +78 -0
- package/dist/r/src/components/ui/resizable/index.ts +6 -0
- package/dist/r/src/components/ui/resizable/resizable.tsx +74 -0
- package/dist/r/src/components/ui/scroll-area/index.ts +1 -0
- package/dist/r/src/components/ui/scroll-area/scroll-area.tsx +66 -0
- package/dist/r/src/components/ui/select/index.ts +11 -0
- package/dist/r/src/components/ui/select/select.tsx +188 -0
- package/dist/r/src/components/ui/separator/index.ts +1 -0
- package/dist/r/src/components/ui/separator/separator.tsx +40 -0
- package/dist/r/src/components/ui/sheet/index.ts +13 -0
- package/dist/r/src/components/ui/sheet/sheet.tsx +132 -0
- package/dist/r/src/components/ui/skeleton/index.ts +1 -0
- package/dist/r/src/components/ui/skeleton/skeleton.tsx +28 -0
- package/dist/r/src/components/ui/slider/index.ts +1 -0
- package/dist/r/src/components/ui/slider/slider.tsx +81 -0
- package/dist/r/src/components/ui/spinner/index.ts +1 -0
- package/dist/r/src/components/ui/spinner/spinner.tsx +58 -0
- package/dist/r/src/components/ui/status-chip/index.ts +8 -0
- package/dist/r/src/components/ui/status-chip/status-chip.tsx +142 -0
- package/dist/r/src/components/ui/switch/index.ts +1 -0
- package/dist/r/src/components/ui/switch/switch.tsx +100 -0
- package/dist/r/src/components/ui/table/index.ts +11 -0
- package/dist/r/src/components/ui/table/table.tsx +125 -0
- package/dist/r/src/components/ui/tabs/index.ts +8 -0
- package/dist/r/src/components/ui/tabs/tabs.tsx +77 -0
- package/dist/r/src/components/ui/textarea/index.ts +1 -0
- package/dist/r/src/components/ui/textarea/textarea.tsx +36 -0
- package/dist/r/src/components/ui/toast/index.ts +1 -0
- package/dist/r/src/components/ui/toast/toast.tsx +220 -0
- package/dist/r/src/components/ui/toggle/index.ts +1 -0
- package/dist/r/src/components/ui/toggle/toggle.tsx +60 -0
- package/dist/r/src/components/ui/toggle-group/index.ts +6 -0
- package/dist/r/src/components/ui/toggle-group/toggle-group.tsx +66 -0
- package/dist/r/src/components/ui/tooltip/index.ts +9 -0
- package/dist/r/src/components/ui/tooltip/tooltip.tsx +102 -0
- package/dist/r/src/lib/keyed-rows.ts +68 -0
- package/dist/r/src/lib/overlay.ts +70 -0
- package/dist/r/src/lib/themes.ts +490 -0
- package/dist/r/src/lib/tokens.ts +688 -0
- package/dist/r/src/lib/utils.ts +76 -0
- package/dist/r/src/lib/variants.ts +62 -0
- package/dist/r/src/lib/version-notes.ts +65 -0
- package/dist/r/src/styles/base.css +644 -0
- package/dist/r/src/styles/fonts.css +26 -0
- package/dist/r/src/styles/globals.css +18 -0
- package/dist/r/src/styles/theme.css +864 -0
- package/dist/r/stat.json +24 -0
- package/dist/r/status-bar.json +22 -0
- package/dist/r/status-chip.json +23 -0
- package/dist/r/switch.json +24 -0
- package/dist/r/table.json +22 -0
- package/dist/r/tabs.json +24 -0
- package/dist/r/textarea.json +22 -0
- package/dist/r/theme.json +36 -0
- package/dist/r/theming.json +42 -0
- package/dist/r/toast.json +25 -0
- package/dist/r/toggle-group.json +25 -0
- package/dist/r/toggle.json +24 -0
- package/dist/r/tooltip.json +24 -0
- package/dist/r/top-bar.json +22 -0
- package/dist/r/update-dialog.json +28 -0
- package/dist/r/workspace-mark.json +23 -0
- package/package.json +75 -21
- package/registry.json +1923 -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,452 @@
|
|
|
1
|
+
import { cn } from "../../../lib/utils.js";
|
|
2
|
+
import { Badge } from "../../ui/badge/badge.js";
|
|
3
|
+
import { Button } from "../../ui/button/button.js";
|
|
4
|
+
import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from "../../ui/dialog/dialog.js";
|
|
5
|
+
import { Progress } from "../../ui/progress/progress.js";
|
|
6
|
+
import { formatBytes, formatReleaseDate, plainTextFromMarkdown } from "../../../lib/version-notes.js";
|
|
7
|
+
import { createComponent, insert, memo, template } from "solid-js/web";
|
|
8
|
+
import { Check, Download, ExternalLink, LoaderCircle, RefreshCw, Sparkles } from "lucide-solid";
|
|
9
|
+
import { Show, createEffect, createMemo, createSignal, onMount, splitProps } from "solid-js";
|
|
10
|
+
//#region src/components/composites/update-dialog/update-dialog.tsx
|
|
11
|
+
var _tmpl$ = /*#__PURE__*/ template(`<div class="flex items-center gap-3"><span class="flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground"></span><div>`);
|
|
12
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<section class="rounded-xl border border-primary/35 bg-primary-subtle p-4"aria-label="Available update"><div class="flex flex-wrap items-start justify-between gap-4"><div class="flex flex-col gap-1"><p class="flex items-center gap-2 text-sm font-semibold">Version <!> is ready</p><p class="text-sm text-muted-foreground">The signed installer is verified before <!> restarts.`);
|
|
13
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<section class="grid gap-2"aria-label="Update progress"><p class="text-xs text-muted-foreground"role=status>`);
|
|
14
|
+
var _tmpl$4 = /*#__PURE__*/ template(`<p class="flex items-center gap-2 text-sm text-success"role=status> is up to date.`);
|
|
15
|
+
var _tmpl$5 = /*#__PURE__*/ template(`<p class="flex items-center gap-2 text-sm text-success"role=status>`);
|
|
16
|
+
var _tmpl$6 = /*#__PURE__*/ template(`<p class="rounded-lg border border-destructive/35 bg-destructive-subtle px-3 py-2 text-sm text-destructive"role=alert>`);
|
|
17
|
+
var _tmpl$7 = /*#__PURE__*/ template(`<section class="flex flex-col gap-2"aria-labelledby=update-release-notes><div class="flex items-center gap-2"><h2 id=update-release-notes class="text-sm font-semibold">What changed in this release</h2></div><div class="max-h-52 overflow-y-auto rounded-xl border border-border bg-background/45 p-4 font-mono text-xs leading-5 whitespace-pre-wrap text-muted-foreground"role=region aria-labelledby=update-release-notes tabindex=0>`);
|
|
18
|
+
var _tmpl$8 = /*#__PURE__*/ template(`<section class="flex flex-col gap-2"aria-labelledby=update-changelog><h2 id=update-changelog class="text-sm font-semibold">Installed changelog</h2><p class="text-xs text-muted-foreground">A plain-text history of the installed release channel.</p><div class="max-h-72 overflow-y-auto rounded-xl border border-border bg-background/45 p-4 font-mono text-xs leading-5 whitespace-pre-wrap text-muted-foreground"role=region aria-labelledby=update-changelog tabindex=0>`);
|
|
19
|
+
var _tmpl$9 = /*#__PURE__*/ template(`<div class="flex min-h-0 flex-col gap-5 overflow-y-auto p-6"><section class="rounded-xl border border-border bg-background/45 p-4"aria-label="Version status"><div class="flex flex-wrap items-start justify-between gap-4"><div class="flex flex-col gap-1"><p class="text-2xs font-semibold tracking-widest text-muted-foreground uppercase">Installed version</p><p class="text-xl font-semibold tracking-tight">v</p><p class="text-sm text-muted-foreground">`);
|
|
20
|
+
var _tmpl$0 = /*#__PURE__*/ template(`<p class="text-xs text-muted-foreground">Released `);
|
|
21
|
+
function errorMessage(caught, fallback) {
|
|
22
|
+
if (caught instanceof Error && caught.message) return caught.message;
|
|
23
|
+
if (typeof caught === "string" && caught) return caught;
|
|
24
|
+
return fallback;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The phases during which the updater is working. `downloading` and `installing`
|
|
28
|
+
* are included because the shell can be in either while the dialog is open, and
|
|
29
|
+
* offering an enabled Install button during a download is how a double-install
|
|
30
|
+
* happens.
|
|
31
|
+
*/
|
|
32
|
+
function isBusy(state) {
|
|
33
|
+
return state?.phase === "checking" || state?.phase === "downloading" || state?.phase === "installing";
|
|
34
|
+
}
|
|
35
|
+
function UpdateDialog(props) {
|
|
36
|
+
const [local] = splitProps(props, [
|
|
37
|
+
"adapter",
|
|
38
|
+
"appName",
|
|
39
|
+
"fallbackVersion",
|
|
40
|
+
"desktopOnlyMessage",
|
|
41
|
+
"open",
|
|
42
|
+
"defaultOpen",
|
|
43
|
+
"onOpenChange",
|
|
44
|
+
"class"
|
|
45
|
+
]);
|
|
46
|
+
const [uncontrolledOpen, setUncontrolledOpen] = createSignal(local.defaultOpen ?? false);
|
|
47
|
+
const open = () => local.open ?? uncontrolledOpen();
|
|
48
|
+
const setOpen = (next) => {
|
|
49
|
+
if (local.open === void 0) setUncontrolledOpen(next);
|
|
50
|
+
local.onOpenChange?.(next);
|
|
51
|
+
};
|
|
52
|
+
const appName = () => local.appName ?? "the application";
|
|
53
|
+
const desktop = () => local.adapter.isDesktopRuntime();
|
|
54
|
+
const [state, setState] = createSignal(null);
|
|
55
|
+
const [busy, setBusy] = createSignal(false);
|
|
56
|
+
const [error, setError] = createSignal("");
|
|
57
|
+
const loadStatus = async () => {
|
|
58
|
+
if (!desktop()) return;
|
|
59
|
+
try {
|
|
60
|
+
setState(await local.adapter.getStatus());
|
|
61
|
+
} catch (caught) {
|
|
62
|
+
setError(errorMessage(caught, "Version status is unavailable"));
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
onMount(() => {
|
|
66
|
+
if (desktop()) loadStatus();
|
|
67
|
+
});
|
|
68
|
+
const check = async () => {
|
|
69
|
+
if (!desktop()) {
|
|
70
|
+
setError(local.desktopOnlyMessage ?? `Update checks are available from the desktop app.`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
setBusy(true);
|
|
74
|
+
setError("");
|
|
75
|
+
try {
|
|
76
|
+
setState(await local.adapter.check());
|
|
77
|
+
} catch (caught) {
|
|
78
|
+
setError(errorMessage(caught, "Could not check for updates"));
|
|
79
|
+
await loadStatus();
|
|
80
|
+
} finally {
|
|
81
|
+
setBusy(false);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Status first, then the check — and an `active` flag, because the dialog can
|
|
86
|
+
* close while the check is in flight and a late `setState` would write into a
|
|
87
|
+
* disposed scope.
|
|
88
|
+
*/
|
|
89
|
+
createEffect(() => {
|
|
90
|
+
if (!open() || !desktop()) return;
|
|
91
|
+
let active = true;
|
|
92
|
+
setError("");
|
|
93
|
+
setBusy(true);
|
|
94
|
+
(async () => {
|
|
95
|
+
try {
|
|
96
|
+
const current = await local.adapter.getStatus();
|
|
97
|
+
if (!active) return;
|
|
98
|
+
setState(current);
|
|
99
|
+
const checked = await local.adapter.check();
|
|
100
|
+
if (active) setState(checked);
|
|
101
|
+
} catch (caught) {
|
|
102
|
+
if (active) setError(errorMessage(caught, "Could not check for updates"));
|
|
103
|
+
} finally {
|
|
104
|
+
if (active) setBusy(false);
|
|
105
|
+
}
|
|
106
|
+
})();
|
|
107
|
+
return () => {
|
|
108
|
+
active = false;
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
const install = async () => {
|
|
112
|
+
const version = state()?.availableVersion;
|
|
113
|
+
if (!version) return;
|
|
114
|
+
setBusy(true);
|
|
115
|
+
setError("");
|
|
116
|
+
try {
|
|
117
|
+
const next = await local.adapter.install(version);
|
|
118
|
+
setState(next);
|
|
119
|
+
if (next.phase === "failed") setError(errorMessage(next.error, "Update installation failed"));
|
|
120
|
+
} catch (caught) {
|
|
121
|
+
setError(errorMessage(caught, "Update installation failed"));
|
|
122
|
+
await loadStatus();
|
|
123
|
+
} finally {
|
|
124
|
+
setBusy(false);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const changelog = createMemo(() => plainTextFromMarkdown(state()?.changelog ?? ""));
|
|
128
|
+
const notes = () => {
|
|
129
|
+
const value = state()?.releaseNotes;
|
|
130
|
+
return value ? plainTextFromMarkdown(value) : "";
|
|
131
|
+
};
|
|
132
|
+
const working = () => busy() || isBusy(state());
|
|
133
|
+
const triggerLabel = () => {
|
|
134
|
+
const current = state();
|
|
135
|
+
const fallback = `v${local.fallbackVersion ?? "0.1.0"}`;
|
|
136
|
+
if (!current) return `${appName()} ${fallback}`;
|
|
137
|
+
switch (current.phase) {
|
|
138
|
+
case "checking": return "Checking for updates…";
|
|
139
|
+
case "available": return current.availableVersion ? `Update v${current.availableVersion} available` : "Update available";
|
|
140
|
+
case "downloading":
|
|
141
|
+
case "installing": return "Installing update…";
|
|
142
|
+
case "failed": return `Version ${current.currentVersion || fallback} · Retry`;
|
|
143
|
+
default: return `${appName()} v${current.currentVersion || fallback}`;
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const progressValue = () => {
|
|
147
|
+
const current = state();
|
|
148
|
+
if (!current?.totalBytes || !current.downloadedBytes) return null;
|
|
149
|
+
return Math.min(100, Math.round(current.downloadedBytes / current.totalBytes * 100));
|
|
150
|
+
};
|
|
151
|
+
return createComponent(Dialog, {
|
|
152
|
+
get open() {
|
|
153
|
+
return open();
|
|
154
|
+
},
|
|
155
|
+
onOpenChange: setOpen,
|
|
156
|
+
get children() {
|
|
157
|
+
return [createComponent(Show, {
|
|
158
|
+
get when() {
|
|
159
|
+
return local.open === void 0;
|
|
160
|
+
},
|
|
161
|
+
get children() {
|
|
162
|
+
return createComponent(DialogTrigger, {
|
|
163
|
+
as: Button,
|
|
164
|
+
variant: "ghost",
|
|
165
|
+
size: "sm",
|
|
166
|
+
"aria-label": "Open version and updates",
|
|
167
|
+
"aria-haspopup": "dialog",
|
|
168
|
+
get children() {
|
|
169
|
+
return [createComponent(Show, {
|
|
170
|
+
get when() {
|
|
171
|
+
return state()?.phase === "available";
|
|
172
|
+
},
|
|
173
|
+
get fallback() {
|
|
174
|
+
return createComponent(RefreshCw, { "aria-hidden": "true" });
|
|
175
|
+
},
|
|
176
|
+
get children() {
|
|
177
|
+
return createComponent(Sparkles, { "aria-hidden": "true" });
|
|
178
|
+
}
|
|
179
|
+
}), memo(() => triggerLabel())];
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}), createComponent(DialogContent, {
|
|
184
|
+
get ["class"]() {
|
|
185
|
+
return cn("max-w-3xl", local.class);
|
|
186
|
+
},
|
|
187
|
+
get children() {
|
|
188
|
+
return [
|
|
189
|
+
createComponent(DialogHeader, { get children() {
|
|
190
|
+
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
|
|
191
|
+
insert(_el$2, createComponent(Sparkles, {
|
|
192
|
+
"class": "size-5",
|
|
193
|
+
"aria-hidden": "true"
|
|
194
|
+
}));
|
|
195
|
+
insert(_el$3, createComponent(DialogTitle, { children: "Version & updates" }), null);
|
|
196
|
+
insert(_el$3, createComponent(DialogDescription, { get children() {
|
|
197
|
+
return [
|
|
198
|
+
"Keep ",
|
|
199
|
+
memo(() => appName()),
|
|
200
|
+
" current and review what changed in each release."
|
|
201
|
+
];
|
|
202
|
+
} }), null);
|
|
203
|
+
return _el$;
|
|
204
|
+
} }),
|
|
205
|
+
(() => {
|
|
206
|
+
var _el$4 = _tmpl$9(), _el$6 = _el$4.firstChild.firstChild, _el$9 = _el$6.firstChild.firstChild.nextSibling;
|
|
207
|
+
_el$9.firstChild;
|
|
208
|
+
var _el$1 = _el$9.nextSibling;
|
|
209
|
+
insert(_el$9, () => state()?.currentVersion || local.fallbackVersion || "0.1.0", null);
|
|
210
|
+
insert(_el$1, createComponent(Show, {
|
|
211
|
+
get when() {
|
|
212
|
+
return state()?.phase === "current";
|
|
213
|
+
},
|
|
214
|
+
get fallback() {
|
|
215
|
+
return createComponent(Show, {
|
|
216
|
+
get when() {
|
|
217
|
+
return memo(() => state()?.phase === "available")() && state()?.availableVersion;
|
|
218
|
+
},
|
|
219
|
+
get fallback() {
|
|
220
|
+
return memo(() => !!desktop())() ? "Check the release channel for the latest signed build." : local.desktopOnlyMessage ?? `Open this dialog inside the desktop app to check for updates.`;
|
|
221
|
+
},
|
|
222
|
+
get children() {
|
|
223
|
+
return `A newer release, v${state()?.availableVersion}, is ready.`;
|
|
224
|
+
}
|
|
225
|
+
});
|
|
226
|
+
},
|
|
227
|
+
children: "You are running the latest release."
|
|
228
|
+
}));
|
|
229
|
+
insert(_el$6, createComponent(Button, {
|
|
230
|
+
type: "button",
|
|
231
|
+
variant: "outline",
|
|
232
|
+
size: "sm",
|
|
233
|
+
get disabled() {
|
|
234
|
+
return !desktop() || working();
|
|
235
|
+
},
|
|
236
|
+
onClick: () => void check(),
|
|
237
|
+
get children() {
|
|
238
|
+
return [createComponent(Show, {
|
|
239
|
+
get when() {
|
|
240
|
+
return working();
|
|
241
|
+
},
|
|
242
|
+
get fallback() {
|
|
243
|
+
return createComponent(RefreshCw, { "aria-hidden": "true" });
|
|
244
|
+
},
|
|
245
|
+
get children() {
|
|
246
|
+
return createComponent(LoaderCircle, {
|
|
247
|
+
"class": "animate-spin",
|
|
248
|
+
"aria-hidden": "true"
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}), "Check latest version"];
|
|
252
|
+
}
|
|
253
|
+
}), null);
|
|
254
|
+
insert(_el$4, createComponent(Show, {
|
|
255
|
+
get when() {
|
|
256
|
+
return memo(() => state()?.phase === "available")() && state()?.availableVersion;
|
|
257
|
+
},
|
|
258
|
+
get children() {
|
|
259
|
+
var _el$10 = _tmpl$2(), _el$11 = _el$10.firstChild, _el$12 = _el$11.firstChild, _el$13 = _el$12.firstChild, _el$14 = _el$13.firstChild, _el$16 = _el$14.nextSibling;
|
|
260
|
+
_el$16.nextSibling;
|
|
261
|
+
var _el$17 = _el$13.nextSibling, _el$20 = _el$17.firstChild.nextSibling;
|
|
262
|
+
_el$20.nextSibling;
|
|
263
|
+
insert(_el$13, createComponent(Sparkles, {
|
|
264
|
+
"class": "size-4 text-primary",
|
|
265
|
+
"aria-hidden": "true"
|
|
266
|
+
}), _el$14);
|
|
267
|
+
insert(_el$13, () => state()?.availableVersion, _el$16);
|
|
268
|
+
insert(_el$17, appName, _el$20);
|
|
269
|
+
insert(_el$12, createComponent(Show, {
|
|
270
|
+
get when() {
|
|
271
|
+
return formatReleaseDate(state()?.releaseDate ?? null);
|
|
272
|
+
},
|
|
273
|
+
children: (released) => (() => {
|
|
274
|
+
var _el$35 = _tmpl$0();
|
|
275
|
+
_el$35.firstChild;
|
|
276
|
+
insert(_el$35, released, null);
|
|
277
|
+
return _el$35;
|
|
278
|
+
})()
|
|
279
|
+
}), null);
|
|
280
|
+
insert(_el$11, createComponent(Button, {
|
|
281
|
+
type: "button",
|
|
282
|
+
size: "sm",
|
|
283
|
+
get disabled() {
|
|
284
|
+
return working();
|
|
285
|
+
},
|
|
286
|
+
onClick: () => void install(),
|
|
287
|
+
get children() {
|
|
288
|
+
return [createComponent(Show, {
|
|
289
|
+
get when() {
|
|
290
|
+
return working();
|
|
291
|
+
},
|
|
292
|
+
get fallback() {
|
|
293
|
+
return createComponent(Download, { "aria-hidden": "true" });
|
|
294
|
+
},
|
|
295
|
+
get children() {
|
|
296
|
+
return createComponent(LoaderCircle, {
|
|
297
|
+
"class": "animate-spin",
|
|
298
|
+
"aria-hidden": "true"
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
}), "Install and restart"];
|
|
302
|
+
}
|
|
303
|
+
}), null);
|
|
304
|
+
return _el$10;
|
|
305
|
+
}
|
|
306
|
+
}), null);
|
|
307
|
+
insert(_el$4, createComponent(Show, {
|
|
308
|
+
get when() {
|
|
309
|
+
return state()?.phase === "downloading" || state()?.phase === "installing";
|
|
310
|
+
},
|
|
311
|
+
get children() {
|
|
312
|
+
var _el$21 = _tmpl$3(), _el$22 = _el$21.firstChild;
|
|
313
|
+
insert(_el$21, createComponent(Progress, {
|
|
314
|
+
get value() {
|
|
315
|
+
return progressValue() ?? void 0;
|
|
316
|
+
},
|
|
317
|
+
get ["aria-label"]() {
|
|
318
|
+
return state()?.phase === "installing" ? "Installing update" : "Downloading update";
|
|
319
|
+
}
|
|
320
|
+
}), _el$22);
|
|
321
|
+
insert(_el$22, createComponent(Show, {
|
|
322
|
+
get when() {
|
|
323
|
+
return state()?.phase === "installing";
|
|
324
|
+
},
|
|
325
|
+
get fallback() {
|
|
326
|
+
return createComponent(Show, {
|
|
327
|
+
get when() {
|
|
328
|
+
return progressValue() !== null;
|
|
329
|
+
},
|
|
330
|
+
fallback: "Downloading…",
|
|
331
|
+
get children() {
|
|
332
|
+
return `${formatBytes(state()?.downloadedBytes ?? 0)} of ${formatBytes(state()?.totalBytes ?? 0)} · ${progressValue()}%`;
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
},
|
|
336
|
+
children: "Applying the update…"
|
|
337
|
+
}));
|
|
338
|
+
return _el$21;
|
|
339
|
+
}
|
|
340
|
+
}), null);
|
|
341
|
+
insert(_el$4, createComponent(Show, {
|
|
342
|
+
get when() {
|
|
343
|
+
return state()?.phase === "current";
|
|
344
|
+
},
|
|
345
|
+
get children() {
|
|
346
|
+
var _el$23 = _tmpl$4(), _el$24 = _el$23.firstChild;
|
|
347
|
+
insert(_el$23, createComponent(Check, {
|
|
348
|
+
"class": "size-4",
|
|
349
|
+
"aria-hidden": "true"
|
|
350
|
+
}), _el$24);
|
|
351
|
+
insert(_el$23, appName, _el$24);
|
|
352
|
+
return _el$23;
|
|
353
|
+
}
|
|
354
|
+
}), null);
|
|
355
|
+
insert(_el$4, createComponent(Show, {
|
|
356
|
+
get when() {
|
|
357
|
+
return state()?.phase === "installed";
|
|
358
|
+
},
|
|
359
|
+
get children() {
|
|
360
|
+
var _el$25 = _tmpl$5();
|
|
361
|
+
insert(_el$25, createComponent(Check, {
|
|
362
|
+
"class": "size-4",
|
|
363
|
+
"aria-hidden": "true"
|
|
364
|
+
}), null);
|
|
365
|
+
insert(_el$25, createComponent(Show, {
|
|
366
|
+
get when() {
|
|
367
|
+
return state()?.restartRequired;
|
|
368
|
+
},
|
|
369
|
+
fallback: "The update is applied.",
|
|
370
|
+
get children() {
|
|
371
|
+
return [
|
|
372
|
+
"Restart ",
|
|
373
|
+
memo(() => appName()),
|
|
374
|
+
" to finish the update."
|
|
375
|
+
];
|
|
376
|
+
}
|
|
377
|
+
}), null);
|
|
378
|
+
return _el$25;
|
|
379
|
+
}
|
|
380
|
+
}), null);
|
|
381
|
+
insert(_el$4, createComponent(Show, {
|
|
382
|
+
get when() {
|
|
383
|
+
return error();
|
|
384
|
+
},
|
|
385
|
+
get children() {
|
|
386
|
+
var _el$26 = _tmpl$6();
|
|
387
|
+
insert(_el$26, error);
|
|
388
|
+
return _el$26;
|
|
389
|
+
}
|
|
390
|
+
}), null);
|
|
391
|
+
insert(_el$4, createComponent(Show, {
|
|
392
|
+
get when() {
|
|
393
|
+
return notes();
|
|
394
|
+
},
|
|
395
|
+
get children() {
|
|
396
|
+
var _el$27 = _tmpl$7(), _el$28 = _el$27.firstChild;
|
|
397
|
+
_el$28.firstChild;
|
|
398
|
+
var _el$30 = _el$28.nextSibling;
|
|
399
|
+
insert(_el$28, createComponent(Badge, {
|
|
400
|
+
variant: "subtle",
|
|
401
|
+
size: "sm",
|
|
402
|
+
get children() {
|
|
403
|
+
return ["v", memo(() => state()?.availableVersion)];
|
|
404
|
+
}
|
|
405
|
+
}), null);
|
|
406
|
+
insert(_el$30, notes);
|
|
407
|
+
return _el$27;
|
|
408
|
+
}
|
|
409
|
+
}), null);
|
|
410
|
+
insert(_el$4, createComponent(Show, {
|
|
411
|
+
get when() {
|
|
412
|
+
return changelog();
|
|
413
|
+
},
|
|
414
|
+
get children() {
|
|
415
|
+
var _el$31 = _tmpl$8(), _el$34 = _el$31.firstChild.nextSibling.nextSibling;
|
|
416
|
+
insert(_el$34, changelog);
|
|
417
|
+
return _el$31;
|
|
418
|
+
}
|
|
419
|
+
}), null);
|
|
420
|
+
return _el$4;
|
|
421
|
+
})(),
|
|
422
|
+
createComponent(DialogFooter, { get children() {
|
|
423
|
+
return [createComponent(Show, {
|
|
424
|
+
get when() {
|
|
425
|
+
return state()?.releaseUrl;
|
|
426
|
+
},
|
|
427
|
+
children: (url) => createComponent(Button, {
|
|
428
|
+
type: "button",
|
|
429
|
+
variant: "ghost",
|
|
430
|
+
size: "sm",
|
|
431
|
+
onClick: () => window.open(url(), "_blank", "noopener,noreferrer"),
|
|
432
|
+
get children() {
|
|
433
|
+
return [createComponent(ExternalLink, { "aria-hidden": "true" }), "View releases"];
|
|
434
|
+
}
|
|
435
|
+
})
|
|
436
|
+
}), createComponent(DialogClose, {
|
|
437
|
+
as: Button,
|
|
438
|
+
variant: "outline",
|
|
439
|
+
size: "sm",
|
|
440
|
+
children: "Close"
|
|
441
|
+
})];
|
|
442
|
+
} })
|
|
443
|
+
];
|
|
444
|
+
}
|
|
445
|
+
})];
|
|
446
|
+
}
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
//#endregion
|
|
450
|
+
export { UpdateDialog };
|
|
451
|
+
|
|
452
|
+
//# sourceMappingURL=update-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-dialog.js","names":["createEffect","createMemo","createSignal","onMount","Show","splitProps","Check","Download","ExternalLink","LoaderCircle","RefreshCw","Sparkles","Badge","Button","Dialog","DialogClose","DialogContent","DialogDescription","DialogFooter","DialogHeader","DialogTitle","DialogTrigger","Progress","cn","formatBytes","formatReleaseDate","plainTextFromMarkdown","UpdatePhase","UpdateState","Readonly","phase","currentVersion","availableVersion","changelog","releaseNotes","releaseDate","downloadedBytes","totalBytes","error","releaseUrl","restartRequired","UpdateAdapter","getStatus","Promise","check","install","expectedVersion","isDesktopRuntime","UpdateDialogProps","adapter","appName","fallbackVersion","desktopOnlyMessage","open","defaultOpen","onOpenChange","class","errorMessage","caught","fallback","Error","message","isBusy","state","UpdateDialog","props","local","uncontrolledOpen","setUncontrolledOpen","setOpen","next","undefined","desktop","setState","busy","setBusy","setError","loadStatus","active","current","checked","version","notes","value","working","triggerLabel","progressValue","Math","min","round","_$createComponent","children","when","as","variant","size","_$memo","_el$","_tmpl$","_el$2","firstChild","_el$3","nextSibling","_$insert","_el$4","_tmpl$9","_el$5","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","type","disabled","onClick","_el$10","_tmpl$2","_el$11","_el$12","_el$13","_el$14","_el$16","_el$15","_el$17","_el$18","_el$20","_el$19","released","_el$35","_tmpl$0","_el$36","_el$21","_tmpl$3","_el$22","aria-label","_el$23","_tmpl$4","_el$24","_el$25","_tmpl$5","_el$26","_tmpl$6","_el$27","_tmpl$7","_el$28","_el$29","_el$30","_el$31","_tmpl$8","_el$32","_el$33","_el$34","url","window","_$createComponent","_$memo"],"sources":["../../../../src/components/composites/update-dialog/update-dialog.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, onMount, Show, splitProps } from 'solid-js'\nimport { Check, Download, ExternalLink, LoaderCircle, RefreshCw, Sparkles } from 'lucide-solid'\nimport { Badge } from '../../ui/badge'\nimport { Button } from '../../ui/button'\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from '../../ui/dialog'\nimport { Progress } from '../../ui/progress'\nimport { cn } from '#lib/utils'\nimport { formatBytes, formatReleaseDate, plainTextFromMarkdown } from '#lib/version-notes'\n\n/**\n * UpdateDialog.\n *\n * A software-update surface: the installed version, whether a newer release\n * exists, a download that shows its progress, and the release notes for what is\n * about to arrive.\n *\n * The transport is an adapter, because an update is the one thing a component\n * library genuinely cannot implement: it is signed, downloaded and applied by the\n * application's own updater, and the mechanism differs per shell. What *is*\n * general is the phase machine and the way each phase is presented — and that is\n * where the hard-won detail lives:\n *\n * **A refused install answers with a normal payload, not a rejection.** adea's\n * shell returns a status whose phase is `failed` when a download or an extract\n * fails, rather than throwing. Without handling that, clicking install looked like\n * nothing happened at all — the button spun, the phase never changed, and the\n * error sat unread in a field nobody rendered. The `failed` phase after an install\n * is therefore surfaced as an error, explicitly.\n *\n * **Busy is derived from the snapshot as well as from the click.** An update can\n * be downloading while the dialog is open — started before it opened, or by the\n * shell's own poll — so a local `busy` flag alone would offer an enabled Install\n * button mid-download.\n *\n * **Opening the dialog loads status first, then checks.** Status paints the\n * installed version immediately; the check is a network round trip. Doing them in\n * the other order leaves the dialog blank for as long as the check takes, on a\n * dialog whose first question is always \"what am I running?\".\n *\n * **Errors are not always `Error`s.** An adapter can reject with a string, and a\n * shell can answer with an error field. Both are read, and a fallback is shown\n * rather than an empty alert.\n *\n * The adapter's `isDesktopRuntime` gate exists because an update is a desktop\n * concern: a browser build has no installer, and the honest thing to show is that\n * updates are available in the desktop application rather than a disabled button\n * with no reason.\n */\n\n/** The phase an update is in. The union is the state machine. */\nexport type UpdatePhase =\n | 'idle'\n | 'checking'\n | 'current'\n | 'available'\n | 'downloading'\n | 'installing'\n | 'installed'\n | 'failed'\n\n/** A snapshot of the updater. Every field the dialog renders, and nothing else. */\nexport type UpdateState = Readonly<{\n phase: UpdatePhase\n /** The version currently installed. */\n currentVersion: string\n /** The version that can be installed, when one can. */\n availableVersion?: string | null\n /** A changelog for the installed channel, as markdown. */\n changelog?: string\n /** Notes for the available release, as markdown. */\n releaseNotes?: string | null\n /** The available release's date, as an ISO string. */\n releaseDate?: string | null\n /** Bytes downloaded so far, during `downloading`. */\n downloadedBytes?: number\n /** Total bytes, when the server sent a length. */\n totalBytes?: number | null\n /** Set when `phase` is `failed`, and sometimes when it is not. */\n error?: string | null\n /** A URL for the release's page. */\n releaseUrl?: string | null\n /** True when the application must restart to finish. */\n restartRequired?: boolean\n}>\n\n/**\n * The updater, as the application exposes it. Three calls, each answering with a\n * full snapshot rather than a delta — an updater's state is small, and a snapshot\n * cannot drift from the shell's own view of it.\n */\nexport type UpdateAdapter = Readonly<{\n /** The current state, without contacting the release channel. */\n getStatus(): Promise<UpdateState>\n /** Ask the release channel, and answer with what it found. */\n check(): Promise<UpdateState>\n /**\n * Download and apply `expectedVersion`.\n *\n * The argument is the version the caller believes is available, so the updater\n * can refuse a request that raced a newer release rather than installing the\n * wrong one.\n */\n install(expectedVersion: string): Promise<UpdateState>\n /** False in a browser build, where there is no installer to drive. */\n isDesktopRuntime(): boolean\n}>\n\nexport type UpdateDialogProps = {\n adapter: UpdateAdapter\n /** The application's name, used in the title and the copy. */\n appName?: string\n /** Shown before the first status arrives, so the dialog is never blank. */\n fallbackVersion?: string\n /** Copy for the adapter's non-desktop case. */\n desktopOnlyMessage?: string\n /** A controlled open state. Omit for the trigger to manage its own. */\n open?: boolean\n /**\n * Start open, uncontrolled — for a caller that opens the dialog because it found\n * something (\"an update is available\") rather than because the user asked. The\n * trigger is still rendered, so the dialog is reachable again after closing.\n */\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n /** Render only the panel, for a caller that provides its own dialog. */\n class?: string\n}\n\nfunction errorMessage(caught: unknown, fallback: string): string {\n if (caught instanceof Error && caught.message) return caught.message\n if (typeof caught === 'string' && caught) return caught\n return fallback\n}\n\n/**\n * The phases during which the updater is working. `downloading` and `installing`\n * are included because the shell can be in either while the dialog is open, and\n * offering an enabled Install button during a download is how a double-install\n * happens.\n */\nfunction isBusy(state: UpdateState | null): boolean {\n return (\n state?.phase === 'checking' || state?.phase === 'downloading' || state?.phase === 'installing'\n )\n}\n\nexport function UpdateDialog(props: UpdateDialogProps) {\n const [local] = splitProps(props, [\n 'adapter',\n 'appName',\n 'fallbackVersion',\n 'desktopOnlyMessage',\n 'open',\n 'defaultOpen',\n 'onOpenChange',\n 'class',\n ])\n\n const [uncontrolledOpen, setUncontrolledOpen] = createSignal(local.defaultOpen ?? false)\n const open = () => local.open ?? uncontrolledOpen()\n const setOpen = (next: boolean) => {\n if (local.open === undefined) setUncontrolledOpen(next)\n local.onOpenChange?.(next)\n }\n\n const appName = () => local.appName ?? 'the application'\n const desktop = () => local.adapter.isDesktopRuntime()\n const [state, setState] = createSignal<UpdateState | null>(null)\n const [busy, setBusy] = createSignal(false)\n const [error, setError] = createSignal('')\n\n const loadStatus = async () => {\n if (!desktop()) return\n try {\n setState(await local.adapter.getStatus())\n } catch (caught) {\n setError(errorMessage(caught, 'Version status is unavailable'))\n }\n }\n\n onMount(() => {\n if (desktop()) void loadStatus()\n })\n\n const check = async () => {\n if (!desktop()) {\n setError(local.desktopOnlyMessage ?? `Update checks are available from the desktop app.`)\n return\n }\n setBusy(true)\n setError('')\n try {\n setState(await local.adapter.check())\n } catch (caught) {\n setError(errorMessage(caught, 'Could not check for updates'))\n await loadStatus()\n } finally {\n setBusy(false)\n }\n }\n\n /**\n * Status first, then the check — and an `active` flag, because the dialog can\n * close while the check is in flight and a late `setState` would write into a\n * disposed scope.\n */\n createEffect(() => {\n if (!open() || !desktop()) return\n let active = true\n setError('')\n setBusy(true)\n void (async () => {\n try {\n const current = await local.adapter.getStatus()\n if (!active) return\n setState(current)\n const checked = await local.adapter.check()\n if (active) setState(checked)\n } catch (caught) {\n if (active) setError(errorMessage(caught, 'Could not check for updates'))\n } finally {\n if (active) setBusy(false)\n }\n })()\n return () => {\n active = false\n }\n })\n\n const install = async () => {\n const version = state()?.availableVersion\n if (!version) return\n setBusy(true)\n setError('')\n try {\n const next = await local.adapter.install(version)\n setState(next)\n // A refused install answers with a normal payload whose phase is `failed`.\n // Without this the click looked like nothing happened.\n if (next.phase === 'failed') {\n setError(errorMessage(next.error, 'Update installation failed'))\n }\n } catch (caught) {\n setError(errorMessage(caught, 'Update installation failed'))\n await loadStatus()\n } finally {\n setBusy(false)\n }\n }\n\n const changelog = createMemo(() => plainTextFromMarkdown(state()?.changelog ?? ''))\n const notes = () => {\n const value = state()?.releaseNotes\n return value ? plainTextFromMarkdown(value) : ''\n }\n const working = () => busy() || isBusy(state())\n\n const triggerLabel = () => {\n const current = state()\n const fallback = `v${local.fallbackVersion ?? '0.1.0'}`\n if (!current) return `${appName()} ${fallback}`\n switch (current.phase) {\n case 'checking':\n return 'Checking for updates…'\n case 'available':\n return current.availableVersion\n ? `Update v${current.availableVersion} available`\n : 'Update available'\n case 'downloading':\n case 'installing':\n return 'Installing update…'\n case 'failed':\n return `Version ${current.currentVersion || fallback} · Retry`\n default:\n return `${appName()} v${current.currentVersion || fallback}`\n }\n }\n\n const progressValue = () => {\n const current = state()\n if (!current?.totalBytes || !current.downloadedBytes) return null\n return Math.min(100, Math.round((current.downloadedBytes / current.totalBytes) * 100))\n }\n\n return (\n <Dialog open={open()} onOpenChange={setOpen}>\n <Show when={local.open === undefined}>\n <DialogTrigger\n as={Button}\n variant=\"ghost\"\n size=\"sm\"\n aria-label=\"Open version and updates\"\n aria-haspopup=\"dialog\"\n >\n <Show when={state()?.phase === 'available'} fallback={<RefreshCw aria-hidden=\"true\" />}>\n <Sparkles aria-hidden=\"true\" />\n </Show>\n {triggerLabel()}\n </DialogTrigger>\n </Show>\n\n <DialogContent class={cn('max-w-3xl', local.class)}>\n <DialogHeader>\n <div class=\"flex items-center gap-3\">\n <span class=\"flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground\">\n <Sparkles class=\"size-5\" aria-hidden=\"true\" />\n </span>\n <div>\n <DialogTitle>Version & updates</DialogTitle>\n <DialogDescription>\n Keep {appName()} current and review what changed in each release.\n </DialogDescription>\n </div>\n </div>\n </DialogHeader>\n\n <div class=\"flex min-h-0 flex-col gap-5 overflow-y-auto p-6\">\n <section\n class=\"rounded-xl border border-border bg-background/45 p-4\"\n aria-label=\"Version status\"\n >\n <div class=\"flex flex-wrap items-start justify-between gap-4\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"text-2xs font-semibold tracking-widest text-muted-foreground uppercase\">\n Installed version\n </p>\n <p class=\"text-xl font-semibold tracking-tight\">\n v{state()?.currentVersion || local.fallbackVersion || '0.1.0'}\n </p>\n <p class=\"text-sm text-muted-foreground\">\n <Show\n when={state()?.phase === 'current'}\n fallback={\n <Show\n when={state()?.phase === 'available' && state()?.availableVersion}\n fallback={\n desktop()\n ? 'Check the release channel for the latest signed build.'\n : (local.desktopOnlyMessage ??\n `Open this dialog inside the desktop app to check for updates.`)\n }\n >\n {`A newer release, v${state()?.availableVersion}, is ready.`}\n </Show>\n }\n >\n You are running the latest release.\n </Show>\n </p>\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n disabled={!desktop() || working()}\n onClick={() => void check()}\n >\n <Show when={working()} fallback={<RefreshCw aria-hidden=\"true\" />}>\n <LoaderCircle class=\"animate-spin\" aria-hidden=\"true\" />\n </Show>\n Check latest version\n </Button>\n </div>\n </section>\n\n <Show when={state()?.phase === 'available' && state()?.availableVersion}>\n <section\n class=\"rounded-xl border border-primary/35 bg-primary-subtle p-4\"\n aria-label=\"Available update\"\n >\n <div class=\"flex flex-wrap items-start justify-between gap-4\">\n <div class=\"flex flex-col gap-1\">\n <p class=\"flex items-center gap-2 text-sm font-semibold\">\n <Sparkles class=\"size-4 text-primary\" aria-hidden=\"true\" />\n Version {state()?.availableVersion} is ready\n </p>\n <p class=\"text-sm text-muted-foreground\">\n The signed installer is verified before {appName()} restarts.\n </p>\n <Show when={formatReleaseDate(state()?.releaseDate ?? null)}>\n {(released) => (\n <p class=\"text-xs text-muted-foreground\">Released {released()}</p>\n )}\n </Show>\n </div>\n <Button type=\"button\" size=\"sm\" disabled={working()} onClick={() => void install()}>\n <Show when={working()} fallback={<Download aria-hidden=\"true\" />}>\n <LoaderCircle class=\"animate-spin\" aria-hidden=\"true\" />\n </Show>\n Install and restart\n </Button>\n </div>\n </section>\n </Show>\n\n {/*\n Progress with both numbers: a bar alone does not distinguish a stalled\n download from a slow one, and \"12.4 MB of 48.1 MB\" does.\n */}\n <Show when={state()?.phase === 'downloading' || state()?.phase === 'installing'}>\n <section class=\"grid gap-2\" aria-label=\"Update progress\">\n <Progress\n value={progressValue() ?? undefined}\n aria-label={\n state()?.phase === 'installing' ? 'Installing update' : 'Downloading update'\n }\n />\n <p class=\"text-xs text-muted-foreground\" role=\"status\">\n <Show\n when={state()?.phase === 'installing'}\n fallback={\n <Show when={progressValue() !== null} fallback=\"Downloading…\">\n {`${formatBytes(state()?.downloadedBytes ?? 0)} of ${formatBytes(\n state()?.totalBytes ?? 0\n )} · ${progressValue()}%`}\n </Show>\n }\n >\n Applying the update…\n </Show>\n </p>\n </section>\n </Show>\n\n <Show when={state()?.phase === 'current'}>\n <p class=\"flex items-center gap-2 text-sm text-success\" role=\"status\">\n <Check class=\"size-4\" aria-hidden=\"true\" />\n {appName()} is up to date.\n </p>\n </Show>\n\n <Show when={state()?.phase === 'installed'}>\n <p class=\"flex items-center gap-2 text-sm text-success\" role=\"status\">\n <Check class=\"size-4\" aria-hidden=\"true\" />\n <Show when={state()?.restartRequired} fallback=\"The update is applied.\">\n Restart {appName()} to finish the update.\n </Show>\n </p>\n </Show>\n\n <Show when={error()}>\n <p\n class=\"rounded-lg border border-destructive/35 bg-destructive-subtle px-3 py-2 text-sm text-destructive\"\n role=\"alert\"\n >\n {error()}\n </p>\n </Show>\n\n <Show when={notes()}>\n <section class=\"flex flex-col gap-2\" aria-labelledby=\"update-release-notes\">\n <div class=\"flex items-center gap-2\">\n <h2 id=\"update-release-notes\" class=\"text-sm font-semibold\">\n What changed in this release\n </h2>\n <Badge variant=\"subtle\" size=\"sm\">\n v{state()?.availableVersion}\n </Badge>\n </div>\n {/* A long text block with no focusable descendant: it needs its own tab\n stop, named by the heading above it, or a keyboard user cannot\n scroll it (`scrollable-region-focusable`). */}\n <div\n class=\"max-h-52 overflow-y-auto rounded-xl border border-border bg-background/45 p-4 font-mono text-xs leading-5 whitespace-pre-wrap text-muted-foreground\"\n role=\"region\"\n aria-labelledby=\"update-release-notes\"\n tabindex=\"0\"\n >\n {notes()}\n </div>\n </section>\n </Show>\n\n <Show when={changelog()}>\n <section class=\"flex flex-col gap-2\" aria-labelledby=\"update-changelog\">\n <h2 id=\"update-changelog\" class=\"text-sm font-semibold\">\n Installed changelog\n </h2>\n <p class=\"text-xs text-muted-foreground\">\n A plain-text history of the installed release channel.\n </p>\n {/* A long text block with no focusable descendant: it needs its own tab\n stop, named by the heading above it, or a keyboard user cannot\n scroll it (`scrollable-region-focusable`). */}\n <div\n class=\"max-h-72 overflow-y-auto rounded-xl border border-border bg-background/45 p-4 font-mono text-xs leading-5 whitespace-pre-wrap text-muted-foreground\"\n role=\"region\"\n aria-labelledby=\"update-changelog\"\n tabindex=\"0\"\n >\n {changelog()}\n </div>\n </section>\n </Show>\n </div>\n\n <DialogFooter>\n <Show when={state()?.releaseUrl}>\n {(url) => (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n // `noopener,noreferrer` because the release page is a different\n // origin and must not get a handle on this window.\n onClick={() => window.open(url(), '_blank', 'noopener,noreferrer')}\n >\n <ExternalLink aria-hidden=\"true\" />\n View releases\n </Button>\n )}\n </Show>\n <DialogClose as={Button} variant=\"outline\" size=\"sm\">\n Close\n </DialogClose>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyIA,SAASyD,aAAaC,QAAiBC,UAA0B;CAC/D,IAAID,kBAAkBE,SAASF,OAAOG,SAAS,OAAOH,OAAOG;CAC7D,IAAI,OAAOH,WAAW,YAAYA,QAAQ,OAAOA;CACjD,OAAOC;AACT;;;;;;;AAQA,SAASG,OAAOC,OAAoC;CAClD,OACEA,OAAOjC,UAAU,cAAciC,OAAOjC,UAAU,iBAAiBiC,OAAOjC,UAAU;AAEtF;AAEA,SAAgBkC,aAAaC,OAA0B;CACrD,MAAM,CAACC,SAAS7D,WAAW4D,OAAO;EAChC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAO,CACR;CAED,MAAM,CAACE,kBAAkBC,uBAAuBlE,aAAagE,MAAMZ,eAAe,KAAK;CACvF,MAAMD,aAAaa,MAAMb,QAAQc,iBAAiB;CAClD,MAAME,WAAWC,SAAkB;EACjC,IAAIJ,MAAMb,SAASkB,KAAAA,GAAWH,oBAAoBE,IAAI;EACtDJ,MAAMX,eAAee,IAAI;CAC3B;CAEA,MAAMpB,gBAAgBgB,MAAMhB,WAAW;CACvC,MAAMsB,gBAAgBN,MAAMjB,QAAQF,iBAAiB;CACrD,MAAM,CAACgB,OAAOU,YAAYvE,aAAiC,IAAI;CAC/D,MAAM,CAACwE,MAAMC,WAAWzE,aAAa,KAAK;CAC1C,MAAM,CAACoC,OAAOsC,YAAY1E,aAAa,EAAE;CAEzC,MAAM2E,aAAa,YAAY;EAC7B,IAAI,CAACL,QAAQ,GAAG;EAChB,IAAI;GACFC,SAAS,MAAMP,MAAMjB,QAAQP,UAAU,CAAC;EAC1C,SAASgB,QAAQ;GACfkB,SAASnB,aAAaC,QAAQ,+BAA+B,CAAC;EAChE;CACF;CAEAvD,cAAc;EACZ,IAAIqE,QAAQ,GAAG,WAAgB;CACjC,CAAC;CAED,MAAM5B,QAAQ,YAAY;EACxB,IAAI,CAAC4B,QAAQ,GAAG;GACdI,SAASV,MAAMd,sBAAsB,mDAAmD;GACxF;EACF;EACAuB,QAAQ,IAAI;EACZC,SAAS,EAAE;EACX,IAAI;GACFH,SAAS,MAAMP,MAAMjB,QAAQL,MAAM,CAAC;EACtC,SAASc,QAAQ;GACfkB,SAASnB,aAAaC,QAAQ,6BAA6B,CAAC;GAC5D,MAAMmB,WAAW;EACnB,UAAU;GACRF,QAAQ,KAAK;EACf;CACF;;;;;;CAOA3E,mBAAmB;EACjB,IAAI,CAACqD,KAAK,KAAK,CAACmB,QAAQ,GAAG;EAC3B,IAAIM,SAAS;EACbF,SAAS,EAAE;EACXD,QAAQ,IAAI;EACZ,CAAM,YAAY;GAChB,IAAI;IACF,MAAMI,UAAU,MAAMb,MAAMjB,QAAQP,UAAU;IAC9C,IAAI,CAACoC,QAAQ;IACbL,SAASM,OAAO;IAChB,MAAMC,UAAU,MAAMd,MAAMjB,QAAQL,MAAM;IAC1C,IAAIkC,QAAQL,SAASO,OAAO;GAC9B,SAAStB,QAAQ;IACf,IAAIoB,QAAQF,SAASnB,aAAaC,QAAQ,6BAA6B,CAAC;GAC1E,UAAU;IACR,IAAIoB,QAAQH,QAAQ,KAAK;GAC3B;EACF,EAAA,CAAG;EACH,aAAa;GACXG,SAAS;EACX;CACF,CAAC;CAED,MAAMjC,UAAU,YAAY;EAC1B,MAAMoC,UAAUlB,MAAM,CAAC,EAAE/B;EACzB,IAAI,CAACiD,SAAS;EACdN,QAAQ,IAAI;EACZC,SAAS,EAAE;EACX,IAAI;GACF,MAAMN,OAAO,MAAMJ,MAAMjB,QAAQJ,QAAQoC,OAAO;GAChDR,SAASH,IAAI;GAGb,IAAIA,KAAKxC,UAAU,UACjB8C,SAASnB,aAAaa,KAAKhC,OAAO,4BAA4B,CAAC;EAEnE,SAASoB,QAAQ;GACfkB,SAASnB,aAAaC,QAAQ,4BAA4B,CAAC;GAC3D,MAAMmB,WAAW;EACnB,UAAU;GACRF,QAAQ,KAAK;EACf;CACF;CAEA,MAAM1C,YAAYhC,iBAAiByB,sBAAsBqC,MAAM,CAAC,EAAE9B,aAAa,EAAE,CAAC;CAClF,MAAMiD,cAAc;EAClB,MAAMC,QAAQpB,MAAM,CAAC,EAAE7B;EACvB,OAAOiD,QAAQzD,sBAAsByD,KAAK,IAAI;CAChD;CACA,MAAMC,gBAAgBV,KAAK,KAAKZ,OAAOC,MAAM,CAAC;CAE9C,MAAMsB,qBAAqB;EACzB,MAAMN,UAAUhB,MAAM;EACtB,MAAMJ,WAAW,IAAIO,MAAMf,mBAAmB;EAC9C,IAAI,CAAC4B,SAAS,OAAO,GAAG7B,QAAQ,EAAC,GAAIS;EACrC,QAAQoB,QAAQjD,OAAhB;GACE,KAAK,YACH,OAAO;GACT,KAAK,aACH,OAAOiD,QAAQ/C,mBACX,WAAW+C,QAAQ/C,iBAAgB,cACnC;GACN,KAAK;GACL,KAAK,cACH,OAAO;GACT,KAAK,UACH,OAAO,WAAW+C,QAAQhD,kBAAkB4B,SAAQ;GACtD,SACE,OAAO,GAAGT,QAAQ,EAAC,IAAK6B,QAAQhD,kBAAkB4B;EACtD;CACF;CAEA,MAAM2B,sBAAsB;EAC1B,MAAMP,UAAUhB,MAAM;EACtB,IAAI,CAACgB,SAAS1C,cAAc,CAAC0C,QAAQ3C,iBAAiB,OAAO;EAC7D,OAAOmD,KAAKC,IAAI,KAAKD,KAAKE,MAAOV,QAAQ3C,kBAAkB2C,QAAQ1C,aAAc,GAAG,CAAC;CACvF;CAEA,OAAAqD,gBACG5E,QAAM;EAAA,IAACuC,OAAI;GAAA,OAAEA,KAAK;EAAC;EAAEE,cAAcc;EAAO,IAAAsB,WAAA;GAAA,OAAA,CAAAD,gBACxCtF,MAAI;IAAA,IAACwF,OAAI;KAAA,OAAE1B,MAAMb,SAASkB,KAAAA;IAAS;IAAA,IAAAoB,WAAA;KAAA,OAAAD,gBACjCrE,eAAa;MACZwE,IAAIhF;MACJiF,SAAO;MACPC,MAAI;MAAA,cAAA;MAAA,iBAAA;MAAA,IAAAJ,WAAA;OAAA,OAAA,CAAAD,gBAIHtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU;QAAW;QAAA,IAAE6B,WAAQ;SAAA,OAAA+B,gBAAGhF,WAAS,EAAA,eAAA,OAAA,CAAA;QAAA;QAAA,IAAAiF,WAAA;SAAA,OAAAD,gBAC7D/E,UAAQ,EAAA,eAAA,OAAA,CAAA;QAAA;OAAA,CAAA,GAAAqF,WAEVX,aAAa,CAAC,CAAA;MAAA;KAAA,CAAA;IAAA;GAAA,CAAA,GAAAK,gBAIlB1E,eAAa;IAAA,KAAA,WAAA;KAAA,OAAQO,GAAG,aAAa2C,MAAMV,KAAK;IAAC;IAAA,IAAAmC,WAAA;KAAA,OAAA;MAAAD,gBAC/CvE,cAAY,EAAA,IAAAwE,WAAA;OAAA,IAAAM,OAAAC,OAAA,GAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAG;OAAAC,OAAAJ,OAAAT,gBAGN/E,UAAQ;QAAA,SAAA;QAAA,eAAA;OAAA,CAAA,CAAA;OAAA4F,OAAAF,OAAAX,gBAGRtE,aAAW,EAAAuE,UAAA,oBAAA,CAAA,GAAA,IAAA;OAAAY,OAAAF,OAAAX,gBACXzE,mBAAiB,EAAA,IAAA0E,WAAA;QAAA,OAAA;SAAA;SAAAK,WACV9C,QAAQ,CAAC;SAAA;QAAA;OAAA,EAAA,CAAA,GAAA,IAAA;OAAA,OAAA+C;MAAA,EAAA,CAAA;aAAA;OAAA,IAAAO,QAAAC,QAAA,GAAAE,QAAAH,MAAAJ,WAAAA,YAAAU,QAAAH,MAAAP,WAAAA,WAAAE;OAAAQ,MAAAV;OAAA,IAAAY,QAAAF,MAAAR;OAAAC,OAAAO,aAiBX/C,MAAM,CAAC,EAAEhC,kBAAkBmC,MAAMf,mBAAmB,SAAO,IAAA;OAAAoD,OAAAS,OAAAtB,gBAG5DtF,MAAI;QAAA,IACHwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU;QAAS;QAAA,IAClC6B,WAAQ;SAAA,OAAA+B,gBACLtF,MAAI;UAAA,IACHwF,OAAI;WAAA,OAAEI,WAAAjC,MAAM,CAAC,EAAEjC,UAAU,WAAW,CAAA,CAAA,KAAIiC,MAAM,CAAC,EAAE/B;UAAgB;UAAA,IACjE2B,WAAQ;WAAA,OACNqC,WAAA,CAAA,CAAAxB,QAAQ,CAAC,CAAA,CAAA,IACL,2DACCN,MAAMd,sBACP;UAAgE;UAAA,IAAAuC,WAAA;WAAA,OAGrE,qBAAqB5B,MAAM,CAAC,EAAE/B,iBAAgB;UAAa;SAAA,CAAA;QAAA;QAAA2D,UAAA;OAAA,CAAA,CAAA;OAAAY,OAAAI,OAAAjB,gBAQrE7E,QAAM;QACLoG,MAAI;QACJnB,SAAO;QACPC,MAAI;QAAA,IACJmB,WAAQ;SAAA,OAAE,CAAC1C,QAAQ,KAAKY,QAAQ;QAAC;QACjC+B,eAAe,KAAKvE,MAAM;QAAC,IAAA+C,WAAA;SAAA,OAAA,CAAAD,gBAE1BtF,MAAI;UAAA,IAACwF,OAAI;WAAA,OAAER,QAAQ;UAAC;UAAA,IAAEzB,WAAQ;WAAA,OAAA+B,gBAAGhF,WAAS,EAAA,eAAA,OAAA,CAAA;UAAA;UAAA,IAAAiF,WAAA;WAAA,OAAAD,gBACxCjF,cAAY;YAAA,SAAA;YAAA,eAAA;WAAA,CAAA;UAAA;SAAA,CAAA,GAAA,sBAAA;QAAA;OAAA,CAAA,GAAA,IAAA;OAAA8F,OAAAC,OAAAd,gBAOpBtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAEI,WAAAjC,MAAM,CAAC,EAAEjC,UAAU,WAAW,CAAA,CAAA,KAAIiC,MAAM,CAAC,EAAE/B;QAAgB;QAAA,IAAA2D,WAAA;SAAA,IAAAyB,SAAAC,QAAA,GAAAC,SAAAF,OAAAhB,YAAAmB,SAAAD,OAAAlB,YAAAoB,SAAAD,OAAAnB,YAAAqB,SAAAD,OAAApB,YAAAsB,SAAAD,OAAAnB;SAAAoB,OAAApB;SAAA,IAAAsB,SAAAJ,OAAAlB,aAAAwB,SAAAF,OAAAxB,WAAAE;SAAAwB,OAAAxB;SAAAC,OAAAiB,QAAA9B,gBAQ5D/E,UAAQ;UAAA,SAAA;UAAA,eAAA;SAAA,CAAA,GAAA8G,MAAA;SAAAlB,OAAAiB,cACAzD,MAAM,CAAC,EAAE/B,kBAAgB0F,MAAA;SAAAnB,OAAAqB,QAGO1E,SAAO4E,MAAA;SAAAvB,OAAAgB,QAAA7B,gBAEjDtF,MAAI;UAAA,IAACwF,OAAI;WAAA,OAAEnE,kBAAkBsC,MAAM,CAAC,EAAE5B,eAAe,IAAI;UAAC;UAAAwD,WACvDqC,oBAAQ;WAAA,IAAAC,SAAAC,QAAA;WAAAD,OAAA7B;WAAAG,OAAA0B,QAC2CD,UAAQ,IAAA;WAAA,OAAAC;UAAA,EAAA,CAAA;SAC5D,CAAA,GAAA,IAAA;SAAA1B,OAAAe,QAAA5B,gBAGJ7E,QAAM;UAACoG,MAAI;UAAUlB,MAAI;UAAA,IAAMmB,WAAQ;WAAA,OAAE9B,QAAQ;UAAC;UAAE+B,eAAe,KAAKtE,QAAQ;UAAC,IAAA8C,WAAA;WAAA,OAAA,CAAAD,gBAC/EtF,MAAI;YAAA,IAACwF,OAAI;aAAA,OAAER,QAAQ;YAAC;YAAA,IAAEzB,WAAQ;aAAA,OAAA+B,gBAAGnF,UAAQ,EAAA,eAAA,OAAA,CAAA;YAAA;YAAA,IAAAoF,WAAA;aAAA,OAAAD,gBACvCjF,cAAY;cAAA,SAAA;cAAA,eAAA;aAAA,CAAA;YAAA;WAAA,CAAA,GAAA,qBAAA;UAAA;SAAA,CAAA,GAAA,IAAA;SAAA,OAAA2G;QAAA;OAAA,CAAA,GAAA,IAAA;OAAAb,OAAAC,OAAAd,gBAYtBtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU,iBAAiBiC,MAAM,CAAC,EAAEjC,UAAU;QAAY;QAAA,IAAA6D,WAAA;SAAA,IAAAyC,SAAAC,QAAA,GAAAC,SAAAF,OAAAhC;SAAAG,OAAA6B,QAAA1C,gBAE1EpE,UAAQ;UAAA,IACP6D,QAAK;WAAA,OAAEG,cAAc,KAAKf,KAAAA;UAAS;UAAA,KAAA,gBAAA;WAAA,OAEjCR,MAAM,CAAC,EAAEjC,UAAU,eAAe,sBAAsB;UAAoB;SAAA,CAAA,GAAAwG,MAAA;SAAA/B,OAAA+B,QAAA5C,gBAI7EtF,MAAI;UAAA,IACHwF,OAAI;WAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU;UAAY;UAAA,IACrC6B,WAAQ;WAAA,OAAA+B,gBACLtF,MAAI;YAAA,IAACwF,OAAI;aAAA,OAAEN,cAAc,MAAM;YAAI;YAAE3B,UAAQ;YAAA,IAAAgC,WAAA;aAAA,OAC3C,GAAGnE,YAAYuC,MAAM,CAAC,EAAE3B,mBAAmB,CAAC,EAAC,MAAOZ,YACnDuC,MAAM,CAAC,EAAE1B,cAAc,CACzB,EAAC,KAAMiD,cAAc,EAAC;YAAG;WAAA,CAAA;UAAA;UAAAK,UAAA;SAAA,CAAA,CAAA;SAAA,OAAAyC;QAAA;OAAA,CAAA,GAAA,IAAA;OAAA7B,OAAAC,OAAAd,gBAUpCtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU;QAAS;QAAA,IAAA6D,WAAA;SAAA,IAAA6C,SAAAC,QAAA,GAAAC,SAAAF,OAAApC;SAAAG,OAAAiC,QAAA9C,gBAEnCpF,OAAK;UAAA,SAAA;UAAA,eAAA;SAAA,CAAA,GAAAoI,MAAA;SAAAnC,OAAAiC,QACLtF,SAAOwF,MAAA;SAAA,OAAAF;QAAA;OAAA,CAAA,GAAA,IAAA;OAAAjC,OAAAC,OAAAd,gBAIXtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAEjC,UAAU;QAAW;QAAA,IAAA6D,WAAA;SAAA,IAAAgD,SAAAC,QAAA;SAAArC,OAAAoC,QAAAjD,gBAErCpF,OAAK;UAAA,SAAA;UAAA,eAAA;SAAA,CAAA,GAAA,IAAA;SAAAiG,OAAAoC,QAAAjD,gBACLtF,MAAI;UAAA,IAACwF,OAAI;WAAA,OAAE7B,MAAM,CAAC,EAAEvB;UAAe;UAAEmB,UAAQ;UAAA,IAAAgC,WAAA;WAAA,OAAA;YAAA;YAAAK,WACnC9C,QAAQ,CAAC;YAAA;WAAA;UAAA;SAAA,CAAA,GAAA,IAAA;SAAA,OAAAyF;QAAA;OAAA,CAAA,GAAA,IAAA;OAAApC,OAAAC,OAAAd,gBAKvBtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAEtD,MAAM;QAAC;QAAA,IAAAqD,WAAA;SAAA,IAAAkD,SAAAC,QAAA;SAAAvC,OAAAsC,QAKdvG,KAAK;SAAA,OAAAuG;QAAA;OAAA,CAAA,GAAA,IAAA;OAAAtC,OAAAC,OAAAd,gBAITtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAEV,MAAM;QAAC;QAAA,IAAAS,WAAA;SAAA,IAAAoD,SAAAC,QAAA,GAAAC,SAAAF,OAAA3C;SAAA6C,OAAA7C;SAAA,IAAA+C,SAAAF,OAAA3C;SAAAC,OAAA0C,QAAAvD,gBAMZ9E,OAAK;UAACkF,SAAO;UAAUC,MAAI;UAAA,IAAAJ,WAAA;WAAA,OAAA,CAAA,KAAAK,WACxBjC,MAAM,CAAC,EAAE/B,gBAAgB,CAAA;UAAA;SAAA,CAAA,GAAA,IAAA;SAAAuE,OAAA4C,QAY5BjE,KAAK;SAAA,OAAA6D;QAAA;OAAA,CAAA,GAAA,IAAA;OAAAxC,OAAAC,OAAAd,gBAKXtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE3D,UAAU;QAAC;QAAA,IAAA0D,WAAA;SAAA,IAAAyD,SAAAC,QAAA,GAAAG,SAAAJ,OAAAhD,WAAAE,YAAAA;SAAAC,OAAAiD,QAiBhBvH,SAAS;SAAA,OAAAmH;QAAA;OAAA,CAAA,GAAA,IAAA;OAAA,OAAA5C;MAAA,EAAA,CAAA;MAAAd,gBAMjBxE,cAAY,EAAA,IAAAyE,WAAA;OAAA,OAAA,CAAAD,gBACVtF,MAAI;QAAA,IAACwF,OAAI;SAAA,OAAE7B,MAAM,CAAC,EAAExB;QAAU;QAAAoD,WAC3B8D,QAAG/D,gBACF7E,QAAM;SACLoG,MAAI;SACJnB,SAAO;SACPC,MAAI;SAGJoB,eAAeuC,OAAOrG,KAAKoG,IAAI,GAAG,UAAU,qBAAqB;SAAC,IAAA9D,WAAA;UAAA,OAAA,CAAAD,gBAEjElF,cAAY,EAAA,eAAA,OAAA,CAAA,GAAA,eAAA;SAAA;QAAA,CAAA;OAGhB,CAAA,GAAAkF,gBAEF3E,aAAW;QAAC8E,IAAIhF;QAAQiF,SAAO;QAAWC,MAAI;QAAAJ,UAAA;OAAA,CAAA,CAAA;MAAA,EAAA,CAAA;KAAA;IAAA;GAAA,CAAA,CAAA;EAAA;CAAA,CAAA;AAOzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/workspace-mark/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentProps, JSX } from 'solid-js';
|
|
2
|
+
/**
|
|
3
|
+
* WorkspaceMark.
|
|
4
|
+
*
|
|
5
|
+
* The mark for one workspace in a rail: an initial or a glyph, a ring while it is
|
|
6
|
+
* active, and a badge for something unread. It is deliberately not an `Avatar` —
|
|
7
|
+
* a workspace is not a person, it does not need an image or initials derived from a
|
|
8
|
+
* name, and a rail of them needs an *active* treatment an avatar does not have.
|
|
9
|
+
*
|
|
10
|
+
* The mark is square with a rounded corner rather than round, which is what
|
|
11
|
+
* distinguishes a workspace from a person at a glance in a rail that holds both.
|
|
12
|
+
*/
|
|
13
|
+
export type WorkspaceMarkProps = ComponentProps<'button'> & {
|
|
14
|
+
/** The workspace's name. Used for the label, the initial, and the tooltip. */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Draw the active ring. */
|
|
17
|
+
active?: boolean;
|
|
18
|
+
/** A count or a dot, drawn at the corner. */
|
|
19
|
+
badge?: JSX.Element;
|
|
20
|
+
/** Replace the initial with a glyph. */
|
|
21
|
+
children?: JSX.Element;
|
|
22
|
+
};
|
|
23
|
+
export declare function WorkspaceMark(props: WorkspaceMarkProps): JSX.Element;
|
|
24
|
+
//# sourceMappingURL=workspace-mark.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-mark.d.ts","sourceRoot":"","sources":["../../../../src/components/composites/workspace-mark/workspace-mark.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAKnD;;;;;;;;;;GAUG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG;IAC1D,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAA;IACZ,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAA;CACvB,CAAA;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,eA4CtD"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { cn } from "../../../lib/utils.js";
|
|
2
|
+
import { Tooltip, TooltipContent, TooltipTrigger } from "../../ui/tooltip/tooltip.js";
|
|
3
|
+
import { createComponent, insert, mergeProps, spread, template } from "solid-js/web";
|
|
4
|
+
import { Show, splitProps } from "solid-js";
|
|
5
|
+
//#region src/components/composites/workspace-mark/workspace-mark.tsx
|
|
6
|
+
var _tmpl$ = /*#__PURE__*/ template(`<span class="absolute -end-0.5 -top-0.5 flex items-center justify-center">`);
|
|
7
|
+
var _tmpl$2 = /*#__PURE__*/ template(`<button type=button>`);
|
|
8
|
+
var _tmpl$3 = /*#__PURE__*/ template(`<span aria-hidden=true>`);
|
|
9
|
+
function WorkspaceMark(props) {
|
|
10
|
+
const [local, rest] = splitProps(props, [
|
|
11
|
+
"class",
|
|
12
|
+
"name",
|
|
13
|
+
"active",
|
|
14
|
+
"badge",
|
|
15
|
+
"children"
|
|
16
|
+
]);
|
|
17
|
+
const mark = (() => {
|
|
18
|
+
var _el$ = _tmpl$2();
|
|
19
|
+
spread(_el$, mergeProps({
|
|
20
|
+
get ["aria-label"]() {
|
|
21
|
+
return local.name;
|
|
22
|
+
},
|
|
23
|
+
get ["aria-current"]() {
|
|
24
|
+
return local.active ? "true" : void 0;
|
|
25
|
+
},
|
|
26
|
+
get ["data-active"]() {
|
|
27
|
+
return local.active ? "" : void 0;
|
|
28
|
+
},
|
|
29
|
+
get ["class"]() {
|
|
30
|
+
return cn("relative flex size-9 shrink-0 items-center justify-center rounded-lg border text-sm font-semibold", "transition-[color,background-color,border-color,transform] ease-out outline-none select-none", "hover:scale-105 active:scale-95", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle", "disabled:pointer-events-none disabled:opacity-50", local.active ? "border-primary bg-primary-subtle text-primary" : "border-border bg-card text-muted-foreground hover:text-foreground", local.class);
|
|
31
|
+
}
|
|
32
|
+
}, rest), false, true);
|
|
33
|
+
insert(_el$, createComponent(Show, {
|
|
34
|
+
get when() {
|
|
35
|
+
return local.children;
|
|
36
|
+
},
|
|
37
|
+
get fallback() {
|
|
38
|
+
return (() => {
|
|
39
|
+
var _el$3 = _tmpl$3();
|
|
40
|
+
insert(_el$3, () => local.name.charAt(0).toUpperCase());
|
|
41
|
+
return _el$3;
|
|
42
|
+
})();
|
|
43
|
+
},
|
|
44
|
+
get children() {
|
|
45
|
+
return local.children;
|
|
46
|
+
}
|
|
47
|
+
}), null);
|
|
48
|
+
insert(_el$, createComponent(Show, {
|
|
49
|
+
get when() {
|
|
50
|
+
return local.badge;
|
|
51
|
+
},
|
|
52
|
+
get children() {
|
|
53
|
+
var _el$2 = _tmpl$();
|
|
54
|
+
insert(_el$2, () => local.badge);
|
|
55
|
+
return _el$2;
|
|
56
|
+
}
|
|
57
|
+
}), null);
|
|
58
|
+
return _el$;
|
|
59
|
+
})();
|
|
60
|
+
return createComponent(Tooltip, {
|
|
61
|
+
placement: "right",
|
|
62
|
+
get children() {
|
|
63
|
+
return [createComponent(TooltipTrigger, {
|
|
64
|
+
as: "span",
|
|
65
|
+
"class": "contents",
|
|
66
|
+
children: mark
|
|
67
|
+
}), createComponent(TooltipContent, { get children() {
|
|
68
|
+
return local.name;
|
|
69
|
+
} })];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { WorkspaceMark };
|
|
75
|
+
|
|
76
|
+
//# sourceMappingURL=workspace-mark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-mark.js","names":["ComponentProps","JSX","Show","splitProps","cn","Tooltip","TooltipContent","TooltipTrigger","WorkspaceMarkProps","name","active","badge","Element","children","WorkspaceMark","props","local","rest","mark","_el$","_tmpl$2","_$spread","_$mergeProps","aria-label","aria-current","undefined","data-active","class","_$insert","_$createComponent","when","fallback","_el$3","_tmpl$3","charAt","toUpperCase","_el$2","_tmpl$","placement","as","_$mergeProps","_$createComponent"],"sources":["../../../../src/components/composites/workspace-mark/workspace-mark.tsx"],"sourcesContent":["import type { ComponentProps, JSX } from 'solid-js'\nimport { Show, splitProps } from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../../ui/tooltip/tooltip'\n\n/**\n * WorkspaceMark.\n *\n * The mark for one workspace in a rail: an initial or a glyph, a ring while it is\n * active, and a badge for something unread. It is deliberately not an `Avatar` —\n * a workspace is not a person, it does not need an image or initials derived from a\n * name, and a rail of them needs an *active* treatment an avatar does not have.\n *\n * The mark is square with a rounded corner rather than round, which is what\n * distinguishes a workspace from a person at a glance in a rail that holds both.\n */\nexport type WorkspaceMarkProps = ComponentProps<'button'> & {\n /** The workspace's name. Used for the label, the initial, and the tooltip. */\n name: string\n /** Draw the active ring. */\n active?: boolean\n /** A count or a dot, drawn at the corner. */\n badge?: JSX.Element\n /** Replace the initial with a glyph. */\n children?: JSX.Element\n}\n\nexport function WorkspaceMark(props: WorkspaceMarkProps) {\n const [local, rest] = splitProps(props, ['class', 'name', 'active', 'badge', 'children'])\n\n const mark = (\n <button\n type=\"button\"\n aria-label={local.name}\n aria-current={local.active ? 'true' : undefined}\n data-active={local.active ? '' : undefined}\n class={cn(\n 'relative flex size-9 shrink-0 items-center justify-center rounded-lg border text-sm font-semibold',\n 'transition-[color,background-color,border-color,transform] ease-out outline-none select-none',\n 'hover:scale-105 active:scale-95',\n 'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle',\n 'disabled:pointer-events-none disabled:opacity-50',\n local.active\n ? 'border-primary bg-primary-subtle text-primary'\n : 'border-border bg-card text-muted-foreground hover:text-foreground',\n local.class\n )}\n {...rest}\n >\n <Show\n when={local.children}\n fallback={<span aria-hidden=\"true\">{local.name.charAt(0).toUpperCase()}</span>}\n >\n {local.children}\n </Show>\n <Show when={local.badge}>\n <span class=\"absolute -end-0.5 -top-0.5 flex items-center justify-center\">\n {local.badge}\n </span>\n </Show>\n </button>\n )\n\n return (\n <Tooltip placement=\"right\">\n <TooltipTrigger as=\"span\" class=\"contents\">\n {mark}\n </TooltipTrigger>\n <TooltipContent>{local.name}</TooltipContent>\n </Tooltip>\n )\n}\n"],"mappings":";;;;;;;;AA2BA,SAAgBc,cAAcC,OAA2B;CACvD,MAAM,CAACC,OAAOC,QAAQd,WAAWY,OAAO;EAAC;EAAS;EAAQ;EAAU;EAAS;CAAU,CAAC;CAExF,MAAMG,cAAI;EAAA,IAAAC,OAAAC,QAAA;EAAAC,OAAAF,MAAAG,WAAA;GAAA,KAAA,gBAAA;IAAA,OAGMN,MAAMP;GAAI;GAAA,KAAA,kBAAA;IAAA,OACRO,MAAMN,SAAS,SAASe,KAAAA;GAAS;GAAA,KAAA,iBAAA;IAAA,OAClCT,MAAMN,SAAS,KAAKe,KAAAA;GAAS;GAAA,KAAA,WAAA;IAAA,OACnCrB,GACL,qGACA,gGACA,mCACA,oFACA,oDACAY,MAAMN,SACF,kDACA,qEACJM,MAAMW,KACR;GAAC;EAAA,GACGV,IAAI,GAAA,OAAA,IAAA;EAAAW,OAAAT,MAAAU,gBAEP3B,MAAI;GAAA,IACH4B,OAAI;IAAA,OAAEd,MAAMH;GAAQ;GAAA,IACpBkB,WAAQ;IAAA,cAAA;KAAA,IAAAC,QAAAC,QAAA;KAAAL,OAAAI,aAA4BhB,MAAMP,KAAKyB,OAAO,CAAC,CAAC,CAACC,YAAY,CAAC;KAAA,OAAAH;IAAA,EAAA,CAAA;GAAA;GAAA,IAAAnB,WAAA;IAAA,OAErEG,MAAMH;GAAQ;EAAA,CAAA,GAAA,IAAA;EAAAe,OAAAT,MAAAU,gBAEhB3B,MAAI;GAAA,IAAC4B,OAAI;IAAA,OAAEd,MAAML;GAAK;GAAA,IAAAE,WAAA;IAAA,IAAAuB,QAAAC,OAAA;IAAAT,OAAAQ,aAElBpB,MAAML,KAAK;IAAA,OAAAyB;GAAA;EAAA,CAAA,GAAA,IAAA;EAAA,OAAAjB;CAAA,EAAA,CAAA;CAMpB,OAAAU,gBACGxB,SAAO;EAACiC,WAAS;EAAA,IAAAzB,WAAA;GAAA,OAAA,CAAAgB,gBACftB,gBAAc;IAACgC,IAAE;IAAA,SAAA;IAAA1B,UACfK;GAAI,CAAA,GAAAW,gBAENvB,gBAAc,EAAA,IAAAO,WAAA;IAAA,OAAEG,MAAMP;GAAI,EAAA,CAAA,CAAA;EAAA;CAAA,CAAA;AAGjC"}
|