@elizaos/ui 2.0.0-alpha.13 → 2.0.0-alpha.140
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/package.json +76 -49
- package/packages/ui/src/components/composites/chat/chat-attachment-strip.d.ts +9 -0
- package/packages/ui/src/components/composites/chat/chat-attachment-strip.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-attachment-strip.js +8 -0
- package/packages/ui/src/components/composites/chat/chat-bubble.d.ts +14 -0
- package/packages/ui/src/components/composites/chat/chat-bubble.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-bubble.js +14 -0
- package/packages/ui/src/components/composites/chat/chat-composer-shell.d.ts +10 -0
- package/packages/ui/src/components/composites/chat/chat-composer-shell.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-composer-shell.js +16 -0
- package/packages/ui/src/components/composites/chat/chat-composer.d.ts +39 -0
- package/packages/ui/src/components/composites/chat/chat-composer.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-composer.js +148 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-item.d.ts +21 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-item.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-item.js +120 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.d.ts +22 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-conversation-rename-dialog.js +14 -0
- package/packages/ui/src/components/composites/chat/chat-empty-state.d.ts +19 -0
- package/packages/ui/src/components/composites/chat/chat-empty-state.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-empty-state.js +8 -0
- package/packages/ui/src/components/composites/chat/chat-message-actions.d.ts +14 -0
- package/packages/ui/src/components/composites/chat/chat-message-actions.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-message-actions.js +10 -0
- package/packages/ui/src/components/composites/chat/chat-message.d.ts +18 -0
- package/packages/ui/src/components/composites/chat/chat-message.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-message.js +275 -0
- package/packages/ui/src/components/composites/chat/chat-sidebar.d.ts +54 -0
- package/packages/ui/src/components/composites/chat/chat-sidebar.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-sidebar.js +64 -0
- package/packages/ui/src/components/composites/chat/chat-source.d.ts +19 -0
- package/packages/ui/src/components/composites/chat/chat-source.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-source.js +127 -0
- package/packages/ui/src/components/composites/chat/chat-thread-layout.d.ts +18 -0
- package/packages/ui/src/components/composites/chat/chat-thread-layout.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-thread-layout.js +28 -0
- package/packages/ui/src/components/composites/chat/chat-transcript.d.ts +19 -0
- package/packages/ui/src/components/composites/chat/chat-transcript.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-transcript.js +82 -0
- package/packages/ui/src/components/composites/chat/chat-types.d.ts +90 -0
- package/packages/ui/src/components/composites/chat/chat-types.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-types.js +1 -0
- package/packages/ui/src/components/composites/chat/chat-typing-indicator.d.ts +10 -0
- package/packages/ui/src/components/composites/chat/chat-typing-indicator.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/chat-typing-indicator.js +11 -0
- package/packages/ui/src/components/composites/chat/create-task-popover.d.ts +8 -0
- package/packages/ui/src/components/composites/chat/create-task-popover.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/create-task-popover.js +44 -0
- package/packages/ui/src/components/composites/chat/index.d.ts +17 -0
- package/packages/ui/src/components/composites/chat/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/chat/index.js +16 -0
- package/packages/ui/src/components/composites/form-field/form-field.d.ts +14 -0
- package/packages/ui/src/components/composites/form-field/form-field.d.ts.map +1 -0
- package/packages/ui/src/components/composites/form-field/form-field.js +8 -0
- package/packages/ui/src/components/composites/form-field/index.d.ts +2 -0
- package/packages/ui/src/components/composites/form-field/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/form-field/index.js +1 -0
- package/packages/ui/src/components/composites/index.d.ts +27 -0
- package/packages/ui/src/components/composites/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/index.js +26 -0
- package/packages/ui/src/components/composites/page-panel/index.d.ts +29 -0
- package/packages/ui/src/components/composites/page-panel/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/index.js +28 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.d.ts +4 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-collapsible-section.js +60 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-empty.d.ts +3 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-empty.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-empty.js +15 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-frame.d.ts +5 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-frame.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-frame.js +9 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-header.d.ts +7 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-header.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-header.js +30 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-loading.d.ts +3 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-loading.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-loading.js +13 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-root.d.ts +7 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-root.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-root.js +17 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.d.ts +4 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-toolbar.js +6 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-types.d.ts +66 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-types.d.ts.map +1 -0
- package/packages/ui/src/components/composites/page-panel/page-panel-types.js +1 -0
- package/packages/ui/src/components/composites/search/index.d.ts +3 -0
- package/packages/ui/src/components/composites/search/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/search/index.js +2 -0
- package/packages/ui/src/components/composites/search/search-input.d.ts.map +1 -0
- package/{dist/components/ui → packages/ui/src/components/composites/search}/search-input.js +3 -2
- package/{dist/components/ui/search-bar.d.ts → packages/ui/src/components/composites/search/searchbar.d.ts} +8 -7
- package/packages/ui/src/components/composites/search/searchbar.d.ts.map +1 -0
- package/packages/ui/src/components/composites/search/searchbar.js +25 -0
- package/packages/ui/src/components/composites/sidebar/index.d.ts +11 -0
- package/packages/ui/src/components/composites/sidebar/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/index.js +10 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.d.ts +15 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-auto-rail.js +292 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-body.d.ts +4 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-body.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-body.js +7 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.d.ts +11 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-collapsed-rail.js +13 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-content.d.ts +78 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-content.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-content.js +89 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.d.ts +3 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-filter-bar.js +14 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.d.ts +3 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header-stack.js +6 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header.d.ts +9 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-header.js +6 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-panel.d.ts +3 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-panel.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-panel.js +18 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-root.d.ts +4 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-root.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-root.js +448 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.d.ts +3 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-scroll-region.js +18 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-types.d.ts +59 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-types.d.ts.map +1 -0
- package/packages/ui/src/components/composites/sidebar/sidebar-types.js +1 -0
- package/packages/ui/src/components/composites/skills/index.d.ts +2 -0
- package/packages/ui/src/components/composites/skills/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/skills/index.js +1 -0
- package/packages/ui/src/components/composites/skills/skill-sidebar-item.d.ts +16 -0
- package/packages/ui/src/components/composites/skills/skill-sidebar-item.d.ts.map +1 -0
- package/packages/ui/src/components/composites/skills/skill-sidebar-item.js +7 -0
- package/packages/ui/src/components/composites/trajectories/index.d.ts +5 -0
- package/packages/ui/src/components/composites/trajectories/index.d.ts.map +1 -0
- package/packages/ui/src/components/composites/trajectories/index.js +4 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-code-block.d.ts +13 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-code-block.d.ts.map +1 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-code-block.js +13 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.d.ts +34 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.d.ts.map +1 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-llm-call-card.js +14 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.d.ts +26 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.d.ts.map +1 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-pipeline-graph.js +46 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.d.ts +15 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.d.ts.map +1 -0
- package/packages/ui/src/components/composites/trajectories/trajectory-sidebar-item.js +8 -0
- package/packages/ui/src/components/primitives/index.d.ts +26 -0
- package/packages/ui/src/components/primitives/index.d.ts.map +1 -0
- package/packages/ui/src/components/primitives/index.js +25 -0
- package/packages/ui/src/components/ui/admin-dialog.d.ts +50 -0
- package/packages/ui/src/components/ui/admin-dialog.d.ts.map +1 -0
- package/packages/ui/src/components/ui/admin-dialog.js +48 -0
- package/{dist → packages/ui/src}/components/ui/badge.d.ts +1 -1
- package/packages/ui/src/components/ui/badge.d.ts.map +1 -0
- package/packages/ui/src/components/ui/banner.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/banner.js +2 -1
- package/{dist → packages/ui/src}/components/ui/button.d.ts +1 -1
- package/packages/ui/src/components/ui/button.d.ts.map +1 -0
- package/packages/ui/src/components/ui/button.js +39 -0
- package/{dist → packages/ui/src}/components/ui/card.d.ts +8 -2
- package/packages/ui/src/components/ui/card.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/card.js +17 -2
- package/packages/ui/src/components/ui/checkbox.d.ts.map +1 -0
- package/packages/ui/src/components/ui/confirm-delete.d.ts +20 -0
- package/packages/ui/src/components/ui/confirm-delete.d.ts.map +1 -0
- package/packages/ui/src/components/ui/confirm-delete.js +16 -0
- package/packages/ui/src/components/ui/confirm-dialog.d.ts +49 -0
- package/packages/ui/src/components/ui/confirm-dialog.d.ts.map +1 -0
- package/packages/ui/src/components/ui/confirm-dialog.js +90 -0
- package/{dist → packages/ui/src}/components/ui/connection-status.d.ts +6 -0
- package/packages/ui/src/components/ui/connection-status.d.ts.map +1 -0
- package/packages/ui/src/components/ui/connection-status.js +25 -0
- package/packages/ui/src/components/ui/copy-button.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/dialog.d.ts +6 -1
- package/packages/ui/src/components/ui/dialog.d.ts.map +1 -0
- package/packages/ui/src/components/ui/dialog.js +23 -0
- package/packages/ui/src/components/ui/drawer-sheet.d.ts +19 -0
- package/packages/ui/src/components/ui/drawer-sheet.d.ts.map +1 -0
- package/packages/ui/src/components/ui/drawer-sheet.js +21 -0
- package/packages/ui/src/components/ui/dropdown-menu.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/dropdown-menu.js +1 -1
- package/packages/ui/src/components/ui/empty-state.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/error-boundary.d.ts +5 -1
- package/packages/ui/src/components/ui/error-boundary.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/error-boundary.js +1 -1
- package/packages/ui/src/components/ui/field-switch.d.ts +8 -0
- package/packages/ui/src/components/ui/field-switch.d.ts.map +1 -0
- package/packages/ui/src/components/ui/field-switch.js +10 -0
- package/packages/ui/src/components/ui/field.d.ts +11 -0
- package/packages/ui/src/components/ui/field.d.ts.map +1 -0
- package/packages/ui/src/components/ui/field.js +21 -0
- package/packages/ui/src/components/ui/form-select.d.ts +13 -0
- package/packages/ui/src/components/ui/form-select.d.ts.map +1 -0
- package/packages/ui/src/components/ui/form-select.js +9 -0
- package/{dist → packages/ui/src}/components/ui/grid.d.ts +1 -1
- package/packages/ui/src/components/ui/grid.d.ts.map +1 -0
- package/packages/ui/src/components/ui/input.d.ts +12 -0
- package/packages/ui/src/components/ui/input.d.ts.map +1 -0
- package/packages/ui/src/components/ui/input.js +28 -0
- package/packages/ui/src/components/ui/label.d.ts.map +1 -0
- package/packages/ui/src/components/ui/new-action-button.d.ts +7 -0
- package/packages/ui/src/components/ui/new-action-button.d.ts.map +1 -0
- package/packages/ui/src/components/ui/new-action-button.js +13 -0
- package/packages/ui/src/components/ui/popover.d.ts.map +1 -0
- package/packages/ui/src/components/ui/save-footer.d.ts.map +1 -0
- package/packages/ui/src/components/ui/save-footer.js +10 -0
- package/packages/ui/src/components/ui/section-card.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/section-card.js +3 -2
- package/packages/ui/src/components/ui/segmented-control.d.ts +18 -0
- package/packages/ui/src/components/ui/segmented-control.d.ts.map +1 -0
- package/packages/ui/src/components/ui/segmented-control.js +10 -0
- package/packages/ui/src/components/ui/select.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/select.js +7 -6
- package/packages/ui/src/components/ui/separator.d.ts.map +1 -0
- package/packages/ui/src/components/ui/settings-controls.d.ts +41 -0
- package/packages/ui/src/components/ui/settings-controls.d.ts.map +1 -0
- package/packages/ui/src/components/ui/settings-controls.js +60 -0
- package/packages/ui/src/components/ui/skeleton.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/skeleton.js +1 -2
- package/packages/ui/src/components/ui/slider.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/slider.js +1 -1
- package/packages/ui/src/components/ui/sonner.d.ts +2 -0
- package/packages/ui/src/components/ui/sonner.d.ts.map +1 -0
- package/packages/ui/src/components/ui/sonner.js +1 -0
- package/packages/ui/src/components/ui/spinner.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/stack.d.ts +1 -1
- package/packages/ui/src/components/ui/stack.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/status-badge.d.ts +11 -4
- package/packages/ui/src/components/ui/status-badge.d.ts.map +1 -0
- package/packages/ui/src/components/ui/status-badge.js +70 -0
- package/packages/ui/src/components/ui/switch.d.ts.map +1 -0
- package/packages/ui/src/components/ui/switch.js +7 -0
- package/packages/ui/src/components/ui/tabs.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/tabs.js +1 -1
- package/packages/ui/src/components/ui/tag-editor.d.ts +12 -0
- package/packages/ui/src/components/ui/tag-editor.d.ts.map +1 -0
- package/packages/ui/src/components/ui/tag-editor.js +34 -0
- package/packages/ui/src/components/ui/tag-input.d.ts +3 -0
- package/packages/ui/src/components/ui/tag-input.d.ts.map +1 -0
- package/packages/ui/src/components/ui/tag-input.js +1 -0
- package/packages/ui/src/components/ui/textarea.d.ts +12 -0
- package/packages/ui/src/components/ui/textarea.d.ts.map +1 -0
- package/packages/ui/src/components/ui/textarea.js +28 -0
- package/{dist → packages/ui/src}/components/ui/themed-select.d.ts +3 -8
- package/packages/ui/src/components/ui/themed-select.d.ts.map +1 -0
- package/packages/ui/src/components/ui/themed-select.js +137 -0
- package/{dist → packages/ui/src}/components/ui/tooltip-extended.d.ts +3 -25
- package/packages/ui/src/components/ui/tooltip-extended.d.ts.map +1 -0
- package/packages/ui/src/components/ui/tooltip-extended.js +116 -0
- package/{dist → packages/ui/src}/components/ui/tooltip.d.ts +10 -0
- package/packages/ui/src/components/ui/tooltip.d.ts.map +1 -0
- package/packages/ui/src/components/ui/tooltip.js +13 -0
- package/{dist → packages/ui/src}/components/ui/typography.d.ts +2 -2
- package/packages/ui/src/components/ui/typography.d.ts.map +1 -0
- package/{dist → packages/ui/src}/components/ui/typography.js +1 -1
- package/packages/ui/src/hooks/index.d.ts +6 -0
- package/packages/ui/src/hooks/index.d.ts.map +1 -0
- package/packages/ui/src/hooks/index.js +5 -0
- package/packages/ui/src/hooks/useClickOutside.d.ts +3 -0
- package/packages/ui/src/hooks/useClickOutside.d.ts.map +1 -0
- package/packages/ui/src/hooks/useClickOutside.js +22 -0
- package/packages/ui/src/hooks/useDocumentVisibility.d.ts +3 -0
- package/packages/ui/src/hooks/useDocumentVisibility.d.ts.map +1 -0
- package/packages/ui/src/hooks/useDocumentVisibility.js +28 -0
- package/packages/ui/src/hooks/useKeyboardShortcuts.d.ts +13 -0
- package/packages/ui/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/packages/ui/src/hooks/useKeyboardShortcuts.js +34 -0
- package/packages/ui/src/hooks/useLinkedSidebarSelection.d.ts +16 -0
- package/packages/ui/src/hooks/useLinkedSidebarSelection.d.ts.map +1 -0
- package/packages/ui/src/hooks/useLinkedSidebarSelection.js +117 -0
- package/packages/ui/src/hooks/useTimeout.d.ts +5 -0
- package/packages/ui/src/hooks/useTimeout.d.ts.map +1 -0
- package/packages/ui/src/hooks/useTimeout.js +26 -0
- package/packages/ui/src/index.d.ts +8 -0
- package/packages/ui/src/index.d.ts.map +1 -0
- package/packages/ui/src/index.js +7 -0
- package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.d.ts +11 -0
- package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.d.ts.map +1 -0
- package/packages/ui/src/layouts/chat-panel-layout/chat-panel-layout.js +37 -0
- package/packages/ui/src/layouts/chat-panel-layout/index.d.ts +2 -0
- package/packages/ui/src/layouts/chat-panel-layout/index.d.ts.map +1 -0
- package/packages/ui/src/layouts/chat-panel-layout/index.js +1 -0
- package/packages/ui/src/layouts/content-layout/content-layout.d.ts +21 -0
- package/packages/ui/src/layouts/content-layout/content-layout.d.ts.map +1 -0
- package/packages/ui/src/layouts/content-layout/content-layout.js +5 -0
- package/packages/ui/src/layouts/content-layout/index.d.ts +2 -0
- package/packages/ui/src/layouts/content-layout/index.d.ts.map +1 -0
- package/packages/ui/src/layouts/content-layout/index.js +1 -0
- package/packages/ui/src/layouts/index.d.ts +5 -0
- package/packages/ui/src/layouts/index.d.ts.map +1 -0
- package/packages/ui/src/layouts/index.js +4 -0
- package/packages/ui/src/layouts/layout-test-utils.d.ts +6 -0
- package/packages/ui/src/layouts/layout-test-utils.d.ts.map +1 -0
- package/packages/ui/src/layouts/layout-test-utils.js +36 -0
- package/packages/ui/src/layouts/page-layout/index.d.ts +5 -0
- package/packages/ui/src/layouts/page-layout/index.d.ts.map +1 -0
- package/packages/ui/src/layouts/page-layout/index.js +4 -0
- package/packages/ui/src/layouts/page-layout/page-layout-header.d.ts +5 -0
- package/packages/ui/src/layouts/page-layout/page-layout-header.d.ts.map +1 -0
- package/packages/ui/src/layouts/page-layout/page-layout-header.js +5 -0
- package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.d.ts +3 -0
- package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.d.ts.map +1 -0
- package/packages/ui/src/layouts/page-layout/page-layout-mobile-drawer.js +18 -0
- package/packages/ui/src/layouts/page-layout/page-layout-types.d.ts +15 -0
- package/packages/ui/src/layouts/page-layout/page-layout-types.d.ts.map +1 -0
- package/packages/ui/src/layouts/page-layout/page-layout-types.js +1 -0
- package/packages/ui/src/layouts/page-layout/page-layout.d.ts +3 -0
- package/packages/ui/src/layouts/page-layout/page-layout.d.ts.map +1 -0
- package/packages/ui/src/layouts/page-layout/page-layout.js +5 -0
- package/packages/ui/src/layouts/workspace-layout/index.d.ts +3 -0
- package/packages/ui/src/layouts/workspace-layout/index.d.ts.map +1 -0
- package/packages/ui/src/layouts/workspace-layout/index.js +2 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.d.ts +19 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.d.ts.map +1 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout-types.js +1 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout.d.ts +3 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout.d.ts.map +1 -0
- package/packages/ui/src/layouts/workspace-layout/workspace-layout.js +50 -0
- package/packages/ui/src/lib/floating-layers.d.ts +17 -0
- package/packages/ui/src/lib/floating-layers.d.ts.map +1 -0
- package/packages/ui/src/lib/floating-layers.js +20 -0
- package/packages/ui/src/lib/utils.d.ts +3 -0
- package/packages/ui/src/lib/utils.d.ts.map +1 -0
- package/{dist → packages/ui/src}/lib/utils.js +0 -3
- package/packages/ui/src/stories/layout-story-fixtures.d.ts +14 -0
- package/packages/ui/src/stories/layout-story-fixtures.d.ts.map +1 -0
- package/packages/ui/src/stories/layout-story-fixtures.js +33 -0
- package/styles/theme.css +7 -0
- package/README.md +0 -6
- package/dist/components/ui/badge.d.ts.map +0 -1
- package/dist/components/ui/banner.d.ts.map +0 -1
- package/dist/components/ui/button.d.ts.map +0 -1
- package/dist/components/ui/button.js +0 -33
- package/dist/components/ui/card.d.ts.map +0 -1
- package/dist/components/ui/chat-atoms.d.ts +0 -26
- package/dist/components/ui/chat-atoms.d.ts.map +0 -1
- package/dist/components/ui/chat-atoms.js +0 -17
- package/dist/components/ui/checkbox.d.ts.map +0 -1
- package/dist/components/ui/confirm-delete.d.ts +0 -12
- package/dist/components/ui/confirm-delete.d.ts.map +0 -1
- package/dist/components/ui/confirm-delete.js +0 -13
- package/dist/components/ui/confirm-dialog.d.ts +0 -24
- package/dist/components/ui/confirm-dialog.d.ts.map +0 -1
- package/dist/components/ui/confirm-dialog.js +0 -55
- package/dist/components/ui/connection-status.d.ts.map +0 -1
- package/dist/components/ui/connection-status.js +0 -25
- package/dist/components/ui/copy-button.d.ts.map +0 -1
- package/dist/components/ui/dialog.d.ts.map +0 -1
- package/dist/components/ui/dialog.js +0 -22
- package/dist/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist/components/ui/empty-state.d.ts.map +0 -1
- package/dist/components/ui/error-boundary.d.ts.map +0 -1
- package/dist/components/ui/grid.d.ts.map +0 -1
- package/dist/components/ui/input.d.ts +0 -6
- package/dist/components/ui/input.d.ts.map +0 -1
- package/dist/components/ui/input.js +0 -8
- package/dist/components/ui/label.d.ts.map +0 -1
- package/dist/components/ui/popover.d.ts.map +0 -1
- package/dist/components/ui/save-footer.d.ts.map +0 -1
- package/dist/components/ui/save-footer.js +0 -9
- package/dist/components/ui/search-bar.d.ts.map +0 -1
- package/dist/components/ui/search-bar.js +0 -19
- package/dist/components/ui/search-input.d.ts.map +0 -1
- package/dist/components/ui/section-card.d.ts.map +0 -1
- package/dist/components/ui/select.d.ts.map +0 -1
- package/dist/components/ui/separator.d.ts.map +0 -1
- package/dist/components/ui/skeleton.d.ts.map +0 -1
- package/dist/components/ui/slider.d.ts.map +0 -1
- package/dist/components/ui/sonner.d.ts +0 -5
- package/dist/components/ui/sonner.d.ts.map +0 -1
- package/dist/components/ui/sonner.js +0 -15
- package/dist/components/ui/spinner.d.ts.map +0 -1
- package/dist/components/ui/stack.d.ts.map +0 -1
- package/dist/components/ui/status-badge.d.ts.map +0 -1
- package/dist/components/ui/status-badge.js +0 -41
- package/dist/components/ui/switch.d.ts.map +0 -1
- package/dist/components/ui/switch.js +0 -7
- package/dist/components/ui/tabs.d.ts.map +0 -1
- package/dist/components/ui/tag-editor.d.ts +0 -24
- package/dist/components/ui/tag-editor.d.ts.map +0 -1
- package/dist/components/ui/tag-editor.js +0 -32
- package/dist/components/ui/tag-input.d.ts +0 -19
- package/dist/components/ui/tag-input.d.ts.map +0 -1
- package/dist/components/ui/tag-input.js +0 -28
- package/dist/components/ui/textarea.d.ts +0 -6
- package/dist/components/ui/textarea.d.ts.map +0 -1
- package/dist/components/ui/textarea.js +0 -8
- package/dist/components/ui/themed-select.d.ts.map +0 -1
- package/dist/components/ui/themed-select.js +0 -57
- package/dist/components/ui/tooltip-extended.d.ts.map +0 -1
- package/dist/components/ui/tooltip-extended.js +0 -128
- package/dist/components/ui/tooltip.d.ts.map +0 -1
- package/dist/components/ui/tooltip.js +0 -10
- package/dist/components/ui/typography.d.ts.map +0 -1
- package/dist/index.d.ts +0 -42
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -43
- package/dist/lib/button-styles.d.ts +0 -12
- package/dist/lib/button-styles.d.ts.map +0 -1
- package/dist/lib/button-styles.js +0 -11
- package/dist/lib/utils.d.ts +0 -6
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/package.json +0 -64
- package/dist/styles/theme.css +0 -193
- package/src/styles/theme.css +0 -193
- /package/{dist/components/ui → packages/ui/src/components/composites/search}/search-input.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/badge.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/banner.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/checkbox.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/checkbox.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/copy-button.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/copy-button.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/dropdown-menu.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/empty-state.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/empty-state.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/grid.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/label.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/label.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/popover.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/popover.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/save-footer.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/section-card.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/select.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/separator.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/separator.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/skeleton.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/slider.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/spinner.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/spinner.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/stack.js +0 -0
- /package/{dist → packages/ui/src}/components/ui/switch.d.ts +0 -0
- /package/{dist → packages/ui/src}/components/ui/tabs.d.ts +0 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { SegmentedControl } from "../../ui/segmented-control";
|
|
4
|
+
import { SidebarItem, SidebarItemButton, SidebarItemIcon, SidebarItemTitle, } from "./sidebar-content";
|
|
5
|
+
const SIDEBAR_AUTO_RAIL_DOM_SELECTOR = "[data-segmented-control-button], [data-sidebar-item], [data-sidebar-item-button], button[aria-pressed]";
|
|
6
|
+
function isSidebarElement(node) {
|
|
7
|
+
return React.isValidElement(node);
|
|
8
|
+
}
|
|
9
|
+
function extractTextContent(node) {
|
|
10
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
11
|
+
return String(node).trim();
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(node)) {
|
|
14
|
+
return node
|
|
15
|
+
.map((child) => extractTextContent(child))
|
|
16
|
+
.filter(Boolean)
|
|
17
|
+
.join(" ")
|
|
18
|
+
.trim();
|
|
19
|
+
}
|
|
20
|
+
if (!isSidebarElement(node)) {
|
|
21
|
+
return "";
|
|
22
|
+
}
|
|
23
|
+
return extractTextContent(node.props.children);
|
|
24
|
+
}
|
|
25
|
+
function extractFirstTextContent(node) {
|
|
26
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
27
|
+
return String(node).trim();
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(node)) {
|
|
30
|
+
for (const child of node) {
|
|
31
|
+
const text = extractFirstTextContent(child);
|
|
32
|
+
if (text)
|
|
33
|
+
return text;
|
|
34
|
+
}
|
|
35
|
+
return "";
|
|
36
|
+
}
|
|
37
|
+
if (!isSidebarElement(node)) {
|
|
38
|
+
return "";
|
|
39
|
+
}
|
|
40
|
+
return extractFirstTextContent(node.props.children);
|
|
41
|
+
}
|
|
42
|
+
function cleanRailLabel(value) {
|
|
43
|
+
if (!value)
|
|
44
|
+
return "";
|
|
45
|
+
return value
|
|
46
|
+
.trim()
|
|
47
|
+
.replace(/^open\s+/i, "")
|
|
48
|
+
.replace(/\s+[—–]\s+.*$/, "")
|
|
49
|
+
.replace(/\s+\(click to .*?\)$/i, "")
|
|
50
|
+
.trim();
|
|
51
|
+
}
|
|
52
|
+
function buildRailMonogram(label) {
|
|
53
|
+
const words = label.trim().split(/\s+/).filter(Boolean);
|
|
54
|
+
const initials = words
|
|
55
|
+
.slice(0, 2)
|
|
56
|
+
.map((word) => word[0]?.toUpperCase() ?? "")
|
|
57
|
+
.join("");
|
|
58
|
+
return (initials || label.slice(0, 1).toUpperCase() || "?").slice(0, 2);
|
|
59
|
+
}
|
|
60
|
+
function resolveRailContent(label, icon) {
|
|
61
|
+
return icon ?? buildRailMonogram(label);
|
|
62
|
+
}
|
|
63
|
+
function resolveRailContentKind(icon) {
|
|
64
|
+
return icon ? "icon" : "monogram";
|
|
65
|
+
}
|
|
66
|
+
function SidebarAutoRailDomGlyph({ glyphElement }) {
|
|
67
|
+
const containerRef = React.useRef(null);
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
const container = containerRef.current;
|
|
70
|
+
if (!container)
|
|
71
|
+
return;
|
|
72
|
+
container.replaceChildren();
|
|
73
|
+
container.append(glyphElement.cloneNode(true));
|
|
74
|
+
}, [glyphElement]);
|
|
75
|
+
return (_jsx("span", { ref: containerRef, "aria-hidden": true, className: "inline-flex items-center justify-center [&_[data-sidebar-item-icon]]:h-8 [&_[data-sidebar-item-icon]]:w-8 [&_img]:h-4 [&_img]:w-4 [&_svg]:h-4 [&_svg]:w-4" }));
|
|
76
|
+
}
|
|
77
|
+
function extractDomRailLabel(element) {
|
|
78
|
+
const itemBody = element.querySelector("[data-sidebar-item-body]");
|
|
79
|
+
const itemTitle = itemBody?.querySelector("[data-sidebar-item-title]");
|
|
80
|
+
const primaryBodyChild = itemBody?.firstElementChild;
|
|
81
|
+
return cleanRailLabel(itemTitle?.textContent ||
|
|
82
|
+
primaryBodyChild?.textContent ||
|
|
83
|
+
element.getAttribute("title") ||
|
|
84
|
+
element.getAttribute("aria-label") ||
|
|
85
|
+
element.textContent ||
|
|
86
|
+
"");
|
|
87
|
+
}
|
|
88
|
+
function extractDomRailIcon(element) {
|
|
89
|
+
const iconElement = element.querySelector("[data-sidebar-item-icon]") ||
|
|
90
|
+
element.querySelector("svg, img, [role='img']");
|
|
91
|
+
return iconElement ? (_jsx(SidebarAutoRailDomGlyph, { glyphElement: iconElement })) : null;
|
|
92
|
+
}
|
|
93
|
+
function findSidebarItemParts(node) {
|
|
94
|
+
const state = {
|
|
95
|
+
active: false,
|
|
96
|
+
icon: null,
|
|
97
|
+
title: "",
|
|
98
|
+
};
|
|
99
|
+
const visit = (child) => {
|
|
100
|
+
if (child == null || typeof child === "boolean")
|
|
101
|
+
return;
|
|
102
|
+
if (typeof child === "string" || typeof child === "number") {
|
|
103
|
+
if (!state.title) {
|
|
104
|
+
state.title = cleanRailLabel(String(child));
|
|
105
|
+
}
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (!isSidebarElement(child))
|
|
109
|
+
return;
|
|
110
|
+
if (child.type === SidebarItemButton) {
|
|
111
|
+
const buttonChild = child;
|
|
112
|
+
if (typeof buttonChild.props.onClick === "function" && !state.onClick) {
|
|
113
|
+
state.onClick = buttonChild.props.onClick;
|
|
114
|
+
}
|
|
115
|
+
if (buttonChild.props["aria-current"]) {
|
|
116
|
+
state.active = true;
|
|
117
|
+
}
|
|
118
|
+
visit(buttonChild.props.children);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (child.type === SidebarItemIcon) {
|
|
122
|
+
const iconChild = child;
|
|
123
|
+
state.icon = iconChild.props.children;
|
|
124
|
+
if (iconChild.props.active) {
|
|
125
|
+
state.active = true;
|
|
126
|
+
}
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (child.type === SidebarItemTitle) {
|
|
130
|
+
const titleChild = child;
|
|
131
|
+
const title = cleanRailLabel(extractTextContent(titleChild.props.children));
|
|
132
|
+
if (title) {
|
|
133
|
+
state.title = title;
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (typeof child.type === "string" && !state.title) {
|
|
138
|
+
const text = cleanRailLabel(extractTextContent(child.props.children));
|
|
139
|
+
if (text) {
|
|
140
|
+
state.title = text;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
visit(child.props.children);
|
|
144
|
+
};
|
|
145
|
+
visit(node);
|
|
146
|
+
return state;
|
|
147
|
+
}
|
|
148
|
+
function parseSidebarItemElement(node) {
|
|
149
|
+
const parts = findSidebarItemParts(node.props.children);
|
|
150
|
+
const label = parts.title ||
|
|
151
|
+
cleanRailLabel(String(node.props["aria-label"] ?? "")) ||
|
|
152
|
+
cleanRailLabel(extractFirstTextContent(node.props.children));
|
|
153
|
+
if (!label)
|
|
154
|
+
return null;
|
|
155
|
+
return {
|
|
156
|
+
key: String(node.key ?? label),
|
|
157
|
+
label,
|
|
158
|
+
active: Boolean(node.props.active) ||
|
|
159
|
+
Boolean(node.props["aria-current"]) ||
|
|
160
|
+
parts.active,
|
|
161
|
+
disabled: Boolean(node.props.disabled),
|
|
162
|
+
contentKind: resolveRailContentKind(parts.icon),
|
|
163
|
+
onClick: typeof node.props.onClick === "function"
|
|
164
|
+
? node.props.onClick
|
|
165
|
+
: parts.onClick,
|
|
166
|
+
content: resolveRailContent(label, parts.icon),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function findFirstNonTextChild(node) {
|
|
170
|
+
if (node == null || typeof node === "boolean")
|
|
171
|
+
return null;
|
|
172
|
+
if (Array.isArray(node)) {
|
|
173
|
+
for (const child of node) {
|
|
174
|
+
const match = findFirstNonTextChild(child);
|
|
175
|
+
if (match != null)
|
|
176
|
+
return match;
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
if (!isSidebarElement(node))
|
|
181
|
+
return null;
|
|
182
|
+
return node;
|
|
183
|
+
}
|
|
184
|
+
function parseNativeToggleButton(node) {
|
|
185
|
+
if (typeof node.props.onClick !== "function")
|
|
186
|
+
return null;
|
|
187
|
+
if (node.props["aria-pressed"] === undefined)
|
|
188
|
+
return null;
|
|
189
|
+
const label = cleanRailLabel(String(node.props["aria-label"] ?? node.props.title ?? ""));
|
|
190
|
+
if (!label)
|
|
191
|
+
return null;
|
|
192
|
+
const icon = findFirstNonTextChild(node.props.children);
|
|
193
|
+
return {
|
|
194
|
+
key: String(node.key ?? node.props["data-testid"] ?? label),
|
|
195
|
+
label,
|
|
196
|
+
active: Boolean(node.props["aria-pressed"]),
|
|
197
|
+
disabled: Boolean(node.props.disabled),
|
|
198
|
+
contentKind: resolveRailContentKind(icon),
|
|
199
|
+
onClick: node.props.onClick,
|
|
200
|
+
content: resolveRailContent(label, icon),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function parseSegmentedControl(node) {
|
|
204
|
+
return node.props.items.map((item) => {
|
|
205
|
+
const label = cleanRailLabel(extractTextContent(item.label) || String(item.value));
|
|
206
|
+
const icon = findFirstNonTextChild(item.label);
|
|
207
|
+
return {
|
|
208
|
+
key: `${String(node.key ?? "segmented")}:${item.value}`,
|
|
209
|
+
label,
|
|
210
|
+
active: item.value === node.props.value,
|
|
211
|
+
disabled: Boolean(item.disabled),
|
|
212
|
+
contentKind: resolveRailContentKind(icon),
|
|
213
|
+
onClick: () => {
|
|
214
|
+
if (!item.disabled) {
|
|
215
|
+
node.props.onValueChange(item.value);
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
content: resolveRailContent(label, icon),
|
|
219
|
+
};
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
export function buildSidebarAutoRailItems(children) {
|
|
223
|
+
const items = [];
|
|
224
|
+
const visit = (node) => {
|
|
225
|
+
React.Children.forEach(node, (child) => {
|
|
226
|
+
if (!isSidebarElement(child))
|
|
227
|
+
return;
|
|
228
|
+
if (child.type === SidebarItem) {
|
|
229
|
+
const item = parseSidebarItemElement(child);
|
|
230
|
+
if (item)
|
|
231
|
+
items.push(item);
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
if (child.type === SidebarItemButton) {
|
|
235
|
+
const item = parseSidebarItemElement(child);
|
|
236
|
+
if (item)
|
|
237
|
+
items.push(item);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
if (React.isValidElement(child) &&
|
|
241
|
+
child.type === SegmentedControl) {
|
|
242
|
+
items.push(...parseSegmentedControl(child));
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (typeof child.type === "string" && child.type === "button") {
|
|
246
|
+
const item = parseNativeToggleButton(child);
|
|
247
|
+
if (item)
|
|
248
|
+
items.push(item);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
visit(child.props.children);
|
|
252
|
+
});
|
|
253
|
+
};
|
|
254
|
+
visit(children);
|
|
255
|
+
return items;
|
|
256
|
+
}
|
|
257
|
+
export function buildSidebarAutoRailItemsFromDom(container) {
|
|
258
|
+
const candidates = Array.from(container.querySelectorAll(SIDEBAR_AUTO_RAIL_DOM_SELECTOR));
|
|
259
|
+
return candidates
|
|
260
|
+
.filter((element) => {
|
|
261
|
+
if (element.closest("[data-sidebar-filter-bar]")) {
|
|
262
|
+
return false;
|
|
263
|
+
}
|
|
264
|
+
return !element.parentElement?.closest(SIDEBAR_AUTO_RAIL_DOM_SELECTOR);
|
|
265
|
+
})
|
|
266
|
+
.map((element, index) => {
|
|
267
|
+
const label = extractDomRailLabel(element);
|
|
268
|
+
if (!label)
|
|
269
|
+
return null;
|
|
270
|
+
const interactiveElement = element.querySelector("[data-sidebar-item-button]") ??
|
|
271
|
+
element;
|
|
272
|
+
const disabled = interactiveElement.hasAttribute("disabled") ||
|
|
273
|
+
interactiveElement.getAttribute("aria-disabled") === "true";
|
|
274
|
+
const icon = extractDomRailIcon(element);
|
|
275
|
+
return {
|
|
276
|
+
key: `${label}:${index}`,
|
|
277
|
+
label,
|
|
278
|
+
active: interactiveElement.getAttribute("aria-current") === "page" ||
|
|
279
|
+
interactiveElement.querySelector("[aria-current='page']") !== null ||
|
|
280
|
+
interactiveElement.getAttribute("aria-pressed") === "true",
|
|
281
|
+
disabled,
|
|
282
|
+
contentKind: resolveRailContentKind(icon),
|
|
283
|
+
onClick: disabled
|
|
284
|
+
? undefined
|
|
285
|
+
: () => {
|
|
286
|
+
interactiveElement.click();
|
|
287
|
+
},
|
|
288
|
+
content: resolveRailContent(label, icon),
|
|
289
|
+
};
|
|
290
|
+
})
|
|
291
|
+
.filter((item) => item !== null);
|
|
292
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-body.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAKxD,eAAO,MAAM,WAAW,yFAUvB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../../../lib/utils";
|
|
4
|
+
const sidebarBodyClassName = "flex min-h-0 flex-1 flex-col overflow-hidden transform-gpu transition-[opacity,transform] duration-[280ms] ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[opacity,transform] motion-reduce:transform-none motion-reduce:transition-none";
|
|
5
|
+
export const SidebarBody = React.forwardRef(function SidebarBody({ className, ...props }, ref) {
|
|
6
|
+
return (_jsx("div", { ref: ref, className: cn(sidebarBodyClassName, className), ...props }));
|
|
7
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import { Button } from "../../ui/button";
|
|
3
|
+
export interface SidebarCollapsedRailProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
action?: React.ReactNode;
|
|
5
|
+
listClassName?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function SidebarCollapsedRail({ action, children, className, listClassName, ...props }: SidebarCollapsedRailProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export interface SidebarCollapsedActionButtonProps extends React.ComponentProps<typeof Button> {
|
|
9
|
+
}
|
|
10
|
+
export declare function SidebarCollapsedActionButton({ className, size, variant, ...props }: SidebarCollapsedActionButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=sidebar-collapsed-rail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-collapsed-rail.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-collapsed-rail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAazC,MAAM,WAAW,yBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,aAAa,EACb,GAAG,KAAK,EACT,EAAE,yBAAyB,2CAsC3B;AAED,MAAM,WAAW,iCACf,SAAQ,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC;CAAG;AAEhD,wBAAgB,4BAA4B,CAAC,EAC3C,SAAS,EACT,IAAa,EACb,OAAyB,EACzB,GAAG,KAAK,EACT,EAAE,iCAAiC,2CASnC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../lib/utils";
|
|
3
|
+
import { Button } from "../../ui/button";
|
|
4
|
+
const sidebarCollapsedRailRootClassName = "flex min-h-0 w-full flex-1 flex-col items-center";
|
|
5
|
+
const sidebarCollapsedRailActionWrapClassName = "flex flex-col items-center gap-3 py-1";
|
|
6
|
+
const sidebarCollapsedRailListClassName = "custom-scrollbar flex min-h-0 w-full flex-1 flex-col items-center gap-2 overflow-y-auto px-1 pb-2";
|
|
7
|
+
const sidebarCollapsedActionButtonClassName = "h-11 w-11 rounded-sm";
|
|
8
|
+
export function SidebarCollapsedRail({ action, children, className, listClassName, ...props }) {
|
|
9
|
+
return (_jsx("div", { "data-sidebar-collapsed-rail": true, className: cn(sidebarCollapsedRailRootClassName, className), ...props, children: action ? (_jsxs("div", { "data-sidebar-collapsed-rail-action-wrap": true, className: sidebarCollapsedRailActionWrapClassName, children: [action, _jsx("div", { "data-sidebar-collapsed-rail-list": true, className: cn(sidebarCollapsedRailListClassName, "mt-1", listClassName), children: children })] })) : (_jsx("div", { "data-sidebar-collapsed-rail-list": true, className: cn(sidebarCollapsedRailListClassName, "pt-1", listClassName), children: children })) }));
|
|
10
|
+
}
|
|
11
|
+
export function SidebarCollapsedActionButton({ className, size = "icon", variant = "surfaceAccent", ...props }) {
|
|
12
|
+
return (_jsx(Button, { size: size, variant: variant, className: cn(sidebarCollapsedActionButtonClassName, className), ...props }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface SidebarSectionLabelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
}
|
|
4
|
+
export declare function SidebarSectionLabel({ className, ...props }: SidebarSectionLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export interface SidebarSectionHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
meta?: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function SidebarSectionHeader({ className, meta, children, ...props }: SidebarSectionHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export interface SidebarEmptyStateProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
variant?: "default" | "game-modal";
|
|
11
|
+
}
|
|
12
|
+
export declare function SidebarEmptyState({ variant, className, ...props }: SidebarEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export interface SidebarNoticeProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
14
|
+
tone?: "default" | "danger";
|
|
15
|
+
icon?: React.ReactNode;
|
|
16
|
+
}
|
|
17
|
+
export declare function SidebarNotice({ tone, icon, className, children, ...props }: SidebarNoticeProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export interface SidebarToolbarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
19
|
+
}
|
|
20
|
+
export declare function SidebarToolbar({ className, ...props }: SidebarToolbarProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export interface SidebarToolbarPrimaryProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
22
|
+
}
|
|
23
|
+
export declare function SidebarToolbarPrimary({ className, ...props }: SidebarToolbarPrimaryProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export interface SidebarToolbarActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
25
|
+
}
|
|
26
|
+
export declare function SidebarToolbarActions({ className, ...props }: SidebarToolbarActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export interface SidebarItemProps extends React.HTMLAttributes<HTMLElement> {
|
|
28
|
+
active?: boolean;
|
|
29
|
+
as?: "button" | "div";
|
|
30
|
+
variant?: "default" | "accent-soft" | "dashed";
|
|
31
|
+
}
|
|
32
|
+
export declare const SidebarItem: React.ForwardRefExoticComponent<SidebarItemProps & React.RefAttributes<HTMLElement>>;
|
|
33
|
+
export interface SidebarItemIconProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
34
|
+
active?: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function SidebarItemIcon({ active, className, ...props }: SidebarItemIconProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
export interface SidebarItemBodyProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
38
|
+
}
|
|
39
|
+
export declare function SidebarItemBody({ className, ...props }: SidebarItemBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
40
|
+
export interface SidebarItemButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
41
|
+
}
|
|
42
|
+
export declare const SidebarItemButton: React.ForwardRefExoticComponent<SidebarItemButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
43
|
+
export interface SidebarItemTitleProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
44
|
+
}
|
|
45
|
+
export declare function SidebarItemTitle({ className, ...props }: SidebarItemTitleProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export interface SidebarItemDescriptionProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
47
|
+
}
|
|
48
|
+
export declare function SidebarItemDescription({ className, ...props }: SidebarItemDescriptionProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export interface SidebarRailItemProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
50
|
+
active?: boolean;
|
|
51
|
+
indicatorTone?: "accent" | "muted";
|
|
52
|
+
}
|
|
53
|
+
export interface SidebarRailMediaProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
54
|
+
}
|
|
55
|
+
export declare function SidebarRailMedia({ className, ...props }: SidebarRailMediaProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export declare const SidebarRailItem: React.ForwardRefExoticComponent<SidebarRailItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
57
|
+
export interface SidebarItemActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
58
|
+
}
|
|
59
|
+
export declare function SidebarItemAction({ className, ...props }: SidebarItemActionProps): import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
export declare const SidebarContent: {
|
|
61
|
+
EmptyState: typeof SidebarEmptyState;
|
|
62
|
+
ItemBody: typeof SidebarItemBody;
|
|
63
|
+
ItemDescription: typeof SidebarItemDescription;
|
|
64
|
+
ItemIcon: typeof SidebarItemIcon;
|
|
65
|
+
ItemAction: typeof SidebarItemAction;
|
|
66
|
+
ItemButton: React.ForwardRefExoticComponent<SidebarItemButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
67
|
+
ItemTitle: typeof SidebarItemTitle;
|
|
68
|
+
Toolbar: typeof SidebarToolbar;
|
|
69
|
+
ToolbarPrimary: typeof SidebarToolbarPrimary;
|
|
70
|
+
ToolbarActions: typeof SidebarToolbarActions;
|
|
71
|
+
SectionLabel: typeof SidebarSectionLabel;
|
|
72
|
+
SectionHeader: typeof SidebarSectionHeader;
|
|
73
|
+
Notice: typeof SidebarNotice;
|
|
74
|
+
Item: React.ForwardRefExoticComponent<SidebarItemProps & React.RefAttributes<HTMLElement>>;
|
|
75
|
+
RailMedia: typeof SidebarRailMedia;
|
|
76
|
+
RailItem: React.ForwardRefExoticComponent<SidebarRailItemProps & React.RefAttributes<HTMLButtonElement>>;
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=sidebar-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-content.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,wBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAW1B;AAED,MAAM,WAAW,yBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,SAAS,EACT,IAAI,EACJ,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,yBAAyB,2CAW3B;AAED,MAAM,WAAW,sBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,OAAO,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;CACpC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAmB,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,sBAAsB,2CAcxB;AAED,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,IAAI,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAgB,EAChB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAiBpB;AAED,MAAM,WAAW,mBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,2CAQ1E;AAED,MAAM,WAAW,0BACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAQ5B;AAED,MAAM,WAAW,0BACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEjD,wBAAgB,qBAAqB,CAAC,EACpC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,0BAA0B,2CAQ5B;AAED,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC;CAChD;AAED,eAAO,MAAM,WAAW,sFAsCvB,CAAC;AAEF,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;IAC7C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAc,EACd,SAAS,EACT,GAAG,KAAK,EACT,EAAE,oBAAoB,2CActB;AAED,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CAAG;AAElD,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CAQ5E;AAED,MAAM,WAAW,sBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;CAAG;AAE1D,eAAO,MAAM,iBAAiB,kGAgB5B,CAAC;AAEH,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CAAG;AAElD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAWvB;AAED,MAAM,WAAW,2BACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CAAG;AAElD,wBAAgB,sBAAsB,CAAC,EACrC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,2BAA2B,2CAW7B;AAED,MAAM,WAAW,oBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;CAAG;AAElD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,qBAAqB,2CAWvB;AAED,eAAO,MAAM,eAAe,gGAoC1B,CAAC;AAEH,MAAM,WAAW,sBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;CAAG;AAE1D,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,sBAAsB,2CAYxB;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;CAiB1B,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../../../lib/utils";
|
|
4
|
+
export function SidebarSectionLabel({ className, ...props }) {
|
|
5
|
+
return (_jsx("div", { "data-sidebar-section-label": true, className: cn("text-xs-tight font-semibold uppercase tracking-[0.16em] text-txt-strong", className), ...props }));
|
|
6
|
+
}
|
|
7
|
+
export function SidebarSectionHeader({ className, meta, children, ...props }) {
|
|
8
|
+
return (_jsxs("div", { "data-sidebar-section-header": true, className: cn("mb-2 flex items-center justify-between gap-2", className), ...props, children: [children, meta ? _jsx("div", { className: "text-2xs text-muted/50", children: meta }) : null] }));
|
|
9
|
+
}
|
|
10
|
+
export function SidebarEmptyState({ variant = "default", className, ...props }) {
|
|
11
|
+
return (_jsx("div", { "data-sidebar-empty-state": true, className: cn("rounded-sm px-4 py-8 text-center text-sm", variant === "game-modal"
|
|
12
|
+
? "bg-black/15 font-medium italic text-[color:var(--onboarding-text-muted)]"
|
|
13
|
+
: "bg-bg-muted/50 text-muted", className), ...props }));
|
|
14
|
+
}
|
|
15
|
+
export function SidebarNotice({ tone = "default", icon, className, children, ...props }) {
|
|
16
|
+
return (_jsxs("div", { "data-sidebar-notice": true, className: cn("flex items-center gap-2 rounded-sm border px-3 py-3 text-sm", tone === "danger"
|
|
17
|
+
? "border-danger/30 bg-danger/10 text-danger"
|
|
18
|
+
: "border-border/40 bg-bg/35 text-muted", className), ...props, children: [icon, children] }));
|
|
19
|
+
}
|
|
20
|
+
export function SidebarToolbar({ className, ...props }) {
|
|
21
|
+
return (_jsx("div", { "data-sidebar-toolbar": true, className: cn("flex w-full min-w-0 items-center gap-2", className), ...props }));
|
|
22
|
+
}
|
|
23
|
+
export function SidebarToolbarPrimary({ className, ...props }) {
|
|
24
|
+
return (_jsx("div", { "data-sidebar-toolbar-primary": true, className: cn("min-w-0 flex-1", className), ...props }));
|
|
25
|
+
}
|
|
26
|
+
export function SidebarToolbarActions({ className, ...props }) {
|
|
27
|
+
return (_jsx("div", { "data-sidebar-toolbar-actions": true, className: cn("flex shrink-0 items-center gap-2", className), ...props }));
|
|
28
|
+
}
|
|
29
|
+
export const SidebarItem = React.forwardRef(function SidebarItem({ active = false, as = "button", variant = "default", className, ...props }, ref) {
|
|
30
|
+
const sharedClassName = cn("group flex h-auto w-full min-w-0 items-start justify-start gap-3 rounded-sm px-3.5 py-3 text-left transition-[background-color,color,box-shadow,transform] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/35", active
|
|
31
|
+
? "bg-accent/12 text-txt shadow-sm"
|
|
32
|
+
: variant === "accent-soft"
|
|
33
|
+
? "bg-accent/5 text-muted hover:bg-accent/10 hover:text-txt"
|
|
34
|
+
: variant === "dashed"
|
|
35
|
+
? "border border-dashed border-border/40 text-muted hover:border-border hover:bg-bg-hover hover:text-txt"
|
|
36
|
+
: "text-muted hover:bg-bg-hover hover:text-txt", className);
|
|
37
|
+
if (as === "div") {
|
|
38
|
+
return (_jsx("div", { ref: ref, "data-sidebar-item": true, className: sharedClassName, ...props }));
|
|
39
|
+
}
|
|
40
|
+
return (_jsx("button", { ref: ref, type: "button", "data-sidebar-item": true, className: sharedClassName, ...props }));
|
|
41
|
+
});
|
|
42
|
+
export function SidebarItemIcon({ active = false, className, ...props }) {
|
|
43
|
+
return (_jsx("span", { "data-sidebar-item-icon": true, className: cn("mt-0.5 flex h-10 w-10 shrink-0 items-center justify-center rounded-sm p-2", active
|
|
44
|
+
? "bg-accent/18 text-txt-strong"
|
|
45
|
+
: "bg-bg-accent/80 text-muted", className), ...props }));
|
|
46
|
+
}
|
|
47
|
+
export function SidebarItemBody({ className, ...props }) {
|
|
48
|
+
return (_jsx("span", { "data-sidebar-item-body": true, className: cn("min-w-0 flex-1 text-left", className), ...props }));
|
|
49
|
+
}
|
|
50
|
+
export const SidebarItemButton = React.forwardRef(function SidebarItemButton({ className, ...props }, ref) {
|
|
51
|
+
return (_jsx("button", { ref: ref, type: "button", "data-sidebar-item-button": true, className: cn("flex h-auto min-w-0 flex-1 self-stretch items-start gap-3 rounded-none p-0 text-left focus-visible:outline-none", className), ...props }));
|
|
52
|
+
});
|
|
53
|
+
export function SidebarItemTitle({ className, ...props }) {
|
|
54
|
+
return (_jsx("span", { "data-sidebar-item-title": true, className: cn("block whitespace-normal break-words [overflow-wrap:anywhere] text-sm font-semibold leading-snug text-inherit", className), ...props }));
|
|
55
|
+
}
|
|
56
|
+
export function SidebarItemDescription({ className, ...props }) {
|
|
57
|
+
return (_jsx("span", { "data-sidebar-item-description": true, className: cn("mt-1 block whitespace-normal break-words [overflow-wrap:anywhere] text-xs-tight leading-relaxed text-muted/85", className), ...props }));
|
|
58
|
+
}
|
|
59
|
+
export function SidebarRailMedia({ className, ...props }) {
|
|
60
|
+
return (_jsx("span", { "data-sidebar-rail-media": true, className: cn("inline-flex items-center justify-center leading-none text-sm [&_img]:h-4 [&_img]:w-4 [&_img]:object-contain [&_img]:rounded-none [&_svg]:h-4 [&_svg]:w-4", className), ...props }));
|
|
61
|
+
}
|
|
62
|
+
export const SidebarRailItem = React.forwardRef(function SidebarRailItem({ active = false, indicatorTone, className, children, ...props }, ref) {
|
|
63
|
+
return (_jsxs("button", { ref: ref, type: "button", "data-sidebar-rail-item": true, className: cn("relative inline-flex h-11 w-11 shrink-0 items-center justify-center rounded-sm border border-border/24 text-xs font-semibold tracking-[0.02em] transition-[border-color,background-color,color,box-shadow,transform] duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent/35 active:scale-[0.98]", active
|
|
64
|
+
? "border-accent/26 bg-accent/12 text-txt shadow-sm"
|
|
65
|
+
: "bg-card text-muted-strong shadow-xs hover:border-border/38 hover:text-txt hover:shadow-sm", className), ...props, children: [_jsx("span", { className: "inline-flex items-center justify-center truncate px-1 [&_img]:h-4 [&_img]:w-4 [&_svg]:h-4 [&_svg]:w-4", children: children }), indicatorTone ? (_jsx("span", { className: cn("absolute right-1.5 top-1.5 h-2 w-2 rounded-full", indicatorTone === "accent"
|
|
66
|
+
? "bg-accent"
|
|
67
|
+
: "bg-muted/70") })) : null] }));
|
|
68
|
+
});
|
|
69
|
+
export function SidebarItemAction({ className, ...props }) {
|
|
70
|
+
return (_jsx("button", { type: "button", "data-sidebar-item-action": true, className: cn("absolute right-1.5 top-1.5 rounded bg-bg/80 px-1.5 py-0.5 text-2xs text-muted opacity-0 transition-opacity group-hover:opacity-100 hover:text-danger", className), ...props }));
|
|
71
|
+
}
|
|
72
|
+
export const SidebarContent = {
|
|
73
|
+
EmptyState: SidebarEmptyState,
|
|
74
|
+
ItemBody: SidebarItemBody,
|
|
75
|
+
ItemDescription: SidebarItemDescription,
|
|
76
|
+
ItemIcon: SidebarItemIcon,
|
|
77
|
+
ItemAction: SidebarItemAction,
|
|
78
|
+
ItemButton: SidebarItemButton,
|
|
79
|
+
ItemTitle: SidebarItemTitle,
|
|
80
|
+
Toolbar: SidebarToolbar,
|
|
81
|
+
ToolbarPrimary: SidebarToolbarPrimary,
|
|
82
|
+
ToolbarActions: SidebarToolbarActions,
|
|
83
|
+
SectionLabel: SidebarSectionLabel,
|
|
84
|
+
SectionHeader: SidebarSectionHeader,
|
|
85
|
+
Notice: SidebarNotice,
|
|
86
|
+
Item: SidebarItem,
|
|
87
|
+
RailMedia: SidebarRailMedia,
|
|
88
|
+
RailItem: SidebarRailItem,
|
|
89
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SidebarFilterBarProps } from "./sidebar-types";
|
|
2
|
+
export declare function SidebarFilterBar({ className, selectValue, selectOptions, onSelectValueChange, selectAriaLabel, selectTestId, sortDirection, onSortDirectionToggle, sortDirectionButtonTestId, sortAscendingLabel, sortDescendingLabel, refreshButtonTestId, refreshLabel, onRefresh, ...props }: SidebarFilterBarProps): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
//# sourceMappingURL=sidebar-filter-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-filter-bar.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-filter-bar.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAY7D,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,qBAAqB,EACrB,yBAAyB,EACzB,kBAAqC,EACrC,mBAAuC,EACvC,mBAAmB,EACnB,YAAwB,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,qBAAqB,2CA0EvB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowDown, ArrowUp, RefreshCw } from "lucide-react";
|
|
3
|
+
import { cn } from "../../../lib/utils";
|
|
4
|
+
import { Button } from "../../ui/button";
|
|
5
|
+
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../../ui/select";
|
|
6
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from "../../ui/tooltip";
|
|
7
|
+
const sidebarFilterBarClassName = "flex w-full min-w-0 items-center gap-2";
|
|
8
|
+
const sidebarFilterPrimaryClassName = "min-w-0 flex-1";
|
|
9
|
+
const sidebarFilterActionsClassName = "flex shrink-0 items-center gap-2";
|
|
10
|
+
const sidebarFilterButtonClassName = "h-10 w-10 shrink-0 rounded-sm border-border/60 bg-card/88 shadow-sm";
|
|
11
|
+
export function SidebarFilterBar({ className, selectValue, selectOptions, onSelectValueChange, selectAriaLabel, selectTestId, sortDirection, onSortDirectionToggle, sortDirectionButtonTestId, sortAscendingLabel = "Sort ascending", sortDescendingLabel = "Sort descending", refreshButtonTestId, refreshLabel = "Refresh", onRefresh, ...props }) {
|
|
12
|
+
const currentSortDirectionLabel = sortDirection === "asc" ? sortAscendingLabel : sortDescendingLabel;
|
|
13
|
+
return (_jsxs("div", { "data-sidebar-filter-bar": true, className: cn(sidebarFilterBarClassName, className), ...props, children: [_jsx("div", { className: sidebarFilterPrimaryClassName, children: _jsxs(Select, { value: selectValue, onValueChange: onSelectValueChange, children: [_jsx(SelectTrigger, { "data-testid": selectTestId, "aria-label": selectAriaLabel, className: "h-10 min-w-0 flex-1 rounded-xl border border-border/60 bg-card/88 px-3 text-sm text-txt shadow-sm", children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { position: "popper", children: selectOptions.map((option) => (_jsx(SelectItem, { value: option.value, children: option.label }, option.value))) })] }) }), _jsx(TooltipProvider, { delayDuration: 200, skipDelayDuration: 100, children: _jsxs("div", { className: sidebarFilterActionsClassName, children: [_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "outline", size: "icon", "data-testid": sortDirectionButtonTestId, className: sidebarFilterButtonClassName, "aria-label": currentSortDirectionLabel, onClick: onSortDirectionToggle, children: sortDirection === "asc" ? (_jsx(ArrowUp, { className: "h-4 w-4" })) : (_jsx(ArrowDown, { className: "h-4 w-4" })) }) }), _jsx(TooltipContent, { side: "bottom", className: "text-xs", children: currentSortDirectionLabel })] }), _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { type: "button", variant: "outline", size: "icon", "data-testid": refreshButtonTestId, className: sidebarFilterButtonClassName, "aria-label": refreshLabel, onClick: onRefresh, children: _jsx(RefreshCw, { className: "h-4 w-4" }) }) }), _jsx(TooltipContent, { side: "bottom", className: "text-xs", children: refreshLabel })] })] }) })] }));
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-header-stack.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-header-stack.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAK/D,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,GAAG,KAAK,EACT,EAAE,uBAAuB,2CAIzB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../../../lib/utils";
|
|
3
|
+
const sidebarHeaderStackClassName = "space-y-2.5 transform-gpu transition-[opacity,transform] duration-[240ms] ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transform-none motion-reduce:transition-none";
|
|
4
|
+
export function SidebarHeaderStack({ className, ...props }) {
|
|
5
|
+
return (_jsx("div", { className: cn(sidebarHeaderStackClassName, className), ...props }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type * as React from "react";
|
|
2
|
+
import type { SidebarSearchBarProps } from "../search";
|
|
3
|
+
export interface SidebarHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
search?: Omit<SidebarSearchBarProps, "className">;
|
|
6
|
+
searchClassName?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function SidebarHeader({ children, search, searchClassName, ...props }: SidebarHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=sidebar-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-header.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAIvD,MAAM,WAAW,kBACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;IAClD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,eAAe,EACf,GAAG,KAAK,EACT,EAAE,kBAAkB,2CASpB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { SidebarSearchBar } from "../search";
|
|
3
|
+
import { SidebarHeaderStack } from "./sidebar-header-stack";
|
|
4
|
+
export function SidebarHeader({ children, search, searchClassName, ...props }) {
|
|
5
|
+
return (_jsxs(SidebarHeaderStack, { ...props, children: [search ? (_jsx(SidebarSearchBar, { className: searchClassName, ...search })) : null, children] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-panel.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-panel.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAkBzD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,OAAmB,EACnB,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAQnB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva } from "class-variance-authority";
|
|
3
|
+
import { cn } from "../../../lib/utils";
|
|
4
|
+
const sidebarPanelVariants = cva("", {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: "flex min-h-full flex-col gap-2 rounded-sm p-1.5 shadow-inset",
|
|
8
|
+
mobile: "flex min-h-full flex-col gap-2 rounded-sm p-1.5 shadow-inset",
|
|
9
|
+
"game-modal": "flex min-h-full flex-col gap-1.5 rounded-sm bg-black/12 p-2",
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
variant: "default",
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
export function SidebarPanel({ className, variant = "default", ...props }) {
|
|
17
|
+
return (_jsx("div", { "data-sidebar-panel": true, className: cn(sidebarPanelVariants({ variant }), className), ...props }));
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar-root.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/composites/sidebar/sidebar-root.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,iBAAiB,CAAC;AA2YpE,eAAO,MAAM,OAAO,kFAwanB,CAAC"}
|