@k2b/ui 0.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +343 -0
- package/dist/.build-complete +0 -0
- package/dist/browser/actions/Button.js +236 -0
- package/dist/browser/actions/Button.js.map +1 -0
- package/dist/browser/actions/ContextMenu.js +199 -0
- package/dist/browser/actions/ContextMenu.js.map +1 -0
- package/dist/browser/actions/CopyButton.js +97 -0
- package/dist/browser/actions/CopyButton.js.map +1 -0
- package/dist/browser/actions/Disclosure.js +83 -0
- package/dist/browser/actions/Disclosure.js.map +1 -0
- package/dist/browser/actions/Dropdown.js +669 -0
- package/dist/browser/actions/Dropdown.js.map +1 -0
- package/dist/browser/actions/FilterChip.js +149 -0
- package/dist/browser/actions/FilterChip.js.map +1 -0
- package/dist/browser/actions/RemoveButton.js +47 -0
- package/dist/browser/actions/RemoveButton.js.map +1 -0
- package/dist/browser/actions/SegmentedControl.js +138 -0
- package/dist/browser/actions/SegmentedControl.js.map +1 -0
- package/dist/browser/actions/SplitButton.js +76 -0
- package/dist/browser/actions/SplitButton.js.map +1 -0
- package/dist/browser/actions/SpotlightSearch.js +87 -0
- package/dist/browser/actions/SpotlightSearch.js.map +1 -0
- package/dist/browser/actions/Tabs.js +185 -0
- package/dist/browser/actions/Tabs.js.map +1 -0
- package/dist/browser/actions/Toolbar.js +87 -0
- package/dist/browser/actions/Toolbar.js.map +1 -0
- package/dist/browser/actions/index.js +13 -0
- package/dist/browser/actions/index.js.map +1 -0
- package/dist/browser/chat/ChatComposer.js +760 -0
- package/dist/browser/chat/ChatComposer.js.map +1 -0
- package/dist/browser/chat/ChatPrimitives.js +688 -0
- package/dist/browser/chat/ChatPrimitives.js.map +1 -0
- package/dist/browser/chat/ChatRoot.js +27 -0
- package/dist/browser/chat/ChatRoot.js.map +1 -0
- package/dist/browser/chat/ChatTimeline.js +404 -0
- package/dist/browser/chat/ChatTimeline.js.map +1 -0
- package/dist/browser/chat/chat-behavior.js +53 -0
- package/dist/browser/chat/chat-behavior.js.map +1 -0
- package/dist/browser/chat/index.js +17 -0
- package/dist/browser/chat/index.js.map +1 -0
- package/dist/browser/chat/types.js +2 -0
- package/dist/browser/chat/types.js.map +1 -0
- package/dist/browser/content/Calendar.js +2168 -0
- package/dist/browser/content/Calendar.js.map +1 -0
- package/dist/browser/content/Chart.js +680 -0
- package/dist/browser/content/Chart.js.map +1 -0
- package/dist/browser/content/CodeDisplay.js +104 -0
- package/dist/browser/content/CodeDisplay.js.map +1 -0
- package/dist/browser/content/DataTable.js +724 -0
- package/dist/browser/content/DataTable.js.map +1 -0
- package/dist/browser/content/Docs.js +227 -0
- package/dist/browser/content/Docs.js.map +1 -0
- package/dist/browser/content/FileBrowser.js +462 -0
- package/dist/browser/content/FileBrowser.js.map +1 -0
- package/dist/browser/content/FileTree.js +453 -0
- package/dist/browser/content/FileTree.js.map +1 -0
- package/dist/browser/content/FileView.js +842 -0
- package/dist/browser/content/FileView.js.map +1 -0
- package/dist/browser/content/Lightbox.js +285 -0
- package/dist/browser/content/Lightbox.js.map +1 -0
- package/dist/browser/content/LogEntriesTable.js +139 -0
- package/dist/browser/content/LogEntriesTable.js.map +1 -0
- package/dist/browser/content/MarkdownView.js +138 -0
- package/dist/browser/content/MarkdownView.js.map +1 -0
- package/dist/browser/content/Pagination.js +182 -0
- package/dist/browser/content/Pagination.js.map +1 -0
- package/dist/browser/content/PdfPreview.js +204 -0
- package/dist/browser/content/PdfPreview.js.map +1 -0
- package/dist/browser/content/RangePicker.js +83 -0
- package/dist/browser/content/RangePicker.js.map +1 -0
- package/dist/browser/content/StructuredDataPreview.js +194 -0
- package/dist/browser/content/StructuredDataPreview.js.map +1 -0
- package/dist/browser/content/calendar-event-layout.js +92 -0
- package/dist/browser/content/calendar-event-layout.js.map +1 -0
- package/dist/browser/content/calendar-pointer.js +114 -0
- package/dist/browser/content/calendar-pointer.js.map +1 -0
- package/dist/browser/content/chart-map-viewport.js +33 -0
- package/dist/browser/content/chart-map-viewport.js.map +1 -0
- package/dist/browser/content/chart-state-timeline.js +124 -0
- package/dist/browser/content/chart-state-timeline.js.map +1 -0
- package/dist/browser/content/code-highlight.js +144 -0
- package/dist/browser/content/code-highlight.js.map +1 -0
- package/dist/browser/content/file-tree.js +93 -0
- package/dist/browser/content/file-tree.js.map +1 -0
- package/dist/browser/content/file-view-preview.js +112 -0
- package/dist/browser/content/file-view-preview.js.map +1 -0
- package/dist/browser/content/index.js +16 -0
- package/dist/browser/content/index.js.map +1 -0
- package/dist/browser/feedback/InlineGuidance.js +46 -0
- package/dist/browser/feedback/InlineGuidance.js.map +1 -0
- package/dist/browser/feedback/Tooltip.js +189 -0
- package/dist/browser/feedback/Tooltip.js.map +1 -0
- package/dist/browser/feedback/dialog-core.js +207 -0
- package/dist/browser/feedback/dialog-core.js.map +1 -0
- package/dist/browser/feedback/index.js +6 -0
- package/dist/browser/feedback/index.js.map +1 -0
- package/dist/browser/feedback/prompts.js +991 -0
- package/dist/browser/feedback/prompts.js.map +1 -0
- package/dist/browser/feedback/toast.js +271 -0
- package/dist/browser/feedback/toast.js.map +1 -0
- package/dist/browser/feedback/tooltip-position.js +25 -0
- package/dist/browser/feedback/tooltip-position.js.map +1 -0
- package/dist/browser/index.js +11 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/inputs/AutocompleteEditor.js +610 -0
- package/dist/browser/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/browser/inputs/AutocompleteSelect.js +632 -0
- package/dist/browser/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/browser/inputs/Checkbox.js +137 -0
- package/dist/browser/inputs/Checkbox.js.map +1 -0
- package/dist/browser/inputs/CheckboxCard.js +130 -0
- package/dist/browser/inputs/CheckboxCard.js.map +1 -0
- package/dist/browser/inputs/ChoiceGroups.js +174 -0
- package/dist/browser/inputs/ChoiceGroups.js.map +1 -0
- package/dist/browser/inputs/ChoiceInputs.js +400 -0
- package/dist/browser/inputs/ChoiceInputs.js.map +1 -0
- package/dist/browser/inputs/Combobox.js +274 -0
- package/dist/browser/inputs/Combobox.js.map +1 -0
- package/dist/browser/inputs/DatePicker.js +923 -0
- package/dist/browser/inputs/DatePicker.js.map +1 -0
- package/dist/browser/inputs/FileInputs.js +736 -0
- package/dist/browser/inputs/FileInputs.js.map +1 -0
- package/dist/browser/inputs/MultiSelectInput.js +565 -0
- package/dist/browser/inputs/MultiSelectInput.js.map +1 -0
- package/dist/browser/inputs/NumberInput.js +288 -0
- package/dist/browser/inputs/NumberInput.js.map +1 -0
- package/dist/browser/inputs/Select.js +507 -0
- package/dist/browser/inputs/Select.js.map +1 -0
- package/dist/browser/inputs/SelectChip.js +151 -0
- package/dist/browser/inputs/SelectChip.js.map +1 -0
- package/dist/browser/inputs/SpecialInputs.js +117 -0
- package/dist/browser/inputs/SpecialInputs.js.map +1 -0
- package/dist/browser/inputs/Switch.js +117 -0
- package/dist/browser/inputs/Switch.js.map +1 -0
- package/dist/browser/inputs/TagEditor.js +358 -0
- package/dist/browser/inputs/TagEditor.js.map +1 -0
- package/dist/browser/inputs/TagsInput.js +195 -0
- package/dist/browser/inputs/TagsInput.js.map +1 -0
- package/dist/browser/inputs/TemplateEditor.js +190 -0
- package/dist/browser/inputs/TemplateEditor.js.map +1 -0
- package/dist/browser/inputs/TextInput.js +318 -0
- package/dist/browser/inputs/TextInput.js.map +1 -0
- package/dist/browser/inputs/choice.js +188 -0
- package/dist/browser/inputs/choice.js.map +1 -0
- package/dist/browser/inputs/completion/behaviors.js +108 -0
- package/dist/browser/inputs/completion/behaviors.js.map +1 -0
- package/dist/browser/inputs/completion/engine.js +103 -0
- package/dist/browser/inputs/completion/engine.js.map +1 -0
- package/dist/browser/inputs/completion/index.js +4 -0
- package/dist/browser/inputs/completion/index.js.map +1 -0
- package/dist/browser/inputs/completion/overlay.js +25 -0
- package/dist/browser/inputs/completion/overlay.js.map +1 -0
- package/dist/browser/inputs/date-picker.js +123 -0
- package/dist/browser/inputs/date-picker.js.map +1 -0
- package/dist/browser/inputs/editor-dom.js +26 -0
- package/dist/browser/inputs/editor-dom.js.map +1 -0
- package/dist/browser/inputs/field-contract.js +9 -0
- package/dist/browser/inputs/field-contract.js.map +1 -0
- package/dist/browser/inputs/icon-options.js +46 -0
- package/dist/browser/inputs/icon-options.js.map +1 -0
- package/dist/browser/inputs/image-crop.js +145 -0
- package/dist/browser/inputs/image-crop.js.map +1 -0
- package/dist/browser/inputs/index.js +23 -0
- package/dist/browser/inputs/index.js.map +1 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js +725 -0
- package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/browser/inputs/markdown/Toolbar.js +172 -0
- package/dist/browser/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/browser/inputs/markdown/actions.js +140 -0
- package/dist/browser/inputs/markdown/actions.js.map +1 -0
- package/dist/browser/inputs/markdown/active-formats.js +36 -0
- package/dist/browser/inputs/markdown/active-formats.js.map +1 -0
- package/dist/browser/inputs/markdown/behaviors.js +63 -0
- package/dist/browser/inputs/markdown/behaviors.js.map +1 -0
- package/dist/browser/inputs/markdown/code-zone.js +8 -0
- package/dist/browser/inputs/markdown/code-zone.js.map +1 -0
- package/dist/browser/internal/color.js +18 -0
- package/dist/browser/internal/color.js.map +1 -0
- package/dist/browser/internal/field.js +158 -0
- package/dist/browser/internal/field.js.map +1 -0
- package/dist/browser/internal/portal.js +17 -0
- package/dist/browser/internal/portal.js.map +1 -0
- package/dist/browser/intl/Format.js +273 -0
- package/dist/browser/intl/Format.js.map +1 -0
- package/dist/browser/intl/index.js +3 -0
- package/dist/browser/intl/index.js.map +1 -0
- package/dist/browser/intl/locale.js +63 -0
- package/dist/browser/intl/locale.js.map +1 -0
- package/dist/browser/intl/messages.js +753 -0
- package/dist/browser/intl/messages.js.map +1 -0
- package/dist/browser/layout/AppOverview.js +151 -0
- package/dist/browser/layout/AppOverview.js.map +1 -0
- package/dist/browser/layout/AppWorkspace.js +1502 -0
- package/dist/browser/layout/AppWorkspace.js.map +1 -0
- package/dist/browser/layout/DataPanel.js +122 -0
- package/dist/browser/layout/DataPanel.js.map +1 -0
- package/dist/browser/layout/DetailPanel.js +484 -0
- package/dist/browser/layout/DetailPanel.js.map +1 -0
- package/dist/browser/layout/Discussion.js +511 -0
- package/dist/browser/layout/Discussion.js.map +1 -0
- package/dist/browser/layout/FloatingWindow.js +332 -0
- package/dist/browser/layout/FloatingWindow.js.map +1 -0
- package/dist/browser/layout/PanelDialog.js +236 -0
- package/dist/browser/layout/PanelDialog.js.map +1 -0
- package/dist/browser/layout/PanelHeader.js +91 -0
- package/dist/browser/layout/PanelHeader.js.map +1 -0
- package/dist/browser/layout/Panes.js +978 -0
- package/dist/browser/layout/Panes.js.map +1 -0
- package/dist/browser/layout/ScrollArea.js +29 -0
- package/dist/browser/layout/ScrollArea.js.map +1 -0
- package/dist/browser/layout/Settings.js +381 -0
- package/dist/browser/layout/Settings.js.map +1 -0
- package/dist/browser/layout/SettingsCollection.js +212 -0
- package/dist/browser/layout/SettingsCollection.js.map +1 -0
- package/dist/browser/layout/SettingsModal.js +281 -0
- package/dist/browser/layout/SettingsModal.js.map +1 -0
- package/dist/browser/layout/app-workspace-controller.js +419 -0
- package/dist/browser/layout/app-workspace-controller.js.map +1 -0
- package/dist/browser/layout/app-workspace-state.js +125 -0
- package/dist/browser/layout/app-workspace-state.js.map +1 -0
- package/dist/browser/layout/floating-window-geometry.js +15 -0
- package/dist/browser/layout/floating-window-geometry.js.map +1 -0
- package/dist/browser/layout/index.js +17 -0
- package/dist/browser/layout/index.js.map +1 -0
- package/dist/browser/layout/panes-layout.js +436 -0
- package/dist/browser/layout/panes-layout.js.map +1 -0
- package/dist/browser/layout/stable-id.js +17 -0
- package/dist/browser/layout/stable-id.js.map +1 -0
- package/dist/browser/semantics.js +2 -0
- package/dist/browser/semantics.js.map +1 -0
- package/dist/browser/surfaces/Avatar.js +97 -0
- package/dist/browser/surfaces/Avatar.js.map +1 -0
- package/dist/browser/surfaces/DescriptionList.js +66 -0
- package/dist/browser/surfaces/DescriptionList.js.map +1 -0
- package/dist/browser/surfaces/LinkCard.js +40 -0
- package/dist/browser/surfaces/LinkCard.js.map +1 -0
- package/dist/browser/surfaces/NotFoundState.js +85 -0
- package/dist/browser/surfaces/NotFoundState.js.map +1 -0
- package/dist/browser/surfaces/NoticeCard.js +145 -0
- package/dist/browser/surfaces/NoticeCard.js.map +1 -0
- package/dist/browser/surfaces/Paper.js +33 -0
- package/dist/browser/surfaces/Paper.js.map +1 -0
- package/dist/browser/surfaces/Placeholder.js +90 -0
- package/dist/browser/surfaces/Placeholder.js.map +1 -0
- package/dist/browser/surfaces/ProgressBar.js +58 -0
- package/dist/browser/surfaces/ProgressBar.js.map +1 -0
- package/dist/browser/surfaces/StatCell.js +172 -0
- package/dist/browser/surfaces/StatCell.js.map +1 -0
- package/dist/browser/surfaces/StatGrid.js +80 -0
- package/dist/browser/surfaces/StatGrid.js.map +1 -0
- package/dist/browser/surfaces/StatusBadge.js +70 -0
- package/dist/browser/surfaces/StatusBadge.js.map +1 -0
- package/dist/browser/surfaces/Tag.js +94 -0
- package/dist/browser/surfaces/Tag.js.map +1 -0
- package/dist/browser/surfaces/index.js +13 -0
- package/dist/browser/surfaces/index.js.map +1 -0
- package/dist/browser/widgets/Widget.js +89 -0
- package/dist/browser/widgets/Widget.js.map +1 -0
- package/dist/browser/widgets/WidgetHero.js +47 -0
- package/dist/browser/widgets/WidgetHero.js.map +1 -0
- package/dist/browser/widgets/WidgetList.js +125 -0
- package/dist/browser/widgets/WidgetList.js.map +1 -0
- package/dist/browser/widgets/WidgetPills.js +78 -0
- package/dist/browser/widgets/WidgetPills.js.map +1 -0
- package/dist/browser/widgets/WidgetStat.js +114 -0
- package/dist/browser/widgets/WidgetStat.js.map +1 -0
- package/dist/browser/widgets/WidgetStatus.js +54 -0
- package/dist/browser/widgets/WidgetStatus.js.map +1 -0
- package/dist/browser/widgets/index.js +7 -0
- package/dist/browser/widgets/index.js.map +1 -0
- package/dist/global.css +3 -0
- package/dist/licenses/ibm-plex-mono.txt +93 -0
- package/dist/licenses/ibm-plex-sans.txt +93 -0
- package/dist/licenses/tabler-icons.txt +21 -0
- package/dist/plex.css +1 -0
- package/dist/ssr/actions/Button.js +203 -0
- package/dist/ssr/actions/Button.js.map +1 -0
- package/dist/ssr/actions/ContextMenu.js +128 -0
- package/dist/ssr/actions/ContextMenu.js.map +1 -0
- package/dist/ssr/actions/CopyButton.js +79 -0
- package/dist/ssr/actions/CopyButton.js.map +1 -0
- package/dist/ssr/actions/Disclosure.js +26 -0
- package/dist/ssr/actions/Disclosure.js.map +1 -0
- package/dist/ssr/actions/Dropdown.js +443 -0
- package/dist/ssr/actions/Dropdown.js.map +1 -0
- package/dist/ssr/actions/FilterChip.js +132 -0
- package/dist/ssr/actions/FilterChip.js.map +1 -0
- package/dist/ssr/actions/RemoveButton.js +45 -0
- package/dist/ssr/actions/RemoveButton.js.map +1 -0
- package/dist/ssr/actions/SegmentedControl.js +57 -0
- package/dist/ssr/actions/SegmentedControl.js.map +1 -0
- package/dist/ssr/actions/SplitButton.js +74 -0
- package/dist/ssr/actions/SplitButton.js.map +1 -0
- package/dist/ssr/actions/SpotlightSearch.js +38 -0
- package/dist/ssr/actions/SpotlightSearch.js.map +1 -0
- package/dist/ssr/actions/Tabs.js +91 -0
- package/dist/ssr/actions/Tabs.js.map +1 -0
- package/dist/ssr/actions/Toolbar.js +33 -0
- package/dist/ssr/actions/Toolbar.js.map +1 -0
- package/dist/ssr/actions/index.js +13 -0
- package/dist/ssr/actions/index.js.map +1 -0
- package/dist/ssr/chat/ChatComposer.js +392 -0
- package/dist/ssr/chat/ChatComposer.js.map +1 -0
- package/dist/ssr/chat/ChatPrimitives.js +377 -0
- package/dist/ssr/chat/ChatPrimitives.js.map +1 -0
- package/dist/ssr/chat/ChatRoot.js +10 -0
- package/dist/ssr/chat/ChatRoot.js.map +1 -0
- package/dist/ssr/chat/ChatTimeline.js +301 -0
- package/dist/ssr/chat/ChatTimeline.js.map +1 -0
- package/dist/ssr/chat/chat-behavior.js +53 -0
- package/dist/ssr/chat/chat-behavior.js.map +1 -0
- package/dist/ssr/chat/index.js +17 -0
- package/dist/ssr/chat/index.js.map +1 -0
- package/dist/ssr/chat/types.js +2 -0
- package/dist/ssr/chat/types.js.map +1 -0
- package/dist/ssr/content/Calendar.js +1542 -0
- package/dist/ssr/content/Calendar.js.map +1 -0
- package/dist/ssr/content/Chart.js +552 -0
- package/dist/ssr/content/Chart.js.map +1 -0
- package/dist/ssr/content/CodeDisplay.js +55 -0
- package/dist/ssr/content/CodeDisplay.js.map +1 -0
- package/dist/ssr/content/DataTable.js +470 -0
- package/dist/ssr/content/DataTable.js.map +1 -0
- package/dist/ssr/content/Docs.js +108 -0
- package/dist/ssr/content/Docs.js.map +1 -0
- package/dist/ssr/content/FileBrowser.js +422 -0
- package/dist/ssr/content/FileBrowser.js.map +1 -0
- package/dist/ssr/content/FileTree.js +299 -0
- package/dist/ssr/content/FileTree.js.map +1 -0
- package/dist/ssr/content/FileView.js +612 -0
- package/dist/ssr/content/FileView.js.map +1 -0
- package/dist/ssr/content/Lightbox.js +164 -0
- package/dist/ssr/content/Lightbox.js.map +1 -0
- package/dist/ssr/content/LogEntriesTable.js +106 -0
- package/dist/ssr/content/LogEntriesTable.js.map +1 -0
- package/dist/ssr/content/MarkdownView.js +119 -0
- package/dist/ssr/content/MarkdownView.js.map +1 -0
- package/dist/ssr/content/Pagination.js +141 -0
- package/dist/ssr/content/Pagination.js.map +1 -0
- package/dist/ssr/content/PdfPreview.js +126 -0
- package/dist/ssr/content/PdfPreview.js.map +1 -0
- package/dist/ssr/content/RangePicker.js +35 -0
- package/dist/ssr/content/RangePicker.js.map +1 -0
- package/dist/ssr/content/StructuredDataPreview.js +127 -0
- package/dist/ssr/content/StructuredDataPreview.js.map +1 -0
- package/dist/ssr/content/calendar-event-layout.js +92 -0
- package/dist/ssr/content/calendar-event-layout.js.map +1 -0
- package/dist/ssr/content/calendar-pointer.js +114 -0
- package/dist/ssr/content/calendar-pointer.js.map +1 -0
- package/dist/ssr/content/chart-map-viewport.js +33 -0
- package/dist/ssr/content/chart-map-viewport.js.map +1 -0
- package/dist/ssr/content/chart-state-timeline.js +124 -0
- package/dist/ssr/content/chart-state-timeline.js.map +1 -0
- package/dist/ssr/content/code-highlight.js +144 -0
- package/dist/ssr/content/code-highlight.js.map +1 -0
- package/dist/ssr/content/file-tree.js +93 -0
- package/dist/ssr/content/file-tree.js.map +1 -0
- package/dist/ssr/content/file-view-preview.js +112 -0
- package/dist/ssr/content/file-view-preview.js.map +1 -0
- package/dist/ssr/content/index.js +16 -0
- package/dist/ssr/content/index.js.map +1 -0
- package/dist/ssr/feedback/InlineGuidance.js +26 -0
- package/dist/ssr/feedback/InlineGuidance.js.map +1 -0
- package/dist/ssr/feedback/Tooltip.js +156 -0
- package/dist/ssr/feedback/Tooltip.js.map +1 -0
- package/dist/ssr/feedback/dialog-core.js +207 -0
- package/dist/ssr/feedback/dialog-core.js.map +1 -0
- package/dist/ssr/feedback/index.js +6 -0
- package/dist/ssr/feedback/index.js.map +1 -0
- package/dist/ssr/feedback/prompts.js +703 -0
- package/dist/ssr/feedback/prompts.js.map +1 -0
- package/dist/ssr/feedback/toast.js +271 -0
- package/dist/ssr/feedback/toast.js.map +1 -0
- package/dist/ssr/feedback/tooltip-position.js +25 -0
- package/dist/ssr/feedback/tooltip-position.js.map +1 -0
- package/dist/ssr/index.js +11 -0
- package/dist/ssr/index.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteEditor.js +463 -0
- package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -0
- package/dist/ssr/inputs/AutocompleteSelect.js +420 -0
- package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -0
- package/dist/ssr/inputs/Checkbox.js +75 -0
- package/dist/ssr/inputs/Checkbox.js.map +1 -0
- package/dist/ssr/inputs/CheckboxCard.js +69 -0
- package/dist/ssr/inputs/CheckboxCard.js.map +1 -0
- package/dist/ssr/inputs/ChoiceGroups.js +101 -0
- package/dist/ssr/inputs/ChoiceGroups.js.map +1 -0
- package/dist/ssr/inputs/ChoiceInputs.js +250 -0
- package/dist/ssr/inputs/ChoiceInputs.js.map +1 -0
- package/dist/ssr/inputs/Combobox.js +177 -0
- package/dist/ssr/inputs/Combobox.js.map +1 -0
- package/dist/ssr/inputs/DatePicker.js +629 -0
- package/dist/ssr/inputs/DatePicker.js.map +1 -0
- package/dist/ssr/inputs/FileInputs.js +543 -0
- package/dist/ssr/inputs/FileInputs.js.map +1 -0
- package/dist/ssr/inputs/MultiSelectInput.js +347 -0
- package/dist/ssr/inputs/MultiSelectInput.js.map +1 -0
- package/dist/ssr/inputs/NumberInput.js +177 -0
- package/dist/ssr/inputs/NumberInput.js.map +1 -0
- package/dist/ssr/inputs/Select.js +308 -0
- package/dist/ssr/inputs/Select.js.map +1 -0
- package/dist/ssr/inputs/SelectChip.js +129 -0
- package/dist/ssr/inputs/SelectChip.js.map +1 -0
- package/dist/ssr/inputs/SpecialInputs.js +116 -0
- package/dist/ssr/inputs/SpecialInputs.js.map +1 -0
- package/dist/ssr/inputs/Switch.js +62 -0
- package/dist/ssr/inputs/Switch.js.map +1 -0
- package/dist/ssr/inputs/TagEditor.js +280 -0
- package/dist/ssr/inputs/TagEditor.js.map +1 -0
- package/dist/ssr/inputs/TagsInput.js +122 -0
- package/dist/ssr/inputs/TagsInput.js.map +1 -0
- package/dist/ssr/inputs/TemplateEditor.js +164 -0
- package/dist/ssr/inputs/TemplateEditor.js.map +1 -0
- package/dist/ssr/inputs/TextInput.js +211 -0
- package/dist/ssr/inputs/TextInput.js.map +1 -0
- package/dist/ssr/inputs/choice.js +188 -0
- package/dist/ssr/inputs/choice.js.map +1 -0
- package/dist/ssr/inputs/completion/behaviors.js +108 -0
- package/dist/ssr/inputs/completion/behaviors.js.map +1 -0
- package/dist/ssr/inputs/completion/engine.js +103 -0
- package/dist/ssr/inputs/completion/engine.js.map +1 -0
- package/dist/ssr/inputs/completion/index.js +4 -0
- package/dist/ssr/inputs/completion/index.js.map +1 -0
- package/dist/ssr/inputs/completion/overlay.js +25 -0
- package/dist/ssr/inputs/completion/overlay.js.map +1 -0
- package/dist/ssr/inputs/date-picker.js +123 -0
- package/dist/ssr/inputs/date-picker.js.map +1 -0
- package/dist/ssr/inputs/editor-dom.js +26 -0
- package/dist/ssr/inputs/editor-dom.js.map +1 -0
- package/dist/ssr/inputs/field-contract.js +9 -0
- package/dist/ssr/inputs/field-contract.js.map +1 -0
- package/dist/ssr/inputs/icon-options.js +46 -0
- package/dist/ssr/inputs/icon-options.js.map +1 -0
- package/dist/ssr/inputs/image-crop.js +145 -0
- package/dist/ssr/inputs/image-crop.js.map +1 -0
- package/dist/ssr/inputs/index.js +23 -0
- package/dist/ssr/inputs/index.js.map +1 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js +516 -0
- package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -0
- package/dist/ssr/inputs/markdown/Toolbar.js +115 -0
- package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -0
- package/dist/ssr/inputs/markdown/actions.js +140 -0
- package/dist/ssr/inputs/markdown/actions.js.map +1 -0
- package/dist/ssr/inputs/markdown/active-formats.js +36 -0
- package/dist/ssr/inputs/markdown/active-formats.js.map +1 -0
- package/dist/ssr/inputs/markdown/behaviors.js +63 -0
- package/dist/ssr/inputs/markdown/behaviors.js.map +1 -0
- package/dist/ssr/inputs/markdown/code-zone.js +8 -0
- package/dist/ssr/inputs/markdown/code-zone.js.map +1 -0
- package/dist/ssr/internal/color.js +18 -0
- package/dist/ssr/internal/color.js.map +1 -0
- package/dist/ssr/internal/field.js +90 -0
- package/dist/ssr/internal/field.js.map +1 -0
- package/dist/ssr/internal/portal.js +17 -0
- package/dist/ssr/internal/portal.js.map +1 -0
- package/dist/ssr/intl/Format.js +192 -0
- package/dist/ssr/intl/Format.js.map +1 -0
- package/dist/ssr/intl/index.js +3 -0
- package/dist/ssr/intl/index.js.map +1 -0
- package/dist/ssr/intl/locale.js +63 -0
- package/dist/ssr/intl/locale.js.map +1 -0
- package/dist/ssr/intl/messages.js +753 -0
- package/dist/ssr/intl/messages.js.map +1 -0
- package/dist/ssr/layout/AppOverview.js +85 -0
- package/dist/ssr/layout/AppOverview.js.map +1 -0
- package/dist/ssr/layout/AppWorkspace.js +976 -0
- package/dist/ssr/layout/AppWorkspace.js.map +1 -0
- package/dist/ssr/layout/DataPanel.js +101 -0
- package/dist/ssr/layout/DataPanel.js.map +1 -0
- package/dist/ssr/layout/DetailPanel.js +284 -0
- package/dist/ssr/layout/DetailPanel.js.map +1 -0
- package/dist/ssr/layout/Discussion.js +319 -0
- package/dist/ssr/layout/Discussion.js.map +1 -0
- package/dist/ssr/layout/FloatingWindow.js +259 -0
- package/dist/ssr/layout/FloatingWindow.js.map +1 -0
- package/dist/ssr/layout/PanelDialog.js +136 -0
- package/dist/ssr/layout/PanelDialog.js.map +1 -0
- package/dist/ssr/layout/PanelHeader.js +45 -0
- package/dist/ssr/layout/PanelHeader.js.map +1 -0
- package/dist/ssr/layout/Panes.js +678 -0
- package/dist/ssr/layout/Panes.js.map +1 -0
- package/dist/ssr/layout/ScrollArea.js +18 -0
- package/dist/ssr/layout/ScrollArea.js.map +1 -0
- package/dist/ssr/layout/Settings.js +219 -0
- package/dist/ssr/layout/Settings.js.map +1 -0
- package/dist/ssr/layout/SettingsCollection.js +150 -0
- package/dist/ssr/layout/SettingsCollection.js.map +1 -0
- package/dist/ssr/layout/SettingsModal.js +156 -0
- package/dist/ssr/layout/SettingsModal.js.map +1 -0
- package/dist/ssr/layout/app-workspace-controller.js +419 -0
- package/dist/ssr/layout/app-workspace-controller.js.map +1 -0
- package/dist/ssr/layout/app-workspace-state.js +125 -0
- package/dist/ssr/layout/app-workspace-state.js.map +1 -0
- package/dist/ssr/layout/floating-window-geometry.js +15 -0
- package/dist/ssr/layout/floating-window-geometry.js.map +1 -0
- package/dist/ssr/layout/index.js +17 -0
- package/dist/ssr/layout/index.js.map +1 -0
- package/dist/ssr/layout/panes-layout.js +436 -0
- package/dist/ssr/layout/panes-layout.js.map +1 -0
- package/dist/ssr/layout/stable-id.js +17 -0
- package/dist/ssr/layout/stable-id.js.map +1 -0
- package/dist/ssr/semantics.js +2 -0
- package/dist/ssr/semantics.js.map +1 -0
- package/dist/ssr/surfaces/Avatar.js +43 -0
- package/dist/ssr/surfaces/Avatar.js.map +1 -0
- package/dist/ssr/surfaces/DescriptionList.js +25 -0
- package/dist/ssr/surfaces/DescriptionList.js.map +1 -0
- package/dist/ssr/surfaces/LinkCard.js +25 -0
- package/dist/ssr/surfaces/LinkCard.js.map +1 -0
- package/dist/ssr/surfaces/NotFoundState.js +38 -0
- package/dist/ssr/surfaces/NotFoundState.js.map +1 -0
- package/dist/ssr/surfaces/NoticeCard.js +83 -0
- package/dist/ssr/surfaces/NoticeCard.js.map +1 -0
- package/dist/ssr/surfaces/Paper.js +32 -0
- package/dist/ssr/surfaces/Paper.js.map +1 -0
- package/dist/ssr/surfaces/Placeholder.js +76 -0
- package/dist/ssr/surfaces/Placeholder.js.map +1 -0
- package/dist/ssr/surfaces/ProgressBar.js +13 -0
- package/dist/ssr/surfaces/ProgressBar.js.map +1 -0
- package/dist/ssr/surfaces/StatCell.js +80 -0
- package/dist/ssr/surfaces/StatCell.js.map +1 -0
- package/dist/ssr/surfaces/StatGrid.js +62 -0
- package/dist/ssr/surfaces/StatGrid.js.map +1 -0
- package/dist/ssr/surfaces/StatusBadge.js +38 -0
- package/dist/ssr/surfaces/StatusBadge.js.map +1 -0
- package/dist/ssr/surfaces/Tag.js +32 -0
- package/dist/ssr/surfaces/Tag.js.map +1 -0
- package/dist/ssr/surfaces/index.js +13 -0
- package/dist/ssr/surfaces/index.js.map +1 -0
- package/dist/ssr/widgets/Widget.js +54 -0
- package/dist/ssr/widgets/Widget.js.map +1 -0
- package/dist/ssr/widgets/WidgetHero.js +23 -0
- package/dist/ssr/widgets/WidgetHero.js.map +1 -0
- package/dist/ssr/widgets/WidgetList.js +73 -0
- package/dist/ssr/widgets/WidgetList.js.map +1 -0
- package/dist/ssr/widgets/WidgetPills.js +40 -0
- package/dist/ssr/widgets/WidgetPills.js.map +1 -0
- package/dist/ssr/widgets/WidgetStat.js +45 -0
- package/dist/ssr/widgets/WidgetStat.js.map +1 -0
- package/dist/ssr/widgets/WidgetStatus.js +23 -0
- package/dist/ssr/widgets/WidgetStatus.js.map +1 -0
- package/dist/ssr/widgets/index.js +7 -0
- package/dist/ssr/widgets/index.js.map +1 -0
- package/dist/styles.css +1 -0
- package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
- package/dist/tabler.css +4 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["assertUniqueStableUiIds","isStableUiId","PANES_LAYOUT_VERSION","PANES_MIN_RATIO","PANES_MAX_ID_LENGTH","MAX_DEPTH","MAX_NODES","isRecord","value","Array","isArray","isItemId","parseNode","usedItems","budget","depth","nodes","type","items","length","active","item","has","add","push","includes","direction","ratio","Number","isFinite","first","second","parsePanesLayout","version","root","Set","createPanesLayout","itemIds","findItem","node","itemId","path","index","indexOf","group","firstGroup","mapAtPath","update","segment","rest","removeFromNode","filter","id","Math","min","reconcileNode","desiredOpen","sameItems","left","right","every","sameNode","isWithinLayoutLimits","insertIntoGroup","beforeItemId","splice","activatePanesItem","layout","located","isPanesItemVisible","removePanesItem","addPanesItem","options","targetItemId","target","applyPanesIntent","intent","source","rootWithoutSource","nextTarget","side","itemGroup","itemFirst","nextRoot","reconcilePanesLayout","desiredOpenItemIds","present","collectPresent","missing","ids","forEach","resizePanesSplit","nextRatio","max","intentKey","samePanesIntent","canSplitSide","split","collectGroups","groups","nodeAtPath","current","isExistingSplitPlacement","parent","slice","sourceFirst","sibling","collectTreeStats","stats","maxDepth","itemDepth","Map","set","getPanesDropTargets","movable","splitStats","targets","seen","noop","sameGroup","remaining","kind","targetDepth","get","exceedsLimits","undefined"],"sources":["layout/panes-layout.ts"],"sourcesContent":["import { assertUniqueStableUiIds, isStableUiId } from \"./stable-id\";\n\nexport const PANES_LAYOUT_VERSION = 2 as const;\nexport const PANES_MIN_RATIO = 0.08;\nexport const PANES_MAX_ID_LENGTH = 160;\n\nexport type PanesDirection = \"horizontal\" | \"vertical\";\nexport type PanesSide = \"left\" | \"right\" | \"top\" | \"bottom\";\nexport type PanesPathSegment = \"first\" | \"second\";\nexport type PanesPath = readonly PanesPathSegment[];\n\nexport type PanesGroup = {\n type: \"group\";\n items: string[];\n active: string;\n};\n\nexport type PanesSplit = {\n type: \"split\";\n direction: PanesDirection;\n ratio: number;\n first: PanesNode;\n second: PanesNode;\n};\n\nexport type PanesNode = PanesGroup | PanesSplit;\n\nexport type PanesLayout = {\n version: typeof PANES_LAYOUT_VERSION;\n root: PanesNode | null;\n};\n\nexport type PanesIntent =\n | {\n type: \"tab\";\n itemId: string;\n targetItemId: string;\n beforeItemId: string | null;\n }\n | {\n type: \"split\";\n itemId: string;\n targetItemId: string;\n side: PanesSide;\n };\n\nexport type PanesDropTarget = {\n id: string;\n kind: \"tab\" | \"group\" | \"split\";\n targetItemId: string;\n beforeItemId?: string | null;\n side?: PanesSide;\n intent: PanesIntent;\n};\n\nexport type PanesDropTargetOptions = {\n movable: boolean;\n split: false | PanesDirection | \"both\";\n};\n\nconst MAX_DEPTH = 12;\nconst MAX_NODES = 64;\n\ntype LocatedGroup = {\n group: PanesGroup;\n path: PanesPathSegment[];\n index: number;\n};\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => !!value && typeof value === \"object\" && !Array.isArray(value);\n\nconst isItemId = (value: unknown): value is string => isStableUiId(value, PANES_MAX_ID_LENGTH);\n\nconst parseNode = (value: unknown, usedItems: Set<string>, budget: { nodes: number }, depth = 0): PanesNode | null => {\n if (!isRecord(value) || depth > MAX_DEPTH || budget.nodes >= MAX_NODES) return null;\n budget.nodes += 1;\n\n if (value.type === \"group\") {\n if (!Array.isArray(value.items) || value.items.length === 0 || !isItemId(value.active)) return null;\n const items: string[] = [];\n for (const item of value.items) {\n if (!isItemId(item) || usedItems.has(item)) return null;\n usedItems.add(item);\n items.push(item);\n }\n if (!items.includes(value.active)) return null;\n return { type: \"group\", items, active: value.active };\n }\n\n if (\n value.type !== \"split\" ||\n (value.direction !== \"horizontal\" && value.direction !== \"vertical\") ||\n typeof value.ratio !== \"number\" ||\n !Number.isFinite(value.ratio) ||\n value.ratio < PANES_MIN_RATIO ||\n value.ratio > 1 - PANES_MIN_RATIO\n ) {\n return null;\n }\n const first = parseNode(value.first, usedItems, budget, depth + 1);\n const second = parseNode(value.second, usedItems, budget, depth + 1);\n if (!first || !second) return null;\n return {\n type: \"split\",\n direction: value.direction,\n ratio: value.ratio,\n first,\n second,\n };\n};\n\nexport const parsePanesLayout = (value: unknown): PanesLayout | null => {\n if (!isRecord(value) || value.version !== PANES_LAYOUT_VERSION) return null;\n if (value.root === null) return { version: PANES_LAYOUT_VERSION, root: null };\n const root = parseNode(value.root, new Set<string>(), { nodes: 0 });\n return root ? { version: PANES_LAYOUT_VERSION, root } : null;\n};\n\nexport const createPanesLayout = (itemIds: readonly string[]): PanesLayout => {\n assertUniqueStableUiIds(itemIds, \"Panes item id\", PANES_MAX_ID_LENGTH);\n return {\n version: PANES_LAYOUT_VERSION,\n root: itemIds.length > 0 ? { type: \"group\", items: [...itemIds], active: itemIds[0]! } : null,\n };\n};\n\nconst findItem = (node: PanesNode | null, itemId: string, path: PanesPathSegment[] = []): LocatedGroup | null => {\n if (!node) return null;\n if (node.type === \"group\") {\n const index = node.items.indexOf(itemId);\n return index >= 0 ? { group: node, path, index } : null;\n }\n return findItem(node.first, itemId, [...path, \"first\"]) ?? findItem(node.second, itemId, [...path, \"second\"]);\n};\n\nconst firstGroup = (node: PanesNode | null): PanesGroup | null => {\n if (!node) return null;\n return node.type === \"group\" ? node : firstGroup(node.first);\n};\n\nconst mapAtPath = (node: PanesNode, path: PanesPath, update: (node: PanesNode) => PanesNode): PanesNode => {\n const [segment, ...rest] = path;\n if (!segment) return update(node);\n if (node.type !== \"split\") return node;\n if (segment === \"first\") {\n const first = mapAtPath(node.first, rest, update);\n return first === node.first ? node : { ...node, first };\n }\n const second = mapAtPath(node.second, rest, update);\n return second === node.second ? node : { ...node, second };\n};\n\nconst removeFromNode = (node: PanesNode, itemId: string): PanesNode | null => {\n if (node.type === \"group\") {\n const index = node.items.indexOf(itemId);\n if (index < 0) return node;\n const items = node.items.filter((id) => id !== itemId);\n if (items.length === 0) return null;\n const active = node.active === itemId ? items[Math.min(index, items.length - 1)]! : node.active;\n return { ...node, items, active };\n }\n\n const first = removeFromNode(node.first, itemId);\n const second = removeFromNode(node.second, itemId);\n if (!first) return second;\n if (!second) return first;\n if (first === node.first && second === node.second) return node;\n return { ...node, first, second };\n};\n\nconst reconcileNode = (node: PanesNode, desiredOpen: ReadonlySet<string>): PanesNode | null => {\n if (node.type === \"group\") {\n const items = node.items.filter((itemId) => desiredOpen.has(itemId));\n if (items.length === 0) return null;\n if (sameItems(items, node.items)) return node;\n const active = items.includes(node.active) ? node.active : items[Math.min(node.items.indexOf(node.active), items.length - 1)]!;\n return { ...node, items, active };\n }\n const first = reconcileNode(node.first, desiredOpen);\n const second = reconcileNode(node.second, desiredOpen);\n if (!first) return second;\n if (!second) return first;\n if (first === node.first && second === node.second) return node;\n return { ...node, first, second };\n};\n\nconst sameItems = (left: readonly string[], right: readonly string[]): boolean =>\n left.length === right.length && left.every((item, index) => item === right[index]);\n\nconst sameNode = (left: PanesNode, right: PanesNode): boolean => {\n if (left.type !== right.type) return false;\n if (left.type === \"group\" && right.type === \"group\") {\n return left.active === right.active && sameItems(left.items, right.items);\n }\n if (left.type === \"split\" && right.type === \"split\") {\n return (\n left.direction === right.direction &&\n left.ratio === right.ratio &&\n sameNode(left.first, right.first) &&\n sameNode(left.second, right.second)\n );\n }\n return false;\n};\n\nconst isWithinLayoutLimits = (node: PanesNode, budget = { nodes: 0 }, depth = 0): boolean => {\n if (depth > MAX_DEPTH || budget.nodes >= MAX_NODES) return false;\n budget.nodes += 1;\n return (\n node.type === \"group\" || (isWithinLayoutLimits(node.first, budget, depth + 1) && isWithinLayoutLimits(node.second, budget, depth + 1))\n );\n};\n\nconst insertIntoGroup = (group: PanesGroup, itemId: string, beforeItemId: string | null): PanesGroup | null => {\n if (beforeItemId !== null && !group.items.includes(beforeItemId)) return null;\n const items = group.items.filter((id) => id !== itemId);\n const index = beforeItemId === null ? items.length : items.indexOf(beforeItemId);\n if (index < 0) return null;\n items.splice(index, 0, itemId);\n if (sameItems(items, group.items)) return group;\n return { ...group, items, active: itemId };\n};\n\nexport const activatePanesItem = (layout: PanesLayout, itemId: string): PanesLayout => {\n const located = findItem(layout.root, itemId);\n if (!located || located.group.active === itemId || !layout.root) return layout;\n return {\n version: PANES_LAYOUT_VERSION,\n root: mapAtPath(layout.root, located.path, (node) => (node.type === \"group\" ? { ...node, active: itemId } : node)),\n };\n};\n\nexport const isPanesItemVisible = (layout: PanesLayout, itemId: string): boolean => findItem(layout.root, itemId)?.group.active === itemId;\n\nexport const removePanesItem = (layout: PanesLayout, itemId: string): PanesLayout => {\n if (!layout.root || !findItem(layout.root, itemId)) return layout;\n return { version: PANES_LAYOUT_VERSION, root: removeFromNode(layout.root, itemId) };\n};\n\nexport type AddPanesItemOptions = {\n itemId: string;\n targetItemId: string | null;\n beforeItemId?: string | null;\n};\n\nexport const addPanesItem = (layout: PanesLayout, options: AddPanesItemOptions): PanesLayout => {\n if (!isItemId(options.itemId) || findItem(layout.root, options.itemId)) return layout;\n if (!layout.root) {\n return options.targetItemId === null ? createPanesLayout([options.itemId]) : layout;\n }\n if (options.targetItemId === null) return layout;\n const target = findItem(layout.root, options.targetItemId);\n if (!target) return layout;\n const group = insertIntoGroup(target.group, options.itemId, options.beforeItemId ?? null);\n if (!group) return layout;\n return { version: PANES_LAYOUT_VERSION, root: mapAtPath(layout.root, target.path, () => group) };\n};\n\nexport const applyPanesIntent = (layout: PanesLayout, intent: PanesIntent): PanesLayout => {\n if (!layout.root || intent.itemId === intent.targetItemId) return layout;\n const source = findItem(layout.root, intent.itemId);\n const target = findItem(layout.root, intent.targetItemId);\n if (!source || !target) return layout;\n\n if (intent.type === \"tab\" && source.group === target.group) {\n const group = insertIntoGroup(source.group, intent.itemId, intent.beforeItemId);\n if (!group || group === source.group) return layout;\n return { version: PANES_LAYOUT_VERSION, root: mapAtPath(layout.root, source.path, () => group) };\n }\n\n const rootWithoutSource = removeFromNode(layout.root, intent.itemId);\n if (!rootWithoutSource) return layout;\n const nextTarget = findItem(rootWithoutSource, intent.targetItemId);\n if (!nextTarget) return layout;\n\n if (intent.type === \"tab\") {\n const group = insertIntoGroup(nextTarget.group, intent.itemId, intent.beforeItemId);\n if (!group) return layout;\n return { version: PANES_LAYOUT_VERSION, root: mapAtPath(rootWithoutSource, nextTarget.path, () => group) };\n }\n\n const direction: PanesDirection = intent.side === \"left\" || intent.side === \"right\" ? \"horizontal\" : \"vertical\";\n const itemGroup: PanesGroup = { type: \"group\", items: [intent.itemId], active: intent.itemId };\n const itemFirst = intent.side === \"left\" || intent.side === \"top\";\n const nextRoot = mapAtPath(rootWithoutSource, nextTarget.path, (node) => ({\n type: \"split\",\n direction,\n ratio: 0.5,\n first: itemFirst ? itemGroup : node,\n second: itemFirst ? node : itemGroup,\n }));\n if (!isWithinLayoutLimits(nextRoot) || sameNode(nextRoot, layout.root)) return layout;\n return {\n version: PANES_LAYOUT_VERSION,\n root: nextRoot,\n };\n};\n\nexport const reconcilePanesLayout = (layout: PanesLayout, desiredOpenItemIds: readonly string[]): PanesLayout => {\n assertUniqueStableUiIds(desiredOpenItemIds, \"Panes item id\", PANES_MAX_ID_LENGTH);\n const desiredOpen = new Set(desiredOpenItemIds);\n const root = layout.root ? reconcileNode(layout.root, desiredOpen) : null;\n const present = new Set<string>();\n collectPresent(root, present);\n const missing = desiredOpenItemIds.filter((itemId) => !present.has(itemId));\n if (missing.length === 0) return root === layout.root ? layout : { version: PANES_LAYOUT_VERSION, root };\n if (!root) return createPanesLayout(missing);\n const target = firstGroup(root);\n if (!target) return createPanesLayout(missing);\n const located = findItem(root, target.active);\n if (!located) return createPanesLayout(missing);\n const group = { ...located.group, items: [...located.group.items, ...missing] };\n return { version: PANES_LAYOUT_VERSION, root: mapAtPath(root, located.path, () => group) };\n};\n\nconst collectPresent = (node: PanesNode | null, ids: Set<string>): void => {\n if (!node) return;\n if (node.type === \"group\") {\n node.items.forEach((item) => ids.add(item));\n return;\n }\n collectPresent(node.first, ids);\n collectPresent(node.second, ids);\n};\n\nexport const resizePanesSplit = (layout: PanesLayout, path: PanesPath, ratio: number): PanesLayout => {\n if (!layout.root || !Number.isFinite(ratio)) return layout;\n let target: PanesNode = layout.root;\n for (const segment of path) {\n if (target.type !== \"split\") return layout;\n target = target[segment];\n }\n if (target.type !== \"split\") return layout;\n const nextRatio = Math.min(1 - PANES_MIN_RATIO, Math.max(PANES_MIN_RATIO, ratio));\n if (nextRatio === target.ratio) return layout;\n return {\n version: PANES_LAYOUT_VERSION,\n root: mapAtPath(layout.root, path, (node) => (node.type === \"split\" ? { ...node, ratio: nextRatio } : node)),\n };\n};\n\nconst intentKey = (intent: PanesIntent): string =>\n intent.type === \"tab\"\n ? `tab:${intent.itemId}:${intent.targetItemId}:${intent.beforeItemId === null ? \"end:\" : `before:${intent.beforeItemId}`}`\n : `split:${intent.itemId}:${intent.targetItemId}:${intent.side}`;\n\nexport const samePanesIntent = (left: PanesIntent | null, right: PanesIntent | null): boolean =>\n left === right ||\n (!!left &&\n !!right &&\n left.type === right.type &&\n left.itemId === right.itemId &&\n left.targetItemId === right.targetItemId &&\n (left.type === \"tab\" && right.type === \"tab\"\n ? left.beforeItemId === right.beforeItemId\n : left.type === \"split\" && right.type === \"split\" && left.side === right.side));\n\nconst canSplitSide = (side: PanesSide, split: PanesDropTargetOptions[\"split\"]): boolean => {\n if (split === false) return false;\n const direction = side === \"left\" || side === \"right\" ? \"horizontal\" : \"vertical\";\n return split === \"both\" || split === direction;\n};\n\nconst collectGroups = (node: PanesNode | null, groups: PanesGroup[] = []): PanesGroup[] => {\n if (!node) return groups;\n if (node.type === \"group\") groups.push(node);\n else {\n collectGroups(node.first, groups);\n collectGroups(node.second, groups);\n }\n return groups;\n};\n\nconst nodeAtPath = (node: PanesNode, path: PanesPath): PanesNode | null => {\n let current = node;\n for (const segment of path) {\n if (current.type !== \"split\") return null;\n current = current[segment];\n }\n return current;\n};\n\nconst isExistingSplitPlacement = (layout: PanesLayout, source: LocatedGroup, targetItemId: string, side: PanesSide): boolean => {\n if (!layout.root || source.group.items.length !== 1 || source.path.length === 0) return false;\n const segment = source.path[source.path.length - 1]!;\n const parent = nodeAtPath(layout.root, source.path.slice(0, -1));\n if (!parent || parent.type !== \"split\" || parent.ratio !== 0.5) return false;\n const direction: PanesDirection = side === \"left\" || side === \"right\" ? \"horizontal\" : \"vertical\";\n const sourceFirst = side === \"left\" || side === \"top\";\n if (parent.direction !== direction || (segment === \"first\") !== sourceFirst) return false;\n const sibling = parent[segment === \"first\" ? \"second\" : \"first\"];\n return sibling.type === \"group\" && sibling.items.includes(targetItemId);\n};\n\nconst collectTreeStats = (\n node: PanesNode,\n depth = 0,\n stats: { nodes: number; maxDepth: number; itemDepth: Map<string, number> } = {\n nodes: 0,\n maxDepth: 0,\n itemDepth: new Map(),\n },\n) => {\n stats.nodes += 1;\n stats.maxDepth = Math.max(stats.maxDepth, depth);\n if (node.type === \"group\") node.items.forEach((itemId) => stats.itemDepth.set(itemId, depth));\n else {\n collectTreeStats(node.first, depth + 1, stats);\n collectTreeStats(node.second, depth + 1, stats);\n }\n return stats;\n};\n\nexport const getPanesDropTargets = (layout: PanesLayout, itemId: string, options: PanesDropTargetOptions): PanesDropTarget[] => {\n if (!options.movable || !layout.root) return [];\n const source = findItem(layout.root, itemId);\n if (!source) return [];\n const rootWithoutSource = removeFromNode(layout.root, itemId);\n const splitStats = rootWithoutSource ? collectTreeStats(rootWithoutSource) : null;\n const targets: PanesDropTarget[] = [];\n const seen = new Set<string>();\n const add = (target: Omit<PanesDropTarget, \"id\">, noop = false) => {\n const id = intentKey(target.intent);\n if (noop || seen.has(id)) return;\n seen.add(id);\n targets.push({ ...target, id });\n };\n\n for (const group of collectGroups(layout.root)) {\n const sameGroup = group === source.group;\n const remaining = group.items.filter((id) => id !== itemId);\n const targetItemId = sameGroup ? remaining[0] : group.active;\n if (!targetItemId) continue;\n for (const beforeItemId of remaining) {\n const intent: PanesIntent = { type: \"tab\", itemId, targetItemId, beforeItemId };\n add(\n {\n kind: \"tab\",\n targetItemId,\n beforeItemId,\n intent,\n },\n sameGroup && group.items[source.index + 1] === beforeItemId,\n );\n }\n if (sameGroup) {\n const intent: PanesIntent = { type: \"tab\", itemId, targetItemId, beforeItemId: null };\n add(\n {\n kind: \"tab\",\n targetItemId,\n beforeItemId: null,\n intent,\n },\n source.index === group.items.length - 1,\n );\n } else {\n add({\n kind: \"group\",\n targetItemId,\n intent: { type: \"tab\", itemId, targetItemId, beforeItemId: null },\n });\n }\n\n for (const side of [\"top\", \"right\", \"bottom\", \"left\"] as const) {\n if (!canSplitSide(side, options.split)) continue;\n const intent: PanesIntent = { type: \"split\", itemId, targetItemId, side };\n const targetDepth = splitStats?.itemDepth.get(targetItemId);\n const exceedsLimits =\n !splitStats ||\n targetDepth === undefined ||\n splitStats.nodes + 2 > MAX_NODES ||\n Math.max(splitStats.maxDepth, targetDepth + 1) > MAX_DEPTH;\n add(\n {\n kind: \"split\",\n targetItemId,\n side,\n intent,\n },\n exceedsLimits || isExistingSplitPlacement(layout, source, targetItemId, side),\n );\n }\n }\n return targets;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const STABLE_UI_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;
|
|
2
|
+
export const isStableUiId = (value, maxLength = 64) => typeof value === "string" && value.length > 0 && value.length <= maxLength && STABLE_UI_ID.test(value);
|
|
3
|
+
export const assertStableUiId = (value, label, maxLength = 64) => {
|
|
4
|
+
if (!isStableUiId(value, maxLength)) {
|
|
5
|
+
throw new Error(`${label} must start with a letter and contain only letters, numbers, underscores, or hyphens.`);
|
|
6
|
+
}
|
|
7
|
+
return value;
|
|
8
|
+
};
|
|
9
|
+
export const assertUniqueStableUiIds = (values, label, maxLength = 64) => {
|
|
10
|
+
const seen = new Set();
|
|
11
|
+
values.forEach(value => {
|
|
12
|
+
assertStableUiId(value, label, maxLength);
|
|
13
|
+
if (seen.has(value)) throw new Error(`${label} must be unique; received duplicate id "${value}".`);
|
|
14
|
+
seen.add(value);
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=stable-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["STABLE_UI_ID","isStableUiId","value","maxLength","length","test","assertStableUiId","label","Error","assertUniqueStableUiIds","values","seen","Set","forEach","has","add"],"sources":["layout/stable-id.ts"],"sourcesContent":["const STABLE_UI_ID = /^[A-Za-z][A-Za-z0-9_-]*$/;\n\nexport const isStableUiId = (value: unknown, maxLength = 64): value is string =>\n typeof value === \"string\" && value.length > 0 && value.length <= maxLength && STABLE_UI_ID.test(value);\n\nexport const assertStableUiId = (value: string, label: string, maxLength = 64): string => {\n if (!isStableUiId(value, maxLength)) {\n throw new Error(`${label} must start with a letter and contain only letters, numbers, underscores, or hyphens.`);\n }\n return value;\n};\n\nexport const assertUniqueStableUiIds = (values: readonly string[], label: string, maxLength = 64): void => {\n const seen = new Set<string>();\n values.forEach((value) => {\n assertStableUiId(value, label, maxLength);\n if (seen.has(value)) throw new Error(`${label} must be unique; received duplicate id \"${value}\".`);\n seen.add(value);\n });\n};\n"],"mappings":"AAAA,MAAMA,YAAY,GAAG,0BAA0B;AAE/C,OAAO,MAAMC,YAAY,GAAGA,CAACC,KAAc,EAAEC,SAAS,GAAG,EAAE,KACzD,OAAOD,KAAK,KAAK,QAAQ,IAAIA,KAAK,CAACE,MAAM,GAAG,CAAC,IAAIF,KAAK,CAACE,MAAM,IAAID,SAAS,IAAIH,YAAY,CAACK,IAAI,CAACH,KAAK,CAAC;AAExG,OAAO,MAAMI,gBAAgB,GAAGA,CAACJ,KAAa,EAAEK,KAAa,EAAEJ,SAAS,GAAG,EAAE,KAAa;EACxF,IAAI,CAACF,YAAY,CAACC,KAAK,EAAEC,SAAS,CAAC,EAAE;IACnC,MAAM,IAAIK,KAAK,CAAC,GAAGD,KAAK,uFAAuF,CAAC;EAClH;EACA,OAAOL,KAAK;AACd,CAAC;AAED,OAAO,MAAMO,uBAAuB,GAAGA,CAACC,MAAyB,EAAEH,KAAa,EAAEJ,SAAS,GAAG,EAAE,KAAW;EACzG,MAAMQ,IAAI,GAAG,IAAIC,GAAG,CAAS,CAAC;EAC9BF,MAAM,CAACG,OAAO,CAAEX,KAAK,IAAK;IACxBI,gBAAgB,CAACJ,KAAK,EAAEK,KAAK,EAAEJ,SAAS,CAAC;IACzC,IAAIQ,IAAI,CAACG,GAAG,CAACZ,KAAK,CAAC,EAAE,MAAM,IAAIM,KAAK,CAAC,GAAGD,KAAK,2CAA2CL,KAAK,IAAI,CAAC;IAClGS,IAAI,CAACI,GAAG,CAACb,KAAK,CAAC;EACjB,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":["semantics.ts"],"sourcesContent":["/** Semantic intent for user-facing feedback and actions. */\nexport type IntentTone = \"neutral\" | \"info\" | \"success\" | \"warning\" | \"danger\";\n\n/** Deliberately small accent palette for data and identity presentation. */\nexport type AccentColor = \"zinc\" | \"blue\" | \"emerald\" | \"amber\" | \"red\";\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { style as _$style } from "solid-js/web";
|
|
3
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
4
|
+
import { insert as _$insert } from "solid-js/web";
|
|
5
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
6
|
+
import { memo as _$memo } from "solid-js/web";
|
|
7
|
+
import { className as _$className } from "solid-js/web";
|
|
8
|
+
import { effect as _$effect } from "solid-js/web";
|
|
9
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
10
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
11
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<span role=img>`),
|
|
12
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<img decoding=async>`, true, false, false);
|
|
13
|
+
import { createEffect, createSignal, on, Show } from "solid-js";
|
|
14
|
+
import { useUiMessages } from "../intl/messages";
|
|
15
|
+
const initialsFor = name => {
|
|
16
|
+
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
17
|
+
if (parts.length === 0) return "?";
|
|
18
|
+
if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? "?";
|
|
19
|
+
return `${parts[0]?.[0] ?? ""}${parts.at(-1)?.[0] ?? ""}`.toUpperCase();
|
|
20
|
+
};
|
|
21
|
+
export function Avatar(props) {
|
|
22
|
+
const messages = useUiMessages();
|
|
23
|
+
const [failed, setFailed] = createSignal(false);
|
|
24
|
+
const label = () => props.name.trim() || messages().unknownUser;
|
|
25
|
+
// Derive initials from the given name, not from the accessible-name fallback:
|
|
26
|
+
// an empty `name` must render "?" the way Cloud's avatar does, not "UU".
|
|
27
|
+
const fallback = () => props.fallback ?? initialsFor(props.name);
|
|
28
|
+
const fallbackContent = () => props.icon ? (() => {
|
|
29
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
30
|
+
_$effect(() => _$className(_el$, props.icon));
|
|
31
|
+
return _el$;
|
|
32
|
+
})() : fallback();
|
|
33
|
+
const className = () => `k2b-avatar ${props.class ?? ""}`;
|
|
34
|
+
createEffect(on(() => props.src, () => setFailed(false), {
|
|
35
|
+
defer: true
|
|
36
|
+
}));
|
|
37
|
+
return _$createComponent(Show, {
|
|
38
|
+
get when() {
|
|
39
|
+
return _$memo(() => !!!failed())() ? props.src || undefined : undefined;
|
|
40
|
+
},
|
|
41
|
+
get fallback() {
|
|
42
|
+
return (() => {
|
|
43
|
+
var _el$2 = _$getNextElement(_tmpl$2);
|
|
44
|
+
_$insert(_el$2, fallbackContent);
|
|
45
|
+
_$effect(_p$ => {
|
|
46
|
+
var _v$ = className(),
|
|
47
|
+
_v$2 = props.size ?? "md",
|
|
48
|
+
_v$3 = props.style,
|
|
49
|
+
_v$4 = props.alt ?? messages().avatarLabel({
|
|
50
|
+
name: label()
|
|
51
|
+
});
|
|
52
|
+
_v$ !== _p$.e && _$className(_el$2, _p$.e = _v$);
|
|
53
|
+
_v$2 !== _p$.t && _$setAttribute(_el$2, "data-size", _p$.t = _v$2);
|
|
54
|
+
_p$.a = _$style(_el$2, _v$3, _p$.a);
|
|
55
|
+
_v$4 !== _p$.o && _$setAttribute(_el$2, "aria-label", _p$.o = _v$4);
|
|
56
|
+
return _p$;
|
|
57
|
+
}, {
|
|
58
|
+
e: undefined,
|
|
59
|
+
t: undefined,
|
|
60
|
+
a: undefined,
|
|
61
|
+
o: undefined
|
|
62
|
+
});
|
|
63
|
+
return _el$2;
|
|
64
|
+
})();
|
|
65
|
+
},
|
|
66
|
+
children: src => (() => {
|
|
67
|
+
var _el$3 = _$getNextElement(_tmpl$3);
|
|
68
|
+
_el$3.addEventListener("error", () => setFailed(true));
|
|
69
|
+
_$effect(_p$ => {
|
|
70
|
+
var _v$5 = src(),
|
|
71
|
+
_v$6 = props.alt ?? messages().avatarLabel({
|
|
72
|
+
name: label()
|
|
73
|
+
}),
|
|
74
|
+
_v$7 = className(),
|
|
75
|
+
_v$8 = props.size ?? "md",
|
|
76
|
+
_v$9 = props.style,
|
|
77
|
+
_v$0 = props.loading ?? "lazy";
|
|
78
|
+
_v$5 !== _p$.e && _$setAttribute(_el$3, "src", _p$.e = _v$5);
|
|
79
|
+
_v$6 !== _p$.t && _$setAttribute(_el$3, "alt", _p$.t = _v$6);
|
|
80
|
+
_v$7 !== _p$.a && _$className(_el$3, _p$.a = _v$7);
|
|
81
|
+
_v$8 !== _p$.o && _$setAttribute(_el$3, "data-size", _p$.o = _v$8);
|
|
82
|
+
_p$.i = _$style(_el$3, _v$9, _p$.i);
|
|
83
|
+
_v$0 !== _p$.n && _$setAttribute(_el$3, "loading", _p$.n = _v$0);
|
|
84
|
+
return _p$;
|
|
85
|
+
}, {
|
|
86
|
+
e: undefined,
|
|
87
|
+
t: undefined,
|
|
88
|
+
a: undefined,
|
|
89
|
+
o: undefined,
|
|
90
|
+
i: undefined,
|
|
91
|
+
n: undefined
|
|
92
|
+
});
|
|
93
|
+
return _el$3;
|
|
94
|
+
})()
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=Avatar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createEffect","createSignal","on","Show","useUiMessages","initialsFor","name","parts","trim","split","filter","Boolean","length","slice","toUpperCase","at","Avatar","props","messages","failed","setFailed","label","unknownUser","fallback","fallbackContent","icon","_el$","_$getNextElement","_tmpl$","_$effect","_$className","className","class","src","defer","_$createComponent","when","_$memo","undefined","_el$2","_tmpl$2","_$insert","_p$","_v$","_v$2","size","_v$3","style","_v$4","alt","avatarLabel","e","t","_$setAttribute","a","_$style","o","children","_el$3","_tmpl$3","addEventListener","_v$5","_v$6","_v$7","_v$8","_v$9","_v$0","loading","i","n"],"sources":["surfaces/Avatar.tsx"],"sourcesContent":["import { createEffect, createSignal, type JSX, on, Show } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type AvatarProps = {\n name: string;\n src?: string | null;\n icon?: string;\n alt?: string;\n fallback?: string;\n size?: AvatarSize;\n loading?: \"eager\" | \"lazy\";\n class?: string;\n style?: JSX.CSSProperties | string;\n};\n\nconst initialsFor = (name: string): string => {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0]?.slice(0, 2).toUpperCase() ?? \"?\";\n return `${parts[0]?.[0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n};\n\nexport function Avatar(props: AvatarProps): JSX.Element {\n const messages = useUiMessages();\n const [failed, setFailed] = createSignal(false);\n const label = () => props.name.trim() || messages().unknownUser;\n // Derive initials from the given name, not from the accessible-name fallback:\n // an empty `name` must render \"?\" the way Cloud's avatar does, not \"UU\".\n const fallback = () => props.fallback ?? initialsFor(props.name);\n const fallbackContent = () => (props.icon ? <i class={props.icon} aria-hidden=\"true\" /> : fallback());\n const className = () => `k2b-avatar ${props.class ?? \"\"}`;\n\n createEffect(\n on(\n () => props.src,\n () => setFailed(false),\n { defer: true },\n ),\n );\n\n return (\n <Show\n when={!failed() ? props.src || undefined : undefined}\n fallback={\n <span\n class={className()}\n data-size={props.size ?? \"md\"}\n style={props.style}\n role=\"img\"\n aria-label={props.alt ?? messages().avatarLabel({ name: label() })}\n >\n {fallbackContent()}\n </span>\n }\n >\n {(src) => (\n <img\n src={src()}\n alt={props.alt ?? messages().avatarLabel({ name: label() })}\n class={className()}\n data-size={props.size ?? \"md\"}\n style={props.style}\n loading={props.loading ?? \"lazy\"}\n decoding=\"async\"\n onError={() => setFailed(true)}\n />\n )}\n </Show>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
3
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
4
|
+
import { className as _$className } from "solid-js/web";
|
|
5
|
+
import { effect as _$effect } from "solid-js/web";
|
|
6
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
7
|
+
import { insert as _$insert } from "solid-js/web";
|
|
8
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
9
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<dl>`),
|
|
10
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-description-list__item><dt></dt><dd></dd><!$><!/>`),
|
|
11
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-description-list__action>`);
|
|
12
|
+
import { For, Show } from "solid-js";
|
|
13
|
+
/** Semantic key-value content with predictable responsive density. */
|
|
14
|
+
export function DescriptionList(props) {
|
|
15
|
+
const columns = () => Math.max(1, Math.min(3, props.columns ?? 1));
|
|
16
|
+
return (() => {
|
|
17
|
+
var _el$ = _$getNextElement(_tmpl$);
|
|
18
|
+
_$insert(_el$, _$createComponent(For, {
|
|
19
|
+
get each() {
|
|
20
|
+
return props.items;
|
|
21
|
+
},
|
|
22
|
+
children: item => (() => {
|
|
23
|
+
var _el$2 = _$getNextElement(_tmpl$2),
|
|
24
|
+
_el$3 = _el$2.firstChild,
|
|
25
|
+
_el$4 = _el$3.nextSibling,
|
|
26
|
+
_el$5 = _el$4.nextSibling,
|
|
27
|
+
[_el$6, _co$] = _$getNextMarker(_el$5.nextSibling);
|
|
28
|
+
_$insert(_el$3, () => item.term);
|
|
29
|
+
_$insert(_el$4, () => item.description);
|
|
30
|
+
_$insert(_el$2, _$createComponent(Show, {
|
|
31
|
+
get when() {
|
|
32
|
+
return item.action;
|
|
33
|
+
},
|
|
34
|
+
children: action => (() => {
|
|
35
|
+
var _el$7 = _$getNextElement(_tmpl$3);
|
|
36
|
+
_$insert(_el$7, action);
|
|
37
|
+
return _el$7;
|
|
38
|
+
})()
|
|
39
|
+
}), _el$6, _co$);
|
|
40
|
+
return _el$2;
|
|
41
|
+
})()
|
|
42
|
+
}));
|
|
43
|
+
_$effect(_p$ => {
|
|
44
|
+
var _v$ = `k2b-description-list ${props.class ?? ""}`,
|
|
45
|
+
_v$2 = columns(),
|
|
46
|
+
_v$3 = props.layout ?? "grid",
|
|
47
|
+
_v$4 = props.size ?? "md",
|
|
48
|
+
_v$5 = props.actionVisibility ?? "always";
|
|
49
|
+
_v$ !== _p$.e && _$className(_el$, _p$.e = _v$);
|
|
50
|
+
_v$2 !== _p$.t && _$setAttribute(_el$, "data-columns", _p$.t = _v$2);
|
|
51
|
+
_v$3 !== _p$.a && _$setAttribute(_el$, "data-layout", _p$.a = _v$3);
|
|
52
|
+
_v$4 !== _p$.o && _$setAttribute(_el$, "data-size", _p$.o = _v$4);
|
|
53
|
+
_v$5 !== _p$.i && _$setAttribute(_el$, "data-action-visibility", _p$.i = _v$5);
|
|
54
|
+
return _p$;
|
|
55
|
+
}, {
|
|
56
|
+
e: undefined,
|
|
57
|
+
t: undefined,
|
|
58
|
+
a: undefined,
|
|
59
|
+
o: undefined,
|
|
60
|
+
i: undefined
|
|
61
|
+
});
|
|
62
|
+
return _el$;
|
|
63
|
+
})();
|
|
64
|
+
}
|
|
65
|
+
export default DescriptionList;
|
|
66
|
+
//# sourceMappingURL=DescriptionList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["For","Show","DescriptionList","props","columns","Math","max","min","_el$","_$getNextElement","_tmpl$","_$insert","_$createComponent","each","items","children","item","_el$2","_tmpl$2","_el$3","firstChild","_el$4","nextSibling","_el$5","_el$6","_co$","_$getNextMarker","term","description","when","action","_el$7","_tmpl$3","_$effect","_p$","_v$","class","_v$2","_v$3","layout","_v$4","size","_v$5","actionVisibility","e","_$className","t","_$setAttribute","a","o","i","undefined"],"sources":["surfaces/DescriptionList.tsx"],"sourcesContent":["import { For, type JSX, Show } from \"solid-js\";\n\nexport type DescriptionListItem = {\n term: JSX.Element;\n description: JSX.Element;\n action?: JSX.Element;\n};\n\nexport type DescriptionListProps = {\n items: readonly DescriptionListItem[];\n columns?: 1 | 2 | 3;\n layout?: \"grid\" | \"rows\";\n size?: \"sm\" | \"md\";\n actionVisibility?: \"always\" | \"progressive\";\n class?: string;\n};\n\n/** Semantic key-value content with predictable responsive density. */\nexport function DescriptionList(props: DescriptionListProps): JSX.Element {\n const columns = () => Math.max(1, Math.min(3, props.columns ?? 1));\n return (\n <dl\n class={`k2b-description-list ${props.class ?? \"\"}`}\n data-columns={columns()}\n data-layout={props.layout ?? \"grid\"}\n data-size={props.size ?? \"md\"}\n data-action-visibility={props.actionVisibility ?? \"always\"}\n >\n <For each={props.items}>\n {(item) => (\n <div class=\"k2b-description-list__item\">\n <dt>{item.term}</dt>\n <dd>{item.description}</dd>\n <Show when={item.action}>{(action) => <div class=\"k2b-description-list__action\">{action()}</div>}</Show>\n </div>\n )}\n </For>\n </dl>\n );\n}\n\nexport default DescriptionList;\n"],"mappings":";;;;;;;;;;;AAAA,SAASA,GAAG,EAAYC,IAAI,QAAQ,UAAU;AAiB9C;AACA,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAe;EACxE,MAAMC,OAAO,GAAGA,CAAA,KAAMC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,GAAG,CAAC,CAAC,EAAEJ,KAAK,CAACC,OAAO,IAAI,CAAC,CAAC,CAAC;EAClE;IAAA,IAAAI,IAAA,GAAAC,gBAAA,CAAAC,MAAA;IAAAC,QAAA,CAAAH,IAAA,EAAAI,iBAAA,CAQKZ,GAAG;MAAA,IAACa,IAAIA,CAAA;QAAA,OAAEV,KAAK,CAACW,KAAK;MAAA;MAAAC,QAAA,EAClBC,IAAI;QAAA,IAAAC,KAAA,GAAAR,gBAAA,CAAAS,OAAA;UAAAC,KAAA,GAAAF,KAAA,CAAAG,UAAA;UAAAC,KAAA,GAAAF,KAAA,CAAAG,WAAA;UAAAC,KAAA,GAAAF,KAAA,CAAAC,WAAA;UAAA,CAAAE,KAAA,EAAAC,IAAA,IAAAC,eAAA,CAAAH,KAAA,CAAAD,WAAA;QAAAX,QAAA,CAAAQ,KAAA,QAEGH,IAAI,CAACW,IAAI;QAAAhB,QAAA,CAAAU,KAAA,QACTL,IAAI,CAACY,WAAW;QAAAjB,QAAA,CAAAM,KAAA,EAAAL,iBAAA,CACpBX,IAAI;UAAA,IAAC4B,IAAIA,CAAA;YAAA,OAAEb,IAAI,CAACc,MAAM;UAAA;UAAAf,QAAA,EAAIe,MAAM;YAAA,IAAAC,KAAA,GAAAtB,gBAAA,CAAAuB,OAAA;YAAArB,QAAA,CAAAoB,KAAA,EAAgDD,MAAM;YAAA,OAAAC,KAAA;UAAA;QAAS,IAAAP,KAAA,EAAAC,IAAA;QAAA,OAAAR,KAAA;MAAA;IAEnG;IAAAgB,QAAA,CAAAC,GAAA;MAAA,IAAAC,GAAA,GAbI,wBAAwBhC,KAAK,CAACiC,KAAK,IAAI,EAAE,EAAE;QAAAC,IAAA,GACpCjC,OAAO,CAAC,CAAC;QAAAkC,IAAA,GACVnC,KAAK,CAACoC,MAAM,IAAI,MAAM;QAAAC,IAAA,GACxBrC,KAAK,CAACsC,IAAI,IAAI,IAAI;QAAAC,IAAA,GACLvC,KAAK,CAACwC,gBAAgB,IAAI,QAAQ;MAAAR,GAAA,KAAAD,GAAA,CAAAU,CAAA,IAAAC,WAAA,CAAArC,IAAA,EAAA0B,GAAA,CAAAU,CAAA,GAAAT,GAAA;MAAAE,IAAA,KAAAH,GAAA,CAAAY,CAAA,IAAAC,cAAA,CAAAvC,IAAA,kBAAA0B,GAAA,CAAAY,CAAA,GAAAT,IAAA;MAAAC,IAAA,KAAAJ,GAAA,CAAAc,CAAA,IAAAD,cAAA,CAAAvC,IAAA,iBAAA0B,GAAA,CAAAc,CAAA,GAAAV,IAAA;MAAAE,IAAA,KAAAN,GAAA,CAAAe,CAAA,IAAAF,cAAA,CAAAvC,IAAA,eAAA0B,GAAA,CAAAe,CAAA,GAAAT,IAAA;MAAAE,IAAA,KAAAR,GAAA,CAAAgB,CAAA,IAAAH,cAAA,CAAAvC,IAAA,4BAAA0B,GAAA,CAAAgB,CAAA,GAAAR,IAAA;MAAA,OAAAR,GAAA;IAAA;MAAAU,CAAA,EAAAO,SAAA;MAAAL,CAAA,EAAAK,SAAA;MAAAH,CAAA,EAAAG,SAAA;MAAAF,CAAA,EAAAE,SAAA;MAAAD,CAAA,EAAAC;IAAA;IAAA,OAAA3C,IAAA;EAAA;AAahE;AAEA,eAAeN,eAAe","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
3
|
+
import { insert as _$insert } from "solid-js/web";
|
|
4
|
+
import { className as _$className } from "solid-js/web";
|
|
5
|
+
import { effect as _$effect } from "solid-js/web";
|
|
6
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-link-card__icon><i aria-hidden=true>`),
|
|
8
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<div class=k2b-link-card__copy><span class=k2b-link-card__title></span><p class=k2b-link-card__description>`),
|
|
9
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<i class="ti ti-chevron-right k2b-link-card__chevron"aria-hidden=true>`);
|
|
10
|
+
import { Paper } from "./Paper";
|
|
11
|
+
export function LinkCard(props) {
|
|
12
|
+
return _$createComponent(Paper, {
|
|
13
|
+
as: "a",
|
|
14
|
+
get href() {
|
|
15
|
+
return props.href;
|
|
16
|
+
},
|
|
17
|
+
"class": "k2b-link-card",
|
|
18
|
+
get ["data-color"]() {
|
|
19
|
+
return props.color;
|
|
20
|
+
},
|
|
21
|
+
interactive: true,
|
|
22
|
+
get children() {
|
|
23
|
+
return [(() => {
|
|
24
|
+
var _el$ = _$getNextElement(_tmpl$),
|
|
25
|
+
_el$2 = _el$.firstChild;
|
|
26
|
+
_$effect(() => _$className(_el$2, `${props.icon} k2b-link-card__glyph`));
|
|
27
|
+
return _el$;
|
|
28
|
+
})(), (() => {
|
|
29
|
+
var _el$3 = _$getNextElement(_tmpl$2),
|
|
30
|
+
_el$4 = _el$3.firstChild,
|
|
31
|
+
_el$5 = _el$4.nextSibling;
|
|
32
|
+
_$insert(_el$4, () => props.title);
|
|
33
|
+
_$insert(_el$5, () => props.description);
|
|
34
|
+
return _el$3;
|
|
35
|
+
})(), _$getNextElement(_tmpl$3)];
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export default LinkCard;
|
|
40
|
+
//# sourceMappingURL=LinkCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Paper","LinkCard","props","_$createComponent","as","href","data-color","color","interactive","children","_el$","_$getNextElement","_tmpl$","_el$2","firstChild","_$effect","_$className","icon","_el$3","_tmpl$2","_el$4","_el$5","nextSibling","_$insert","title","description","_tmpl$3"],"sources":["surfaces/LinkCard.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { Paper } from \"./Paper\";\n\nexport type LinkCardColor = \"blue\" | \"emerald\" | \"violet\" | \"orange\" | \"red\" | \"amber\" | \"zinc\" | \"cyan\" | \"rose\";\n\nexport type LinkCardProps = {\n href: string;\n title: string;\n description: string;\n icon: string;\n color: LinkCardColor;\n};\n\nexport function LinkCard(props: LinkCardProps): JSX.Element {\n return (\n <Paper as=\"a\" href={props.href} class=\"k2b-link-card\" data-color={props.color} interactive>\n <div class=\"k2b-link-card__icon\">\n <i class={`${props.icon} k2b-link-card__glyph`} aria-hidden=\"true\" />\n </div>\n <div class=\"k2b-link-card__copy\">\n <span class=\"k2b-link-card__title\">{props.title}</span>\n <p class=\"k2b-link-card__description\">{props.description}</p>\n </div>\n <i class=\"ti ti-chevron-right k2b-link-card__chevron\" aria-hidden=\"true\" />\n </Paper>\n );\n}\n\nexport default LinkCard;\n"],"mappings":";;;;;;;;;AACA,SAASA,KAAK,QAAQ,SAAS;AAY/B,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAe;EAC1D,OAAAC,iBAAA,CACGH,KAAK;IAACI,EAAE;IAAA,IAAKC,IAAIA,CAAA;MAAA,OAAEH,KAAK,CAACG,IAAI;IAAA;IAAA;IAAA,kBAAAC,CAAA;MAAA,OAAoCJ,KAAK,CAACK,KAAK;IAAA;IAAEC,WAAW;IAAA,IAAAC,SAAA;MAAA;QAAA,IAAAC,IAAA,GAAAC,gBAAA,CAAAC,MAAA;UAAAC,KAAA,GAAAH,IAAA,CAAAI,UAAA;QAAAC,QAAA,OAAAC,WAAA,CAAAH,KAAA,EAE5E,GAAGX,KAAK,CAACe,IAAI,uBAAuB;QAAA,OAAAP,IAAA;MAAA;QAAA,IAAAQ,KAAA,GAAAP,gBAAA,CAAAQ,OAAA;UAAAC,KAAA,GAAAF,KAAA,CAAAJ,UAAA;UAAAO,KAAA,GAAAD,KAAA,CAAAE,WAAA;QAAAC,QAAA,CAAAH,KAAA,QAGVlB,KAAK,CAACsB,KAAK;QAAAD,QAAA,CAAAF,KAAA,QACRnB,KAAK,CAACuB,WAAW;QAAA,OAAAP,KAAA;MAAA,MAAAP,gBAAA,CAAAe,OAAA;IAAA;EAAA;AAKhE;AAEA,eAAezB,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
3
|
+
import { className as _$className } from "solid-js/web";
|
|
4
|
+
import { effect as _$effect } from "solid-js/web";
|
|
5
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
6
|
+
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
7
|
+
import { insert as _$insert } from "solid-js/web";
|
|
8
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
9
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<div class=k2b-not-found><!$><!/><div class=k2b-not-found__copy><h1></h1><!$><!/></div><!$><!/>`),
|
|
10
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
11
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-not-found__code>`),
|
|
12
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<p>`),
|
|
13
|
+
_tmpl$5 = /*#__PURE__*/_$template(`<a class=k2b-button data-size=sm data-variant=primary><i aria-hidden=true></i><span>`);
|
|
14
|
+
import { Show } from "solid-js";
|
|
15
|
+
export function NotFoundState(props) {
|
|
16
|
+
return (() => {
|
|
17
|
+
var _el$ = _$getNextElement(_tmpl$),
|
|
18
|
+
_el$6 = _el$.firstChild,
|
|
19
|
+
[_el$7, _co$2] = _$getNextMarker(_el$6.nextSibling),
|
|
20
|
+
_el$2 = _el$7.nextSibling,
|
|
21
|
+
_el$3 = _el$2.firstChild,
|
|
22
|
+
_el$4 = _el$3.nextSibling,
|
|
23
|
+
[_el$5, _co$] = _$getNextMarker(_el$4.nextSibling),
|
|
24
|
+
_el$8 = _el$2.nextSibling,
|
|
25
|
+
[_el$9, _co$3] = _$getNextMarker(_el$8.nextSibling);
|
|
26
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
27
|
+
get when() {
|
|
28
|
+
return props.code;
|
|
29
|
+
},
|
|
30
|
+
get fallback() {
|
|
31
|
+
return _$createComponent(Show, {
|
|
32
|
+
get when() {
|
|
33
|
+
return props.icon;
|
|
34
|
+
},
|
|
35
|
+
children: icon => (() => {
|
|
36
|
+
var _el$0 = _$getNextElement(_tmpl$2);
|
|
37
|
+
_$effect(() => _$className(_el$0, `${icon()} k2b-not-found__icon`));
|
|
38
|
+
return _el$0;
|
|
39
|
+
})()
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
children: code => (() => {
|
|
43
|
+
var _el$1 = _$getNextElement(_tmpl$3);
|
|
44
|
+
_$insert(_el$1, code);
|
|
45
|
+
return _el$1;
|
|
46
|
+
})()
|
|
47
|
+
}), _el$7, _co$2);
|
|
48
|
+
_$insert(_el$3, () => props.title);
|
|
49
|
+
_$insert(_el$2, _$createComponent(Show, {
|
|
50
|
+
get when() {
|
|
51
|
+
return props.description;
|
|
52
|
+
},
|
|
53
|
+
children: description => (() => {
|
|
54
|
+
var _el$10 = _$getNextElement(_tmpl$4);
|
|
55
|
+
_$insert(_el$10, description);
|
|
56
|
+
return _el$10;
|
|
57
|
+
})()
|
|
58
|
+
}), _el$5, _co$);
|
|
59
|
+
_$insert(_el$, _$createComponent(Show, {
|
|
60
|
+
get when() {
|
|
61
|
+
return props.action;
|
|
62
|
+
},
|
|
63
|
+
children: action => (() => {
|
|
64
|
+
var _el$11 = _$getNextElement(_tmpl$5),
|
|
65
|
+
_el$12 = _el$11.firstChild,
|
|
66
|
+
_el$13 = _el$12.nextSibling;
|
|
67
|
+
_$insert(_el$13, () => action().label);
|
|
68
|
+
_$effect(_p$ => {
|
|
69
|
+
var _v$ = action().href,
|
|
70
|
+
_v$2 = action().icon ?? "ti ti-home";
|
|
71
|
+
_v$ !== _p$.e && _$setAttribute(_el$11, "href", _p$.e = _v$);
|
|
72
|
+
_v$2 !== _p$.t && _$className(_el$12, _p$.t = _v$2);
|
|
73
|
+
return _p$;
|
|
74
|
+
}, {
|
|
75
|
+
e: undefined,
|
|
76
|
+
t: undefined
|
|
77
|
+
});
|
|
78
|
+
return _el$11;
|
|
79
|
+
})()
|
|
80
|
+
}), _el$9, _co$3);
|
|
81
|
+
return _el$;
|
|
82
|
+
})();
|
|
83
|
+
}
|
|
84
|
+
export default NotFoundState;
|
|
85
|
+
//# sourceMappingURL=NotFoundState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Show","NotFoundState","props","_el$","_$getNextElement","_tmpl$","_el$6","firstChild","_el$7","_co$2","_$getNextMarker","nextSibling","_el$2","_el$3","_el$4","_el$5","_co$","_el$8","_el$9","_co$3","_$insert","_$createComponent","when","code","fallback","icon","children","_el$0","_tmpl$2","_$effect","_$className","_el$1","_tmpl$3","title","description","_el$10","_tmpl$4","action","_el$11","_tmpl$5","_el$12","_el$13","label","_p$","_v$","href","_v$2","e","_$setAttribute","t","undefined"],"sources":["surfaces/NotFoundState.tsx"],"sourcesContent":["import { type JSX, Show } from \"solid-js\";\n\nexport type NotFoundStateAction = {\n label: string;\n href: string;\n icon?: string;\n};\n\nexport type NotFoundStateProps = {\n code?: string;\n title: string;\n description?: string;\n icon?: string;\n action?: NotFoundStateAction;\n};\n\nexport function NotFoundState(props: NotFoundStateProps): JSX.Element {\n return (\n <div class=\"k2b-not-found\">\n <Show\n when={props.code}\n fallback={<Show when={props.icon}>{(icon) => <i class={`${icon()} k2b-not-found__icon`} aria-hidden=\"true\" />}</Show>}\n >\n {(code) => <div class=\"k2b-not-found__code\">{code()}</div>}\n </Show>\n <div class=\"k2b-not-found__copy\">\n <h1>{props.title}</h1>\n <Show when={props.description}>{(description) => <p>{description()}</p>}</Show>\n </div>\n <Show when={props.action}>\n {(action) => (\n <a href={action().href} class=\"k2b-button\" data-size=\"sm\" data-variant=\"primary\">\n <i class={action().icon ?? \"ti ti-home\"} aria-hidden=\"true\" />\n <span>{action().label}</span>\n </a>\n )}\n </Show>\n </div>\n );\n}\n\nexport default NotFoundState;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { template as _$template } from "solid-js/web";
|
|
2
|
+
import { setAttribute as _$setAttribute } from "solid-js/web";
|
|
3
|
+
import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
|
|
4
|
+
import { getNextMarker as _$getNextMarker } from "solid-js/web";
|
|
5
|
+
import { insert as _$insert } from "solid-js/web";
|
|
6
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
7
|
+
import { className as _$className } from "solid-js/web";
|
|
8
|
+
import { effect as _$effect } from "solid-js/web";
|
|
9
|
+
import { getNextElement as _$getNextElement } from "solid-js/web";
|
|
10
|
+
import { spread as _$spread } from "solid-js/web";
|
|
11
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
12
|
+
var _tmpl$ = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
|
|
13
|
+
_tmpl$2 = /*#__PURE__*/_$template(`<article><div><!$><!/><div><!$><!/><!$><!/><!$><!/>`),
|
|
14
|
+
_tmpl$3 = /*#__PURE__*/_$template(`<p>`),
|
|
15
|
+
_tmpl$4 = /*#__PURE__*/_$template(`<div>`);
|
|
16
|
+
import { For, Show, splitProps } from "solid-js";
|
|
17
|
+
export const NOTICE_CARD_CLASSES = {
|
|
18
|
+
root: "k2b-notice-card",
|
|
19
|
+
inner: "k2b-notice-card__inner",
|
|
20
|
+
icon: "k2b-notice-card__icon",
|
|
21
|
+
content: "k2b-notice-card__content",
|
|
22
|
+
title: "k2b-notice-card__title",
|
|
23
|
+
description: "k2b-notice-card__description",
|
|
24
|
+
body: "k2b-notice-card__body"
|
|
25
|
+
};
|
|
26
|
+
export const NOTICE_CARD_ICONS = {
|
|
27
|
+
neutral: "ti ti-note",
|
|
28
|
+
info: "ti ti-info-circle",
|
|
29
|
+
success: "ti ti-circle-check",
|
|
30
|
+
warning: "ti ti-alert-triangle",
|
|
31
|
+
danger: "ti ti-alert-circle"
|
|
32
|
+
};
|
|
33
|
+
function NoticeCardComponent(props) {
|
|
34
|
+
const [local, articleProps] = splitProps(props, ["tone", "title", "detail", "children", "icon", "class", "bodyClass"]);
|
|
35
|
+
const tone = () => local.tone ?? "warning";
|
|
36
|
+
return (() => {
|
|
37
|
+
var _el$ = _$getNextElement(_tmpl$2),
|
|
38
|
+
_el$2 = _el$.firstChild,
|
|
39
|
+
_el$1 = _el$2.firstChild,
|
|
40
|
+
[_el$10, _co$4] = _$getNextMarker(_el$1.nextSibling),
|
|
41
|
+
_el$4 = _el$10.nextSibling,
|
|
42
|
+
_el$5 = _el$4.firstChild,
|
|
43
|
+
[_el$6, _co$] = _$getNextMarker(_el$5.nextSibling),
|
|
44
|
+
_el$7 = _el$6.nextSibling,
|
|
45
|
+
[_el$8, _co$2] = _$getNextMarker(_el$7.nextSibling),
|
|
46
|
+
_el$9 = _el$8.nextSibling,
|
|
47
|
+
[_el$0, _co$3] = _$getNextMarker(_el$9.nextSibling);
|
|
48
|
+
_$spread(_el$, _$mergeProps(articleProps, {
|
|
49
|
+
get ["class"]() {
|
|
50
|
+
return `${NOTICE_CARD_CLASSES.root} ${local.class ?? ""}`;
|
|
51
|
+
},
|
|
52
|
+
get ["data-tone"]() {
|
|
53
|
+
return tone();
|
|
54
|
+
}
|
|
55
|
+
}), false, true);
|
|
56
|
+
_$insert(_el$2, _$createComponent(Show, {
|
|
57
|
+
get when() {
|
|
58
|
+
return local.icon !== false;
|
|
59
|
+
},
|
|
60
|
+
get children() {
|
|
61
|
+
var _el$3 = _$getNextElement(_tmpl$);
|
|
62
|
+
_$effect(() => _$className(_el$3, `${typeof local.icon === "string" ? local.icon : NOTICE_CARD_ICONS[tone()]} ${NOTICE_CARD_CLASSES.icon}`));
|
|
63
|
+
return _el$3;
|
|
64
|
+
}
|
|
65
|
+
}), _el$10, _co$4);
|
|
66
|
+
_$insert(_el$4, _$createComponent(Show, {
|
|
67
|
+
get when() {
|
|
68
|
+
return local.title;
|
|
69
|
+
},
|
|
70
|
+
children: title => (() => {
|
|
71
|
+
var _el$11 = _$getNextElement(_tmpl$3);
|
|
72
|
+
_$insert(_el$11, title);
|
|
73
|
+
_$effect(() => _$className(_el$11, NOTICE_CARD_CLASSES.title));
|
|
74
|
+
return _el$11;
|
|
75
|
+
})()
|
|
76
|
+
}), _el$6, _co$);
|
|
77
|
+
_$insert(_el$4, _$createComponent(Show, {
|
|
78
|
+
get when() {
|
|
79
|
+
return local.detail;
|
|
80
|
+
},
|
|
81
|
+
children: detail => (() => {
|
|
82
|
+
var _el$12 = _$getNextElement(_tmpl$3);
|
|
83
|
+
_$insert(_el$12, detail);
|
|
84
|
+
_$effect(() => _$className(_el$12, NOTICE_CARD_CLASSES.description));
|
|
85
|
+
return _el$12;
|
|
86
|
+
})()
|
|
87
|
+
}), _el$8, _co$2);
|
|
88
|
+
_$insert(_el$4, _$createComponent(Show, {
|
|
89
|
+
get when() {
|
|
90
|
+
return local.children;
|
|
91
|
+
},
|
|
92
|
+
children: body => (() => {
|
|
93
|
+
var _el$13 = _$getNextElement(_tmpl$4);
|
|
94
|
+
_$insert(_el$13, body);
|
|
95
|
+
_$effect(() => _$className(_el$13, `${NOTICE_CARD_CLASSES.body} ${local.bodyClass ?? ""}`));
|
|
96
|
+
return _el$13;
|
|
97
|
+
})()
|
|
98
|
+
}), _el$0, _co$3);
|
|
99
|
+
_$effect(_p$ => {
|
|
100
|
+
var _v$ = NOTICE_CARD_CLASSES.inner,
|
|
101
|
+
_v$2 = NOTICE_CARD_CLASSES.content;
|
|
102
|
+
_v$ !== _p$.e && _$className(_el$2, _p$.e = _v$);
|
|
103
|
+
_v$2 !== _p$.t && _$className(_el$4, _p$.t = _v$2);
|
|
104
|
+
return _p$;
|
|
105
|
+
}, {
|
|
106
|
+
e: undefined,
|
|
107
|
+
t: undefined
|
|
108
|
+
});
|
|
109
|
+
_$runHydrationEvents();
|
|
110
|
+
return _el$;
|
|
111
|
+
})();
|
|
112
|
+
}
|
|
113
|
+
function NoticeGrid(props) {
|
|
114
|
+
const columns = () => props.items.length <= 1 ? "one" : props.items.length === 2 ? "two" : "three";
|
|
115
|
+
return _$createComponent(Show, {
|
|
116
|
+
get when() {
|
|
117
|
+
return props.items.length > 0;
|
|
118
|
+
},
|
|
119
|
+
get children() {
|
|
120
|
+
var _el$14 = _$getNextElement(_tmpl$4);
|
|
121
|
+
_$insert(_el$14, _$createComponent(For, {
|
|
122
|
+
get each() {
|
|
123
|
+
return props.items;
|
|
124
|
+
},
|
|
125
|
+
children: item => props.children(item)
|
|
126
|
+
}));
|
|
127
|
+
_$effect(_p$ => {
|
|
128
|
+
var _v$3 = `k2b-notice-grid ${props.class ?? ""}`,
|
|
129
|
+
_v$4 = columns();
|
|
130
|
+
_v$3 !== _p$.e && _$className(_el$14, _p$.e = _v$3);
|
|
131
|
+
_v$4 !== _p$.t && _$setAttribute(_el$14, "data-columns", _p$.t = _v$4);
|
|
132
|
+
return _p$;
|
|
133
|
+
}, {
|
|
134
|
+
e: undefined,
|
|
135
|
+
t: undefined
|
|
136
|
+
});
|
|
137
|
+
return _el$14;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
export const NoticeCard = Object.assign(NoticeCardComponent, {
|
|
142
|
+
Grid: NoticeGrid
|
|
143
|
+
});
|
|
144
|
+
export default NoticeCard;
|
|
145
|
+
//# sourceMappingURL=NoticeCard.js.map
|