@k2b/ui 0.20.0 → 0.22.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/dist/browser/actions/Button.js +20 -31
- package/dist/browser/actions/Button.js.map +1 -1
- package/dist/browser/actions/ContextMenu.js +10 -4
- package/dist/browser/actions/ContextMenu.js.map +1 -1
- package/dist/browser/actions/CopyButton.js +10 -8
- package/dist/browser/actions/CopyButton.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +3 -1
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/GestureMenu.js +4 -0
- package/dist/browser/actions/GestureMenu.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -1
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/filter-messages.js +20 -0
- package/dist/browser/actions/filter-messages.js.map +1 -0
- package/dist/browser/actions/spotlight-messages.js +16 -0
- package/dist/browser/actions/spotlight-messages.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +47 -41
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatPrimitives.js +25 -23
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatRoot.js +3 -3
- package/dist/browser/chat/ChatRoot.js.map +1 -1
- package/dist/browser/chat/ChatTimeline.js +12 -12
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-messages.js +236 -0
- package/dist/browser/chat/chat-messages.js.map +1 -0
- package/dist/browser/content/Calendar.js +1960 -575
- package/dist/browser/content/Calendar.js.map +1 -1
- package/dist/browser/content/Chart.js +15 -8
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +20 -12
- package/dist/browser/content/ChartExplorer.js.map +1 -1
- package/dist/browser/content/ChartExplorerControls.js +9 -7
- package/dist/browser/content/ChartExplorerControls.js.map +1 -1
- package/dist/browser/content/ChartFilterControls.js +4 -2
- package/dist/browser/content/ChartFilterControls.js.map +1 -1
- package/dist/browser/content/ChartSnapshotView.js +3 -3
- package/dist/browser/content/ChartSnapshotView.js.map +1 -1
- package/dist/browser/content/DataTable.js +68 -59
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/Docs.js +3 -1
- package/dist/browser/content/Docs.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +30 -26
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileTree.js +9 -7
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +37 -28
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/Lightbox.js +9 -7
- package/dist/browser/content/Lightbox.js.map +1 -1
- package/dist/browser/content/LogEntriesTable.js +3 -3
- package/dist/browser/content/LogEntriesTable.js.map +1 -1
- package/dist/browser/content/MessageRow.js +24 -22
- package/dist/browser/content/MessageRow.js.map +1 -1
- package/dist/browser/content/Pagination.js +7 -7
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +15 -13
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/RangePicker.js +3 -1
- package/dist/browser/content/RangePicker.js.map +1 -1
- package/dist/browser/content/StructuredDataPreview.js +3 -1
- package/dist/browser/content/StructuredDataPreview.js.map +1 -1
- package/dist/browser/content/Timeline.js +13 -11
- package/dist/browser/content/Timeline.js.map +1 -1
- package/dist/browser/content/VideoPlayer.js +5 -5
- package/dist/browser/content/VideoPlayer.js.map +1 -1
- package/dist/browser/content/VirtualFeed.js +6 -4
- package/dist/browser/content/VirtualFeed.js.map +1 -1
- package/dist/browser/content/ZoomPanViewport.js +10 -7
- package/dist/browser/content/ZoomPanViewport.js.map +1 -1
- package/dist/browser/content/calendar-messages.js +121 -0
- package/dist/browser/content/calendar-messages.js.map +1 -0
- package/dist/browser/content/calendar-month-layout.js +108 -0
- package/dist/browser/content/calendar-month-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +4 -3
- package/dist/browser/content/calendar-pointer.js.map +1 -1
- package/dist/browser/content/chart-messages.js +136 -0
- package/dist/browser/content/chart-messages.js.map +1 -0
- package/dist/browser/content/collection-selection.js +2 -0
- package/dist/browser/content/collection-selection.js.map +1 -1
- package/dist/browser/content/data-table-messages.js +24 -0
- package/dist/browser/content/data-table-messages.js.map +1 -0
- package/dist/browser/content/docs-messages.js +24 -0
- package/dist/browser/content/docs-messages.js.map +1 -0
- package/dist/browser/content/feed-messages.js +34 -0
- package/dist/browser/content/feed-messages.js.map +1 -0
- package/dist/browser/content/file-browser-messages.js +69 -0
- package/dist/browser/content/file-browser-messages.js.map +1 -0
- package/dist/browser/content/file-view-messages.js +64 -0
- package/dist/browser/content/file-view-messages.js.map +1 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/content/lightbox-messages.js +36 -0
- package/dist/browser/content/lightbox-messages.js.map +1 -0
- package/dist/browser/content/log-entries-messages.js +20 -0
- package/dist/browser/content/log-entries-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-block-messages.js +24 -0
- package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
- package/dist/browser/content/markdown-info-blocks.js +3 -3
- package/dist/browser/content/markdown-info-blocks.js.map +1 -1
- package/dist/browser/content/markdown-links.js +2 -2
- package/dist/browser/content/markdown-links.js.map +1 -1
- package/dist/browser/content/markdown-reference-messages.js +30 -0
- package/dist/browser/content/markdown-reference-messages.js.map +1 -0
- package/dist/browser/content/pagination-messages.js +38 -0
- package/dist/browser/content/pagination-messages.js.map +1 -0
- package/dist/browser/content/pdf-messages.js +43 -0
- package/dist/browser/content/pdf-messages.js.map +1 -0
- package/dist/browser/content/range-picker-messages.js +20 -0
- package/dist/browser/content/range-picker-messages.js.map +1 -0
- package/dist/browser/content/structured-data-messages.js +22 -0
- package/dist/browser/content/structured-data-messages.js.map +1 -0
- package/dist/browser/content/timeline-messages.js +62 -0
- package/dist/browser/content/timeline-messages.js.map +1 -0
- package/dist/browser/content/video-messages.js +24 -0
- package/dist/browser/content/video-messages.js.map +1 -0
- package/dist/browser/content/viewport-messages.js +28 -0
- package/dist/browser/content/viewport-messages.js.map +1 -0
- package/dist/browser/feedback/HoverPreview.js +34 -6
- package/dist/browser/feedback/HoverPreview.js.map +1 -1
- package/dist/browser/feedback/InstallGuide.js +18 -18
- package/dist/browser/feedback/InstallGuide.js.map +1 -1
- package/dist/browser/feedback/install-messages.js +104 -0
- package/dist/browser/feedback/install-messages.js.map +1 -0
- package/dist/browser/feedback/prompt-messages.js +65 -0
- package/dist/browser/feedback/prompt-messages.js.map +1 -0
- package/dist/browser/feedback/prompts.js +14 -11
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast-messages.js +18 -0
- package/dist/browser/feedback/toast-messages.js.map +1 -0
- package/dist/browser/feedback/toast.js +4 -3
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/inputs/AutocompleteEditor.js +6 -4
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/browser/inputs/AutocompleteSelect.js +10 -8
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js +4 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/ChoiceInputs.js +5 -5
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
- package/dist/browser/inputs/Combobox.js +3 -1
- package/dist/browser/inputs/Combobox.js.map +1 -1
- package/dist/browser/inputs/DatePicker.js +46 -10
- package/dist/browser/inputs/DatePicker.js.map +1 -1
- package/dist/browser/inputs/FileDropTarget.js +6 -6
- package/dist/browser/inputs/FileDropTarget.js.map +1 -1
- package/dist/browser/inputs/FileInputs.js +30 -21
- package/dist/browser/inputs/FileInputs.js.map +1 -1
- package/dist/browser/inputs/MultiSelectInput.js +7 -5
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
- package/dist/browser/inputs/NumberInput.js +4 -2
- package/dist/browser/inputs/NumberInput.js.map +1 -1
- package/dist/browser/inputs/QrScanner.js +5 -5
- package/dist/browser/inputs/QrScanner.js.map +1 -1
- package/dist/browser/inputs/Select.js +7 -5
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -3
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/SignatureInput.js +9 -3
- package/dist/browser/inputs/SignatureInput.js.map +1 -1
- package/dist/browser/inputs/SpecialInputs.js +4 -2
- package/dist/browser/inputs/SpecialInputs.js.map +1 -1
- package/dist/browser/inputs/TagEditor.js +8 -6
- package/dist/browser/inputs/TagEditor.js.map +1 -1
- package/dist/browser/inputs/TagsInput.js +5 -5
- package/dist/browser/inputs/TagsInput.js.map +1 -1
- package/dist/browser/inputs/TemplateEditor.js +5 -5
- package/dist/browser/inputs/TemplateEditor.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +3 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/completion-messages.js +24 -0
- package/dist/browser/inputs/completion-messages.js.map +1 -0
- package/dist/browser/inputs/date-picker.js +24 -0
- package/dist/browser/inputs/date-picker.js.map +1 -1
- package/dist/browser/inputs/file-drop-messages.js +63 -0
- package/dist/browser/inputs/file-drop-messages.js.map +1 -0
- package/dist/browser/inputs/file-drop.js.map +1 -1
- package/dist/browser/inputs/file-input-messages.js +60 -0
- package/dist/browser/inputs/file-input-messages.js.map +1 -0
- package/dist/browser/inputs/icon-messages.js +22 -0
- package/dist/browser/inputs/icon-messages.js.map +1 -0
- package/dist/browser/inputs/input-messages.js +38 -0
- package/dist/browser/inputs/input-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/Toolbar.js +13 -13
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/browser/inputs/markdown/editor-messages.js +43 -0
- package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/browser/inputs/qr-messages.js +26 -0
- package/dist/browser/inputs/qr-messages.js.map +1 -0
- package/dist/browser/inputs/select-messages.js +63 -0
- package/dist/browser/inputs/select-messages.js.map +1 -0
- package/dist/browser/inputs/tag-messages.js +44 -0
- package/dist/browser/inputs/tag-messages.js.map +1 -0
- package/dist/browser/inputs/template-messages.js +22 -0
- package/dist/browser/inputs/template-messages.js.map +1 -0
- package/dist/browser/internal/render-error-messages.js +20 -0
- package/dist/browser/internal/render-error-messages.js.map +1 -0
- package/dist/browser/internal/render-error.js +3 -1
- package/dist/browser/internal/render-error.js.map +1 -1
- package/dist/browser/internal/text-selection.js +101 -0
- package/dist/browser/internal/text-selection.js.map +1 -0
- package/dist/browser/intl/messages.js +12 -1155
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +561 -418
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +6 -1
- package/dist/browser/layout/BottomSheet.js.map +1 -1
- package/dist/browser/layout/Discussion.js +8 -5
- package/dist/browser/layout/Discussion.js.map +1 -1
- package/dist/browser/layout/FloatingWindow.js +8 -5
- package/dist/browser/layout/FloatingWindow.js.map +1 -1
- package/dist/browser/layout/Navigation.js +7 -6
- package/dist/browser/layout/Navigation.js.map +1 -1
- package/dist/browser/layout/PageTitle.js +370 -0
- package/dist/browser/layout/PageTitle.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +8 -6
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/Panes.js +23 -15
- package/dist/browser/layout/Panes.js.map +1 -1
- package/dist/browser/layout/PullToRefresh.js +13 -4
- package/dist/browser/layout/PullToRefresh.js.map +1 -1
- package/dist/browser/layout/Settings.js +14 -12
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SettingsCollection.js +6 -5
- package/dist/browser/layout/SettingsCollection.js.map +1 -1
- package/dist/browser/layout/SettingsModal.js +3 -1
- package/dist/browser/layout/SettingsModal.js.map +1 -1
- package/dist/browser/layout/app-workspace-controller.js +743 -12
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js +3 -2
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/floating-window-messages.js +28 -0
- package/dist/browser/layout/floating-window-messages.js.map +1 -0
- package/dist/browser/layout/index.js +2 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js.map +1 -1
- package/dist/browser/layout/page-title-controller.js +169 -0
- package/dist/browser/layout/page-title-controller.js.map +1 -0
- package/dist/browser/layout/panel-dialog-messages.js +20 -0
- package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
- package/dist/browser/layout/panes-messages.js +48 -0
- package/dist/browser/layout/panes-messages.js.map +1 -0
- package/dist/browser/layout/refresh-messages.js +20 -0
- package/dist/browser/layout/refresh-messages.js.map +1 -0
- package/dist/browser/layout/settings-messages.js +54 -0
- package/dist/browser/layout/settings-messages.js.map +1 -0
- package/dist/browser/layout/workspace-messages.js +56 -0
- package/dist/browser/layout/workspace-messages.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +5 -5
- package/dist/browser/surfaces/Avatar.js.map +1 -1
- package/dist/browser/surfaces/ResourceCard.js +4 -2
- package/dist/browser/surfaces/ResourceCard.js.map +1 -1
- package/dist/browser/surfaces/Tag.js +3 -3
- package/dist/browser/surfaces/Tag.js.map +1 -1
- package/dist/browser/surfaces/avatar-messages.js +26 -0
- package/dist/browser/surfaces/avatar-messages.js.map +1 -0
- package/dist/browser/surfaces/resource-messages.js +26 -0
- package/dist/browser/surfaces/resource-messages.js.map +1 -0
- package/dist/browser/widgets/Widget.js +6 -0
- package/dist/browser/widgets/Widget.js.map +1 -1
- package/dist/ssr/actions/Button.js +21 -32
- package/dist/ssr/actions/Button.js.map +1 -1
- package/dist/ssr/actions/ContextMenu.js +7 -3
- package/dist/ssr/actions/ContextMenu.js.map +1 -1
- package/dist/ssr/actions/CopyButton.js +9 -7
- package/dist/ssr/actions/CopyButton.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +3 -1
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/GestureMenu.js +4 -0
- package/dist/ssr/actions/GestureMenu.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -1
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/filter-messages.js +20 -0
- package/dist/ssr/actions/filter-messages.js.map +1 -0
- package/dist/ssr/actions/spotlight-messages.js +16 -0
- package/dist/ssr/actions/spotlight-messages.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +47 -41
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatPrimitives.js +23 -21
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatRoot.js +3 -3
- package/dist/ssr/chat/ChatRoot.js.map +1 -1
- package/dist/ssr/chat/ChatTimeline.js +11 -11
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-messages.js +236 -0
- package/dist/ssr/chat/chat-messages.js.map +1 -0
- package/dist/ssr/content/Calendar.js +1232 -115
- package/dist/ssr/content/Calendar.js.map +1 -1
- package/dist/ssr/content/Chart.js +12 -5
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +10 -8
- package/dist/ssr/content/ChartExplorer.js.map +1 -1
- package/dist/ssr/content/ChartExplorerControls.js +9 -7
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
- package/dist/ssr/content/ChartFilterControls.js +4 -2
- package/dist/ssr/content/ChartFilterControls.js.map +1 -1
- package/dist/ssr/content/ChartSnapshotView.js +3 -3
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
- package/dist/ssr/content/DataTable.js +10 -4
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/Docs.js +3 -1
- package/dist/ssr/content/Docs.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +30 -26
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileTree.js +9 -7
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +37 -28
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/Lightbox.js +8 -6
- package/dist/ssr/content/Lightbox.js.map +1 -1
- package/dist/ssr/content/LogEntriesTable.js +3 -3
- package/dist/ssr/content/LogEntriesTable.js.map +1 -1
- package/dist/ssr/content/MessageRow.js +24 -22
- package/dist/ssr/content/MessageRow.js.map +1 -1
- package/dist/ssr/content/Pagination.js +6 -6
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +15 -13
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/RangePicker.js +3 -1
- package/dist/ssr/content/RangePicker.js.map +1 -1
- package/dist/ssr/content/StructuredDataPreview.js +3 -1
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
- package/dist/ssr/content/Timeline.js +13 -11
- package/dist/ssr/content/Timeline.js.map +1 -1
- package/dist/ssr/content/VideoPlayer.js +5 -5
- package/dist/ssr/content/VideoPlayer.js.map +1 -1
- package/dist/ssr/content/VirtualFeed.js +6 -4
- package/dist/ssr/content/VirtualFeed.js.map +1 -1
- package/dist/ssr/content/ZoomPanViewport.js +7 -4
- package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
- package/dist/ssr/content/calendar-messages.js +121 -0
- package/dist/ssr/content/calendar-messages.js.map +1 -0
- package/dist/ssr/content/calendar-month-layout.js +108 -0
- package/dist/ssr/content/calendar-month-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +4 -3
- package/dist/ssr/content/calendar-pointer.js.map +1 -1
- package/dist/ssr/content/chart-messages.js +136 -0
- package/dist/ssr/content/chart-messages.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +2 -0
- package/dist/ssr/content/collection-selection.js.map +1 -1
- package/dist/ssr/content/data-table-messages.js +24 -0
- package/dist/ssr/content/data-table-messages.js.map +1 -0
- package/dist/ssr/content/docs-messages.js +24 -0
- package/dist/ssr/content/docs-messages.js.map +1 -0
- package/dist/ssr/content/feed-messages.js +34 -0
- package/dist/ssr/content/feed-messages.js.map +1 -0
- package/dist/ssr/content/file-browser-messages.js +69 -0
- package/dist/ssr/content/file-browser-messages.js.map +1 -0
- package/dist/ssr/content/file-view-messages.js +64 -0
- package/dist/ssr/content/file-view-messages.js.map +1 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/content/lightbox-messages.js +36 -0
- package/dist/ssr/content/lightbox-messages.js.map +1 -0
- package/dist/ssr/content/log-entries-messages.js +20 -0
- package/dist/ssr/content/log-entries-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-block-messages.js +24 -0
- package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
- package/dist/ssr/content/markdown-info-blocks.js +3 -3
- package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
- package/dist/ssr/content/markdown-links.js +2 -2
- package/dist/ssr/content/markdown-links.js.map +1 -1
- package/dist/ssr/content/markdown-reference-messages.js +30 -0
- package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
- package/dist/ssr/content/pagination-messages.js +38 -0
- package/dist/ssr/content/pagination-messages.js.map +1 -0
- package/dist/ssr/content/pdf-messages.js +43 -0
- package/dist/ssr/content/pdf-messages.js.map +1 -0
- package/dist/ssr/content/range-picker-messages.js +20 -0
- package/dist/ssr/content/range-picker-messages.js.map +1 -0
- package/dist/ssr/content/structured-data-messages.js +22 -0
- package/dist/ssr/content/structured-data-messages.js.map +1 -0
- package/dist/ssr/content/timeline-messages.js +62 -0
- package/dist/ssr/content/timeline-messages.js.map +1 -0
- package/dist/ssr/content/video-messages.js +24 -0
- package/dist/ssr/content/video-messages.js.map +1 -0
- package/dist/ssr/content/viewport-messages.js +28 -0
- package/dist/ssr/content/viewport-messages.js.map +1 -0
- package/dist/ssr/feedback/HoverPreview.js +34 -6
- package/dist/ssr/feedback/HoverPreview.js.map +1 -1
- package/dist/ssr/feedback/InstallGuide.js +18 -18
- package/dist/ssr/feedback/InstallGuide.js.map +1 -1
- package/dist/ssr/feedback/install-messages.js +104 -0
- package/dist/ssr/feedback/install-messages.js.map +1 -0
- package/dist/ssr/feedback/prompt-messages.js +65 -0
- package/dist/ssr/feedback/prompt-messages.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +14 -11
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast-messages.js +18 -0
- package/dist/ssr/feedback/toast-messages.js.map +1 -0
- package/dist/ssr/feedback/toast.js +4 -3
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/index.js +1 -1
- package/dist/ssr/index.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
- package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js +4 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- package/dist/ssr/inputs/ChoiceInputs.js +5 -5
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
- package/dist/ssr/inputs/Combobox.js +3 -1
- package/dist/ssr/inputs/Combobox.js.map +1 -1
- package/dist/ssr/inputs/DatePicker.js +34 -4
- package/dist/ssr/inputs/DatePicker.js.map +1 -1
- package/dist/ssr/inputs/FileDropTarget.js +6 -6
- package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
- package/dist/ssr/inputs/FileInputs.js +29 -20
- package/dist/ssr/inputs/FileInputs.js.map +1 -1
- package/dist/ssr/inputs/MultiSelectInput.js +7 -5
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
- package/dist/ssr/inputs/NumberInput.js +4 -2
- package/dist/ssr/inputs/NumberInput.js.map +1 -1
- package/dist/ssr/inputs/QrScanner.js +4 -4
- package/dist/ssr/inputs/QrScanner.js.map +1 -1
- package/dist/ssr/inputs/Select.js +7 -5
- package/dist/ssr/inputs/Select.js.map +1 -1
- package/dist/ssr/inputs/SelectChip.js +3 -3
- package/dist/ssr/inputs/SelectChip.js.map +1 -1
- package/dist/ssr/inputs/SignatureInput.js +9 -3
- package/dist/ssr/inputs/SignatureInput.js.map +1 -1
- package/dist/ssr/inputs/SpecialInputs.js +4 -2
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
- package/dist/ssr/inputs/TagEditor.js +8 -6
- package/dist/ssr/inputs/TagEditor.js.map +1 -1
- package/dist/ssr/inputs/TagsInput.js +5 -5
- package/dist/ssr/inputs/TagsInput.js.map +1 -1
- package/dist/ssr/inputs/TemplateEditor.js +5 -5
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
- package/dist/ssr/inputs/TextInput.js +3 -1
- package/dist/ssr/inputs/TextInput.js.map +1 -1
- package/dist/ssr/inputs/completion-messages.js +24 -0
- package/dist/ssr/inputs/completion-messages.js.map +1 -0
- package/dist/ssr/inputs/date-picker.js +24 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -1
- package/dist/ssr/inputs/file-drop-messages.js +63 -0
- package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
- package/dist/ssr/inputs/file-drop.js.map +1 -1
- package/dist/ssr/inputs/file-input-messages.js +60 -0
- package/dist/ssr/inputs/file-input-messages.js.map +1 -0
- package/dist/ssr/inputs/icon-messages.js +22 -0
- package/dist/ssr/inputs/icon-messages.js.map +1 -0
- package/dist/ssr/inputs/input-messages.js +38 -0
- package/dist/ssr/inputs/input-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
- package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
- package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
- package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
- package/dist/ssr/inputs/qr-messages.js +26 -0
- package/dist/ssr/inputs/qr-messages.js.map +1 -0
- package/dist/ssr/inputs/select-messages.js +63 -0
- package/dist/ssr/inputs/select-messages.js.map +1 -0
- package/dist/ssr/inputs/tag-messages.js +44 -0
- package/dist/ssr/inputs/tag-messages.js.map +1 -0
- package/dist/ssr/inputs/template-messages.js +22 -0
- package/dist/ssr/inputs/template-messages.js.map +1 -0
- package/dist/ssr/internal/render-error-messages.js +20 -0
- package/dist/ssr/internal/render-error-messages.js.map +1 -0
- package/dist/ssr/internal/render-error.js +3 -1
- package/dist/ssr/internal/render-error.js.map +1 -1
- package/dist/ssr/internal/text-selection.js +101 -0
- package/dist/ssr/internal/text-selection.js.map +1 -0
- package/dist/ssr/intl/messages.js +12 -1155
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +203 -96
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +1 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -1
- package/dist/ssr/layout/Discussion.js +8 -5
- package/dist/ssr/layout/Discussion.js.map +1 -1
- package/dist/ssr/layout/FloatingWindow.js +8 -5
- package/dist/ssr/layout/FloatingWindow.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +6 -5
- package/dist/ssr/layout/Navigation.js.map +1 -1
- package/dist/ssr/layout/PageTitle.js +253 -0
- package/dist/ssr/layout/PageTitle.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +8 -6
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/Panes.js +22 -14
- package/dist/ssr/layout/Panes.js.map +1 -1
- package/dist/ssr/layout/PullToRefresh.js +13 -4
- package/dist/ssr/layout/PullToRefresh.js.map +1 -1
- package/dist/ssr/layout/Settings.js +14 -12
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SettingsCollection.js +6 -5
- package/dist/ssr/layout/SettingsCollection.js.map +1 -1
- package/dist/ssr/layout/SettingsModal.js +3 -1
- package/dist/ssr/layout/SettingsModal.js.map +1 -1
- package/dist/ssr/layout/app-workspace-controller.js +743 -12
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js +3 -2
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/floating-window-messages.js +28 -0
- package/dist/ssr/layout/floating-window-messages.js.map +1 -0
- package/dist/ssr/layout/index.js +2 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js.map +1 -1
- package/dist/ssr/layout/page-title-controller.js +169 -0
- package/dist/ssr/layout/page-title-controller.js.map +1 -0
- package/dist/ssr/layout/panel-dialog-messages.js +20 -0
- package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
- package/dist/ssr/layout/panes-messages.js +48 -0
- package/dist/ssr/layout/panes-messages.js.map +1 -0
- package/dist/ssr/layout/refresh-messages.js +20 -0
- package/dist/ssr/layout/refresh-messages.js.map +1 -0
- package/dist/ssr/layout/settings-messages.js +54 -0
- package/dist/ssr/layout/settings-messages.js.map +1 -0
- package/dist/ssr/layout/workspace-messages.js +56 -0
- package/dist/ssr/layout/workspace-messages.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +5 -5
- package/dist/ssr/surfaces/Avatar.js.map +1 -1
- package/dist/ssr/surfaces/ResourceCard.js +4 -2
- package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
- package/dist/ssr/surfaces/Tag.js +3 -3
- package/dist/ssr/surfaces/Tag.js.map +1 -1
- package/dist/ssr/surfaces/avatar-messages.js +26 -0
- package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
- package/dist/ssr/surfaces/resource-messages.js +26 -0
- package/dist/ssr/surfaces/resource-messages.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +6 -0
- package/dist/ssr/widgets/Widget.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/types/actions/GestureMenu.d.ts +2 -0
- package/dist/types/actions/filter-messages.d.ts +8 -0
- package/dist/types/actions/spotlight-messages.d.ts +8 -0
- package/dist/types/chat/chat-messages.d.ts +116 -0
- package/dist/types/content/Calendar.d.ts +32 -0
- package/dist/types/content/DataTable.d.ts +2 -0
- package/dist/types/content/FileView.d.ts +0 -10
- package/dist/types/content/calendar-messages.d.ts +60 -0
- package/dist/types/content/calendar-month-layout.d.ts +52 -0
- package/dist/types/content/chart-messages.d.ts +32 -0
- package/dist/types/content/data-table-messages.d.ts +10 -0
- package/dist/types/content/docs-messages.d.ts +10 -0
- package/dist/types/content/feed-messages.d.ts +15 -0
- package/dist/types/content/file-browser-messages.d.ts +33 -0
- package/dist/types/content/file-view-messages.d.ts +30 -0
- package/dist/types/content/index.d.ts +1 -1
- package/dist/types/content/lightbox-messages.d.ts +16 -0
- package/dist/types/content/log-entries-messages.d.ts +8 -0
- package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
- package/dist/types/content/markdown-reference-messages.d.ts +15 -0
- package/dist/types/content/pagination-messages.d.ts +17 -0
- package/dist/types/content/pdf-messages.d.ts +20 -0
- package/dist/types/content/range-picker-messages.d.ts +8 -0
- package/dist/types/content/structured-data-messages.d.ts +9 -0
- package/dist/types/content/timeline-messages.d.ts +29 -0
- package/dist/types/content/video-messages.d.ts +10 -0
- package/dist/types/content/viewport-messages.d.ts +12 -0
- package/dist/types/feedback/install-messages.d.ts +50 -0
- package/dist/types/feedback/prompt-messages.d.ts +31 -0
- package/dist/types/feedback/toast-messages.d.ts +9 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/inputs/completion-messages.d.ts +10 -0
- package/dist/types/inputs/date-picker.d.ts +7 -0
- package/dist/types/inputs/file-drop-messages.d.ts +30 -0
- package/dist/types/inputs/file-drop.d.ts +3 -3
- package/dist/types/inputs/file-input-messages.d.ts +28 -0
- package/dist/types/inputs/icon-messages.d.ts +9 -0
- package/dist/types/inputs/input-messages.d.ts +17 -0
- package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
- package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
- package/dist/types/inputs/qr-messages.d.ts +11 -0
- package/dist/types/inputs/select-messages.d.ts +30 -0
- package/dist/types/inputs/tag-messages.d.ts +20 -0
- package/dist/types/inputs/template-messages.d.ts +9 -0
- package/dist/types/internal/render-error-messages.d.ts +8 -0
- package/dist/types/internal/text-selection.d.ts +18 -0
- package/dist/types/intl/messages.d.ts +6 -544
- package/dist/types/layout/AppWorkspace.d.ts +19 -4
- package/dist/types/layout/PageTitle.d.ts +64 -0
- package/dist/types/layout/app-workspace-controller.d.ts +4 -0
- package/dist/types/layout/app-workspace-state.d.ts +3 -2
- package/dist/types/layout/floating-window-messages.d.ts +12 -0
- package/dist/types/layout/index.d.ts +3 -0
- package/dist/types/layout/navigation-model.d.ts +7 -0
- package/dist/types/layout/page-title-controller.d.ts +13 -0
- package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
- package/dist/types/layout/panes-messages.d.ts +22 -0
- package/dist/types/layout/refresh-messages.d.ts +8 -0
- package/dist/types/layout/settings-messages.d.ts +25 -0
- package/dist/types/layout/workspace-messages.d.ts +26 -0
- package/dist/types/surfaces/avatar-messages.d.ts +11 -0
- package/dist/types/surfaces/resource-messages.d.ts +11 -0
- package/dist/types/widgets/Widget.d.ts +5 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["layout/AppWorkspace.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent, type NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport {\n children,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n useContext,\n} from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from \"./app-workspace-controller\";\nimport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n type AppWorkspaceLayoutState,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n} from \"./app-workspace-state\";\nimport type { ScrollAreaProps } from \"./ScrollArea\";\nimport { SidebarItemPreview } from \"./SidebarItemPreview\";\nimport { createScrollFade } from \"./scroll-fade\";\nimport { assertStableUiId, assertUniqueStableUiIds } from \"./stable-id\";\n\nconst ResizeContext = createContext(true);\nconst LayoutStateContext = createContext<AppWorkspaceLayoutState | null>(null);\nconst MAIN_PANE = Symbol(\"AppWorkspace.MainPane\");\nconst SIDEBAR_DESKTOP = Symbol(\"AppWorkspace.SidebarDesktop\");\nconst SIDEBAR_ITEM_ICON = Symbol(\"AppWorkspace.SidebarItemIcon\");\nconst SIDEBAR_ITEM_LABEL = Symbol(\"AppWorkspace.SidebarItemLabel\");\nconst SIDEBAR_ITEM_META = Symbol(\"AppWorkspace.SidebarItemMeta\");\nconst SIDEBAR_ITEM_ACTION = Symbol(\"AppWorkspace.SidebarItemAction\");\nconst NAV_TREE_ITEM = Symbol(\"AppWorkspace.NavTree.Item\");\n\ntype MainPaneSlot = {\n kind: typeof MAIN_PANE;\n props: AppWorkspaceMainPaneProps;\n domId: string;\n};\ntype SidebarChildSlot = { kind: typeof SIDEBAR_DESKTOP; children: JSX.Element };\ntype SidebarItemSlot =\n | (AppWorkspaceSidebarItemIconProps & { kind: typeof SIDEBAR_ITEM_ICON })\n | (AppWorkspaceSidebarItemLabelProps & { kind: typeof SIDEBAR_ITEM_LABEL })\n | (AppWorkspaceSidebarItemMetaProps & { kind: typeof SIDEBAR_ITEM_META })\n | (AppWorkspaceSidebarItemActionProps & { kind: typeof SIDEBAR_ITEM_ACTION });\ntype NavTreeItemSlot = AppWorkspaceNavTreeItemProps & { kind: typeof NAV_TREE_ITEM };\n\nconst flatten = (value: unknown): unknown[] => {\n // Solid control-flow components such as <For> expose their rendered value\n // through an accessor. Compound slots may therefore be nested behind a\n // function even after `children()` resolves the outer collection.\n if (typeof value === \"function\") return flatten(value());\n if (Array.isArray(value)) return value.flatMap(flatten);\n return value === null || value === undefined || typeof value === \"boolean\" ? [] : [value];\n};\nconst mainPaneSlot = (value: unknown): value is MainPaneSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as MainPaneSlot).kind === MAIN_PANE);\nconst sidebarChildSlot = (value: unknown): value is SidebarChildSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as SidebarChildSlot).kind === SIDEBAR_DESKTOP);\nconst sidebarItemSlot = (value: unknown): value is SidebarItemSlot =>\n Boolean(\n value &&\n typeof value === \"object\" &&\n \"kind\" in value &&\n [SIDEBAR_ITEM_ICON, SIDEBAR_ITEM_LABEL, SIDEBAR_ITEM_META, SIDEBAR_ITEM_ACTION].includes((value as SidebarItemSlot).kind),\n );\nconst navTreeItemSlot = (value: unknown): value is NavTreeItemSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as NavTreeItemSlot).kind === NAV_TREE_ITEM);\n\ntype ResizeHandleProps = {\n kind: \"sidebar\" | \"pane\" | \"detail\" | \"drawer\";\n edge: \"start\" | \"end\";\n controls?: string;\n panelId?: string;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n shadow?: boolean;\n label?: string;\n style?: JSX.CSSProperties;\n};\n\nfunction ResizeHandle(props: ResizeHandleProps): JSX.Element {\n const messages = useUiMessages();\n return (\n <button\n type=\"button\"\n class=\"k2b-app-workspace__resize\"\n role=\"separator\"\n aria-label={\n props.label ??\n (props.kind === \"sidebar\"\n ? messages().resizeNavigation\n : props.kind === \"pane\"\n ? messages().resizeWorkspacePane\n : props.kind === \"detail\"\n ? messages().resizeDetailPanel\n : messages().resizeBottomDrawer)\n }\n aria-controls={props.controls}\n aria-orientation={props.kind === \"drawer\" ? \"horizontal\" : \"vertical\"}\n aria-valuemin={props.minSize}\n aria-valuemax={props.maxSize}\n aria-valuenow={props.defaultSize}\n data-app-workspace-resize={props.kind}\n data-workspace-panel-id={props.panelId}\n data-workspace-resize-edge={props.edge}\n data-workspace-resize-shadow={props.shadow ? \"true\" : undefined}\n data-workspace-default-size={props.defaultSize}\n data-workspace-min-size={props.minSize}\n data-workspace-max-size={props.maxSize}\n style={props.style}\n >\n <span aria-hidden=\"true\" />\n </button>\n );\n}\n\nexport type AppWorkspaceProps = {\n children: JSX.Element;\n class?: string;\n /** A host with its own mobile chrome can use the full canvas below 1024px. */\n mobileSurface?: \"contained\" | \"flush\";\n resizable?: boolean;\n /**\n * Restores a persisted layout when the workspace mounts. Persistence itself\n * stays app-owned — the package reads and writes nothing on its own — but\n * the resize handles work without it.\n */\n layoutState?: () => AppWorkspaceLayoutState | null | undefined;\n /** Called with the full layout whenever a resize settles. Persist it here. */\n onLayoutChange?: (state: AppWorkspaceLayoutState) => void;\n /**\n * Opt out of the built-in controller. Only needed when the application calls\n * `installAppWorkspaceController` itself — installing twice would double up\n * every listener.\n */\n controller?: false;\n};\nexport type AppWorkspaceLayoutStateProviderProps = {\n children: JSX.Element;\n state: AppWorkspaceLayoutState | null | undefined;\n};\nexport type AppWorkspaceContentProps = { children: JSX.Element; class?: string };\nexport type AppWorkspaceMainProps = {\n children: JSX.Element;\n class?: string;\n /** `\"content\"` centers the children as one reading column with the shared page width on large screens. */\n width?: \"full\" | \"content\";\n mobilePane?: string;\n scroll?: boolean;\n scrollFade?: boolean;\n scrollPreserveKey?: string | false;\n \"aria-busy\"?: boolean | \"true\" | \"false\";\n};\nexport type AppWorkspaceMainPaneProps = {\n id: string;\n label: string;\n surface?: \"default\" | \"navigation\";\n open?: boolean;\n resizable?: boolean;\n resizeShadow?: boolean;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n class?: string;\n scroll?: boolean;\n scrollFade?: boolean;\n children: JSX.Element;\n};\nexport type AppWorkspaceDetailWidth = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type AppWorkspaceDetailProps = {\n children: JSX.Element;\n open: boolean;\n id: string;\n class?: string;\n width?: AppWorkspaceDetailWidth;\n viewTransitionName?: string;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n};\nexport type AppWorkspaceBottomDrawerHeight = \"sm\" | \"md\" | \"lg\";\nexport type AppWorkspaceBottomDrawerProps = {\n children: JSX.Element;\n open: boolean;\n id: string;\n class?: string;\n height?: AppWorkspaceBottomDrawerHeight;\n minHeight?: number;\n maxHeight?: number;\n viewTransitionName?: string;\n resizable?: boolean;\n};\nexport type AppWorkspaceSidebarProps = {\n /** Stable element id, for a toggle elsewhere that names the sidebar in `aria-controls`. */\n id?: string;\n label?: string;\n children: JSX.Element;\n class?: string;\n /**\n * Below the desktop breakpoint the sidebar is hidden and the host's mobile\n * navigation takes over. `\"stacked\"` keeps it as a block above the content\n * instead, for overviews whose sidebar is the primary object list.\n */\n mobile?: \"hidden\" | \"stacked\";\n resizable?: boolean;\n resizeShadow?: boolean;\n collapsible?: boolean;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n /**\n * Hides the desktop navigation completely: the sidebar renders none of its\n * children and no resize handle, and main panes with `surface=\"navigation\"`\n * hide with it. The state is application-owned, like a persisted layout.\n */\n hidden?: boolean;\n /**\n * Makes the sidebar hideable by dragging its resize handle below half its\n * minimum width. The controller then requests `true`; showing it again is\n * the application's control.\n */\n onHiddenChange?: (hidden: boolean) => void;\n};\nexport type AppWorkspaceSidebarVisibility = \"always\" | \"expanded\" | \"collapsed\";\nexport type AppWorkspaceSidebarAccessoryVisibility = \"always\" | \"hover\";\ntype AppWorkspaceSidebarContentProps = {\n children: JSX.Element;\n class?: string;\n scrollPreserveKey?: string | false;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarBodyProps = AppWorkspaceSidebarContentProps & { scrollFade?: boolean };\nexport type AppWorkspaceSidebarSectionProps = AppWorkspaceSidebarContentProps & {\n title?: string;\n icon?: string;\n count?: number;\n collapsible?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n actions?: JSX.Element;\n};\nexport type AppWorkspaceSidebarItemTone = \"default\" | \"success\" | \"danger\";\nexport type AppWorkspaceSidebarIconActionTone = \"default\" | \"success\" | \"danger\";\nexport type AppWorkspaceSidebarItemProps = {\n children: JSX.Element;\n /**\n * Card rows add a quiet context header above the main label. Object rows\n * present one resource with a title, a description line, and stacked\n * trailing counts; use them for the objects an overview navigates into.\n */\n variant?: \"row\" | \"card\" | \"object\";\n context?: JSX.Element;\n contextMeta?: JSX.Element;\n /** Passive second line; keep controls in actions or preview. */\n description?: JSX.Element;\n /** Interactive details, also reachable through a dedicated button. */\n preview?: {\n label: string;\n content: JSX.Element | ((close: () => void) => JSX.Element);\n trigger?: \"action\" | \"row\";\n align?: \"center\" | \"end\";\n viewportSize?: ScrollAreaProps[\"viewportSize\"];\n onOpenChange?: (open: boolean) => void;\n };\n href?: string;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onClick?: (event: MouseEvent) => void;\n active?: boolean;\n activeClass?: string;\n disabled?: boolean;\n icon?: string;\n meta?: JSX.Element;\n metaVisibility?: AppWorkspaceSidebarAccessoryVisibility;\n actions?: JSX.Element;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n depth?: number;\n actionIcon?: string;\n actionLabel?: string;\n onActionClick?: (event: MouseEvent) => void;\n data?: Record<string, string | number | boolean | null | undefined>;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarIconGridProps = AppWorkspaceSidebarContentProps & { title?: string; columns?: 2 | 3 };\nexport type AppWorkspaceSidebarIconActionProps = {\n href?: string | null;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n icon: string;\n label: string;\n active?: boolean;\n disabled?: boolean;\n tone?: AppWorkspaceSidebarIconActionTone;\n viewTransitionName?: string;\n onClick?: (event: MouseEvent) => void;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarItemIconProps = { icon?: string; children?: JSX.Element };\nexport type AppWorkspaceSidebarItemLabelProps = { children: JSX.Element; marquee?: boolean };\nexport type AppWorkspaceSidebarItemMetaProps = {\n children: JSX.Element;\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n};\nexport type AppWorkspaceSidebarItemActionProps = {\n icon?: string;\n label: string;\n disabled?: boolean;\n /** Hide the action on fine pointers until the row is hovered or keyboard-focused. */\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n href?: string;\n navigation?: \"enhanced\" | \"document\";\n onSelect?: (event: MouseEvent) => void;\n children?: JSX.Element;\n};\nexport type AppWorkspaceSidebarItemActionsProps = {\n children: JSX.Element;\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n};\n/**\n * Unread state for the trailing `meta` slot. Every mark keeps a fixed width,\n * so the row keeps its height and the label its start in every state.\n */\nexport type AppWorkspaceSidebarItemStatusProps = {\n /**\n * A positive number shows a count (above 99 as \"99+\") and sets the label in\n * a stronger weight; `true` shows a quiet dot for new activity that should\n * not draw attention, such as in a muted conversation.\n */\n unread?: number | boolean;\n /** Marks unread items that mention the person with \"@\". */\n mention?: boolean;\n /** Shows a muted bell. */\n muted?: boolean;\n};\nexport type AppWorkspaceNavTreeProps = {\n children: JSX.Element;\n ariaLabel: string;\n selectedId?: string | null;\n expandedIds?: readonly string[];\n defaultExpandedIds?: readonly string[];\n onSelectedIdChange?: (id: string) => void;\n onExpandedIdsChange?: (ids: readonly string[]) => void;\n indented?: boolean;\n /**\n * Lets people reorder `movable` items among their siblings: by dragging on\n * fine pointers and with Alt+ArrowUp/ArrowDown on a focused item. The tree\n * only reports the requested place; the application saves it and renders\n * the new order, and the tree then keeps focus on the moved item.\n */\n onMove?: (move: AppWorkspaceNavTreeMove) => void;\n class?: string;\n};\n/** One requested place for an item among its unchanged siblings. */\nexport type AppWorkspaceNavTreeMove = {\n id: string;\n /** The parent item, unchanged by the move; `null` on the top level. */\n parentId: string | null;\n /** The sibling the item now precedes; `null` when it becomes the last. */\n beforeId: string | null;\n /** The sibling the item now follows; `null` when it becomes the first. */\n afterId: string | null;\n};\nexport type AppWorkspaceNavTreeItemProps = {\n id: string;\n label: JSX.Element;\n children?: JSX.Element;\n href?: string;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onSelect?: (event: MouseEvent) => void;\n disabled?: boolean;\n icon?: string;\n /** Names a meaningful icon for screen readers, such as \"Homepage\"; without it the icon is decorative. */\n iconLabel?: string;\n /** Replaces `icon` while this branch is expanded and makes the icon the disclosure target. */\n expandedIcon?: string;\n meta?: JSX.Element;\n metaVisibility?: AppWorkspaceSidebarAccessoryVisibility;\n actions?: JSX.Element;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n /** With the tree's `onMove`, the item can change its place among its siblings. Other items keep theirs, and no item moves past them. */\n movable?: boolean;\n onDragEnter?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDragOver?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDragLeave?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDrop?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n};\ntype AppWorkspaceNavTreeComponent = ((props: AppWorkspaceNavTreeProps) => JSX.Element) & {\n Item: (props: AppWorkspaceNavTreeItemProps) => JSX.Element;\n};\n\nconst modeAttrs = (mode?: AppWorkspaceSidebarVisibility) => (mode && mode !== \"always\" ? { \"data-sidebar-mode\": mode } : {});\n/** Same rule as `modeAttrs`, for the un-prefixed `data` bag on sidebar items. */\nconst modeData = (mode?: AppWorkspaceSidebarVisibility) => (mode && mode !== \"always\" ? { \"sidebar-mode\": mode } : {});\nconst scrollAttrs = (key?: string | false) => (key ? { \"data-scroll-preserve\": key } : {});\nconst iconClass = (icon: string | undefined, fallback = \"ti-circle\") => (icon?.startsWith(\"ti \") ? icon : `ti ${icon || fallback}`);\n/** A named icon is an image screen readers announce; any other icon is decoration. */\nconst iconAccessibility = (label: string | undefined) => (label ? { role: \"img\" as const, \"aria-label\": label } : { \"aria-hidden\": true });\n\nfunction AppWorkspaceMainPane(props: AppWorkspaceMainPaneProps): JSX.Element {\n return {\n kind: MAIN_PANE,\n props,\n domId: `k2b-workspace-pane-${createUniqueId()}`,\n } satisfies MainPaneSlot as unknown as JSX.Element;\n}\n\nfunction AppWorkspaceMain(props: AppWorkspaceMainProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const resolved = children(() => props.children);\n const values = createMemo(() => flatten(resolved()));\n const paneIds = createMemo(() => {\n const ids = values()\n .filter(mainPaneSlot)\n .map((slot) => slot.props.id);\n assertUniqueStableUiIds(ids, \"AppWorkspace.MainPane id\");\n return ids;\n });\n const regions = createMemo(() => {\n const all = values();\n const primary = all.filter((value) => !mainPaneSlot(value));\n const primaryIndex = all.findIndex((value) => !mainPaneSlot(value));\n let inserted = false;\n const result: Array<{ type: \"primary\"; index: number; children: unknown[] } | { type: \"pane\"; index: number; slot: MainPaneSlot }> = [];\n all.forEach((value, index) => {\n if (mainPaneSlot(value)) {\n result.push({ type: \"pane\", index, slot: value });\n } else if (!inserted) {\n inserted = true;\n result.push({ type: \"primary\", index: primaryIndex, children: primary });\n }\n });\n return result;\n });\n const anchorRegion = createMemo(\n () =>\n regions().find((candidate) => candidate.type === \"primary\") ??\n regions().find((candidate) => candidate.type === \"pane\" && candidate.slot.props.open !== false),\n );\n // Presence of a MainPane slot — not of an *open* one — decides the split\n // layout. Deriving it from `regions()` made a workspace whose panes are all\n // closed fall back to `resolved()`, which renders the raw slot objects.\n const hasPanes = createMemo(() => paneIds().length > 0);\n\n return (\n <div\n class={`k2b-app-workspace__main ${hasPanes() ? \"has-panes\" : \"\"} ${props.class ?? \"\"}`}\n data-mobile-pane={props.mobilePane}\n data-width={props.width === \"content\" ? \"content\" : undefined}\n data-scroll-fade-mode={!hasPanes() && props.scroll !== false && props.scrollFade !== false ? \"both\" : undefined}\n data-scroll={props.scroll === false ? \"false\" : undefined}\n aria-busy={props[\"aria-busy\"]}\n {...scrollAttrs(props.scrollPreserveKey)}\n >\n <Show when={hasPanes()} fallback={resolved() as JSX.Element}>\n <For each={regions()}>\n {(region) => {\n const activeMobilePane = () => {\n const anchor = anchorRegion();\n return props.mobilePane ?? (anchor?.type === \"pane\" ? anchor.slot.props.id : \"main\");\n };\n if (region.type === \"primary\") {\n return (\n <div\n class=\"k2b-app-workspace__main-primary\"\n data-workspace-main-region=\"main\"\n data-workspace-mobile-active={activeMobilePane() === \"main\" ? \"true\" : \"false\"}\n >\n {region.children as JSX.Element}\n </div>\n );\n }\n const pane = region.slot;\n const panelId = assertStableUiId(pane.props.id, \"AppWorkspace.MainPane id\");\n const variable = appWorkspacePanelVariable(\"pane\", panelId);\n const isAnchor = () => region === anchorRegion();\n const resizable = () => !isAnchor() && (pane.props.resizable ?? rootResizable);\n const defaultSize = () => pane.props.defaultSize ?? APP_WORKSPACE_PANE_DEFAULT;\n const minSize = () => pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;\n const maxSize = () => Math.max(minSize(), pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);\n const before = () => region.index < (anchorRegion()?.index ?? 0);\n const handle = () => (\n <ResizeHandle\n kind=\"pane\"\n edge={before() ? \"end\" : \"start\"}\n controls={pane.domId}\n panelId={panelId}\n defaultSize={defaultSize()}\n minSize={minSize()}\n maxSize={maxSize()}\n shadow={pane.props.resizeShadow !== false}\n label={`Resize ${pane.props.label}`}\n />\n );\n return (\n <Show when={pane.props.open !== false}>\n <Show when={resizable() && !before()}>{handle()}</Show>\n <section\n id={pane.domId}\n class={`k2b-app-workspace__main-pane ${isAnchor() ? \"is-primary\" : \"\"} ${pane.props.class ?? \"\"}`}\n aria-label={pane.props.label}\n data-workspace-main-region={pane.props.id}\n data-workspace-mobile-active={activeMobilePane() === pane.props.id ? \"true\" : \"false\"}\n data-workspace-panel-id={panelId}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n data-surface={pane.props.surface === \"navigation\" ? \"navigation\" : undefined}\n data-scroll={pane.props.scroll === false ? \"false\" : undefined}\n data-scroll-fade-mode={pane.props.scroll !== false && pane.props.scrollFade !== false ? \"both\" : undefined}\n style={isAnchor() ? undefined : { \"--k2b-workspace-panel-size\": `var(${variable}, ${defaultSize()}px)` }}\n >\n {pane.props.children}\n </section>\n <Show when={resizable() && before()}>{handle()}</Show>\n </Show>\n );\n }}\n </For>\n </Show>\n </div>\n );\n}\n\nfunction AppWorkspaceDetail(props: AppWorkspaceDetailProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const panelId = () => assertStableUiId(props.id, \"AppWorkspace.Detail id\");\n const domId = () => `k2b-workspace-detail-${panelId()}`;\n const variable = () => appWorkspacePanelVariable(\"detail\", panelId());\n // Cloud's `detailDefaultWidth`. These feed `aria-valuenow` and the\n // `var(…, Npx)` first-paint fallback, so they are behaviour, not taste.\n const widths = { sm: 288, md: 384, lg: 480, xl: 544 };\n const defaultWidth = () => widths[props.width ?? \"md\"] ?? APP_WORKSPACE_DETAIL_DEFAULT;\n const minWidth = () => props.minWidth ?? APP_WORKSPACE_DETAIL_MIN;\n const maxWidth = () => Math.max(minWidth(), props.maxWidth ?? APP_WORKSPACE_DETAIL_MAX);\n const resizable = () => props.resizable ?? rootResizable;\n return (\n <>\n <Show when={resizable()}>\n <ResizeHandle\n kind=\"detail\"\n edge=\"start\"\n controls={domId()}\n panelId={panelId()}\n defaultSize={defaultWidth()}\n minSize={minWidth()}\n maxSize={maxWidth()}\n shadow\n style={{ \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultWidth()}px)` }}\n />\n </Show>\n <aside\n id={domId()}\n class={`k2b-app-workspace__detail ${props.class ?? \"\"}`}\n data-width={props.width ?? \"md\"}\n data-workspace-panel-id={panelId()}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n hidden={!props.open}\n style={{\n \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultWidth()}px)`,\n \"view-transition-name\": props.viewTransitionName,\n }}\n >\n {props.children}\n </aside>\n </>\n );\n}\n\nfunction AppWorkspaceBottomDrawer(props: AppWorkspaceBottomDrawerProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const panelId = () => assertStableUiId(props.id, \"AppWorkspace.BottomDrawer id\");\n const domId = () => `k2b-workspace-drawer-${panelId()}`;\n const variable = () => appWorkspacePanelVariable(\"drawer\", panelId());\n // Cloud's `drawerDefaultHeight`.\n const heights = { sm: 192, md: 240, lg: 320 };\n const defaultHeight = () => heights[props.height ?? \"md\"] ?? APP_WORKSPACE_DRAWER_DEFAULT;\n const minHeight = () => props.minHeight ?? APP_WORKSPACE_DRAWER_MIN;\n const maxHeight = () => Math.max(minHeight(), props.maxHeight ?? APP_WORKSPACE_DRAWER_MAX);\n const resizable = () => props.resizable ?? rootResizable;\n return (\n <>\n <Show when={resizable()}>\n <ResizeHandle\n kind=\"drawer\"\n edge=\"start\"\n controls={domId()}\n panelId={panelId()}\n defaultSize={defaultHeight()}\n minSize={minHeight()}\n maxSize={maxHeight()}\n shadow\n style={{ \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultHeight()}px)` }}\n />\n </Show>\n <aside\n id={domId()}\n class={`k2b-app-workspace__drawer ${props.class ?? \"\"}`}\n data-height={props.height ?? \"md\"}\n data-workspace-panel-id={panelId()}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n hidden={!props.open}\n style={{\n \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultHeight()}px)`,\n \"view-transition-name\": props.viewTransitionName,\n }}\n >\n {props.children}\n </aside>\n </>\n );\n}\n\nfunction AppWorkspaceSidebar(props: AppWorkspaceSidebarProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const resizable = () => props.resizable ?? rootResizable;\n const defaultSize = () => props.defaultSize ?? APP_WORKSPACE_SIDEBAR_DEFAULT;\n const minSize = () => props.minSize ?? (props.collapsible ? APP_WORKSPACE_SIDEBAR_COLLAPSED : APP_WORKSPACE_SIDEBAR_MIN);\n const maxSize = () => props.maxSize ?? APP_WORKSPACE_SIDEBAR_MAX;\n const generatedId = createUniqueId();\n const domId = () => props.id ?? `k2b-workspace-sidebar-${generatedId}`;\n // Hidden navigation is not rendered at all, so its labels are neither shown\n // nor reachable; reading the children lazily keeps them from being created.\n const resolved = children(() => (props.hidden ? undefined : props.children));\n const slots = createMemo(() => flatten(resolved()).filter(sidebarChildSlot));\n const desktop = createMemo(() => slots().find((slot) => slot.kind === SIDEBAR_DESKTOP));\n let aside: HTMLElement | undefined;\n onMount(() => {\n const requestHide = () => props.onHiddenChange?.(true);\n aside?.addEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide);\n onCleanup(() => aside?.removeEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide));\n });\n return (\n <>\n <aside\n ref={aside}\n id={domId()}\n class={`k2b-app-workspace__sidebar ${props.class ?? \"\"}`}\n aria-label={props.label}\n hidden={props.hidden || undefined}\n data-mobile={props.mobile === \"stacked\" ? \"stacked\" : undefined}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n data-workspace-collapsible={props.collapsible ? \"true\" : \"false\"}\n data-workspace-hideable={props.onHiddenChange ? \"true\" : undefined}\n >\n <Show when={!props.hidden}>\n <div class=\"k2b-app-workspace__sidebar-desktop\">{desktop()?.children}</div>\n </Show>\n </aside>\n <Show when={resizable() && !props.hidden}>\n <ResizeHandle\n kind=\"sidebar\"\n edge=\"end\"\n controls={domId()}\n defaultSize={defaultSize()}\n minSize={minSize()}\n maxSize={maxSize()}\n shadow={props.resizeShadow !== false}\n />\n </Show>\n </>\n );\n}\n\nconst AppWorkspaceSidebarDesktop = (props: { children: JSX.Element }): JSX.Element =>\n ({ kind: SIDEBAR_DESKTOP, children: props.children }) as unknown as JSX.Element;\n// Document navigations rebuild the sidebar from the server, so this inline\n// script restores its offset while the document is still parsing: before the\n// first paint, before a view transition can snapshot it, and before any island\n// hydrates. Islands load asynchronously and server-only sidebars never mount,\n// so `onMount` would be too late or never run. The memory is one\n// `sessionStorage` entry per path segment and sidebar position and ends with\n// the tab. A stored offset is applied first; the current item is then kept in\n// view, which is a no-op when the offset already shows it. The frame callback\n// repeats the restore once the whole document is parsed, because content that\n// follows the sidebar can still change its height before the first paint.\nconst SIDEBAR_SCROLL_MEMORY_SCRIPT = [\n \"(function(){\",\n \"var body=document.currentScript&&document.currentScript.previousElementSibling;if(!body)return;\",\n \"var storage;try{storage=window.sessionStorage}catch(_){return}\",\n 'var key=\"k2b-sidebar-scroll:\"+location.pathname.split(\"/\")[1]+\":\"+document.querySelectorAll(\".k2b-app-workspace__sidebar-body\").length;',\n \"var restore=function(){\",\n \"var stored=storage.getItem(key);if(stored!==null)body.scrollTop=Number(stored);\",\n 'var current=body.querySelector(\\'[aria-current=\"page\"]\\');if(current)current.scrollIntoView({block:\"nearest\"});',\n \"};\",\n \"restore();requestAnimationFrame(restore);\",\n \"var frame=0;\",\n 'body.addEventListener(\"scroll\",function(){if(frame)return;frame=requestAnimationFrame(function(){frame=0;try{storage.setItem(key,String(body.scrollTop))}catch(_){}})},{passive:true});',\n \"})();\",\n].join(\"\");\n\nconst AppWorkspaceSidebarBody = (props: AppWorkspaceSidebarBodyProps) => {\n let body!: HTMLDivElement;\n createScrollFade(\n () => body,\n () => props.scrollFade !== false,\n );\n return (\n <>\n <div\n ref={body}\n class={`k2b-app-workspace__sidebar-body ${props.class ?? \"\"}`}\n data-scroll-fade-mode={props.scrollFade !== false ? \"both\" : undefined}\n {...scrollAttrs(props.scrollPreserveKey)}\n {...modeAttrs(props.sidebarMode)}\n >\n {props.children}\n </div>\n <script innerHTML={SIDEBAR_SCROLL_MEMORY_SCRIPT} />\n </>\n );\n};\nconst AppWorkspaceSidebarFooter = (props: AppWorkspaceSidebarContentProps) => (\n <footer class={`k2b-app-workspace__sidebar-footer ${props.class ?? \"\"}`} {...modeAttrs(props.sidebarMode)}>\n {props.children}\n </footer>\n);\nconst AppWorkspaceSidebarSection = (props: AppWorkspaceSidebarSectionProps) => {\n const [expanded, setExpanded] = createSignal(props.defaultOpen ?? true);\n const open = () => !props.collapsible || (props.open ?? expanded());\n const id = `sidebar-section-${createUniqueId()}`;\n const title = () => (\n <>\n <Show when={props.icon}>\n <span aria-hidden=\"true\">\n <i class={iconClass(props.icon)} />\n </span>\n </Show>\n {props.title}\n <Show when={props.count !== undefined}>\n <span class=\"k2b-app-workspace__sidebar-section-count\">{props.count}</span>\n </Show>\n </>\n );\n return (\n <section\n class={`k2b-app-workspace__sidebar-section ${props.class ?? \"\"}`}\n data-collapsible={props.collapsible ? \"true\" : undefined}\n {...modeAttrs(props.sidebarMode)}\n >\n <Show when={props.title || props.actions}>\n <header class=\"k2b-app-workspace__sidebar-section-header\">\n <Show\n when={props.collapsible}\n fallback={\n <Show when={props.title}>\n <h2>{title()}</h2>\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-app-workspace__sidebar-section-toggle\"\n aria-expanded={open()}\n aria-controls={id}\n onClick={() => {\n const next = !open();\n setExpanded(next);\n props.onOpenChange?.(next);\n }}\n >\n {title()}\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={props.actions}>\n <div class=\"k2b-app-workspace__sidebar-section-actions\">{props.actions}</div>\n </Show>\n </header>\n </Show>\n <div id={id} hidden={!open()} class=\"k2b-app-workspace__sidebar-section-content\">\n {props.children}\n </div>\n </section>\n );\n};\n\nconst AppWorkspaceSidebarItemIcon = (props: AppWorkspaceSidebarItemIconProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_ICON }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemLabel = (props: AppWorkspaceSidebarItemLabelProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_LABEL }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemMeta = (props: AppWorkspaceSidebarItemMetaProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_META }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemAction = (props: AppWorkspaceSidebarItemActionProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_ACTION }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemActions = (props: AppWorkspaceSidebarItemActionsProps): JSX.Element => (\n <div class=\"k2b-app-workspace__sidebar-item-actions\" data-visibility={props.visibility === \"hover\" ? \"hover\" : undefined}>\n {props.children}\n </div>\n);\nconst AppWorkspaceSidebarItemStatus = (props: AppWorkspaceSidebarItemStatusProps): JSX.Element => {\n const messages = useUiMessages();\n const count = () => (typeof props.unread === \"number\" && props.unread >= 1 ? Math.floor(props.unread) : 0);\n const dot = () => props.unread === true;\n // The marks are decorative; the row's accessible name gets one phrase instead,\n // which says no more than the \"99+\" a capped count shows.\n const description = () =>\n [\n count() > 99\n ? messages().sidebarUnreadMany\n : count()\n ? messages().sidebarUnread({ count: count() })\n : dot()\n ? messages().sidebarNewActivity\n : \"\",\n props.mention ? messages().sidebarMentioned : \"\",\n props.muted ? messages().sidebarMuted : \"\",\n ]\n .filter(Boolean)\n .join(\", \");\n // The unread slot stays reserved at the end, and the marks that change most\n // often sit outermost, so new activity or a mention never moves another mark.\n return (\n <Show when={description()}>\n <span class=\"k2b-app-workspace__sidebar-status\" data-unread={count() ? \"count\" : dot() ? \"dot\" : undefined}>\n <Show when={props.mention}>\n <span class=\"k2b-app-workspace__sidebar-status-mention\" aria-hidden=\"true\">\n @\n </span>\n </Show>\n <Show when={props.muted}>\n <span class=\"k2b-app-workspace__sidebar-status-muted\" aria-hidden=\"true\">\n <i class=\"ti ti-bell-off\" />\n </span>\n </Show>\n <span class=\"k2b-app-workspace__sidebar-status-unread\" aria-hidden=\"true\">\n <Show\n when={count()}\n fallback={\n <Show when={dot()}>\n <span class=\"k2b-app-workspace__sidebar-status-dot\" />\n </Show>\n }\n >\n <span class=\"k2b-app-workspace__sidebar-status-count\" data-mention={props.mention ? \"true\" : undefined}>\n {count() > 99 ? \"99+\" : count()}\n </span>\n </Show>\n </span>\n <span class=\"k2b-sr-only\">, {description()}</span>\n </span>\n </Show>\n );\n};\n\ntype AppWorkspaceSidebarRowProps = {\n children: JSX.Element;\n actions?: JSX.Element;\n hasActions: boolean;\n href?: string;\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onClick?: (event: MouseEvent) => void;\n active?: boolean;\n activeClass?: string;\n disabled?: boolean;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n depth?: number;\n tabIndex?: number;\n data?: Record<string, string | number | boolean | null | undefined>;\n};\n\n/** Shared visual and semantic row frame for flat sidebar items and tree items. */\nfunction AppWorkspaceSidebarRow(props: AppWorkspaceSidebarRowProps): JSX.Element {\n const className = () =>\n `k2b-app-workspace__sidebar-item ${props.hasActions ? \"has-action\" : \"\"} ${props.active ? (props.activeClass ?? \"is-active\") : \"\"} ${props.class ?? \"\"}`;\n const data = () =>\n Object.fromEntries(\n Object.entries(props.data ?? {})\n .filter(([, value]) => value !== undefined && value !== null)\n .map(([key, value]) => [`data-${key}`, String(value)]),\n );\n const common = () => ({\n class: className(),\n title: props.title,\n \"data-tone\": props.tone,\n style: {\n \"view-transition-name\": props.viewTransitionName,\n \"--k2b-sidebar-item-depth\": props.depth === undefined ? undefined : String(Math.max(0, props.depth)),\n },\n ...data(),\n });\n const current = () => (props.active ? (\"page\" as const) : undefined);\n\n const Control = (control: { grouped: boolean }) => {\n const attrs = () => (control.grouped ? { class: \"k2b-app-workspace__sidebar-item-main\" } : common());\n return (\n <Show\n when={Boolean(props.href && !props.disabled)}\n fallback={\n <button type=\"button\" {...attrs()} tabIndex={props.tabIndex} disabled={props.disabled} onClick={props.onClick}>\n {props.children}\n </button>\n }\n >\n <Show\n when={props.navigation === \"enhanced\" && Boolean(props.onNavigate)}\n fallback={\n <a href={props.href} {...attrs()} tabIndex={props.tabIndex} aria-current={current()} onClick={props.onClick}>\n {props.children}\n </a>\n }\n >\n <Link\n href={props.href!}\n {...attrs()}\n tabIndex={props.tabIndex}\n aria-current={current()}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n >\n {props.children}\n </Link>\n </Show>\n </Show>\n );\n };\n return (\n <Show when={props.hasActions} fallback={<Control grouped={false} />}>\n <div {...common()} data-disabled={props.disabled ? \"true\" : undefined}>\n <Control grouped />\n {props.actions}\n </div>\n </Show>\n );\n}\n\nfunction AppWorkspaceSidebarItem(props: AppWorkspaceSidebarItemProps): JSX.Element {\n const messages = useUiMessages();\n const resolved = children(() => props.children);\n const resolvedActions = children(() => props.actions);\n const values = createMemo(() => flatten(resolved()));\n const slots = createMemo(() => values().filter(sidebarItemSlot));\n const iconSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_ICON) as\n | (AppWorkspaceSidebarItemIconProps & { kind: typeof SIDEBAR_ITEM_ICON })\n | undefined,\n );\n const labelSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_LABEL) as\n | (AppWorkspaceSidebarItemLabelProps & { kind: typeof SIDEBAR_ITEM_LABEL })\n | undefined,\n );\n const metaSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_META) as\n | (AppWorkspaceSidebarItemMetaProps & { kind: typeof SIDEBAR_ITEM_META })\n | undefined,\n );\n const actionSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_ACTION) as\n | (AppWorkspaceSidebarItemActionProps & { kind: typeof SIDEBAR_ITEM_ACTION })\n | undefined,\n );\n const legacy = createMemo(() => values().filter((value) => !sidebarItemSlot(value)));\n const label = () => labelSlot()?.children ?? (legacy().length === 1 ? legacy()[0] : legacy());\n const icon = () => iconSlot()?.icon ?? props.icon;\n const iconContent = () => iconSlot()?.children;\n // Resolved first, so a component that renders nothing, such as a status with\n // nothing to show, leaves no empty slot in the browser either.\n const meta = children(() => metaSlot()?.children ?? props.meta);\n const hasMeta = () => meta.toArray().some(Boolean);\n const metaId = createUniqueId();\n const metaVisibility = () => metaSlot()?.visibility ?? props.metaVisibility;\n const customActions = () => resolvedActions();\n const hasCustomActions = () => Boolean(customActions());\n const hasAction = () => Boolean(actionSlot() || props.actionIcon || hasCustomActions() || props.preview);\n const mainContent = (\n <>\n <Show when={iconContent() || icon()}>\n <span class=\"k2b-app-workspace__sidebar-item-icon\" aria-hidden=\"true\">\n {iconContent() ?? <i class={iconClass(icon())} />}\n </span>\n </Show>\n {/* The inner text span is what the marquee translates; the controller\n measures its `scrollWidth` against the clipping outer span. */}\n <span class=\"k2b-app-workspace__sidebar-item-copy\">\n <Show when={props.context || props.contextMeta}>\n <span class=\"k2b-app-workspace__sidebar-item-context\">\n <span class=\"k2b-app-workspace__sidebar-item-context-label\">{props.context}</span>\n <Show when={props.contextMeta}>\n <span class=\"k2b-app-workspace__sidebar-item-context-meta\">{props.contextMeta}</span>\n </Show>\n </span>\n </Show>\n <span\n class=\"k2b-app-workspace__sidebar-item-label\"\n data-marquee={(labelSlot()?.marquee ?? (props.variant ?? \"row\") === \"row\") ? \"true\" : \"false\"}\n >\n <span class=\"k2b-app-workspace__sidebar-item-label-text\">{label() as JSX.Element}</span>\n </span>\n <Show when={props.description}>\n <span class=\"k2b-app-workspace__sidebar-item-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={hasMeta()}>\n <span\n class=\"k2b-app-workspace__sidebar-item-meta\"\n id={props.preview?.trigger === \"row\" ? metaId : undefined}\n data-visibility={metaVisibility() === \"hover\" ? \"hover\" : undefined}\n >\n {meta()}\n </span>\n </Show>\n </>\n );\n const singleAction = () => {\n const label = () => actionSlot()?.label ?? props.actionLabel ?? messages().rowAction;\n const select = (event: MouseEvent) => {\n event.stopPropagation();\n if (actionSlot()?.disabled) {\n event.preventDefault();\n return;\n }\n if (!actionSlot()?.href) event.preventDefault();\n actionSlot()?.onSelect?.(event);\n props.onActionClick?.(event);\n };\n const content = () => actionSlot()?.children ?? <i class={iconClass(actionSlot()?.icon ?? props.actionIcon, \"ti-dots\")} />;\n return (\n <Show when={Boolean(actionSlot() || props.actionIcon)}>\n <Show\n when={actionSlot()?.href && !actionSlot()?.disabled}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-app-workspace__sidebar-item-action\"\n disabled={actionSlot()?.disabled}\n data-visibility={actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined}\n aria-label={label()}\n onClick={select}\n >\n {content()}\n </button>\n }\n >\n <a\n href={actionSlot()?.href}\n class=\"k2b-app-workspace__sidebar-item-action\"\n data-visibility={actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined}\n aria-label={label()}\n onClick={select}\n >\n {content()}\n </a>\n </Show>\n </Show>\n );\n };\n const actions = () => (\n <>\n {customActions()}\n {singleAction()}\n <Show when={props.preview}>\n {(preview) => (\n <SidebarItemPreview\n label={preview().label}\n trigger={preview().trigger}\n align={preview().align}\n viewportSize={preview().viewportSize}\n describedBy={hasMeta() ? metaId : undefined}\n onOpenChange={preview().onOpenChange}\n >\n {preview().content}\n </SidebarItemPreview>\n )}\n </Show>\n </>\n );\n return (\n <AppWorkspaceSidebarRow\n hasActions={hasAction()}\n href={props.href}\n navigation={props.navigation}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n active={props.active}\n activeClass={props.activeClass}\n disabled={props.disabled}\n tone={props.tone}\n title={props.title}\n viewTransitionName={props.viewTransitionName}\n class={props.class}\n depth={props.depth}\n actions={actions()}\n data={{\n ...props.data,\n ...modeData(props.sidebarMode),\n variant: props.variant ?? \"row\",\n \"has-actions\": hasCustomActions() ? \"true\" : undefined,\n \"action-visibility\": actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined,\n }}\n >\n {mainContent}\n </AppWorkspaceSidebarRow>\n );\n}\n\nconst navTreeItems = (value: unknown): NavTreeItemSlot[] => flatten(value).filter(navTreeItemSlot);\n\nconst AppWorkspaceNavTreeItem = (props: AppWorkspaceNavTreeItemProps): JSX.Element =>\n ({ kind: NAV_TREE_ITEM, ...props }) as unknown as JSX.Element;\n\ntype NavTreeDragEvent = DragEvent & { currentTarget: HTMLDivElement; target: Element };\nconst NAV_TREE_DRAG_TYPE = \"application/x-k2b-nav-tree-item\";\n\nconst callDragHandler = (handler: JSX.EventHandlerUnion<HTMLDivElement, DragEvent> | undefined, event: NavTreeDragEvent) => {\n if (typeof handler === \"function\") handler(event);\n else handler?.[0](handler[1], event);\n};\n\n/**\n * The move that puts the sibling at `from` into the gap before `slot`\n * (`siblings.length` is the gap after the last one), or `null` when its place\n * would not change or it would pass an item that is not movable.\n */\nconst navTreeMove = (\n siblings: readonly NavTreeItemSlot[],\n from: number,\n slot: number,\n parentId: string | null,\n): AppWorkspaceNavTreeMove | null => {\n if (from < 0 || slot < 0 || slot > siblings.length || slot === from || slot === from + 1) return null;\n const passed = slot < from ? siblings.slice(slot, from) : siblings.slice(from + 1, slot);\n if (passed.some((sibling) => !sibling.movable)) return null;\n return { id: siblings[from]!.id, parentId, beforeId: siblings[slot]?.id ?? null, afterId: siblings[slot - 1]?.id ?? null };\n};\n\nconst AppWorkspaceNavTree = ((props: AppWorkspaceNavTreeProps) => {\n let root: HTMLDivElement | undefined;\n const resolved = children(() => props.children);\n const roots = createMemo(() => navTreeItems(resolved()));\n const [uncontrolledExpandedIds, setUncontrolledExpandedIds] = createSignal<string[]>([...new Set(props.defaultExpandedIds ?? [])]);\n const [focusedId, setFocusedId] = createSignal<string | null>(props.selectedId ?? null);\n const expandedIds = createMemo(() => new Set(props.expandedIds ?? uncontrolledExpandedIds()));\n const isExpanded = (id: string) => expandedIds().has(id);\n\n const setExpanded = (id: string, expanded: boolean) => {\n const next = new Set(expandedIds());\n if (expanded) next.add(id);\n else next.delete(id);\n const value = [...next];\n if (props.expandedIds === undefined) setUncontrolledExpandedIds(value);\n props.onExpandedIdsChange?.(value);\n };\n\n const visibleIds = createMemo(() => {\n const result: string[] = [];\n const visit = (items: readonly NavTreeItemSlot[]) => {\n for (const item of items) {\n if (item.disabled) continue;\n result.push(item.id);\n const nested = navTreeItems(item.children);\n if (nested.length > 0 && isExpanded(item.id)) visit(nested);\n }\n };\n visit(roots());\n return result;\n });\n\n const tabStopId = () => {\n const visible = visibleIds();\n const focused = focusedId();\n if (focused && visible.includes(focused)) return focused;\n if (props.selectedId && visible.includes(props.selectedId)) return props.selectedId;\n return visible[0] ?? null;\n };\n\n const treeItemElements = () =>\n Array.from(root?.querySelectorAll<HTMLElement>(\"[data-k2b-nav-tree-id]\") ?? []).filter(\n (element) => element.getAttribute(\"aria-disabled\") !== \"true\",\n );\n const focusItem = (id: string | null) => {\n if (!id) return;\n const element = treeItemElements().find((candidate) => candidate.dataset.k2bNavTreeId === id);\n element?.focus({ preventScroll: true });\n };\n\n // Reordering: the dragged item and the gap the pointer marks. The application renders the new\n // order; the item moved by keyboard takes focus back when its row mounts or changes place.\n const [dragged, setDragged] = createSignal<{ id: string; parentId: string | null } | null>(null);\n const [dropTarget, setDropTarget] = createSignal<{ id: string; side: \"before\" | \"after\" } | null>(null);\n let claimedDragOver: DragEvent | null = null;\n let refocusId: string | null = null;\n const endDrag = () => {\n setDragged(null);\n setDropTarget(null);\n };\n const requestMove = (move: AppWorkspaceNavTreeMove | null, keepFocus: boolean) => {\n if (!move || !props.onMove) return;\n refocusId = keepFocus ? move.id : null;\n props.onMove(move);\n };\n\n // Items arrive through an accessor so a changed nested list reconciles rows by identity instead of rebuilding the list.\n const renderItems = (siblings: () => NavTreeItemSlot[], depth: number, parentId?: string): JSX.Element => (\n <For each={siblings()}>\n {(item, place) => {\n const nested = createMemo(() => navTreeItems(item.children));\n const hasChildren = () => nested().length > 0;\n const selected = () => props.selectedId === item.id;\n const siblingIndex = (id: string) => siblings().findIndex((sibling) => sibling.id === id);\n const movable = () => Boolean(props.onMove && item.movable && !item.disabled);\n let treeItem: HTMLDivElement | undefined;\n const ownRow = () => treeItem?.firstElementChild as HTMLElement | null | undefined;\n\n // A new row for the moved item, or the same row at its new place: moving a focused row drops its focus.\n createEffect(() => {\n place();\n if (refocusId !== item.id) return;\n queueMicrotask(() => {\n if (refocusId !== item.id || !treeItem?.isConnected) return;\n const active = treeItem.ownerDocument.activeElement;\n if (!active || active === treeItem.ownerDocument.body) treeItem.focus({ preventScroll: true });\n });\n });\n\n const activate = (event: MouseEvent) => {\n if (item.disabled) return;\n treeItem?.focus({ preventScroll: true });\n setFocusedId(item.id);\n if (hasChildren() && !item.href && !item.onSelect && !props.onSelectedIdChange) {\n setExpanded(item.id, !isExpanded(item.id));\n return;\n }\n props.onSelectedIdChange?.(item.id);\n item.onSelect?.(event);\n };\n const toggle = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (!item.disabled && hasChildren()) setExpanded(item.id, !isExpanded(item.id));\n };\n const onRowClick = (event: MouseEvent) => {\n if ((event.target as Element | null)?.closest(\"[data-k2b-nav-tree-toggle]\")) {\n toggle(event);\n return;\n }\n activate(event);\n };\n const rowControl = () => {\n const firstChild = treeItem?.firstElementChild as HTMLElement | null | undefined;\n if (!firstChild?.classList.contains(\"has-action\")) return firstChild;\n return firstChild.firstElementChild as HTMLElement | null;\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.target !== event.currentTarget) return;\n if (\n event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey &&\n (event.key === \"ArrowUp\" || event.key === \"ArrowDown\")\n ) {\n if (!movable()) return;\n event.preventDefault();\n const from = siblingIndex(item.id);\n requestMove(navTreeMove(siblings(), from, event.key === \"ArrowUp\" ? from - 1 : from + 2, parentId ?? null), true);\n return;\n }\n if (event.altKey || event.ctrlKey || event.metaKey) return;\n const items = treeItemElements();\n const index = items.indexOf(event.currentTarget as HTMLElement);\n if (event.key === \"ArrowDown\" && index >= 0) {\n event.preventDefault();\n items[Math.min(items.length - 1, index + 1)]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"ArrowUp\" && index >= 0) {\n event.preventDefault();\n items[Math.max(0, index - 1)]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n items[0]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"End\") {\n event.preventDefault();\n items.at(-1)?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"ArrowRight\" && hasChildren()) {\n event.preventDefault();\n if (!isExpanded(item.id)) setExpanded(item.id, true);\n else queueMicrotask(() => focusItem(nested()[0]?.id ?? null));\n return;\n }\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n if (hasChildren() && isExpanded(item.id)) setExpanded(item.id, false);\n else focusItem(parentId ?? null);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n rowControl()?.click();\n }\n };\n const usesIconDisclosure = () => hasChildren() && Boolean(item.icon && item.expandedIcon);\n const rowIcon = () => (usesIconDisclosure() && isExpanded(item.id) ? item.expandedIcon : item.icon);\n const rowContent = (\n <>\n <Show when={rowIcon()}>\n <span\n class=\"k2b-app-workspace__sidebar-item-icon\"\n data-k2b-nav-tree-toggle={usesIconDisclosure() ? \"\" : undefined}\n {...iconAccessibility(item.iconLabel)}\n >\n <i class={iconClass(rowIcon())} />\n </span>\n </Show>\n <span class=\"k2b-app-workspace__sidebar-item-label\">\n <span class=\"k2b-app-workspace__sidebar-item-label-text\">{item.label}</span>\n </span>\n <Show when={item.meta !== undefined}>\n <span\n class={`k2b-app-workspace__sidebar-item-meta ${hasChildren() ? \"\" : \"k2b-app-workspace__nav-tree-leaf-meta\"}`}\n data-visibility={item.metaVisibility === \"hover\" ? \"hover\" : undefined}\n >\n {item.meta}\n </span>\n </Show>\n <Show when={hasChildren() && !usesIconDisclosure()}>\n <span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\">\n <i class={`ti ${isExpanded(item.id) ? \"ti-chevron-down\" : \"ti-chevron-right\"}`} />\n </span>\n </Show>\n </>\n );\n const row = () => (\n <AppWorkspaceSidebarRow\n hasActions={Boolean(item.actions)}\n href={item.href}\n navigation={item.navigation}\n replace={item.replace}\n scroll={item.scroll}\n onNavigate={item.onNavigate}\n onClick={onRowClick}\n active={selected()}\n disabled={item.disabled}\n tone={item.tone}\n title={item.title}\n viewTransitionName={item.viewTransitionName}\n class={`k2b-app-workspace__nav-tree-row ${item.class ?? \"\"}`}\n depth={props.indented === false ? 0 : depth}\n tabIndex={-1}\n actions={item.actions}\n data={{ \"has-actions\": item.actions ? \"true\" : undefined }}\n >\n {rowContent}\n </AppWorkspaceSidebarRow>\n );\n\n // A gap is offered only next to a sibling's own row, never over its sub-items.\n const dropMove = (event: DragEvent): { side: \"before\" | \"after\"; move: AppWorkspaceNavTreeMove } | null => {\n const drag = dragged();\n const row = ownRow();\n if (!drag || !event.dataTransfer?.types.includes(NAV_TREE_DRAG_TYPE)) return null;\n if (drag.parentId !== (parentId ?? null) || drag.id === item.id || !row?.contains(event.target as Node)) return null;\n const rect = row.getBoundingClientRect();\n const side = event.clientY < rect.top + rect.height / 2 ? \"before\" : \"after\";\n const slot = siblingIndex(item.id) + (side === \"after\" ? 1 : 0);\n const move = navTreeMove(siblings(), siblingIndex(drag.id), slot, parentId ?? null);\n return move ? { side, move } : null;\n };\n const onDragStart = (event: DragEvent) => {\n const row = ownRow();\n if (!movable() || !row?.contains(event.target as Node)) return;\n event.stopPropagation();\n setDragged({ id: item.id, parentId: parentId ?? null });\n if (!event.dataTransfer) return;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(NAV_TREE_DRAG_TYPE, item.id);\n const rect = row.getBoundingClientRect();\n event.dataTransfer.setDragImage(row, event.clientX - rect.left, event.clientY - rect.top);\n };\n const onDragOver = (event: NavTreeDragEvent) => {\n callDragHandler(item.onDragOver, event);\n const target = dropMove(event);\n if (!target) return;\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = \"move\";\n claimedDragOver = event;\n setDropTarget({ id: item.id, side: target.side });\n };\n const onDrop = (event: NavTreeDragEvent) => {\n callDragHandler(item.onDrop, event);\n const target = dropMove(event);\n if (!target) return;\n event.preventDefault();\n event.stopPropagation();\n endDrag();\n requestMove(target.move, false);\n };\n\n return (\n <div\n ref={treeItem}\n class=\"k2b-app-workspace__nav-tree-node\"\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-setsize={siblings().length}\n aria-posinset={place() + 1}\n aria-selected={selected()}\n aria-expanded={hasChildren() ? isExpanded(item.id) : undefined}\n aria-disabled={item.disabled ? \"true\" : undefined}\n tabIndex={item.disabled ? -1 : tabStopId() === item.id ? 0 : -1}\n draggable={movable() ? true : undefined}\n data-k2b-nav-tree-id={item.id}\n data-k2b-nav-tree-parent-id={parentId}\n data-k2b-nav-tree-dragging={dragged()?.id === item.id ? \"\" : undefined}\n data-k2b-nav-tree-drop={dropTarget()?.id === item.id ? dropTarget()!.side : undefined}\n style={{ \"--k2b-nav-tree-depth\": String(props.indented === false ? 0 : depth) }}\n onFocus={() => setFocusedId(item.id)}\n onKeyDown={onKeyDown}\n onDragStart={onDragStart}\n onDragEnter={item.onDragEnter}\n onDragOver={onDragOver}\n onDragLeave={item.onDragLeave}\n onDrop={onDrop}\n >\n {row()}\n <Show when={hasChildren() && isExpanded(item.id)}>\n <div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">\n {renderItems(nested, depth + 1, item.id)}\n </div>\n </Show>\n </div>\n );\n }}\n </For>\n );\n\n // Any other click or focus is the person's choice; only the moved item itself keeps its claim.\n const forgetRefocus = (event: Event) => {\n if (event.type === \"pointerdown\" || (event.target as HTMLElement | null)?.dataset?.k2bNavTreeId !== refocusId) refocusId = null;\n };\n // A row replaced during a drag never receives its dragend; the next pointer movement means the drag is over.\n const forgetDrag = () => {\n if (dragged()) endDrag();\n };\n onMount(() => {\n const doc = root?.ownerDocument;\n doc?.addEventListener(\"pointerdown\", forgetRefocus, true);\n doc?.addEventListener(\"focusin\", forgetRefocus, true);\n doc?.addEventListener(\"pointermove\", forgetDrag, true);\n onCleanup(() => {\n doc?.removeEventListener(\"pointerdown\", forgetRefocus, true);\n doc?.removeEventListener(\"focusin\", forgetRefocus, true);\n doc?.removeEventListener(\"pointermove\", forgetDrag, true);\n });\n });\n\n return (\n <div\n ref={root}\n class={`k2b-app-workspace__nav-tree ${props.class ?? \"\"}`}\n role=\"tree\"\n aria-label={props.ariaLabel}\n onDragOver={(event) => {\n // Runs after the rows: a position no row claimed shows no gap.\n if (claimedDragOver !== event) setDropTarget(null);\n }}\n onDragLeave={(event) => {\n if (!root?.contains(event.relatedTarget as Node | null)) setDropTarget(null);\n }}\n onDragEnd={endDrag}\n >\n {renderItems(roots, 0)}\n </div>\n );\n}) as AppWorkspaceNavTreeComponent;\n\nAppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;\n\nconst AppWorkspaceSidebarIconGrid = (props: AppWorkspaceSidebarIconGridProps) => (\n <section class={`k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? \"\"}`} {...modeAttrs(props.sidebarMode)}>\n <Show when={props.title}>{(title) => <h2>{title()}</h2>}</Show>\n <div class=\"k2b-app-workspace__sidebar-icon-grid\" data-columns={props.columns ?? 2}>\n {props.children}\n </div>\n </section>\n);\n\nconst AppWorkspaceSidebarIconAction = (props: AppWorkspaceSidebarIconActionProps) => {\n const content = <i class={iconClass(props.icon)} aria-hidden=\"true\" />;\n const attrs = () => ({\n class: `k2b-app-workspace__sidebar-icon-action ${props.active ? \"is-active\" : \"\"}`,\n title: props.label,\n \"aria-label\": props.label,\n \"data-tone\": props.tone,\n style: { \"view-transition-name\": props.viewTransitionName },\n ...modeAttrs(props.sidebarMode),\n });\n if (!props.href || props.disabled)\n return (\n <button type=\"button\" {...attrs()} disabled={props.disabled} onClick={props.onClick}>\n {content}\n </button>\n );\n if (props.navigation !== \"enhanced\" || !props.onNavigate)\n return (\n <a href={props.href} {...attrs()} onClick={props.onClick}>\n {content}\n </a>\n );\n return (\n <Link\n href={props.href}\n {...attrs()}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n >\n {content}\n </Link>\n );\n};\n\ntype AppWorkspaceComponent = ((props: AppWorkspaceProps) => JSX.Element) & {\n LayoutStateProvider: (props: AppWorkspaceLayoutStateProviderProps) => JSX.Element;\n Content: (props: AppWorkspaceContentProps) => JSX.Element;\n Main: (props: AppWorkspaceMainProps) => JSX.Element;\n MainPane: (props: AppWorkspaceMainPaneProps) => JSX.Element;\n Detail: (props: AppWorkspaceDetailProps) => JSX.Element;\n BottomDrawer: (props: AppWorkspaceBottomDrawerProps) => JSX.Element;\n Sidebar: (props: AppWorkspaceSidebarProps) => JSX.Element;\n SidebarDesktop: (props: { children: JSX.Element }) => JSX.Element;\n SidebarSection: (props: AppWorkspaceSidebarSectionProps) => JSX.Element;\n SidebarBody: (props: AppWorkspaceSidebarBodyProps) => JSX.Element;\n SidebarFooter: (props: AppWorkspaceSidebarContentProps) => JSX.Element;\n SidebarItem: (props: AppWorkspaceSidebarItemProps) => JSX.Element;\n SidebarItemIcon: (props: AppWorkspaceSidebarItemIconProps) => JSX.Element;\n SidebarItemLabel: (props: AppWorkspaceSidebarItemLabelProps) => JSX.Element;\n SidebarItemMeta: (props: AppWorkspaceSidebarItemMetaProps) => JSX.Element;\n SidebarItemAction: (props: AppWorkspaceSidebarItemActionProps) => JSX.Element;\n SidebarItemActions: (props: AppWorkspaceSidebarItemActionsProps) => JSX.Element;\n SidebarItemStatus: (props: AppWorkspaceSidebarItemStatusProps) => JSX.Element;\n NavTree: AppWorkspaceNavTreeComponent;\n SidebarIconGrid: (props: AppWorkspaceSidebarIconGridProps) => JSX.Element;\n SidebarIconAction: (props: AppWorkspaceSidebarIconActionProps) => JSX.Element;\n};\n\nconst AppWorkspace = ((props: AppWorkspaceProps) => {\n let root: HTMLDivElement | undefined;\n const serverLayoutState = useContext(LayoutStateContext);\n const initialLayoutState = () => props.layoutState?.() ?? serverLayoutState;\n\n // The resize handles are inert markup until the controller is attached, so\n // the workspace attaches it itself and scopes it to this root. `onMount`\n // never runs during SSR, and the disposer removes every listener. A host\n // shell may own one document-level controller for SSR and hydrated roots;\n // its marker keeps controller ownership singular without app-level props.\n onMount(() => {\n if (props.controller === false || !root || root.closest(\"[data-k2b-app-workspace-controller]\")) return;\n onCleanup(\n installAppWorkspaceController({\n root,\n readState: () => (props.layoutState ? props.layoutState() : serverLayoutState),\n writeState: (state) => props.onLayoutChange?.(state),\n }),\n );\n });\n\n return (\n <ResizeContext.Provider value={props.resizable !== false}>\n <div\n ref={root}\n class={`k2b-app-workspace ${props.class ?? \"\"}`}\n data-k2b-app-workspace\n data-mobile-surface={props.mobileSurface}\n data-sidebar-collapsed={\n initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed)\n }\n data-workspace-resizable={props.resizable === false ? \"false\" : \"true\"}\n style={appWorkspaceLayoutStyle(initialLayoutState())}\n >\n {props.children}\n </div>\n </ResizeContext.Provider>\n );\n}) as AppWorkspaceComponent;\n\nAppWorkspace.LayoutStateProvider = (props) => (\n <LayoutStateContext.Provider value={props.state ?? null}>{props.children}</LayoutStateContext.Provider>\n);\nAppWorkspace.Content = (props) => <div class={`k2b-app-workspace__content ${props.class ?? \"\"}`}>{props.children}</div>;\nAppWorkspace.Main = AppWorkspaceMain;\nAppWorkspace.MainPane = AppWorkspaceMainPane;\nAppWorkspace.Detail = AppWorkspaceDetail;\nAppWorkspace.BottomDrawer = AppWorkspaceBottomDrawer;\nAppWorkspace.Sidebar = AppWorkspaceSidebar;\nAppWorkspace.SidebarDesktop = AppWorkspaceSidebarDesktop;\nAppWorkspace.SidebarSection = AppWorkspaceSidebarSection;\nAppWorkspace.SidebarBody = AppWorkspaceSidebarBody;\nAppWorkspace.SidebarFooter = AppWorkspaceSidebarFooter;\nAppWorkspace.SidebarItem = AppWorkspaceSidebarItem;\nAppWorkspace.SidebarItemIcon = AppWorkspaceSidebarItemIcon;\nAppWorkspace.SidebarItemLabel = AppWorkspaceSidebarItemLabel;\nAppWorkspace.SidebarItemMeta = AppWorkspaceSidebarItemMeta;\nAppWorkspace.SidebarItemAction = AppWorkspaceSidebarItemAction;\nAppWorkspace.SidebarItemActions = AppWorkspaceSidebarItemActions;\nAppWorkspace.SidebarItemStatus = AppWorkspaceSidebarItemStatus;\nAppWorkspace.NavTree = AppWorkspaceNavTree;\nAppWorkspace.SidebarIconGrid = AppWorkspaceSidebarIconGrid;\nAppWorkspace.SidebarIconAction = AppWorkspaceSidebarIconAction;\n\nexport default AppWorkspace;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["layout/AppWorkspace.tsx"],"sourcesContent":["import { Link, type LinkNavigateEvent, type NavigationScrollMode } from \"@k2b/ssr/nav\";\nimport {\n children,\n createContext,\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n type JSX,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n useContext,\n} from \"solid-js\";\nimport { IconButton } from \"../actions/Button\";\nimport {\n APP_WORKSPACE_DETAIL_CLOSE_EVENT,\n APP_WORKSPACE_DETAIL_STEP_EVENT,\n APP_WORKSPACE_SIDEBAR_HIDE_EVENT,\n installAppWorkspaceController,\n} from \"./app-workspace-controller\";\nimport {\n APP_WORKSPACE_DETAIL_DEFAULT,\n APP_WORKSPACE_DETAIL_MAX,\n APP_WORKSPACE_DETAIL_MIN,\n APP_WORKSPACE_DRAWER_DEFAULT,\n APP_WORKSPACE_DRAWER_MAX,\n APP_WORKSPACE_DRAWER_MIN,\n APP_WORKSPACE_PANE_DEFAULT,\n APP_WORKSPACE_PANE_MAX,\n APP_WORKSPACE_PANE_MIN,\n APP_WORKSPACE_SIDEBAR_COLLAPSED,\n APP_WORKSPACE_SIDEBAR_DEFAULT,\n APP_WORKSPACE_SIDEBAR_MAX,\n APP_WORKSPACE_SIDEBAR_MIN,\n type AppWorkspaceLayoutState,\n appWorkspaceLayoutStyle,\n appWorkspacePanelVariable,\n} from \"./app-workspace-state\";\nimport { PageTitle, usePageTrail } from \"./PageTitle\";\nimport type { ScrollAreaProps } from \"./ScrollArea\";\nimport { SidebarItemPreview } from \"./SidebarItemPreview\";\nimport { createScrollFade } from \"./scroll-fade\";\nimport { assertStableUiId, assertUniqueStableUiIds } from \"./stable-id\";\nimport { useWorkspaceMessages } from \"./workspace-messages\";\n\nconst ResizeContext = createContext(true);\n/** The enclosing workspace: its head names the sidebar, and a nested workspace leaves the page title to it. */\nconst WorkspaceContext = createContext<{ sidebarId: string; setSidebarId: (id: string) => void }>();\nconst LayoutStateContext = createContext<AppWorkspaceLayoutState | null>(null);\nconst MAIN_PANE = Symbol(\"AppWorkspace.MainPane\");\nconst SIDEBAR_DESKTOP = Symbol(\"AppWorkspace.SidebarDesktop\");\nconst SIDEBAR_ITEM_ICON = Symbol(\"AppWorkspace.SidebarItemIcon\");\nconst SIDEBAR_ITEM_LABEL = Symbol(\"AppWorkspace.SidebarItemLabel\");\nconst SIDEBAR_ITEM_META = Symbol(\"AppWorkspace.SidebarItemMeta\");\nconst SIDEBAR_ITEM_ACTION = Symbol(\"AppWorkspace.SidebarItemAction\");\nconst NAV_TREE_ITEM = Symbol(\"AppWorkspace.NavTree.Item\");\n\ntype MainPaneSlot = {\n kind: typeof MAIN_PANE;\n props: AppWorkspaceMainPaneProps;\n domId: string;\n};\ntype SidebarChildSlot = { kind: typeof SIDEBAR_DESKTOP; children: JSX.Element };\ntype SidebarItemSlot =\n | (AppWorkspaceSidebarItemIconProps & { kind: typeof SIDEBAR_ITEM_ICON })\n | (AppWorkspaceSidebarItemLabelProps & { kind: typeof SIDEBAR_ITEM_LABEL })\n | (AppWorkspaceSidebarItemMetaProps & { kind: typeof SIDEBAR_ITEM_META })\n | (AppWorkspaceSidebarItemActionProps & { kind: typeof SIDEBAR_ITEM_ACTION });\ntype NavTreeItemSlot = AppWorkspaceNavTreeItemProps & { kind: typeof NAV_TREE_ITEM };\n\nconst flatten = (value: unknown): unknown[] => {\n // Solid control-flow components such as <For> expose their rendered value\n // through an accessor. Compound slots may therefore be nested behind a\n // function even after `children()` resolves the outer collection.\n if (typeof value === \"function\") return flatten(value());\n if (Array.isArray(value)) return value.flatMap(flatten);\n return value === null || value === undefined || typeof value === \"boolean\" ? [] : [value];\n};\nconst mainPaneSlot = (value: unknown): value is MainPaneSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as MainPaneSlot).kind === MAIN_PANE);\nconst sidebarChildSlot = (value: unknown): value is SidebarChildSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as SidebarChildSlot).kind === SIDEBAR_DESKTOP);\nconst sidebarItemSlot = (value: unknown): value is SidebarItemSlot =>\n Boolean(\n value &&\n typeof value === \"object\" &&\n \"kind\" in value &&\n [SIDEBAR_ITEM_ICON, SIDEBAR_ITEM_LABEL, SIDEBAR_ITEM_META, SIDEBAR_ITEM_ACTION].includes((value as SidebarItemSlot).kind),\n );\nconst navTreeItemSlot = (value: unknown): value is NavTreeItemSlot =>\n Boolean(value && typeof value === \"object\" && \"kind\" in value && (value as NavTreeItemSlot).kind === NAV_TREE_ITEM);\n\ntype ResizeHandleProps = {\n kind: \"sidebar\" | \"pane\" | \"detail\" | \"drawer\";\n edge: \"start\" | \"end\";\n controls?: string;\n panelId?: string;\n defaultSize: number;\n minSize: number;\n maxSize: number;\n shadow?: boolean;\n label?: string;\n style?: JSX.CSSProperties;\n};\n\nfunction ResizeHandle(props: ResizeHandleProps): JSX.Element {\n const workspaceMessages = useWorkspaceMessages();\n return (\n <button\n type=\"button\"\n class=\"k2b-app-workspace__resize\"\n role=\"separator\"\n aria-label={\n props.label ??\n (props.kind === \"sidebar\"\n ? workspaceMessages().resizeNavigation\n : props.kind === \"pane\"\n ? workspaceMessages().resizeWorkspacePane\n : props.kind === \"detail\"\n ? workspaceMessages().resizeDetailPanel\n : workspaceMessages().resizeBottomDrawer)\n }\n aria-controls={props.controls}\n aria-orientation={props.kind === \"drawer\" ? \"horizontal\" : \"vertical\"}\n aria-valuemin={props.minSize}\n aria-valuemax={props.maxSize}\n aria-valuenow={props.defaultSize}\n data-app-workspace-resize={props.kind}\n data-workspace-panel-id={props.panelId}\n data-workspace-resize-edge={props.edge}\n data-workspace-resize-shadow={props.shadow ? \"true\" : undefined}\n data-workspace-default-size={props.defaultSize}\n data-workspace-min-size={props.minSize}\n data-workspace-max-size={props.maxSize}\n style={props.style}\n >\n <span aria-hidden=\"true\" />\n </button>\n );\n}\n\nexport type AppWorkspaceProps = {\n children: JSX.Element;\n class?: string;\n /** A host with its own phone chrome can use the full canvas below 48rem (768 px). */\n mobileSurface?: \"contained\" | \"flush\";\n resizable?: boolean;\n /**\n * Restores a persisted layout when the workspace mounts. Persistence itself\n * stays app-owned — the package reads and writes nothing on its own — but\n * the resize handles work without it.\n */\n layoutState?: () => AppWorkspaceLayoutState | null | undefined;\n /** Called with the full layout whenever a resize settles. Persist it here. */\n onLayoutChange?: (state: AppWorkspaceLayoutState) => void;\n /**\n * Opt out of the built-in controller. Only needed when the application calls\n * `installAppWorkspaceController` itself — installing twice would double up\n * every listener.\n */\n controller?: false;\n};\nexport type AppWorkspaceLayoutStateProviderProps = {\n children: JSX.Element;\n state: AppWorkspaceLayoutState | null | undefined;\n};\nexport type AppWorkspaceContentProps = { children: JSX.Element; class?: string };\nexport type AppWorkspaceMainProps = {\n children: JSX.Element;\n class?: string;\n /** `\"content\"` centers the children as one reading column with the shared page width on large screens. */\n width?: \"full\" | \"content\";\n mobilePane?: string;\n scroll?: boolean;\n scrollFade?: boolean;\n scrollPreserveKey?: string | false;\n \"aria-busy\"?: boolean | \"true\" | \"false\";\n};\nexport type AppWorkspaceMainPaneProps = {\n id: string;\n label: string;\n surface?: \"default\" | \"navigation\";\n open?: boolean;\n resizable?: boolean;\n resizeShadow?: boolean;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n class?: string;\n scroll?: boolean;\n scrollFade?: boolean;\n children: JSX.Element;\n};\nexport type AppWorkspaceDetailWidth = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type AppWorkspaceDetailProps = {\n children: JSX.Element;\n open: boolean;\n id: string;\n class?: string;\n width?: AppWorkspaceDetailWidth;\n viewTransitionName?: string;\n resizable?: boolean;\n minWidth?: number;\n maxWidth?: number;\n /**\n * Closes the panel: Escape, a swipe on a touch screen, and dragging the\n * phone sheet down call it. A panel rendered on the server only marks its\n * own close button or link with `data-workspace-detail-close` instead, and\n * those gestures click it. Without either, they leave the panel open, and on\n * a touch tablet in portrait the panel makes room beside `Main` instead of\n * overlaying it as a drawer.\n */\n onClose?: () => void;\n /** Shows the previous (`-1`) or next (`1`) item; J and K call it while the panel is open. */\n onStep?: (direction: 1 | -1) => void;\n};\nexport type AppWorkspaceBottomDrawerHeight = \"sm\" | \"md\" | \"lg\";\nexport type AppWorkspaceBottomDrawerProps = {\n children: JSX.Element;\n open: boolean;\n id: string;\n class?: string;\n height?: AppWorkspaceBottomDrawerHeight;\n minHeight?: number;\n maxHeight?: number;\n viewTransitionName?: string;\n resizable?: boolean;\n};\nexport type AppWorkspaceSidebarProps = {\n /** Stable element id, for a toggle elsewhere that names the sidebar in `aria-controls`. */\n id?: string;\n label?: string;\n children: JSX.Element;\n class?: string;\n /**\n * Below 48rem (768 px) the sidebar is hidden and the host's mobile\n * navigation takes over; from 48 to 64rem it is an overlay that a button in\n * the workspace's head opens. `\"stacked\"` keeps it as a block above the\n * content below 64rem instead, for overviews whose sidebar is the primary\n * object list.\n */\n mobile?: \"hidden\" | \"stacked\";\n resizable?: boolean;\n resizeShadow?: boolean;\n collapsible?: boolean;\n defaultSize?: number;\n minSize?: number;\n maxSize?: number;\n /**\n * Hides the desktop navigation completely: the sidebar renders none of its\n * children and no resize handle, and main panes with `surface=\"navigation\"`\n * hide with it. The state is application-owned, like a persisted layout.\n */\n hidden?: boolean;\n /**\n * Makes the sidebar hideable by dragging its resize handle below half its\n * minimum width. The controller then requests `true`; showing it again is\n * the application's control.\n */\n onHiddenChange?: (hidden: boolean) => void;\n};\nexport type AppWorkspaceSidebarVisibility = \"always\" | \"expanded\" | \"collapsed\";\nexport type AppWorkspaceSidebarAccessoryVisibility = \"always\" | \"hover\";\ntype AppWorkspaceSidebarContentProps = {\n children: JSX.Element;\n class?: string;\n scrollPreserveKey?: string | false;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarBodyProps = AppWorkspaceSidebarContentProps & { scrollFade?: boolean };\nexport type AppWorkspaceSidebarSectionProps = AppWorkspaceSidebarContentProps & {\n title?: string;\n icon?: string;\n count?: number;\n collapsible?: boolean;\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n actions?: JSX.Element;\n};\nexport type AppWorkspaceSidebarItemTone = \"default\" | \"success\" | \"danger\";\nexport type AppWorkspaceSidebarIconActionTone = \"default\" | \"success\" | \"danger\";\nexport type AppWorkspaceSidebarItemProps = {\n children: JSX.Element;\n /**\n * Card rows add a quiet context header above the main label. Object rows\n * present one resource with a title, a description line, and stacked\n * trailing counts; use them for the objects an overview navigates into.\n */\n variant?: \"row\" | \"card\" | \"object\";\n context?: JSX.Element;\n contextMeta?: JSX.Element;\n /** Passive second line; keep controls in actions or preview. */\n description?: JSX.Element;\n /** Interactive details, also reachable through a dedicated button. */\n preview?: {\n label: string;\n content: JSX.Element | ((close: () => void) => JSX.Element);\n trigger?: \"action\" | \"row\";\n align?: \"center\" | \"end\";\n viewportSize?: ScrollAreaProps[\"viewportSize\"];\n onOpenChange?: (open: boolean) => void;\n };\n href?: string;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onClick?: (event: MouseEvent) => void;\n active?: boolean;\n activeClass?: string;\n disabled?: boolean;\n icon?: string;\n meta?: JSX.Element;\n metaVisibility?: AppWorkspaceSidebarAccessoryVisibility;\n actions?: JSX.Element;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n depth?: number;\n actionIcon?: string;\n actionLabel?: string;\n onActionClick?: (event: MouseEvent) => void;\n data?: Record<string, string | number | boolean | null | undefined>;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarIconGridProps = AppWorkspaceSidebarContentProps & { title?: string; columns?: 2 | 3 };\nexport type AppWorkspaceSidebarIconActionProps = {\n href?: string | null;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n icon: string;\n label: string;\n active?: boolean;\n disabled?: boolean;\n tone?: AppWorkspaceSidebarIconActionTone;\n viewTransitionName?: string;\n onClick?: (event: MouseEvent) => void;\n sidebarMode?: AppWorkspaceSidebarVisibility;\n};\nexport type AppWorkspaceSidebarItemIconProps = { icon?: string; children?: JSX.Element };\nexport type AppWorkspaceSidebarItemLabelProps = { children: JSX.Element; marquee?: boolean };\nexport type AppWorkspaceSidebarItemMetaProps = {\n children: JSX.Element;\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n};\nexport type AppWorkspaceSidebarItemActionProps = {\n icon?: string;\n label: string;\n disabled?: boolean;\n /** Hide the action on fine pointers until the row is hovered or keyboard-focused. */\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n href?: string;\n navigation?: \"enhanced\" | \"document\";\n onSelect?: (event: MouseEvent) => void;\n children?: JSX.Element;\n};\nexport type AppWorkspaceSidebarItemActionsProps = {\n children: JSX.Element;\n visibility?: AppWorkspaceSidebarAccessoryVisibility;\n};\n/**\n * Unread state for the trailing `meta` slot. Every mark keeps a fixed width,\n * so the row keeps its height and the label its start in every state.\n */\nexport type AppWorkspaceSidebarItemStatusProps = {\n /**\n * A positive number shows a count (above 99 as \"99+\") and sets the label in\n * a stronger weight; `true` shows a quiet dot for new activity that should\n * not draw attention, such as in a muted conversation.\n */\n unread?: number | boolean;\n /** Marks unread items that mention the person with \"@\". */\n mention?: boolean;\n /** Shows a muted bell. */\n muted?: boolean;\n};\nexport type AppWorkspaceNavTreeProps = {\n children: JSX.Element;\n ariaLabel: string;\n selectedId?: string | null;\n expandedIds?: readonly string[];\n defaultExpandedIds?: readonly string[];\n onSelectedIdChange?: (id: string) => void;\n onExpandedIdsChange?: (ids: readonly string[]) => void;\n indented?: boolean;\n /**\n * Lets people reorder `movable` items among their siblings: by dragging on\n * fine pointers and with Alt+ArrowUp/ArrowDown on a focused item. The tree\n * only reports the requested place; the application saves it and renders\n * the new order, and the tree then keeps focus on the moved item.\n */\n onMove?: (move: AppWorkspaceNavTreeMove) => void;\n class?: string;\n};\n/** One requested place for an item among its unchanged siblings. */\nexport type AppWorkspaceNavTreeMove = {\n id: string;\n /** The parent item, unchanged by the move; `null` on the top level. */\n parentId: string | null;\n /** The sibling the item now precedes; `null` when it becomes the last. */\n beforeId: string | null;\n /** The sibling the item now follows; `null` when it becomes the first. */\n afterId: string | null;\n};\nexport type AppWorkspaceNavTreeItemProps = {\n id: string;\n label: JSX.Element;\n /** Passive second line under the label, such as a date; keep controls in actions. */\n description?: JSX.Element;\n children?: JSX.Element;\n href?: string;\n /** Document navigation by default; opt into enhanced navigation only when the owning island applies the target state. */\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onSelect?: (event: MouseEvent) => void;\n disabled?: boolean;\n icon?: string;\n /** Names a meaningful icon for screen readers, such as \"Homepage\"; without it the icon is decorative. */\n iconLabel?: string;\n /** Replaces `icon` while this branch is expanded and makes the icon the disclosure target. */\n expandedIcon?: string;\n meta?: JSX.Element;\n metaVisibility?: AppWorkspaceSidebarAccessoryVisibility;\n actions?: JSX.Element;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n /** With the tree's `onMove`, the item can change its place among its siblings. Other items keep theirs, and no item moves past them. */\n movable?: boolean;\n onDragEnter?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDragOver?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDragLeave?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n onDrop?: JSX.EventHandlerUnion<HTMLDivElement, DragEvent>;\n};\ntype AppWorkspaceNavTreeComponent = ((props: AppWorkspaceNavTreeProps) => JSX.Element) & {\n Item: (props: AppWorkspaceNavTreeItemProps) => JSX.Element;\n};\n\nconst modeAttrs = (mode?: AppWorkspaceSidebarVisibility) => (mode && mode !== \"always\" ? { \"data-sidebar-mode\": mode } : {});\n/** Same rule as `modeAttrs`, for the un-prefixed `data` bag on sidebar items. */\nconst modeData = (mode?: AppWorkspaceSidebarVisibility) => (mode && mode !== \"always\" ? { \"sidebar-mode\": mode } : {});\nconst scrollAttrs = (key?: string | false) => (key ? { \"data-scroll-preserve\": key } : {});\nconst iconClass = (icon: string | undefined, fallback = \"ti-circle\") => (icon?.startsWith(\"ti \") ? icon : `ti ${icon || fallback}`);\n/** A named icon is an image screen readers announce; any other icon is decoration. */\nconst iconAccessibility = (label: string | undefined) => (label ? { role: \"img\" as const, \"aria-label\": label } : { \"aria-hidden\": true });\n\nfunction AppWorkspaceMainPane(props: AppWorkspaceMainPaneProps): JSX.Element {\n return {\n kind: MAIN_PANE,\n props,\n domId: `k2b-workspace-pane-${createUniqueId()}`,\n } satisfies MainPaneSlot as unknown as JSX.Element;\n}\n\nfunction AppWorkspaceMain(props: AppWorkspaceMainProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const resolved = children(() => props.children);\n const values = createMemo(() => flatten(resolved()));\n const paneIds = createMemo(() => {\n const ids = values()\n .filter(mainPaneSlot)\n .map((slot) => slot.props.id);\n assertUniqueStableUiIds(ids, \"AppWorkspace.MainPane id\");\n return ids;\n });\n const regions = createMemo(() => {\n const all = values();\n const primary = all.filter((value) => !mainPaneSlot(value));\n const primaryIndex = all.findIndex((value) => !mainPaneSlot(value));\n let inserted = false;\n const result: Array<{ type: \"primary\"; index: number; children: unknown[] } | { type: \"pane\"; index: number; slot: MainPaneSlot }> = [];\n all.forEach((value, index) => {\n if (mainPaneSlot(value)) {\n result.push({ type: \"pane\", index, slot: value });\n } else if (!inserted) {\n inserted = true;\n result.push({ type: \"primary\", index: primaryIndex, children: primary });\n }\n });\n return result;\n });\n const anchorRegion = createMemo(\n () =>\n regions().find((candidate) => candidate.type === \"primary\") ??\n regions().find((candidate) => candidate.type === \"pane\" && candidate.slot.props.open !== false),\n );\n // Presence of a MainPane slot — not of an *open* one — decides the split\n // layout. Deriving it from `regions()` made a workspace whose panes are all\n // closed fall back to `resolved()`, which renders the raw slot objects.\n const hasPanes = createMemo(() => paneIds().length > 0);\n\n return (\n <div\n class={`k2b-app-workspace__main ${hasPanes() ? \"has-panes\" : \"\"} ${props.class ?? \"\"}`}\n data-mobile-pane={props.mobilePane}\n data-width={props.width === \"content\" ? \"content\" : undefined}\n data-scroll-fade-mode={!hasPanes() && props.scroll !== false && props.scrollFade !== false ? \"both\" : undefined}\n data-scroll={props.scroll === false ? \"false\" : undefined}\n aria-busy={props[\"aria-busy\"]}\n {...scrollAttrs(props.scrollPreserveKey)}\n >\n <Show when={hasPanes()} fallback={resolved() as JSX.Element}>\n <For each={regions()}>\n {(region) => {\n const activeMobilePane = () => {\n const anchor = anchorRegion();\n return props.mobilePane ?? (anchor?.type === \"pane\" ? anchor.slot.props.id : \"main\");\n };\n if (region.type === \"primary\") {\n return (\n <div\n class=\"k2b-app-workspace__main-primary\"\n data-workspace-main-region=\"main\"\n data-workspace-mobile-active={activeMobilePane() === \"main\" ? \"true\" : \"false\"}\n >\n {region.children as JSX.Element}\n </div>\n );\n }\n const pane = region.slot;\n const panelId = assertStableUiId(pane.props.id, \"AppWorkspace.MainPane id\");\n const variable = appWorkspacePanelVariable(\"pane\", panelId);\n const isAnchor = () => region === anchorRegion();\n const resizable = () => !isAnchor() && (pane.props.resizable ?? rootResizable);\n const defaultSize = () => pane.props.defaultSize ?? APP_WORKSPACE_PANE_DEFAULT;\n const minSize = () => pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;\n const maxSize = () => Math.max(minSize(), pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);\n const before = () => region.index < (anchorRegion()?.index ?? 0);\n const handle = () => (\n <ResizeHandle\n kind=\"pane\"\n edge={before() ? \"end\" : \"start\"}\n controls={pane.domId}\n panelId={panelId}\n defaultSize={defaultSize()}\n minSize={minSize()}\n maxSize={maxSize()}\n shadow={pane.props.resizeShadow !== false}\n label={`Resize ${pane.props.label}`}\n />\n );\n return (\n <Show when={pane.props.open !== false}>\n <Show when={resizable() && !before()}>{handle()}</Show>\n <section\n id={pane.domId}\n class={`k2b-app-workspace__main-pane ${isAnchor() ? \"is-primary\" : \"\"} ${pane.props.class ?? \"\"}`}\n aria-label={pane.props.label}\n data-workspace-main-region={pane.props.id}\n data-workspace-mobile-active={activeMobilePane() === pane.props.id ? \"true\" : \"false\"}\n data-workspace-panel-id={panelId}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n data-surface={pane.props.surface === \"navigation\" ? \"navigation\" : undefined}\n data-scroll={pane.props.scroll === false ? \"false\" : undefined}\n data-scroll-fade-mode={pane.props.scroll !== false && pane.props.scrollFade !== false ? \"both\" : undefined}\n style={\n isAnchor()\n ? undefined\n : {\n \"--k2b-workspace-panel-size\": `var(${variable}, ${defaultSize()}px)`,\n \"--k2b-workspace-panel-min\": `${minSize()}px`,\n }\n }\n >\n {pane.props.children}\n </section>\n <Show when={resizable() && before()}>{handle()}</Show>\n </Show>\n );\n }}\n </For>\n </Show>\n </div>\n );\n}\n\nfunction AppWorkspaceDetail(props: AppWorkspaceDetailProps): JSX.Element {\n const workspaceMessages = useWorkspaceMessages();\n const rootResizable = useContext(ResizeContext);\n const panelId = () => assertStableUiId(props.id, \"AppWorkspace.Detail id\");\n const domId = () => `k2b-workspace-detail-${panelId()}`;\n const variable = () => appWorkspacePanelVariable(\"detail\", panelId());\n // Start widths of 20, 26, 30, and 34 rem. They feed `aria-valuenow` and the\n // `var(…, Npx)` first-paint fallback, so they are behaviour, not taste.\n const widths = { sm: 320, md: 416, lg: 480, xl: 544 };\n const defaultWidth = () => widths[props.width ?? \"md\"] ?? APP_WORKSPACE_DETAIL_DEFAULT;\n const minWidth = () => props.minWidth ?? APP_WORKSPACE_DETAIL_MIN;\n const maxWidth = () => Math.max(minWidth(), props.maxWidth ?? APP_WORKSPACE_DETAIL_MAX);\n const resizable = () => props.resizable ?? rootResizable;\n const size = () => (resizable() ? `var(${variable()}, ${defaultWidth()}px)` : `${defaultWidth()}px`);\n const sizeStyle = () => ({\n \"--k2b-workspace-panel-size\": size(),\n \"--k2b-workspace-panel-min\": `${minWidth()}px`,\n \"--k2b-workspace-panel-max\": `${maxWidth()}px`,\n });\n // The panel floats over the content area, and `Main` beside it makes room\n // in CSS alone, so a server-rendered page arrives in its final geometry. A\n // sibling cannot read the panel's own variables, so this rule hands the\n // open panel's size to the content area around it.\n const contentRule = () => {\n const open = `#${domId()}:not([hidden])`;\n return `.k2b-app-workspace__content:has(> ${open}, > :is(solid-island, solid-client) > ${open}){--k2b-detail-size:${size()};--k2b-detail-min:${minWidth()}px;--k2b-detail-max:${maxWidth()}px}`;\n };\n let aside: HTMLElement | undefined;\n onMount(() => {\n const close = () => props.onClose?.();\n const step = (event: Event) => {\n const direction = event instanceof CustomEvent ? event.detail?.direction : undefined;\n if (direction === 1 || direction === -1) props.onStep?.(direction);\n };\n aside?.addEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);\n aside?.addEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);\n onCleanup(() => {\n aside?.removeEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);\n aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);\n });\n });\n return (\n <>\n <style innerHTML={contentRule()} />\n <Show when={resizable()}>\n <ResizeHandle\n kind=\"detail\"\n edge=\"start\"\n controls={domId()}\n panelId={panelId()}\n defaultSize={defaultWidth()}\n minSize={minWidth()}\n maxSize={maxWidth()}\n style={sizeStyle()}\n />\n </Show>\n <aside\n ref={aside}\n id={domId()}\n class={`k2b-app-workspace__detail ${props.class ?? \"\"}`}\n data-width={props.width ?? \"md\"}\n data-workspace-panel-id={panelId()}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n data-workspace-detail-closable={props.onClose ? \"true\" : undefined}\n data-workspace-detail-steppable={props.onStep ? \"true\" : undefined}\n hidden={!props.open}\n style={{ ...sizeStyle(), \"view-transition-name\": props.viewTransitionName }}\n >\n {/* Only the phone sheet shows the grabber: a tap switches between half and full height. */}\n <button\n type=\"button\"\n class=\"k2b-app-workspace__detail-grabber\"\n aria-label={workspaceMessages().detailFullHeight}\n aria-pressed=\"false\"\n >\n <span aria-hidden=\"true\" />\n </button>\n {props.children}\n </aside>\n </>\n );\n}\n\nfunction AppWorkspaceBottomDrawer(props: AppWorkspaceBottomDrawerProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const panelId = () => assertStableUiId(props.id, \"AppWorkspace.BottomDrawer id\");\n const domId = () => `k2b-workspace-drawer-${panelId()}`;\n const variable = () => appWorkspacePanelVariable(\"drawer\", panelId());\n // Cloud's `drawerDefaultHeight`.\n const heights = { sm: 192, md: 240, lg: 320 };\n const defaultHeight = () => heights[props.height ?? \"md\"] ?? APP_WORKSPACE_DRAWER_DEFAULT;\n const minHeight = () => props.minHeight ?? APP_WORKSPACE_DRAWER_MIN;\n const maxHeight = () => Math.max(minHeight(), props.maxHeight ?? APP_WORKSPACE_DRAWER_MAX);\n const resizable = () => props.resizable ?? rootResizable;\n return (\n <>\n <Show when={resizable()}>\n <ResizeHandle\n kind=\"drawer\"\n edge=\"start\"\n controls={domId()}\n panelId={panelId()}\n defaultSize={defaultHeight()}\n minSize={minHeight()}\n maxSize={maxHeight()}\n shadow\n style={{ \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultHeight()}px)` }}\n />\n </Show>\n <aside\n id={domId()}\n class={`k2b-app-workspace__drawer ${props.class ?? \"\"}`}\n data-height={props.height ?? \"md\"}\n data-workspace-panel-id={panelId()}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n hidden={!props.open}\n style={{\n \"--k2b-workspace-panel-size\": `var(${variable()}, ${defaultHeight()}px)`,\n \"view-transition-name\": props.viewTransitionName,\n }}\n >\n {props.children}\n </aside>\n </>\n );\n}\n\nfunction AppWorkspaceSidebar(props: AppWorkspaceSidebarProps): JSX.Element {\n const rootResizable = useContext(ResizeContext);\n const resizable = () => props.resizable ?? rootResizable;\n const defaultSize = () => props.defaultSize ?? APP_WORKSPACE_SIDEBAR_DEFAULT;\n const minSize = () => props.minSize ?? (props.collapsible ? APP_WORKSPACE_SIDEBAR_COLLAPSED : APP_WORKSPACE_SIDEBAR_MIN);\n const maxSize = () => props.maxSize ?? APP_WORKSPACE_SIDEBAR_MAX;\n const workspace = useContext(WorkspaceContext);\n const generatedId = createUniqueId();\n const domId = () => props.id ?? workspace?.sidebarId ?? `k2b-workspace-sidebar-${generatedId}`;\n // The head's navigation button names this sidebar.\n createEffect(() => workspace?.setSidebarId(domId()));\n // Hidden navigation is not rendered at all, so its labels are neither shown\n // nor reachable; reading the children lazily keeps them from being created.\n const resolved = children(() => (props.hidden ? undefined : props.children));\n const slots = createMemo(() => flatten(resolved()).filter(sidebarChildSlot));\n const desktop = createMemo(() => slots().find((slot) => slot.kind === SIDEBAR_DESKTOP));\n let aside: HTMLElement | undefined;\n onMount(() => {\n const requestHide = () => props.onHiddenChange?.(true);\n aside?.addEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide);\n onCleanup(() => aside?.removeEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide));\n });\n return (\n <>\n <aside\n ref={aside}\n id={domId()}\n class={`k2b-app-workspace__sidebar ${props.class ?? \"\"}`}\n aria-label={props.label}\n hidden={props.hidden || undefined}\n data-mobile={props.mobile === \"stacked\" ? \"stacked\" : undefined}\n data-workspace-resizable={resizable() ? \"true\" : \"false\"}\n data-workspace-collapsible={props.collapsible ? \"true\" : \"false\"}\n data-workspace-hideable={props.onHiddenChange ? \"true\" : undefined}\n >\n <Show when={!props.hidden}>\n <div class=\"k2b-app-workspace__sidebar-desktop\">{desktop()?.children}</div>\n </Show>\n </aside>\n <Show when={resizable() && !props.hidden}>\n <ResizeHandle\n kind=\"sidebar\"\n edge=\"end\"\n controls={domId()}\n defaultSize={defaultSize()}\n minSize={minSize()}\n maxSize={maxSize()}\n shadow={props.resizeShadow !== false}\n />\n </Show>\n </>\n );\n}\n\nconst AppWorkspaceSidebarDesktop = (props: { children: JSX.Element }): JSX.Element =>\n ({ kind: SIDEBAR_DESKTOP, children: props.children }) as unknown as JSX.Element;\n// Document navigations rebuild the sidebar from the server, so this inline\n// script restores its offset while the document is still parsing: before the\n// first paint, before a view transition can snapshot it, and before any island\n// hydrates. Islands load asynchronously and server-only sidebars never mount,\n// so `onMount` would be too late or never run. The memory is one\n// `sessionStorage` entry per path segment and sidebar position and ends with\n// the tab. A stored offset is applied first; the current item is then kept in\n// view, which is a no-op when the offset already shows it. The frame callback\n// repeats the restore once the whole document is parsed, because content that\n// follows the sidebar can still change its height before the first paint.\nconst SIDEBAR_SCROLL_MEMORY_SCRIPT = [\n \"(function(){\",\n \"var body=document.currentScript&&document.currentScript.previousElementSibling;if(!body)return;\",\n \"var storage;try{storage=window.sessionStorage}catch(_){return}\",\n 'var key=\"k2b-sidebar-scroll:\"+location.pathname.split(\"/\")[1]+\":\"+document.querySelectorAll(\".k2b-app-workspace__sidebar-body\").length;',\n \"var restore=function(){\",\n \"var stored=storage.getItem(key);if(stored!==null)body.scrollTop=Number(stored);\",\n 'var current=body.querySelector(\\'[aria-current=\"page\"]\\');if(current)current.scrollIntoView({block:\"nearest\"});',\n \"};\",\n \"restore();requestAnimationFrame(restore);\",\n \"var frame=0;\",\n 'body.addEventListener(\"scroll\",function(){if(frame)return;frame=requestAnimationFrame(function(){frame=0;try{storage.setItem(key,String(body.scrollTop))}catch(_){}})},{passive:true});',\n \"})();\",\n].join(\"\");\n\nconst AppWorkspaceSidebarBody = (props: AppWorkspaceSidebarBodyProps) => {\n let body!: HTMLDivElement;\n createScrollFade(\n () => body,\n () => props.scrollFade !== false,\n );\n return (\n <>\n <div\n ref={body}\n class={`k2b-app-workspace__sidebar-body ${props.class ?? \"\"}`}\n data-scroll-fade-mode={props.scrollFade !== false ? \"both\" : undefined}\n {...scrollAttrs(props.scrollPreserveKey)}\n {...modeAttrs(props.sidebarMode)}\n >\n {props.children}\n </div>\n <script innerHTML={SIDEBAR_SCROLL_MEMORY_SCRIPT} />\n </>\n );\n};\nconst AppWorkspaceSidebarFooter = (props: AppWorkspaceSidebarContentProps) => (\n <footer class={`k2b-app-workspace__sidebar-footer ${props.class ?? \"\"}`} {...modeAttrs(props.sidebarMode)}>\n {props.children}\n </footer>\n);\nconst AppWorkspaceSidebarSection = (props: AppWorkspaceSidebarSectionProps) => {\n const [expanded, setExpanded] = createSignal(props.defaultOpen ?? true);\n const open = () => !props.collapsible || (props.open ?? expanded());\n const id = `sidebar-section-${createUniqueId()}`;\n const title = () => (\n <>\n <Show when={props.icon}>\n <span aria-hidden=\"true\">\n <i class={iconClass(props.icon)} />\n </span>\n </Show>\n {props.title}\n <Show when={props.count !== undefined}>\n <span class=\"k2b-app-workspace__sidebar-section-count\">{props.count}</span>\n </Show>\n </>\n );\n return (\n <section\n class={`k2b-app-workspace__sidebar-section ${props.class ?? \"\"}`}\n data-collapsible={props.collapsible ? \"true\" : undefined}\n {...modeAttrs(props.sidebarMode)}\n >\n <Show when={props.title || props.actions}>\n <header class=\"k2b-app-workspace__sidebar-section-header\">\n <Show\n when={props.collapsible}\n fallback={\n <Show when={props.title}>\n <h2>{title()}</h2>\n </Show>\n }\n >\n <button\n type=\"button\"\n class=\"k2b-app-workspace__sidebar-section-toggle\"\n aria-expanded={open()}\n aria-controls={id}\n onClick={() => {\n const next = !open();\n setExpanded(next);\n props.onOpenChange?.(next);\n }}\n >\n {title()}\n <i class={open() ? \"ti ti-chevron-down\" : \"ti ti-chevron-right\"} aria-hidden=\"true\" />\n </button>\n </Show>\n <Show when={props.actions}>\n <div class=\"k2b-app-workspace__sidebar-section-actions\">{props.actions}</div>\n </Show>\n </header>\n </Show>\n <div id={id} hidden={!open()} class=\"k2b-app-workspace__sidebar-section-content\">\n {props.children}\n </div>\n </section>\n );\n};\n\nconst AppWorkspaceSidebarItemIcon = (props: AppWorkspaceSidebarItemIconProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_ICON }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemLabel = (props: AppWorkspaceSidebarItemLabelProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_LABEL }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemMeta = (props: AppWorkspaceSidebarItemMetaProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_META }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemAction = (props: AppWorkspaceSidebarItemActionProps): JSX.Element =>\n mergeProps({ kind: SIDEBAR_ITEM_ACTION }, props) as unknown as JSX.Element;\nconst AppWorkspaceSidebarItemActions = (props: AppWorkspaceSidebarItemActionsProps): JSX.Element => (\n <div class=\"k2b-app-workspace__sidebar-item-actions\" data-visibility={props.visibility === \"hover\" ? \"hover\" : undefined}>\n {props.children}\n </div>\n);\nconst AppWorkspaceSidebarItemStatus = (props: AppWorkspaceSidebarItemStatusProps): JSX.Element => {\n const workspaceMessages = useWorkspaceMessages();\n const count = () => (typeof props.unread === \"number\" && props.unread >= 1 ? Math.floor(props.unread) : 0);\n const dot = () => props.unread === true;\n // The marks are decorative; the row's accessible name gets one phrase instead,\n // which says no more than the \"99+\" a capped count shows.\n const description = () =>\n [\n count() > 99\n ? workspaceMessages().sidebarUnreadMany\n : count()\n ? workspaceMessages().sidebarUnread({ count: count() })\n : dot()\n ? workspaceMessages().sidebarNewActivity\n : \"\",\n props.mention ? workspaceMessages().sidebarMentioned : \"\",\n props.muted ? workspaceMessages().sidebarMuted : \"\",\n ]\n .filter(Boolean)\n .join(\", \");\n // The unread slot stays reserved at the end, and the marks that change most\n // often sit outermost, so new activity or a mention never moves another mark.\n return (\n <Show when={description()}>\n <span class=\"k2b-app-workspace__sidebar-status\" data-unread={count() ? \"count\" : dot() ? \"dot\" : undefined}>\n <Show when={props.mention}>\n <span class=\"k2b-app-workspace__sidebar-status-mention\" aria-hidden=\"true\">\n @\n </span>\n </Show>\n <Show when={props.muted}>\n <span class=\"k2b-app-workspace__sidebar-status-muted\" aria-hidden=\"true\">\n <i class=\"ti ti-bell-off\" />\n </span>\n </Show>\n <span class=\"k2b-app-workspace__sidebar-status-unread\" aria-hidden=\"true\">\n <Show\n when={count()}\n fallback={\n <Show when={dot()}>\n <span class=\"k2b-app-workspace__sidebar-status-dot\" />\n </Show>\n }\n >\n <span class=\"k2b-app-workspace__sidebar-status-count\" data-mention={props.mention ? \"true\" : undefined}>\n {count() > 99 ? \"99+\" : count()}\n </span>\n </Show>\n </span>\n <span class=\"k2b-sr-only\">, {description()}</span>\n </span>\n </Show>\n );\n};\n\ntype AppWorkspaceSidebarRowProps = {\n children: JSX.Element;\n actions?: JSX.Element;\n hasActions: boolean;\n href?: string;\n navigation?: \"enhanced\" | \"document\";\n replace?: boolean;\n scroll?: NavigationScrollMode;\n onNavigate?: (event: LinkNavigateEvent) => void | Promise<void>;\n onClick?: (event: MouseEvent) => void;\n active?: boolean;\n activeClass?: string;\n disabled?: boolean;\n tone?: AppWorkspaceSidebarItemTone;\n title?: string;\n viewTransitionName?: string;\n class?: string;\n depth?: number;\n tabIndex?: number;\n data?: Record<string, string | number | boolean | null | undefined>;\n};\n\n/** Shared visual and semantic row frame for flat sidebar items and tree items. */\nfunction AppWorkspaceSidebarRow(props: AppWorkspaceSidebarRowProps): JSX.Element {\n const className = () =>\n `k2b-app-workspace__sidebar-item ${props.hasActions ? \"has-action\" : \"\"} ${props.active ? (props.activeClass ?? \"is-active\") : \"\"} ${props.class ?? \"\"}`;\n const data = () =>\n Object.fromEntries(\n Object.entries(props.data ?? {})\n .filter(([, value]) => value !== undefined && value !== null)\n .map(([key, value]) => [`data-${key}`, String(value)]),\n );\n const common = () => ({\n class: className(),\n title: props.title,\n \"data-tone\": props.tone,\n style: {\n \"view-transition-name\": props.viewTransitionName,\n \"--k2b-sidebar-item-depth\": props.depth === undefined ? undefined : String(Math.max(0, props.depth)),\n },\n ...data(),\n });\n const current = () => (props.active ? (\"page\" as const) : undefined);\n\n const Control = (control: { grouped: boolean }) => {\n const attrs = () => (control.grouped ? { class: \"k2b-app-workspace__sidebar-item-main\" } : common());\n return (\n <Show\n when={Boolean(props.href && !props.disabled)}\n fallback={\n <button type=\"button\" {...attrs()} tabIndex={props.tabIndex} disabled={props.disabled} onClick={props.onClick}>\n {props.children}\n </button>\n }\n >\n <Show\n when={props.navigation === \"enhanced\" && Boolean(props.onNavigate)}\n fallback={\n <a href={props.href} {...attrs()} tabIndex={props.tabIndex} aria-current={current()} onClick={props.onClick}>\n {props.children}\n </a>\n }\n >\n <Link\n href={props.href!}\n {...attrs()}\n tabIndex={props.tabIndex}\n aria-current={current()}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n >\n {props.children}\n </Link>\n </Show>\n </Show>\n );\n };\n return (\n <Show when={props.hasActions} fallback={<Control grouped={false} />}>\n <div {...common()} data-disabled={props.disabled ? \"true\" : undefined}>\n <Control grouped />\n {props.actions}\n </div>\n </Show>\n );\n}\n\nfunction AppWorkspaceSidebarItem(props: AppWorkspaceSidebarItemProps): JSX.Element {\n const workspaceMessages = useWorkspaceMessages();\n const resolved = children(() => props.children);\n const resolvedActions = children(() => props.actions);\n const values = createMemo(() => flatten(resolved()));\n const slots = createMemo(() => values().filter(sidebarItemSlot));\n const iconSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_ICON) as\n | (AppWorkspaceSidebarItemIconProps & { kind: typeof SIDEBAR_ITEM_ICON })\n | undefined,\n );\n const labelSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_LABEL) as\n | (AppWorkspaceSidebarItemLabelProps & { kind: typeof SIDEBAR_ITEM_LABEL })\n | undefined,\n );\n const metaSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_META) as\n | (AppWorkspaceSidebarItemMetaProps & { kind: typeof SIDEBAR_ITEM_META })\n | undefined,\n );\n const actionSlot = createMemo(\n () =>\n slots().find((slot) => slot.kind === SIDEBAR_ITEM_ACTION) as\n | (AppWorkspaceSidebarItemActionProps & { kind: typeof SIDEBAR_ITEM_ACTION })\n | undefined,\n );\n const legacy = createMemo(() => values().filter((value) => !sidebarItemSlot(value)));\n const label = () => labelSlot()?.children ?? (legacy().length === 1 ? legacy()[0] : legacy());\n const icon = () => iconSlot()?.icon ?? props.icon;\n const iconContent = () => iconSlot()?.children;\n // Resolved first, so a component that renders nothing, such as a status with\n // nothing to show, leaves no empty slot in the browser either.\n const meta = children(() => metaSlot()?.children ?? props.meta);\n const hasMeta = () => meta.toArray().some(Boolean);\n const metaId = createUniqueId();\n const metaVisibility = () => metaSlot()?.visibility ?? props.metaVisibility;\n const customActions = () => resolvedActions();\n const hasCustomActions = () => Boolean(customActions());\n const hasAction = () => Boolean(actionSlot() || props.actionIcon || hasCustomActions() || props.preview);\n const mainContent = (\n <>\n <Show when={iconContent() || icon()}>\n <span class=\"k2b-app-workspace__sidebar-item-icon\" aria-hidden=\"true\">\n {iconContent() ?? <i class={iconClass(icon())} />}\n </span>\n </Show>\n {/* The inner text span is what the marquee translates; the controller\n measures its `scrollWidth` against the clipping outer span. */}\n <span class=\"k2b-app-workspace__sidebar-item-copy\">\n <Show when={props.context || props.contextMeta}>\n <span class=\"k2b-app-workspace__sidebar-item-context\">\n <span class=\"k2b-app-workspace__sidebar-item-context-label\">{props.context}</span>\n <Show when={props.contextMeta}>\n <span class=\"k2b-app-workspace__sidebar-item-context-meta\">{props.contextMeta}</span>\n </Show>\n </span>\n </Show>\n <span\n class=\"k2b-app-workspace__sidebar-item-label\"\n data-marquee={(labelSlot()?.marquee ?? (props.variant ?? \"row\") === \"row\") ? \"true\" : \"false\"}\n >\n <span class=\"k2b-app-workspace__sidebar-item-label-text\">{label() as JSX.Element}</span>\n </span>\n <Show when={props.description}>\n <span class=\"k2b-app-workspace__sidebar-item-description\">{props.description}</span>\n </Show>\n </span>\n <Show when={hasMeta()}>\n <span\n class=\"k2b-app-workspace__sidebar-item-meta\"\n id={props.preview?.trigger === \"row\" ? metaId : undefined}\n data-visibility={metaVisibility() === \"hover\" ? \"hover\" : undefined}\n >\n {meta()}\n </span>\n </Show>\n </>\n );\n const singleAction = () => {\n const label = () => actionSlot()?.label ?? props.actionLabel ?? workspaceMessages().rowAction;\n const select = (event: MouseEvent) => {\n event.stopPropagation();\n if (actionSlot()?.disabled) {\n event.preventDefault();\n return;\n }\n if (!actionSlot()?.href) event.preventDefault();\n actionSlot()?.onSelect?.(event);\n props.onActionClick?.(event);\n };\n const content = () => actionSlot()?.children ?? <i class={iconClass(actionSlot()?.icon ?? props.actionIcon, \"ti-dots\")} />;\n return (\n <Show when={Boolean(actionSlot() || props.actionIcon)}>\n <Show\n when={actionSlot()?.href && !actionSlot()?.disabled}\n fallback={\n <button\n type=\"button\"\n class=\"k2b-app-workspace__sidebar-item-action\"\n disabled={actionSlot()?.disabled}\n data-visibility={actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined}\n aria-label={label()}\n onClick={select}\n >\n {content()}\n </button>\n }\n >\n <a\n href={actionSlot()?.href}\n class=\"k2b-app-workspace__sidebar-item-action\"\n data-visibility={actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined}\n aria-label={label()}\n onClick={select}\n >\n {content()}\n </a>\n </Show>\n </Show>\n );\n };\n const actions = () => (\n <>\n {customActions()}\n {singleAction()}\n <Show when={props.preview}>\n {(preview) => (\n <SidebarItemPreview\n label={preview().label}\n trigger={preview().trigger}\n align={preview().align}\n viewportSize={preview().viewportSize}\n describedBy={hasMeta() ? metaId : undefined}\n onOpenChange={preview().onOpenChange}\n >\n {preview().content}\n </SidebarItemPreview>\n )}\n </Show>\n </>\n );\n return (\n <AppWorkspaceSidebarRow\n hasActions={hasAction()}\n href={props.href}\n navigation={props.navigation}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n active={props.active}\n activeClass={props.activeClass}\n disabled={props.disabled}\n tone={props.tone}\n title={props.title}\n viewTransitionName={props.viewTransitionName}\n class={props.class}\n depth={props.depth}\n actions={actions()}\n data={{\n ...props.data,\n ...modeData(props.sidebarMode),\n variant: props.variant ?? \"row\",\n \"has-actions\": hasCustomActions() ? \"true\" : undefined,\n \"action-visibility\": actionSlot()?.visibility === \"hover\" ? \"hover\" : undefined,\n }}\n >\n {mainContent}\n </AppWorkspaceSidebarRow>\n );\n}\n\nconst navTreeItems = (value: unknown): NavTreeItemSlot[] => flatten(value).filter(navTreeItemSlot);\n\nconst AppWorkspaceNavTreeItem = (props: AppWorkspaceNavTreeItemProps): JSX.Element =>\n ({ kind: NAV_TREE_ITEM, ...props }) as unknown as JSX.Element;\n\ntype NavTreeDragEvent = DragEvent & { currentTarget: HTMLDivElement; target: Element };\nconst NAV_TREE_DRAG_TYPE = \"application/x-k2b-nav-tree-item\";\n\nconst callDragHandler = (handler: JSX.EventHandlerUnion<HTMLDivElement, DragEvent> | undefined, event: NavTreeDragEvent) => {\n if (typeof handler === \"function\") handler(event);\n else handler?.[0](handler[1], event);\n};\n\n/**\n * The move that puts the sibling at `from` into the gap before `slot`\n * (`siblings.length` is the gap after the last one), or `null` when its place\n * would not change or it would pass an item that is not movable.\n */\nconst navTreeMove = (\n siblings: readonly NavTreeItemSlot[],\n from: number,\n slot: number,\n parentId: string | null,\n): AppWorkspaceNavTreeMove | null => {\n if (from < 0 || slot < 0 || slot > siblings.length || slot === from || slot === from + 1) return null;\n const passed = slot < from ? siblings.slice(slot, from) : siblings.slice(from + 1, slot);\n if (passed.some((sibling) => !sibling.movable)) return null;\n return { id: siblings[from]!.id, parentId, beforeId: siblings[slot]?.id ?? null, afterId: siblings[slot - 1]?.id ?? null };\n};\n\nconst AppWorkspaceNavTree = ((props: AppWorkspaceNavTreeProps) => {\n let root: HTMLDivElement | undefined;\n const resolved = children(() => props.children);\n const roots = createMemo(() => navTreeItems(resolved()));\n const [uncontrolledExpandedIds, setUncontrolledExpandedIds] = createSignal<string[]>([...new Set(props.defaultExpandedIds ?? [])]);\n const [focusedId, setFocusedId] = createSignal<string | null>(props.selectedId ?? null);\n const expandedIds = createMemo(() => new Set(props.expandedIds ?? uncontrolledExpandedIds()));\n const isExpanded = (id: string) => expandedIds().has(id);\n\n const setExpanded = (id: string, expanded: boolean) => {\n const next = new Set(expandedIds());\n if (expanded) next.add(id);\n else next.delete(id);\n const value = [...next];\n if (props.expandedIds === undefined) setUncontrolledExpandedIds(value);\n props.onExpandedIdsChange?.(value);\n };\n\n const visibleIds = createMemo(() => {\n const result: string[] = [];\n const visit = (items: readonly NavTreeItemSlot[]) => {\n for (const item of items) {\n if (item.disabled) continue;\n result.push(item.id);\n const nested = navTreeItems(item.children);\n if (nested.length > 0 && isExpanded(item.id)) visit(nested);\n }\n };\n visit(roots());\n return result;\n });\n\n const tabStopId = () => {\n const visible = visibleIds();\n const focused = focusedId();\n if (focused && visible.includes(focused)) return focused;\n if (props.selectedId && visible.includes(props.selectedId)) return props.selectedId;\n return visible[0] ?? null;\n };\n\n const treeItemElements = () =>\n Array.from(root?.querySelectorAll<HTMLElement>(\"[data-k2b-nav-tree-id]\") ?? []).filter(\n (element) => element.getAttribute(\"aria-disabled\") !== \"true\",\n );\n const focusItem = (id: string | null) => {\n if (!id) return;\n const element = treeItemElements().find((candidate) => candidate.dataset.k2bNavTreeId === id);\n element?.focus({ preventScroll: true });\n };\n\n // Reordering: the dragged item and the gap the pointer marks. The application renders the new\n // order; the item moved by keyboard takes focus back when its row mounts or changes place.\n const [dragged, setDragged] = createSignal<{ id: string; parentId: string | null } | null>(null);\n const [dropTarget, setDropTarget] = createSignal<{ id: string; side: \"before\" | \"after\" } | null>(null);\n let claimedDragOver: DragEvent | null = null;\n let refocusId: string | null = null;\n const endDrag = () => {\n setDragged(null);\n setDropTarget(null);\n };\n const requestMove = (move: AppWorkspaceNavTreeMove | null, keepFocus: boolean) => {\n if (!move || !props.onMove) return;\n refocusId = keepFocus ? move.id : null;\n props.onMove(move);\n };\n\n // Items arrive through an accessor so a changed nested list reconciles rows by identity instead of rebuilding the list.\n const renderItems = (siblings: () => NavTreeItemSlot[], depth: number, parentId?: string): JSX.Element => (\n <For each={siblings()}>\n {(item, place) => {\n const nested = createMemo(() => navTreeItems(item.children));\n const hasChildren = () => nested().length > 0;\n const selected = () => props.selectedId === item.id;\n const siblingIndex = (id: string) => siblings().findIndex((sibling) => sibling.id === id);\n const movable = () => Boolean(props.onMove && item.movable && !item.disabled);\n // A folder that nobody selects: its row only expands and collapses it.\n const disclosureOnly = () => hasChildren() && !item.href && !item.onSelect && !props.onSelectedIdChange;\n let treeItem: HTMLDivElement | undefined;\n const ownRow = () => treeItem?.firstElementChild as HTMLElement | null | undefined;\n\n // A new row for the moved item, or the same row at its new place: moving a focused row drops its focus.\n createEffect(() => {\n place();\n if (refocusId !== item.id) return;\n queueMicrotask(() => {\n if (refocusId !== item.id || !treeItem?.isConnected) return;\n const active = treeItem.ownerDocument.activeElement;\n if (!active || active === treeItem.ownerDocument.body) treeItem.focus({ preventScroll: true });\n });\n });\n\n const activate = (event: MouseEvent) => {\n if (item.disabled) return;\n treeItem?.focus({ preventScroll: true });\n setFocusedId(item.id);\n if (disclosureOnly()) {\n setExpanded(item.id, !isExpanded(item.id));\n return;\n }\n props.onSelectedIdChange?.(item.id);\n item.onSelect?.(event);\n };\n const toggle = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n if (!item.disabled && hasChildren()) setExpanded(item.id, !isExpanded(item.id));\n };\n const onRowClick = (event: MouseEvent) => {\n if ((event.target as Element | null)?.closest(\"[data-k2b-nav-tree-toggle]\")) {\n toggle(event);\n return;\n }\n activate(event);\n };\n const rowControl = () => {\n const firstChild = treeItem?.firstElementChild as HTMLElement | null | undefined;\n if (!firstChild?.classList.contains(\"has-action\")) return firstChild;\n return firstChild.firstElementChild as HTMLElement | null;\n };\n const onKeyDown = (event: KeyboardEvent) => {\n if (event.target !== event.currentTarget) return;\n if (\n event.altKey &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.shiftKey &&\n (event.key === \"ArrowUp\" || event.key === \"ArrowDown\")\n ) {\n if (!movable()) return;\n event.preventDefault();\n const from = siblingIndex(item.id);\n requestMove(navTreeMove(siblings(), from, event.key === \"ArrowUp\" ? from - 1 : from + 2, parentId ?? null), true);\n return;\n }\n if (event.altKey || event.ctrlKey || event.metaKey) return;\n const items = treeItemElements();\n const index = items.indexOf(event.currentTarget as HTMLElement);\n if (event.key === \"ArrowDown\" && index >= 0) {\n event.preventDefault();\n items[Math.min(items.length - 1, index + 1)]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"ArrowUp\" && index >= 0) {\n event.preventDefault();\n items[Math.max(0, index - 1)]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"Home\") {\n event.preventDefault();\n items[0]?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"End\") {\n event.preventDefault();\n items.at(-1)?.focus({ preventScroll: true });\n return;\n }\n if (event.key === \"ArrowRight\" && hasChildren()) {\n event.preventDefault();\n if (!isExpanded(item.id)) setExpanded(item.id, true);\n else queueMicrotask(() => focusItem(nested()[0]?.id ?? null));\n return;\n }\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n if (hasChildren() && isExpanded(item.id)) setExpanded(item.id, false);\n else focusItem(parentId ?? null);\n return;\n }\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n rowControl()?.click();\n }\n };\n const usesIconDisclosure = () => hasChildren() && Boolean(item.icon && item.expandedIcon);\n const rowIcon = () => (usesIconDisclosure() && isExpanded(item.id) ? item.expandedIcon : item.icon);\n const rowContent = (\n <>\n <Show when={rowIcon()}>\n <span\n class=\"k2b-app-workspace__sidebar-item-icon\"\n data-k2b-nav-tree-toggle={usesIconDisclosure() ? \"\" : undefined}\n {...iconAccessibility(item.iconLabel)}\n >\n <i class={iconClass(rowIcon())} />\n </span>\n </Show>\n <Show\n when={item.description !== undefined}\n fallback={\n <span class=\"k2b-app-workspace__sidebar-item-label\">\n <span class=\"k2b-app-workspace__sidebar-item-label-text\">{item.label}</span>\n </span>\n }\n >\n <span class=\"k2b-app-workspace__sidebar-item-copy\">\n <span class=\"k2b-app-workspace__sidebar-item-label\">\n <span class=\"k2b-app-workspace__sidebar-item-label-text\">{item.label}</span>\n </span>\n <span class=\"k2b-app-workspace__sidebar-item-description\">{item.description}</span>\n </span>\n </Show>\n <Show when={item.meta !== undefined}>\n <span\n class={`k2b-app-workspace__sidebar-item-meta ${hasChildren() ? \"\" : \"k2b-app-workspace__nav-tree-leaf-meta\"}`}\n data-visibility={item.metaVisibility === \"hover\" ? \"hover\" : undefined}\n >\n {item.meta}\n </span>\n </Show>\n <Show when={hasChildren() && !usesIconDisclosure()}>\n <span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\">\n <i class={`ti ${isExpanded(item.id) ? \"ti-chevron-down\" : \"ti-chevron-right\"}`} />\n </span>\n </Show>\n </>\n );\n const row = () => (\n <AppWorkspaceSidebarRow\n hasActions={Boolean(item.actions)}\n href={item.href}\n navigation={item.navigation}\n replace={item.replace}\n scroll={item.scroll}\n onNavigate={item.onNavigate}\n onClick={onRowClick}\n active={selected()}\n disabled={item.disabled}\n tone={item.tone}\n title={item.title}\n viewTransitionName={item.viewTransitionName}\n class={`k2b-app-workspace__nav-tree-row ${item.class ?? \"\"}`}\n depth={props.indented === false ? 0 : depth}\n tabIndex={-1}\n actions={item.actions}\n // The marker tells the workspace controller that choosing this row is no destination.\n data={{ \"has-actions\": item.actions ? \"true\" : undefined, \"k2b-nav-tree-disclosure\": disclosureOnly() ? \"true\" : undefined }}\n >\n {rowContent}\n </AppWorkspaceSidebarRow>\n );\n\n // A gap is offered only next to a sibling's own row, never over its sub-items.\n const dropMove = (event: DragEvent): { side: \"before\" | \"after\"; move: AppWorkspaceNavTreeMove } | null => {\n const drag = dragged();\n const row = ownRow();\n if (!drag || !event.dataTransfer?.types.includes(NAV_TREE_DRAG_TYPE)) return null;\n if (drag.parentId !== (parentId ?? null) || drag.id === item.id || !row?.contains(event.target as Node)) return null;\n const rect = row.getBoundingClientRect();\n const side = event.clientY < rect.top + rect.height / 2 ? \"before\" : \"after\";\n const slot = siblingIndex(item.id) + (side === \"after\" ? 1 : 0);\n const move = navTreeMove(siblings(), siblingIndex(drag.id), slot, parentId ?? null);\n return move ? { side, move } : null;\n };\n const onDragStart = (event: DragEvent) => {\n const row = ownRow();\n if (!movable() || !row?.contains(event.target as Node)) return;\n event.stopPropagation();\n setDragged({ id: item.id, parentId: parentId ?? null });\n if (!event.dataTransfer) return;\n event.dataTransfer.effectAllowed = \"move\";\n event.dataTransfer.setData(NAV_TREE_DRAG_TYPE, item.id);\n const rect = row.getBoundingClientRect();\n event.dataTransfer.setDragImage(row, event.clientX - rect.left, event.clientY - rect.top);\n };\n const onDragOver = (event: NavTreeDragEvent) => {\n callDragHandler(item.onDragOver, event);\n const target = dropMove(event);\n if (!target) return;\n event.preventDefault();\n if (event.dataTransfer) event.dataTransfer.dropEffect = \"move\";\n claimedDragOver = event;\n setDropTarget({ id: item.id, side: target.side });\n };\n const onDrop = (event: NavTreeDragEvent) => {\n callDragHandler(item.onDrop, event);\n const target = dropMove(event);\n if (!target) return;\n event.preventDefault();\n event.stopPropagation();\n endDrag();\n requestMove(target.move, false);\n };\n\n return (\n <div\n ref={treeItem}\n class=\"k2b-app-workspace__nav-tree-node\"\n role=\"treeitem\"\n aria-level={depth + 1}\n aria-setsize={siblings().length}\n aria-posinset={place() + 1}\n aria-selected={selected()}\n aria-expanded={hasChildren() ? isExpanded(item.id) : undefined}\n aria-disabled={item.disabled ? \"true\" : undefined}\n tabIndex={item.disabled ? -1 : tabStopId() === item.id ? 0 : -1}\n draggable={movable() ? true : undefined}\n data-k2b-nav-tree-id={item.id}\n data-k2b-nav-tree-parent-id={parentId}\n data-k2b-nav-tree-dragging={dragged()?.id === item.id ? \"\" : undefined}\n data-k2b-nav-tree-drop={dropTarget()?.id === item.id ? dropTarget()!.side : undefined}\n style={{ \"--k2b-nav-tree-depth\": String(props.indented === false ? 0 : depth) }}\n onFocus={() => setFocusedId(item.id)}\n onKeyDown={onKeyDown}\n onDragStart={onDragStart}\n onDragEnter={item.onDragEnter}\n onDragOver={onDragOver}\n onDragLeave={item.onDragLeave}\n onDrop={onDrop}\n >\n {row()}\n <Show when={hasChildren() && isExpanded(item.id)}>\n <div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">\n {renderItems(nested, depth + 1, item.id)}\n </div>\n </Show>\n </div>\n );\n }}\n </For>\n );\n\n // Any other click or focus is the person's choice; only the moved item itself keeps its claim.\n const forgetRefocus = (event: Event) => {\n if (event.type === \"pointerdown\" || (event.target as HTMLElement | null)?.dataset?.k2bNavTreeId !== refocusId) refocusId = null;\n };\n // A row replaced during a drag never receives its dragend; the next pointer movement means the drag is over.\n const forgetDrag = () => {\n if (dragged()) endDrag();\n };\n onMount(() => {\n const doc = root?.ownerDocument;\n doc?.addEventListener(\"pointerdown\", forgetRefocus, true);\n doc?.addEventListener(\"focusin\", forgetRefocus, true);\n doc?.addEventListener(\"pointermove\", forgetDrag, true);\n onCleanup(() => {\n doc?.removeEventListener(\"pointerdown\", forgetRefocus, true);\n doc?.removeEventListener(\"focusin\", forgetRefocus, true);\n doc?.removeEventListener(\"pointermove\", forgetDrag, true);\n });\n });\n\n return (\n <div\n ref={root}\n class={`k2b-app-workspace__nav-tree ${props.class ?? \"\"}`}\n role=\"tree\"\n aria-label={props.ariaLabel}\n onDragOver={(event) => {\n // Runs after the rows: a position no row claimed shows no gap.\n if (claimedDragOver !== event) setDropTarget(null);\n }}\n onDragLeave={(event) => {\n if (!root?.contains(event.relatedTarget as Node | null)) setDropTarget(null);\n }}\n onDragEnd={endDrag}\n >\n {renderItems(roots, 0)}\n </div>\n );\n}) as AppWorkspaceNavTreeComponent;\n\nAppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;\n\nconst AppWorkspaceSidebarIconGrid = (props: AppWorkspaceSidebarIconGridProps) => (\n <section class={`k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? \"\"}`} {...modeAttrs(props.sidebarMode)}>\n <Show when={props.title}>{(title) => <h2>{title()}</h2>}</Show>\n <div class=\"k2b-app-workspace__sidebar-icon-grid\" data-columns={props.columns ?? 2}>\n {props.children}\n </div>\n </section>\n);\n\nconst AppWorkspaceSidebarIconAction = (props: AppWorkspaceSidebarIconActionProps) => {\n const content = <i class={iconClass(props.icon)} aria-hidden=\"true\" />;\n const attrs = () => ({\n class: `k2b-app-workspace__sidebar-icon-action ${props.active ? \"is-active\" : \"\"}`,\n title: props.label,\n \"aria-label\": props.label,\n \"data-tone\": props.tone,\n style: { \"view-transition-name\": props.viewTransitionName },\n ...modeAttrs(props.sidebarMode),\n });\n if (!props.href || props.disabled)\n return (\n <button type=\"button\" {...attrs()} disabled={props.disabled} onClick={props.onClick}>\n {content}\n </button>\n );\n if (props.navigation !== \"enhanced\" || !props.onNavigate)\n return (\n <a href={props.href} {...attrs()} onClick={props.onClick}>\n {content}\n </a>\n );\n return (\n <Link\n href={props.href}\n {...attrs()}\n replace={props.replace}\n scroll={props.scroll}\n onNavigate={props.onNavigate}\n onClick={props.onClick}\n >\n {content}\n </Link>\n );\n};\n\ntype AppWorkspaceComponent = ((props: AppWorkspaceProps) => JSX.Element) & {\n LayoutStateProvider: (props: AppWorkspaceLayoutStateProviderProps) => JSX.Element;\n Content: (props: AppWorkspaceContentProps) => JSX.Element;\n Main: (props: AppWorkspaceMainProps) => JSX.Element;\n MainPane: (props: AppWorkspaceMainPaneProps) => JSX.Element;\n Detail: (props: AppWorkspaceDetailProps) => JSX.Element;\n BottomDrawer: (props: AppWorkspaceBottomDrawerProps) => JSX.Element;\n Sidebar: (props: AppWorkspaceSidebarProps) => JSX.Element;\n SidebarDesktop: (props: { children: JSX.Element }) => JSX.Element;\n SidebarSection: (props: AppWorkspaceSidebarSectionProps) => JSX.Element;\n SidebarBody: (props: AppWorkspaceSidebarBodyProps) => JSX.Element;\n SidebarFooter: (props: AppWorkspaceSidebarContentProps) => JSX.Element;\n SidebarItem: (props: AppWorkspaceSidebarItemProps) => JSX.Element;\n SidebarItemIcon: (props: AppWorkspaceSidebarItemIconProps) => JSX.Element;\n SidebarItemLabel: (props: AppWorkspaceSidebarItemLabelProps) => JSX.Element;\n SidebarItemMeta: (props: AppWorkspaceSidebarItemMetaProps) => JSX.Element;\n SidebarItemAction: (props: AppWorkspaceSidebarItemActionProps) => JSX.Element;\n SidebarItemActions: (props: AppWorkspaceSidebarItemActionsProps) => JSX.Element;\n SidebarItemStatus: (props: AppWorkspaceSidebarItemStatusProps) => JSX.Element;\n NavTree: AppWorkspaceNavTreeComponent;\n SidebarIconGrid: (props: AppWorkspaceSidebarIconGridProps) => JSX.Element;\n SidebarIconAction: (props: AppWorkspaceSidebarIconActionProps) => JSX.Element;\n};\n\n/**\n * The row above the work area. From 48 to 64 rem it holds the button that\n * opens the overlay sidebar. On a page with a page above it, at every width,\n * it shows the host's page title with the way up (see `PageTitle`); the\n * page's own `PageTitle` takes its place. It is one fixed height and draws no\n * line; CSS decides when it shows, so the server-rendered page already has\n * its final geometry.\n */\nfunction AppWorkspaceHead(props: { sidebarId: () => string; nested: boolean }): JSX.Element {\n const messages = useWorkspaceMessages();\n // A nested workspace is part of a page that already shows its title.\n const trail = props.nested ? () => undefined : usePageTrail();\n return (\n <div class=\"k2b-app-workspace__head\" data-trail={trail()?.ancestors.length ? \"up\" : trail() ? \"title\" : undefined}>\n <IconButton\n class=\"k2b-app-workspace__head-toggle\"\n label={messages().showNavigation}\n aria-controls={props.sidebarId()}\n aria-expanded=\"false\"\n data-app-workspace-sidebar-toggle=\"\"\n >\n <i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\" />\n </IconButton>\n <Show when={trail()}>{(current) => <PageTitle trail={current()} as=\"p\" fallback />}</Show>\n </div>\n );\n}\n\nconst AppWorkspace = ((props: AppWorkspaceProps) => {\n let root: HTMLDivElement | undefined;\n const serverLayoutState = useContext(LayoutStateContext);\n const nested = Boolean(useContext(WorkspaceContext));\n const [sidebarId, setSidebarId] = createSignal(`k2b-workspace-sidebar-${createUniqueId()}`);\n const workspace = { sidebarId: sidebarId(), setSidebarId };\n const initialLayoutState = () => props.layoutState?.() ?? serverLayoutState;\n\n // The resize handles are inert markup until the controller is attached, so\n // the workspace attaches it itself and scopes it to this root. `onMount`\n // never runs during SSR, and the disposer removes every listener. A host\n // shell may own one document-level controller for SSR and hydrated roots;\n // its marker keeps controller ownership singular without app-level props.\n onMount(() => {\n if (props.controller === false || !root || root.closest(\"[data-k2b-app-workspace-controller]\")) return;\n onCleanup(\n installAppWorkspaceController({\n root,\n readState: () => (props.layoutState ? props.layoutState() : serverLayoutState),\n writeState: (state) => props.onLayoutChange?.(state),\n }),\n );\n });\n\n return (\n <ResizeContext.Provider value={props.resizable !== false}>\n <WorkspaceContext.Provider value={workspace}>\n <div\n ref={root}\n class={`k2b-app-workspace ${props.class ?? \"\"}`}\n data-k2b-app-workspace\n data-mobile-surface={props.mobileSurface}\n data-sidebar-collapsed={\n initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed)\n }\n data-workspace-resizable={props.resizable === false ? \"false\" : \"true\"}\n style={appWorkspaceLayoutStyle(initialLayoutState())}\n >\n <AppWorkspaceHead sidebarId={sidebarId} nested={nested} />\n {props.children}\n </div>\n </WorkspaceContext.Provider>\n </ResizeContext.Provider>\n );\n}) as AppWorkspaceComponent;\n\nAppWorkspace.LayoutStateProvider = (props) => (\n <LayoutStateContext.Provider value={props.state ?? null}>{props.children}</LayoutStateContext.Provider>\n);\nAppWorkspace.Content = (props) => <div class={`k2b-app-workspace__content ${props.class ?? \"\"}`}>{props.children}</div>;\nAppWorkspace.Main = AppWorkspaceMain;\nAppWorkspace.MainPane = AppWorkspaceMainPane;\nAppWorkspace.Detail = AppWorkspaceDetail;\nAppWorkspace.BottomDrawer = AppWorkspaceBottomDrawer;\nAppWorkspace.Sidebar = AppWorkspaceSidebar;\nAppWorkspace.SidebarDesktop = AppWorkspaceSidebarDesktop;\nAppWorkspace.SidebarSection = AppWorkspaceSidebarSection;\nAppWorkspace.SidebarBody = AppWorkspaceSidebarBody;\nAppWorkspace.SidebarFooter = AppWorkspaceSidebarFooter;\nAppWorkspace.SidebarItem = AppWorkspaceSidebarItem;\nAppWorkspace.SidebarItemIcon = AppWorkspaceSidebarItemIcon;\nAppWorkspace.SidebarItemLabel = AppWorkspaceSidebarItemLabel;\nAppWorkspace.SidebarItemMeta = AppWorkspaceSidebarItemMeta;\nAppWorkspace.SidebarItemAction = AppWorkspaceSidebarItemAction;\nAppWorkspace.SidebarItemActions = AppWorkspaceSidebarItemActions;\nAppWorkspace.SidebarItemStatus = AppWorkspaceSidebarItemStatus;\nAppWorkspace.NavTree = AppWorkspaceNavTree;\nAppWorkspace.SidebarIconGrid = AppWorkspaceSidebarIconGrid;\nAppWorkspace.SidebarIconAction = AppWorkspaceSidebarIconAction;\n\nexport default AppWorkspace;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
|
4
4
|
import { escape as _$escape } from "solid-js/web";
|
|
5
5
|
var _tmpl$ = ["<button type=\"button\" class=\"k2b-bottom-sheet__handle\"", "", "><span aria-hidden=\"true\"></span></button>"];
|
|
6
6
|
import { Show } from "solid-js";
|
|
7
|
+
import { suppressTextSelection } from "../internal/text-selection";
|
|
7
8
|
import { useUiMessages } from "../intl/messages";
|
|
8
9
|
import PanelDialog from "./PanelDialog";
|
|
9
10
|
|