@k2b/ui 0.2.0 → 0.4.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 +11 -2
- package/dist/browser/actions/Button.js.map +1 -1
- package/dist/browser/actions/Disclosure.js +11 -8
- package/dist/browser/actions/Disclosure.js.map +1 -1
- package/dist/browser/actions/Dropdown.js +4 -1
- package/dist/browser/actions/Dropdown.js.map +1 -1
- package/dist/browser/actions/FilterChip.js +16 -2
- package/dist/browser/actions/FilterChip.js.map +1 -1
- package/dist/browser/actions/SplitButton.js +69 -22
- package/dist/browser/actions/SplitButton.js.map +1 -1
- package/dist/browser/actions/SpotlightSearch.js +3 -7
- package/dist/browser/actions/SpotlightSearch.js.map +1 -1
- package/dist/browser/actions/Tabs.js +132 -47
- package/dist/browser/actions/Tabs.js.map +1 -1
- package/dist/browser/actions/index.js +2 -2
- package/dist/browser/actions/index.js.map +1 -1
- package/dist/browser/chat/ChatComposer.js +751 -423
- package/dist/browser/chat/ChatComposer.js.map +1 -1
- package/dist/browser/chat/ChatContextPopup.js +123 -0
- package/dist/browser/chat/ChatContextPopup.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +141 -78
- package/dist/browser/chat/ChatPrimitives.js.map +1 -1
- package/dist/browser/chat/ChatTasks.js +112 -0
- package/dist/browser/chat/ChatTasks.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +31 -14
- package/dist/browser/chat/ChatTimeline.js.map +1 -1
- package/dist/browser/chat/chat-behavior.js +0 -5
- package/dist/browser/chat/chat-behavior.js.map +1 -1
- package/dist/browser/chat/composer-document.js +55 -0
- package/dist/browser/chat/composer-document.js.map +1 -0
- package/dist/browser/chat/index.js +6 -1
- package/dist/browser/chat/index.js.map +1 -1
- package/dist/browser/chat/types.js.map +1 -1
- package/dist/browser/content/Chart.js +148 -239
- package/dist/browser/content/Chart.js.map +1 -1
- package/dist/browser/content/ChartExplorer.js +324 -0
- package/dist/browser/content/ChartExplorer.js.map +1 -0
- package/dist/browser/content/ChartExplorerControls.js +153 -0
- package/dist/browser/content/ChartExplorerControls.js.map +1 -0
- package/dist/browser/content/ChartFilterControls.js +200 -0
- package/dist/browser/content/ChartFilterControls.js.map +1 -0
- package/dist/browser/content/ChartSnapshotView.js +114 -0
- package/dist/browser/content/ChartSnapshotView.js.map +1 -0
- package/dist/browser/content/DataTable.js +48 -32
- package/dist/browser/content/DataTable.js.map +1 -1
- package/dist/browser/content/FileBrowser.js +3 -0
- package/dist/browser/content/FileBrowser.js.map +1 -1
- package/dist/browser/content/FileGrid.js +93 -0
- package/dist/browser/content/FileGrid.js.map +1 -0
- package/dist/browser/content/FileTree.js +2 -2
- package/dist/browser/content/FileTree.js.map +1 -1
- package/dist/browser/content/FileView.js +511 -162
- package/dist/browser/content/FileView.js.map +1 -1
- package/dist/browser/content/MarkdownView.js +6 -0
- package/dist/browser/content/MarkdownView.js.map +1 -1
- package/dist/browser/content/Pagination.js.map +1 -1
- package/dist/browser/content/PdfPreview.js +107 -90
- package/dist/browser/content/PdfPreview.js.map +1 -1
- package/dist/browser/content/chart-cursor.js +33 -0
- package/dist/browser/content/chart-cursor.js.map +1 -0
- package/dist/browser/content/chart-explorer.js +147 -0
- package/dist/browser/content/chart-explorer.js.map +1 -0
- package/dist/browser/content/chart-inspection.js +447 -0
- package/dist/browser/content/chart-inspection.js.map +1 -0
- package/dist/browser/content/chart-line-gaps.js +53 -0
- package/dist/browser/content/chart-line-gaps.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +5 -1
- package/dist/browser/content/chart-map-viewport.js.map +1 -1
- package/dist/browser/content/chart-snapshot.js +63 -0
- package/dist/browser/content/chart-snapshot.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +32 -4
- package/dist/browser/content/chart-state-timeline.js.map +1 -1
- package/dist/browser/content/chart-svg.js +54 -0
- package/dist/browser/content/chart-svg.js.map +1 -0
- package/dist/browser/content/collection-selection.js +109 -0
- package/dist/browser/content/collection-selection.js.map +1 -0
- package/dist/browser/content/delimited-preferences.js +21 -0
- package/dist/browser/content/delimited-preferences.js.map +1 -0
- package/dist/browser/content/file-tree.js.map +1 -1
- package/dist/browser/content/file-view-preview.js +11 -7
- package/dist/browser/content/file-view-preview.js.map +1 -1
- package/dist/browser/content/index.js +9 -0
- package/dist/browser/content/index.js.map +1 -1
- package/dist/browser/feedback/InlineGuidance.js +17 -3
- package/dist/browser/feedback/InlineGuidance.js.map +1 -1
- package/dist/browser/feedback/dialog-core.js +81 -7
- package/dist/browser/feedback/dialog-core.js.map +1 -1
- package/dist/browser/feedback/prompts.js +6 -0
- package/dist/browser/feedback/prompts.js.map +1 -1
- package/dist/browser/feedback/toast.js +29 -6
- package/dist/browser/feedback/toast.js.map +1 -1
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
- package/dist/browser/inputs/Select.js.map +1 -1
- package/dist/browser/inputs/SelectChip.js +3 -2
- package/dist/browser/inputs/SelectChip.js.map +1 -1
- package/dist/browser/inputs/TextInput.js +7 -1
- package/dist/browser/inputs/TextInput.js.map +1 -1
- package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/browser/inputs/markdown/behaviors.js +1 -1
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
- package/dist/browser/intl/Format.js +89 -16
- package/dist/browser/intl/Format.js.map +1 -1
- package/dist/browser/intl/index.js.map +1 -1
- package/dist/browser/intl/messages.js +130 -2
- package/dist/browser/intl/messages.js.map +1 -1
- package/dist/browser/layout/AppWorkspace.js +712 -624
- package/dist/browser/layout/AppWorkspace.js.map +1 -1
- package/dist/browser/layout/BottomSheet.js +95 -0
- package/dist/browser/layout/BottomSheet.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +56 -44
- package/dist/browser/layout/DetailPanel.js.map +1 -1
- package/dist/browser/layout/Navigation.js +278 -0
- package/dist/browser/layout/Navigation.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +219 -71
- package/dist/browser/layout/PanelDialog.js.map +1 -1
- package/dist/browser/layout/ScrollArea.js +21 -1
- package/dist/browser/layout/ScrollArea.js.map +1 -1
- package/dist/browser/layout/Settings.js.map +1 -1
- package/dist/browser/layout/SidebarItemPreview.js +183 -0
- package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +3 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -1
- package/dist/browser/layout/app-workspace-state.js.map +1 -1
- package/dist/browser/layout/index.js +3 -0
- package/dist/browser/layout/index.js.map +1 -1
- package/dist/browser/layout/navigation-model.js +23 -0
- package/dist/browser/layout/navigation-model.js.map +1 -0
- package/dist/browser/layout/scroll-fade.js +100 -0
- package/dist/browser/layout/scroll-fade.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -1
- package/dist/browser/surfaces/StatusBadge.js +2 -1
- package/dist/browser/surfaces/StatusBadge.js.map +1 -1
- package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
- package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
- package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
- package/dist/plex.css +1 -1
- package/dist/ssr/actions/Button.js +11 -2
- package/dist/ssr/actions/Button.js.map +1 -1
- package/dist/ssr/actions/Disclosure.js +2 -2
- package/dist/ssr/actions/Disclosure.js.map +1 -1
- package/dist/ssr/actions/Dropdown.js +4 -1
- package/dist/ssr/actions/Dropdown.js.map +1 -1
- package/dist/ssr/actions/FilterChip.js +16 -2
- package/dist/ssr/actions/FilterChip.js.map +1 -1
- package/dist/ssr/actions/SplitButton.js +69 -22
- package/dist/ssr/actions/SplitButton.js.map +1 -1
- package/dist/ssr/actions/SpotlightSearch.js +3 -7
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
- package/dist/ssr/actions/Tabs.js +58 -11
- package/dist/ssr/actions/Tabs.js.map +1 -1
- package/dist/ssr/actions/index.js +2 -2
- package/dist/ssr/actions/index.js.map +1 -1
- package/dist/ssr/chat/ChatComposer.js +366 -134
- package/dist/ssr/chat/ChatComposer.js.map +1 -1
- package/dist/ssr/chat/ChatContextPopup.js +86 -0
- package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +49 -11
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
- package/dist/ssr/chat/ChatTasks.js +48 -0
- package/dist/ssr/chat/ChatTasks.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +14 -4
- package/dist/ssr/chat/ChatTimeline.js.map +1 -1
- package/dist/ssr/chat/chat-behavior.js +0 -5
- package/dist/ssr/chat/chat-behavior.js.map +1 -1
- package/dist/ssr/chat/composer-document.js +55 -0
- package/dist/ssr/chat/composer-document.js.map +1 -0
- package/dist/ssr/chat/index.js +6 -1
- package/dist/ssr/chat/index.js.map +1 -1
- package/dist/ssr/chat/types.js.map +1 -1
- package/dist/ssr/content/Chart.js +121 -219
- package/dist/ssr/content/Chart.js.map +1 -1
- package/dist/ssr/content/ChartExplorer.js +257 -0
- package/dist/ssr/content/ChartExplorer.js.map +1 -0
- package/dist/ssr/content/ChartExplorerControls.js +105 -0
- package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
- package/dist/ssr/content/ChartFilterControls.js +139 -0
- package/dist/ssr/content/ChartFilterControls.js.map +1 -0
- package/dist/ssr/content/ChartSnapshotView.js +58 -0
- package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
- package/dist/ssr/content/DataTable.js +13 -9
- package/dist/ssr/content/DataTable.js.map +1 -1
- package/dist/ssr/content/FileBrowser.js +3 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -1
- package/dist/ssr/content/FileGrid.js +38 -0
- package/dist/ssr/content/FileGrid.js.map +1 -0
- package/dist/ssr/content/FileTree.js +2 -2
- package/dist/ssr/content/FileTree.js.map +1 -1
- package/dist/ssr/content/FileView.js +356 -75
- package/dist/ssr/content/FileView.js.map +1 -1
- package/dist/ssr/content/MarkdownView.js +6 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -1
- package/dist/ssr/content/Pagination.js.map +1 -1
- package/dist/ssr/content/PdfPreview.js +37 -24
- package/dist/ssr/content/PdfPreview.js.map +1 -1
- package/dist/ssr/content/chart-cursor.js +33 -0
- package/dist/ssr/content/chart-cursor.js.map +1 -0
- package/dist/ssr/content/chart-explorer.js +147 -0
- package/dist/ssr/content/chart-explorer.js.map +1 -0
- package/dist/ssr/content/chart-inspection.js +447 -0
- package/dist/ssr/content/chart-inspection.js.map +1 -0
- package/dist/ssr/content/chart-line-gaps.js +53 -0
- package/dist/ssr/content/chart-line-gaps.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +5 -1
- package/dist/ssr/content/chart-map-viewport.js.map +1 -1
- package/dist/ssr/content/chart-snapshot.js +63 -0
- package/dist/ssr/content/chart-snapshot.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +32 -4
- package/dist/ssr/content/chart-state-timeline.js.map +1 -1
- package/dist/ssr/content/chart-svg.js +54 -0
- package/dist/ssr/content/chart-svg.js.map +1 -0
- package/dist/ssr/content/collection-selection.js +109 -0
- package/dist/ssr/content/collection-selection.js.map +1 -0
- package/dist/ssr/content/delimited-preferences.js +21 -0
- package/dist/ssr/content/delimited-preferences.js.map +1 -0
- package/dist/ssr/content/file-tree.js.map +1 -1
- package/dist/ssr/content/file-view-preview.js +11 -7
- package/dist/ssr/content/file-view-preview.js.map +1 -1
- package/dist/ssr/content/index.js +9 -0
- package/dist/ssr/content/index.js.map +1 -1
- package/dist/ssr/feedback/InlineGuidance.js +17 -3
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
- package/dist/ssr/feedback/dialog-core.js +81 -7
- package/dist/ssr/feedback/dialog-core.js.map +1 -1
- package/dist/ssr/feedback/prompts.js +6 -0
- package/dist/ssr/feedback/prompts.js.map +1 -1
- package/dist/ssr/feedback/toast.js +29 -6
- package/dist/ssr/feedback/toast.js.map +1 -1
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
- 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/TextInput.js.map +1 -1
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js +1 -1
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
- package/dist/ssr/intl/Format.js +61 -0
- package/dist/ssr/intl/Format.js.map +1 -1
- package/dist/ssr/intl/index.js.map +1 -1
- package/dist/ssr/intl/messages.js +130 -2
- package/dist/ssr/intl/messages.js.map +1 -1
- package/dist/ssr/layout/AppWorkspace.js +368 -275
- package/dist/ssr/layout/AppWorkspace.js.map +1 -1
- package/dist/ssr/layout/BottomSheet.js +43 -0
- package/dist/ssr/layout/BottomSheet.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +11 -4
- package/dist/ssr/layout/DetailPanel.js.map +1 -1
- package/dist/ssr/layout/Navigation.js +181 -0
- package/dist/ssr/layout/Navigation.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +111 -26
- package/dist/ssr/layout/PanelDialog.js.map +1 -1
- package/dist/ssr/layout/ScrollArea.js +16 -1
- package/dist/ssr/layout/ScrollArea.js.map +1 -1
- package/dist/ssr/layout/Settings.js.map +1 -1
- package/dist/ssr/layout/SidebarItemPreview.js +133 -0
- package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +3 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
- package/dist/ssr/layout/app-workspace-state.js.map +1 -1
- package/dist/ssr/layout/index.js +3 -0
- package/dist/ssr/layout/index.js.map +1 -1
- package/dist/ssr/layout/navigation-model.js +23 -0
- package/dist/ssr/layout/navigation-model.js.map +1 -0
- package/dist/ssr/layout/scroll-fade.js +100 -0
- package/dist/ssr/layout/scroll-fade.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
- package/dist/ssr/surfaces/StatusBadge.js +2 -1
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/tabler.css +1 -1
- package/dist/types/actions/Button.d.ts +4 -0
- package/dist/types/actions/Disclosure.d.ts +1 -0
- package/dist/types/actions/FilterChip.d.ts +4 -0
- package/dist/types/actions/SplitButton.d.ts +6 -0
- package/dist/types/actions/SpotlightSearch.d.ts +0 -4
- package/dist/types/actions/Tabs.d.ts +4 -0
- package/dist/types/actions/index.d.ts +4 -4
- package/dist/types/chat/ChatComposer.d.ts +20 -2
- package/dist/types/chat/ChatContextPopup.d.ts +6 -0
- package/dist/types/chat/ChatPrimitives.d.ts +4 -0
- package/dist/types/chat/ChatTasks.d.ts +15 -0
- package/dist/types/chat/ChatTimeline.d.ts +2 -0
- package/dist/types/chat/chat-behavior.d.ts +0 -3
- package/dist/types/chat/composer-document.d.ts +14 -0
- package/dist/types/chat/index.d.ts +8 -1
- package/dist/types/chat/types.d.ts +7 -0
- package/dist/types/content/Chart.d.ts +42 -23
- package/dist/types/content/ChartExplorer.d.ts +34 -0
- package/dist/types/content/ChartExplorerControls.d.ts +10 -0
- package/dist/types/content/ChartFilterControls.d.ts +21 -0
- package/dist/types/content/ChartSnapshotView.d.ts +11 -0
- package/dist/types/content/DataTable.d.ts +4 -0
- package/dist/types/content/FileBrowser.d.ts +1 -0
- package/dist/types/content/FileGrid.d.ts +21 -0
- package/dist/types/content/FileView.d.ts +20 -0
- package/dist/types/content/PdfPreview.d.ts +8 -1
- package/dist/types/content/chart-cursor.d.ts +15 -0
- package/dist/types/content/chart-explorer.d.ts +48 -0
- package/dist/types/content/chart-inspection.d.ts +40 -0
- package/dist/types/content/chart-line-gaps.d.ts +5 -0
- package/dist/types/content/chart-map-viewport.d.ts +1 -1
- package/dist/types/content/chart-snapshot.d.ts +26 -0
- package/dist/types/content/chart-svg.d.ts +21 -0
- package/dist/types/content/collection-selection.d.ts +24 -0
- package/dist/types/content/delimited-preferences.d.ts +11 -0
- package/dist/types/content/file-tree.d.ts +2 -0
- package/dist/types/content/file-view-preview.d.ts +4 -1
- package/dist/types/content/index.d.ts +16 -2
- package/dist/types/feedback/InlineGuidance.d.ts +1 -0
- package/dist/types/feedback/dialog-core.d.ts +11 -0
- package/dist/types/feedback/prompts.d.ts +2 -0
- package/dist/types/feedback/toast.d.ts +7 -1
- package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
- package/dist/types/intl/Format.d.ts +9 -0
- package/dist/types/intl/index.d.ts +1 -1
- package/dist/types/intl/messages.d.ts +31 -1
- package/dist/types/layout/AppWorkspace.d.ts +35 -18
- package/dist/types/layout/BottomSheet.d.ts +23 -0
- package/dist/types/layout/DetailPanel.d.ts +1 -0
- package/dist/types/layout/Navigation.d.ts +8 -0
- package/dist/types/layout/PanelDialog.d.ts +14 -1
- package/dist/types/layout/ScrollArea.d.ts +4 -0
- package/dist/types/layout/Settings.d.ts +1 -1
- package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
- package/dist/types/layout/index.d.ts +4 -1
- package/dist/types/layout/navigation-model.d.ts +48 -0
- package/dist/types/layout/scroll-fade.d.ts +3 -0
- package/dist/types/surfaces/DescriptionList.d.ts +1 -1
- package/dist/types/surfaces/StatusBadge.d.ts +1 -1
- package/package.json +5 -7
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
2
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
3
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
4
|
+
import { escape as _$escape } from "solid-js/web";
|
|
5
|
+
var _tmpl$ = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
|
|
6
|
+
_tmpl$2 = ["<span class=\"k2b-sr-only\">", " \xB7 ", ": ", "</span>"],
|
|
7
|
+
_tmpl$3 = ["<div class=\"k2b-chart-explorer__header\"><strong>", "</strong><div class=\"k2b-chart-explorer__actions\"><span class=\"k2b-chart-group-controls__loading\"", " role=\"status\"", ">", "</span>", "</div></div>"],
|
|
8
|
+
_tmpl$4 = "<i class=\"ti ti-x\" aria-hidden=\"true\"></i>",
|
|
9
|
+
_tmpl$5 = ["<div class=\"k2b-chart-explorer__actions\" aria-live=\"polite\">", "", "</div>"],
|
|
10
|
+
_tmpl$6 = "<span aria-hidden=\"true\">\u25CF</span>",
|
|
11
|
+
_tmpl$7 = "<span aria-hidden=\"true\">\u25CB</span>";
|
|
12
|
+
import { Show } from "solid-js";
|
|
13
|
+
import { Button } from "../actions/Button";
|
|
14
|
+
import { useUiMessages } from "../intl/messages";
|
|
15
|
+
import { Paper } from "../surfaces/Paper";
|
|
16
|
+
import { StatusBadge } from "../surfaces/StatusBadge";
|
|
17
|
+
import { ChartFilterControls } from "./ChartFilterControls";
|
|
18
|
+
export function ChartExplorerControls(props) {
|
|
19
|
+
const messages = useUiMessages();
|
|
20
|
+
const label = key => props.steps?.find(step => step.key === key)?.label ?? key ?? "";
|
|
21
|
+
return _$createComponent(Paper, {
|
|
22
|
+
"class": "k2b-chart-group-controls",
|
|
23
|
+
get children() {
|
|
24
|
+
return [_$ssr(_tmpl$3, _$escape(props.title), _$ssrAttribute("data-loading", _$escape(props.explorer.loading() || undefined, true), false), _$ssrAttribute("title", props.explorer.loading() ? `${_$escape(messages().loading, true)} · ${_$escape(messages().chartPreviousData, true)}: ${_$escape(label(props.explorer.snapshot().request.step), true)}` : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
|
|
25
|
+
get when() {
|
|
26
|
+
return props.explorer.loading();
|
|
27
|
+
},
|
|
28
|
+
get children() {
|
|
29
|
+
return [_$ssr(_tmpl$), _$ssr(_tmpl$2, _$escape(messages().loading), _$escape(messages().chartPreviousData), _$escape(label(props.explorer.snapshot().request.step)))];
|
|
30
|
+
}
|
|
31
|
+
})), _$escape(_$createComponent(Show, {
|
|
32
|
+
get when() {
|
|
33
|
+
return props.steps?.length && props.explorer.snapshot().request.step !== undefined;
|
|
34
|
+
},
|
|
35
|
+
get children() {
|
|
36
|
+
return [_$createComponent(Show, {
|
|
37
|
+
get when() {
|
|
38
|
+
return props.explorer.desired().referenceStep;
|
|
39
|
+
},
|
|
40
|
+
children: reference => _$createComponent(Button, {
|
|
41
|
+
size: "sm",
|
|
42
|
+
variant: "secondary",
|
|
43
|
+
onClick: () => void props.explorer.clearReference(),
|
|
44
|
+
get ["aria-label"]() {
|
|
45
|
+
return `${messages().chartRemoveComparison}: ${label(reference())}`;
|
|
46
|
+
},
|
|
47
|
+
get children() {
|
|
48
|
+
return [messages().chartReference, ": ", label(reference()), " ", _$ssr(_tmpl$4)];
|
|
49
|
+
}
|
|
50
|
+
})
|
|
51
|
+
}), _$createComponent(Button, {
|
|
52
|
+
size: "sm",
|
|
53
|
+
variant: "secondary",
|
|
54
|
+
get disabled() {
|
|
55
|
+
return props.explorer.loading() || props.explorer.error() !== null || props.explorer.desired().referenceStep === props.explorer.snapshot().request.step;
|
|
56
|
+
},
|
|
57
|
+
onClick: () => void props.explorer.pinReference(),
|
|
58
|
+
get children() {
|
|
59
|
+
return messages().chartPinReference;
|
|
60
|
+
}
|
|
61
|
+
})];
|
|
62
|
+
}
|
|
63
|
+
}))), _$createComponent(ChartFilterControls, {
|
|
64
|
+
get request() {
|
|
65
|
+
return props.explorer.desired();
|
|
66
|
+
},
|
|
67
|
+
get displayedRequest() {
|
|
68
|
+
return props.explorer.snapshot().request;
|
|
69
|
+
},
|
|
70
|
+
get steps() {
|
|
71
|
+
return props.steps;
|
|
72
|
+
},
|
|
73
|
+
get series() {
|
|
74
|
+
return props.series;
|
|
75
|
+
},
|
|
76
|
+
get dimensionLabel() {
|
|
77
|
+
return props.dimensionLabel;
|
|
78
|
+
},
|
|
79
|
+
get failed() {
|
|
80
|
+
return props.explorer.error() !== null;
|
|
81
|
+
},
|
|
82
|
+
onRequest: request => void props.explorer.setRequest(request),
|
|
83
|
+
onRetry: () => void props.explorer.retry()
|
|
84
|
+
}), _$createComponent(Show, {
|
|
85
|
+
get when() {
|
|
86
|
+
return props.explorer.snapshot().request.referenceStep;
|
|
87
|
+
},
|
|
88
|
+
children: reference => _$ssr(_tmpl$5, _$escape(_$createComponent(StatusBadge, {
|
|
89
|
+
tone: "neutral",
|
|
90
|
+
icon: null,
|
|
91
|
+
get label() {
|
|
92
|
+
return [_$ssr(_tmpl$6), " ", messages().chartCurrent, ": ", label(props.explorer.snapshot().request.step)];
|
|
93
|
+
}
|
|
94
|
+
})), _$escape(_$createComponent(StatusBadge, {
|
|
95
|
+
tone: "neutral",
|
|
96
|
+
icon: null,
|
|
97
|
+
get label() {
|
|
98
|
+
return [_$ssr(_tmpl$7), " ", messages().chartReference, ": ", label(reference())];
|
|
99
|
+
}
|
|
100
|
+
})))
|
|
101
|
+
})];
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=ChartExplorerControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Show","Button","useUiMessages","Paper","StatusBadge","ChartFilterControls","ChartExplorerControls","props","messages","label","key","steps","find","step","_$createComponent","children","_$ssr","_tmpl$3","_$escape","title","_$ssrAttribute","explorer","loading","undefined","chartPreviousData","snapshot","request","when","_tmpl$","_tmpl$2","length","desired","referenceStep","reference","size","variant","onClick","clearReference","aria-label","chartRemoveComparison","chartReference","_tmpl$4","disabled","error","pinReference","chartPinReference","displayedRequest","series","dimensionLabel","failed","onRequest","setRequest","onRetry","retry","_tmpl$5","tone","icon","_tmpl$6","chartCurrent","_tmpl$7"],"sources":["content/ChartExplorerControls.tsx"],"sourcesContent":["import { Show } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { Paper } from \"../surfaces/Paper\";\nimport { StatusBadge } from \"../surfaces/StatusBadge\";\nimport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nimport type { ChartExplorerCharts, ChartExplorerController } from \"./chart-explorer\";\n\nexport type ChartExplorerControlsProps<C extends ChartExplorerCharts> = {\n explorer: ChartExplorerController<C>;\n title: string;\n steps?: ChartFilterControlsProps[\"steps\"];\n series?: ChartFilterControlsProps[\"series\"];\n dimensionLabel?: string;\n};\n\nexport function ChartExplorerControls<C extends ChartExplorerCharts>(props: ChartExplorerControlsProps<C>) {\n const messages = useUiMessages();\n const label = (key: string | undefined) => props.steps?.find((step) => step.key === key)?.label ?? key ?? \"\";\n return (\n <Paper class=\"k2b-chart-group-controls\">\n <div class=\"k2b-chart-explorer__header\">\n <strong>{props.title}</strong>\n <div class=\"k2b-chart-explorer__actions\">\n <span\n class=\"k2b-chart-group-controls__loading\"\n data-loading={props.explorer.loading() || undefined}\n role=\"status\"\n title={\n props.explorer.loading()\n ? `${messages().loading} · ${messages().chartPreviousData}: ${label(props.explorer.snapshot().request.step)}`\n : undefined\n }\n >\n <Show when={props.explorer.loading()}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">\n {messages().loading} · {messages().chartPreviousData}: {label(props.explorer.snapshot().request.step)}\n </span>\n </Show>\n </span>\n <Show when={props.steps?.length && props.explorer.snapshot().request.step !== undefined}>\n <Show when={props.explorer.desired().referenceStep}>\n {(reference) => (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={() => void props.explorer.clearReference()}\n aria-label={`${messages().chartRemoveComparison}: ${label(reference())}`}\n >\n {messages().chartReference}: {label(reference())} <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </Button>\n )}\n </Show>\n <Button\n size=\"sm\"\n variant=\"secondary\"\n disabled={\n props.explorer.loading() ||\n props.explorer.error() !== null ||\n props.explorer.desired().referenceStep === props.explorer.snapshot().request.step\n }\n onClick={() => void props.explorer.pinReference()}\n >\n {messages().chartPinReference}\n </Button>\n </Show>\n </div>\n </div>\n <ChartFilterControls\n request={props.explorer.desired()}\n displayedRequest={props.explorer.snapshot().request}\n steps={props.steps}\n series={props.series}\n dimensionLabel={props.dimensionLabel}\n failed={props.explorer.error() !== null}\n onRequest={(request) => void props.explorer.setRequest(request)}\n onRetry={() => void props.explorer.retry()}\n />\n <Show when={props.explorer.snapshot().request.referenceStep}>\n {(reference) => (\n <div class=\"k2b-chart-explorer__actions\" aria-live=\"polite\">\n <StatusBadge\n tone=\"neutral\"\n icon={null}\n label={\n <>\n <span aria-hidden=\"true\">●</span> {messages().chartCurrent}: {label(props.explorer.snapshot().request.step)}\n </>\n }\n />\n <StatusBadge\n tone=\"neutral\"\n icon={null}\n label={\n <>\n <span aria-hidden=\"true\">○</span> {messages().chartReference}: {label(reference())}\n </>\n }\n />\n </div>\n )}\n </Show>\n </Paper>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
2
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
3
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
4
|
+
import { escape as _$escape } from "solid-js/web";
|
|
5
|
+
var _tmpl$ = ["<div class=\"k2b-chart-explorer__dimension\" role=\"group\"", ">", "<output class=\"k2b-chart-explorer__dimension-value\" for=\"", "\">", "</output><div id=\"", "\" class=\"k2b-chart-explorer__steps\">", "</div></div>"],
|
|
6
|
+
_tmpl$2 = ["<div class=\"k2b-chart-explorer__legend\">", "<div class=\"k2b-chart-explorer__status\" role=\"status\">", "", "</div></div>"],
|
|
7
|
+
_tmpl$3 = ["<span", ">", "</span>"];
|
|
8
|
+
import { createEffect, createSignal, createUniqueId, For, Show } from "solid-js";
|
|
9
|
+
import { Button } from "../actions/Button";
|
|
10
|
+
import { FilterChip } from "../actions/FilterChip";
|
|
11
|
+
import { Slider } from "../inputs/ChoiceInputs";
|
|
12
|
+
import { useUiMessages } from "../intl/messages";
|
|
13
|
+
/** Shared controls for a standalone explorer or an atomic group of charts. */
|
|
14
|
+
export function ChartFilterControls(props) {
|
|
15
|
+
const validateOptions = () => {
|
|
16
|
+
for (const items of [props.steps, props.series]) {
|
|
17
|
+
const keys = items?.map(item => item.key) ?? [];
|
|
18
|
+
if (keys.some(key => !key) || new Set(keys).size !== keys.length) throw new Error("Chart control options require nonempty unique keys");
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
validateOptions();
|
|
22
|
+
createEffect(validateOptions);
|
|
23
|
+
const messages = useUiMessages();
|
|
24
|
+
const id = `k2b-chart-controls-${createUniqueId()}`;
|
|
25
|
+
const [keyboardSteps, setKeyboardSteps] = createSignal(false);
|
|
26
|
+
let pointerFocus = false;
|
|
27
|
+
const stepLabel = key => props.steps?.find(step => step.key === key)?.label ?? key ?? "";
|
|
28
|
+
return [_$createComponent(Show, {
|
|
29
|
+
get when() {
|
|
30
|
+
return props.steps?.length;
|
|
31
|
+
},
|
|
32
|
+
get children() {
|
|
33
|
+
return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.dimensionLabel ?? messages().range, true), false) + _$ssrAttribute("data-keyboard", keyboardSteps() ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Slider, {
|
|
34
|
+
id: `${id}-dimension`,
|
|
35
|
+
showValue: false,
|
|
36
|
+
"aria-describedby": `${id}-steps`,
|
|
37
|
+
get label() {
|
|
38
|
+
return props.dimensionLabel ?? messages().range;
|
|
39
|
+
},
|
|
40
|
+
min: 0,
|
|
41
|
+
get max() {
|
|
42
|
+
return Math.max(0, (props.steps?.length ?? 1) - 1);
|
|
43
|
+
},
|
|
44
|
+
step: 1,
|
|
45
|
+
get value() {
|
|
46
|
+
return Math.max(0, props.steps?.findIndex(step => step.key === props.request.step) ?? 0);
|
|
47
|
+
},
|
|
48
|
+
get disabled() {
|
|
49
|
+
return props.disabled || (props.steps?.length ?? 0) < 2;
|
|
50
|
+
},
|
|
51
|
+
formatValue: index => props.steps?.[index]?.label ?? "",
|
|
52
|
+
get ["aria-valuetext"]() {
|
|
53
|
+
return stepLabel(props.request.step);
|
|
54
|
+
},
|
|
55
|
+
onValueChange: index => {
|
|
56
|
+
const step = props.steps?.[index];
|
|
57
|
+
if (step) props.onRequest({
|
|
58
|
+
...props.request,
|
|
59
|
+
step: step.key
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
})), `${_$escape(id, true)}-dimension`, _$escape(stepLabel(props.request.step)), `${_$escape(id, true)}-steps`, _$escape(_$createComponent(For, {
|
|
63
|
+
get each() {
|
|
64
|
+
return props.steps;
|
|
65
|
+
},
|
|
66
|
+
children: step => _$ssr(_tmpl$3, _$ssrAttribute("data-current", step.key === props.request.step ? "true" : _$escape(undefined, true), false), _$escape(step.label))
|
|
67
|
+
})));
|
|
68
|
+
}
|
|
69
|
+
}), _$ssr(_tmpl$2, _$escape(_$createComponent(Show, {
|
|
70
|
+
get when() {
|
|
71
|
+
return props.series?.length;
|
|
72
|
+
},
|
|
73
|
+
get children() {
|
|
74
|
+
return _$createComponent(FilterChip, {
|
|
75
|
+
get label() {
|
|
76
|
+
return messages().chartSeries;
|
|
77
|
+
},
|
|
78
|
+
icon: "ti ti-chart-dots",
|
|
79
|
+
get disabled() {
|
|
80
|
+
return props.disabled;
|
|
81
|
+
},
|
|
82
|
+
get value() {
|
|
83
|
+
return props.request.visibleKeys ?? props.series?.map(item => item.key) ?? [];
|
|
84
|
+
},
|
|
85
|
+
get defaultValue() {
|
|
86
|
+
return props.series?.map(item => item.key) ?? [];
|
|
87
|
+
},
|
|
88
|
+
get isActive() {
|
|
89
|
+
return props.request.visibleKeys !== undefined && props.request.visibleKeys.length !== props.series?.length;
|
|
90
|
+
},
|
|
91
|
+
get options() {
|
|
92
|
+
return [{
|
|
93
|
+
multiple: true,
|
|
94
|
+
options: (props.series ?? []).map(item => ({
|
|
95
|
+
value: item.key,
|
|
96
|
+
label: item.label,
|
|
97
|
+
color: item.color
|
|
98
|
+
}))
|
|
99
|
+
}];
|
|
100
|
+
},
|
|
101
|
+
onValueChange: visibleKeys => props.onRequest({
|
|
102
|
+
...props.request,
|
|
103
|
+
visibleKeys
|
|
104
|
+
})
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
})), _$escape(_$createComponent(Show, {
|
|
108
|
+
get when() {
|
|
109
|
+
return props.failed;
|
|
110
|
+
},
|
|
111
|
+
get children() {
|
|
112
|
+
return [messages().couldNotLoadData, " ", _$createComponent(Button, {
|
|
113
|
+
variant: "text",
|
|
114
|
+
size: "sm",
|
|
115
|
+
get onClick() {
|
|
116
|
+
return props.onRetry;
|
|
117
|
+
},
|
|
118
|
+
get children() {
|
|
119
|
+
return messages().retry;
|
|
120
|
+
}
|
|
121
|
+
})];
|
|
122
|
+
}
|
|
123
|
+
})), _$escape(_$createComponent(Show, {
|
|
124
|
+
get when() {
|
|
125
|
+
return props.failed;
|
|
126
|
+
},
|
|
127
|
+
get children() {
|
|
128
|
+
return ["\xB7 ", messages().chartPreviousData, _$createComponent(Show, {
|
|
129
|
+
get when() {
|
|
130
|
+
return props.steps?.length;
|
|
131
|
+
},
|
|
132
|
+
get children() {
|
|
133
|
+
return [": ", stepLabel(props.displayedRequest.step)];
|
|
134
|
+
}
|
|
135
|
+
})];
|
|
136
|
+
}
|
|
137
|
+
})))];
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=ChartFilterControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","createSignal","createUniqueId","For","Show","Button","FilterChip","Slider","useUiMessages","ChartFilterControls","props","validateOptions","items","steps","series","keys","map","item","key","some","Set","size","length","Error","messages","id","keyboardSteps","setKeyboardSteps","pointerFocus","stepLabel","find","step","label","_$createComponent","when","children","_$ssr","_tmpl$","_$ssrAttribute","_$escape","dimensionLabel","range","undefined","showValue","min","max","Math","value","findIndex","request","disabled","formatValue","index","aria-valuetext","onValueChange","onRequest","each","_tmpl$3","_tmpl$2","chartSeries","icon","visibleKeys","defaultValue","isActive","options","multiple","color","failed","couldNotLoadData","variant","onClick","onRetry","retry","chartPreviousData","displayedRequest"],"sources":["content/ChartFilterControls.tsx"],"sourcesContent":["import { createEffect, createSignal, createUniqueId, For, Show } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { FilterChip } from \"../actions/FilterChip\";\nimport { Slider } from \"../inputs/ChoiceInputs\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ChartExplorerRequest } from \"./chart-explorer\";\n\nexport type ChartFilterControlsProps = {\n request: ChartExplorerRequest;\n displayedRequest: ChartExplorerRequest;\n steps?: readonly { key: string; label: string }[];\n series?: readonly { key: string; label: string; color: string }[];\n dimensionLabel?: string;\n disabled?: boolean;\n failed?: boolean;\n onRequest: (request: ChartExplorerRequest) => void;\n onRetry?: () => void;\n};\n\n/** Shared controls for a standalone explorer or an atomic group of charts. */\nexport function ChartFilterControls(props: ChartFilterControlsProps) {\n const validateOptions = () => {\n for (const items of [props.steps, props.series]) {\n const keys = items?.map((item) => item.key) ?? [];\n if (keys.some((key) => !key) || new Set(keys).size !== keys.length)\n throw new Error(\"Chart control options require nonempty unique keys\");\n }\n };\n validateOptions();\n createEffect(validateOptions);\n const messages = useUiMessages();\n const id = `k2b-chart-controls-${createUniqueId()}`;\n const [keyboardSteps, setKeyboardSteps] = createSignal(false);\n let pointerFocus = false;\n const stepLabel = (key: string | undefined) => props.steps?.find((step) => step.key === key)?.label ?? key ?? \"\";\n return (\n <>\n <Show when={props.steps?.length}>\n <div\n class=\"k2b-chart-explorer__dimension\"\n role=\"group\"\n aria-label={props.dimensionLabel ?? messages().range}\n data-keyboard={keyboardSteps() ? \"true\" : undefined}\n onPointerDown={() => {\n pointerFocus = true;\n setKeyboardSteps(false);\n }}\n onKeyDown={() => {\n pointerFocus = false;\n setKeyboardSteps(true);\n }}\n onFocusIn={(event) => {\n if (!pointerFocus && event.target.matches(\":focus-visible\")) setKeyboardSteps(true);\n }}\n onFocusOut={() => {\n pointerFocus = false;\n setKeyboardSteps(false);\n }}\n >\n <Slider\n id={`${id}-dimension`}\n showValue={false}\n aria-describedby={`${id}-steps`}\n label={props.dimensionLabel ?? messages().range}\n min={0}\n max={Math.max(0, (props.steps?.length ?? 1) - 1)}\n step={1}\n value={Math.max(0, props.steps?.findIndex((step) => step.key === props.request.step) ?? 0)}\n disabled={props.disabled || (props.steps?.length ?? 0) < 2}\n formatValue={(index) => props.steps?.[index]?.label ?? \"\"}\n aria-valuetext={stepLabel(props.request.step)}\n onValueChange={(index) => {\n const step = props.steps?.[index];\n if (step) props.onRequest({ ...props.request, step: step.key });\n }}\n />\n <output class=\"k2b-chart-explorer__dimension-value\" for={`${id}-dimension`}>\n {stepLabel(props.request.step)}\n </output>\n <div id={`${id}-steps`} class=\"k2b-chart-explorer__steps\">\n <For each={props.steps}>\n {(step) => <span data-current={step.key === props.request.step ? \"true\" : undefined}>{step.label}</span>}\n </For>\n </div>\n </div>\n </Show>\n <div class=\"k2b-chart-explorer__legend\">\n <Show when={props.series?.length}>\n <FilterChip\n label={messages().chartSeries}\n icon=\"ti ti-chart-dots\"\n disabled={props.disabled}\n value={props.request.visibleKeys ?? props.series?.map((item) => item.key) ?? []}\n defaultValue={props.series?.map((item) => item.key) ?? []}\n isActive={props.request.visibleKeys !== undefined && props.request.visibleKeys.length !== props.series?.length}\n options={[\n { multiple: true, options: (props.series ?? []).map((item) => ({ value: item.key, label: item.label, color: item.color })) },\n ]}\n onValueChange={(visibleKeys) => props.onRequest({ ...props.request, visibleKeys })}\n />\n </Show>\n <div class=\"k2b-chart-explorer__status\" role=\"status\">\n <Show when={props.failed}>\n {messages().couldNotLoadData}{\" \"}\n <Button variant=\"text\" size=\"sm\" onClick={props.onRetry}>\n {messages().retry}\n </Button>\n </Show>\n <Show when={props.failed}>\n · {messages().chartPreviousData}\n <Show when={props.steps?.length}>: {stepLabel(props.displayedRequest.step)}</Show>\n </Show>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
2
|
+
import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
|
|
3
|
+
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
4
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
5
|
+
import { escape as _$escape } from "solid-js/web";
|
|
6
|
+
var _tmpl$ = ["<div class=\"k2b-chart\"", " data-interactive=\"true\" style=\"", "\" role=\"group\"", " tabindex=\"0\"><div class=\"k2b-chart__svg\"", " style=\"", "\">", "</div><span class=\"k2b-chart__anchor\" aria-hidden=\"true\"></span><span", " class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\"></span></div>"];
|
|
7
|
+
import { createEffect, createUniqueId, onCleanup, onMount } from "solid-js";
|
|
8
|
+
import { isServer } from "solid-js/web";
|
|
9
|
+
import { useUiMessages } from "../intl/messages";
|
|
10
|
+
import { createChartInspection, sameChartDatum } from "./chart-inspection";
|
|
11
|
+
import { selectedChartSvg } from "./chart-svg";
|
|
12
|
+
|
|
13
|
+
/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */
|
|
14
|
+
export function ChartSnapshotView(props) {
|
|
15
|
+
const messages = useUiMessages();
|
|
16
|
+
let container;
|
|
17
|
+
let tooltip;
|
|
18
|
+
let anchor;
|
|
19
|
+
const id = `k2b-chart-tooltip-${createUniqueId()}`;
|
|
20
|
+
const inspection = createChartInspection({
|
|
21
|
+
container: () => container,
|
|
22
|
+
cursor: () => props.cursor,
|
|
23
|
+
tooltip: () => tooltip,
|
|
24
|
+
anchor: () => anchor,
|
|
25
|
+
kind: () => props.snapshot.kind,
|
|
26
|
+
enabled: () => true,
|
|
27
|
+
format: ({
|
|
28
|
+
datum
|
|
29
|
+
}) => props.snapshot.marks.find(m => sameChartDatum(m.datum, datum))?.tooltip ?? {
|
|
30
|
+
rows: []
|
|
31
|
+
},
|
|
32
|
+
select: ({
|
|
33
|
+
datum
|
|
34
|
+
}) => {
|
|
35
|
+
const mark = props.snapshot.marks.find(m => sameChartDatum(m.datum, datum));
|
|
36
|
+
if (mark) props.onSelect(mark.rowKey);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
createEffect(() => {
|
|
40
|
+
props.snapshot;
|
|
41
|
+
inspection.invalidate();
|
|
42
|
+
});
|
|
43
|
+
createEffect(() => inspection.selectData(props.snapshot.marks.filter(m => m.rowKey === props.selectedKey).map(m => m.datum)));
|
|
44
|
+
onMount(() => {
|
|
45
|
+
const outside = event => {
|
|
46
|
+
if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();
|
|
47
|
+
};
|
|
48
|
+
window.addEventListener("pointerdown", outside);
|
|
49
|
+
window.addEventListener("scroll", inspection.close, true);
|
|
50
|
+
onCleanup(() => {
|
|
51
|
+
window.removeEventListener("pointerdown", outside);
|
|
52
|
+
window.removeEventListener("scroll", inspection.close, true);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
onCleanup(inspection.close);
|
|
56
|
+
return _$ssr(_tmpl$, _$ssrAttribute("data-chart-kind", _$escape(props.snapshot.kind, true), false), _$ssrStyle(props.style), _$ssrAttribute("aria-label", _$escape(messages().interactiveChart, true), false), _$ssrAttribute("data-stretch", props.snapshot.stretch ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-chart-width:", `${_$escape(props.snapshot.width, true)}px`) + _$ssrStyleProperty(";--k2b-chart-height:", `${_$escape(props.snapshot.height, true)}px`) + _$ssrStyleProperty(";aspect-ratio:", `${_$escape(props.snapshot.width, true)}/${_$escape(props.snapshot.height, true)}`), isServer ? selectedChartSvg(props.snapshot.svg, props.snapshot.marks.filter(m => m.rowKey === props.selectedKey).map(m => m.datum)) : props.snapshot.svg, _$ssrAttribute("id", _$escape(id, true), false));
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ChartSnapshotView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","createUniqueId","onCleanup","onMount","isServer","useUiMessages","createChartInspection","sameChartDatum","selectedChartSvg","ChartSnapshotView","props","messages","container","tooltip","anchor","id","inspection","cursor","kind","snapshot","enabled","format","datum","marks","find","m","rows","select","mark","onSelect","rowKey","invalidate","selectData","filter","selectedKey","map","outside","event","target","Node","contains","close","window","addEventListener","removeEventListener","_$ssr","_tmpl$","_$ssrAttribute","_$escape","_$ssrStyle","style","interactiveChart","stretch","undefined","_$ssrStyleProperty","width","height","svg"],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import { createEffect, createUniqueId, type JSX, onCleanup, onMount } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ChartCursor } from \"./chart-cursor\";\nimport { createChartInspection, sameChartDatum } from \"./chart-inspection\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\nimport { selectedChartSvg } from \"./chart-svg\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const messages = useUiMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n const outside = (event: Event) => {\n if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();\n };\n window.addEventListener(\"pointerdown\", outside);\n window.addEventListener(\"scroll\", inspection.close, true);\n onCleanup(() => {\n window.removeEventListener(\"pointerdown\", outside);\n window.removeEventListener(\"scroll\", inspection.close, true);\n });\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={messages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,8 +22,8 @@ var _tmpl$ = ["<span class=\"k2b-data-table__header-title\">", "</span>"],
|
|
|
22
22
|
_tmpl$15 = ["<footer class=\"", "\">", "</footer>"];
|
|
23
23
|
import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, useContext } from "solid-js";
|
|
24
24
|
import { Dynamic } from "solid-js/web";
|
|
25
|
-
import { useUiMessages } from "../intl/messages";
|
|
26
25
|
import { useLocale } from "../intl/locale";
|
|
26
|
+
import { useUiMessages } from "../intl/messages";
|
|
27
27
|
import { PanelHeader } from "../layout/PanelHeader";
|
|
28
28
|
import { Paper } from "../surfaces/Paper";
|
|
29
29
|
import Placeholder from "../surfaces/Placeholder";
|
|
@@ -42,7 +42,7 @@ const renderColumnPart = (part, col) => {
|
|
|
42
42
|
});
|
|
43
43
|
return part;
|
|
44
44
|
};
|
|
45
|
-
const rowInteractiveSelector = ["a[href]", "button", "input", "select", "textarea", "summary", "[contenteditable]", "[role='button']", "[role='checkbox']", "[role='link']", "[role='menuitem']", "[role='option']", "[role='radio']", "[role='switch']", "[role='tab']", "[tabindex]"].join(",");
|
|
45
|
+
const rowInteractiveSelector = ["a[href]", "button", "input", "label", "select", "textarea", "summary", "[contenteditable]", "[role='button']", "[role='checkbox']", "[role='link']", "[role='menuitem']", "[role='option']", "[role='radio']", "[role='switch']", "[role='tab']", "[tabindex]"].join(",");
|
|
46
46
|
const isNestedRowControl = event => event.target instanceof Element && event.target.closest(rowInteractiveSelector) !== event.currentTarget;
|
|
47
47
|
const scrollbarMetrics = (viewportSize, contentSize, scrollOffset) => {
|
|
48
48
|
if (viewportSize <= 0 || contentSize <= viewportSize + 1) return {
|
|
@@ -90,7 +90,7 @@ function DataTableRoot(props) {
|
|
|
90
90
|
let previousLoadingMore = !!props.loadingMore;
|
|
91
91
|
let previousHasMore = !!props.hasMore;
|
|
92
92
|
const rowId = row => props.getRowId?.(row);
|
|
93
|
-
const isInteractive = () => !!props.onRowClick || !!props.onRowDoubleClick;
|
|
93
|
+
const isInteractive = () => !!props.selection || !!props.onRowClick || !!props.onRowDoubleClick;
|
|
94
94
|
const shouldHoverRows = () => props.hoverRows ?? isInteractive();
|
|
95
95
|
const shouldRenderLoadMoreSentinel = () => !!props.onLoadMore;
|
|
96
96
|
const labelledBy = () => props.ariaLabelledBy ?? (panel?.hasHeading() ? panel.headingId : undefined);
|
|
@@ -211,9 +211,9 @@ function DataTableRoot(props) {
|
|
|
211
211
|
|
|
212
212
|
/** Only a sortable column carries a sort state; the rest carry none at all. */
|
|
213
213
|
const ariaSortFor = col => {
|
|
214
|
-
const
|
|
215
|
-
if (!
|
|
216
|
-
if (
|
|
214
|
+
const key = sortKeyOf(col);
|
|
215
|
+
if (!key || !props.sortHref && !props.renderHeader) return undefined;
|
|
216
|
+
if (props.sort?.key !== key) return "none";
|
|
217
217
|
return props.sort?.direction === "asc" ? "ascending" : "descending";
|
|
218
218
|
};
|
|
219
219
|
const renderHeaderDefault = col => {
|
|
@@ -234,12 +234,16 @@ function DataTableRoot(props) {
|
|
|
234
234
|
const onRowKeyDown = (event, row) => {
|
|
235
235
|
if (!isInteractive()) return;
|
|
236
236
|
if (isNestedRowControl(event)) return;
|
|
237
|
+
const id = rowId(row);
|
|
238
|
+
if (id !== undefined && props.selection?.keyDown(event, id)) return;
|
|
237
239
|
if (event.key !== "Enter" && event.key !== " ") return;
|
|
238
240
|
event.preventDefault();
|
|
239
|
-
(props.onRowClick ?? props.onRowDoubleClick)?.(row);
|
|
241
|
+
(props.selection ? props.onRowDoubleClick : props.onRowClick ?? props.onRowDoubleClick)?.(row);
|
|
240
242
|
};
|
|
241
243
|
const onRowClick = (event, row) => {
|
|
242
244
|
if (isNestedRowControl(event)) return;
|
|
245
|
+
const id = rowId(row);
|
|
246
|
+
if (id !== undefined) props.selection?.select(id, event);
|
|
243
247
|
props.onRowClick?.(row);
|
|
244
248
|
};
|
|
245
249
|
const onRowDoubleClick = (event, row) => {
|
|
@@ -354,8 +358,8 @@ function DataTableRoot(props) {
|
|
|
354
358
|
},
|
|
355
359
|
children: row => {
|
|
356
360
|
const id = () => rowId(row);
|
|
357
|
-
const isSelected = () => props.selectedRowId && id() === props.selectedRowId;
|
|
358
|
-
return _$ssr(_tmpl$0, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
|
|
361
|
+
const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
|
|
362
|
+
return _$ssr(_tmpl$0, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
|
|
359
363
|
get each() {
|
|
360
364
|
return props.columns;
|
|
361
365
|
},
|