entasis 0.11.0 → 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 +256 -30
- package/dist/components/Form/Field/Field.svelte.d.ts +9 -0
- 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 +64 -8
- 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 +109 -3
- package/dist/components/Form/Field/field.state.svelte.js +508 -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 +47 -14
- 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 +40 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +35 -6
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +113 -13
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +2 -2
- package/dist/components/Form/Form/form.registry.js +1 -4
- package/dist/components/Form/Form/form.state.svelte.d.ts +1138 -413
- package/dist/components/Form/Form/form.state.svelte.js +319 -26
- package/dist/components/Form/Form/index.d.ts +3 -1
- package/dist/components/Form/Form/visibility.d.ts +3096 -1831
- 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 +1022 -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 +225 -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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getAIToolStatusFromState } from '../AITool/toolRendering.js';
|
|
2
|
+
/**
|
|
3
|
+
* Every tool call a transcript message carries, in order: AI SDK tool parts and `{ type: 'tool' }`
|
|
4
|
+
* parts first, then `tools`, `tool`, or a tool-shaped message. Shared by the render-item
|
|
5
|
+
* derivation and ask-user-question detection so both see the same calls with the same ids.
|
|
6
|
+
*/
|
|
7
|
+
export function collectAIThreadMessageTools(message, _messageIndex, messageKey, includePartTools = true) {
|
|
8
|
+
const partTools = (includePartTools ? (message.parts ?? []) : []).flatMap((part, index) => {
|
|
9
|
+
const tool = toolFromPart(part, `${messageKey}:part-${index}`);
|
|
10
|
+
return tool ? [tool] : [];
|
|
11
|
+
});
|
|
12
|
+
if (partTools.length > 0)
|
|
13
|
+
return partTools;
|
|
14
|
+
if (message.tools?.length) {
|
|
15
|
+
return message.tools.map((tool, index) => normalizeToolCall(tool, `${messageKey}:tool-${index}`));
|
|
16
|
+
}
|
|
17
|
+
if (message.tool)
|
|
18
|
+
return [normalizeToolCall(message.tool, messageKey)];
|
|
19
|
+
if (message.role === 'tool' || message.type === 'tool') {
|
|
20
|
+
return [
|
|
21
|
+
{
|
|
22
|
+
id: message.id ?? messageKey,
|
|
23
|
+
name: message.toolName ?? message.name,
|
|
24
|
+
title: message.name,
|
|
25
|
+
status: messageToolStatus(message),
|
|
26
|
+
input: message.input,
|
|
27
|
+
output: message.output !== undefined ? message.output : message.content,
|
|
28
|
+
error: message.error
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
export function normalizeToolCall(tool, fallbackId) {
|
|
35
|
+
return { ...tool, id: tool.id ?? fallbackId, status: toolStatus(tool) };
|
|
36
|
+
}
|
|
37
|
+
export function toolFromPart(part, fallbackId) {
|
|
38
|
+
if (part.type === 'tool' && part.tool)
|
|
39
|
+
return normalizeToolCall(part.tool, fallbackId);
|
|
40
|
+
if (!isToolPart(part))
|
|
41
|
+
return undefined;
|
|
42
|
+
const name = part.toolName ?? (part.type.startsWith('tool-') ? part.type.slice(5) : undefined);
|
|
43
|
+
return normalizeToolCall({
|
|
44
|
+
id: part.toolCallId ?? fallbackId,
|
|
45
|
+
name,
|
|
46
|
+
title: name,
|
|
47
|
+
// AI SDK approval states (`approval-requested`, `approval-responded`, `output-denied`) map
|
|
48
|
+
// onto AITool's own statuses, so a call waiting on the user never spins.
|
|
49
|
+
status: getAIToolStatusFromState(part.state),
|
|
50
|
+
input: part.input,
|
|
51
|
+
output: part.output,
|
|
52
|
+
structuredContent: part.structuredContent,
|
|
53
|
+
result: part.result,
|
|
54
|
+
error: part.errorText ?? part.error,
|
|
55
|
+
...(part.approval ? { approval: part.approval } : {}),
|
|
56
|
+
_meta: part._meta
|
|
57
|
+
}, fallbackId);
|
|
58
|
+
}
|
|
59
|
+
export function isToolPart(part) {
|
|
60
|
+
return part.type === 'dynamic-tool' || part.type?.startsWith('tool-') === true;
|
|
61
|
+
}
|
|
62
|
+
function toolStatus(tool) {
|
|
63
|
+
if (tool.status)
|
|
64
|
+
return tool.status;
|
|
65
|
+
if (tool.error !== undefined)
|
|
66
|
+
return 'error';
|
|
67
|
+
if (tool.output !== undefined || tool.result !== undefined)
|
|
68
|
+
return 'success';
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
function messageToolStatus(message) {
|
|
72
|
+
if (message.status)
|
|
73
|
+
return message.status;
|
|
74
|
+
if (message.error !== undefined)
|
|
75
|
+
return 'error';
|
|
76
|
+
if (message.output !== undefined || message.content !== undefined)
|
|
77
|
+
return 'success';
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
import { quintOut } from 'svelte/easing';
|
|
8
8
|
import { prefersReducedMotion } from '../../utils/motion.svelte.js';
|
|
9
9
|
import { scale } from 'svelte/transition';
|
|
10
|
+
import type { Attachment } from 'svelte/attachments';
|
|
10
11
|
import HoverCard from '../HoverCard/HoverCard.svelte';
|
|
11
12
|
import ScrollArea from '../ScrollArea/ScrollArea.svelte';
|
|
12
13
|
import Slot from '../Slot/Slot.svelte';
|
|
13
14
|
import type { AIThreadItem, AIThreadTocEntry, AIThreadTocProps } from './aiThreadToc.props.js';
|
|
15
|
+
import type { AIThreadTocPin } from '../AIThread/aiThread.props.js';
|
|
14
16
|
import { useAIThreadTocTheme } from './aiThreadToc.theme.js';
|
|
15
17
|
import AIThreadTocPreview from './AIThreadTocPreview.svelte';
|
|
16
18
|
import {
|
|
@@ -30,15 +32,21 @@
|
|
|
30
32
|
const PREVIEW_DELAY = 80;
|
|
31
33
|
const PREVIEW_CLOSE_DELAY = 120;
|
|
32
34
|
const PREVIEW_GAP = 10;
|
|
35
|
+
const PIN_ACTIVE_OPACITY = 1;
|
|
36
|
+
const PIN_VISIBLE_OPACITY = 0.55;
|
|
37
|
+
const PIN_IDLE_OPACITY = 0.28;
|
|
38
|
+
const DEFAULT_MIN_CONTAINER_WIDTH = 480;
|
|
33
39
|
|
|
34
40
|
let {
|
|
35
41
|
ref = $bindable(),
|
|
36
42
|
state: tocState,
|
|
37
43
|
maxPins = 96,
|
|
44
|
+
showRange = false,
|
|
38
45
|
scrollAreaLabel,
|
|
39
46
|
side = 'left',
|
|
40
47
|
previewSide,
|
|
41
48
|
previewAlign = 'center',
|
|
49
|
+
minContainerWidth = DEFAULT_MIN_CONTAINER_WIDTH,
|
|
42
50
|
pin,
|
|
43
51
|
preview,
|
|
44
52
|
title,
|
|
@@ -56,16 +64,51 @@
|
|
|
56
64
|
let pointerPinPosition = $state<number>();
|
|
57
65
|
let focusedPinIndex = $state<number>();
|
|
58
66
|
let pinAreaElement = $state<HTMLDivElement>();
|
|
67
|
+
// Roving tab stop: the last pin focused from the keyboard (the first pin until then). It never
|
|
68
|
+
// follows the active turn, so scrolling the thread writes no `tabindex`; a keyboard entry into
|
|
69
|
+
// the rail moves on to the active pin instead (see `handlePinFocus`).
|
|
70
|
+
let rovingKey = $state<string>();
|
|
71
|
+
// Width of the surrounding container, measured while the rail is mounted.
|
|
72
|
+
let containerWidth = $state<number>();
|
|
73
|
+
const narrow = $derived(
|
|
74
|
+
minContainerWidth > 0 && containerWidth !== undefined && containerWidth < minContainerWidth
|
|
75
|
+
);
|
|
76
|
+
// A touch tap previews a pin first; a second tap on the same pin navigates.
|
|
77
|
+
let lastPointerType: string | undefined;
|
|
78
|
+
let touchPreviewKey = $state<string>();
|
|
59
79
|
let pendingPointerY: number | undefined;
|
|
60
80
|
let pointerFrame: number | undefined;
|
|
61
81
|
let previewOpenTimer: ReturnType<typeof setTimeout> | undefined;
|
|
62
82
|
let previewCloseTimer: ReturnType<typeof setTimeout> | undefined;
|
|
63
|
-
|
|
64
|
-
|
|
83
|
+
// The TOC state is rebuilt on every scroll. Keep the previous pins while they still show the same
|
|
84
|
+
// entries: new pin objects make the keyed list run its flip animation, which measures every pin
|
|
85
|
+
// with getBoundingClientRect on each scroll event and made scrolling stutter.
|
|
86
|
+
let previousPins: AIThreadTocPin<TMessage>[] = [];
|
|
87
|
+
const t = $derived(useI18n());
|
|
88
|
+
const pins = $derived.by(() => {
|
|
89
|
+
const next = compactAIThreadTocEntries<TMessage>(tocState.entries, {
|
|
65
90
|
maxPins,
|
|
66
91
|
activeEntryIndex: tocState.activeIndex
|
|
67
|
-
})
|
|
68
|
-
|
|
92
|
+
});
|
|
93
|
+
const same =
|
|
94
|
+
next.length === previousPins.length &&
|
|
95
|
+
next.every((pin, index) => {
|
|
96
|
+
const previous = previousPins[index];
|
|
97
|
+
return (
|
|
98
|
+
pin.key === previous.key &&
|
|
99
|
+
pin.isBucket === previous.isBucket &&
|
|
100
|
+
pin.entry.index === previous.entry.index &&
|
|
101
|
+
pin.entry.title === previous.entry.title &&
|
|
102
|
+
pin.entry.excerpt === previous.entry.excerpt &&
|
|
103
|
+
pin.entry.fileCount === previous.entry.fileCount
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
if (!same) previousPins = next;
|
|
107
|
+
return previousPins;
|
|
108
|
+
});
|
|
109
|
+
// Built once per pin list: in the template the label would be re-truncated on every scroll,
|
|
110
|
+
// because it updates with the pin's active and visible state.
|
|
111
|
+
const pinLabels = $derived(pins.map((tocPin) => getAIThreadTocLabel(tocPin.entry, t)));
|
|
69
112
|
const visibleStartPercent = $derived(offsetPercent(tocState.visibleStartOffset));
|
|
70
113
|
const visibleEndPercent = $derived(offsetPercent(tocState.visibleEndOffset));
|
|
71
114
|
const visibleRangePercent = $derived(Math.max(0, visibleEndPercent - visibleStartPercent));
|
|
@@ -80,10 +123,18 @@
|
|
|
80
123
|
previewPinIndex >= 0 ? pinStackTopPercent(previewPinIndex, pins.length) : 50
|
|
81
124
|
);
|
|
82
125
|
const resolvedPreviewPosition = $derived(previewPosition());
|
|
126
|
+
const activePinIndex = $derived(
|
|
127
|
+
pins.findIndex((tocPin) => tocPin.entryIndex === tocState.activeIndex)
|
|
128
|
+
);
|
|
129
|
+
const tabStopIndex = $derived(
|
|
130
|
+
Math.max(0, rovingKey === undefined ? 0 : pins.findIndex((tocPin) => tocPin.key === rovingKey))
|
|
131
|
+
);
|
|
132
|
+
const previewTurn = $derived(
|
|
133
|
+
previewEntry ? tocState.entries.findIndex((entry) => entry.key === previewEntry?.key) + 1 : 0
|
|
134
|
+
);
|
|
83
135
|
const pinTransitionDuration = $derived(prefersReducedMotion() ? 0 : 240);
|
|
84
136
|
const pinFlipDuration = $derived(prefersReducedMotion() ? 0 : 170);
|
|
85
137
|
const classes = $derived(useAIThreadTocTheme(theme));
|
|
86
|
-
const t = $derived(useI18n());
|
|
87
138
|
|
|
88
139
|
function offsetPercent(offset: number): number {
|
|
89
140
|
const rangeSize =
|
|
@@ -122,7 +173,11 @@
|
|
|
122
173
|
targeted: boolean
|
|
123
174
|
): string {
|
|
124
175
|
if (targeted) return '1';
|
|
125
|
-
const baseOpacity = active
|
|
176
|
+
const baseOpacity = active
|
|
177
|
+
? PIN_ACTIVE_OPACITY
|
|
178
|
+
: visible
|
|
179
|
+
? PIN_VISIBLE_OPACITY
|
|
180
|
+
: PIN_IDLE_OPACITY;
|
|
126
181
|
const peakOpacity = Math.max(baseOpacity, PIN_NEIGHBOR_MAX_OPACITY);
|
|
127
182
|
return (baseOpacity + influence * (peakOpacity - baseOpacity)).toFixed(3);
|
|
128
183
|
}
|
|
@@ -131,6 +186,98 @@
|
|
|
131
186
|
tocState.scrollToIndex(entry.index);
|
|
132
187
|
}
|
|
133
188
|
|
|
189
|
+
function handlePinPointerDown(event: PointerEvent): void {
|
|
190
|
+
lastPointerType = event.pointerType;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function handlePinClick(entry: AIThreadTocEntry<TMessage>, pinIndex: number, key: string): void {
|
|
194
|
+
const touch = lastPointerType === 'touch';
|
|
195
|
+
lastPointerType = undefined;
|
|
196
|
+
if (touch && touchPreviewKey !== key) {
|
|
197
|
+
touchPreviewKey = key;
|
|
198
|
+
pointerPinPosition = pinIndex;
|
|
199
|
+
pointerPinIndex = pinIndex;
|
|
200
|
+
openPreview(entry, true);
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (touch) closeTouchPreview();
|
|
204
|
+
activate(entry);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function closeTouchPreview(): void {
|
|
208
|
+
if (touchPreviewKey === undefined) return;
|
|
209
|
+
touchPreviewKey = undefined;
|
|
210
|
+
pointerPinIndex = undefined;
|
|
211
|
+
pointerPinPosition = undefined;
|
|
212
|
+
schedulePreviewClose();
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// A touch preview closes on the next tap outside the rail.
|
|
216
|
+
$effect(() => {
|
|
217
|
+
if (touchPreviewKey === undefined || !ref) return;
|
|
218
|
+
const root = ref;
|
|
219
|
+
const ownerDocument = root.ownerDocument;
|
|
220
|
+
const handlePointerDown = (event: PointerEvent) => {
|
|
221
|
+
if (event.target instanceof Node && root.contains(event.target)) return;
|
|
222
|
+
closeTouchPreview();
|
|
223
|
+
};
|
|
224
|
+
ownerDocument.addEventListener('pointerdown', handlePointerDown, true);
|
|
225
|
+
return () => ownerDocument.removeEventListener('pointerdown', handlePointerDown, true);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
function handleStackKeydown(event: KeyboardEvent): void {
|
|
229
|
+
if (event.altKey || event.ctrlKey || event.metaKey || pins.length === 0) return;
|
|
230
|
+
const current =
|
|
231
|
+
event.target instanceof Element ? event.target.closest('[data-toc-pin-key]') : null;
|
|
232
|
+
if (!current) return;
|
|
233
|
+
const index = pins.findIndex(
|
|
234
|
+
(tocPin) => tocPin.key === current.getAttribute('data-toc-pin-key')
|
|
235
|
+
);
|
|
236
|
+
let next: number;
|
|
237
|
+
if (event.key === 'ArrowDown' || event.key === 'ArrowRight') next = index + 1;
|
|
238
|
+
else if (event.key === 'ArrowUp' || event.key === 'ArrowLeft') next = index - 1;
|
|
239
|
+
else if (event.key === 'Home') next = 0;
|
|
240
|
+
else if (event.key === 'End') next = pins.length - 1;
|
|
241
|
+
else return;
|
|
242
|
+
event.preventDefault();
|
|
243
|
+
focusPin(Math.max(0, Math.min(pins.length - 1, next)));
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
function focusPin(pinIndex: number): void {
|
|
247
|
+
const tocPin = pins[pinIndex];
|
|
248
|
+
if (!tocPin || !pinAreaElement) return;
|
|
249
|
+
rovingKey = tocPin.key;
|
|
250
|
+
const element = Array.from(
|
|
251
|
+
pinAreaElement.querySelectorAll<HTMLElement>('[data-slot="ai-thread-toc-pin"]')
|
|
252
|
+
).find((candidate) => candidate.dataset.tocPinKey === tocPin.key);
|
|
253
|
+
element?.focus();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
// The rail is a wide-layout affordance: it removes itself when the surrounding container (the
|
|
257
|
+
// nearest ancestor wider than the rail, typically the thread) is narrower than
|
|
258
|
+
// `minContainerWidth`.
|
|
259
|
+
const watchContainer: Attachment<HTMLElement> = (node) => {
|
|
260
|
+
if (typeof ResizeObserver === 'undefined') return;
|
|
261
|
+
let container = node.parentElement;
|
|
262
|
+
while (container && container.clientWidth <= node.offsetWidth + 1) {
|
|
263
|
+
container = container.parentElement;
|
|
264
|
+
}
|
|
265
|
+
if (!container) return;
|
|
266
|
+
const measured = container;
|
|
267
|
+
// Only the width is stored; `narrow` derives from it, so a new `minContainerWidth` applies
|
|
268
|
+
// at once instead of waiting for the next resize.
|
|
269
|
+
const measure = () => {
|
|
270
|
+
containerWidth = measured.clientWidth;
|
|
271
|
+
};
|
|
272
|
+
const observer = new ResizeObserver(measure);
|
|
273
|
+
observer.observe(measured);
|
|
274
|
+
measure();
|
|
275
|
+
return () => {
|
|
276
|
+
observer.disconnect();
|
|
277
|
+
containerWidth = undefined;
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
|
|
134
281
|
function handleStackPointerMove(event: PointerEvent): void {
|
|
135
282
|
if (event.pointerType !== 'mouse' && event.pointerType !== 'pen') return;
|
|
136
283
|
pendingPointerY = event.clientY;
|
|
@@ -190,6 +337,10 @@
|
|
|
190
337
|
const pinIndex = Math.round(pinPosition);
|
|
191
338
|
const tocPin = pins[pinIndex];
|
|
192
339
|
if (!tocPin) return;
|
|
340
|
+
if (lastPointerType === 'touch') {
|
|
341
|
+
handlePinClick(tocPin.entry, pinIndex, tocPin.key);
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
193
344
|
activatePointerPin(pinIndex);
|
|
194
345
|
activate(tocPin.entry);
|
|
195
346
|
}
|
|
@@ -204,7 +355,16 @@
|
|
|
204
355
|
focusedPinIndex = undefined;
|
|
205
356
|
return;
|
|
206
357
|
}
|
|
358
|
+
// Tab (or Shift+Tab) into the rail lands on the resting tab stop; the active turn's pin is
|
|
359
|
+
// where a keyboard user expects to start.
|
|
360
|
+
const from = event.relatedTarget;
|
|
361
|
+
const entering = !(from instanceof Node && pinAreaElement?.contains(from));
|
|
362
|
+
if (entering && activePinIndex >= 0 && activePinIndex !== pinIndex) {
|
|
363
|
+
focusPin(activePinIndex);
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
207
366
|
focusedPinIndex = pinIndex;
|
|
367
|
+
rovingKey = pins[pinIndex]?.key;
|
|
208
368
|
openPreview(entry, true);
|
|
209
369
|
}
|
|
210
370
|
|
|
@@ -292,6 +452,8 @@
|
|
|
292
452
|
{#if previewEntry}
|
|
293
453
|
<AIThreadTocPreview
|
|
294
454
|
entry={previewEntry}
|
|
455
|
+
turn={previewTurn}
|
|
456
|
+
total={tocState.entries.length}
|
|
295
457
|
{preview}
|
|
296
458
|
{title}
|
|
297
459
|
{excerpt}
|
|
@@ -306,17 +468,20 @@
|
|
|
306
468
|
bind:this={ref}
|
|
307
469
|
data-slot="ai-thread-toc"
|
|
308
470
|
aria-label={t.threadMinimap}
|
|
471
|
+
data-narrow={narrow || undefined}
|
|
472
|
+
hidden={narrow || undefined}
|
|
309
473
|
class={classes.root({ side, className })}
|
|
310
474
|
{...rootAttributes}
|
|
475
|
+
{@attach watchContainer}
|
|
311
476
|
>
|
|
312
|
-
{#if pins.length > 0}
|
|
477
|
+
{#if pins.length > 0 && !narrow}
|
|
313
478
|
<ScrollArea
|
|
314
479
|
label={scrollAreaLabel ?? t.threadMinimapEntries}
|
|
480
|
+
viewportAttrs={{ tabindex: -1 }}
|
|
315
481
|
class={classes.scrollArea()}
|
|
316
482
|
theme={aiThreadTocScrollAreaTheme}
|
|
317
483
|
>
|
|
318
484
|
<div class={classes.scrollContent()}>
|
|
319
|
-
<!-- svelte-ignore a11y_click_events_have_key_events -->
|
|
320
485
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
321
486
|
<div
|
|
322
487
|
data-slot="ai-thread-toc-stack"
|
|
@@ -325,7 +490,9 @@
|
|
|
325
490
|
style:height={`${trackHeight}px`}
|
|
326
491
|
onpointermove={handleStackPointerMove}
|
|
327
492
|
onpointerleave={handleStackPointerLeave}
|
|
493
|
+
onpointerdown={handlePinPointerDown}
|
|
328
494
|
onfocusout={handleStackFocusOut}
|
|
495
|
+
onkeydown={handleStackKeydown}
|
|
329
496
|
onclick={handleStackClick}
|
|
330
497
|
>
|
|
331
498
|
<div
|
|
@@ -334,14 +501,16 @@
|
|
|
334
501
|
class={classes.pinArea()}
|
|
335
502
|
style={`--ai-thread-toc-preview-top: ${previewPinTop}%`}
|
|
336
503
|
>
|
|
337
|
-
|
|
338
|
-
<div
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
504
|
+
{#if showRange}
|
|
505
|
+
<div data-slot="ai-thread-toc-rail" class={classes.rail()}>
|
|
506
|
+
<div
|
|
507
|
+
data-slot="ai-thread-toc-viewport"
|
|
508
|
+
class={classes.viewport()}
|
|
509
|
+
style:top={`${visibleStartPercent}%`}
|
|
510
|
+
style:height={`${visibleRangePercent}%`}
|
|
511
|
+
></div>
|
|
512
|
+
</div>
|
|
513
|
+
{/if}
|
|
345
514
|
|
|
346
515
|
{#each pins as tocPin, pinIndex (tocPin.key)}
|
|
347
516
|
{@const active = tocPin.entryIndex === tocState.activeIndex}
|
|
@@ -357,10 +526,11 @@
|
|
|
357
526
|
data-bucket={tocPin.isBucket}
|
|
358
527
|
data-magnified={influence > 0 ? 'true' : undefined}
|
|
359
528
|
data-targeted={targeted ? 'true' : undefined}
|
|
529
|
+
tabindex={pinIndex === tabStopIndex ? 0 : -1}
|
|
360
530
|
class={classes.pin({ side, active })}
|
|
361
531
|
style:top={`${pinStackTopPercent(pinIndex, pins.length)}%`}
|
|
362
532
|
style:transform-origin={side === 'left' ? 'left center' : 'right center'}
|
|
363
|
-
aria-label={
|
|
533
|
+
aria-label={pinLabels[pinIndex]}
|
|
364
534
|
aria-current={active ? 'location' : undefined}
|
|
365
535
|
animate:flip={{ duration: pinFlipDuration, easing: quintOut }}
|
|
366
536
|
transition:scale={{
|
|
@@ -369,7 +539,7 @@
|
|
|
369
539
|
easing: quintOut
|
|
370
540
|
}}
|
|
371
541
|
onfocus={(event) => handlePinFocus(event, tocPin.entry, pinIndex)}
|
|
372
|
-
onclick={() =>
|
|
542
|
+
onclick={() => handlePinClick(tocPin.entry, pinIndex, tocPin.key)}
|
|
373
543
|
>
|
|
374
544
|
{#if pin}
|
|
375
545
|
<Slot render={pin} payload={{ entry: tocPin.entry, active }} />
|
|
@@ -9,19 +9,35 @@
|
|
|
9
9
|
AIThreadTocProps
|
|
10
10
|
} from './aiThreadToc.props.js';
|
|
11
11
|
import { useAIThreadTocTheme } from './aiThreadToc.theme.js';
|
|
12
|
+
import { useI18n } from '../../i18n/context.svelte.js';
|
|
12
13
|
|
|
13
14
|
type Props = Pick<
|
|
14
15
|
AIThreadTocProps<TMessage>,
|
|
15
16
|
'preview' | 'title' | 'excerpt' | 'metadata' | 'icon' | 'theme'
|
|
16
17
|
> & {
|
|
17
18
|
entry: AIThreadTocEntry<TMessage>;
|
|
19
|
+
/** 1-based position of the entry among the thread's user turns; 0 hides it. */
|
|
20
|
+
turn?: number;
|
|
21
|
+
total?: number;
|
|
18
22
|
};
|
|
19
23
|
|
|
20
24
|
type PreviewFile = {
|
|
21
25
|
file: AIFileSource;
|
|
22
26
|
};
|
|
23
27
|
|
|
24
|
-
let {
|
|
28
|
+
let {
|
|
29
|
+
entry,
|
|
30
|
+
turn = 0,
|
|
31
|
+
total = 0,
|
|
32
|
+
preview,
|
|
33
|
+
title,
|
|
34
|
+
excerpt,
|
|
35
|
+
metadata,
|
|
36
|
+
icon,
|
|
37
|
+
theme
|
|
38
|
+
}: Props = $props();
|
|
39
|
+
|
|
40
|
+
const t = $derived(useI18n());
|
|
25
41
|
|
|
26
42
|
const classes = $derived(useAIThreadTocTheme(theme));
|
|
27
43
|
const files = $derived(previewFiles(entry));
|
|
@@ -55,6 +71,11 @@
|
|
|
55
71
|
<div data-slot="ai-thread-toc-preview-title" class={classes.previewTitle()}>
|
|
56
72
|
<Slot render={title ?? entry.title} payload={entry} />
|
|
57
73
|
</div>
|
|
74
|
+
{#if turn > 0 && total > 0}
|
|
75
|
+
<div data-slot="ai-thread-toc-preview-turn" class={classes.previewTurn()}>
|
|
76
|
+
{t.aiThreadTocTurn(turn, total)}
|
|
77
|
+
</div>
|
|
78
|
+
{/if}
|
|
58
79
|
{#if metadata}
|
|
59
80
|
<div data-slot="ai-thread-toc-preview-metadata" class={classes.previewMetadata()}>
|
|
60
81
|
<Slot render={metadata} payload={entry} />
|
|
@@ -79,7 +100,9 @@
|
|
|
79
100
|
</div>
|
|
80
101
|
{/each}
|
|
81
102
|
{#if entry.fileCount > files.length}
|
|
82
|
-
<div class={classes.previewMetadata()}
|
|
103
|
+
<div class={classes.previewMetadata()}>
|
|
104
|
+
{t.aiThreadTocMoreFiles(entry.fileCount - files.length)}
|
|
105
|
+
</div>
|
|
83
106
|
{/if}
|
|
84
107
|
</div>
|
|
85
108
|
{/if}
|
|
@@ -2,6 +2,9 @@ import type { AIThreadItem, AIThreadTocEntry, AIThreadTocProps } from './aiThrea
|
|
|
2
2
|
declare function $$render<TMessage extends AIThreadItem = AIThreadItem>(): {
|
|
3
3
|
props: Pick<AIThreadTocProps<TMessage>, "theme" | "title" | "metadata" | "icon" | "preview" | "excerpt"> & {
|
|
4
4
|
entry: AIThreadTocEntry<TMessage>;
|
|
5
|
+
/** 1-based position of the entry among the thread's user turns; 0 hides it. */
|
|
6
|
+
turn?: number;
|
|
7
|
+
total?: number;
|
|
5
8
|
};
|
|
6
9
|
exports: {};
|
|
7
10
|
bindings: "";
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { AIThreadItem, AIThreadScrollBehavior, AIThreadTocEntry, AIThreadTocPin, AIThreadTocState } from '../AIThread/aiThread.props.js';
|
|
2
2
|
import type { AIThreadRenderItem } from '../AIThread/threadRenderItems.js';
|
|
3
|
+
import type { Messages } from '../../i18n/en.js';
|
|
4
|
+
type AIThreadTocMessages = Pick<Messages, 'aiThreadTocFiles' | 'aiThreadTocScrollTo'>;
|
|
3
5
|
type BuildAIThreadTocStateOptions = {
|
|
4
6
|
totalSize: number;
|
|
5
7
|
scrollOffset: number;
|
|
@@ -17,7 +19,7 @@ type CompactAIThreadTocOptions = {
|
|
|
17
19
|
};
|
|
18
20
|
export declare function buildAIThreadTocState<TMessage extends AIThreadItem>(items: readonly AIThreadRenderItem<TMessage>[], options: BuildAIThreadTocStateOptions): AIThreadTocState<TMessage>;
|
|
19
21
|
export declare function compactAIThreadTocEntries<TMessage extends AIThreadItem>(entries: readonly AIThreadTocEntry<TMessage>[], options: CompactAIThreadTocOptions): AIThreadTocPin<TMessage>[];
|
|
20
|
-
export declare function getAIThreadTocMetadata(entry: AIThreadTocEntry): string;
|
|
21
|
-
export declare function getAIThreadTocLabel(entry: AIThreadTocEntry): string;
|
|
22
|
+
export declare function getAIThreadTocMetadata(entry: AIThreadTocEntry, t: AIThreadTocMessages): string;
|
|
23
|
+
export declare function getAIThreadTocLabel(entry: AIThreadTocEntry, t: AIThreadTocMessages): string;
|
|
22
24
|
export declare function isAIThreadTocEntryVisible(entry: AIThreadTocEntry, state: AIThreadTocState): boolean;
|
|
23
25
|
export {};
|
|
@@ -62,7 +62,7 @@ export function compactAIThreadTocEntries(entries, options) {
|
|
|
62
62
|
return createPin(entry, entryIndex, !preservedIndexes.has(entryIndex));
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
export function getAIThreadTocMetadata(entry) {
|
|
65
|
+
export function getAIThreadTocMetadata(entry, t) {
|
|
66
66
|
if (entry.fileCount === 0)
|
|
67
67
|
return '';
|
|
68
68
|
const names = [...entry.attachments, ...entry.files]
|
|
@@ -72,12 +72,12 @@ export function getAIThreadTocMetadata(entry) {
|
|
|
72
72
|
const hiddenCount = Math.max(0, names.length - shownNames.length);
|
|
73
73
|
const namesLabel = shownNames.length > 0 ? ` - ${shownNames.join(', ')}` : '';
|
|
74
74
|
const hiddenLabel = hiddenCount > 0 ? ` +${hiddenCount}` : '';
|
|
75
|
-
return truncate(`${
|
|
75
|
+
return truncate(`${t.aiThreadTocFiles(entry.fileCount)}${namesLabel}${hiddenLabel}`, TOC_METADATA_LABEL_MAX_LENGTH);
|
|
76
76
|
}
|
|
77
|
-
export function getAIThreadTocLabel(entry) {
|
|
78
|
-
const metadata = getAIThreadTocMetadata(entry);
|
|
77
|
+
export function getAIThreadTocLabel(entry, t) {
|
|
78
|
+
const metadata = getAIThreadTocMetadata(entry, t);
|
|
79
79
|
return truncate([
|
|
80
|
-
|
|
80
|
+
t.aiThreadTocScrollTo(truncate(entry.title, TOC_TITLE_MAX_LENGTH)),
|
|
81
81
|
truncate(entry.excerpt, TOC_ARIA_EXCERPT_MAX_LENGTH),
|
|
82
82
|
metadata
|
|
83
83
|
]
|
|
@@ -136,7 +136,19 @@ function buildEntries(items, options) {
|
|
|
136
136
|
}
|
|
137
137
|
return entries;
|
|
138
138
|
}
|
|
139
|
+
// The TOC is rebuilt on every scroll (its active entry follows the viewport), and normalizing every
|
|
140
|
+
// message's text each time made scrolling a long thread drop frames. Messages are replaced, never
|
|
141
|
+
// mutated, so their text is computed once per message object.
|
|
142
|
+
const messageTextCache = new WeakMap();
|
|
139
143
|
function messageText(message, renderedContent) {
|
|
144
|
+
const cached = messageTextCache.get(message);
|
|
145
|
+
if (cached && cached.renderedContent === renderedContent)
|
|
146
|
+
return cached.text;
|
|
147
|
+
const text = computeMessageText(message, renderedContent);
|
|
148
|
+
messageTextCache.set(message, { renderedContent, text });
|
|
149
|
+
return text;
|
|
150
|
+
}
|
|
151
|
+
function computeMessageText(message, renderedContent) {
|
|
140
152
|
const content = normalize(message.content ?? '');
|
|
141
153
|
if (content)
|
|
142
154
|
return content;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const aiThreadTocDescription = "\n# AIThreadToc\n\nStandalone, controlled user-turn navigation for AI transcripts. It renders
|
|
1
|
+
export declare const aiThreadTocDescription = "\n# AIThreadToc\n\nStandalone, controlled user-turn navigation for AI transcripts. It renders magnifying pins (with an optional rail and visible-range marker, `showRange`), and one shared HoverCard preview from an AIThreadTocState.\n\nImport it directly from **entasis/ai-thread-toc**. AIThread composes the same primitive for its default minimap and exposes measured state through its **toc** slot.\n\n## Thread composition\n\n~~~svelte\n<script lang=\"ts\">\n import { AIThread } from '../AIThread/index.ts';\n import { AIThreadToc, type AIThreadTocState } from './index.ts';\n</script>\n\n{#snippet toc(state: AIThreadTocState)}\n <AIThreadToc {state} side=\"left\" previewAlign=\"start\" />\n{/snippet}\n\n<AIThread {messages} showToc {toc} />\n~~~\n\nThe component is controlled: **state.entries** supplies measured user turns, **activeIndex** and visible offsets describe the transcript viewport, and **scrollToIndex** performs navigation. A manually constructed state is also valid.\n\n## Props\n\n- **state**: AIThreadTocState - Required controlled navigation state.\n- **maxPins**: number - Maximum pins before spatial compaction. Default 96.\n- **showRange**: boolean - Draws a rail beside the pins with a bar marking the part of the thread on screen. Default false (AIThread: `tocShowRange`).\n- **scrollAreaLabel**: string - Accessible label for the nested scrollable pin region.\n- **side**: 'left' | 'right' - Rail alignment and pin transform origin. Default 'left'.\n- **previewSide**: 'left' | 'right' - Preview side; defaults away from the rail.\n- **previewAlign**: 'start' | 'center' | 'end' - Preview alignment. Default 'center'.\n- **minContainerWidth**: number - Container width in pixels below which the rail removes itself (hidden, no pins). The container is the nearest ancestor wider than the rail, usually the thread. Default 480; 0 keeps it at every width.\n- **pin**: Slot<{ entry, active }> - Replaces each pin indicator.\n- **preview**: Slot<AIThreadTocEntry> - Replaces the complete shared HoverCard preview.\n- **title**, **excerpt**, **metadata**, **icon**: Slot<AIThreadTocEntry> - Compose the default preview.\n- **ref**, **class**, **theme**, native nav attributes, and Svelte attachments.\n\nThe root is bounded to 80% of its containing height. Pins live in the shared ScrollArea; native and custom scrollbars are hidden, while wheel, touch, and keyboard scrolling remain available. Give a standalone TOC a parent with an explicit height.\n\n## State and entries\n\nAIThreadTocEntry includes the source user message, prompt title, latest assistant excerpt, measured offset and size, files, attachments, and file count. AIThreadTocState includes entries, total range, active entry, visible offsets, **scrollToIndex**, and **scrollToOffset**.\n\nThe default preview clamps the prompt to one line, shows \"Turn N of M\", clamps the assistant response to four lines, and renders attachments as quiet inline labels.\n\n## Interaction\n\n- With `showRange`, the rail and the visible-range bar are painted; the active turn's pin is longer and fully opaque, pins in view are lighter, the rest faint.\n- Keyboard: the rail is one tab stop, and Tab into it lands on the active turn's pin. ArrowUp/ArrowDown (and Left/Right), Home and End move between pins; Enter or Space navigates.\n- Pointer: hovering magnifies nearby pins and previews the one under the pointer; clicking navigates.\n- Touch: the first tap on a pin previews it, a second tap on the same pin navigates, and a tap outside closes the preview.\n- Pin transitions run only while the stack is pointed at or focused; scrolling the thread does not restyle the pins.\n\n## Theme\n\nTheme parts are **root**, **scrollArea**, **scrollContent**, **track**, **pinArea**, **rail**, **viewport**, **pin**, **pinIndicator** (`active` variant), **previewAnchor**, **preview**, **previewHeader**, **previewIcon**, **previewTitle**, **previewTurn**, **previewExcerpt**, **previewMetadata**, and **previewFiles**.\n";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const aiThreadTocDescription = `
|
|
2
2
|
# AIThreadToc
|
|
3
3
|
|
|
4
|
-
Standalone, controlled user-turn navigation for AI transcripts. It renders
|
|
4
|
+
Standalone, controlled user-turn navigation for AI transcripts. It renders magnifying pins (with an optional rail and visible-range marker, \`showRange\`), and one shared HoverCard preview from an AIThreadTocState.
|
|
5
5
|
|
|
6
6
|
Import it directly from **entasis/ai-thread-toc**. AIThread composes the same primitive for its default minimap and exposes measured state through its **toc** slot.
|
|
7
7
|
|
|
@@ -26,10 +26,12 @@ The component is controlled: **state.entries** supplies measured user turns, **a
|
|
|
26
26
|
|
|
27
27
|
- **state**: AIThreadTocState - Required controlled navigation state.
|
|
28
28
|
- **maxPins**: number - Maximum pins before spatial compaction. Default 96.
|
|
29
|
+
- **showRange**: boolean - Draws a rail beside the pins with a bar marking the part of the thread on screen. Default false (AIThread: \`tocShowRange\`).
|
|
29
30
|
- **scrollAreaLabel**: string - Accessible label for the nested scrollable pin region.
|
|
30
31
|
- **side**: 'left' | 'right' - Rail alignment and pin transform origin. Default 'left'.
|
|
31
32
|
- **previewSide**: 'left' | 'right' - Preview side; defaults away from the rail.
|
|
32
33
|
- **previewAlign**: 'start' | 'center' | 'end' - Preview alignment. Default 'center'.
|
|
34
|
+
- **minContainerWidth**: number - Container width in pixels below which the rail removes itself (hidden, no pins). The container is the nearest ancestor wider than the rail, usually the thread. Default 480; 0 keeps it at every width.
|
|
33
35
|
- **pin**: Slot<{ entry, active }> - Replaces each pin indicator.
|
|
34
36
|
- **preview**: Slot<AIThreadTocEntry> - Replaces the complete shared HoverCard preview.
|
|
35
37
|
- **title**, **excerpt**, **metadata**, **icon**: Slot<AIThreadTocEntry> - Compose the default preview.
|
|
@@ -41,9 +43,17 @@ The root is bounded to 80% of its containing height. Pins live in the shared Scr
|
|
|
41
43
|
|
|
42
44
|
AIThreadTocEntry includes the source user message, prompt title, latest assistant excerpt, measured offset and size, files, attachments, and file count. AIThreadTocState includes entries, total range, active entry, visible offsets, **scrollToIndex**, and **scrollToOffset**.
|
|
43
45
|
|
|
44
|
-
The default preview clamps the prompt to one line, clamps the assistant response to four lines, and renders attachments as quiet inline labels.
|
|
46
|
+
The default preview clamps the prompt to one line, shows "Turn N of M", clamps the assistant response to four lines, and renders attachments as quiet inline labels.
|
|
47
|
+
|
|
48
|
+
## Interaction
|
|
49
|
+
|
|
50
|
+
- With \`showRange\`, the rail and the visible-range bar are painted; the active turn's pin is longer and fully opaque, pins in view are lighter, the rest faint.
|
|
51
|
+
- Keyboard: the rail is one tab stop, and Tab into it lands on the active turn's pin. ArrowUp/ArrowDown (and Left/Right), Home and End move between pins; Enter or Space navigates.
|
|
52
|
+
- Pointer: hovering magnifies nearby pins and previews the one under the pointer; clicking navigates.
|
|
53
|
+
- Touch: the first tap on a pin previews it, a second tap on the same pin navigates, and a tap outside closes the preview.
|
|
54
|
+
- Pin transitions run only while the stack is pointed at or focused; scrolling the thread does not restyle the pins.
|
|
45
55
|
|
|
46
56
|
## Theme
|
|
47
57
|
|
|
48
|
-
Theme parts are **root**, **scrollArea**, **scrollContent**, **track**, **pinArea**, **rail**, **viewport**, **pin**, **pinIndicator
|
|
58
|
+
Theme parts are **root**, **scrollArea**, **scrollContent**, **track**, **pinArea**, **rail**, **viewport**, **pin**, **pinIndicator** (\`active\` variant), **previewAnchor**, **preview**, **previewHeader**, **previewIcon**, **previewTitle**, **previewTurn**, **previewExcerpt**, **previewMetadata**, and **previewFiles**.
|
|
49
59
|
`;
|
|
@@ -12,6 +12,11 @@ export type AIThreadTocProps<TMessage extends AIThreadItem = AIThreadItem> = Wit
|
|
|
12
12
|
state: AIThreadTocState<TMessage>;
|
|
13
13
|
/** Maximum visible navigation pins before entries are compacted. */
|
|
14
14
|
maxPins?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Draws a rail beside the pins with a bar marking the part of the thread on screen.
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
showRange?: boolean;
|
|
15
20
|
/** Accessible label for the nested scrollable pin region. */
|
|
16
21
|
scrollAreaLabel?: string;
|
|
17
22
|
/** Side occupied by the navigation rail. @default 'left' */
|
|
@@ -20,6 +25,12 @@ export type AIThreadTocProps<TMessage extends AIThreadItem = AIThreadItem> = Wit
|
|
|
20
25
|
previewSide?: AIThreadTocPreviewSide;
|
|
21
26
|
/** Alignment of previews relative to their navigation pins. */
|
|
22
27
|
previewAlign?: AIThreadTocPreviewAlign;
|
|
28
|
+
/**
|
|
29
|
+
* Container width in pixels below which the rail removes itself. The container is the
|
|
30
|
+
* nearest ancestor wider than the rail, usually the thread. `0` keeps it at every width.
|
|
31
|
+
* @default 480
|
|
32
|
+
*/
|
|
33
|
+
minContainerWidth?: number;
|
|
23
34
|
/** Replaces the visual indicator for each navigation pin. */
|
|
24
35
|
pin?: Slot<AIThreadTocPinPayload<TMessage>>;
|
|
25
36
|
/** Replaces the complete preview for a user turn. */
|
|
@@ -40,6 +40,7 @@ export declare const aiThreadTocTheme: {
|
|
|
40
40
|
previewTitle: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
41
41
|
previewExcerpt: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
42
42
|
previewMetadata: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
43
|
+
previewTurn: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
43
44
|
previewFiles: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
44
45
|
};
|
|
45
46
|
export type AIThreadTocTheme = typeof aiThreadTocTheme;
|
|
@@ -85,6 +86,7 @@ export declare const setAIThreadTocTheme: (theme: InferComponentTheme<{
|
|
|
85
86
|
previewTitle: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
86
87
|
previewExcerpt: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
87
88
|
previewMetadata: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
89
|
+
previewTurn: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
88
90
|
previewFiles: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
89
91
|
}>) => void;
|
|
90
92
|
export declare const useAIThreadTocTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
|
|
@@ -128,5 +130,6 @@ export declare const useAIThreadTocTheme: import("../../utils/cva/theme.js").Use
|
|
|
128
130
|
previewTitle: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
129
131
|
previewExcerpt: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
130
132
|
previewMetadata: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
133
|
+
previewTurn: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
131
134
|
previewFiles: (props?: import("../../utils/cva/types.js").CVAClassProp | undefined) => string;
|
|
132
135
|
}>;
|