@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,377 @@
|
|
|
1
|
+
import { mergeProps as _$mergeProps } from "solid-js/web";
|
|
2
|
+
import { ssrStyle as _$ssrStyle } from "solid-js/web";
|
|
3
|
+
import { createComponent as _$createComponent } from "solid-js/web";
|
|
4
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
5
|
+
import { escape as _$escape } from "solid-js/web";
|
|
6
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
7
|
+
var _tmpl$ = "<span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\"><span></span><span></span><span></span></span>",
|
|
8
|
+
_tmpl$2 = ["<div class=\"k2b-chat-message__attachments\" role=\"list\"", ">", "</div>"],
|
|
9
|
+
_tmpl$3 = ["<div class=\"k2b-chat-message__bubble\"><div class=\"k2b-chat-message__content\">", "</div></div>"],
|
|
10
|
+
_tmpl$4 = ["<span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\"", ">", "</span>"],
|
|
11
|
+
_tmpl$5 = ["<span class=\"k2b-chat-message__actions\" role=\"group\"", ">", "</span>"],
|
|
12
|
+
_tmpl$6 = "<i class=\"ti ti-dots\" aria-hidden=\"true\"></i>",
|
|
13
|
+
_tmpl$7 = ["<footer class=\"k2b-chat-message__meta\">", "", "", "", "</footer>"],
|
|
14
|
+
_tmpl$8 = ["<article class=\"", "\"", "><span class=\"k2b-sr-only\">", ": </span>", "", "", "</article>"],
|
|
15
|
+
_tmpl$9 = ["<img", ">"],
|
|
16
|
+
_tmpl$0 = ["<span>", "</span>"],
|
|
17
|
+
_tmpl$1 = ["<i", " aria-hidden=\"true\"></i>"],
|
|
18
|
+
_tmpl$10 = ["<div class=\"k2b-chat-message__attachment\" role=\"listitem\"", ">", "</div>"],
|
|
19
|
+
_tmpl$11 = ["<a class=\"k2b-chat-message__attachment\" role=\"listitem\"", " target=\"_blank\" rel=\"noopener noreferrer\"", ">", "</a>"],
|
|
20
|
+
_tmpl$12 = ["<span class=\"k2b-chat-message__status\"", "><i", " aria-hidden=\"true\"></i>", "</span>"],
|
|
21
|
+
_tmpl$13 = ["<time", ">", "</time>"],
|
|
22
|
+
_tmpl$14 = ["<button type=\"button\"", "", "><i", " aria-hidden=\"true\"></i></button>"],
|
|
23
|
+
_tmpl$15 = ["<span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">", "</span>"],
|
|
24
|
+
_tmpl$16 = ["<span class=\"k2b-chat-activity__copy\"><strong>", "</strong>", "</span>"],
|
|
25
|
+
_tmpl$17 = ["<span class=\"k2b-chat-activity__trailing\">", "</span>"],
|
|
26
|
+
_tmpl$18 = "<i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\"></i>",
|
|
27
|
+
_tmpl$19 = ["<i", "></i>"],
|
|
28
|
+
_tmpl$20 = ["<small>", "</small>"],
|
|
29
|
+
_tmpl$21 = ["<details class=\"", "\"", " style=\"", "\"", "><summary class=\"k2b-chat-activity__row\">", "</summary><div class=\"k2b-chat-activity__body\">", "</div></details>"],
|
|
30
|
+
_tmpl$22 = ["<div class=\"", "\"", " style=\"", "\"", "><div class=\"k2b-chat-activity__row\">", "</div></div>"],
|
|
31
|
+
_tmpl$23 = "<i class=\"ti ti-brain\" aria-hidden=\"true\"></i>",
|
|
32
|
+
_tmpl$24 = ["<div><dt>", "</dt><dd>", "</dd></div>"],
|
|
33
|
+
_tmpl$25 = ["<div class=\"k2b-chat-context__tooltip\"><strong>", "</strong>", "<dl>", "<div><dt>", "</dt><dd>", "</dd></div><div><dt>", "</dt><dd>", "</dd></div>", "<div><dt>", "</dt><dd>", "</dd></div>", "</dl></div>"];
|
|
34
|
+
import { createSignal, For, onCleanup, Show } from "solid-js";
|
|
35
|
+
import { Dropdown } from "../actions/Dropdown";
|
|
36
|
+
import { Tooltip } from "../feedback/Tooltip";
|
|
37
|
+
import { useUiMessages } from "../intl/messages";
|
|
38
|
+
import { ProgressBar } from "../surfaces/ProgressBar";
|
|
39
|
+
import { executeChatAction } from "./chat-behavior";
|
|
40
|
+
const roleLabel = (role, messages) => {
|
|
41
|
+
if (role === "assistant") return messages.assistant;
|
|
42
|
+
if (role === "user") return messages.user;
|
|
43
|
+
if (role === "tool") return messages.tool;
|
|
44
|
+
return messages.system;
|
|
45
|
+
};
|
|
46
|
+
const statusLabel = (status, messages) => {
|
|
47
|
+
if (status === "pending") return messages.waiting;
|
|
48
|
+
if (status === "streaming") return messages.generating;
|
|
49
|
+
if (status === "error") return messages.failed;
|
|
50
|
+
return null;
|
|
51
|
+
};
|
|
52
|
+
const statusIcon = status => {
|
|
53
|
+
if (status === "pending") return "ti ti-clock";
|
|
54
|
+
return "ti ti-alert-circle";
|
|
55
|
+
};
|
|
56
|
+
const ChatProgressDots = () => _$ssr(_tmpl$);
|
|
57
|
+
const attachmentIcon = attachment => attachment.icon ?? (attachment.kind === "image" ? "ti ti-photo" : attachment.kind === "resource" ? "ti ti-link" : "ti ti-file");
|
|
58
|
+
const finiteNonNegative = value => typeof value === "number" && Number.isFinite(value) ? Math.max(0, value) : 0;
|
|
59
|
+
const finiteUsageValue = value => typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
|
|
60
|
+
const normalizedUsage = usage => {
|
|
61
|
+
const input = finiteUsageValue(usage?.input);
|
|
62
|
+
const output = finiteUsageValue(usage?.output);
|
|
63
|
+
const explicitTotal = finiteUsageValue(usage?.total);
|
|
64
|
+
const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);
|
|
65
|
+
return {
|
|
66
|
+
input,
|
|
67
|
+
output,
|
|
68
|
+
total,
|
|
69
|
+
reported: total !== null
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
const formatStableInteger = value => {
|
|
73
|
+
const digits = String(Math.round(finiteNonNegative(value)));
|
|
74
|
+
return digits.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
75
|
+
};
|
|
76
|
+
export const formatChatTokens = tokens => {
|
|
77
|
+
const value = finiteNonNegative(tokens);
|
|
78
|
+
if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;
|
|
79
|
+
if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;
|
|
80
|
+
return String(Math.round(value));
|
|
81
|
+
};
|
|
82
|
+
const dateTime = value => {
|
|
83
|
+
if (!value) return null;
|
|
84
|
+
const date = value instanceof Date ? value : new Date(value);
|
|
85
|
+
return Number.isFinite(date.getTime()) ? date.toISOString() : null;
|
|
86
|
+
};
|
|
87
|
+
export function ChatMessage(props) {
|
|
88
|
+
const messages = useUiMessages();
|
|
89
|
+
const [busyActionId, setBusyActionId] = createSignal(null);
|
|
90
|
+
const [completedActionId, setCompletedActionId] = createSignal(null);
|
|
91
|
+
let completedTimer;
|
|
92
|
+
const status = () => statusLabel(props.status, messages());
|
|
93
|
+
const timestamp = () => dateTime(props.createdAt);
|
|
94
|
+
// Locale and timezone are application policy. Requiring an explicit visible
|
|
95
|
+
// label keeps SSR and hydration byte-stable while `createdAt` still supplies
|
|
96
|
+
// the semantic machine-readable timestamp.
|
|
97
|
+
const time = () => props.timeLabel ?? null;
|
|
98
|
+
const actions = () => props.actions ?? [];
|
|
99
|
+
const actionDisplay = () => props.actionDisplay === "auto" || !props.actionDisplay ? props.role === "user" ? "menu" : "inline" : props.actionDisplay;
|
|
100
|
+
const hasMeta = () => props.status === "streaming" || status() !== null || Boolean(time()) || actions().length > 0;
|
|
101
|
+
const runAction = async action => {
|
|
102
|
+
if (action.disabled || busyActionId()) return;
|
|
103
|
+
setBusyActionId(action.id);
|
|
104
|
+
try {
|
|
105
|
+
await executeChatAction(action);
|
|
106
|
+
setCompletedActionId(action.id);
|
|
107
|
+
if (completedTimer) clearTimeout(completedTimer);
|
|
108
|
+
completedTimer = setTimeout(() => setCompletedActionId(null), 1400);
|
|
109
|
+
} catch (error) {
|
|
110
|
+
props.onActionError?.(error);
|
|
111
|
+
} finally {
|
|
112
|
+
setBusyActionId(null);
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
const actionIcon = action => busyActionId() === action.id ? "ti ti-loader-2 k2b-spin" : completedActionId() === action.id ? "ti ti-check" : action.icon ?? "ti ti-dots";
|
|
116
|
+
onCleanup(() => {
|
|
117
|
+
if (completedTimer) clearTimeout(completedTimer);
|
|
118
|
+
});
|
|
119
|
+
const menuItems = () => actions().map(action => ({
|
|
120
|
+
icon: actionIcon(action),
|
|
121
|
+
label: action.label,
|
|
122
|
+
variant: action.variant,
|
|
123
|
+
disabled: action.disabled || Boolean(busyActionId()),
|
|
124
|
+
action: () => void runAction(action)
|
|
125
|
+
}));
|
|
126
|
+
return _$ssr(_tmpl$8, `k2b-chat-message ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-role", _$escape(props.role, true), false) + _$ssrAttribute("data-status", _$escape(props.status ?? "complete", true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", props.status === "pending" || props.status === "streaming" ? "true" : _$escape(undefined, true), false), _$escape(props.label ?? roleLabel(props.role, messages())), _$escape(_$createComponent(Show, {
|
|
127
|
+
get when() {
|
|
128
|
+
return (props.attachments?.length ?? 0) > 0;
|
|
129
|
+
},
|
|
130
|
+
get children() {
|
|
131
|
+
return _$ssr(_tmpl$2, _$ssrAttribute("aria-label", _$escape(messages().attachments, true), false), _$escape(_$createComponent(For, {
|
|
132
|
+
get each() {
|
|
133
|
+
return props.attachments;
|
|
134
|
+
},
|
|
135
|
+
children: attachment => {
|
|
136
|
+
const content = () => [_$createComponent(Show, {
|
|
137
|
+
get when() {
|
|
138
|
+
return attachment.kind === "image" && attachment.previewUrl;
|
|
139
|
+
},
|
|
140
|
+
get fallback() {
|
|
141
|
+
return _$ssr(_tmpl$1, _$ssrAttribute("class", _$escape(attachmentIcon(attachment), true), false));
|
|
142
|
+
},
|
|
143
|
+
get children() {
|
|
144
|
+
return _$ssr(_tmpl$9, _$ssrAttribute("src", _$escape(attachment.previewUrl, true), false) + _$ssrAttribute("alt", _$escape(attachment.alt ?? attachment.name, true), false));
|
|
145
|
+
}
|
|
146
|
+
}), _$createComponent(Show, {
|
|
147
|
+
get when() {
|
|
148
|
+
return attachment.kind !== "image";
|
|
149
|
+
},
|
|
150
|
+
get children() {
|
|
151
|
+
return _$ssr(_tmpl$0, _$escape(attachment.name));
|
|
152
|
+
}
|
|
153
|
+
})];
|
|
154
|
+
return _$createComponent(Show, {
|
|
155
|
+
get when() {
|
|
156
|
+
return attachment.href;
|
|
157
|
+
},
|
|
158
|
+
get fallback() {
|
|
159
|
+
return _$ssr(_tmpl$10, _$ssrAttribute("title", _$escape(attachment.name, true), false), _$escape(content()));
|
|
160
|
+
},
|
|
161
|
+
children: href => _$ssr(_tmpl$11, _$ssrAttribute("title", _$escape(attachment.name, true), false) + _$ssrAttribute("href", _$escape(href(), true), false), _$ssrAttribute("aria-label", _$escape(messages().openInNewTab({
|
|
162
|
+
name: attachment.name
|
|
163
|
+
}), true), false), _$escape(content()))
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
})));
|
|
167
|
+
}
|
|
168
|
+
})), _$escape(_$createComponent(Show, {
|
|
169
|
+
get when() {
|
|
170
|
+
return props.children !== undefined && props.children !== null && props.children !== "";
|
|
171
|
+
},
|
|
172
|
+
get children() {
|
|
173
|
+
return _$ssr(_tmpl$3, _$escape(props.children));
|
|
174
|
+
}
|
|
175
|
+
})), _$escape(_$createComponent(Show, {
|
|
176
|
+
get when() {
|
|
177
|
+
return hasMeta();
|
|
178
|
+
},
|
|
179
|
+
get children() {
|
|
180
|
+
return _$ssr(_tmpl$7, _$escape(_$createComponent(Show, {
|
|
181
|
+
get when() {
|
|
182
|
+
return props.status === "streaming";
|
|
183
|
+
},
|
|
184
|
+
get fallback() {
|
|
185
|
+
return _$createComponent(Show, {
|
|
186
|
+
get when() {
|
|
187
|
+
return status();
|
|
188
|
+
},
|
|
189
|
+
children: label => _$ssr(_tmpl$12, _$ssrAttribute("role", props.status === "error" ? "alert" : "status", false), _$ssrAttribute("class", _$escape(statusIcon(props.status), true), false), _$escape(label()))
|
|
190
|
+
});
|
|
191
|
+
},
|
|
192
|
+
get children() {
|
|
193
|
+
return _$ssr(_tmpl$4, _$ssrAttribute("aria-label", _$escape(messages().generating, true), false), _$escape(_$createComponent(ChatProgressDots, {})));
|
|
194
|
+
}
|
|
195
|
+
})), _$escape(_$createComponent(Show, {
|
|
196
|
+
get when() {
|
|
197
|
+
return time();
|
|
198
|
+
},
|
|
199
|
+
children: label => _$ssr(_tmpl$13, _$ssrAttribute("datetime", _$escape(timestamp() ?? undefined, true), false), _$escape(label()))
|
|
200
|
+
})), _$escape(_$createComponent(Show, {
|
|
201
|
+
get when() {
|
|
202
|
+
return actions().length > 0 && actionDisplay() === "inline";
|
|
203
|
+
},
|
|
204
|
+
get children() {
|
|
205
|
+
return _$ssr(_tmpl$5, _$ssrAttribute("aria-label", _$escape(messages().messageActions, true), false), _$escape(_$createComponent(For, {
|
|
206
|
+
get each() {
|
|
207
|
+
return actions();
|
|
208
|
+
},
|
|
209
|
+
children: action => _$ssr(_tmpl$14, _$ssrAttribute("aria-label", _$escape(action.label, true), false) + _$ssrAttribute("aria-pressed", _$escape(action.pressed, true), false) + _$ssrAttribute("title", _$escape(action.label, true), false) + _$ssrAttribute("data-danger", action.variant === "danger" ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", action.disabled || Boolean(busyActionId()), true), _$ssrAttribute("class", _$escape(actionIcon(action), true), false))
|
|
210
|
+
})));
|
|
211
|
+
}
|
|
212
|
+
})), _$escape(_$createComponent(Show, {
|
|
213
|
+
get when() {
|
|
214
|
+
return actions().length > 0 && actionDisplay() === "menu";
|
|
215
|
+
},
|
|
216
|
+
get children() {
|
|
217
|
+
return _$createComponent(Dropdown.Root, {
|
|
218
|
+
position: "bottom-left",
|
|
219
|
+
width: "12rem",
|
|
220
|
+
get label() {
|
|
221
|
+
return messages().messageActions;
|
|
222
|
+
},
|
|
223
|
+
get items() {
|
|
224
|
+
return menuItems();
|
|
225
|
+
},
|
|
226
|
+
get children() {
|
|
227
|
+
return _$createComponent(Dropdown.Trigger, {
|
|
228
|
+
appearance: "plain",
|
|
229
|
+
"class": "k2b-chat-message__menu",
|
|
230
|
+
get label() {
|
|
231
|
+
return messages().messageActions;
|
|
232
|
+
},
|
|
233
|
+
get title() {
|
|
234
|
+
return messages().messageActions;
|
|
235
|
+
},
|
|
236
|
+
get children() {
|
|
237
|
+
return _$ssr(_tmpl$6);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
})));
|
|
244
|
+
}
|
|
245
|
+
})));
|
|
246
|
+
}
|
|
247
|
+
const ActivityContent = props => [_$ssr(_tmpl$15, _$escape(_$createComponent(Show, {
|
|
248
|
+
get when() {
|
|
249
|
+
return props.leading;
|
|
250
|
+
},
|
|
251
|
+
get fallback() {
|
|
252
|
+
return _$ssr(_tmpl$19, _$ssrAttribute("class", _$escape(props.icon ?? "ti ti-sparkles", true), false));
|
|
253
|
+
},
|
|
254
|
+
get children() {
|
|
255
|
+
return props.leading;
|
|
256
|
+
}
|
|
257
|
+
}))), _$ssr(_tmpl$16, _$escape(props.label), _$escape(_$createComponent(Show, {
|
|
258
|
+
get when() {
|
|
259
|
+
return props.description;
|
|
260
|
+
},
|
|
261
|
+
children: description => _$ssr(_tmpl$20, _$escape(description()))
|
|
262
|
+
}))), _$createComponent(Show, {
|
|
263
|
+
get when() {
|
|
264
|
+
return props.trailing;
|
|
265
|
+
},
|
|
266
|
+
get children() {
|
|
267
|
+
return _$ssr(_tmpl$17, _$escape(props.trailing));
|
|
268
|
+
}
|
|
269
|
+
}), _$createComponent(Show, {
|
|
270
|
+
get when() {
|
|
271
|
+
return props.disclosure;
|
|
272
|
+
},
|
|
273
|
+
get children() {
|
|
274
|
+
return _$ssr(_tmpl$18);
|
|
275
|
+
}
|
|
276
|
+
})];
|
|
277
|
+
export function ChatActivity(props) {
|
|
278
|
+
const tone = () => props.tone ?? "neutral";
|
|
279
|
+
const style = () => props.accent ? {
|
|
280
|
+
"--k2b-chat-activity-accent": props.accent
|
|
281
|
+
} : undefined;
|
|
282
|
+
return _$createComponent(Show, {
|
|
283
|
+
get when() {
|
|
284
|
+
return props.children;
|
|
285
|
+
},
|
|
286
|
+
get fallback() {
|
|
287
|
+
return _$ssr(_tmpl$22, `k2b-chat-activity ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-tone", _$escape(tone(), true), false) + _$ssrAttribute("data-accent", props.accent ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-busy", props.busy ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-busy", props.busy ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(ActivityContent, props)));
|
|
288
|
+
},
|
|
289
|
+
get children() {
|
|
290
|
+
return _$ssr(_tmpl$21, `k2b-chat-activity ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-tone", _$escape(tone(), true), false) + _$ssrAttribute("data-accent", props.accent ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-busy", props.busy ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-body-inset", props.bodyInset === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false), _$ssrStyle(style()), _$ssrAttribute("open", props.open ?? props.defaultOpen, true) + _$ssrAttribute("aria-busy", props.busy ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(ActivityContent, _$mergeProps(props, {
|
|
291
|
+
disclosure: true
|
|
292
|
+
}))), _$escape(props.children));
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
export function ChatContextUsage(props) {
|
|
297
|
+
const messages = useUiMessages();
|
|
298
|
+
const formatNumber = value => (props.formatNumber ?? formatStableInteger)(value);
|
|
299
|
+
const formattedUsageValue = value => value === null ? messages().unknown : formatNumber(value);
|
|
300
|
+
const usage = () => normalizedUsage(props.usage);
|
|
301
|
+
const loopUsage = () => normalizedUsage(props.loopUsage);
|
|
302
|
+
const total = () => usage().total ?? 0;
|
|
303
|
+
const windowSize = () => finiteNonNegative(props.contextWindow);
|
|
304
|
+
const reported = () => usage().reported;
|
|
305
|
+
const percent = () => reported() && windowSize() > 0 ? Math.min(100, Math.round(total() / windowSize() * 100)) : null;
|
|
306
|
+
const remaining = () => reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null;
|
|
307
|
+
const accessibleLabel = () => {
|
|
308
|
+
if (!reported()) {
|
|
309
|
+
return windowSize() > 0 ? messages().contextUsageUnavailableWithWindow({
|
|
310
|
+
window: formatNumber(windowSize())
|
|
311
|
+
}) : messages().contextUsageUnavailable;
|
|
312
|
+
}
|
|
313
|
+
return percent() === null ? messages().tokensUsed({
|
|
314
|
+
total: formatNumber(total())
|
|
315
|
+
}) : messages().tokensUsedPercent({
|
|
316
|
+
total: formatNumber(total()),
|
|
317
|
+
percent: percent()
|
|
318
|
+
});
|
|
319
|
+
};
|
|
320
|
+
return _$createComponent(Tooltip.Trigger, {
|
|
321
|
+
placement: "top",
|
|
322
|
+
get content() {
|
|
323
|
+
return _$ssr(_tmpl$25, _$escape(messages().lastRequestContext), _$escape(_$createComponent(Show, {
|
|
324
|
+
get when() {
|
|
325
|
+
return percent() !== null;
|
|
326
|
+
},
|
|
327
|
+
get children() {
|
|
328
|
+
return _$createComponent(ProgressBar, {
|
|
329
|
+
get value() {
|
|
330
|
+
return percent() ?? 0;
|
|
331
|
+
},
|
|
332
|
+
size: "xs",
|
|
333
|
+
get tone() {
|
|
334
|
+
return (percent() ?? 0) >= 85 ? "danger" : "info";
|
|
335
|
+
},
|
|
336
|
+
get label() {
|
|
337
|
+
return messages().contextWindowUsed;
|
|
338
|
+
}
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
})), _$escape(_$createComponent(Show, {
|
|
342
|
+
get when() {
|
|
343
|
+
return props.modelLabel;
|
|
344
|
+
},
|
|
345
|
+
children: model => _$ssr(_tmpl$24, _$escape(messages().model), _$escape(model()))
|
|
346
|
+
})), _$escape(messages().input), _$escape(formattedUsageValue(usage().input)), _$escape(messages().output), _$escape(formattedUsageValue(usage().output)), _$escape(_$createComponent(Show, {
|
|
347
|
+
get when() {
|
|
348
|
+
return loopUsage().reported;
|
|
349
|
+
},
|
|
350
|
+
get children() {
|
|
351
|
+
return _$ssr(_tmpl$24, _$escape(messages().loopTotal), _$escape(formattedUsageValue(loopUsage().total)));
|
|
352
|
+
}
|
|
353
|
+
})), _$escape(messages().window), windowSize() > 0 ? _$escape(formatNumber(windowSize())) : _$escape(messages().notConfigured), _$escape(_$createComponent(Show, {
|
|
354
|
+
get when() {
|
|
355
|
+
return remaining() !== null;
|
|
356
|
+
},
|
|
357
|
+
get children() {
|
|
358
|
+
return _$ssr(_tmpl$24, _$escape(messages().remaining), remaining() === null ? _$escape(messages().unknown) : _$escape(formatNumber(remaining())));
|
|
359
|
+
}
|
|
360
|
+
})));
|
|
361
|
+
},
|
|
362
|
+
type: "button",
|
|
363
|
+
get ["class"]() {
|
|
364
|
+
return `k2b-chat-context ${props.class ?? ""}`;
|
|
365
|
+
},
|
|
366
|
+
get ["data-warning"]() {
|
|
367
|
+
return reported() && (percent() ?? 0) >= 85 ? "true" : undefined;
|
|
368
|
+
},
|
|
369
|
+
get ["aria-label"]() {
|
|
370
|
+
return accessibleLabel();
|
|
371
|
+
},
|
|
372
|
+
get children() {
|
|
373
|
+
return [_$ssr(_tmpl$23), _$ssr(_tmpl$0, percent() === null ? "–" : `${_$escape(percent())}%`)];
|
|
374
|
+
}
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
//# sourceMappingURL=ChatPrimitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createSignal","For","onCleanup","Show","Dropdown","Tooltip","useUiMessages","ProgressBar","executeChatAction","roleLabel","role","messages","assistant","user","tool","system","statusLabel","status","waiting","generating","failed","statusIcon","ChatProgressDots","_$ssr","_tmpl$","attachmentIcon","attachment","icon","kind","finiteNonNegative","value","Number","isFinite","Math","max","finiteUsageValue","normalizedUsage","usage","input","output","explicitTotal","total","reported","formatStableInteger","digits","String","round","replace","formatChatTokens","tokens","toFixed","dateTime","date","Date","getTime","toISOString","ChatMessage","props","busyActionId","setBusyActionId","completedActionId","setCompletedActionId","completedTimer","timestamp","createdAt","time","timeLabel","actions","actionDisplay","hasMeta","Boolean","length","runAction","action","disabled","id","clearTimeout","setTimeout","error","onActionError","actionIcon","menuItems","map","label","variant","_tmpl$8","_$escape","class","_$ssrAttribute","anchorId","undefined","_$createComponent","when","attachments","children","_tmpl$2","each","content","previewUrl","fallback","_tmpl$1","_tmpl$9","alt","name","_tmpl$0","href","_tmpl$10","_tmpl$11","openInNewTab","_tmpl$3","_tmpl$7","_tmpl$12","_tmpl$4","_tmpl$13","_tmpl$5","messageActions","_tmpl$14","pressed","Root","position","width","items","Trigger","appearance","title","_tmpl$6","ActivityContent","_tmpl$15","leading","_tmpl$19","_tmpl$16","description","_tmpl$20","trailing","_tmpl$17","disclosure","_tmpl$18","ChatActivity","tone","style","accent","_tmpl$22","busy","_$ssrStyle","_tmpl$21","bodyInset","open","defaultOpen","_$mergeProps","ChatContextUsage","formatNumber","formattedUsageValue","unknown","loopUsage","windowSize","contextWindow","percent","min","remaining","accessibleLabel","contextUsageUnavailableWithWindow","window","contextUsageUnavailable","tokensUsed","tokensUsedPercent","placement","_tmpl$25","lastRequestContext","size","contextWindowUsed","modelLabel","model","_tmpl$24","loopTotal","notConfigured","type","data-warning","aria-label","_tmpl$23"],"sources":["chat/ChatPrimitives.tsx"],"sourcesContent":["import { createSignal, For, type JSX, onCleanup, Show } from \"solid-js\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\nimport { Tooltip } from \"../feedback/Tooltip\";\nimport { type UiMessages, useUiMessages } from \"../intl/messages\";\nimport { ProgressBar } from \"../surfaces/ProgressBar\";\nimport { executeChatAction } from \"./chat-behavior\";\nimport type { ChatAction, ChatActivityTone, ChatAttachment, ChatContextUsageData, ChatMessageStatus, ChatRole } from \"./types\";\n\nexport type ChatMessageProps = {\n role: ChatRole;\n children?: JSX.Element;\n label?: string;\n createdAt?: string | Date;\n timeLabel?: string;\n status?: ChatMessageStatus;\n attachments?: readonly ChatAttachment[];\n actions?: readonly ChatAction[];\n actionDisplay?: \"auto\" | \"inline\" | \"menu\";\n anchorId?: string | number;\n onActionError?: (error: unknown) => void;\n class?: string;\n};\n\nexport type ChatActivityProps = {\n label: string;\n description?: string;\n icon?: string;\n /** Optional host-owned leading visual rendered instead of the icon. */\n leading?: JSX.Element;\n /** Optional identity accent for the leading visual. Semantic tones still take precedence. */\n accent?: string;\n tone?: ChatActivityTone;\n /** Marks the activity as running with the shared accent sweep. */\n busy?: boolean;\n trailing?: JSX.Element;\n /** Controlled disclosure state. Omit to keep native details behavior. */\n open?: boolean;\n /** Reports disclosure changes when `open` is controlled by the host. */\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n /** Set to false when the body is a peer list that should align with the activity row. */\n bodyInset?: boolean;\n anchorId?: string | number;\n children?: JSX.Element;\n class?: string;\n};\n\nexport type ChatContextUsageProps = ChatContextUsageData & {\n /** Host-owned number formatting. The default is locale-independent and SSR-stable. */\n formatNumber?: (value: number) => string;\n class?: string;\n};\n\nconst roleLabel = (role: ChatRole, messages: UiMessages): string => {\n if (role === \"assistant\") return messages.assistant;\n if (role === \"user\") return messages.user;\n if (role === \"tool\") return messages.tool;\n return messages.system;\n};\n\nconst statusLabel = (status: ChatMessageStatus | undefined, messages: UiMessages): string | null => {\n if (status === \"pending\") return messages.waiting;\n if (status === \"streaming\") return messages.generating;\n if (status === \"error\") return messages.failed;\n return null;\n};\n\nconst statusIcon = (status: ChatMessageStatus | undefined): string => {\n if (status === \"pending\") return \"ti ti-clock\";\n return \"ti ti-alert-circle\";\n};\n\nconst ChatProgressDots = () => (\n <span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\">\n <span />\n <span />\n <span />\n </span>\n);\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nconst finiteNonNegative = (value: number | undefined): number =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n\nconst finiteUsageValue = (value: number | undefined): number | null =>\n typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : null;\n\nconst normalizedUsage = (usage: ChatContextUsageData[\"usage\"]) => {\n const input = finiteUsageValue(usage?.input);\n const output = finiteUsageValue(usage?.output);\n const explicitTotal = finiteUsageValue(usage?.total);\n const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);\n return { input, output, total, reported: total !== null };\n};\n\nconst formatStableInteger = (value: number): string => {\n const digits = String(Math.round(finiteNonNegative(value)));\n return digits.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n};\n\nexport const formatChatTokens = (tokens: number): string => {\n const value = finiteNonNegative(tokens);\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;\n return String(Math.round(value));\n};\n\nconst dateTime = (value: string | Date | undefined): string | null => {\n if (!value) return null;\n const date = value instanceof Date ? value : new Date(value);\n return Number.isFinite(date.getTime()) ? date.toISOString() : null;\n};\n\nexport function ChatMessage(props: ChatMessageProps): JSX.Element {\n const messages = useUiMessages();\n const [busyActionId, setBusyActionId] = createSignal<string | null>(null);\n const [completedActionId, setCompletedActionId] = createSignal<string | null>(null);\n let completedTimer: ReturnType<typeof setTimeout> | undefined;\n const status = () => statusLabel(props.status, messages());\n const timestamp = () => dateTime(props.createdAt);\n // Locale and timezone are application policy. Requiring an explicit visible\n // label keeps SSR and hydration byte-stable while `createdAt` still supplies\n // the semantic machine-readable timestamp.\n const time = () => props.timeLabel ?? null;\n const actions = () => props.actions ?? [];\n const actionDisplay = () =>\n props.actionDisplay === \"auto\" || !props.actionDisplay ? (props.role === \"user\" ? \"menu\" : \"inline\") : props.actionDisplay;\n const hasMeta = () => props.status === \"streaming\" || status() !== null || Boolean(time()) || actions().length > 0;\n\n const runAction = async (action: ChatAction) => {\n if (action.disabled || busyActionId()) return;\n setBusyActionId(action.id);\n try {\n await executeChatAction(action);\n setCompletedActionId(action.id);\n if (completedTimer) clearTimeout(completedTimer);\n completedTimer = setTimeout(() => setCompletedActionId(null), 1400);\n } catch (error) {\n props.onActionError?.(error);\n } finally {\n setBusyActionId(null);\n }\n };\n\n const actionIcon = (action: ChatAction) =>\n busyActionId() === action.id\n ? \"ti ti-loader-2 k2b-spin\"\n : completedActionId() === action.id\n ? \"ti ti-check\"\n : (action.icon ?? \"ti ti-dots\");\n\n onCleanup(() => {\n if (completedTimer) clearTimeout(completedTimer);\n });\n\n const menuItems = (): readonly DropdownItem[] =>\n actions().map((action) => ({\n icon: actionIcon(action),\n label: action.label,\n variant: action.variant,\n disabled: action.disabled || Boolean(busyActionId()),\n action: () => void runAction(action),\n }));\n\n return (\n <article\n class={`k2b-chat-message ${props.class ?? \"\"}`}\n data-role={props.role}\n data-status={props.status ?? \"complete\"}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n aria-busy={props.status === \"pending\" || props.status === \"streaming\" ? \"true\" : undefined}\n >\n <span class=\"k2b-sr-only\">{props.label ?? roleLabel(props.role, messages())}: </span>\n <Show when={(props.attachments?.length ?? 0) > 0}>\n <div class=\"k2b-chat-message__attachments\" role=\"list\" aria-label={messages().attachments}>\n <For each={props.attachments}>\n {(attachment) => {\n const content = () => (\n <>\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? attachment.name} />\n </Show>\n <Show when={attachment.kind !== \"image\"}>\n <span>{attachment.name}</span>\n </Show>\n </>\n );\n return (\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-message__attachment\" role=\"listitem\" title={attachment.name}>\n {content()}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-message__attachment\"\n role=\"listitem\"\n title={attachment.name}\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n {content()}\n </a>\n )}\n </Show>\n );\n }}\n </For>\n </div>\n </Show>\n\n <Show when={props.children !== undefined && props.children !== null && props.children !== \"\"}>\n <div class=\"k2b-chat-message__bubble\">\n <div class=\"k2b-chat-message__content\">{props.children}</div>\n </div>\n </Show>\n\n <Show when={hasMeta()}>\n <footer class=\"k2b-chat-message__meta\">\n <Show\n when={props.status === \"streaming\"}\n fallback={\n <Show when={status()}>\n {(label) => (\n <span class=\"k2b-chat-message__status\" role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <i class={statusIcon(props.status)} aria-hidden=\"true\" />\n {label()}\n </span>\n )}\n </Show>\n }\n >\n <span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\" aria-label={messages().generating}>\n <ChatProgressDots />\n </span>\n </Show>\n <Show when={time()}>{(label) => <time dateTime={timestamp() ?? undefined}>{label()}</time>}</Show>\n <Show when={actions().length > 0 && actionDisplay() === \"inline\"}>\n <span class=\"k2b-chat-message__actions\" role=\"group\" aria-label={messages().messageActions}>\n <For each={actions()}>\n {(action) => (\n <button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.pressed}\n title={action.label}\n data-danger={action.variant === \"danger\" ? \"true\" : undefined}\n disabled={action.disabled || Boolean(busyActionId())}\n onClick={() => void runAction(action)}\n >\n <i class={actionIcon(action)} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n </span>\n </Show>\n <Show when={actions().length > 0 && actionDisplay() === \"menu\"}>\n <Dropdown.Root position=\"bottom-left\" width=\"12rem\" label={messages().messageActions} items={menuItems()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-message__menu\"\n label={messages().messageActions}\n title={messages().messageActions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </footer>\n </Show>\n </article>\n );\n}\n\nconst ActivityContent = (props: ChatActivityProps & { disclosure?: boolean }) => (\n <>\n <span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">\n <Show when={props.leading} fallback={<i class={props.icon ?? \"ti ti-sparkles\"} />}>\n {props.leading}\n </Show>\n </span>\n <span class=\"k2b-chat-activity__copy\">\n <strong>{props.label}</strong>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-chat-activity__trailing\">{props.trailing}</span>\n </Show>\n <Show when={props.disclosure}>\n <i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\" />\n </Show>\n </>\n);\n\nexport function ChatActivity(props: ChatActivityProps): JSX.Element {\n const tone = () => props.tone ?? \"neutral\";\n const style = () => (props.accent ? { \"--k2b-chat-activity-accent\": props.accent } : undefined);\n return (\n <Show\n when={props.children}\n fallback={\n <div\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <div class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} />\n </div>\n </div>\n }\n >\n <details\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-body-inset={props.bodyInset === false ? \"false\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n open={props.open ?? props.defaultOpen}\n onToggle={(event) => props.onOpenChange?.(event.currentTarget.open)}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <summary class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} disclosure />\n </summary>\n <div class=\"k2b-chat-activity__body\">{props.children}</div>\n </details>\n </Show>\n );\n}\n\nexport function ChatContextUsage(props: ChatContextUsageProps): JSX.Element {\n const messages = useUiMessages();\n const formatNumber = (value: number) => (props.formatNumber ?? formatStableInteger)(value);\n const formattedUsageValue = (value: number | null): string => (value === null ? messages().unknown : formatNumber(value));\n const usage = () => normalizedUsage(props.usage);\n const loopUsage = () => normalizedUsage(props.loopUsage);\n const total = () => usage().total ?? 0;\n const windowSize = () => finiteNonNegative(props.contextWindow);\n const reported = () => usage().reported;\n const percent = () => (reported() && windowSize() > 0 ? Math.min(100, Math.round((total() / windowSize()) * 100)) : null);\n const remaining = () => (reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null);\n const accessibleLabel = () => {\n if (!reported()) {\n return windowSize() > 0\n ? messages().contextUsageUnavailableWithWindow({ window: formatNumber(windowSize()) })\n : messages().contextUsageUnavailable;\n }\n return percent() === null\n ? messages().tokensUsed({ total: formatNumber(total()) })\n : messages().tokensUsedPercent({ total: formatNumber(total()), percent: percent()! });\n };\n\n return (\n <Tooltip.Trigger\n placement=\"top\"\n content={\n <div class=\"k2b-chat-context__tooltip\">\n <strong>{messages().lastRequestContext}</strong>\n <Show when={percent() !== null}>\n <ProgressBar\n value={percent() ?? 0}\n size=\"xs\"\n tone={(percent() ?? 0) >= 85 ? \"danger\" : \"info\"}\n label={messages().contextWindowUsed}\n />\n </Show>\n <dl>\n <Show when={props.modelLabel}>\n {(model) => (\n <div>\n <dt>{messages().model}</dt>\n <dd>{model()}</dd>\n </div>\n )}\n </Show>\n <div>\n <dt>{messages().input}</dt>\n <dd>{formattedUsageValue(usage().input)}</dd>\n </div>\n <div>\n <dt>{messages().output}</dt>\n <dd>{formattedUsageValue(usage().output)}</dd>\n </div>\n <Show when={loopUsage().reported}>\n <div>\n <dt>{messages().loopTotal}</dt>\n <dd>{formattedUsageValue(loopUsage().total)}</dd>\n </div>\n </Show>\n <div>\n <dt>{messages().window}</dt>\n <dd>{windowSize() > 0 ? formatNumber(windowSize()) : messages().notConfigured}</dd>\n </div>\n <Show when={remaining() !== null}>\n <div>\n <dt>{messages().remaining}</dt>\n <dd>{remaining() === null ? messages().unknown : formatNumber(remaining()!)}</dd>\n </div>\n </Show>\n </dl>\n </div>\n }\n type=\"button\"\n class={`k2b-chat-context ${props.class ?? \"\"}`}\n data-warning={reported() && (percent() ?? 0) >= 85 ? \"true\" : undefined}\n aria-label={accessibleLabel()}\n >\n <i class=\"ti ti-brain\" aria-hidden=\"true\" />\n <span>{percent() === null ? \"–\" : `${percent()}%`}</span>\n </Tooltip.Trigger>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ssr as _$ssr } from "solid-js/web";
|
|
2
|
+
import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
|
|
3
|
+
import { escape as _$escape } from "solid-js/web";
|
|
4
|
+
var _tmpl$ = ["<section class=\"", "\"", ">", "</section>"];
|
|
5
|
+
import { useUiMessages } from "../intl/messages";
|
|
6
|
+
export function ChatRoot(props) {
|
|
7
|
+
const messages = useUiMessages();
|
|
8
|
+
return _$ssr(_tmpl$, `k2b-chat ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.label ?? messages().chat, true), false), _$escape(props.children));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ChatRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useUiMessages","ChatRoot","props","messages","_$ssr","_tmpl$","_$escape","class","_$ssrAttribute","label","chat","children"],"sources":["chat/ChatRoot.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type ChatRootProps = {\n children: JSX.Element;\n class?: string;\n label?: string;\n};\n\nexport function ChatRoot(props: ChatRootProps): JSX.Element {\n const messages = useUiMessages();\n return (\n <section class={`k2b-chat ${props.class ?? \"\"}`} aria-label={props.label ?? messages().chat}>\n {props.children}\n </section>\n );\n}\n"],"mappings":";;;;AACA,SAASA,aAAa,QAAQ,kBAAkB;AAQhD,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAe;EAC1D,MAAMC,QAAQ,GAAGH,aAAa,CAAC,CAAC;EAChC,OAAAI,KAAA,CAAAC,MAAA,EACkB,YAAAC,QAAA,CAAYJ,KAAK,CAACK,KAAK,IAAI,EAAE,SAAE,EAAAC,cAAA,eAAAF,QAAA,CAAcJ,KAAK,CAACO,KAAK,IAAIN,QAAQ,CAAC,CAAC,CAACO,IAAI,iBAAAJ,QAAA,CACxFJ,KAAK,CAACS,QAAQ;AAGrB","ignoreList":[]}
|