@k2b/ui 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +343 -0
- package/dist/.build-complete +0 -0
- package/dist/browser/actions/Button.js +236 -0
- package/dist/browser/actions/Button.js.map +1 -0
- package/dist/browser/actions/ContextMenu.js +199 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -0
- package/dist/browser/actions/CopyButton.js +97 -0
- package/dist/browser/actions/CopyButton.js.map +1 -0
- package/dist/browser/actions/Disclosure.js +83 -0
- package/dist/browser/actions/Disclosure.js.map +1 -0
- package/dist/browser/actions/Dropdown.js +669 -0
- package/dist/browser/actions/Dropdown.js.map +1 -0
- package/dist/browser/actions/FilterChip.js +149 -0
- package/dist/browser/actions/FilterChip.js.map +1 -0
- package/dist/browser/actions/RemoveButton.js +47 -0
- package/dist/browser/actions/RemoveButton.js.map +1 -0
- package/dist/browser/actions/SegmentedControl.js +138 -0
- package/dist/browser/actions/SegmentedControl.js.map +1 -0
- package/dist/browser/actions/SplitButton.js +76 -0
- package/dist/browser/actions/SplitButton.js.map +1 -0
- package/dist/browser/actions/SpotlightSearch.js +87 -0
- package/dist/browser/actions/SpotlightSearch.js.map +1 -0
- package/dist/browser/actions/Tabs.js +185 -0
- package/dist/browser/actions/Tabs.js.map +1 -0
- package/dist/browser/actions/Toolbar.js +87 -0
- package/dist/browser/actions/Toolbar.js.map +1 -0
- package/dist/browser/actions/index.js +13 -0
- package/dist/browser/actions/index.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +760 -0
- package/dist/browser/chat/ChatComposer.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +688 -0
- package/dist/browser/chat/ChatPrimitives.js.map +1 -0
- package/dist/browser/chat/ChatRoot.js +27 -0
- package/dist/browser/chat/ChatRoot.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +404 -0
- package/dist/browser/chat/ChatTimeline.js.map +1 -0
- package/dist/browser/chat/chat-behavior.js +53 -0
- package/dist/browser/chat/chat-behavior.js.map +1 -0
- package/dist/browser/chat/index.js +17 -0
- package/dist/browser/chat/index.js.map +1 -0
- package/dist/browser/chat/types.js +2 -0
- package/dist/browser/chat/types.js.map +1 -0
- package/dist/browser/content/Calendar.js +2168 -0
- package/dist/browser/content/Calendar.js.map +1 -0
- package/dist/browser/content/Chart.js +680 -0
- package/dist/browser/content/Chart.js.map +1 -0
- package/dist/browser/content/CodeDisplay.js +104 -0
- package/dist/browser/content/CodeDisplay.js.map +1 -0
- package/dist/browser/content/DataTable.js +724 -0
- package/dist/browser/content/DataTable.js.map +1 -0
- package/dist/browser/content/Docs.js +227 -0
- package/dist/browser/content/Docs.js.map +1 -0
- package/dist/browser/content/FileBrowser.js +462 -0
- package/dist/browser/content/FileBrowser.js.map +1 -0
- package/dist/browser/content/FileTree.js +453 -0
- package/dist/browser/content/FileTree.js.map +1 -0
- package/dist/browser/content/FileView.js +842 -0
- package/dist/browser/content/FileView.js.map +1 -0
- package/dist/browser/content/Lightbox.js +285 -0
- package/dist/browser/content/Lightbox.js.map +1 -0
- package/dist/browser/content/LogEntriesTable.js +139 -0
- package/dist/browser/content/LogEntriesTable.js.map +1 -0
- package/dist/browser/content/MarkdownView.js +138 -0
- package/dist/browser/content/MarkdownView.js.map +1 -0
- package/dist/browser/content/Pagination.js +182 -0
- package/dist/browser/content/Pagination.js.map +1 -0
- package/dist/browser/content/PdfPreview.js +204 -0
- package/dist/browser/content/PdfPreview.js.map +1 -0
- package/dist/browser/content/RangePicker.js +83 -0
- package/dist/browser/content/RangePicker.js.map +1 -0
- package/dist/browser/content/StructuredDataPreview.js +194 -0
- package/dist/browser/content/StructuredDataPreview.js.map +1 -0
- package/dist/browser/content/calendar-event-layout.js +92 -0
- package/dist/browser/content/calendar-event-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +114 -0
- package/dist/browser/content/calendar-pointer.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +33 -0
- package/dist/browser/content/chart-map-viewport.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +124 -0
- package/dist/browser/content/chart-state-timeline.js.map +1 -0
- package/dist/browser/content/code-highlight.js +144 -0
- package/dist/browser/content/code-highlight.js.map +1 -0
- package/dist/browser/content/file-tree.js +93 -0
- package/dist/browser/content/file-tree.js.map +1 -0
- package/dist/browser/content/file-view-preview.js +112 -0
- package/dist/browser/content/file-view-preview.js.map +1 -0
- package/dist/browser/content/index.js +16 -0
- package/dist/browser/content/index.js.map +1 -0
- package/dist/browser/feedback/InlineGuidance.js +46 -0
- package/dist/browser/feedback/InlineGuidance.js.map +1 -0
- package/dist/browser/feedback/Tooltip.js +189 -0
- package/dist/browser/feedback/Tooltip.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +207 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -0
- package/dist/browser/feedback/index.js +6 -0
- package/dist/browser/feedback/index.js.map +1 -0
- package/dist/browser/feedback/prompts.js +991 -0
- package/dist/browser/feedback/prompts.js.map +1 -0
- package/dist/browser/feedback/toast.js +271 -0
- package/dist/browser/feedback/toast.js.map +1 -0
- package/dist/browser/feedback/tooltip-position.js +25 -0
- package/dist/browser/feedback/tooltip-position.js.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/inputs/AutocompleteEditor.js +610 -0
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/browser/inputs/AutocompleteSelect.js +632 -0
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/browser/inputs/Checkbox.js +137 -0
- package/dist/browser/inputs/Checkbox.js.map +1 -0
- package/dist/browser/inputs/CheckboxCard.js +130 -0
- package/dist/browser/inputs/CheckboxCard.js.map +1 -0
- package/dist/browser/inputs/ChoiceGroups.js +174 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -0
- package/dist/browser/inputs/ChoiceInputs.js +400 -0
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -0
- package/dist/browser/inputs/Combobox.js +274 -0
- package/dist/browser/inputs/Combobox.js.map +1 -0
- package/dist/browser/inputs/DatePicker.js +923 -0
- package/dist/browser/inputs/DatePicker.js.map +1 -0
- package/dist/browser/inputs/FileInputs.js +736 -0
- package/dist/browser/inputs/FileInputs.js.map +1 -0
- package/dist/browser/inputs/MultiSelectInput.js +565 -0
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -0
- package/dist/browser/inputs/NumberInput.js +288 -0
- package/dist/browser/inputs/NumberInput.js.map +1 -0
- package/dist/browser/inputs/Select.js +507 -0
- package/dist/browser/inputs/Select.js.map +1 -0
- package/dist/browser/inputs/SelectChip.js +151 -0
- package/dist/browser/inputs/SelectChip.js.map +1 -0
- package/dist/browser/inputs/SpecialInputs.js +117 -0
- package/dist/browser/inputs/SpecialInputs.js.map +1 -0
- package/dist/browser/inputs/Switch.js +117 -0
- package/dist/browser/inputs/Switch.js.map +1 -0
- package/dist/browser/inputs/TagEditor.js +358 -0
- package/dist/browser/inputs/TagEditor.js.map +1 -0
- package/dist/browser/inputs/TagsInput.js +195 -0
- package/dist/browser/inputs/TagsInput.js.map +1 -0
- package/dist/browser/inputs/TemplateEditor.js +190 -0
- package/dist/browser/inputs/TemplateEditor.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +318 -0
- package/dist/browser/inputs/TextInput.js.map +1 -0
- package/dist/browser/inputs/choice.js +188 -0
- package/dist/browser/inputs/choice.js.map +1 -0
- package/dist/browser/inputs/completion/behaviors.js +108 -0
- package/dist/browser/inputs/completion/behaviors.js.map +1 -0
- package/dist/browser/inputs/completion/engine.js +103 -0
- package/dist/browser/inputs/completion/engine.js.map +1 -0
- package/dist/browser/inputs/completion/index.js +4 -0
- package/dist/browser/inputs/completion/index.js.map +1 -0
- package/dist/browser/inputs/completion/overlay.js +25 -0
- package/dist/browser/inputs/completion/overlay.js.map +1 -0
- package/dist/browser/inputs/date-picker.js +123 -0
- package/dist/browser/inputs/date-picker.js.map +1 -0
- package/dist/browser/inputs/editor-dom.js +26 -0
- package/dist/browser/inputs/editor-dom.js.map +1 -0
- package/dist/browser/inputs/field-contract.js +9 -0
- package/dist/browser/inputs/field-contract.js.map +1 -0
- package/dist/browser/inputs/icon-options.js +46 -0
- package/dist/browser/inputs/icon-options.js.map +1 -0
- package/dist/browser/inputs/image-crop.js +145 -0
- package/dist/browser/inputs/image-crop.js.map +1 -0
- package/dist/browser/inputs/index.js +23 -0
- package/dist/browser/inputs/index.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +725 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/browser/inputs/markdown/Toolbar.js +172 -0
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/browser/inputs/markdown/actions.js +140 -0
- package/dist/browser/inputs/markdown/actions.js.map +1 -0
- package/dist/browser/inputs/markdown/active-formats.js +36 -0
- package/dist/browser/inputs/markdown/active-formats.js.map +1 -0
- package/dist/browser/inputs/markdown/behaviors.js +63 -0
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -0
- package/dist/browser/inputs/markdown/code-zone.js +8 -0
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -0
- package/dist/browser/internal/color.js +18 -0
- package/dist/browser/internal/color.js.map +1 -0
- package/dist/browser/internal/field.js +158 -0
- package/dist/browser/internal/field.js.map +1 -0
- package/dist/browser/internal/portal.js +17 -0
- package/dist/browser/internal/portal.js.map +1 -0
- package/dist/browser/intl/Format.js +273 -0
- package/dist/browser/intl/Format.js.map +1 -0
- package/dist/browser/intl/index.js +3 -0
- package/dist/browser/intl/index.js.map +1 -0
- package/dist/browser/intl/locale.js +63 -0
- package/dist/browser/intl/locale.js.map +1 -0
- package/dist/browser/intl/messages.js +753 -0
- package/dist/browser/intl/messages.js.map +1 -0
- package/dist/browser/layout/AppOverview.js +151 -0
- package/dist/browser/layout/AppOverview.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +1502 -0
- package/dist/browser/layout/AppWorkspace.js.map +1 -0
- package/dist/browser/layout/DataPanel.js +122 -0
- package/dist/browser/layout/DataPanel.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +484 -0
- package/dist/browser/layout/DetailPanel.js.map +1 -0
- package/dist/browser/layout/Discussion.js +511 -0
- package/dist/browser/layout/Discussion.js.map +1 -0
- package/dist/browser/layout/FloatingWindow.js +332 -0
- package/dist/browser/layout/FloatingWindow.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +236 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -0
- package/dist/browser/layout/PanelHeader.js +91 -0
- package/dist/browser/layout/PanelHeader.js.map +1 -0
- package/dist/browser/layout/Panes.js +978 -0
- package/dist/browser/layout/Panes.js.map +1 -0
- package/dist/browser/layout/ScrollArea.js +29 -0
- package/dist/browser/layout/ScrollArea.js.map +1 -0
- package/dist/browser/layout/Settings.js +381 -0
- package/dist/browser/layout/Settings.js.map +1 -0
- package/dist/browser/layout/SettingsCollection.js +212 -0
- package/dist/browser/layout/SettingsCollection.js.map +1 -0
- package/dist/browser/layout/SettingsModal.js +281 -0
- package/dist/browser/layout/SettingsModal.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +419 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -0
- package/dist/browser/layout/app-workspace-state.js +125 -0
- package/dist/browser/layout/app-workspace-state.js.map +1 -0
- package/dist/browser/layout/floating-window-geometry.js +15 -0
- package/dist/browser/layout/floating-window-geometry.js.map +1 -0
- package/dist/browser/layout/index.js +17 -0
- package/dist/browser/layout/index.js.map +1 -0
- package/dist/browser/layout/panes-layout.js +436 -0
- package/dist/browser/layout/panes-layout.js.map +1 -0
- package/dist/browser/layout/stable-id.js +17 -0
- package/dist/browser/layout/stable-id.js.map +1 -0
- package/dist/browser/semantics.js +2 -0
- package/dist/browser/semantics.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +97 -0
- package/dist/browser/surfaces/Avatar.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js +66 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -0
- package/dist/browser/surfaces/LinkCard.js +40 -0
- package/dist/browser/surfaces/LinkCard.js.map +1 -0
- package/dist/browser/surfaces/NotFoundState.js +85 -0
- package/dist/browser/surfaces/NotFoundState.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +145 -0
- package/dist/browser/surfaces/NoticeCard.js.map +1 -0
- package/dist/browser/surfaces/Paper.js +33 -0
- package/dist/browser/surfaces/Paper.js.map +1 -0
- package/dist/browser/surfaces/Placeholder.js +90 -0
- package/dist/browser/surfaces/Placeholder.js.map +1 -0
- package/dist/browser/surfaces/ProgressBar.js +58 -0
- package/dist/browser/surfaces/ProgressBar.js.map +1 -0
- package/dist/browser/surfaces/StatCell.js +172 -0
- package/dist/browser/surfaces/StatCell.js.map +1 -0
- package/dist/browser/surfaces/StatGrid.js +80 -0
- package/dist/browser/surfaces/StatGrid.js.map +1 -0
- package/dist/browser/surfaces/StatusBadge.js +70 -0
- package/dist/browser/surfaces/StatusBadge.js.map +1 -0
- package/dist/browser/surfaces/Tag.js +94 -0
- package/dist/browser/surfaces/Tag.js.map +1 -0
- package/dist/browser/surfaces/index.js +13 -0
- package/dist/browser/surfaces/index.js.map +1 -0
- package/dist/browser/widgets/Widget.js +89 -0
- package/dist/browser/widgets/Widget.js.map +1 -0
- package/dist/browser/widgets/WidgetHero.js +47 -0
- package/dist/browser/widgets/WidgetHero.js.map +1 -0
- package/dist/browser/widgets/WidgetList.js +125 -0
- package/dist/browser/widgets/WidgetList.js.map +1 -0
- package/dist/browser/widgets/WidgetPills.js +78 -0
- package/dist/browser/widgets/WidgetPills.js.map +1 -0
- package/dist/browser/widgets/WidgetStat.js +114 -0
- package/dist/browser/widgets/WidgetStat.js.map +1 -0
- package/dist/browser/widgets/WidgetStatus.js +54 -0
- package/dist/browser/widgets/WidgetStatus.js.map +1 -0
- package/dist/browser/widgets/index.js +7 -0
- package/dist/browser/widgets/index.js.map +1 -0
- package/dist/global.css +3 -0
- package/dist/licenses/ibm-plex-mono.txt +93 -0
- package/dist/licenses/ibm-plex-sans.txt +93 -0
- package/dist/licenses/tabler-icons.txt +21 -0
- package/dist/plex.css +1 -0
- package/dist/ssr/actions/Button.js +203 -0
- package/dist/ssr/actions/Button.js.map +1 -0
- package/dist/ssr/actions/ContextMenu.js +128 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -0
- package/dist/ssr/actions/CopyButton.js +79 -0
- package/dist/ssr/actions/CopyButton.js.map +1 -0
- package/dist/ssr/actions/Disclosure.js +26 -0
- package/dist/ssr/actions/Disclosure.js.map +1 -0
- package/dist/ssr/actions/Dropdown.js +443 -0
- package/dist/ssr/actions/Dropdown.js.map +1 -0
- package/dist/ssr/actions/FilterChip.js +132 -0
- package/dist/ssr/actions/FilterChip.js.map +1 -0
- package/dist/ssr/actions/RemoveButton.js +45 -0
- package/dist/ssr/actions/RemoveButton.js.map +1 -0
- package/dist/ssr/actions/SegmentedControl.js +57 -0
- package/dist/ssr/actions/SegmentedControl.js.map +1 -0
- package/dist/ssr/actions/SplitButton.js +74 -0
- package/dist/ssr/actions/SplitButton.js.map +1 -0
- package/dist/ssr/actions/SpotlightSearch.js +38 -0
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -0
- package/dist/ssr/actions/Tabs.js +91 -0
- package/dist/ssr/actions/Tabs.js.map +1 -0
- package/dist/ssr/actions/Toolbar.js +33 -0
- package/dist/ssr/actions/Toolbar.js.map +1 -0
- package/dist/ssr/actions/index.js +13 -0
- package/dist/ssr/actions/index.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +392 -0
- package/dist/ssr/chat/ChatComposer.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +377 -0
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -0
- package/dist/ssr/chat/ChatRoot.js +10 -0
- package/dist/ssr/chat/ChatRoot.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +301 -0
- package/dist/ssr/chat/ChatTimeline.js.map +1 -0
- package/dist/ssr/chat/chat-behavior.js +53 -0
- package/dist/ssr/chat/chat-behavior.js.map +1 -0
- package/dist/ssr/chat/index.js +17 -0
- package/dist/ssr/chat/index.js.map +1 -0
- package/dist/ssr/chat/types.js +2 -0
- package/dist/ssr/chat/types.js.map +1 -0
- package/dist/ssr/content/Calendar.js +1542 -0
- package/dist/ssr/content/Calendar.js.map +1 -0
- package/dist/ssr/content/Chart.js +552 -0
- package/dist/ssr/content/Chart.js.map +1 -0
- package/dist/ssr/content/CodeDisplay.js +55 -0
- package/dist/ssr/content/CodeDisplay.js.map +1 -0
- package/dist/ssr/content/DataTable.js +470 -0
- package/dist/ssr/content/DataTable.js.map +1 -0
- package/dist/ssr/content/Docs.js +108 -0
- package/dist/ssr/content/Docs.js.map +1 -0
- package/dist/ssr/content/FileBrowser.js +422 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -0
- package/dist/ssr/content/FileTree.js +299 -0
- package/dist/ssr/content/FileTree.js.map +1 -0
- package/dist/ssr/content/FileView.js +612 -0
- package/dist/ssr/content/FileView.js.map +1 -0
- package/dist/ssr/content/Lightbox.js +164 -0
- package/dist/ssr/content/Lightbox.js.map +1 -0
- package/dist/ssr/content/LogEntriesTable.js +106 -0
- package/dist/ssr/content/LogEntriesTable.js.map +1 -0
- package/dist/ssr/content/MarkdownView.js +119 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -0
- package/dist/ssr/content/Pagination.js +141 -0
- package/dist/ssr/content/Pagination.js.map +1 -0
- package/dist/ssr/content/PdfPreview.js +126 -0
- package/dist/ssr/content/PdfPreview.js.map +1 -0
- package/dist/ssr/content/RangePicker.js +35 -0
- package/dist/ssr/content/RangePicker.js.map +1 -0
- package/dist/ssr/content/StructuredDataPreview.js +127 -0
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -0
- package/dist/ssr/content/calendar-event-layout.js +92 -0
- package/dist/ssr/content/calendar-event-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +114 -0
- package/dist/ssr/content/calendar-pointer.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +33 -0
- package/dist/ssr/content/chart-map-viewport.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +124 -0
- package/dist/ssr/content/chart-state-timeline.js.map +1 -0
- package/dist/ssr/content/code-highlight.js +144 -0
- package/dist/ssr/content/code-highlight.js.map +1 -0
- package/dist/ssr/content/file-tree.js +93 -0
- package/dist/ssr/content/file-tree.js.map +1 -0
- package/dist/ssr/content/file-view-preview.js +112 -0
- package/dist/ssr/content/file-view-preview.js.map +1 -0
- package/dist/ssr/content/index.js +16 -0
- package/dist/ssr/content/index.js.map +1 -0
- package/dist/ssr/feedback/InlineGuidance.js +26 -0
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -0
- package/dist/ssr/feedback/Tooltip.js +156 -0
- package/dist/ssr/feedback/Tooltip.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +207 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -0
- package/dist/ssr/feedback/index.js +6 -0
- package/dist/ssr/feedback/index.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +703 -0
- package/dist/ssr/feedback/prompts.js.map +1 -0
- package/dist/ssr/feedback/toast.js +271 -0
- package/dist/ssr/feedback/toast.js.map +1 -0
- package/dist/ssr/feedback/tooltip-position.js +25 -0
- package/dist/ssr/feedback/tooltip-position.js.map +1 -0
- package/dist/ssr/index.js +11 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteEditor.js +463 -0
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteSelect.js +420 -0
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/ssr/inputs/Checkbox.js +75 -0
- package/dist/ssr/inputs/Checkbox.js.map +1 -0
- package/dist/ssr/inputs/CheckboxCard.js +69 -0
- package/dist/ssr/inputs/CheckboxCard.js.map +1 -0
- package/dist/ssr/inputs/ChoiceGroups.js +101 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -0
- package/dist/ssr/inputs/ChoiceInputs.js +250 -0
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -0
- package/dist/ssr/inputs/Combobox.js +177 -0
- package/dist/ssr/inputs/Combobox.js.map +1 -0
- package/dist/ssr/inputs/DatePicker.js +629 -0
- package/dist/ssr/inputs/DatePicker.js.map +1 -0
- package/dist/ssr/inputs/FileInputs.js +543 -0
- package/dist/ssr/inputs/FileInputs.js.map +1 -0
- package/dist/ssr/inputs/MultiSelectInput.js +347 -0
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -0
- package/dist/ssr/inputs/NumberInput.js +177 -0
- package/dist/ssr/inputs/NumberInput.js.map +1 -0
- package/dist/ssr/inputs/Select.js +308 -0
- package/dist/ssr/inputs/Select.js.map +1 -0
- package/dist/ssr/inputs/SelectChip.js +129 -0
- package/dist/ssr/inputs/SelectChip.js.map +1 -0
- package/dist/ssr/inputs/SpecialInputs.js +116 -0
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -0
- package/dist/ssr/inputs/Switch.js +62 -0
- package/dist/ssr/inputs/Switch.js.map +1 -0
- package/dist/ssr/inputs/TagEditor.js +280 -0
- package/dist/ssr/inputs/TagEditor.js.map +1 -0
- package/dist/ssr/inputs/TagsInput.js +122 -0
- package/dist/ssr/inputs/TagsInput.js.map +1 -0
- package/dist/ssr/inputs/TemplateEditor.js +164 -0
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +211 -0
- package/dist/ssr/inputs/TextInput.js.map +1 -0
- package/dist/ssr/inputs/choice.js +188 -0
- package/dist/ssr/inputs/choice.js.map +1 -0
- package/dist/ssr/inputs/completion/behaviors.js +108 -0
- package/dist/ssr/inputs/completion/behaviors.js.map +1 -0
- package/dist/ssr/inputs/completion/engine.js +103 -0
- package/dist/ssr/inputs/completion/engine.js.map +1 -0
- package/dist/ssr/inputs/completion/index.js +4 -0
- package/dist/ssr/inputs/completion/index.js.map +1 -0
- package/dist/ssr/inputs/completion/overlay.js +25 -0
- package/dist/ssr/inputs/completion/overlay.js.map +1 -0
- package/dist/ssr/inputs/date-picker.js +123 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -0
- package/dist/ssr/inputs/editor-dom.js +26 -0
- package/dist/ssr/inputs/editor-dom.js.map +1 -0
- package/dist/ssr/inputs/field-contract.js +9 -0
- package/dist/ssr/inputs/field-contract.js.map +1 -0
- package/dist/ssr/inputs/icon-options.js +46 -0
- package/dist/ssr/inputs/icon-options.js.map +1 -0
- package/dist/ssr/inputs/image-crop.js +145 -0
- package/dist/ssr/inputs/image-crop.js.map +1 -0
- package/dist/ssr/inputs/index.js +23 -0
- package/dist/ssr/inputs/index.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +516 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/ssr/inputs/markdown/Toolbar.js +115 -0
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/ssr/inputs/markdown/actions.js +140 -0
- package/dist/ssr/inputs/markdown/actions.js.map +1 -0
- package/dist/ssr/inputs/markdown/active-formats.js +36 -0
- package/dist/ssr/inputs/markdown/active-formats.js.map +1 -0
- package/dist/ssr/inputs/markdown/behaviors.js +63 -0
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -0
- package/dist/ssr/inputs/markdown/code-zone.js +8 -0
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -0
- package/dist/ssr/internal/color.js +18 -0
- package/dist/ssr/internal/color.js.map +1 -0
- package/dist/ssr/internal/field.js +90 -0
- package/dist/ssr/internal/field.js.map +1 -0
- package/dist/ssr/internal/portal.js +17 -0
- package/dist/ssr/internal/portal.js.map +1 -0
- package/dist/ssr/intl/Format.js +192 -0
- package/dist/ssr/intl/Format.js.map +1 -0
- package/dist/ssr/intl/index.js +3 -0
- package/dist/ssr/intl/index.js.map +1 -0
- package/dist/ssr/intl/locale.js +63 -0
- package/dist/ssr/intl/locale.js.map +1 -0
- package/dist/ssr/intl/messages.js +753 -0
- package/dist/ssr/intl/messages.js.map +1 -0
- package/dist/ssr/layout/AppOverview.js +85 -0
- package/dist/ssr/layout/AppOverview.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +976 -0
- package/dist/ssr/layout/AppWorkspace.js.map +1 -0
- package/dist/ssr/layout/DataPanel.js +101 -0
- package/dist/ssr/layout/DataPanel.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +284 -0
- package/dist/ssr/layout/DetailPanel.js.map +1 -0
- package/dist/ssr/layout/Discussion.js +319 -0
- package/dist/ssr/layout/Discussion.js.map +1 -0
- package/dist/ssr/layout/FloatingWindow.js +259 -0
- package/dist/ssr/layout/FloatingWindow.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +136 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -0
- package/dist/ssr/layout/PanelHeader.js +45 -0
- package/dist/ssr/layout/PanelHeader.js.map +1 -0
- package/dist/ssr/layout/Panes.js +678 -0
- package/dist/ssr/layout/Panes.js.map +1 -0
- package/dist/ssr/layout/ScrollArea.js +18 -0
- package/dist/ssr/layout/ScrollArea.js.map +1 -0
- package/dist/ssr/layout/Settings.js +219 -0
- package/dist/ssr/layout/Settings.js.map +1 -0
- package/dist/ssr/layout/SettingsCollection.js +150 -0
- package/dist/ssr/layout/SettingsCollection.js.map +1 -0
- package/dist/ssr/layout/SettingsModal.js +156 -0
- package/dist/ssr/layout/SettingsModal.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +419 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -0
- package/dist/ssr/layout/app-workspace-state.js +125 -0
- package/dist/ssr/layout/app-workspace-state.js.map +1 -0
- package/dist/ssr/layout/floating-window-geometry.js +15 -0
- package/dist/ssr/layout/floating-window-geometry.js.map +1 -0
- package/dist/ssr/layout/index.js +17 -0
- package/dist/ssr/layout/index.js.map +1 -0
- package/dist/ssr/layout/panes-layout.js +436 -0
- package/dist/ssr/layout/panes-layout.js.map +1 -0
- package/dist/ssr/layout/stable-id.js +17 -0
- package/dist/ssr/layout/stable-id.js.map +1 -0
- package/dist/ssr/semantics.js +2 -0
- package/dist/ssr/semantics.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +43 -0
- package/dist/ssr/surfaces/Avatar.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js +25 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -0
- package/dist/ssr/surfaces/LinkCard.js +25 -0
- package/dist/ssr/surfaces/LinkCard.js.map +1 -0
- package/dist/ssr/surfaces/NotFoundState.js +38 -0
- package/dist/ssr/surfaces/NotFoundState.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +83 -0
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -0
- package/dist/ssr/surfaces/Paper.js +32 -0
- package/dist/ssr/surfaces/Paper.js.map +1 -0
- package/dist/ssr/surfaces/Placeholder.js +76 -0
- package/dist/ssr/surfaces/Placeholder.js.map +1 -0
- package/dist/ssr/surfaces/ProgressBar.js +13 -0
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -0
- package/dist/ssr/surfaces/StatCell.js +80 -0
- package/dist/ssr/surfaces/StatCell.js.map +1 -0
- package/dist/ssr/surfaces/StatGrid.js +62 -0
- package/dist/ssr/surfaces/StatGrid.js.map +1 -0
- package/dist/ssr/surfaces/StatusBadge.js +38 -0
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -0
- package/dist/ssr/surfaces/Tag.js +32 -0
- package/dist/ssr/surfaces/Tag.js.map +1 -0
- package/dist/ssr/surfaces/index.js +13 -0
- package/dist/ssr/surfaces/index.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +54 -0
- package/dist/ssr/widgets/Widget.js.map +1 -0
- package/dist/ssr/widgets/WidgetHero.js +23 -0
- package/dist/ssr/widgets/WidgetHero.js.map +1 -0
- package/dist/ssr/widgets/WidgetList.js +73 -0
- package/dist/ssr/widgets/WidgetList.js.map +1 -0
- package/dist/ssr/widgets/WidgetPills.js +40 -0
- package/dist/ssr/widgets/WidgetPills.js.map +1 -0
- package/dist/ssr/widgets/WidgetStat.js +45 -0
- package/dist/ssr/widgets/WidgetStat.js.map +1 -0
- package/dist/ssr/widgets/WidgetStatus.js +23 -0
- package/dist/ssr/widgets/WidgetStatus.js.map +1 -0
- package/dist/ssr/widgets/index.js +7 -0
- package/dist/ssr/widgets/index.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
- package/dist/tabler.css +4 -0
- package/package.json +77 -0
|
@@ -0,0 +1,976 @@
|
|
|
1
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
2
|
+
import { ssrElement as _$ssrElement } from "solid-js/web";
|
|
3
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
4
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
5
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
6
|
+
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
7
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
8
|
+
import { escape as _$escape } from "solid-js/web";
|
|
9
|
+
var _tmpl$ = ["<button type=\"button\" class=\"k2b-app-workspace__resize\" role=\"separator\"", " style=\"", "\"><span aria-hidden=\"true\"></span></button>"],
|
|
10
|
+
_tmpl$2 = ["<div class=\"k2b-app-workspace__main-primary\" data-workspace-main-region=\"main\"", ">", "</div>"],
|
|
11
|
+
_tmpl$3 = ["<section", " class=\"", "\"", " style=\"", "\">", "</section>"],
|
|
12
|
+
_tmpl$4 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
|
|
13
|
+
_tmpl$5 = ["<nav class=\"k2b-app-workspace__sidebar-mobile\"", "><details><summary><span class=\"k2b-app-workspace__sidebar-mobile-trigger\"><i class=\"ti ti-menu-2\" aria-hidden=\"true\"></i><span>", "</span></span><i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i></summary>", "</details></nav>"],
|
|
14
|
+
_tmpl$6 = ["<aside", " class=\"", "\"", "><div class=\"k2b-app-workspace__sidebar-desktop\">", "</div></aside>"],
|
|
15
|
+
_tmpl$7 = ["<div class=\"k2b-app-workspace__sidebar-section-actions\">", "</div>"],
|
|
16
|
+
_tmpl$8 = ["<header class=\"k2b-app-workspace__sidebar-section-header\">", "", "</header>"],
|
|
17
|
+
_tmpl$9 = ["<h2>", "</h2>"],
|
|
18
|
+
_tmpl$0 = ["<div class=\"k2b-app-workspace__sidebar-item-actions\"", ">", "</div>"],
|
|
19
|
+
_tmpl$1 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-main\"", "", ">", "</button>"],
|
|
20
|
+
_tmpl$10 = ["<a", " class=\"k2b-app-workspace__sidebar-item-main\"", ">", "</a>"],
|
|
21
|
+
_tmpl$11 = ["<span class=\"k2b-app-workspace__sidebar-item-icon\" aria-hidden=\"true\">", "</span>"],
|
|
22
|
+
_tmpl$12 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text\">", "</span></span>"],
|
|
23
|
+
_tmpl$13 = ["<i", "></i>"],
|
|
24
|
+
_tmpl$14 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
|
|
25
|
+
_tmpl$15 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
|
|
26
|
+
_tmpl$16 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
|
|
27
|
+
_tmpl$17 = ["<span class=\"k2b-app-workspace__sidebar-item-icon\"", " aria-hidden=\"true\"><i", "></i></span>"],
|
|
28
|
+
_tmpl$18 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"><span class=\"k2b-app-workspace__sidebar-item-label-text\">", "</span></span>"],
|
|
29
|
+
_tmpl$19 = ["<span class=\"", "\"", ">", "</span>"],
|
|
30
|
+
_tmpl$20 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
|
|
31
|
+
_tmpl$21 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
|
|
32
|
+
_tmpl$22 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", ">", "", "</div>"],
|
|
33
|
+
_tmpl$23 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
|
|
34
|
+
_tmpl$24 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
|
|
35
|
+
_tmpl$25 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
36
|
+
_tmpl$26 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
|
|
37
|
+
_tmpl$27 = ["<div class=\"", "\">", "</div>"];
|
|
38
|
+
import { Link } from "@k2b/ssr/nav";
|
|
39
|
+
import { children, createContext, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, useContext } from "solid-js";
|
|
40
|
+
import { useUiMessages } from "../intl/messages";
|
|
41
|
+
import { installAppWorkspaceController } from "./app-workspace-controller";
|
|
42
|
+
import { APP_WORKSPACE_DETAIL_DEFAULT, APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_DEFAULT, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_PANE_DEFAULT, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_DEFAULT, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspaceLayoutStyle, appWorkspacePanelVariable } from "./app-workspace-state";
|
|
43
|
+
import { assertStableUiId, assertUniqueStableUiIds } from "./stable-id";
|
|
44
|
+
const ResizeContext = createContext(true);
|
|
45
|
+
const LayoutStateContext = createContext(null);
|
|
46
|
+
const SidebarModeContext = createContext("desktop");
|
|
47
|
+
const MAIN_PANE = Symbol("AppWorkspace.MainPane");
|
|
48
|
+
const SIDEBAR_MOBILE_TRIGGER = Symbol("AppWorkspace.SidebarMobileTrigger");
|
|
49
|
+
const SIDEBAR_MOBILE = Symbol("AppWorkspace.SidebarMobile");
|
|
50
|
+
const SIDEBAR_DESKTOP = Symbol("AppWorkspace.SidebarDesktop");
|
|
51
|
+
const SIDEBAR_ITEM_ICON = Symbol("AppWorkspace.SidebarItemIcon");
|
|
52
|
+
const SIDEBAR_ITEM_LABEL = Symbol("AppWorkspace.SidebarItemLabel");
|
|
53
|
+
const SIDEBAR_ITEM_META = Symbol("AppWorkspace.SidebarItemMeta");
|
|
54
|
+
const SIDEBAR_ITEM_ACTION = Symbol("AppWorkspace.SidebarItemAction");
|
|
55
|
+
const NAV_TREE_ITEM = Symbol("AppWorkspace.NavTree.Item");
|
|
56
|
+
const flatten = value => {
|
|
57
|
+
// Solid control-flow components such as <For> expose their rendered value
|
|
58
|
+
// through an accessor. Compound slots may therefore be nested behind a
|
|
59
|
+
// function even after `children()` resolves the outer collection.
|
|
60
|
+
if (typeof value === "function") return flatten(value());
|
|
61
|
+
if (Array.isArray(value)) return value.flatMap(flatten);
|
|
62
|
+
return value === null || value === undefined || typeof value === "boolean" ? [] : [value];
|
|
63
|
+
};
|
|
64
|
+
const mainPaneSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === MAIN_PANE);
|
|
65
|
+
const sidebarChildSlot = value => Boolean(value && typeof value === "object" && "kind" in value && [SIDEBAR_MOBILE_TRIGGER, SIDEBAR_MOBILE, SIDEBAR_DESKTOP].includes(value.kind));
|
|
66
|
+
const sidebarItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && [SIDEBAR_ITEM_ICON, SIDEBAR_ITEM_LABEL, SIDEBAR_ITEM_META, SIDEBAR_ITEM_ACTION].includes(value.kind));
|
|
67
|
+
const navTreeItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === NAV_TREE_ITEM);
|
|
68
|
+
function ResizeHandle(props) {
|
|
69
|
+
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.label ?? (props.kind === "sidebar" ? "Resize navigation" : props.kind === "pane" ? "Resize workspace pane" : props.kind === "detail" ? "Resize detail panel" : "Resize bottom drawer"), true), false) + _$ssrAttribute("aria-controls", _$escape(props.controls, true), false) + _$ssrAttribute("aria-orientation", props.kind === "drawer" ? "horizontal" : "vertical", false) + _$ssrAttribute("aria-valuemin", _$escape(props.minSize, true), false) + _$ssrAttribute("aria-valuemax", _$escape(props.maxSize, true), false) + _$ssrAttribute("aria-valuenow", _$escape(props.defaultSize, true), false) + _$ssrAttribute("data-app-workspace-resize", _$escape(props.kind, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(props.panelId, true), false) + _$ssrAttribute("data-workspace-resize-edge", _$escape(props.edge, true), false) + _$ssrAttribute("data-workspace-resize-shadow", props.shadow ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-default-size", _$escape(props.defaultSize, true), false) + _$ssrAttribute("data-workspace-min-size", _$escape(props.minSize, true), false) + _$ssrAttribute("data-workspace-max-size", _$escape(props.maxSize, true), false), _$ssrStyle(props.style));
|
|
70
|
+
}
|
|
71
|
+
const modeAttrs = mode => mode && mode !== "always" ? {
|
|
72
|
+
"data-sidebar-mode": mode
|
|
73
|
+
} : {};
|
|
74
|
+
/** Same rule as `modeAttrs`, for the un-prefixed `data` bag on sidebar items. */
|
|
75
|
+
const modeData = mode => mode && mode !== "always" ? {
|
|
76
|
+
"sidebar-mode": mode
|
|
77
|
+
} : {};
|
|
78
|
+
const scrollAttrs = key => key ? {
|
|
79
|
+
"data-scroll-preserve": key
|
|
80
|
+
} : {};
|
|
81
|
+
const iconClass = (icon, fallback = "ti-circle") => icon?.startsWith("ti ") ? icon : `ti ${icon || fallback}`;
|
|
82
|
+
function AppWorkspaceMainPane(props) {
|
|
83
|
+
return {
|
|
84
|
+
kind: MAIN_PANE,
|
|
85
|
+
props,
|
|
86
|
+
domId: `k2b-workspace-pane-${createUniqueId()}`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function AppWorkspaceMain(props) {
|
|
90
|
+
const rootResizable = useContext(ResizeContext);
|
|
91
|
+
const resolved = children(() => props.children);
|
|
92
|
+
const values = createMemo(() => flatten(resolved()));
|
|
93
|
+
const paneIds = createMemo(() => {
|
|
94
|
+
const ids = values().filter(mainPaneSlot).map(slot => slot.props.id);
|
|
95
|
+
assertUniqueStableUiIds(ids, "AppWorkspace.MainPane id");
|
|
96
|
+
return ids;
|
|
97
|
+
});
|
|
98
|
+
const regions = createMemo(() => {
|
|
99
|
+
const all = values();
|
|
100
|
+
const primary = all.filter(value => !mainPaneSlot(value));
|
|
101
|
+
const primaryIndex = all.findIndex(value => !mainPaneSlot(value));
|
|
102
|
+
let inserted = false;
|
|
103
|
+
const result = [];
|
|
104
|
+
all.forEach((value, index) => {
|
|
105
|
+
if (mainPaneSlot(value)) {
|
|
106
|
+
if (value.props.open !== false) result.push({
|
|
107
|
+
type: "pane",
|
|
108
|
+
index,
|
|
109
|
+
slot: value
|
|
110
|
+
});
|
|
111
|
+
} else if (!inserted) {
|
|
112
|
+
inserted = true;
|
|
113
|
+
result.push({
|
|
114
|
+
type: "primary",
|
|
115
|
+
index: primaryIndex,
|
|
116
|
+
children: primary
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
return result;
|
|
121
|
+
});
|
|
122
|
+
const anchorRegion = createMemo(() => regions().find(candidate => candidate.type === "primary") ?? regions()[0]);
|
|
123
|
+
// Presence of a MainPane slot — not of an *open* one — decides the split
|
|
124
|
+
// layout. Deriving it from `regions()` made a workspace whose panes are all
|
|
125
|
+
// closed fall back to `resolved()`, which renders the raw slot objects.
|
|
126
|
+
const hasPanes = createMemo(() => paneIds().length > 0);
|
|
127
|
+
return _$ssrElement("div", _$mergeProps({
|
|
128
|
+
get ["class"]() {
|
|
129
|
+
return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
|
|
130
|
+
},
|
|
131
|
+
get ["data-mobile-pane"]() {
|
|
132
|
+
return props.mobilePane;
|
|
133
|
+
},
|
|
134
|
+
get ["data-scroll"]() {
|
|
135
|
+
return props.scroll === false ? "false" : undefined;
|
|
136
|
+
},
|
|
137
|
+
get ["aria-busy"]() {
|
|
138
|
+
return props["aria-busy"];
|
|
139
|
+
}
|
|
140
|
+
}, () => scrollAttrs(props.scrollPreserveKey)), _$escape(_$createComponent(Show, {
|
|
141
|
+
get when() {
|
|
142
|
+
return hasPanes();
|
|
143
|
+
},
|
|
144
|
+
get fallback() {
|
|
145
|
+
return resolved();
|
|
146
|
+
},
|
|
147
|
+
get children() {
|
|
148
|
+
return regions().flatMap(region => {
|
|
149
|
+
const anchor = anchorRegion();
|
|
150
|
+
const activeMobilePane = props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
|
|
151
|
+
if (region.type === "primary") {
|
|
152
|
+
return _$ssr(_tmpl$2, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane === "main" ? "true" : "false", false), _$escape(region.children));
|
|
153
|
+
}
|
|
154
|
+
const pane = region.slot;
|
|
155
|
+
const panelId = assertStableUiId(pane.props.id, "AppWorkspace.MainPane id");
|
|
156
|
+
const variable = appWorkspacePanelVariable("pane", panelId);
|
|
157
|
+
const isAnchor = region === anchor;
|
|
158
|
+
const resizable = !isAnchor && (pane.props.resizable ?? rootResizable);
|
|
159
|
+
const defaultSize = pane.props.defaultSize ?? APP_WORKSPACE_PANE_DEFAULT;
|
|
160
|
+
const minSize = pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;
|
|
161
|
+
const maxSize = Math.max(minSize, pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);
|
|
162
|
+
const content = _$ssr(_tmpl$3, _$ssrAttribute("id", _$escape(pane.domId, true), false), `k2b-app-workspace__main-pane ${isAnchor ? "is-primary" : ""} ${_$escape(pane.props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(pane.props.label, true), false) + _$ssrAttribute("data-workspace-main-region", _$escape(pane.props.id, true), false) + _$ssrAttribute("data-workspace-mobile-active", activeMobilePane === pane.props.id ? "true" : "false", false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId, true), false) + _$ssrAttribute("data-workspace-resizable", resizable ? "true" : "false", false) + _$ssrAttribute("data-surface", pane.props.surface === "navigation" ? "navigation" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll", pane.props.scroll === false ? "false" : _$escape(undefined, true), false), _$ssrStyle(isAnchor ? undefined : {
|
|
163
|
+
"--k2b-workspace-panel-size": `var(${variable}, ${defaultSize}px)`
|
|
164
|
+
}), _$escape(pane.props.children));
|
|
165
|
+
if (!resizable) return content;
|
|
166
|
+
const before = region.index < (anchor?.index ?? 0);
|
|
167
|
+
const handle = _$createComponent(ResizeHandle, {
|
|
168
|
+
kind: "pane",
|
|
169
|
+
edge: before ? "end" : "start",
|
|
170
|
+
get controls() {
|
|
171
|
+
return pane.domId;
|
|
172
|
+
},
|
|
173
|
+
panelId: panelId,
|
|
174
|
+
defaultSize: defaultSize,
|
|
175
|
+
minSize: minSize,
|
|
176
|
+
maxSize: maxSize,
|
|
177
|
+
get shadow() {
|
|
178
|
+
return pane.props.resizeShadow !== false;
|
|
179
|
+
},
|
|
180
|
+
get label() {
|
|
181
|
+
return `Resize ${pane.props.label}`;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
return before ? [content, handle] : [handle, content];
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
})), false);
|
|
188
|
+
}
|
|
189
|
+
function AppWorkspaceDetail(props) {
|
|
190
|
+
const rootResizable = useContext(ResizeContext);
|
|
191
|
+
const panelId = () => assertStableUiId(props.id, "AppWorkspace.Detail id");
|
|
192
|
+
const domId = () => `k2b-workspace-detail-${panelId()}`;
|
|
193
|
+
const variable = () => appWorkspacePanelVariable("detail", panelId());
|
|
194
|
+
// Cloud's `detailDefaultWidth`. These feed `aria-valuenow` and the
|
|
195
|
+
// `var(…, Npx)` first-paint fallback, so they are behaviour, not taste.
|
|
196
|
+
const widths = {
|
|
197
|
+
sm: 288,
|
|
198
|
+
md: 384,
|
|
199
|
+
lg: 480,
|
|
200
|
+
xl: 544
|
|
201
|
+
};
|
|
202
|
+
const defaultWidth = () => widths[props.width ?? "md"] ?? APP_WORKSPACE_DETAIL_DEFAULT;
|
|
203
|
+
const minWidth = () => props.minWidth ?? APP_WORKSPACE_DETAIL_MIN;
|
|
204
|
+
const maxWidth = () => Math.max(minWidth(), props.maxWidth ?? APP_WORKSPACE_DETAIL_MAX);
|
|
205
|
+
const resizable = () => props.resizable ?? rootResizable;
|
|
206
|
+
return [_$createComponent(Show, {
|
|
207
|
+
get when() {
|
|
208
|
+
return resizable();
|
|
209
|
+
},
|
|
210
|
+
get children() {
|
|
211
|
+
return _$createComponent(ResizeHandle, {
|
|
212
|
+
kind: "detail",
|
|
213
|
+
edge: "start",
|
|
214
|
+
get controls() {
|
|
215
|
+
return domId();
|
|
216
|
+
},
|
|
217
|
+
get panelId() {
|
|
218
|
+
return panelId();
|
|
219
|
+
},
|
|
220
|
+
get defaultSize() {
|
|
221
|
+
return defaultWidth();
|
|
222
|
+
},
|
|
223
|
+
get minSize() {
|
|
224
|
+
return minWidth();
|
|
225
|
+
},
|
|
226
|
+
get maxSize() {
|
|
227
|
+
return maxWidth();
|
|
228
|
+
},
|
|
229
|
+
shadow: true,
|
|
230
|
+
get style() {
|
|
231
|
+
return {
|
|
232
|
+
"--k2b-workspace-panel-size": `var(${variable()}, ${defaultWidth()}px)`
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}), _$ssr(_tmpl$4, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__detail ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-width", _$escape(props.width ?? "md", true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyleProperty("--k2b-workspace-panel-size:", `var(${_$escape(variable(), true)}, ${_$escape(defaultWidth(), true)}px)`) + _$ssrStyleProperty(";view-transition-name:", _$escape(props.viewTransitionName, true)), _$escape(props.children))];
|
|
238
|
+
}
|
|
239
|
+
function AppWorkspaceBottomDrawer(props) {
|
|
240
|
+
const rootResizable = useContext(ResizeContext);
|
|
241
|
+
const panelId = () => assertStableUiId(props.id, "AppWorkspace.BottomDrawer id");
|
|
242
|
+
const domId = () => `k2b-workspace-drawer-${panelId()}`;
|
|
243
|
+
const variable = () => appWorkspacePanelVariable("drawer", panelId());
|
|
244
|
+
// Cloud's `drawerDefaultHeight`.
|
|
245
|
+
const heights = {
|
|
246
|
+
sm: 192,
|
|
247
|
+
md: 240,
|
|
248
|
+
lg: 320
|
|
249
|
+
};
|
|
250
|
+
const defaultHeight = () => heights[props.height ?? "md"] ?? APP_WORKSPACE_DRAWER_DEFAULT;
|
|
251
|
+
const minHeight = () => props.minHeight ?? APP_WORKSPACE_DRAWER_MIN;
|
|
252
|
+
const maxHeight = () => Math.max(minHeight(), props.maxHeight ?? APP_WORKSPACE_DRAWER_MAX);
|
|
253
|
+
const resizable = () => props.resizable ?? rootResizable;
|
|
254
|
+
return [_$createComponent(Show, {
|
|
255
|
+
get when() {
|
|
256
|
+
return resizable();
|
|
257
|
+
},
|
|
258
|
+
get children() {
|
|
259
|
+
return _$createComponent(ResizeHandle, {
|
|
260
|
+
kind: "drawer",
|
|
261
|
+
edge: "start",
|
|
262
|
+
get controls() {
|
|
263
|
+
return domId();
|
|
264
|
+
},
|
|
265
|
+
get panelId() {
|
|
266
|
+
return panelId();
|
|
267
|
+
},
|
|
268
|
+
get defaultSize() {
|
|
269
|
+
return defaultHeight();
|
|
270
|
+
},
|
|
271
|
+
get minSize() {
|
|
272
|
+
return minHeight();
|
|
273
|
+
},
|
|
274
|
+
get maxSize() {
|
|
275
|
+
return maxHeight();
|
|
276
|
+
},
|
|
277
|
+
shadow: true,
|
|
278
|
+
get style() {
|
|
279
|
+
return {
|
|
280
|
+
"--k2b-workspace-panel-size": `var(${variable()}, ${defaultHeight()}px)`
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
}), _$ssr(_tmpl$4, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__drawer ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-height", _$escape(props.height ?? "md", true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyleProperty("--k2b-workspace-panel-size:", `var(${_$escape(variable(), true)}, ${_$escape(defaultHeight(), true)}px)`) + _$ssrStyleProperty(";view-transition-name:", _$escape(props.viewTransitionName, true)), _$escape(props.children))];
|
|
286
|
+
}
|
|
287
|
+
const AppWorkspaceSidebarMobileTrigger = props => ({
|
|
288
|
+
kind: SIDEBAR_MOBILE_TRIGGER,
|
|
289
|
+
...props
|
|
290
|
+
});
|
|
291
|
+
function AppWorkspaceSidebar(props) {
|
|
292
|
+
const rootResizable = useContext(ResizeContext);
|
|
293
|
+
const resizable = () => props.resizable ?? rootResizable;
|
|
294
|
+
const defaultSize = () => props.defaultSize ?? APP_WORKSPACE_SIDEBAR_DEFAULT;
|
|
295
|
+
const minSize = () => props.minSize ?? (props.collapsible ? APP_WORKSPACE_SIDEBAR_COLLAPSED : APP_WORKSPACE_SIDEBAR_MIN);
|
|
296
|
+
const maxSize = () => props.maxSize ?? APP_WORKSPACE_SIDEBAR_MAX;
|
|
297
|
+
const generatedId = createUniqueId();
|
|
298
|
+
const domId = `k2b-workspace-sidebar-${generatedId}`;
|
|
299
|
+
const resolved = children(() => props.children);
|
|
300
|
+
const slots = createMemo(() => flatten(resolved()).filter(sidebarChildSlot));
|
|
301
|
+
const mobileTrigger = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_MOBILE_TRIGGER));
|
|
302
|
+
const mobile = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_MOBILE));
|
|
303
|
+
const desktop = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_DESKTOP));
|
|
304
|
+
return [_$createComponent(Show, {
|
|
305
|
+
get when() {
|
|
306
|
+
return mobileTrigger() && mobile();
|
|
307
|
+
},
|
|
308
|
+
get children() {
|
|
309
|
+
return _$ssr(_tmpl$5, _$ssrAttribute("aria-label", _$escape(mobileTrigger().label, true), false), _$escape(mobileTrigger().label), _$escape(_$createComponent(SidebarModeContext.Provider, {
|
|
310
|
+
value: "mobile",
|
|
311
|
+
get children() {
|
|
312
|
+
return mobile().children;
|
|
313
|
+
}
|
|
314
|
+
})));
|
|
315
|
+
}
|
|
316
|
+
}), _$ssr(_tmpl$6, _$ssrAttribute("id", _$escape(domId, true), false), `k2b-app-workspace__sidebar ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(mobileTrigger()?.label, true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-workspace-collapsible", props.collapsible ? "true" : "false", false), _$escape(_$createComponent(SidebarModeContext.Provider, {
|
|
317
|
+
value: "desktop",
|
|
318
|
+
get children() {
|
|
319
|
+
return desktop()?.children;
|
|
320
|
+
}
|
|
321
|
+
}))), _$createComponent(Show, {
|
|
322
|
+
get when() {
|
|
323
|
+
return resizable();
|
|
324
|
+
},
|
|
325
|
+
get children() {
|
|
326
|
+
return _$createComponent(ResizeHandle, {
|
|
327
|
+
kind: "sidebar",
|
|
328
|
+
edge: "end",
|
|
329
|
+
controls: domId,
|
|
330
|
+
get defaultSize() {
|
|
331
|
+
return defaultSize();
|
|
332
|
+
},
|
|
333
|
+
get minSize() {
|
|
334
|
+
return minSize();
|
|
335
|
+
},
|
|
336
|
+
get maxSize() {
|
|
337
|
+
return maxSize();
|
|
338
|
+
},
|
|
339
|
+
get shadow() {
|
|
340
|
+
return props.resizeShadow !== false;
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
})];
|
|
345
|
+
}
|
|
346
|
+
const AppWorkspaceSidebarMobile = props => ({
|
|
347
|
+
kind: SIDEBAR_MOBILE,
|
|
348
|
+
children: props.children
|
|
349
|
+
});
|
|
350
|
+
const AppWorkspaceSidebarDesktop = props => ({
|
|
351
|
+
kind: SIDEBAR_DESKTOP,
|
|
352
|
+
children: props.children
|
|
353
|
+
});
|
|
354
|
+
const AppWorkspaceSidebarMobileItems = props => _$ssrElement("div", _$mergeProps({
|
|
355
|
+
"class": "k2b-app-workspace__sidebar-mobile-items"
|
|
356
|
+
}, () => scrollAttrs(props.scrollPreserveKey)), _$escape(props.children), false);
|
|
357
|
+
const AppWorkspaceSidebarBody = props => _$ssrElement("div", _$mergeProps({
|
|
358
|
+
get ["class"]() {
|
|
359
|
+
return `k2b-app-workspace__sidebar-body ${props.class ?? ""}`;
|
|
360
|
+
}
|
|
361
|
+
}, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false);
|
|
362
|
+
const AppWorkspaceSidebarMobileBody = props => _$ssrElement("div", _$mergeProps({
|
|
363
|
+
get ["class"]() {
|
|
364
|
+
return `k2b-app-workspace__sidebar-mobile-body ${props.class ?? ""}`;
|
|
365
|
+
}
|
|
366
|
+
}, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false);
|
|
367
|
+
const AppWorkspaceSidebarFooter = props => _$ssrElement("footer", _$mergeProps({
|
|
368
|
+
get ["class"]() {
|
|
369
|
+
return `k2b-app-workspace__sidebar-footer ${props.class ?? ""}`;
|
|
370
|
+
}
|
|
371
|
+
}, () => modeAttrs(props.sidebarMode)), _$escape(props.children), false);
|
|
372
|
+
const AppWorkspaceSidebarSection = props => _$ssrElement("section", _$mergeProps({
|
|
373
|
+
get ["class"]() {
|
|
374
|
+
return `k2b-app-workspace__sidebar-section ${props.class ?? ""}`;
|
|
375
|
+
}
|
|
376
|
+
}, () => modeAttrs(props.sidebarMode)), [_$escape(_$createComponent(Show, {
|
|
377
|
+
get when() {
|
|
378
|
+
return props.title || props.actions;
|
|
379
|
+
},
|
|
380
|
+
get children() {
|
|
381
|
+
return _$ssr(_tmpl$8, _$escape(_$createComponent(Show, {
|
|
382
|
+
get when() {
|
|
383
|
+
return props.title;
|
|
384
|
+
},
|
|
385
|
+
children: title => _$ssr(_tmpl$9, _$escape(title()))
|
|
386
|
+
})), _$escape(_$createComponent(Show, {
|
|
387
|
+
get when() {
|
|
388
|
+
return props.actions;
|
|
389
|
+
},
|
|
390
|
+
get children() {
|
|
391
|
+
return _$ssr(_tmpl$7, _$escape(props.actions));
|
|
392
|
+
}
|
|
393
|
+
})));
|
|
394
|
+
}
|
|
395
|
+
})), _$escape(props.children)], false);
|
|
396
|
+
const AppWorkspaceSidebarItemIcon = props => ({
|
|
397
|
+
kind: SIDEBAR_ITEM_ICON,
|
|
398
|
+
...props
|
|
399
|
+
});
|
|
400
|
+
const AppWorkspaceSidebarItemLabel = props => ({
|
|
401
|
+
kind: SIDEBAR_ITEM_LABEL,
|
|
402
|
+
...props
|
|
403
|
+
});
|
|
404
|
+
const AppWorkspaceSidebarItemMeta = props => ({
|
|
405
|
+
kind: SIDEBAR_ITEM_META,
|
|
406
|
+
...props
|
|
407
|
+
});
|
|
408
|
+
const AppWorkspaceSidebarItemAction = props => ({
|
|
409
|
+
kind: SIDEBAR_ITEM_ACTION,
|
|
410
|
+
...props
|
|
411
|
+
});
|
|
412
|
+
const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$0, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
|
|
413
|
+
/** Shared visual and semantic row frame for flat sidebar items and tree items. */
|
|
414
|
+
function AppWorkspaceSidebarRow(props) {
|
|
415
|
+
const className = () => `k2b-app-workspace__sidebar-item ${props.hasActions ? "has-action" : ""} ${props.active ? props.activeClass ?? "is-active" : ""} ${props.class ?? ""}`;
|
|
416
|
+
const data = () => Object.fromEntries(Object.entries(props.data ?? {}).filter(([, value]) => value !== undefined && value !== null).map(([key, value]) => [`data-${key}`, String(value)]));
|
|
417
|
+
const common = () => ({
|
|
418
|
+
class: className(),
|
|
419
|
+
title: props.title,
|
|
420
|
+
"data-tone": props.tone,
|
|
421
|
+
"data-mode": props.mode,
|
|
422
|
+
style: {
|
|
423
|
+
"view-transition-name": props.viewTransitionName,
|
|
424
|
+
"--k2b-sidebar-item-depth": props.depth === undefined ? undefined : String(Math.max(0, props.depth))
|
|
425
|
+
},
|
|
426
|
+
...data()
|
|
427
|
+
});
|
|
428
|
+
const current = () => props.active ? "page" : undefined;
|
|
429
|
+
if (props.hasActions) {
|
|
430
|
+
if (!props.href || props.disabled) {
|
|
431
|
+
return _$ssrElement("div", _$mergeProps(common, {
|
|
432
|
+
get ["data-disabled"]() {
|
|
433
|
+
return props.disabled ? "true" : undefined;
|
|
434
|
+
}
|
|
435
|
+
}), [_$ssr(_tmpl$1, _$ssrAttribute("tabindex", _$escape(props.tabIndex, true), false), _$ssrAttribute("disabled", props.disabled, true), _$escape(props.children)), _$escape(props.actions)], false);
|
|
436
|
+
}
|
|
437
|
+
if (props.navigation !== "enhanced" || !props.onNavigate) {
|
|
438
|
+
return _$ssrElement("div", common(), [_$ssr(_tmpl$10, _$ssrAttribute("href", _$escape(props.href, true), false), _$ssrAttribute("tabindex", _$escape(props.tabIndex, true), false) + _$ssrAttribute("aria-current", _$escape(current(), true), false), _$escape(props.children)), _$escape(props.actions)], false);
|
|
439
|
+
}
|
|
440
|
+
return _$ssrElement("div", common(), [_$escape(_$createComponent(Link, {
|
|
441
|
+
get href() {
|
|
442
|
+
return props.href;
|
|
443
|
+
},
|
|
444
|
+
"class": "k2b-app-workspace__sidebar-item-main",
|
|
445
|
+
get tabIndex() {
|
|
446
|
+
return props.tabIndex;
|
|
447
|
+
},
|
|
448
|
+
get ["aria-current"]() {
|
|
449
|
+
return current();
|
|
450
|
+
},
|
|
451
|
+
get replace() {
|
|
452
|
+
return props.replace;
|
|
453
|
+
},
|
|
454
|
+
get scroll() {
|
|
455
|
+
return props.scroll;
|
|
456
|
+
},
|
|
457
|
+
get onNavigate() {
|
|
458
|
+
return props.onNavigate;
|
|
459
|
+
},
|
|
460
|
+
get onClick() {
|
|
461
|
+
return props.onClick;
|
|
462
|
+
},
|
|
463
|
+
get children() {
|
|
464
|
+
return props.children;
|
|
465
|
+
}
|
|
466
|
+
})), _$escape(props.actions)], false);
|
|
467
|
+
}
|
|
468
|
+
if (!props.href || props.disabled) {
|
|
469
|
+
return _$ssrElement("button", _$mergeProps({
|
|
470
|
+
type: "button"
|
|
471
|
+
}, common, {
|
|
472
|
+
get tabIndex() {
|
|
473
|
+
return props.tabIndex;
|
|
474
|
+
},
|
|
475
|
+
get disabled() {
|
|
476
|
+
return props.disabled;
|
|
477
|
+
}
|
|
478
|
+
}), _$escape(props.children), false);
|
|
479
|
+
}
|
|
480
|
+
if (props.navigation !== "enhanced" || !props.onNavigate) {
|
|
481
|
+
return _$ssrElement("a", _$mergeProps({
|
|
482
|
+
get href() {
|
|
483
|
+
return props.href;
|
|
484
|
+
}
|
|
485
|
+
}, common, {
|
|
486
|
+
get tabIndex() {
|
|
487
|
+
return props.tabIndex;
|
|
488
|
+
},
|
|
489
|
+
get ["aria-current"]() {
|
|
490
|
+
return current();
|
|
491
|
+
}
|
|
492
|
+
}), _$escape(props.children), false);
|
|
493
|
+
}
|
|
494
|
+
return _$createComponent(Link, _$mergeProps({
|
|
495
|
+
get href() {
|
|
496
|
+
return props.href;
|
|
497
|
+
}
|
|
498
|
+
}, common, {
|
|
499
|
+
get tabIndex() {
|
|
500
|
+
return props.tabIndex;
|
|
501
|
+
},
|
|
502
|
+
get ["aria-current"]() {
|
|
503
|
+
return current();
|
|
504
|
+
},
|
|
505
|
+
get replace() {
|
|
506
|
+
return props.replace;
|
|
507
|
+
},
|
|
508
|
+
get scroll() {
|
|
509
|
+
return props.scroll;
|
|
510
|
+
},
|
|
511
|
+
get onNavigate() {
|
|
512
|
+
return props.onNavigate;
|
|
513
|
+
},
|
|
514
|
+
get onClick() {
|
|
515
|
+
return props.onClick;
|
|
516
|
+
},
|
|
517
|
+
get children() {
|
|
518
|
+
return props.children;
|
|
519
|
+
}
|
|
520
|
+
}));
|
|
521
|
+
}
|
|
522
|
+
function AppWorkspaceSidebarItem(props) {
|
|
523
|
+
const messages = useUiMessages();
|
|
524
|
+
const mode = useContext(SidebarModeContext);
|
|
525
|
+
const resolved = children(() => props.children);
|
|
526
|
+
const resolvedActions = children(() => props.actions);
|
|
527
|
+
const values = createMemo(() => flatten(resolved()));
|
|
528
|
+
const slots = createMemo(() => values().filter(sidebarItemSlot));
|
|
529
|
+
const iconSlot = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_ITEM_ICON));
|
|
530
|
+
const labelSlot = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_ITEM_LABEL));
|
|
531
|
+
const metaSlot = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_ITEM_META));
|
|
532
|
+
const actionSlot = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_ITEM_ACTION));
|
|
533
|
+
const legacy = createMemo(() => values().filter(value => !sidebarItemSlot(value)));
|
|
534
|
+
const label = () => labelSlot()?.children ?? (legacy().length === 1 ? legacy()[0] : legacy());
|
|
535
|
+
const icon = () => iconSlot()?.icon ?? props.icon;
|
|
536
|
+
const iconContent = () => iconSlot()?.children;
|
|
537
|
+
const meta = () => metaSlot()?.children ?? props.meta;
|
|
538
|
+
const metaVisibility = () => metaSlot()?.visibility ?? props.metaVisibility;
|
|
539
|
+
const customActions = () => resolvedActions();
|
|
540
|
+
const hasCustomActions = () => Boolean(customActions());
|
|
541
|
+
const hasAction = () => Boolean(actionSlot() || props.actionIcon || hasCustomActions());
|
|
542
|
+
const mainContent = [_$createComponent(Show, {
|
|
543
|
+
get when() {
|
|
544
|
+
return iconContent() || icon();
|
|
545
|
+
},
|
|
546
|
+
get children() {
|
|
547
|
+
return _$ssr(_tmpl$11, _$escape(iconContent() ?? _$ssr(_tmpl$13, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
|
|
548
|
+
}
|
|
549
|
+
}), _$ssr(_tmpl$12, _$ssrAttribute("data-marquee", labelSlot()?.marquee === false ? _$escape(undefined, true) : "true", false), _$escape(label())), _$createComponent(Show, {
|
|
550
|
+
get when() {
|
|
551
|
+
return meta();
|
|
552
|
+
},
|
|
553
|
+
children: value => _$ssr(_tmpl$14, _$ssrAttribute("data-visibility", metaVisibility() === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(value()))
|
|
554
|
+
})];
|
|
555
|
+
const singleAction = () => {
|
|
556
|
+
const slot = actionSlot();
|
|
557
|
+
if (!slot && !props.actionIcon) return null;
|
|
558
|
+
const content = slot?.children ?? _$ssr(_tmpl$13, _$ssrAttribute("class", _$escape(iconClass(slot?.icon ?? props.actionIcon, "ti-dots"), true), false));
|
|
559
|
+
const label = slot?.label ?? props.actionLabel ?? messages().rowAction;
|
|
560
|
+
const select = event => {
|
|
561
|
+
event.preventDefault();
|
|
562
|
+
event.stopPropagation();
|
|
563
|
+
slot?.onSelect?.(event);
|
|
564
|
+
props.onActionClick?.(event);
|
|
565
|
+
};
|
|
566
|
+
// A row action that is a link must still navigate — only the row's own
|
|
567
|
+
// click handling is suppressed.
|
|
568
|
+
const follow = event => {
|
|
569
|
+
event.stopPropagation();
|
|
570
|
+
slot?.onSelect?.(event);
|
|
571
|
+
props.onActionClick?.(event);
|
|
572
|
+
};
|
|
573
|
+
return slot?.href ? _$ssr(_tmpl$15, _$ssrAttribute("href", _$escape(slot.href, true), false), _$ssrAttribute("data-visibility", slot.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label, true), false), _$escape(content)) : _$ssr(_tmpl$16, _$ssrAttribute("data-visibility", slot?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label, true), false), _$escape(content));
|
|
574
|
+
};
|
|
575
|
+
const actions = () => [customActions(), singleAction()];
|
|
576
|
+
return _$createComponent(AppWorkspaceSidebarRow, {
|
|
577
|
+
mode: mode,
|
|
578
|
+
get hasActions() {
|
|
579
|
+
return hasAction();
|
|
580
|
+
},
|
|
581
|
+
get href() {
|
|
582
|
+
return props.href;
|
|
583
|
+
},
|
|
584
|
+
get navigation() {
|
|
585
|
+
return props.navigation;
|
|
586
|
+
},
|
|
587
|
+
get replace() {
|
|
588
|
+
return props.replace;
|
|
589
|
+
},
|
|
590
|
+
get scroll() {
|
|
591
|
+
return props.scroll;
|
|
592
|
+
},
|
|
593
|
+
get onNavigate() {
|
|
594
|
+
return props.onNavigate;
|
|
595
|
+
},
|
|
596
|
+
get onClick() {
|
|
597
|
+
return props.onClick;
|
|
598
|
+
},
|
|
599
|
+
get active() {
|
|
600
|
+
return props.active;
|
|
601
|
+
},
|
|
602
|
+
get activeClass() {
|
|
603
|
+
return props.activeClass;
|
|
604
|
+
},
|
|
605
|
+
get disabled() {
|
|
606
|
+
return props.disabled;
|
|
607
|
+
},
|
|
608
|
+
get tone() {
|
|
609
|
+
return props.tone;
|
|
610
|
+
},
|
|
611
|
+
get title() {
|
|
612
|
+
return props.title;
|
|
613
|
+
},
|
|
614
|
+
get viewTransitionName() {
|
|
615
|
+
return props.viewTransitionName;
|
|
616
|
+
},
|
|
617
|
+
get ["class"]() {
|
|
618
|
+
return props.class;
|
|
619
|
+
},
|
|
620
|
+
get depth() {
|
|
621
|
+
return props.depth;
|
|
622
|
+
},
|
|
623
|
+
get actions() {
|
|
624
|
+
return actions();
|
|
625
|
+
},
|
|
626
|
+
get data() {
|
|
627
|
+
return {
|
|
628
|
+
...props.data,
|
|
629
|
+
...modeData(props.sidebarMode),
|
|
630
|
+
"has-actions": hasCustomActions() ? "true" : undefined,
|
|
631
|
+
"action-visibility": actionSlot()?.visibility === "hover" ? "hover" : undefined
|
|
632
|
+
};
|
|
633
|
+
},
|
|
634
|
+
children: mainContent
|
|
635
|
+
});
|
|
636
|
+
}
|
|
637
|
+
const navTreeItems = value => flatten(value).filter(navTreeItemSlot);
|
|
638
|
+
const AppWorkspaceNavTreeItem = props => ({
|
|
639
|
+
kind: NAV_TREE_ITEM,
|
|
640
|
+
...props
|
|
641
|
+
});
|
|
642
|
+
const AppWorkspaceNavTree = props => {
|
|
643
|
+
const mode = useContext(SidebarModeContext);
|
|
644
|
+
let root;
|
|
645
|
+
const resolved = children(() => props.children);
|
|
646
|
+
const roots = createMemo(() => navTreeItems(resolved()));
|
|
647
|
+
const [uncontrolledExpandedIds, setUncontrolledExpandedIds] = createSignal([...new Set(props.defaultExpandedIds ?? [])]);
|
|
648
|
+
const [focusedId, setFocusedId] = createSignal(props.selectedId ?? null);
|
|
649
|
+
const expandedIds = createMemo(() => new Set(props.expandedIds ?? uncontrolledExpandedIds()));
|
|
650
|
+
const isExpanded = id => expandedIds().has(id);
|
|
651
|
+
const setExpanded = (id, expanded) => {
|
|
652
|
+
const next = new Set(expandedIds());
|
|
653
|
+
if (expanded) next.add(id);else next.delete(id);
|
|
654
|
+
const value = [...next];
|
|
655
|
+
if (props.expandedIds === undefined) setUncontrolledExpandedIds(value);
|
|
656
|
+
props.onExpandedIdsChange?.(value);
|
|
657
|
+
};
|
|
658
|
+
const visibleIds = createMemo(() => {
|
|
659
|
+
const result = [];
|
|
660
|
+
const visit = items => {
|
|
661
|
+
for (const item of items) {
|
|
662
|
+
if (item.disabled) continue;
|
|
663
|
+
result.push(item.id);
|
|
664
|
+
const nested = navTreeItems(item.children);
|
|
665
|
+
if (nested.length > 0 && isExpanded(item.id)) visit(nested);
|
|
666
|
+
}
|
|
667
|
+
};
|
|
668
|
+
visit(roots());
|
|
669
|
+
return result;
|
|
670
|
+
});
|
|
671
|
+
const tabStopId = () => {
|
|
672
|
+
const visible = visibleIds();
|
|
673
|
+
const focused = focusedId();
|
|
674
|
+
if (focused && visible.includes(focused)) return focused;
|
|
675
|
+
if (props.selectedId && visible.includes(props.selectedId)) return props.selectedId;
|
|
676
|
+
return visible[0] ?? null;
|
|
677
|
+
};
|
|
678
|
+
const treeItemElements = () => Array.from(root?.querySelectorAll("[data-k2b-nav-tree-id]") ?? []).filter(element => element.getAttribute("aria-disabled") !== "true");
|
|
679
|
+
const focusItem = id => {
|
|
680
|
+
if (!id) return;
|
|
681
|
+
const element = treeItemElements().find(candidate => candidate.dataset.k2bNavTreeId === id);
|
|
682
|
+
element?.focus({
|
|
683
|
+
preventScroll: true
|
|
684
|
+
});
|
|
685
|
+
};
|
|
686
|
+
const renderItems = (value, depth, parentId) => _$createComponent(For, {
|
|
687
|
+
get each() {
|
|
688
|
+
return navTreeItems(value);
|
|
689
|
+
},
|
|
690
|
+
children: item => {
|
|
691
|
+
const nested = createMemo(() => navTreeItems(item.children));
|
|
692
|
+
const hasChildren = () => nested().length > 0;
|
|
693
|
+
const selected = () => props.selectedId === item.id;
|
|
694
|
+
let treeItem;
|
|
695
|
+
const activate = event => {
|
|
696
|
+
if (item.disabled) return;
|
|
697
|
+
treeItem?.focus({
|
|
698
|
+
preventScroll: true
|
|
699
|
+
});
|
|
700
|
+
setFocusedId(item.id);
|
|
701
|
+
if (hasChildren() && !item.href && !item.onSelect && !props.onSelectedIdChange) {
|
|
702
|
+
setExpanded(item.id, !isExpanded(item.id));
|
|
703
|
+
return;
|
|
704
|
+
}
|
|
705
|
+
props.onSelectedIdChange?.(item.id);
|
|
706
|
+
item.onSelect?.(event);
|
|
707
|
+
};
|
|
708
|
+
const toggle = event => {
|
|
709
|
+
event.preventDefault();
|
|
710
|
+
event.stopPropagation();
|
|
711
|
+
if (!item.disabled && hasChildren()) setExpanded(item.id, !isExpanded(item.id));
|
|
712
|
+
};
|
|
713
|
+
const onRowClick = event => {
|
|
714
|
+
if (event.target?.closest("[data-k2b-nav-tree-toggle]")) {
|
|
715
|
+
toggle(event);
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
activate(event);
|
|
719
|
+
};
|
|
720
|
+
const rowControl = () => {
|
|
721
|
+
const firstChild = treeItem?.firstElementChild;
|
|
722
|
+
if (!firstChild?.classList.contains("has-action")) return firstChild;
|
|
723
|
+
return firstChild.firstElementChild;
|
|
724
|
+
};
|
|
725
|
+
const onKeyDown = event => {
|
|
726
|
+
if (event.target !== event.currentTarget) return;
|
|
727
|
+
if (event.altKey || event.ctrlKey || event.metaKey) return;
|
|
728
|
+
const items = treeItemElements();
|
|
729
|
+
const index = items.indexOf(event.currentTarget);
|
|
730
|
+
if (event.key === "ArrowDown" && index >= 0) {
|
|
731
|
+
event.preventDefault();
|
|
732
|
+
items[Math.min(items.length - 1, index + 1)]?.focus({
|
|
733
|
+
preventScroll: true
|
|
734
|
+
});
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
if (event.key === "ArrowUp" && index >= 0) {
|
|
738
|
+
event.preventDefault();
|
|
739
|
+
items[Math.max(0, index - 1)]?.focus({
|
|
740
|
+
preventScroll: true
|
|
741
|
+
});
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
744
|
+
if (event.key === "Home") {
|
|
745
|
+
event.preventDefault();
|
|
746
|
+
items[0]?.focus({
|
|
747
|
+
preventScroll: true
|
|
748
|
+
});
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
if (event.key === "End") {
|
|
752
|
+
event.preventDefault();
|
|
753
|
+
items.at(-1)?.focus({
|
|
754
|
+
preventScroll: true
|
|
755
|
+
});
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
if (event.key === "ArrowRight" && hasChildren()) {
|
|
759
|
+
event.preventDefault();
|
|
760
|
+
if (!isExpanded(item.id)) setExpanded(item.id, true);else queueMicrotask(() => focusItem(nested()[0]?.id ?? null));
|
|
761
|
+
return;
|
|
762
|
+
}
|
|
763
|
+
if (event.key === "ArrowLeft") {
|
|
764
|
+
event.preventDefault();
|
|
765
|
+
if (hasChildren() && isExpanded(item.id)) setExpanded(item.id, false);else focusItem(parentId ?? null);
|
|
766
|
+
return;
|
|
767
|
+
}
|
|
768
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
769
|
+
event.preventDefault();
|
|
770
|
+
rowControl()?.click();
|
|
771
|
+
}
|
|
772
|
+
};
|
|
773
|
+
const usesIconDisclosure = () => hasChildren() && Boolean(item.icon && item.expandedIcon);
|
|
774
|
+
const rowIcon = () => usesIconDisclosure() && isExpanded(item.id) ? item.expandedIcon : item.icon;
|
|
775
|
+
const rowContent = [_$createComponent(Show, {
|
|
776
|
+
get when() {
|
|
777
|
+
return rowIcon();
|
|
778
|
+
},
|
|
779
|
+
get children() {
|
|
780
|
+
return _$ssr(_tmpl$17, _$ssrAttribute("data-k2b-nav-tree-toggle", usesIconDisclosure() ? "" : _$escape(undefined, true), false), _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false));
|
|
781
|
+
}
|
|
782
|
+
}), _$ssr(_tmpl$18, _$escape(item.label)), _$createComponent(Show, {
|
|
783
|
+
get when() {
|
|
784
|
+
return item.meta !== undefined;
|
|
785
|
+
},
|
|
786
|
+
get children() {
|
|
787
|
+
return _$ssr(_tmpl$19, `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`, _$ssrAttribute("data-visibility", item.metaVisibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(item.meta));
|
|
788
|
+
}
|
|
789
|
+
}), _$createComponent(Show, {
|
|
790
|
+
get when() {
|
|
791
|
+
return hasChildren() && !usesIconDisclosure();
|
|
792
|
+
},
|
|
793
|
+
get children() {
|
|
794
|
+
return _$ssr(_tmpl$20, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
|
|
795
|
+
}
|
|
796
|
+
})];
|
|
797
|
+
const row = () => _$createComponent(AppWorkspaceSidebarRow, {
|
|
798
|
+
mode: mode,
|
|
799
|
+
get hasActions() {
|
|
800
|
+
return Boolean(item.actions);
|
|
801
|
+
},
|
|
802
|
+
get href() {
|
|
803
|
+
return item.href;
|
|
804
|
+
},
|
|
805
|
+
get navigation() {
|
|
806
|
+
return item.navigation;
|
|
807
|
+
},
|
|
808
|
+
get replace() {
|
|
809
|
+
return item.replace;
|
|
810
|
+
},
|
|
811
|
+
get scroll() {
|
|
812
|
+
return item.scroll;
|
|
813
|
+
},
|
|
814
|
+
get onNavigate() {
|
|
815
|
+
return item.onNavigate;
|
|
816
|
+
},
|
|
817
|
+
onClick: onRowClick,
|
|
818
|
+
get active() {
|
|
819
|
+
return selected();
|
|
820
|
+
},
|
|
821
|
+
get disabled() {
|
|
822
|
+
return item.disabled;
|
|
823
|
+
},
|
|
824
|
+
get tone() {
|
|
825
|
+
return item.tone;
|
|
826
|
+
},
|
|
827
|
+
get title() {
|
|
828
|
+
return item.title;
|
|
829
|
+
},
|
|
830
|
+
get viewTransitionName() {
|
|
831
|
+
return item.viewTransitionName;
|
|
832
|
+
},
|
|
833
|
+
get ["class"]() {
|
|
834
|
+
return `k2b-app-workspace__nav-tree-row ${item.class ?? ""}`;
|
|
835
|
+
},
|
|
836
|
+
get depth() {
|
|
837
|
+
return props.indented === false ? 0 : depth;
|
|
838
|
+
},
|
|
839
|
+
tabIndex: -1,
|
|
840
|
+
get actions() {
|
|
841
|
+
return item.actions;
|
|
842
|
+
},
|
|
843
|
+
get data() {
|
|
844
|
+
return {
|
|
845
|
+
"has-actions": item.actions ? "true" : undefined
|
|
846
|
+
};
|
|
847
|
+
},
|
|
848
|
+
children: rowContent
|
|
849
|
+
});
|
|
850
|
+
return _$ssr(_tmpl$22, _$ssrAttribute("aria-level", _$escape(depth, true) + 1, false) + _$ssrAttribute("aria-selected", _$escape(selected(), true), false) + _$ssrAttribute("aria-expanded", hasChildren() ? _$escape(isExpanded(item.id), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-disabled", item.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", item.disabled ? -1 : tabStopId() === item.id ? 0 : -1, false) + _$ssrAttribute("data-k2b-nav-tree-id", _$escape(item.id, true), false) + _$ssrAttribute("data-k2b-nav-tree-parent-id", _$escape(parentId, true), false), _$escape(row()), _$escape(_$createComponent(Show, {
|
|
851
|
+
get when() {
|
|
852
|
+
return hasChildren() && isExpanded(item.id);
|
|
853
|
+
},
|
|
854
|
+
get children() {
|
|
855
|
+
return _$ssr(_tmpl$21, _$escape(renderItems(nested(), depth + 1, item.id)));
|
|
856
|
+
}
|
|
857
|
+
})));
|
|
858
|
+
}
|
|
859
|
+
});
|
|
860
|
+
return _$ssr(_tmpl$23, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots(), 0)));
|
|
861
|
+
};
|
|
862
|
+
AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
|
|
863
|
+
const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProps({
|
|
864
|
+
get ["class"]() {
|
|
865
|
+
return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
|
|
866
|
+
}
|
|
867
|
+
}, () => modeAttrs(props.sidebarMode)), [_$escape(_$createComponent(Show, {
|
|
868
|
+
get when() {
|
|
869
|
+
return props.title;
|
|
870
|
+
},
|
|
871
|
+
children: title => _$ssr(_tmpl$9, _$escape(title()))
|
|
872
|
+
})), _$ssr(_tmpl$24, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
|
|
873
|
+
const AppWorkspaceSidebarIconAction = props => {
|
|
874
|
+
const content = _$ssr(_tmpl$25, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
|
|
875
|
+
const attrs = () => ({
|
|
876
|
+
class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
|
|
877
|
+
title: props.label,
|
|
878
|
+
"aria-label": props.label,
|
|
879
|
+
"data-tone": props.tone,
|
|
880
|
+
style: {
|
|
881
|
+
"view-transition-name": props.viewTransitionName
|
|
882
|
+
},
|
|
883
|
+
...modeAttrs(props.sidebarMode)
|
|
884
|
+
});
|
|
885
|
+
if (!props.href || props.disabled) return _$ssrElement("button", _$mergeProps({
|
|
886
|
+
type: "button"
|
|
887
|
+
}, attrs, {
|
|
888
|
+
get disabled() {
|
|
889
|
+
return props.disabled;
|
|
890
|
+
}
|
|
891
|
+
}), _$escape(content), false);
|
|
892
|
+
if (props.navigation !== "enhanced" || !props.onNavigate) return _$ssrElement("a", _$mergeProps({
|
|
893
|
+
get href() {
|
|
894
|
+
return props.href;
|
|
895
|
+
}
|
|
896
|
+
}, attrs), _$escape(content), false);
|
|
897
|
+
return _$createComponent(Link, _$mergeProps({
|
|
898
|
+
get href() {
|
|
899
|
+
return props.href;
|
|
900
|
+
}
|
|
901
|
+
}, attrs, {
|
|
902
|
+
get replace() {
|
|
903
|
+
return props.replace;
|
|
904
|
+
},
|
|
905
|
+
get scroll() {
|
|
906
|
+
return props.scroll;
|
|
907
|
+
},
|
|
908
|
+
get onNavigate() {
|
|
909
|
+
return props.onNavigate;
|
|
910
|
+
},
|
|
911
|
+
get onClick() {
|
|
912
|
+
return props.onClick;
|
|
913
|
+
},
|
|
914
|
+
children: content
|
|
915
|
+
}));
|
|
916
|
+
};
|
|
917
|
+
const AppWorkspace = props => {
|
|
918
|
+
let root;
|
|
919
|
+
const serverLayoutState = useContext(LayoutStateContext);
|
|
920
|
+
const initialLayoutState = () => props.layoutState?.() ?? serverLayoutState;
|
|
921
|
+
|
|
922
|
+
// The resize handles are inert markup until the controller is attached, so
|
|
923
|
+
// the workspace attaches it itself and scopes it to this root. `onMount`
|
|
924
|
+
// never runs during SSR, and the disposer removes every listener. A host
|
|
925
|
+
// shell may own one document-level controller for SSR and hydrated roots;
|
|
926
|
+
// its marker keeps controller ownership singular without app-level props.
|
|
927
|
+
onMount(() => {
|
|
928
|
+
if (props.controller === false || !root || root.closest("[data-k2b-app-workspace-controller]")) return;
|
|
929
|
+
onCleanup(installAppWorkspaceController({
|
|
930
|
+
root,
|
|
931
|
+
readState: () => props.layoutState ? props.layoutState() : serverLayoutState,
|
|
932
|
+
writeState: state => props.onLayoutChange?.(state)
|
|
933
|
+
}));
|
|
934
|
+
});
|
|
935
|
+
return _$createComponent(ResizeContext.Provider, {
|
|
936
|
+
get value() {
|
|
937
|
+
return props.resizable !== false;
|
|
938
|
+
},
|
|
939
|
+
get children() {
|
|
940
|
+
return _$ssr(_tmpl$26, `k2b-app-workspace ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-sidebar-collapsed", initialLayoutState()?.sidebarCollapsed === undefined ? _$escape(undefined, true) : _$escape(String(initialLayoutState()?.sidebarCollapsed), true), false) + _$ssrAttribute("data-workspace-resizable", props.resizable === false ? "false" : "true", false), _$ssrStyle(appWorkspaceLayoutStyle(initialLayoutState())), _$escape(props.children));
|
|
941
|
+
}
|
|
942
|
+
});
|
|
943
|
+
};
|
|
944
|
+
AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext.Provider, {
|
|
945
|
+
get value() {
|
|
946
|
+
return props.state ?? null;
|
|
947
|
+
},
|
|
948
|
+
get children() {
|
|
949
|
+
return props.children;
|
|
950
|
+
}
|
|
951
|
+
});
|
|
952
|
+
AppWorkspace.Content = props => _$ssr(_tmpl$27, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
|
|
953
|
+
AppWorkspace.Main = AppWorkspaceMain;
|
|
954
|
+
AppWorkspace.MainPane = AppWorkspaceMainPane;
|
|
955
|
+
AppWorkspace.Detail = AppWorkspaceDetail;
|
|
956
|
+
AppWorkspace.BottomDrawer = AppWorkspaceBottomDrawer;
|
|
957
|
+
AppWorkspace.Sidebar = AppWorkspaceSidebar;
|
|
958
|
+
AppWorkspace.SidebarMobileTrigger = AppWorkspaceSidebarMobileTrigger;
|
|
959
|
+
AppWorkspace.SidebarMobile = AppWorkspaceSidebarMobile;
|
|
960
|
+
AppWorkspace.SidebarMobileItems = AppWorkspaceSidebarMobileItems;
|
|
961
|
+
AppWorkspace.SidebarMobileBody = AppWorkspaceSidebarMobileBody;
|
|
962
|
+
AppWorkspace.SidebarDesktop = AppWorkspaceSidebarDesktop;
|
|
963
|
+
AppWorkspace.SidebarSection = AppWorkspaceSidebarSection;
|
|
964
|
+
AppWorkspace.SidebarBody = AppWorkspaceSidebarBody;
|
|
965
|
+
AppWorkspace.SidebarFooter = AppWorkspaceSidebarFooter;
|
|
966
|
+
AppWorkspace.SidebarItem = AppWorkspaceSidebarItem;
|
|
967
|
+
AppWorkspace.SidebarItemIcon = AppWorkspaceSidebarItemIcon;
|
|
968
|
+
AppWorkspace.SidebarItemLabel = AppWorkspaceSidebarItemLabel;
|
|
969
|
+
AppWorkspace.SidebarItemMeta = AppWorkspaceSidebarItemMeta;
|
|
970
|
+
AppWorkspace.SidebarItemAction = AppWorkspaceSidebarItemAction;
|
|
971
|
+
AppWorkspace.SidebarItemActions = AppWorkspaceSidebarItemActions;
|
|
972
|
+
AppWorkspace.NavTree = AppWorkspaceNavTree;
|
|
973
|
+
AppWorkspace.SidebarIconGrid = AppWorkspaceSidebarIconGrid;
|
|
974
|
+
AppWorkspace.SidebarIconAction = AppWorkspaceSidebarIconAction;
|
|
975
|
+
export default AppWorkspace;
|
|
976
|
+
//# sourceMappingURL=AppWorkspace.js.map
|