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
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { useNavigation } from '../../utils/useNavigation.svelte.js';
|
|
3
3
|
import Button from '../Button/Button.svelte';
|
|
4
|
-
import { checkIcon } from '../Icons/check.js';
|
|
5
4
|
import { dotsThreeIcon } from '../Icons/dotsThree.js';
|
|
6
5
|
import type { MenuItem } from '../Menu/index.js';
|
|
7
6
|
import PopupMenu from '../PopupMenu/PopupMenu.svelte';
|
|
@@ -17,7 +16,6 @@
|
|
|
17
16
|
ToggleMenuItem,
|
|
18
17
|
ToggleMenuMenuItem,
|
|
19
18
|
ToggleMenuProps,
|
|
20
|
-
ToggleMenuRadioGroupButton,
|
|
21
19
|
ToggleMenuRadioGroupItem,
|
|
22
20
|
ToggleMenuToggleItem
|
|
23
21
|
} from './toggleMenu.props.js';
|
|
@@ -40,10 +38,14 @@
|
|
|
40
38
|
const t = $derived(useI18n());
|
|
41
39
|
|
|
42
40
|
const classes = $derived(useToggleMenuTheme(theme));
|
|
41
|
+
// A disabled item stays in the arrow-key order and can hold the tab stop (the APG toolbar
|
|
42
|
+
// pattern), so a fully disabled toolbar keeps one tab stop and a screen reader can reach what
|
|
43
|
+
// is unavailable. Items refuse activation themselves.
|
|
43
44
|
const navigation = useNavigation({
|
|
44
45
|
orientation: 'horizontal',
|
|
45
46
|
loop: true,
|
|
46
|
-
enableHoverFocus: false
|
|
47
|
+
enableHoverFocus: false,
|
|
48
|
+
skipDisabled: false
|
|
47
49
|
});
|
|
48
50
|
const overflow = useToggleMenuOverflow();
|
|
49
51
|
|
|
@@ -119,7 +121,11 @@
|
|
|
119
121
|
};
|
|
120
122
|
}
|
|
121
123
|
|
|
122
|
-
function
|
|
124
|
+
function overflowLabel(button: ToggleMenuGroupButton | ToggleMenuToggleItem) {
|
|
125
|
+
return typeof button.children === 'string' ? button.children : button.label;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function createOverflowCheckbox(
|
|
123
129
|
itemIndex: number,
|
|
124
130
|
button: ToggleMenuGroupButton | ToggleMenuToggleItem,
|
|
125
131
|
checked: boolean,
|
|
@@ -127,54 +133,56 @@
|
|
|
127
133
|
groupButtonValue?: string
|
|
128
134
|
): MenuItem {
|
|
129
135
|
return {
|
|
130
|
-
type: '
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
},
|
|
136
|
+
type: 'checkbox',
|
|
137
|
+
key:
|
|
138
|
+
groupButtonValue === undefined
|
|
139
|
+
? `toggle-${itemIndex}`
|
|
140
|
+
: `group-${itemIndex}-${groupButtonValue}`,
|
|
141
|
+
attrs: { 'aria-label': overflowLabel(button) },
|
|
136
142
|
children: button.children ?? button.label,
|
|
137
143
|
prefix: button.prefix,
|
|
138
|
-
suffix: checked ? checkIcon : undefined,
|
|
139
144
|
size: group?.size ?? size,
|
|
140
145
|
color: group?.color ?? color,
|
|
141
146
|
disabled: disabled || !!group?.disabled || !!button.disabled,
|
|
142
|
-
|
|
147
|
+
value: checked,
|
|
148
|
+
onValueChange: (next) => {
|
|
143
149
|
if (group && groupButtonValue !== undefined) {
|
|
144
|
-
updateGroup(itemIndex, group, groupButtonValue,
|
|
150
|
+
updateGroup(itemIndex, group, groupButtonValue, next);
|
|
145
151
|
return;
|
|
146
152
|
}
|
|
147
153
|
const item = items[itemIndex];
|
|
148
|
-
if (item?.type === 'toggle') updateToggle(itemIndex, item,
|
|
154
|
+
if (item?.type === 'toggle') updateToggle(itemIndex, item, next);
|
|
149
155
|
}
|
|
150
156
|
};
|
|
151
157
|
}
|
|
152
158
|
|
|
153
|
-
function
|
|
154
|
-
itemIndex: number,
|
|
155
|
-
group: ToggleMenuRadioGroupItem,
|
|
156
|
-
button: ToggleMenuRadioGroupButton
|
|
157
|
-
): MenuItem {
|
|
158
|
-
const checked = (group.value ?? group.defaultValue) === button.value;
|
|
159
|
+
function createOverflowRadioGroup(itemIndex: number, group: ToggleMenuRadioGroupItem): MenuItem {
|
|
159
160
|
return {
|
|
160
|
-
type: '
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
161
|
+
type: 'radio-group',
|
|
162
|
+
key: `radio-${itemIndex}`,
|
|
163
|
+
label: group.label,
|
|
164
|
+
value: group.value ?? group.defaultValue ?? '',
|
|
165
|
+
onValueChange: (next) => updateRadioGroup(itemIndex, next),
|
|
166
|
+
disabled: disabled || !!group.disabled,
|
|
167
|
+
items: group.items.map((button) => ({
|
|
168
|
+
value: button.value,
|
|
169
|
+
attrs: { 'aria-label': overflowLabel(button) },
|
|
170
|
+
children: button.children ?? button.label,
|
|
171
|
+
prefix: button.prefix,
|
|
172
|
+
size: group.size ?? size,
|
|
173
|
+
color: group.color ?? color,
|
|
174
|
+
disabled: disabled || !!group.disabled || !!button.disabled
|
|
175
|
+
}))
|
|
173
176
|
};
|
|
174
177
|
}
|
|
175
178
|
|
|
179
|
+
// Overflowed toolbar items become one menu. Single entries (a toggle, a menu, one custom item)
|
|
180
|
+
// sit together like any menu rows; a separator only sets apart a multi-option unit (a button
|
|
181
|
+
// group, a radio group, several custom entries), as a toolbar's grouping does.
|
|
182
|
+
// The menu takes the toolbar's size, which also sets its rows' height (and its submenus').
|
|
176
183
|
const overflowMenuItems = $derived.by(() => {
|
|
177
184
|
const menuItems: MenuItem[] = [];
|
|
185
|
+
let previousIsSet = false;
|
|
178
186
|
|
|
179
187
|
items.slice(overflow.visibleCount).forEach((item, overflowIndex) => {
|
|
180
188
|
const itemIndex = overflow.visibleCount + overflowIndex;
|
|
@@ -182,25 +190,26 @@
|
|
|
182
190
|
|
|
183
191
|
if (item.type === 'toggle') {
|
|
184
192
|
unitItems.push(
|
|
185
|
-
|
|
193
|
+
createOverflowCheckbox(itemIndex, item, item.value ?? item.defaultValue ?? false)
|
|
186
194
|
);
|
|
187
195
|
} else if (item.type === 'group') {
|
|
188
196
|
const pressed = getGroupValue(item);
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
197
|
+
unitItems.push({
|
|
198
|
+
type: 'group',
|
|
199
|
+
key: `group-${itemIndex}`,
|
|
200
|
+
label: item.label,
|
|
201
|
+
items: item.items.map((button) =>
|
|
202
|
+
createOverflowCheckbox(
|
|
192
203
|
itemIndex,
|
|
193
204
|
button,
|
|
194
205
|
pressed.includes(button.value),
|
|
195
206
|
item,
|
|
196
207
|
button.value
|
|
197
208
|
)
|
|
198
|
-
)
|
|
209
|
+
)
|
|
199
210
|
});
|
|
200
211
|
} else if (item.type === 'radio-group') {
|
|
201
|
-
|
|
202
|
-
unitItems.push(createOverflowRadioOption(itemIndex, item, button));
|
|
203
|
-
});
|
|
212
|
+
unitItems.push(createOverflowRadioGroup(itemIndex, item));
|
|
204
213
|
} else if (item.type === 'menu') {
|
|
205
214
|
unitItems.push(createOverflowMenu(item));
|
|
206
215
|
} else {
|
|
@@ -208,8 +217,10 @@
|
|
|
208
217
|
}
|
|
209
218
|
|
|
210
219
|
if (unitItems.length === 0) return;
|
|
211
|
-
|
|
220
|
+
const isSet = item.type === 'group' || item.type === 'radio-group' || unitItems.length > 1;
|
|
221
|
+
if (menuItems.length > 0 && (isSet || previousIsSet)) menuItems.push({ type: 'separator' });
|
|
212
222
|
menuItems.push(...unitItems);
|
|
223
|
+
previousIsSet = isSet;
|
|
213
224
|
});
|
|
214
225
|
|
|
215
226
|
return menuItems;
|
|
@@ -307,6 +318,7 @@
|
|
|
307
318
|
color={item.color ?? color}
|
|
308
319
|
variant={item.variant ?? variant}
|
|
309
320
|
disabled={disabled || !!item.disabled}
|
|
321
|
+
focusableWhenDisabled
|
|
310
322
|
value={item.value ?? item.defaultValue ?? false}
|
|
311
323
|
onValueChange={(checked) => updateToggle(index, item, checked)}
|
|
312
324
|
{@attach overflowed ? undefined : navigation.itemReference}
|
|
@@ -327,7 +339,8 @@
|
|
|
327
339
|
{@attach overflow.moreReference}
|
|
328
340
|
>
|
|
329
341
|
<PopupMenu
|
|
330
|
-
|
|
342
|
+
{size}
|
|
343
|
+
menu={{ items: overflowMenuItems, size }}
|
|
331
344
|
closeOnItemClick={false}
|
|
332
345
|
position="bottom-end"
|
|
333
346
|
fitTrigger={false}
|
|
@@ -338,6 +351,7 @@
|
|
|
338
351
|
color="neutral"
|
|
339
352
|
{size}
|
|
340
353
|
{disabled}
|
|
354
|
+
focusableWhenDisabled
|
|
341
355
|
squared
|
|
342
356
|
label={t.moreTools}
|
|
343
357
|
prefix={dotsThreeIcon}
|
|
@@ -61,6 +61,7 @@
|
|
|
61
61
|
color={item.color ?? color}
|
|
62
62
|
variant={item.variant ?? variant}
|
|
63
63
|
disabled={disabled || !!item.disabled || !!button.disabled}
|
|
64
|
+
focusableWhenDisabled
|
|
64
65
|
value={pressed.includes(button.value)}
|
|
65
66
|
onValueChange={(checked) => onToggle({ value: button.value, checked })}
|
|
66
67
|
{@attach overflowed ? undefined : buttonReference}
|
|
@@ -56,7 +56,8 @@
|
|
|
56
56
|
>
|
|
57
57
|
<PopupMenu
|
|
58
58
|
bind:open
|
|
59
|
-
|
|
59
|
+
size={resolvedSize}
|
|
60
|
+
menu={{ items: menuItems, size: resolvedSize }}
|
|
60
61
|
closeOnItemClick={item.closeOnItemClick ?? true}
|
|
61
62
|
position="bottom"
|
|
62
63
|
fitTrigger={false}
|
|
@@ -69,7 +70,8 @@
|
|
|
69
70
|
aria-expanded={popover.isOpen}
|
|
70
71
|
data-color={resolvedColor}
|
|
71
72
|
data-checked="false"
|
|
72
|
-
disabled={isDisabled}
|
|
73
|
+
aria-disabled={isDisabled || undefined}
|
|
74
|
+
data-disabled={isDisabled || undefined}
|
|
73
75
|
class={classes.root({
|
|
74
76
|
color: resolvedColor,
|
|
75
77
|
checked: false,
|
|
@@ -77,6 +79,7 @@
|
|
|
77
79
|
variant: resolvedVariant,
|
|
78
80
|
size: resolvedSize,
|
|
79
81
|
disabled: isDisabled,
|
|
82
|
+
focusable: true,
|
|
80
83
|
className: item.class
|
|
81
84
|
})}
|
|
82
85
|
{@attach overflowed ? undefined : buttonReference}
|
|
@@ -84,7 +87,10 @@
|
|
|
84
87
|
{@attach !item.children && item.label && !popover.isOpen && !overflowed
|
|
85
88
|
? tooltip({ content: item.label, delay: 350 })
|
|
86
89
|
: undefined}
|
|
87
|
-
onclick={() =>
|
|
90
|
+
onclick={() => {
|
|
91
|
+
// Disabled but focusable: it stays in the toolbar's arrow-key order and refuses to open.
|
|
92
|
+
if (!isDisabled) popover.toggle();
|
|
93
|
+
}}
|
|
88
94
|
>
|
|
89
95
|
<Slot render={item.prefix} class={classes.prefix({ size: resolvedSize, checked: false })} />
|
|
90
96
|
<Slot render={item.children} />
|
|
@@ -69,7 +69,8 @@
|
|
|
69
69
|
aria-checked={isChecked}
|
|
70
70
|
data-color={resolvedColor}
|
|
71
71
|
data-checked={isChecked}
|
|
72
|
-
disabled={isDisabled}
|
|
72
|
+
aria-disabled={isDisabled || undefined}
|
|
73
|
+
data-disabled={isDisabled || undefined}
|
|
73
74
|
class={buttonClasses.root({
|
|
74
75
|
color: resolvedColor,
|
|
75
76
|
checked: isChecked,
|
|
@@ -77,9 +78,13 @@
|
|
|
77
78
|
variant: resolvedVariant,
|
|
78
79
|
size: resolvedSize,
|
|
79
80
|
disabled: isDisabled,
|
|
81
|
+
focusable: true,
|
|
80
82
|
className: button.class
|
|
81
83
|
})}
|
|
82
|
-
onclick={() =>
|
|
84
|
+
onclick={() => {
|
|
85
|
+
// Disabled but focusable: it stays in the toolbar's arrow-key order and refuses a choice.
|
|
86
|
+
if (!isDisabled) onValueChange(button.value);
|
|
87
|
+
}}
|
|
83
88
|
{@attach overflowed ? undefined : buttonReference}
|
|
84
89
|
{@attach !button.children && button.label && !overflowed
|
|
85
90
|
? tooltip({ content: button.label, delay: 350 })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const toggleMenuDescription = "\n# ToggleMenu Component\n\nToggleMenu renders standalone toggles, independent toggle groups, exclusive radio groups, menu buttons, and custom snippet controls as one accessible, responsive toolbar.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\timport { ToggleMenu, type ToggleMenuItem } from 'entasis/toggle-menu';\n\timport type { MenuItem } from 'entasis/menu';\n\timport { eyeIcon } from 'entasis/icons/eye';\n\timport { textBIcon } from 'entasis/icons/textB';\n\timport { textItalicIcon } from 'entasis/icons/textItalic';\n\timport { paletteIcon } from 'entasis/icons/palette';\n\n\tconst getTextColorOptions = (): MenuItem[] => [\n\t\t{ type: 'option', title: 'Red', color: 'danger' },\n\t\t{ type: 'option', title: 'Blue', color: 'info' }\n\t];\n\n\tlet items = $state<ToggleMenuItem[]>([\n\t\t{ type: 'toggle', prefix: eyeIcon, label: 'Preview', value: true },\n\t\t{\n\t\t\ttype: 'group',\n\t\t\tlabel: 'Text formatting',\n\t\t\tvalue: ['bold'],\n\t\t\titems: [\n\t\t\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\ttype: 'menu',\n\t\t\tlabel: 'Text color',\n\t\t\tprefix: paletteIcon,\n\t\t\tmenu: getTextColorOptions\n\t\t}\n\t]);\n</script>\n\n<ToggleMenu bind:items label=\"Editor tools\" />\n```\n\n## Item Types\n\n- **toggle**: A standalone ToggleButton configuration with `type: 'toggle'`. Its boolean `value` stores the pressed state.\n- **group**: A labeled collection of independent toggles. Its `items` is an array of button configurations, each with its own `value` string, and the group `value` is the `string[]` of pressed values.\n- **radio-group**: A labeled collection of mutually exclusive toolbar choices. Its `items` is an array of radio configurations, each with its own `value` string, and the group `value` is the checked string.\n- **menu**: A toolbar menu button. Its `menu` is a `MenuItem[]` or reactive factory and automatically becomes a submenu inside More.\n- **custom**: A snippet control with `type: 'custom'`. Its `children` snippet receives the resolved toolbar state and a `reference` attachment for the primary focusable element. `overflowItems` is required so the control has an explicit representation inside More.\n\nGroups are joined by default. Set `joined: false` when their buttons should remain visually separate.\n\n## Props\n\n- **items**: ToggleMenuItem[] (required, bindable) - Ordered toggles, groups, menu buttons, and custom controls. Pressed state lives on the items, so bind them to keep it.\n- **label**: string (required) - Accessible name for the toolbar.\n- **size**: 'small' | 'normal' | 'large' - Default size inherited by items.\n- **color**: Colors - Default color inherited by items.\n- **variant**: 'outline' | 'ghost' - Default variant inherited by items.\n- **disabled**: boolean - Disables every item.\n- **onItemsChange**: (items) => void - Called once with the complete updated item list.\n- **class**: string - Additional classes for the toolbar root.\n- **theme**: ToggleMenuThemeProps - Theme overrides for root, rail, units, and overflow trigger.\n\nItem-level size, color, variant, and disabled values override toolbar defaults. Toggle, group, and radio-group callbacks receive their native checked boolean, pressed-value array, or selected value.\n\n## Menu Buttons\n\nA `menu` item renders a normal button with menu-button ARIA state and inherited toolbar styling. Pass a function when checked rows or other menu state must be recalculated reactively. `closeOnItemClick` defaults to `true`. ToggleMenu owns the PopupMenu attachments, tooltip, and overflow submenu representation.\n\n## Custom Controls\n\n`ToggleMenuCustomPayload` contains:\n\n- **reference**: Attachment for the custom control's primary focusable element. Applying it includes the control in roving keyboard navigation.\n- **size**, **color**, **variant**, **disabled**: Resolved toolbar or item values.\n- **overflowed**: Whether the logical unit currently lives in More.\n\n`overflowItems` accepts either a `MenuItem[]` or a function returning one. Use the function form when the overflow representation depends on reactive state. Popup triggers should attach both the toolbar `reference` and their own popover reference to the same button.\n\n## Overflow\n\nToggleMenu stays on one row. When complete logical units no longer fit, it moves them into a More popup rather than wrapping or splitting a group.
|
|
1
|
+
export declare const toggleMenuDescription = "\n# ToggleMenu Component\n\nToggleMenu renders standalone toggles, independent toggle groups, exclusive radio groups, menu buttons, and custom snippet controls as one accessible, responsive toolbar.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\timport { ToggleMenu, type ToggleMenuItem } from 'entasis/toggle-menu';\n\timport type { MenuItem } from 'entasis/menu';\n\timport { eyeIcon } from 'entasis/icons/eye';\n\timport { textBIcon } from 'entasis/icons/textB';\n\timport { textItalicIcon } from 'entasis/icons/textItalic';\n\timport { paletteIcon } from 'entasis/icons/palette';\n\n\tconst getTextColorOptions = (): MenuItem[] => [\n\t\t{ type: 'option', title: 'Red', color: 'danger' },\n\t\t{ type: 'option', title: 'Blue', color: 'info' }\n\t];\n\n\tlet items = $state<ToggleMenuItem[]>([\n\t\t{ type: 'toggle', prefix: eyeIcon, label: 'Preview', value: true },\n\t\t{\n\t\t\ttype: 'group',\n\t\t\tlabel: 'Text formatting',\n\t\t\tvalue: ['bold'],\n\t\t\titems: [\n\t\t\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\ttype: 'menu',\n\t\t\tlabel: 'Text color',\n\t\t\tprefix: paletteIcon,\n\t\t\tmenu: getTextColorOptions\n\t\t}\n\t]);\n</script>\n\n<ToggleMenu bind:items label=\"Editor tools\" />\n```\n\n## Item Types\n\n- **toggle**: A standalone ToggleButton configuration with `type: 'toggle'`. Its boolean `value` stores the pressed state.\n- **group**: A labeled collection of independent toggles. Its `items` is an array of button configurations, each with its own `value` string, and the group `value` is the `string[]` of pressed values.\n- **radio-group**: A labeled collection of mutually exclusive toolbar choices. Its `items` is an array of radio configurations, each with its own `value` string, and the group `value` is the checked string.\n- **menu**: A toolbar menu button. Its `menu` is a `MenuItem[]` or reactive factory and automatically becomes a submenu inside More.\n- **custom**: A snippet control with `type: 'custom'`. Its `children` snippet receives the resolved toolbar state and a `reference` attachment for the primary focusable element. `overflowItems` is required so the control has an explicit representation inside More.\n\nGroups are joined by default. Set `joined: false` when their buttons should remain visually separate.\n\n## Props\n\n- **items**: ToggleMenuItem[] (required, bindable) - Ordered toggles, groups, menu buttons, and custom controls. Pressed state lives on the items, so bind them to keep it.\n- **label**: string (required) - Accessible name for the toolbar.\n- **size**: 'small' | 'normal' | 'large' - Default size inherited by items.\n- **color**: Colors - Default color inherited by items.\n- **variant**: 'outline' | 'ghost' - Default variant inherited by items.\n- **disabled**: boolean - Disables every item.\n- **onItemsChange**: (items) => void - Called once with the complete updated item list.\n- **class**: string - Additional classes for the toolbar root.\n- **theme**: ToggleMenuThemeProps - Theme overrides for root, rail, units, and overflow trigger.\n\nItem-level size, color, variant, and disabled values override toolbar defaults. Toggle, group, and radio-group callbacks receive their native checked boolean, pressed-value array, or selected value.\n\n## Menu Buttons\n\nA `menu` item renders a normal button with menu-button ARIA state and inherited toolbar styling. Pass a function when checked rows or other menu state must be recalculated reactively. `closeOnItemClick` defaults to `true`. ToggleMenu owns the PopupMenu attachments, tooltip, and overflow submenu representation.\n\n## Custom Controls\n\n`ToggleMenuCustomPayload` contains:\n\n- **reference**: Attachment for the custom control's primary focusable element. Applying it includes the control in roving keyboard navigation.\n- **size**, **color**, **variant**, **disabled**: Resolved toolbar or item values.\n- **overflowed**: Whether the logical unit currently lives in More.\n\n`overflowItems` accepts either a `MenuItem[]` or a function returning one. Use the function form when the overflow representation depends on reactive state. Popup triggers should attach both the toolbar `reference` and their own popover reference to the same button.\n\n## Overflow\n\nToggleMenu stays on one row. When complete logical units no longer fit, it moves them into a More popup rather than wrapping or splitting a group. The rows are the Menu's own checkbox items and radio groups: a toggle becomes a `menuitemcheckbox`, the buttons of a group become checkbox rows inside a labelled `role=\"group\"` (the group `label`), and a radio group becomes a labelled radio group of `menuitemradio` rows. All expose `aria-checked`, show an animated check, report once per change through the item's `onValueChange` and remain open while changing state. Menu buttons become submenus from the same menu data. Custom controls contribute their declared `overflowItems` as one logical unit.\n\n## Keyboard And Tooltips\n\n- The toolbar uses one roving tab stop.\n- ArrowLeft and ArrowRight move between visible controls; Home and End move to the edges.\n- Arrow navigation through a radio group does not change its value. Space, Enter, or click selects the focused radio.\n- Disabled controls stay in the arrow-key order and take the tab stop like any other item (the APG toolbar pattern): they announce `aria-disabled` and `data-disabled`, refuse activation, and still receive pointer events, so a tooltip can say why they are unavailable. A fully disabled toolbar therefore keeps exactly one tab stop. Overflowed controls are excluded from navigation; the More button is in it only while something overflows.\n- A text field passed as a custom control keeps its editing keys: Home, End, Space and Enter stay in the field, and ArrowLeft / ArrowRight leave it only when the caret is already at the start or end of its text (mirrored in RTL).\n- Icon-only toggle and menu controls automatically use their `label` as tooltip content. Custom snippets own their tooltip and accessible label.\n- Use `radio-group` for exclusive choices inside ToggleMenu and SegmentedControl for standalone exclusive controls.\n";
|
|
@@ -82,14 +82,15 @@ A \`menu\` item renders a normal button with menu-button ARIA state and inherite
|
|
|
82
82
|
|
|
83
83
|
## Overflow
|
|
84
84
|
|
|
85
|
-
ToggleMenu stays on one row. When complete logical units no longer fit, it moves them into a More popup rather than wrapping or splitting a group.
|
|
85
|
+
ToggleMenu stays on one row. When complete logical units no longer fit, it moves them into a More popup rather than wrapping or splitting a group. The rows are the Menu's own checkbox items and radio groups: a toggle becomes a \`menuitemcheckbox\`, the buttons of a group become checkbox rows inside a labelled \`role="group"\` (the group \`label\`), and a radio group becomes a labelled radio group of \`menuitemradio\` rows. All expose \`aria-checked\`, show an animated check, report once per change through the item's \`onValueChange\` and remain open while changing state. Menu buttons become submenus from the same menu data. Custom controls contribute their declared \`overflowItems\` as one logical unit.
|
|
86
86
|
|
|
87
87
|
## Keyboard And Tooltips
|
|
88
88
|
|
|
89
89
|
- The toolbar uses one roving tab stop.
|
|
90
90
|
- ArrowLeft and ArrowRight move between visible controls; Home and End move to the edges.
|
|
91
91
|
- Arrow navigation through a radio group does not change its value. Space, Enter, or click selects the focused radio.
|
|
92
|
-
- Disabled and
|
|
92
|
+
- Disabled controls stay in the arrow-key order and take the tab stop like any other item (the APG toolbar pattern): they announce \`aria-disabled\` and \`data-disabled\`, refuse activation, and still receive pointer events, so a tooltip can say why they are unavailable. A fully disabled toolbar therefore keeps exactly one tab stop. Overflowed controls are excluded from navigation; the More button is in it only while something overflows.
|
|
93
|
+
- A text field passed as a custom control keeps its editing keys: Home, End, Space and Enter stay in the field, and ArrowLeft / ArrowRight leave it only when the caret is already at the start or end of its text (mirrored in RTL).
|
|
93
94
|
- Icon-only toggle and menu controls automatically use their \`label\` as tooltip content. Custom snippets own their tooltip and accessible label.
|
|
94
95
|
- Use \`radio-group\` for exclusive choices inside ToggleMenu and SegmentedControl for standalone exclusive controls.
|
|
95
96
|
`;
|
|
@@ -103,7 +103,10 @@ export type ToggleMenuProps = WithAttachments<{
|
|
|
103
103
|
color?: Colors;
|
|
104
104
|
/** Default visual variant inherited by every item. */
|
|
105
105
|
variant?: ToggleButtonVariant;
|
|
106
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* When true, disables every item in the menu. Disabled items stay in the arrow-key order and
|
|
108
|
+
* keep the toolbar's tab stop, announcing `aria-disabled` instead of leaving the tab order.
|
|
109
|
+
*/
|
|
107
110
|
disabled?: boolean;
|
|
108
111
|
/** Called once with the complete updated item list after any control state changes. */
|
|
109
112
|
onItemsChange?: (items: ToggleMenuItem[]) => void;
|
|
@@ -7,13 +7,7 @@
|
|
|
7
7
|
import type { TooltipProps } from './tooltip.props.js';
|
|
8
8
|
import { tooltip } from './tooltip.attachment.svelte.js';
|
|
9
9
|
|
|
10
|
-
let {
|
|
11
|
-
trigger,
|
|
12
|
-
open = $bindable(),
|
|
13
|
-
defaultOpen = false,
|
|
14
|
-
onOpenChange,
|
|
15
|
-
...options
|
|
16
|
-
}: TooltipProps = $props();
|
|
10
|
+
let { trigger, open = $bindable(), defaultOpen = false, ...options }: TooltipProps = $props();
|
|
17
11
|
|
|
18
12
|
const theme = useTheme();
|
|
19
13
|
const openState = createBindableValue(
|
|
@@ -47,7 +41,8 @@
|
|
|
47
41
|
const surfaceTaken = $derived(theme.tooltip !== null && theme.tooltip.ref !== element);
|
|
48
42
|
|
|
49
43
|
// Hover and focus move the surface without asking, so mirror what it shows back into the
|
|
50
|
-
// controlled state.
|
|
44
|
+
// controlled state. `onOpenChange` already ran, before the surface changed hands, in the
|
|
45
|
+
// primitive that made the change; the caller's own `open` is never echoed back to it.
|
|
51
46
|
let shown = false;
|
|
52
47
|
$effect(() => {
|
|
53
48
|
const next = displayed;
|
|
@@ -56,7 +51,6 @@
|
|
|
56
51
|
untrack(() => {
|
|
57
52
|
if (openState.value === next) return;
|
|
58
53
|
openState.value = next;
|
|
59
|
-
onOpenChange?.(next);
|
|
60
54
|
});
|
|
61
55
|
});
|
|
62
56
|
|
|
@@ -66,9 +60,7 @@
|
|
|
66
60
|
const ref = element;
|
|
67
61
|
theme.tooltip = { ...options, ref };
|
|
68
62
|
return () => {
|
|
69
|
-
if (theme.tooltip?.ref
|
|
70
|
-
theme.tooltip = null;
|
|
71
|
-
theme.lastTooltipClosed = Date.now();
|
|
63
|
+
if (theme.tooltip?.ref === ref) theme.tooltip = null;
|
|
72
64
|
};
|
|
73
65
|
});
|
|
74
66
|
</script>
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { untrack } from 'svelte';
|
|
3
|
+
import { transitionSize } from '../../attachments/transitionSize.js';
|
|
4
|
+
import { requestOpenChange, type OpenChangeDetails } from '../../utils/openChange.js';
|
|
2
5
|
import Popover from '../Popover/Popover.svelte';
|
|
3
6
|
import Slot from '../Slot/Slot.svelte';
|
|
4
7
|
import { useTheme } from '../Theme/theme.state.svelte.js';
|
|
8
|
+
import {
|
|
9
|
+
applyStateAttributes,
|
|
10
|
+
openStateAttributes,
|
|
11
|
+
placementAttributes,
|
|
12
|
+
transitionStatusAttributes
|
|
13
|
+
} from '../../utils/stateAttributes.js';
|
|
14
|
+
import type { PopoverApi } from '../Popover/popover.api.js';
|
|
15
|
+
import { reportTooltipContentHover } from './tooltip.surface.js';
|
|
5
16
|
import { useTooltipTheme, useTooltipMotion } from './tooltip.theme.js';
|
|
6
17
|
|
|
7
18
|
const theme = useTheme();
|
|
@@ -9,26 +20,107 @@
|
|
|
9
20
|
const surfaceId = `${id}-tooltip`;
|
|
10
21
|
theme.tooltipId = surfaceId;
|
|
11
22
|
let currentTooltip = $state(theme.tooltip);
|
|
23
|
+
// Whether the surface moved from one trigger to another without closing in between: it keeps
|
|
24
|
+
// its place, resizes to the new content and tells neither tooltip to animate in or out.
|
|
25
|
+
let handoff = $state(false);
|
|
26
|
+
let shownFor: HTMLElement | null = null;
|
|
27
|
+
// Whether the open transition of the tooltip now shown has ended. A handoff in the middle of it
|
|
28
|
+
// leaves the new tooltip's `onAfterOpen` to that transition's end, so it fires once.
|
|
29
|
+
let opened = false;
|
|
12
30
|
|
|
13
31
|
$effect.pre(() => {
|
|
14
|
-
|
|
32
|
+
const next = theme.tooltip;
|
|
33
|
+
untrack(() => {
|
|
34
|
+
const previous = currentTooltip;
|
|
35
|
+
const moved = !!next && !!shownFor && shownFor !== next.ref;
|
|
36
|
+
// The same trigger refreshing its entry (the `open` state seeding it again) changes nothing.
|
|
37
|
+
if (moved) handoff = true;
|
|
38
|
+
else if (!next || !shownFor) handoff = false;
|
|
39
|
+
if (next && !shownFor) opened = false;
|
|
40
|
+
shownFor = next?.ref ?? null;
|
|
41
|
+
// The pointer on the content of a tooltip that is gone is no longer on it.
|
|
42
|
+
if (previous && previous.ref !== next?.ref) reportTooltipContentHover(previous.ref, false);
|
|
43
|
+
// A handed-over tooltip plays no transition of its own, so its lifecycle ends and begins now,
|
|
44
|
+
// unless the one it replaces had not finished opening: then neither of them ever completed,
|
|
45
|
+
// and the open transition still running delivers the new tooltip's `onAfterOpen`.
|
|
46
|
+
if (moved && previous && opened) {
|
|
47
|
+
previous.onAfterClose?.();
|
|
48
|
+
next.onAfterOpen?.();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
if (next) currentTooltip = next;
|
|
15
52
|
});
|
|
16
53
|
|
|
54
|
+
function handleAfterOpen() {
|
|
55
|
+
opened = true;
|
|
56
|
+
currentTooltip?.onAfterOpen?.();
|
|
57
|
+
}
|
|
58
|
+
|
|
17
59
|
function handleAfterClose() {
|
|
18
60
|
currentTooltip?.onAfterClose?.();
|
|
19
61
|
if (!theme.tooltip) currentTooltip = null;
|
|
20
62
|
}
|
|
21
63
|
|
|
22
|
-
function handleOpenChange(open: boolean) {
|
|
64
|
+
function handleOpenChange(open: boolean, details: OpenChangeDetails) {
|
|
23
65
|
if (open) return;
|
|
66
|
+
const shown = theme.tooltip;
|
|
67
|
+
if (!shown) return;
|
|
68
|
+
// A press on the trigger is the trigger's to judge: `closeOnClick` closes the tooltip with
|
|
69
|
+
// the `trigger-press` reason, and `false` leaves it open.
|
|
70
|
+
const target = details.event?.composedPath?.()[0];
|
|
71
|
+
if (
|
|
72
|
+
details.reason === 'outside-press' &&
|
|
73
|
+
target instanceof Node &&
|
|
74
|
+
shown.ref.contains(target)
|
|
75
|
+
) {
|
|
76
|
+
details.cancel();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (!requestOpenChange(shown.onOpenChange, false, details)) return;
|
|
24
80
|
theme.tooltip = null;
|
|
25
|
-
theme.lastTooltipClosed = Date.now();
|
|
26
81
|
}
|
|
82
|
+
|
|
83
|
+
// However the shared surface closes (pointer, focus, Escape, unmount), the hover warm-up
|
|
84
|
+
// window starts: the next tooltip, hover card or hover popover opens at once. A tooltip held
|
|
85
|
+
// open (`open`, keyboard focus) does not warm the group while it shows.
|
|
86
|
+
$effect(() => {
|
|
87
|
+
if (!theme.tooltip) return;
|
|
88
|
+
return () => theme.hoverIntent.markClosed();
|
|
89
|
+
});
|
|
27
90
|
const color = $derived(currentTooltip?.color ?? 'neutral');
|
|
28
91
|
const size = $derived(currentTooltip?.size ?? 'normal');
|
|
29
92
|
const variant = $derived(currentTooltip?.variant ?? 'solid');
|
|
93
|
+
const hoverable = $derived(currentTooltip?.hoverable !== false);
|
|
94
|
+
// The surface grows or shrinks to the content of the trigger it moved to.
|
|
95
|
+
const resizeWithContent = transitionSize({ axis: 'both', isActive: () => handoff });
|
|
30
96
|
|
|
31
97
|
const classes = $derived(useTooltipTheme(currentTooltip?.theme));
|
|
98
|
+
// The surface is what a tooltip's `class` and theme style, so it carries the panel's hooks:
|
|
99
|
+
// open state, transition phase and the side it landed on (see `tooltipDataAttributes`).
|
|
100
|
+
const surfaceAttributes = (popover: PopoverApi) => ({
|
|
101
|
+
...openStateAttributes(popover.isOpen),
|
|
102
|
+
...transitionStatusAttributes(popover.status),
|
|
103
|
+
...placementAttributes(
|
|
104
|
+
popover.placement
|
|
105
|
+
? { side: popover.placement.side, align: popover.placement.align ?? undefined }
|
|
106
|
+
: undefined,
|
|
107
|
+
{ anchorHidden: popover.placement?.anchorHidden }
|
|
108
|
+
)
|
|
109
|
+
});
|
|
110
|
+
// Written from here as well as by the template: Svelte pauses the effects of a block while its
|
|
111
|
+
// out-transition plays, so only an effect outside the surface reaches it while it fades out.
|
|
112
|
+
// Raw state: the entry holds a DOM node and is compared by identity when the surface unmounts.
|
|
113
|
+
let surface = $state.raw<{ node: HTMLElement; popover: PopoverApi } | null>(null);
|
|
114
|
+
const trackSurface = (popover: PopoverApi) => (node: HTMLElement) => {
|
|
115
|
+
const entry = { node, popover };
|
|
116
|
+
surface = entry;
|
|
117
|
+
return () => {
|
|
118
|
+
if (surface === entry) surface = null;
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
$effect(() => {
|
|
122
|
+
if (surface) applyStateAttributes(surface.node, surfaceAttributes(surface.popover));
|
|
123
|
+
});
|
|
32
124
|
// Own motion preset (ladder: registry → setTooltipTheme → theme.motion → transition
|
|
33
125
|
// prop), handed to the Popover as an already-resolved `{ in, out }`.
|
|
34
126
|
const resolveMotion = useTooltipMotion();
|
|
@@ -40,28 +132,57 @@
|
|
|
40
132
|
);
|
|
41
133
|
</script>
|
|
42
134
|
|
|
135
|
+
<!-- Content that ignores the pointer lets it through to the page: the positioning wrapper and
|
|
136
|
+
the surface both need to, since the wrapper is the box that hugs the surface. -->
|
|
43
137
|
<Popover
|
|
44
138
|
{id}
|
|
45
|
-
open={!!theme.tooltip}
|
|
139
|
+
bind:open={() => !!theme.tooltip, () => {}}
|
|
46
140
|
ref={currentTooltip?.ref}
|
|
47
141
|
lockScroll={false}
|
|
142
|
+
tabBridge={false}
|
|
143
|
+
closeOnFocusOut={false}
|
|
48
144
|
position={currentTooltip?.position}
|
|
49
145
|
transition={tooltipTransition}
|
|
50
146
|
closeOnMouseLeave={false}
|
|
51
147
|
offset={currentTooltip?.offset}
|
|
52
|
-
onAfterOpen={
|
|
148
|
+
onAfterOpen={handleAfterOpen}
|
|
53
149
|
onAfterClose={handleAfterClose}
|
|
54
150
|
onOpenChange={handleOpenChange}
|
|
55
151
|
class="!w-fit !max-w-fit !bg-transparent !p-0 !shadow-none !ring-0"
|
|
152
|
+
{@attach (wrapper: HTMLElement) => {
|
|
153
|
+
if (hoverable) return;
|
|
154
|
+
wrapper.style.pointerEvents = 'none';
|
|
155
|
+
return () => {
|
|
156
|
+
wrapper.style.pointerEvents = '';
|
|
157
|
+
};
|
|
158
|
+
}}
|
|
56
159
|
>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
160
|
+
{#snippet children(popover: PopoverApi)}
|
|
161
|
+
<div
|
|
162
|
+
id={surfaceId}
|
|
163
|
+
role="tooltip"
|
|
164
|
+
data-color={color}
|
|
165
|
+
data-size={size}
|
|
166
|
+
data-variant={variant}
|
|
167
|
+
data-instant={handoff ? '' : undefined}
|
|
168
|
+
{...surfaceAttributes(popover)}
|
|
169
|
+
{@attach trackSurface(popover)}
|
|
170
|
+
class={classes.root({ color, size, variant, className: currentTooltip?.class })}
|
|
171
|
+
style:pointer-events={hoverable ? undefined : 'none'}
|
|
172
|
+
onmouseenter={(event) => {
|
|
173
|
+
if (currentTooltip) reportTooltipContentHover(currentTooltip.ref, true, event);
|
|
174
|
+
}}
|
|
175
|
+
onmouseleave={(event) => {
|
|
176
|
+
if (currentTooltip) reportTooltipContentHover(currentTooltip.ref, false, event);
|
|
177
|
+
}}
|
|
178
|
+
>
|
|
179
|
+
<!-- The surface keeps its minimum width, so its content is what grows and shrinks. -->
|
|
180
|
+
<span
|
|
181
|
+
class="inline-flex items-center justify-center gap-[inherit]"
|
|
182
|
+
{@attach resizeWithContent}
|
|
183
|
+
>
|
|
184
|
+
<Slot render={currentTooltip?.content} />
|
|
185
|
+
</span>
|
|
186
|
+
</div>
|
|
187
|
+
{/snippet}
|
|
67
188
|
</Popover>
|
|
@@ -3,3 +3,4 @@ export { default as TooltipHost } from './TooltipHost.svelte';
|
|
|
3
3
|
export type { TooltipProps, TooltipOptions, TooltipTrigger } from './tooltip.props.js';
|
|
4
4
|
export { tooltipTheme, setTooltipTheme, useTooltipTheme, type TooltipTheme, type TooltipThemeProps } from './tooltip.theme.js';
|
|
5
5
|
export { tooltip } from './tooltip.attachment.svelte.js';
|
|
6
|
+
export { tooltipDataAttributes, tooltipCssVariables, type TooltipDataAttribute, type TooltipCssVariable } from './tooltip.attributes.js';
|
|
@@ -2,3 +2,4 @@ export { default as Tooltip } from './Tooltip.svelte';
|
|
|
2
2
|
export { default as TooltipHost } from './TooltipHost.svelte';
|
|
3
3
|
export { tooltipTheme, setTooltipTheme, useTooltipTheme } from './tooltip.theme.js';
|
|
4
4
|
export { tooltip } from './tooltip.attachment.svelte.js';
|
|
5
|
+
export { tooltipDataAttributes, tooltipCssVariables } from './tooltip.attributes.js';
|
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
import type { TooltipOptions } from './tooltip.props.js';
|
|
2
|
+
/**
|
|
3
|
+
* Least time, in milliseconds, a tooltip with hoverable content stays open after the pointer
|
|
4
|
+
* leaves its trigger, so the pointer can cross the gap to the content.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TOOLTIP_CONTENT_GRACE = 100;
|
|
2
7
|
export declare const tooltip: (props: TooltipOptions) => (ref: HTMLElement) => () => void;
|