entasis 0.10.2 → 0.12.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/README.md +1 -1
- package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
- package/dist/attachments/disclosurePanel.svelte.js +277 -0
- package/dist/attachments/portal.d.ts +17 -1
- package/dist/attachments/portal.js +39 -2
- package/dist/attachments/spinnerOverlay.svelte.js +12 -0
- package/dist/attachments/transitionSize.d.ts +6 -0
- package/dist/attachments/transitionSize.js +30 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
- package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
- package/dist/components/AIAskUserQuestion/index.js +2 -0
- package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
- package/dist/components/AIAskUserQuestion/schemas.js +10 -3
- package/dist/components/AIChat/AIChat.svelte +10 -0
- package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
- package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
- package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
- package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
- package/dist/components/AIChat/AIChatSurface.svelte +30 -2
- package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
- package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
- package/dist/components/AIChat/aiChat.mcp.js +31 -15
- package/dist/components/AIChat/aiChat.props.d.ts +36 -10
- package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
- package/dist/components/AIChat/aiChat.theme.js +21 -4
- package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
- package/dist/components/AIChat/index.d.ts +1 -1
- package/dist/components/AIComposer/AIComposer.svelte +102 -5
- package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
- package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
- package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
- package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
- package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
- package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
- package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
- package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
- package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
- package/dist/components/AIComposer/aiComposer.theme.js +37 -5
- package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
- package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
- package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
- package/dist/components/AIContext/AIContext.svelte +7 -3
- package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
- package/dist/components/AIContext/aiContext.mcp.js +1 -1
- package/dist/components/AIContext/aiContext.props.d.ts +4 -1
- package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
- package/dist/components/AIContext/aiContext.theme.js +7 -2
- package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
- package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
- package/dist/components/AIMarker/AIMarker.svelte +2 -0
- package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
- package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
- package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
- package/dist/components/AIMarker/aiMarker.theme.js +2 -2
- package/dist/components/AIMessage/AIMessage.svelte +38 -16
- package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
- package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
- package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
- package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
- package/dist/components/AIMessage/aiMessage.theme.js +91 -32
- package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
- package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
- package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
- package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
- package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
- package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
- package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
- package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
- package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
- package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
- package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
- package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
- package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
- package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
- package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
- package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
- package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
- package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
- package/dist/components/AIThread/AIThread.svelte +378 -95
- package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
- package/dist/components/AIThread/AIThreadItems.svelte +266 -64
- package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
- package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
- package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
- package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
- package/dist/components/AIThread/aiThread.mcp.js +34 -20
- package/dist/components/AIThread/aiThread.props.d.ts +73 -8
- package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
- package/dist/components/AIThread/aiThread.theme.js +108 -9
- package/dist/components/AIThread/index.d.ts +1 -1
- package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
- package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
- package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
- package/dist/components/AIThread/threadRenderItems.js +265 -77
- package/dist/components/AIThread/threadScrollController.d.ts +0 -8
- package/dist/components/AIThread/threadScrollController.js +2 -39
- package/dist/components/AIThread/threadTools.d.ts +11 -0
- package/dist/components/AIThread/threadTools.js +79 -0
- package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
- package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
- package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
- package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
- package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
- package/dist/components/AITool/AITool.svelte +56 -21
- package/dist/components/AITool/AIToolCallList.svelte +79 -29
- package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
- package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
- package/dist/components/AITool/AIToolValueSection.svelte +126 -28
- package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolValueTree.svelte +11 -16
- package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
- package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
- package/dist/components/AITool/aiTool.mcp.js +36 -8
- package/dist/components/AITool/aiTool.props.d.ts +52 -6
- package/dist/components/AITool/aiTool.theme.d.ts +117 -39
- package/dist/components/AITool/aiTool.theme.js +144 -140
- package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
- package/dist/components/AITool/aiToolClock.svelte.js +62 -0
- package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
- package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
- package/dist/components/AITool/index.d.ts +2 -1
- package/dist/components/AITool/index.js +1 -0
- package/dist/components/AITool/toolRendering.d.ts +33 -1
- package/dist/components/AITool/toolRendering.js +179 -15
- package/dist/components/AITool/toolValueTree.d.ts +14 -1
- package/dist/components/AITool/toolValueTree.js +126 -27
- package/dist/components/Accordion/Accordion.svelte +109 -109
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
- package/dist/components/Accordion/AccordionPanel.svelte +64 -0
- package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
- package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
- package/dist/components/Accordion/accordion.attributes.js +20 -0
- package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
- package/dist/components/Accordion/accordion.mcp.js +78 -22
- package/dist/components/Accordion/accordion.props.d.ts +54 -10
- package/dist/components/Accordion/accordion.theme.d.ts +3 -0
- package/dist/components/Accordion/accordion.theme.js +4 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
- package/dist/components/Avatar/Avatar.svelte +60 -10
- package/dist/components/Avatar/AvatarGroup.svelte +9 -0
- package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
- package/dist/components/Avatar/avatar.mcp.js +13 -5
- package/dist/components/Avatar/avatar.props.d.ts +28 -1
- package/dist/components/Avatar/avatar.theme.js +3 -3
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
- package/dist/components/Button/Button.svelte +35 -15
- package/dist/components/Button/button.mcp.d.ts +1 -1
- package/dist/components/Button/button.mcp.js +8 -4
- package/dist/components/Button/button.props.d.ts +23 -8
- package/dist/components/Button/button.theme.d.ts +12 -0
- package/dist/components/Button/button.theme.js +17 -4
- package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
- package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
- package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
- package/dist/components/Collapsible/Collapsible.svelte +125 -19
- package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
- package/dist/components/Collapsible/collapsible.attributes.js +17 -0
- package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
- package/dist/components/Collapsible/collapsible.mcp.js +62 -12
- package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
- package/dist/components/Collapsible/collapsible.theme.js +3 -1
- package/dist/components/Collapsible/index.d.ts +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/Command/Command.svelte +56 -14
- package/dist/components/Command/command.mcp.d.ts +1 -1
- package/dist/components/Command/command.mcp.js +12 -6
- package/dist/components/Command/command.props.d.ts +39 -6
- package/dist/components/Command/command.state.svelte.d.ts +40 -11
- package/dist/components/Command/command.state.svelte.js +75 -28
- package/dist/components/Command/command.theme.js +4 -3
- package/dist/components/Confirmation/Confirmation.svelte +72 -31
- package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
- package/dist/components/Confirmation/confirmation.mcp.js +5 -4
- package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
- package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
- package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
- package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
- package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
- package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
- package/dist/components/DataTable/DataTable.svelte +4 -9
- package/dist/components/DataTable/DataTableEditor.svelte +5 -0
- package/dist/components/DataTable/DataTableFilter.svelte +1 -0
- package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
- package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
- package/dist/components/DataTable/dataTable.mcp.js +4 -2
- package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
- package/dist/components/DataTable/dataTable.theme.js +9 -6
- package/dist/components/Dialog/Dialog.svelte +120 -35
- package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
- package/dist/components/Dialog/dialog.api.d.ts +65 -0
- package/dist/components/Dialog/dialog.api.js +1 -0
- package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
- package/dist/components/Dialog/dialog.attributes.js +19 -0
- package/dist/components/Dialog/dialog.indent.d.ts +6 -0
- package/dist/components/Dialog/dialog.indent.js +16 -0
- package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
- package/dist/components/Dialog/dialog.mcp.js +195 -22
- package/dist/components/Dialog/dialog.props.d.ts +102 -19
- package/dist/components/Dialog/dialog.snap.d.ts +40 -0
- package/dist/components/Dialog/dialog.snap.js +78 -0
- package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
- package/dist/components/Dialog/dialog.state.svelte.js +525 -66
- package/dist/components/Dialog/dialog.theme.d.ts +48 -0
- package/dist/components/Dialog/dialog.theme.js +32 -9
- package/dist/components/Dialog/index.d.ts +4 -1
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
- package/dist/components/DocumentViewer/documentOutput.js +2 -1
- package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
- package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
- package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
- package/dist/components/Form/Ask/Ask.svelte +9 -13
- package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
- package/dist/components/Form/Ask/ask.mcp.js +1 -1
- package/dist/components/Form/Ask/ask.props.d.ts +1 -1
- package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
- package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
- package/dist/components/Form/Autocomplete/index.d.ts +3 -0
- package/dist/components/Form/Autocomplete/index.js +2 -0
- package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
- package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
- package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
- package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
- package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
- package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
- package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
- package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
- package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
- package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
- package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
- package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
- package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
- package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
- package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
- package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
- package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
- package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
- package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
- package/dist/components/Form/Combobox/Combobox.svelte +145 -185
- package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
- package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
- package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
- package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.items.js +68 -0
- package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
- package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
- package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
- package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
- package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
- package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
- package/dist/components/Form/Combobox/combobox.theme.js +37 -1
- package/dist/components/Form/Combobox/index.d.ts +2 -1
- package/dist/components/Form/Combobox/index.js +1 -0
- package/dist/components/Form/DateInput/DateInput.svelte +11 -3
- package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
- package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
- package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
- package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
- package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
- package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
- package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
- package/dist/components/Form/Field/Field.svelte +258 -32
- package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
- package/dist/components/Form/Field/FieldGroup.svelte +29 -0
- package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
- package/dist/components/Form/Field/field.d.ts +75 -10
- package/dist/components/Form/Field/field.mcp.d.ts +1 -1
- package/dist/components/Form/Field/field.mcp.js +158 -18
- package/dist/components/Form/Field/field.messages.d.ts +47 -0
- package/dist/components/Form/Field/field.messages.js +64 -0
- package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
- package/dist/components/Form/Field/field.state.svelte.js +525 -16
- package/dist/components/Form/Field/field.theme.d.ts +46 -0
- package/dist/components/Form/Field/field.theme.js +33 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
- package/dist/components/Form/Field/index.d.ts +5 -2
- package/dist/components/Form/Field/index.js +1 -0
- package/dist/components/Form/Field/schemas.js +7 -2
- package/dist/components/Form/File/FileInput.svelte +24 -3
- package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
- package/dist/components/Form/File/fileInput.mcp.js +1 -0
- package/dist/components/Form/Form/Form.svelte +49 -15
- package/dist/components/Form/Form/FormActions.svelte +3 -1
- package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
- package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
- package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +84 -11
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +178 -12
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +28 -0
- package/dist/components/Form/Form/form.registry.js +59 -0
- package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
- package/dist/components/Form/Form/form.state.svelte.js +322 -28
- package/dist/components/Form/Form/index.d.ts +4 -1
- package/dist/components/Form/Form/index.js +1 -0
- package/dist/components/Form/Form/visibility.d.ts +3130 -1863
- package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
- package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
- package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
- package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
- package/dist/components/Form/NumberInput/index.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
- package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
- package/dist/components/Form/PasswordInput/Password.svelte +28 -1
- package/dist/components/Form/PasswordInput/index.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
- package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
- package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
- package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
- package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
- package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
- package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
- package/dist/components/Form/PinInput/PinInput.svelte +44 -9
- package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
- package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
- package/dist/components/Form/PinInput/index.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
- package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
- package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
- package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
- package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
- package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
- package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
- package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
- package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
- package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
- package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
- package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
- package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
- package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
- package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
- package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
- package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
- package/dist/components/Form/Select/Select.svelte +186 -48
- package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
- package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
- package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
- package/dist/components/Form/Select/index.d.ts +2 -1
- package/dist/components/Form/Select/index.js +1 -0
- package/dist/components/Form/Select/select.align.d.ts +5 -0
- package/dist/components/Form/Select/select.align.js +19 -5
- package/dist/components/Form/Select/select.attributes.d.ts +36 -0
- package/dist/components/Form/Select/select.attributes.js +27 -0
- package/dist/components/Form/Select/select.mcp.d.ts +1 -1
- package/dist/components/Form/Select/select.mcp.js +103 -18
- package/dist/components/Form/Select/select.props.d.ts +87 -10
- package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
- package/dist/components/Form/Select/select.state.svelte.js +354 -59
- package/dist/components/Form/Select/select.theme.d.ts +21 -0
- package/dist/components/Form/Select/select.theme.js +22 -0
- package/dist/components/Form/Slider/Slider.svelte +54 -14
- package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
- package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
- package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
- package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
- package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
- package/dist/components/Form/Slider/index.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.js +55 -11
- package/dist/components/Form/Slider/slider.props.d.ts +35 -2
- package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
- package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
- package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
- package/dist/components/Form/Slider/slider.theme.js +35 -17
- package/dist/components/Form/Switch/Switch.svelte +61 -38
- package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
- package/dist/components/Form/Switch/switch.mcp.js +25 -5
- package/dist/components/Form/Switch/switch.props.d.ts +14 -1
- package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
- package/dist/components/Form/Switch/switch.theme.js +8 -3
- package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
- package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
- package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
- package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
- package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
- package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
- package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
- package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
- package/dist/components/Form/TextArea/TextArea.svelte +8 -0
- package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
- package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
- package/dist/components/Form/TextInput/TextInput.svelte +8 -1
- package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
- package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
- package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
- package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
- package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
- package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
- package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
- package/dist/components/HoverCard/HoverCard.svelte +100 -10
- package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
- package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
- package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
- package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
- package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
- package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
- package/dist/components/HoverCard/hoverCard.theme.js +9 -2
- package/dist/components/HoverCard/index.d.ts +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
- package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
- package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
- package/dist/components/Kanban/kanban.theme.js +7 -3
- package/dist/components/Layout/layoutSpacing.d.ts +2 -2
- package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
- package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
- package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
- package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
- package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
- package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
- package/dist/components/Map/maplibre-cdn.js +3 -2
- package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
- package/dist/components/Markdown/markdown.mcp.js +2 -1
- package/dist/components/Markdown/markdown.theme.js +18 -9
- package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
- package/dist/components/Menu/Menu.svelte +3 -3
- package/dist/components/Menu/Menu.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
- package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
- package/dist/components/Menu/MenuFloating.svelte +421 -74
- package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
- package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
- package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
- package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
- package/dist/components/Menu/MenuSearchField.svelte +54 -0
- package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
- package/dist/components/Menu/MenuStacked.svelte +404 -158
- package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
- package/dist/components/Menu/index.d.ts +2 -1
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Menu/menu.attributes.d.ts +37 -0
- package/dist/components/Menu/menu.attributes.js +28 -0
- package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
- package/dist/components/Menu/menu.filter.svelte.js +143 -0
- package/dist/components/Menu/menu.mcp.d.ts +1 -1
- package/dist/components/Menu/menu.mcp.js +227 -17
- package/dist/components/Menu/menu.platform.d.ts +5 -0
- package/dist/components/Menu/menu.platform.js +11 -0
- package/dist/components/Menu/menu.props.d.ts +172 -9
- package/dist/components/Menu/menu.theme.d.ts +147 -0
- package/dist/components/Menu/menu.theme.js +101 -0
- package/dist/components/Menu/menuTree.d.ts +35 -1
- package/dist/components/Menu/menuTree.js +158 -1
- package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
- package/dist/components/MenuBar/menuBar.mcp.js +4 -2
- package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
- package/dist/components/MenuOption/MenuOption.svelte +5 -1
- package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
- package/dist/components/MenuOption/menuOption.mcp.js +8 -0
- package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
- package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
- package/dist/components/MenuOption/menuOption.theme.js +24 -4
- package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
- package/dist/components/Mermaid/mermaid.mcp.js +8 -8
- package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
- package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
- package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
- package/dist/components/Mermaid/mermaid.theme.js +26 -1
- package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
- package/dist/components/Meter/Meter.svelte +110 -24
- package/dist/components/Meter/Meter.svelte.d.ts +12 -12
- package/dist/components/Meter/meter.mcp.d.ts +1 -1
- package/dist/components/Meter/meter.mcp.js +23 -37
- package/dist/components/Meter/meter.props.d.ts +36 -44
- package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
- package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/index.d.ts +4 -0
- package/dist/components/NavigationMenu/index.js +3 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
- package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
- package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
- package/dist/components/Overlay/Overlay.svelte +19 -30
- package/dist/components/Overlay/index.d.ts +1 -0
- package/dist/components/Overlay/index.js +1 -0
- package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
- package/dist/components/Overlay/overlay.attributes.js +14 -0
- package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
- package/dist/components/Overlay/overlay.mcp.js +21 -3
- package/dist/components/Overlay/overlay.props.d.ts +8 -4
- package/dist/components/Popover/Popover.svelte +163 -52
- package/dist/components/Popover/Popover.svelte.d.ts +23 -2
- package/dist/components/Popover/PopoverSession.svelte +12 -0
- package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
- package/dist/components/Popover/index.d.ts +10 -2
- package/dist/components/Popover/index.js +4 -1
- package/dist/components/Popover/popover.api.d.ts +83 -0
- package/dist/components/Popover/popover.api.js +1 -0
- package/dist/components/Popover/popover.attributes.d.ts +32 -0
- package/dist/components/Popover/popover.attributes.js +28 -0
- package/dist/components/Popover/popover.claims.d.ts +19 -0
- package/dist/components/Popover/popover.claims.js +45 -0
- package/dist/components/Popover/popover.mcp.d.ts +1 -1
- package/dist/components/Popover/popover.mcp.js +163 -31
- package/dist/components/Popover/popover.position.d.ts +226 -0
- package/dist/components/Popover/popover.position.js +402 -0
- package/dist/components/Popover/popover.props.d.ts +179 -24
- package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
- package/dist/components/Popover/popover.state.svelte.js +1034 -194
- package/dist/components/Popover/popover.theme.d.ts +15 -0
- package/dist/components/Popover/popover.theme.js +27 -2
- package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
- package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
- package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
- package/dist/components/PopupMenu/popupMenu.context.js +52 -0
- package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
- package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
- package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
- package/dist/components/Progress/Progress.svelte +160 -0
- package/dist/components/Progress/Progress.svelte.d.ts +4 -0
- package/dist/components/Progress/index.d.ts +3 -0
- package/dist/components/Progress/index.js +2 -0
- package/dist/components/Progress/progress.mcp.d.ts +1 -0
- package/dist/components/Progress/progress.mcp.js +101 -0
- package/dist/components/Progress/progress.props.d.ts +79 -0
- package/dist/components/Progress/progress.props.js +1 -0
- package/dist/components/Progress/progress.theme.d.ts +129 -0
- package/dist/components/Progress/progress.theme.js +83 -0
- package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
- package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
- package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
- package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
- package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
- package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
- package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
- package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
- package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
- package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
- package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
- package/dist/components/RichTextInput/suggestions.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
- package/dist/components/ScrollArea/index.d.ts +2 -1
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
- package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
- package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
- package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
- package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
- package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
- package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
- package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
- package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
- package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
- package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
- package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
- package/dist/components/Sidebar/SidebarAction.svelte +13 -3
- package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
- package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
- package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
- package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
- package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
- package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
- package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
- package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
- package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
- package/dist/components/Sidebar/sidebar-position.js +31 -2
- package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
- package/dist/components/Sidebar/sidebar.attributes.js +29 -0
- package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
- package/dist/components/Sidebar/sidebar.mcp.js +45 -10
- package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
- package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
- package/dist/components/Sidebar/sidebar.theme.js +113 -62
- package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
- package/dist/components/Stepper/Stepper.svelte +2 -0
- package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
- package/dist/components/Stepper/stepper.mcp.js +1 -0
- package/dist/components/Stepper/stepper.props.d.ts +5 -0
- package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
- package/dist/components/Stepper/stepper.state.svelte.js +31 -12
- package/dist/components/Tabbar/Tabbar.svelte +55 -16
- package/dist/components/Tabbar/index.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.js +26 -9
- package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
- package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
- package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
- package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
- package/dist/components/Tabs/Tabs.svelte +73 -16
- package/dist/components/Tabs/index.d.ts +2 -1
- package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
- package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
- package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
- package/dist/components/Tabs/tabs.mcp.js +22 -4
- package/dist/components/Tabs/tabs.props.d.ts +39 -12
- package/dist/components/Tabs/tabs.theme.js +3 -1
- package/dist/components/Theme/Theme.svelte +44 -27
- package/dist/components/Theme/helper.d.ts +16 -2
- package/dist/components/Theme/helper.js +46 -4
- package/dist/components/Theme/theme.mcp.d.ts +1 -1
- package/dist/components/Theme/theme.mcp.js +103 -0
- package/dist/components/Theme/theme.props.d.ts +16 -0
- package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
- package/dist/components/Theme/theme.state.svelte.js +18 -1
- package/dist/components/Toast/Toast.svelte +184 -39
- package/dist/components/Toast/Toaster.svelte +14 -10
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/toast.mcp.d.ts +1 -1
- package/dist/components/Toast/toast.mcp.js +47 -6
- package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
- package/dist/components/Toast/toast.state.svelte.js +513 -68
- package/dist/components/Toast/toast.theme.js +1 -1
- package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
- package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
- package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
- package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
- package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
- package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
- package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
- package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
- package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
- package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
- package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
- package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
- package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
- package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.svelte +4 -12
- package/dist/components/Tooltip/TooltipHost.svelte +136 -15
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
- package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
- package/dist/components/Tooltip/tooltip.attributes.js +28 -0
- package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
- package/dist/components/Tooltip/tooltip.mcp.js +111 -10
- package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
- package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
- package/dist/components/Tooltip/tooltip.surface.js +42 -0
- package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
- package/dist/components/Utils/BeforeHydratation.svelte +14 -3
- package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
- package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
- package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
- package/dist/generated/componentAliases.d.ts +3 -0
- package/dist/generated/componentAliases.js +3 -0
- package/dist/generated/componentContract.d.ts +79 -34
- package/dist/generated/componentContract.js +231 -6
- package/dist/generated/componentMcpRegistry.js +6 -0
- package/dist/i18n/ar.js +107 -3
- package/dist/i18n/context.svelte.d.ts +6 -0
- package/dist/i18n/context.svelte.js +12 -0
- package/dist/i18n/de.js +101 -3
- package/dist/i18n/en.d.ts +91 -2
- package/dist/i18n/en.js +101 -3
- package/dist/i18n/es.js +101 -3
- package/dist/i18n/fr.js +101 -3
- package/dist/i18n/ja.js +101 -3
- package/dist/i18n/pt.js +101 -3
- package/dist/i18n/zh.js +101 -3
- package/dist/tailwind/geometry.js +7 -0
- package/dist/tailwind/global.js +31 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types.mcp.d.ts +1 -1
- package/dist/types/types.mcp.js +23 -0
- package/dist/utils/cspNonce.d.ts +16 -0
- package/dist/utils/cspNonce.js +39 -0
- package/dist/utils/cva/merge.d.ts +5 -1
- package/dist/utils/cva/merge.js +6 -4
- package/dist/utils/focus.d.ts +34 -0
- package/dist/utils/focus.js +93 -0
- package/dist/utils/focusHistory.d.ts +21 -0
- package/dist/utils/focusHistory.js +99 -0
- package/dist/utils/handlers.d.ts +7 -0
- package/dist/utils/handlers.js +14 -0
- package/dist/utils/hoverIntent.d.ts +42 -0
- package/dist/utils/hoverIntent.js +57 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/layers.svelte.d.ts +32 -4
- package/dist/utils/layers.svelte.js +214 -21
- package/dist/utils/listFilter.d.ts +44 -0
- package/dist/utils/listFilter.js +130 -0
- package/dist/utils/match.d.ts +35 -0
- package/dist/utils/match.js +36 -0
- package/dist/utils/number.d.ts +126 -0
- package/dist/utils/number.js +401 -0
- package/dist/utils/openChange.d.ts +88 -0
- package/dist/utils/openChange.js +71 -0
- package/dist/utils/openLifecycle.svelte.d.ts +41 -0
- package/dist/utils/openLifecycle.svelte.js +134 -0
- package/dist/utils/pointerDrag.d.ts +10 -0
- package/dist/utils/pointerDrag.js +37 -2
- package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
- package/dist/utils/pragmaticDragAndDrop.js +8 -3
- package/dist/utils/range.d.ts +62 -0
- package/dist/utils/range.js +70 -0
- package/dist/utils/requestNativeSubmit.d.ts +17 -0
- package/dist/utils/requestNativeSubmit.js +47 -0
- package/dist/utils/safeArea.svelte.d.ts +10 -1
- package/dist/utils/safeArea.svelte.js +19 -11
- package/dist/utils/stateAttributes.d.ts +108 -0
- package/dist/utils/stateAttributes.js +78 -0
- package/dist/utils/swipeVelocity.d.ts +32 -0
- package/dist/utils/swipeVelocity.js +59 -0
- package/dist/utils/timer.svelte.d.ts +65 -2
- package/dist/utils/timer.svelte.js +159 -25
- package/dist/utils/trigger.d.ts +41 -0
- package/dist/utils/trigger.js +103 -0
- package/dist/utils/typeahead.d.ts +9 -0
- package/dist/utils/typeahead.js +21 -9
- package/dist/utils/useDndList.svelte.d.ts +1 -1
- package/dist/utils/useDndList.svelte.js +6 -23
- package/dist/utils/useFocusScope.svelte.d.ts +29 -0
- package/dist/utils/useFocusScope.svelte.js +189 -27
- package/dist/utils/useHoverAction.svelte.d.ts +44 -4
- package/dist/utils/useHoverAction.svelte.js +161 -51
- package/dist/utils/useKeyDown.svelte.d.ts +19 -2
- package/dist/utils/useKeyDown.svelte.js +19 -12
- package/dist/utils/useListNavigation.svelte.d.ts +94 -13
- package/dist/utils/useListNavigation.svelte.js +261 -35
- package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
- package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
- package/dist/utils/useNavigation.svelte.d.ts +36 -3
- package/dist/utils/useNavigation.svelte.js +699 -332
- package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
- package/dist/utils/usePressAndHold.svelte.js +191 -0
- package/dist/utils/useScrollLock.svelte.d.ts +20 -1
- package/dist/utils/useScrollLock.svelte.js +54 -13
- package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
- package/dist/utils/useSlidingIndicator.svelte.js +27 -5
- package/dist/utils/useTabBridge.svelte.d.ts +20 -0
- package/dist/utils/useTabBridge.svelte.js +109 -0
- package/dist/utils/values.d.ts +15 -0
- package/dist/utils/values.js +49 -0
- package/package.json +31 -2
- package/dist/generated/componentMcpRegistry.d.ts +0 -142
- package/dist/utils/useDrag.svelte.d.ts +0 -11
- package/dist/utils/useDrag.svelte.js +0 -55
|
@@ -1,27 +1,23 @@
|
|
|
1
1
|
<script lang="ts" module>
|
|
2
|
+
// Assistant replies are flat prose of varying length; user turns are short bubbles.
|
|
2
3
|
const assistantRows = [
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
] as const;
|
|
7
|
-
const userRows = [
|
|
8
|
-
{ primary: 'w-2/5 max-w-sm', secondary: 'w-1/3 max-w-xs' },
|
|
9
|
-
{ primary: 'w-1/2 max-w-md', secondary: 'w-1/4 max-w-40' }
|
|
4
|
+
['w-full', 'w-11/12', 'w-3/5'],
|
|
5
|
+
['w-full', 'w-4/5'],
|
|
6
|
+
['w-full', 'w-full', 'w-10/12', 'w-2/5']
|
|
10
7
|
] as const;
|
|
11
8
|
|
|
12
9
|
function createSkeletonRows(messageCount: number) {
|
|
13
10
|
const finiteCount = Number.isFinite(messageCount) ? messageCount : 4;
|
|
14
11
|
const count = Math.min(8, Math.max(1, Math.trunc(finiteCount)));
|
|
15
|
-
return Array.from({ length: count }, (_, index) =>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
12
|
+
return Array.from({ length: count }, (_, index) =>
|
|
13
|
+
index % 2 === 0
|
|
14
|
+
? { id: index, side: 'user' as const, lines: [] as readonly string[] }
|
|
15
|
+
: {
|
|
16
|
+
id: index,
|
|
17
|
+
side: 'assistant' as const,
|
|
18
|
+
lines: assistantRows[Math.floor(index / 2) % assistantRows.length]!
|
|
19
|
+
}
|
|
20
|
+
);
|
|
25
21
|
}
|
|
26
22
|
</script>
|
|
27
23
|
|
|
@@ -37,6 +33,7 @@
|
|
|
37
33
|
showHeader = false,
|
|
38
34
|
showComposer = true,
|
|
39
35
|
showFooter = false,
|
|
36
|
+
contentWidth = '48rem',
|
|
40
37
|
role = 'status',
|
|
41
38
|
'aria-label': label,
|
|
42
39
|
'aria-busy': ariaBusy = 'true',
|
|
@@ -47,6 +44,9 @@
|
|
|
47
44
|
const t = $derived(useI18n());
|
|
48
45
|
const rows = $derived(createSkeletonRows(messageCount));
|
|
49
46
|
const classes = $derived(useAIChatTheme(theme));
|
|
47
|
+
const resolvedContentWidth = $derived(
|
|
48
|
+
typeof contentWidth === 'number' ? `${contentWidth}px` : contentWidth
|
|
49
|
+
);
|
|
50
50
|
</script>
|
|
51
51
|
|
|
52
52
|
<div
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
aria-label={label ?? t.aiChatConnecting}
|
|
58
58
|
aria-busy={ariaBusy}
|
|
59
59
|
class={classes.root({ className })}
|
|
60
|
+
style:--ai-chat-content-width={resolvedContentWidth}
|
|
60
61
|
>
|
|
61
62
|
{#if showHeader}
|
|
62
63
|
<div data-slot="ai-chat-skeleton-header" aria-hidden="true" class={classes.header()}>
|
|
@@ -74,20 +75,12 @@
|
|
|
74
75
|
<div class={classes.skeletonMessages()}>
|
|
75
76
|
{#each rows as row (row.id)}
|
|
76
77
|
{#if row.side === 'user'}
|
|
77
|
-
<
|
|
78
|
-
<div class="flex w-full max-w-[82%] flex-col items-end gap-2">
|
|
79
|
-
<Skeleton class={`h-4 ${row.layout.primary}`} />
|
|
80
|
-
<Skeleton class={`h-4 ${row.layout.secondary}`} />
|
|
81
|
-
</div>
|
|
82
|
-
</div>
|
|
78
|
+
<Skeleton data-slot="ai-chat-skeleton-user" class={classes.skeletonUser()} />
|
|
83
79
|
{:else}
|
|
84
|
-
<div
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
<Skeleton class={`h-4 ${row.layout.secondary}`} />
|
|
89
|
-
<Skeleton class={`h-4 ${row.layout.tertiary}`} />
|
|
90
|
-
</div>
|
|
80
|
+
<div data-slot="ai-chat-skeleton-assistant" class={classes.skeletonAssistant()}>
|
|
81
|
+
{#each row.lines as width, line (line)}
|
|
82
|
+
<Skeleton class={`h-4 ${width}`} />
|
|
83
|
+
{/each}
|
|
91
84
|
</div>
|
|
92
85
|
{/if}
|
|
93
86
|
{/each}
|
|
@@ -96,15 +89,14 @@
|
|
|
96
89
|
|
|
97
90
|
{#if showComposer}
|
|
98
91
|
<div data-slot="ai-chat-skeleton-composer" aria-hidden="true" class={classes.composer()}>
|
|
99
|
-
<div class=
|
|
100
|
-
<Skeleton class="h-4 w-3/4" />
|
|
92
|
+
<div class={classes.skeletonComposer()}>
|
|
101
93
|
<Skeleton class="h-4 w-1/2" />
|
|
102
|
-
<div class="
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
<Skeleton class="h-
|
|
94
|
+
<div class="flex items-center justify-between gap-3">
|
|
95
|
+
<Skeleton class="size-7 rounded-md" />
|
|
96
|
+
<div class="flex items-center gap-2">
|
|
97
|
+
<Skeleton class="h-7 w-20 rounded-md" />
|
|
98
|
+
<Skeleton class="size-7 rounded-md" />
|
|
106
99
|
</div>
|
|
107
|
-
<Skeleton class="size-8 shrink-0" />
|
|
108
100
|
</div>
|
|
109
101
|
</div>
|
|
110
102
|
</div>
|
|
@@ -26,6 +26,9 @@
|
|
|
26
26
|
| 'density'
|
|
27
27
|
| 'messageSize'
|
|
28
28
|
| 'messageVariant'
|
|
29
|
+
| 'messageColor'
|
|
30
|
+
| 'contentWidth'
|
|
31
|
+
| 'showFollowUps'
|
|
29
32
|
| 'messageActions'
|
|
30
33
|
| 'messageActionsVisibility'
|
|
31
34
|
| 'messageCopyable'
|
|
@@ -59,6 +62,8 @@
|
|
|
59
62
|
| 'onQueuedMessageEditCancel'
|
|
60
63
|
| 'onQueuedMessageReorder'
|
|
61
64
|
| 'onSteer'
|
|
65
|
+
| 'submitShortcut'
|
|
66
|
+
| 'toolbar'
|
|
62
67
|
| 'header'
|
|
63
68
|
| 'beforeThread'
|
|
64
69
|
| 'controls'
|
|
@@ -95,6 +100,9 @@
|
|
|
95
100
|
density,
|
|
96
101
|
messageSize,
|
|
97
102
|
messageVariant,
|
|
103
|
+
messageColor,
|
|
104
|
+
contentWidth = '48rem',
|
|
105
|
+
showFollowUps,
|
|
98
106
|
messageActions,
|
|
99
107
|
messageActionsVisibility,
|
|
100
108
|
messageCopyable,
|
|
@@ -128,6 +136,8 @@
|
|
|
128
136
|
onQueuedMessageEditCancel,
|
|
129
137
|
onQueuedMessageReorder,
|
|
130
138
|
onSteer,
|
|
139
|
+
submitShortcut,
|
|
140
|
+
toolbar,
|
|
131
141
|
header,
|
|
132
142
|
beforeThread,
|
|
133
143
|
controls,
|
|
@@ -153,6 +163,12 @@
|
|
|
153
163
|
let composerSurface = $state<{ focus: () => void }>();
|
|
154
164
|
const classes = $derived(useAIChatTheme(theme));
|
|
155
165
|
const t = $derived(useI18n());
|
|
166
|
+
const resolvedContentWidth = $derived(
|
|
167
|
+
typeof contentWidth === 'number' ? `${contentWidth}px` : contentWidth
|
|
168
|
+
);
|
|
169
|
+
// The default thread shows the error as a row where the reply failed, with a Retry button. An
|
|
170
|
+
// `errorRegion` replacement, or a replaced thread, keeps the error above the transcript.
|
|
171
|
+
const errorInThread = $derived(!errorRegion && !thread);
|
|
156
172
|
|
|
157
173
|
function displayError(value: unknown): string {
|
|
158
174
|
if (value instanceof Error && value.message) return value.message;
|
|
@@ -164,13 +180,20 @@
|
|
|
164
180
|
{#if children}
|
|
165
181
|
<Slot render={children} payload={conversation} />
|
|
166
182
|
{:else}
|
|
167
|
-
<div
|
|
183
|
+
<div
|
|
184
|
+
bind:this={ref}
|
|
185
|
+
data-slot="ai-chat"
|
|
186
|
+
data-density={density === 'compact' || density === 'comfortable' ? density : 'normal'}
|
|
187
|
+
class={classes.root({ className })}
|
|
188
|
+
{...attachments}
|
|
189
|
+
style:--ai-chat-content-width={resolvedContentWidth}
|
|
190
|
+
>
|
|
168
191
|
{#if header}
|
|
169
192
|
<div data-slot="ai-chat-header" class={classes.header()}>
|
|
170
193
|
<Slot render={header} payload={conversation} />
|
|
171
194
|
</div>
|
|
172
195
|
{/if}
|
|
173
|
-
{#if conversation.error !== undefined}
|
|
196
|
+
{#if conversation.error !== undefined && !errorInThread}
|
|
174
197
|
<div data-slot="ai-chat-error" class={classes.error()}>
|
|
175
198
|
{#if errorRegion}
|
|
176
199
|
<Slot render={errorRegion} payload={conversation} />
|
|
@@ -203,6 +226,9 @@
|
|
|
203
226
|
{density}
|
|
204
227
|
{messageSize}
|
|
205
228
|
{messageVariant}
|
|
229
|
+
{messageColor}
|
|
230
|
+
{showFollowUps}
|
|
231
|
+
showError={errorInThread}
|
|
206
232
|
{messageActions}
|
|
207
233
|
{messageActionsVisibility}
|
|
208
234
|
{messageCopyable}
|
|
@@ -257,6 +283,8 @@
|
|
|
257
283
|
{onQueuedMessageEditCancel}
|
|
258
284
|
{onQueuedMessageReorder}
|
|
259
285
|
{onSteer}
|
|
286
|
+
{submitShortcut}
|
|
287
|
+
{toolbar}
|
|
260
288
|
{theme}
|
|
261
289
|
/>
|
|
262
290
|
{#if footer}
|
|
@@ -2,7 +2,7 @@ import type { WithAttachments } from '../../types/props.js';
|
|
|
2
2
|
import type { AIConversationState } from '../AIConversation/aiConversation.state.svelte.js';
|
|
3
3
|
import type { AIThreadItem } from '../AIThread/aiThread.props.js';
|
|
4
4
|
import type { AIChatProps } from './aiChat.props.js';
|
|
5
|
-
type Props<TMessage extends AIThreadItem> = WithAttachments<Pick<AIChatProps<TMessage>, 'ref' | 'queue' | 'models' | 'modelGroups' | 'maxTokens' | 'showContext' | 'showModelSelector' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onSelect' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'header' | 'beforeThread' | 'controls' | 'context' | 'modelSelector' | 'children' | 'thread' | 'afterThread' | 'errorRegion' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'composer' | 'footer' | 'class' | 'theme'> & {
|
|
5
|
+
type Props<TMessage extends AIThreadItem> = WithAttachments<Pick<AIChatProps<TMessage>, 'ref' | 'queue' | 'models' | 'modelGroups' | 'maxTokens' | 'showContext' | 'showModelSelector' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageColor' | 'contentWidth' | 'showFollowUps' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onSelect' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'submitShortcut' | 'toolbar' | 'header' | 'beforeThread' | 'controls' | 'context' | 'modelSelector' | 'children' | 'thread' | 'afterThread' | 'errorRegion' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'composer' | 'footer' | 'class' | 'theme'> & {
|
|
6
6
|
conversation: AIConversationState<TMessage>;
|
|
7
7
|
}>;
|
|
8
8
|
declare function $$render<TMessage extends AIThreadItem = AIThreadItem>(): {
|
|
@@ -24,6 +24,8 @@
|
|
|
24
24
|
| 'density'
|
|
25
25
|
| 'messageSize'
|
|
26
26
|
| 'messageVariant'
|
|
27
|
+
| 'messageColor'
|
|
28
|
+
| 'showFollowUps'
|
|
27
29
|
| 'messageActions'
|
|
28
30
|
| 'messageActionsVisibility'
|
|
29
31
|
| 'messageCopyable'
|
|
@@ -37,6 +39,8 @@
|
|
|
37
39
|
> & {
|
|
38
40
|
conversation: AIConversationState<TMessage>;
|
|
39
41
|
onComposerFocus?: () => void;
|
|
42
|
+
/** Shows the conversation error as a transcript row. */
|
|
43
|
+
showError?: boolean;
|
|
40
44
|
};
|
|
41
45
|
|
|
42
46
|
let {
|
|
@@ -52,7 +56,10 @@
|
|
|
52
56
|
tocSide = 'right',
|
|
53
57
|
density = 'normal',
|
|
54
58
|
messageSize = 'normal',
|
|
55
|
-
messageVariant = '
|
|
59
|
+
messageVariant = 'minimal',
|
|
60
|
+
messageColor,
|
|
61
|
+
showFollowUps = true,
|
|
62
|
+
showError = true,
|
|
56
63
|
messageActions,
|
|
57
64
|
messageActionsVisibility,
|
|
58
65
|
messageCopyable = true,
|
|
@@ -114,6 +121,9 @@
|
|
|
114
121
|
{density}
|
|
115
122
|
{messageSize}
|
|
116
123
|
{messageVariant}
|
|
124
|
+
{messageColor}
|
|
125
|
+
{showFollowUps}
|
|
126
|
+
{showError}
|
|
117
127
|
{messageActions}
|
|
118
128
|
{messageActionsVisibility}
|
|
119
129
|
{messageCopyable}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { AIConversationState } from '../AIConversation/aiConversation.state.svelte.js';
|
|
2
2
|
import type { AIThreadItem } from '../AIThread/aiThread.props.js';
|
|
3
3
|
import type { AIChatProps } from './aiChat.props.js';
|
|
4
|
-
type Props<TMessage extends AIThreadItem> = Pick<AIChatProps<TMessage>, 'thread' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'onSelect' | 'theme'> & {
|
|
4
|
+
type Props<TMessage extends AIThreadItem> = Pick<AIChatProps<TMessage>, 'thread' | 'empty' | 'message' | 'tool' | 'marker' | 'suggestionsRegion' | 'toc' | 'showToc' | 'tocSide' | 'density' | 'messageSize' | 'messageVariant' | 'messageColor' | 'showFollowUps' | 'messageActions' | 'messageActionsVisibility' | 'messageCopyable' | 'messageEditable' | 'messageRetryable' | 'onMessageCopy' | 'onMessageEdit' | 'onMessageRetry' | 'onSelect' | 'theme'> & {
|
|
5
5
|
conversation: AIConversationState<TMessage>;
|
|
6
6
|
onComposerFocus?: () => void;
|
|
7
|
+
/** Shows the conversation error as a transcript row. */
|
|
8
|
+
showError?: boolean;
|
|
7
9
|
};
|
|
8
10
|
declare function $$render<TMessage extends AIThreadItem = AIThreadItem>(): {
|
|
9
11
|
props: Props<TMessage>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const aiChatDescription = "\n# AIChat\n\nAssembled AI conversation surface built from AIConversation, AIThread, AIComposer, AIContext, AIModelSelector, and AIAskUserQuestion. It owns no transport.\n\n## Requires\n\nAIChat renders AIComposer, which is built on Lexical. Those packages are optional peer dependencies of entasis, so install them alongside it:\n\n`pnpm add lexical @lexical/history @lexical/link @lexical/list @lexical/markdown @lexical/rich-text @lexical/selection @lexical/utils`\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n import { AIChat, AIChatSkeleton, type AIChatProps } from './index.ts';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<AIChat\n bind:api\n bind:messages\n bind:selectedModel\n {models}\n {contextUsage}\n {suggestions}\n onSubmit={({ message, meta, conversation }) => sendMessage(message, meta, conversation)}\n onStop={(payload) => stopGeneration(payload)}\n/>\n```\n\nAIChat exposes every AIConversation bindable and event: `api` (the conversation instance handle), `status`, `error`, `messages`, `queuedMessage`, `currentInput`, `files`, `attachments`, `liveText`, `suggestions`, `contextUsage`, `selectedModel`, `streaming`, `activeAskUserQuestion`, `labels`, and all conversation mutation/lifecycle callbacks. `queue` is the bindable ordered AIComposer queue.\n\n## Regions\n\nProduct-level snippets receive the central `AIConversationState` instance directly:\n\n- `children` replaces the complete default surface while retaining the provider.\n- `header`, `beforeThread`, `thread`, `afterThread`, `composer`, and `footer` replace or insert complete surface regions.\n- `errorRegion` replaces the default error
|
|
1
|
+
export declare const aiChatDescription = "\n# AIChat\n\nAssembled AI conversation surface built from AIConversation, AIThread, AIComposer, AIContext, AIModelSelector, and AIAskUserQuestion. It owns no transport.\n\n## Requires\n\nAIChat renders AIComposer, which is built on Lexical. Those packages are optional peer dependencies of entasis, so install them alongside it:\n\n`pnpm add lexical @lexical/history @lexical/link @lexical/list @lexical/markdown @lexical/rich-text @lexical/selection @lexical/utils`\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n import { AIChat, AIChatSkeleton, type AIChatProps } from './index.ts';\n</script>\n```\n\n## Basic usage\n\n```svelte\n<AIChat\n bind:api\n bind:messages\n bind:selectedModel\n {models}\n {contextUsage}\n {suggestions}\n onSubmit={({ message, meta, conversation }) => sendMessage(message, meta, conversation)}\n onStop={(payload) => stopGeneration(payload)}\n/>\n```\n\nAIChat exposes every AIConversation bindable and event: `api` (the conversation instance handle), `status`, `error`, `messages`, `queuedMessage`, `currentInput`, `files`, `attachments`, `liveText`, `suggestions`, `contextUsage`, `selectedModel`, `streaming`, `activeAskUserQuestion`, `labels`, and all conversation mutation/lifecycle callbacks. `queue` is the bindable ordered AIComposer queue.\n\n## Regions\n\nProduct-level snippets receive the central `AIConversationState` instance directly:\n\n- `children` replaces the complete default surface while retaining the provider.\n- `header`, `beforeThread`, `thread`, `afterThread`, `composer`, and `footer` replace or insert complete surface regions.\n- `errorRegion` replaces the default error. Without it, a conversation `error` shows as a row at the end of the transcript, where the reply failed, with a Retry button that calls the conversation's `retry` on the last message (so `onRetry` receives `{ target: { index } }`) and clears the error. An empty transcript shows the error instead of the greeting. A replacement `errorRegion`, or a replaced `thread`, renders above the transcript.\n- `context` and `modelSelector` replace their individual composer controls; `controls` replaces both together.\n- `empty` replaces the transcript empty state (a vertically centred greeting with wrapping suggestion chips); `suggestionsRegion` replaces suggestions inside that empty state and turns off the follow-ups.\n- `message`, `tool`, and `marker` customize transcript renderers with their row payloads.\n Message payloads include the thread-resolved `actionsVisibility` value so custom AIMessage\n composition does not make intermediate actions permanently visible.\n- `toc` receives the complete `AIThreadTocState`.\n\n```svelte\n<AIChat {messages} {models}>\n {#snippet beforeThread(state)}\n\t<div>{state.status}</div>\n {/snippet}\n\n {#snippet context(state)}\n\t<span>{state.contextUsage?.totalTokens ?? 0} tokens</span>\n {/snippet}\n\n {#snippet afterThread(state)}\n\t<div>{state.messages.length} messages</div>\n {/snippet}\n</AIChat>\n```\n\n## Layout and thread controls\n\nThe transcript rows and the composer share one centred reading column. `contentWidth` (default\n`'48rem'`; a number is pixels, `'none'` spans the chat) sets the CSS variable\n`--ai-chat-content-width` on the root, which AIThread rows and AIComposer both read.\n\nUse `density` for transcript spacing, `messageSize` for the default message scale (normal reads\nat 14px, large at 16px), `messageVariant` (`minimal`, the default: flat full-width assistant prose; or\n`bubble`: framed assistant replies) and `messageColor` (the user bubble: `neutral` grey by\ndefault, any other role paints a solid bubble \u2014 `primary` gives the previous saturated look). Use\n`showToc`, `tocSide`, and `toc` for user-turn navigation; the table of contents steps aside\nin a thread narrower than 480px. Custom message snippets own their message presentation. Configure\nadvanced virtualizer tuning on `AIThread` through direct composition.\n\nWhile a reply streams and the last item is a user turn, the transcript shows a pending assistant\nrow (\"Thinking\u2026\" or `liveText`, with the `shimmer` utility); the streaming reply shows a caret.\nAI SDK `reasoning`, tool (including approval states), `source-url`/`source-document` and\n`file` parts render in the transcript, and an answered ask-user-question leaves a compact\nquestion \u2192 answer summary.\n\nUse `messageActions`, `messageActionsVisibility` (`latest`, the default, `hover`, `always`, or `none`), `messageCopyable`, `messageEditable`, `messageRetryable`, `onMessageCopy`, `onMessageEdit`, and `onMessageRetry` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.\nA turn is one unit: reasoning, tools and text up to the next user message share a single action bar\nat the end of the turn, whose copy takes the whole turn's text. `latest` keeps the final assistant\nturn's bar visible and reveals the others on hover or focus; touch screens always show them. The\nbar of a reply that is still streaming appears when it ends.\n\n## Context and model controls\n\n`models` and `modelGroups` populate the default selector. The default context indicator renders only when there is something to measure: `maxTokens` is set or the conversation reports `contextUsage`. With usage but no `maxTokens`, the percentage is computed against 128000. `showContext` and `showModelSelector` default to true; the model selector renders only when at least one model exists. Custom `context` and `modelSelector` snippets render regardless of those visibility flags. `controls` has precedence over both individual regions. These controls render at the end of the composer footer, next to the send button.\n\n## Composer behavior\n\nThe default AIComposer remains connected to the central conversation state. AIChat exposes product-level source, file, and queue behavior:\n\n- Queueing: `disabled`, `queueWhileBusy`, `queue`, `onQueueChange`, `onQueuedMessageAdd`, `onQueuedMessageCancel`, `onQueuedMessageEditStart`, `onQueuedMessageEditCommit`, `onQueuedMessageEditCancel`, `onQueuedMessageReorder`, and `onSteer`.\n- Files: `fileDropzone`, `fileMultiple`, `accept`, `maxFiles`, `maxFileSize`, `onFilesRejected`, `onFileReject`, `onAttachmentAdd`, `onAttachmentRetry`, and `onAttachmentRemove`. AIChat defaults `fileDropzone` to true.\n- Suggestions in the editor: `commands`, `mentions`, `references`, and `skills`.\n- Editor: `submitShortcut` (AIComposer's default `'enter'`: Enter sends, Shift+Enter adds a line) and `toolbar` (AIComposer's default `'none'`).\nUse `AIConversation` with `AIThread` and `AIComposer` directly for other primitive-level tuning.\n\nConversation `onSubmit`, `onStop`, and `onFilesChange` remain central state events rather than bypassing or duplicating the Composer path.\n\n## Questions and suggestions\n\nAn active `activeAskUserQuestion` replaces both a custom or default composer. The complete request is rendered with every question, initial values, title, requester, context, navigation labels, submit label, and discard label. Answers are retained by request key, and completion or dismissal resolves the captured request through `AIConversationState.resolveAskUserQuestion`.\n\nPrompt `suggestions` render as chips under the empty-state greeting, then as follow-ups above the composer (one row that scrolls sideways on narrow screens) once an assistant turn has finished (not while streaming, during a question, or under an error); `showFollowUps={false}` keeps them to the empty state. An explicit `empty` region has precedence. An explicit `onSelect` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates `currentInput` and focuses the default composer.\n\n## Skeleton\n\nAIChatSkeleton mirrors the default chat \u2014 user turns as end-aligned bubbles, assistant turns as flat lines, the composer as a bordered card, all in the centred column \u2014 so nothing jumps when the chat replaces it. It accepts native div attributes plus `messageCount`, `showHeader`, `showComposer`, `showFooter`, `contentWidth` (default `'48rem'`, match the chat's), `class`, and `theme`. `messageCount` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to `role=\"status\"`, `aria-label=\"Connecting chat\"`, and `aria-busy=\"true\"`, all overridable with native attributes.\n\n```svelte\n<AIChatSkeleton\n messageCount={6}\n showHeader\n showFooter\n aria-label=\"Loading support conversation\"\n/>\n```\n\n## Theme\n\nUse `theme` or `setAIChatTheme` to override `root`, `header`, `error`, `beforeThread`, `thread`, `afterThread`, `suggestions`, `composer`, `controls`, `footer`, `skeletonMessages`, `skeletonUser`, `skeletonAssistant`, and `skeletonComposer` parts.\n";
|
|
@@ -40,9 +40,9 @@ Product-level snippets receive the central \`AIConversationState\` instance dire
|
|
|
40
40
|
|
|
41
41
|
- \`children\` replaces the complete default surface while retaining the provider.
|
|
42
42
|
- \`header\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`composer\`, and \`footer\` replace or insert complete surface regions.
|
|
43
|
-
- \`errorRegion\` replaces the default error
|
|
43
|
+
- \`errorRegion\` replaces the default error. Without it, a conversation \`error\` shows as a row at the end of the transcript, where the reply failed, with a Retry button that calls the conversation's \`retry\` on the last message (so \`onRetry\` receives \`{ target: { index } }\`) and clears the error. An empty transcript shows the error instead of the greeting. A replacement \`errorRegion\`, or a replaced \`thread\`, renders above the transcript.
|
|
44
44
|
- \`context\` and \`modelSelector\` replace their individual composer controls; \`controls\` replaces both together.
|
|
45
|
-
- \`empty\` replaces the transcript empty state; \`suggestionsRegion\` replaces suggestions inside that empty state.
|
|
45
|
+
- \`empty\` replaces the transcript empty state (a vertically centred greeting with wrapping suggestion chips); \`suggestionsRegion\` replaces suggestions inside that empty state and turns off the follow-ups.
|
|
46
46
|
- \`message\`, \`tool\`, and \`marker\` customize transcript renderers with their row payloads.
|
|
47
47
|
Message payloads include the thread-resolved \`actionsVisibility\` value so custom AIMessage
|
|
48
48
|
composition does not make intermediate actions permanently visible.
|
|
@@ -64,20 +64,35 @@ Product-level snippets receive the central \`AIConversationState\` instance dire
|
|
|
64
64
|
</AIChat>
|
|
65
65
|
\`\`\`
|
|
66
66
|
|
|
67
|
-
##
|
|
67
|
+
## Layout and thread controls
|
|
68
68
|
|
|
69
|
-
|
|
70
|
-
\`
|
|
71
|
-
\`
|
|
72
|
-
presentation. Configure advanced virtualizer tuning on \`AIThread\` through direct composition.
|
|
69
|
+
The transcript rows and the composer share one centred reading column. \`contentWidth\` (default
|
|
70
|
+
\`'48rem'\`; a number is pixels, \`'none'\` spans the chat) sets the CSS variable
|
|
71
|
+
\`--ai-chat-content-width\` on the root, which AIThread rows and AIComposer both read.
|
|
73
72
|
|
|
74
|
-
Use \`
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
Use \`density\` for transcript spacing, \`messageSize\` for the default message scale (normal reads
|
|
74
|
+
at 14px, large at 16px), \`messageVariant\` (\`minimal\`, the default: flat full-width assistant prose; or
|
|
75
|
+
\`bubble\`: framed assistant replies) and \`messageColor\` (the user bubble: \`neutral\` grey by
|
|
76
|
+
default, any other role paints a solid bubble — \`primary\` gives the previous saturated look). Use
|
|
77
|
+
\`showToc\`, \`tocSide\`, and \`toc\` for user-turn navigation; the table of contents steps aside
|
|
78
|
+
in a thread narrower than 480px. Custom message snippets own their message presentation. Configure
|
|
79
|
+
advanced virtualizer tuning on \`AIThread\` through direct composition.
|
|
80
|
+
|
|
81
|
+
While a reply streams and the last item is a user turn, the transcript shows a pending assistant
|
|
82
|
+
row ("Thinking…" or \`liveText\`, with the \`shimmer\` utility); the streaming reply shows a caret.
|
|
83
|
+
AI SDK \`reasoning\`, tool (including approval states), \`source-url\`/\`source-document\` and
|
|
84
|
+
\`file\` parts render in the transcript, and an answered ask-user-question leaves a compact
|
|
85
|
+
question → answer summary.
|
|
86
|
+
|
|
87
|
+
Use \`messageActions\`, \`messageActionsVisibility\` (\`latest\`, the default, \`hover\`, \`always\`, or \`none\`), \`messageCopyable\`, \`messageEditable\`, \`messageRetryable\`, \`onMessageCopy\`, \`onMessageEdit\`, and \`onMessageRetry\` for default message actions. Explicit message-action callbacks take precedence over conversation fallbacks.
|
|
88
|
+
A turn is one unit: reasoning, tools and text up to the next user message share a single action bar
|
|
89
|
+
at the end of the turn, whose copy takes the whole turn's text. \`latest\` keeps the final assistant
|
|
90
|
+
turn's bar visible and reveals the others on hover or focus; touch screens always show them. The
|
|
91
|
+
bar of a reply that is still streaming appears when it ends.
|
|
77
92
|
|
|
78
93
|
## Context and model controls
|
|
79
94
|
|
|
80
|
-
\`models\` and \`modelGroups\` populate the default selector. \`maxTokens\`
|
|
95
|
+
\`models\` and \`modelGroups\` populate the default selector. The default context indicator renders only when there is something to measure: \`maxTokens\` is set or the conversation reports \`contextUsage\`. With usage but no \`maxTokens\`, the percentage is computed against 128000. \`showContext\` and \`showModelSelector\` default to true; the model selector renders only when at least one model exists. Custom \`context\` and \`modelSelector\` snippets render regardless of those visibility flags. \`controls\` has precedence over both individual regions. These controls render at the end of the composer footer, next to the send button.
|
|
81
96
|
|
|
82
97
|
## Composer behavior
|
|
83
98
|
|
|
@@ -86,7 +101,8 @@ The default AIComposer remains connected to the central conversation state. AICh
|
|
|
86
101
|
- Queueing: \`disabled\`, \`queueWhileBusy\`, \`queue\`, \`onQueueChange\`, \`onQueuedMessageAdd\`, \`onQueuedMessageCancel\`, \`onQueuedMessageEditStart\`, \`onQueuedMessageEditCommit\`, \`onQueuedMessageEditCancel\`, \`onQueuedMessageReorder\`, and \`onSteer\`.
|
|
87
102
|
- Files: \`fileDropzone\`, \`fileMultiple\`, \`accept\`, \`maxFiles\`, \`maxFileSize\`, \`onFilesRejected\`, \`onFileReject\`, \`onAttachmentAdd\`, \`onAttachmentRetry\`, and \`onAttachmentRemove\`. AIChat defaults \`fileDropzone\` to true.
|
|
88
103
|
- Suggestions in the editor: \`commands\`, \`mentions\`, \`references\`, and \`skills\`.
|
|
89
|
-
|
|
104
|
+
- Editor: \`submitShortcut\` (AIComposer's default \`'enter'\`: Enter sends, Shift+Enter adds a line) and \`toolbar\` (AIComposer's default \`'none'\`).
|
|
105
|
+
Use \`AIConversation\` with \`AIThread\` and \`AIComposer\` directly for other primitive-level tuning.
|
|
90
106
|
|
|
91
107
|
Conversation \`onSubmit\`, \`onStop\`, and \`onFilesChange\` remain central state events rather than bypassing or duplicating the Composer path.
|
|
92
108
|
|
|
@@ -94,11 +110,11 @@ Conversation \`onSubmit\`, \`onStop\`, and \`onFilesChange\` remain central stat
|
|
|
94
110
|
|
|
95
111
|
An active \`activeAskUserQuestion\` replaces both a custom or default composer. The complete request is rendered with every question, initial values, title, requester, context, navigation labels, submit label, and discard label. Answers are retained by request key, and completion or dismissal resolves the captured request through \`AIConversationState.resolveAskUserQuestion\`.
|
|
96
112
|
|
|
97
|
-
Prompt \`suggestions\` render
|
|
113
|
+
Prompt \`suggestions\` render as chips under the empty-state greeting, then as follow-ups above the composer (one row that scrolls sideways on narrow screens) once an assistant turn has finished (not while streaming, during a question, or under an error); \`showFollowUps={false}\` keeps them to the empty state. An explicit \`empty\` region has precedence. An explicit \`onSelect\` callback -- the pick event for a suggestion -- has precedence over the default behavior; without it, picking a suggestion updates \`currentInput\` and focuses the default composer.
|
|
98
114
|
|
|
99
115
|
## Skeleton
|
|
100
116
|
|
|
101
|
-
AIChatSkeleton accepts native div attributes plus \`messageCount\`, \`showHeader\`, \`showComposer\`, \`showFooter\`, \`class\`, and \`theme\`. \`messageCount\` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to \`role="status"\`, \`aria-label="Connecting chat"\`, and \`aria-busy="true"\`, all overridable with native attributes.
|
|
117
|
+
AIChatSkeleton mirrors the default chat — user turns as end-aligned bubbles, assistant turns as flat lines, the composer as a bordered card, all in the centred column — so nothing jumps when the chat replaces it. It accepts native div attributes plus \`messageCount\`, \`showHeader\`, \`showComposer\`, \`showFooter\`, \`contentWidth\` (default \`'48rem'\`, match the chat's), \`class\`, and \`theme\`. \`messageCount\` defaults to 4 and is clamped from 1 to 8. Header and footer default off; composer defaults on. The root defaults to \`role="status"\`, \`aria-label="Connecting chat"\`, and \`aria-busy="true"\`, all overridable with native attributes.
|
|
102
118
|
|
|
103
119
|
\`\`\`svelte
|
|
104
120
|
<AIChatSkeleton
|
|
@@ -111,5 +127,5 @@ AIChatSkeleton accepts native div attributes plus \`messageCount\`, \`showHeader
|
|
|
111
127
|
|
|
112
128
|
## Theme
|
|
113
129
|
|
|
114
|
-
Use \`theme\` or \`setAIChatTheme\` to override \`root\`, \`header\`, \`error\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`suggestions\`, \`composer\`, \`controls\`, \`footer\`, and \`
|
|
130
|
+
Use \`theme\` or \`setAIChatTheme\` to override \`root\`, \`header\`, \`error\`, \`beforeThread\`, \`thread\`, \`afterThread\`, \`suggestions\`, \`composer\`, \`controls\`, \`footer\`, \`skeletonMessages\`, \`skeletonUser\`, \`skeletonAssistant\`, and \`skeletonComposer\` parts.
|
|
115
131
|
`;
|
|
@@ -4,9 +4,10 @@ import type { AIComposerAttachment, AIComposerProps, AIComposerQueuedMessage } f
|
|
|
4
4
|
import type { AIContextUsage } from '../AIContext/aiContext.props.js';
|
|
5
5
|
import type { AIConversationApi } from '../AIConversation/aiConversation.props.js';
|
|
6
6
|
import type { AIConversationLabelOverrides, AIConversationState, AIConversationStateEvents, AIConversationStatus } from '../AIConversation/aiConversation.state.svelte.js';
|
|
7
|
-
import type { AIMessageActionHandler, AIMessageActionState
|
|
7
|
+
import type { AIMessageActionHandler, AIMessageActionState } from '../AIMessageActions/aiMessageActions.props.js';
|
|
8
8
|
import type { AIModelSelectorGroup, AIModelSelectorModel } from '../AIModelSelector/aiModelSelector.props.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { Colors } from '../../types/theme.js';
|
|
10
|
+
import type { AIThreadDensity, AIThreadAskUserQuestion, AIThreadMessageActionsVisibility, AIThreadItem, AIThreadMessageRenderPayload, AIThreadRenderPayload, AIThreadTocSide, AIThreadTocState } from '../AIThread/aiThread.props.js';
|
|
10
11
|
import type { AIMessageSize, AIMessageVariant } from '../AIMessage/aiMessage.props.js';
|
|
11
12
|
import type { AIToolCall } from '../AITool/aiTool.props.js';
|
|
12
13
|
import type { AIChatThemeProps } from './aiChat.theme.js';
|
|
@@ -18,7 +19,7 @@ export type AIChatToolPayload<TMessage extends AIThreadItem = AIThreadItem> = {
|
|
|
18
19
|
message: TMessage;
|
|
19
20
|
index: number;
|
|
20
21
|
};
|
|
21
|
-
type AIChatComposerBehaviorProps = Pick<AIComposerProps, 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer'>;
|
|
22
|
+
type AIChatComposerBehaviorProps = Pick<AIComposerProps, 'disabled' | 'queueWhileBusy' | 'fileDropzone' | 'fileMultiple' | 'accept' | 'maxFiles' | 'maxFileSize' | 'commands' | 'mentions' | 'references' | 'skills' | 'onFilesRejected' | 'onFileReject' | 'onAttachmentAdd' | 'onAttachmentRetry' | 'onAttachmentRemove' | 'onQueueChange' | 'onQueuedMessageAdd' | 'onQueuedMessageCancel' | 'onQueuedMessageEditStart' | 'onQueuedMessageEditCommit' | 'onQueuedMessageEditCancel' | 'onQueuedMessageReorder' | 'onSteer' | 'submitShortcut' | 'toolbar'>;
|
|
22
23
|
type AIChatRootAttributes = Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class'>;
|
|
23
24
|
type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProps & {
|
|
24
25
|
/** Bindable reference to the assembled chat root. */
|
|
@@ -43,7 +44,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
|
|
|
43
44
|
queue?: AIComposerQueuedMessage[];
|
|
44
45
|
/** Assistant text that is still streaming. */
|
|
45
46
|
liveText?: string;
|
|
46
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Prompt suggestions: chips under the empty-state greeting, then follow-ups above the composer
|
|
49
|
+
* after a finished assistant turn.
|
|
50
|
+
*/
|
|
47
51
|
suggestions?: string[];
|
|
48
52
|
/** Context-window usage displayed by `AIContext`. */
|
|
49
53
|
contextUsage?: AIContextUsage;
|
|
@@ -59,7 +63,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
|
|
|
59
63
|
models?: readonly AIModelSelectorModel[];
|
|
60
64
|
/** Nested model groups shown by the default model selector. */
|
|
61
65
|
modelGroups?: readonly AIModelSelectorGroup[];
|
|
62
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Context-window limit used by the default context indicator. The indicator renders only when
|
|
68
|
+
* this is set or the conversation reports `contextUsage` (then measured against 128000).
|
|
69
|
+
*/
|
|
63
70
|
maxTokens?: number;
|
|
64
71
|
/** Displays the default context indicator when no `context` snippet is provided. */
|
|
65
72
|
showContext?: boolean;
|
|
@@ -73,12 +80,28 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
|
|
|
73
80
|
density?: AIThreadDensity;
|
|
74
81
|
/** Size forwarded to default message rows. @default 'normal' */
|
|
75
82
|
messageSize?: AIMessageSize;
|
|
76
|
-
/** Presentation forwarded to default message rows. @default '
|
|
83
|
+
/** Presentation forwarded to default message rows. @default 'minimal' */
|
|
77
84
|
messageVariant?: AIMessageVariant;
|
|
85
|
+
/**
|
|
86
|
+
* User-bubble colour forwarded to default message rows. Neutral is a quiet grey bubble; any
|
|
87
|
+
* other role paints a solid bubble. Defaults to the theme's default colour.
|
|
88
|
+
*/
|
|
89
|
+
messageColor?: Colors;
|
|
90
|
+
/**
|
|
91
|
+
* Maximum width of the centred column shared by the transcript and the composer, as a CSS
|
|
92
|
+
* length or pixels. Exposed as `--ai-chat-content-width`; `'none'` spans the chat.
|
|
93
|
+
* @default '48rem'
|
|
94
|
+
*/
|
|
95
|
+
contentWidth?: string | number;
|
|
96
|
+
/** Shows `suggestions` as follow-ups above the composer after an assistant turn. @default true */
|
|
97
|
+
showFollowUps?: boolean;
|
|
78
98
|
/** Custom action renderer shared by default message rows. */
|
|
79
99
|
messageActions?: Slot<AIMessageActionState<TMessage>> | false;
|
|
80
|
-
/**
|
|
81
|
-
|
|
100
|
+
/**
|
|
101
|
+
* When default message actions show. `latest` keeps the final assistant turn's bar visible and
|
|
102
|
+
* reveals the rest on hover or focus (always on touch screens). @default 'latest'
|
|
103
|
+
*/
|
|
104
|
+
messageActionsVisibility?: AIThreadMessageActionsVisibility;
|
|
82
105
|
/** Enables or disables default copy actions. */
|
|
83
106
|
messageCopyable?: boolean;
|
|
84
107
|
/** Enables or disables default edit actions. */
|
|
@@ -91,7 +114,7 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
|
|
|
91
114
|
onMessageEdit?: AIMessageActionHandler<TMessage>;
|
|
92
115
|
/** Handles message retry actions. */
|
|
93
116
|
onMessageRetry?: AIMessageActionHandler<TMessage>;
|
|
94
|
-
/** Called instead of the default input update when
|
|
117
|
+
/** Called instead of the default input update when a suggestion or follow-up is selected. */
|
|
95
118
|
onSelect?: (suggestion: string) => void;
|
|
96
119
|
/** Replaces the complete default surface while retaining the conversation provider. */
|
|
97
120
|
children?: Slot<AIChatState<TMessage>>;
|
|
@@ -105,7 +128,10 @@ type AIChatBaseProps<TMessage extends AIThreadItem> = AIChatComposerBehaviorProp
|
|
|
105
128
|
context?: Slot<AIChatState<TMessage>>;
|
|
106
129
|
/** Replaces the default model selector. */
|
|
107
130
|
modelSelector?: Slot<AIChatState<TMessage>>;
|
|
108
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Replaces the default error, which otherwise shows as a row at the end of the transcript with
|
|
133
|
+
* a Retry button wired to the conversation's `retry`. A replacement renders above the transcript.
|
|
134
|
+
*/
|
|
109
135
|
errorRegion?: Slot<AIChatState<TMessage>>;
|
|
110
136
|
/** Replaces the complete transcript region. */
|
|
111
137
|
thread?: Slot<AIChatState<TMessage>>;
|
|
@@ -11,6 +11,9 @@ export declare const aiChatTheme: {
|
|
|
11
11
|
controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
12
12
|
footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
13
13
|
skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
14
|
+
skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
15
|
+
skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
16
|
+
skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
14
17
|
};
|
|
15
18
|
export type AIChatTheme = typeof aiChatTheme;
|
|
16
19
|
export type AIChatThemeProps = InferComponentTheme<AIChatTheme>;
|
|
@@ -26,6 +29,9 @@ export declare const setAIChatTheme: (theme: InferComponentTheme<{
|
|
|
26
29
|
controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
27
30
|
footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
28
31
|
skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
32
|
+
skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
33
|
+
skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
34
|
+
skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
29
35
|
}>) => void;
|
|
30
36
|
export declare const useAIChatTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
|
|
31
37
|
root: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
@@ -39,4 +45,7 @@ export declare const useAIChatTheme: import("../../utils/cva/theme.js").UseCompo
|
|
|
39
45
|
controls: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
40
46
|
footer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
41
47
|
skeletonMessages: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
48
|
+
skeletonUser: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
49
|
+
skeletonAssistant: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
50
|
+
skeletonComposer: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
42
51
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { cva, setComponentTheme, useComponentTheme } from '../../utils/cva/index.js';
|
|
2
2
|
const defaultRoot = cva({
|
|
3
|
-
base: 'flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-lg border border-neutral-muted bg-surface'
|
|
3
|
+
base: 'group/ai-chat flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-lg border border-neutral-muted bg-surface'
|
|
4
4
|
});
|
|
5
5
|
const defaultHeader = cva({ base: 'shrink-0 border-b border-neutral-muted px-xl py-lg' });
|
|
6
6
|
const defaultError = cva({ base: 'shrink-0 px-xl pt-lg' });
|
|
@@ -8,11 +8,25 @@ const defaultBeforeThread = cva({ base: 'shrink-0' });
|
|
|
8
8
|
const defaultThread = cva({ base: 'min-h-0 flex-1' });
|
|
9
9
|
const defaultAfterThread = cva({ base: 'shrink-0' });
|
|
10
10
|
const defaultSuggestions = cva({ base: 'border-t border-neutral-muted px-lg py-md' });
|
|
11
|
-
|
|
11
|
+
// The composer is its own raised card, so its band has no rule above it: the card separates
|
|
12
|
+
// itself from the transcript. Its inline inset matches the thread rows at the chat's density, so
|
|
13
|
+
// the card and the transcript share their edges at every width.
|
|
14
|
+
const defaultComposer = cva({
|
|
15
|
+
base: 'shrink-0 px-xl pt-xs pb-lg group-data-[density=compact]/ai-chat:px-lg group-data-[density=comfortable]/ai-chat:px-layout-sm'
|
|
16
|
+
});
|
|
12
17
|
const defaultControls = cva({ base: 'flex min-w-0 items-center gap-md' });
|
|
13
18
|
const defaultFooter = cva({ base: 'shrink-0 border-t border-neutral-muted px-xl py-md' });
|
|
19
|
+
// The skeleton mirrors the default chat: rows in the centred column, user turns as end-aligned
|
|
20
|
+
// bubbles, assistant turns as flat lines of prose, and the composer as a bordered card.
|
|
14
21
|
const defaultSkeletonMessages = cva({
|
|
15
|
-
base: 'grid h-full min-h-0 content-end gap-layout-sm overflow-hidden
|
|
22
|
+
base: 'mx-auto grid h-full min-h-0 w-full max-w-[var(--ai-chat-content-width,none)] content-end gap-layout-sm overflow-hidden px-xl py-layout-sm'
|
|
23
|
+
});
|
|
24
|
+
const defaultSkeletonUser = cva({
|
|
25
|
+
base: 'ms-auto h-control-lg w-2/5 max-w-sm rounded-lg rounded-ee-sm'
|
|
26
|
+
});
|
|
27
|
+
const defaultSkeletonAssistant = cva({ base: 'flex min-w-0 flex-col gap-sm' });
|
|
28
|
+
const defaultSkeletonComposer = cva({
|
|
29
|
+
base: 'mx-auto grid w-full max-w-[var(--ai-chat-content-width,none)] gap-md rounded-lg border border-neutral-muted bg-surface-raised p-sm lift-2'
|
|
16
30
|
});
|
|
17
31
|
export const aiChatTheme = {
|
|
18
32
|
root: defaultRoot,
|
|
@@ -25,7 +39,10 @@ export const aiChatTheme = {
|
|
|
25
39
|
composer: defaultComposer,
|
|
26
40
|
controls: defaultControls,
|
|
27
41
|
footer: defaultFooter,
|
|
28
|
-
skeletonMessages: defaultSkeletonMessages
|
|
42
|
+
skeletonMessages: defaultSkeletonMessages,
|
|
43
|
+
skeletonUser: defaultSkeletonUser,
|
|
44
|
+
skeletonAssistant: defaultSkeletonAssistant,
|
|
45
|
+
skeletonComposer: defaultSkeletonComposer
|
|
29
46
|
};
|
|
30
47
|
export const setAIChatTheme = setComponentTheme('ai-chat');
|
|
31
48
|
export const useAIChatTheme = useComponentTheme('ai-chat', aiChatTheme);
|
|
@@ -13,6 +13,11 @@ export type AIChatSkeletonProps = WithAttachments<AIChatSkeletonRootAttributes &
|
|
|
13
13
|
showComposer?: boolean;
|
|
14
14
|
/** Displays a chat-footer placeholder. */
|
|
15
15
|
showFooter?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Width of the centred column, matching AIChat's `contentWidth` so the skeleton lines up with
|
|
18
|
+
* the chat that replaces it. @default '48rem'
|
|
19
|
+
*/
|
|
20
|
+
contentWidth?: string | number;
|
|
16
21
|
/** Class applied to the skeleton root. */
|
|
17
22
|
class?: string;
|
|
18
23
|
/** AI chat theme overrides reused by the skeleton layout. */
|
|
@@ -2,6 +2,6 @@ export { default as AIChat } from './AIChat.svelte';
|
|
|
2
2
|
export { default as AIChatSkeleton } from './AIChatSkeleton.svelte';
|
|
3
3
|
export type { AIChatProps, AIChatState, AIChatToolPayload } from './aiChat.props.js';
|
|
4
4
|
export type { AIMessageSize, AIMessageVariant } from '../AIMessage/aiMessage.props.js';
|
|
5
|
-
export type { AIThreadDensity } from '../AIThread/aiThread.props.js';
|
|
5
|
+
export type { AIThreadDensity, AIThreadMessageActionsVisibility } from '../AIThread/aiThread.props.js';
|
|
6
6
|
export type { AIChatSkeletonProps } from './aiChatSkeleton.props.js';
|
|
7
7
|
export { aiChatTheme, setAIChatTheme, useAIChatTheme, type AIChatTheme, type AIChatThemeProps } from './aiChat.theme.js';
|