entasis 0.10.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
- package/dist/attachments/disclosurePanel.svelte.js +277 -0
- package/dist/attachments/portal.d.ts +17 -1
- package/dist/attachments/portal.js +39 -2
- package/dist/attachments/spinnerOverlay.svelte.js +12 -0
- package/dist/attachments/transitionSize.d.ts +6 -0
- package/dist/attachments/transitionSize.js +30 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
- package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
- package/dist/components/AIAskUserQuestion/index.js +2 -0
- package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
- package/dist/components/AIAskUserQuestion/schemas.js +10 -3
- package/dist/components/AIChat/AIChat.svelte +10 -0
- package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
- package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
- package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
- package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
- package/dist/components/AIChat/AIChatSurface.svelte +30 -2
- package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
- package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
- package/dist/components/AIChat/aiChat.mcp.js +31 -15
- package/dist/components/AIChat/aiChat.props.d.ts +36 -10
- package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
- package/dist/components/AIChat/aiChat.theme.js +21 -4
- package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
- package/dist/components/AIChat/index.d.ts +1 -1
- package/dist/components/AIComposer/AIComposer.svelte +102 -5
- package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
- package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
- package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
- package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
- package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
- package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
- package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
- package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
- package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
- package/dist/components/AIComposer/aiComposer.theme.js +37 -5
- package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
- package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
- package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
- package/dist/components/AIContext/AIContext.svelte +7 -3
- package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
- package/dist/components/AIContext/aiContext.mcp.js +1 -1
- package/dist/components/AIContext/aiContext.props.d.ts +4 -1
- package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
- package/dist/components/AIContext/aiContext.theme.js +7 -2
- package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
- package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
- package/dist/components/AIMarker/AIMarker.svelte +2 -0
- package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
- package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
- package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
- package/dist/components/AIMarker/aiMarker.theme.js +2 -2
- package/dist/components/AIMessage/AIMessage.svelte +38 -16
- package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
- package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
- package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
- package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
- package/dist/components/AIMessage/aiMessage.theme.js +91 -32
- package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
- package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
- package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
- package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
- package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
- package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
- package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
- package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
- package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
- package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
- package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
- package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
- package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
- package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
- package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
- package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
- package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
- package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
- package/dist/components/AIThread/AIThread.svelte +378 -95
- package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
- package/dist/components/AIThread/AIThreadItems.svelte +266 -64
- package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
- package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
- package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
- package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
- package/dist/components/AIThread/aiThread.mcp.js +34 -20
- package/dist/components/AIThread/aiThread.props.d.ts +73 -8
- package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
- package/dist/components/AIThread/aiThread.theme.js +108 -9
- package/dist/components/AIThread/index.d.ts +1 -1
- package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
- package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
- package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
- package/dist/components/AIThread/threadRenderItems.js +265 -77
- package/dist/components/AIThread/threadScrollController.d.ts +0 -8
- package/dist/components/AIThread/threadScrollController.js +2 -39
- package/dist/components/AIThread/threadTools.d.ts +11 -0
- package/dist/components/AIThread/threadTools.js +79 -0
- package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
- package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
- package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
- package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
- package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
- package/dist/components/AITool/AITool.svelte +56 -21
- package/dist/components/AITool/AIToolCallList.svelte +79 -29
- package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
- package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
- package/dist/components/AITool/AIToolValueSection.svelte +126 -28
- package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolValueTree.svelte +11 -16
- package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
- package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
- package/dist/components/AITool/aiTool.mcp.js +36 -8
- package/dist/components/AITool/aiTool.props.d.ts +52 -6
- package/dist/components/AITool/aiTool.theme.d.ts +117 -39
- package/dist/components/AITool/aiTool.theme.js +144 -140
- package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
- package/dist/components/AITool/aiToolClock.svelte.js +62 -0
- package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
- package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
- package/dist/components/AITool/index.d.ts +2 -1
- package/dist/components/AITool/index.js +1 -0
- package/dist/components/AITool/toolRendering.d.ts +33 -1
- package/dist/components/AITool/toolRendering.js +179 -15
- package/dist/components/AITool/toolValueTree.d.ts +14 -1
- package/dist/components/AITool/toolValueTree.js +126 -27
- package/dist/components/Accordion/Accordion.svelte +109 -109
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
- package/dist/components/Accordion/AccordionPanel.svelte +64 -0
- package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
- package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
- package/dist/components/Accordion/accordion.attributes.js +20 -0
- package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
- package/dist/components/Accordion/accordion.mcp.js +78 -22
- package/dist/components/Accordion/accordion.props.d.ts +54 -10
- package/dist/components/Accordion/accordion.theme.d.ts +3 -0
- package/dist/components/Accordion/accordion.theme.js +4 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
- package/dist/components/Avatar/Avatar.svelte +60 -10
- package/dist/components/Avatar/AvatarGroup.svelte +9 -0
- package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
- package/dist/components/Avatar/avatar.mcp.js +13 -5
- package/dist/components/Avatar/avatar.props.d.ts +28 -1
- package/dist/components/Avatar/avatar.theme.js +3 -3
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
- package/dist/components/Button/Button.svelte +35 -15
- package/dist/components/Button/button.mcp.d.ts +1 -1
- package/dist/components/Button/button.mcp.js +8 -4
- package/dist/components/Button/button.props.d.ts +23 -8
- package/dist/components/Button/button.theme.d.ts +12 -0
- package/dist/components/Button/button.theme.js +17 -4
- package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
- package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
- package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
- package/dist/components/Collapsible/Collapsible.svelte +125 -19
- package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
- package/dist/components/Collapsible/collapsible.attributes.js +17 -0
- package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
- package/dist/components/Collapsible/collapsible.mcp.js +62 -12
- package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
- package/dist/components/Collapsible/collapsible.theme.js +3 -1
- package/dist/components/Collapsible/index.d.ts +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/Command/Command.svelte +56 -14
- package/dist/components/Command/command.mcp.d.ts +1 -1
- package/dist/components/Command/command.mcp.js +12 -6
- package/dist/components/Command/command.props.d.ts +39 -6
- package/dist/components/Command/command.state.svelte.d.ts +40 -11
- package/dist/components/Command/command.state.svelte.js +75 -28
- package/dist/components/Command/command.theme.js +4 -3
- package/dist/components/Confirmation/Confirmation.svelte +72 -31
- package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
- package/dist/components/Confirmation/confirmation.mcp.js +5 -4
- package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
- package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
- package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
- package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
- package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
- package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
- package/dist/components/DataTable/DataTable.svelte +4 -9
- package/dist/components/DataTable/DataTableEditor.svelte +5 -0
- package/dist/components/DataTable/DataTableFilter.svelte +1 -0
- package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
- package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
- package/dist/components/DataTable/dataTable.mcp.js +4 -2
- package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
- package/dist/components/DataTable/dataTable.theme.js +9 -6
- package/dist/components/Dialog/Dialog.svelte +120 -35
- package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
- package/dist/components/Dialog/dialog.api.d.ts +65 -0
- package/dist/components/Dialog/dialog.api.js +1 -0
- package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
- package/dist/components/Dialog/dialog.attributes.js +19 -0
- package/dist/components/Dialog/dialog.indent.d.ts +6 -0
- package/dist/components/Dialog/dialog.indent.js +16 -0
- package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
- package/dist/components/Dialog/dialog.mcp.js +195 -22
- package/dist/components/Dialog/dialog.props.d.ts +102 -19
- package/dist/components/Dialog/dialog.snap.d.ts +40 -0
- package/dist/components/Dialog/dialog.snap.js +78 -0
- package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
- package/dist/components/Dialog/dialog.state.svelte.js +525 -66
- package/dist/components/Dialog/dialog.theme.d.ts +48 -0
- package/dist/components/Dialog/dialog.theme.js +32 -9
- package/dist/components/Dialog/index.d.ts +4 -1
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
- package/dist/components/DocumentViewer/documentOutput.js +2 -1
- package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
- package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
- package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
- package/dist/components/Form/Ask/Ask.svelte +9 -13
- package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
- package/dist/components/Form/Ask/ask.mcp.js +1 -1
- package/dist/components/Form/Ask/ask.props.d.ts +1 -1
- package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
- package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
- package/dist/components/Form/Autocomplete/index.d.ts +3 -0
- package/dist/components/Form/Autocomplete/index.js +2 -0
- package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
- package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
- package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
- package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
- package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
- package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
- package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
- package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
- package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
- package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
- package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
- package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
- package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
- package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
- package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
- package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
- package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
- package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
- package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
- package/dist/components/Form/Combobox/Combobox.svelte +145 -185
- package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
- package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
- package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
- package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.items.js +68 -0
- package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
- package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
- package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
- package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
- package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
- package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
- package/dist/components/Form/Combobox/combobox.theme.js +37 -1
- package/dist/components/Form/Combobox/index.d.ts +2 -1
- package/dist/components/Form/Combobox/index.js +1 -0
- package/dist/components/Form/DateInput/DateInput.svelte +11 -3
- package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
- package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
- package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
- package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
- package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
- package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
- package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
- package/dist/components/Form/Field/Field.svelte +258 -32
- package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
- package/dist/components/Form/Field/FieldGroup.svelte +29 -0
- package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
- package/dist/components/Form/Field/field.d.ts +75 -10
- package/dist/components/Form/Field/field.mcp.d.ts +1 -1
- package/dist/components/Form/Field/field.mcp.js +158 -18
- package/dist/components/Form/Field/field.messages.d.ts +47 -0
- package/dist/components/Form/Field/field.messages.js +64 -0
- package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
- package/dist/components/Form/Field/field.state.svelte.js +525 -16
- package/dist/components/Form/Field/field.theme.d.ts +46 -0
- package/dist/components/Form/Field/field.theme.js +33 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
- package/dist/components/Form/Field/index.d.ts +5 -2
- package/dist/components/Form/Field/index.js +1 -0
- package/dist/components/Form/Field/schemas.js +7 -2
- package/dist/components/Form/File/FileInput.svelte +24 -3
- package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
- package/dist/components/Form/File/fileInput.mcp.js +1 -0
- package/dist/components/Form/Form/Form.svelte +49 -15
- package/dist/components/Form/Form/FormActions.svelte +3 -1
- package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
- package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
- package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +84 -11
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +178 -12
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +28 -0
- package/dist/components/Form/Form/form.registry.js +59 -0
- package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
- package/dist/components/Form/Form/form.state.svelte.js +322 -28
- package/dist/components/Form/Form/index.d.ts +4 -1
- package/dist/components/Form/Form/index.js +1 -0
- package/dist/components/Form/Form/visibility.d.ts +3130 -1863
- package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
- package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
- package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
- package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
- package/dist/components/Form/NumberInput/index.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
- package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
- package/dist/components/Form/PasswordInput/Password.svelte +28 -1
- package/dist/components/Form/PasswordInput/index.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
- package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
- package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
- package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
- package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
- package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
- package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
- package/dist/components/Form/PinInput/PinInput.svelte +44 -9
- package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
- package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
- package/dist/components/Form/PinInput/index.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
- package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
- package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
- package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
- package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
- package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
- package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
- package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
- package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
- package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
- package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
- package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
- package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
- package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
- package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
- package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
- package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
- package/dist/components/Form/Select/Select.svelte +186 -48
- package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
- package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
- package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
- package/dist/components/Form/Select/index.d.ts +2 -1
- package/dist/components/Form/Select/index.js +1 -0
- package/dist/components/Form/Select/select.align.d.ts +5 -0
- package/dist/components/Form/Select/select.align.js +19 -5
- package/dist/components/Form/Select/select.attributes.d.ts +36 -0
- package/dist/components/Form/Select/select.attributes.js +27 -0
- package/dist/components/Form/Select/select.mcp.d.ts +1 -1
- package/dist/components/Form/Select/select.mcp.js +103 -18
- package/dist/components/Form/Select/select.props.d.ts +87 -10
- package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
- package/dist/components/Form/Select/select.state.svelte.js +354 -59
- package/dist/components/Form/Select/select.theme.d.ts +21 -0
- package/dist/components/Form/Select/select.theme.js +22 -0
- package/dist/components/Form/Slider/Slider.svelte +54 -14
- package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
- package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
- package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
- package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
- package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
- package/dist/components/Form/Slider/index.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.js +55 -11
- package/dist/components/Form/Slider/slider.props.d.ts +35 -2
- package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
- package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
- package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
- package/dist/components/Form/Slider/slider.theme.js +35 -17
- package/dist/components/Form/Switch/Switch.svelte +61 -38
- package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
- package/dist/components/Form/Switch/switch.mcp.js +25 -5
- package/dist/components/Form/Switch/switch.props.d.ts +14 -1
- package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
- package/dist/components/Form/Switch/switch.theme.js +8 -3
- package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
- package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
- package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
- package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
- package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
- package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
- package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
- package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
- package/dist/components/Form/TextArea/TextArea.svelte +8 -0
- package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
- package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
- package/dist/components/Form/TextInput/TextInput.svelte +8 -1
- package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
- package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
- package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
- package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
- package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
- package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
- package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
- package/dist/components/HoverCard/HoverCard.svelte +100 -10
- package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
- package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
- package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
- package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
- package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
- package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
- package/dist/components/HoverCard/hoverCard.theme.js +9 -2
- package/dist/components/HoverCard/index.d.ts +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
- package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
- package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
- package/dist/components/Kanban/kanban.theme.js +7 -3
- package/dist/components/Layout/layoutSpacing.d.ts +2 -2
- package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
- package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
- package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
- package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
- package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
- package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
- package/dist/components/Map/maplibre-cdn.js +3 -2
- package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
- package/dist/components/Markdown/markdown.mcp.js +2 -1
- package/dist/components/Markdown/markdown.theme.js +18 -9
- package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
- package/dist/components/Menu/Menu.svelte +3 -3
- package/dist/components/Menu/Menu.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
- package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
- package/dist/components/Menu/MenuFloating.svelte +421 -74
- package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
- package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
- package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
- package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
- package/dist/components/Menu/MenuSearchField.svelte +54 -0
- package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
- package/dist/components/Menu/MenuStacked.svelte +404 -158
- package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
- package/dist/components/Menu/index.d.ts +2 -1
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Menu/menu.attributes.d.ts +37 -0
- package/dist/components/Menu/menu.attributes.js +28 -0
- package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
- package/dist/components/Menu/menu.filter.svelte.js +143 -0
- package/dist/components/Menu/menu.mcp.d.ts +1 -1
- package/dist/components/Menu/menu.mcp.js +227 -17
- package/dist/components/Menu/menu.platform.d.ts +5 -0
- package/dist/components/Menu/menu.platform.js +11 -0
- package/dist/components/Menu/menu.props.d.ts +172 -9
- package/dist/components/Menu/menu.theme.d.ts +147 -0
- package/dist/components/Menu/menu.theme.js +101 -0
- package/dist/components/Menu/menuTree.d.ts +35 -1
- package/dist/components/Menu/menuTree.js +158 -1
- package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
- package/dist/components/MenuBar/menuBar.mcp.js +4 -2
- package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
- package/dist/components/MenuOption/MenuOption.svelte +5 -1
- package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
- package/dist/components/MenuOption/menuOption.mcp.js +8 -0
- package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
- package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
- package/dist/components/MenuOption/menuOption.theme.js +24 -4
- package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
- package/dist/components/Mermaid/mermaid.mcp.js +8 -8
- package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
- package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
- package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
- package/dist/components/Mermaid/mermaid.theme.js +26 -1
- package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
- package/dist/components/Meter/Meter.svelte +110 -24
- package/dist/components/Meter/Meter.svelte.d.ts +12 -12
- package/dist/components/Meter/meter.mcp.d.ts +1 -1
- package/dist/components/Meter/meter.mcp.js +23 -37
- package/dist/components/Meter/meter.props.d.ts +36 -44
- package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
- package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/index.d.ts +4 -0
- package/dist/components/NavigationMenu/index.js +3 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
- package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
- package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
- package/dist/components/Overlay/Overlay.svelte +19 -30
- package/dist/components/Overlay/index.d.ts +1 -0
- package/dist/components/Overlay/index.js +1 -0
- package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
- package/dist/components/Overlay/overlay.attributes.js +14 -0
- package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
- package/dist/components/Overlay/overlay.mcp.js +21 -3
- package/dist/components/Overlay/overlay.props.d.ts +8 -4
- package/dist/components/Popover/Popover.svelte +163 -52
- package/dist/components/Popover/Popover.svelte.d.ts +23 -2
- package/dist/components/Popover/PopoverSession.svelte +12 -0
- package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
- package/dist/components/Popover/index.d.ts +10 -2
- package/dist/components/Popover/index.js +4 -1
- package/dist/components/Popover/popover.api.d.ts +83 -0
- package/dist/components/Popover/popover.api.js +1 -0
- package/dist/components/Popover/popover.attributes.d.ts +32 -0
- package/dist/components/Popover/popover.attributes.js +28 -0
- package/dist/components/Popover/popover.claims.d.ts +19 -0
- package/dist/components/Popover/popover.claims.js +45 -0
- package/dist/components/Popover/popover.mcp.d.ts +1 -1
- package/dist/components/Popover/popover.mcp.js +163 -31
- package/dist/components/Popover/popover.position.d.ts +226 -0
- package/dist/components/Popover/popover.position.js +402 -0
- package/dist/components/Popover/popover.props.d.ts +179 -24
- package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
- package/dist/components/Popover/popover.state.svelte.js +1034 -194
- package/dist/components/Popover/popover.theme.d.ts +15 -0
- package/dist/components/Popover/popover.theme.js +27 -2
- package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
- package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
- package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
- package/dist/components/PopupMenu/popupMenu.context.js +52 -0
- package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
- package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
- package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
- package/dist/components/Progress/Progress.svelte +160 -0
- package/dist/components/Progress/Progress.svelte.d.ts +4 -0
- package/dist/components/Progress/index.d.ts +3 -0
- package/dist/components/Progress/index.js +2 -0
- package/dist/components/Progress/progress.mcp.d.ts +1 -0
- package/dist/components/Progress/progress.mcp.js +101 -0
- package/dist/components/Progress/progress.props.d.ts +79 -0
- package/dist/components/Progress/progress.props.js +1 -0
- package/dist/components/Progress/progress.theme.d.ts +129 -0
- package/dist/components/Progress/progress.theme.js +83 -0
- package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
- package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
- package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
- package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
- package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
- package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
- package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
- package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
- package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
- package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
- package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
- package/dist/components/RichTextInput/suggestions.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
- package/dist/components/ScrollArea/index.d.ts +2 -1
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
- package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
- package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
- package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
- package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
- package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
- package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
- package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
- package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
- package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
- package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
- package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
- package/dist/components/Sidebar/SidebarAction.svelte +13 -3
- package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
- package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
- package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
- package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
- package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
- package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
- package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
- package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
- package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
- package/dist/components/Sidebar/sidebar-position.js +31 -2
- package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
- package/dist/components/Sidebar/sidebar.attributes.js +29 -0
- package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
- package/dist/components/Sidebar/sidebar.mcp.js +45 -10
- package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
- package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
- package/dist/components/Sidebar/sidebar.theme.js +113 -62
- package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
- package/dist/components/Stepper/Stepper.svelte +2 -0
- package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
- package/dist/components/Stepper/stepper.mcp.js +1 -0
- package/dist/components/Stepper/stepper.props.d.ts +5 -0
- package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
- package/dist/components/Stepper/stepper.state.svelte.js +31 -12
- package/dist/components/Tabbar/Tabbar.svelte +55 -16
- package/dist/components/Tabbar/index.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.js +26 -9
- package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
- package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
- package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
- package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
- package/dist/components/Tabs/Tabs.svelte +73 -16
- package/dist/components/Tabs/index.d.ts +2 -1
- package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
- package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
- package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
- package/dist/components/Tabs/tabs.mcp.js +22 -4
- package/dist/components/Tabs/tabs.props.d.ts +39 -12
- package/dist/components/Tabs/tabs.theme.js +3 -1
- package/dist/components/Theme/Theme.svelte +44 -27
- package/dist/components/Theme/helper.d.ts +16 -2
- package/dist/components/Theme/helper.js +46 -4
- package/dist/components/Theme/theme.mcp.d.ts +1 -1
- package/dist/components/Theme/theme.mcp.js +103 -0
- package/dist/components/Theme/theme.props.d.ts +16 -0
- package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
- package/dist/components/Theme/theme.state.svelte.js +18 -1
- package/dist/components/Toast/Toast.svelte +184 -39
- package/dist/components/Toast/Toaster.svelte +14 -10
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/toast.mcp.d.ts +1 -1
- package/dist/components/Toast/toast.mcp.js +47 -6
- package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
- package/dist/components/Toast/toast.state.svelte.js +513 -68
- package/dist/components/Toast/toast.theme.js +1 -1
- package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
- package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
- package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
- package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
- package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
- package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
- package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
- package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
- package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
- package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
- package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
- package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
- package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
- package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.svelte +4 -12
- package/dist/components/Tooltip/TooltipHost.svelte +136 -15
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
- package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
- package/dist/components/Tooltip/tooltip.attributes.js +28 -0
- package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
- package/dist/components/Tooltip/tooltip.mcp.js +111 -10
- package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
- package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
- package/dist/components/Tooltip/tooltip.surface.js +42 -0
- package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
- package/dist/components/Utils/BeforeHydratation.svelte +14 -3
- package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
- package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
- package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
- package/dist/generated/componentAliases.d.ts +3 -0
- package/dist/generated/componentAliases.js +3 -0
- package/dist/generated/componentContract.d.ts +79 -34
- package/dist/generated/componentContract.js +231 -6
- package/dist/generated/componentMcpRegistry.js +6 -0
- package/dist/i18n/ar.js +107 -3
- package/dist/i18n/context.svelte.d.ts +6 -0
- package/dist/i18n/context.svelte.js +12 -0
- package/dist/i18n/de.js +101 -3
- package/dist/i18n/en.d.ts +91 -2
- package/dist/i18n/en.js +101 -3
- package/dist/i18n/es.js +101 -3
- package/dist/i18n/fr.js +101 -3
- package/dist/i18n/ja.js +101 -3
- package/dist/i18n/pt.js +101 -3
- package/dist/i18n/zh.js +101 -3
- package/dist/tailwind/geometry.js +7 -0
- package/dist/tailwind/global.js +31 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types.mcp.d.ts +1 -1
- package/dist/types/types.mcp.js +23 -0
- package/dist/utils/cspNonce.d.ts +16 -0
- package/dist/utils/cspNonce.js +39 -0
- package/dist/utils/cva/merge.d.ts +5 -1
- package/dist/utils/cva/merge.js +6 -4
- package/dist/utils/focus.d.ts +34 -0
- package/dist/utils/focus.js +93 -0
- package/dist/utils/focusHistory.d.ts +21 -0
- package/dist/utils/focusHistory.js +99 -0
- package/dist/utils/handlers.d.ts +7 -0
- package/dist/utils/handlers.js +14 -0
- package/dist/utils/hoverIntent.d.ts +42 -0
- package/dist/utils/hoverIntent.js +57 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/layers.svelte.d.ts +32 -4
- package/dist/utils/layers.svelte.js +214 -21
- package/dist/utils/listFilter.d.ts +44 -0
- package/dist/utils/listFilter.js +130 -0
- package/dist/utils/match.d.ts +35 -0
- package/dist/utils/match.js +36 -0
- package/dist/utils/number.d.ts +126 -0
- package/dist/utils/number.js +401 -0
- package/dist/utils/openChange.d.ts +88 -0
- package/dist/utils/openChange.js +71 -0
- package/dist/utils/openLifecycle.svelte.d.ts +41 -0
- package/dist/utils/openLifecycle.svelte.js +134 -0
- package/dist/utils/pointerDrag.d.ts +10 -0
- package/dist/utils/pointerDrag.js +37 -2
- package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
- package/dist/utils/pragmaticDragAndDrop.js +8 -3
- package/dist/utils/range.d.ts +62 -0
- package/dist/utils/range.js +70 -0
- package/dist/utils/requestNativeSubmit.d.ts +17 -0
- package/dist/utils/requestNativeSubmit.js +47 -0
- package/dist/utils/safeArea.svelte.d.ts +10 -1
- package/dist/utils/safeArea.svelte.js +19 -11
- package/dist/utils/stateAttributes.d.ts +108 -0
- package/dist/utils/stateAttributes.js +78 -0
- package/dist/utils/swipeVelocity.d.ts +32 -0
- package/dist/utils/swipeVelocity.js +59 -0
- package/dist/utils/timer.svelte.d.ts +65 -2
- package/dist/utils/timer.svelte.js +159 -25
- package/dist/utils/trigger.d.ts +41 -0
- package/dist/utils/trigger.js +103 -0
- package/dist/utils/typeahead.d.ts +9 -0
- package/dist/utils/typeahead.js +21 -9
- package/dist/utils/useDndList.svelte.d.ts +1 -1
- package/dist/utils/useDndList.svelte.js +6 -23
- package/dist/utils/useFocusScope.svelte.d.ts +29 -0
- package/dist/utils/useFocusScope.svelte.js +189 -27
- package/dist/utils/useHoverAction.svelte.d.ts +44 -4
- package/dist/utils/useHoverAction.svelte.js +161 -51
- package/dist/utils/useKeyDown.svelte.d.ts +19 -2
- package/dist/utils/useKeyDown.svelte.js +19 -12
- package/dist/utils/useListNavigation.svelte.d.ts +94 -13
- package/dist/utils/useListNavigation.svelte.js +261 -35
- package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
- package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
- package/dist/utils/useNavigation.svelte.d.ts +36 -3
- package/dist/utils/useNavigation.svelte.js +699 -332
- package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
- package/dist/utils/usePressAndHold.svelte.js +191 -0
- package/dist/utils/useScrollLock.svelte.d.ts +20 -1
- package/dist/utils/useScrollLock.svelte.js +54 -13
- package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
- package/dist/utils/useSlidingIndicator.svelte.js +27 -5
- package/dist/utils/useTabBridge.svelte.d.ts +20 -0
- package/dist/utils/useTabBridge.svelte.js +109 -0
- package/dist/utils/values.d.ts +15 -0
- package/dist/utils/values.js +49 -0
- package/package.json +31 -2
- package/dist/generated/componentMcpRegistry.d.ts +0 -142
- package/dist/utils/useDrag.svelte.d.ts +0 -11
- package/dist/utils/useDrag.svelte.js +0 -55
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
+
import { tick, untrack } from 'svelte';
|
|
2
3
|
import Slot from '../Slot/Slot.svelte';
|
|
3
4
|
import type { CollapsibleProps } from './collapsible.props.js';
|
|
4
5
|
import { useCollapsibleMotion, useCollapsibleTheme } from './collapsible.theme.js';
|
|
5
|
-
import {
|
|
6
|
+
import { disclosurePanel } from '../../attachments/disclosurePanel.svelte.js';
|
|
6
7
|
import { easingBezierStrings } from '../../transitions/easingFunctions.js';
|
|
7
8
|
import { caretDownIcon } from '../Icons/caretDown.js';
|
|
8
9
|
import { plusIcon } from '../Icons/plus.js';
|
|
9
10
|
import { minusIcon } from '../Icons/minus.js';
|
|
10
11
|
import { createBindableValue } from '../../utils/state.svelte.js';
|
|
12
|
+
import {
|
|
13
|
+
createOpenChangeDetails,
|
|
14
|
+
requestOpenChange,
|
|
15
|
+
type OpenChangeInit
|
|
16
|
+
} from '../../utils/openChange.js';
|
|
17
|
+
import {
|
|
18
|
+
openStateAttributes,
|
|
19
|
+
transitionStatusAttributes,
|
|
20
|
+
type OpenTransitionStatus
|
|
21
|
+
} from '../../utils/stateAttributes.js';
|
|
11
22
|
|
|
12
23
|
let {
|
|
13
24
|
ref = $bindable(),
|
|
@@ -16,13 +27,15 @@
|
|
|
16
27
|
open = $bindable(),
|
|
17
28
|
disabled = false,
|
|
18
29
|
onOpenChange,
|
|
30
|
+
onAfterOpen,
|
|
31
|
+
onAfterClose,
|
|
32
|
+
hiddenUntilFound = false,
|
|
33
|
+
keepMounted = false,
|
|
19
34
|
size = 'normal',
|
|
20
35
|
icon = 'chevron',
|
|
21
36
|
theme,
|
|
22
37
|
trigger,
|
|
23
38
|
children,
|
|
24
|
-
accessible,
|
|
25
|
-
srOnlyContent,
|
|
26
39
|
variant = 'default',
|
|
27
40
|
peekHeight = 80,
|
|
28
41
|
transition,
|
|
@@ -44,14 +57,26 @@
|
|
|
44
57
|
// Peek variant: content is always mounted, clipped to `peekHeight` and faded
|
|
45
58
|
// when closed. `contentHeight` (measured) drives a smooth max-height animation.
|
|
46
59
|
let contentHeight = $state(0);
|
|
60
|
+
let clipElement = $state<HTMLElement | null>(null);
|
|
61
|
+
let contentElement = $state<HTMLElement | null>(null);
|
|
47
62
|
const peekHeightCss = $derived(typeof peekHeight === 'number' ? `${peekHeight}px` : peekHeight);
|
|
48
63
|
const maskGradient = 'linear-gradient(to bottom, rgb(0 0 0) 35%, transparent 100%)';
|
|
49
64
|
|
|
50
|
-
|
|
65
|
+
// The one path to a state change: `onOpenChange` runs first and may cancel.
|
|
66
|
+
function requestChange(next: boolean, init: OpenChangeInit) {
|
|
67
|
+
if (next === isOpen) return;
|
|
68
|
+
const details = createOpenChangeDetails(init);
|
|
69
|
+
if (!requestOpenChange(onOpenChange ?? undefined, next, details)) return;
|
|
70
|
+
openState.value = next;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const handleToggle = (event: MouseEvent) => {
|
|
51
74
|
if (disabled) return;
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
75
|
+
requestChange(!isOpen, {
|
|
76
|
+
reason: 'trigger-press',
|
|
77
|
+
event,
|
|
78
|
+
trigger: event.currentTarget as HTMLElement
|
|
79
|
+
});
|
|
55
80
|
};
|
|
56
81
|
|
|
57
82
|
const classes = $derived(useCollapsibleTheme(theme));
|
|
@@ -60,11 +85,79 @@
|
|
|
60
85
|
|
|
61
86
|
// Motion preset from `collapsibleTheme.motion`, through the override ladder
|
|
62
87
|
// (registry → `setCollapsibleTheme` → instance `theme.motion` → `transition` prop).
|
|
63
|
-
// `slide` is a factory: it captures the theme context at init because Svelte runs
|
|
64
|
-
// transition functions outside component initialisation.
|
|
65
88
|
const resolveMotion = useCollapsibleMotion();
|
|
66
|
-
const slideTransition = slide();
|
|
67
89
|
const contentMotion = $derived(resolveMotion({ variant }, { motion: theme?.motion, transition }));
|
|
90
|
+
|
|
91
|
+
// Default variant: the panel's `hidden` state, height animation, find-in-page reveal and the
|
|
92
|
+
// completion callbacks come from the shared disclosure panel.
|
|
93
|
+
const panel = disclosurePanel({
|
|
94
|
+
open: () => isOpen,
|
|
95
|
+
// A disabled collapsible cannot be toggled, so it is not findable: its closed content stays
|
|
96
|
+
// under plain `hidden`.
|
|
97
|
+
hiddenUntilFound: () => hiddenUntilFound && !disabled,
|
|
98
|
+
keepMounted: () => keepMounted || (hiddenUntilFound && disabled),
|
|
99
|
+
motion: () => contentMotion,
|
|
100
|
+
onBeforeMatch: (event) => {
|
|
101
|
+
if (!disabled) requestChange(true, { reason: 'find-in-page', event });
|
|
102
|
+
},
|
|
103
|
+
// The peek variant renders no panel: it reports its own completion below.
|
|
104
|
+
onAfterOpen: () => variant !== 'peek' && onAfterOpen?.(),
|
|
105
|
+
onAfterClose: () => variant !== 'peek' && onAfterClose?.()
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// Peek variant: the clip animates its max-height with a CSS transition, so completion is
|
|
109
|
+
// the end of whatever animations that left running (none under reduced motion).
|
|
110
|
+
let peekStatus = $state<OpenTransitionStatus>(untrack(() => (isOpen ? 'open' : 'closed')));
|
|
111
|
+
let peekDirection = untrack(() => isOpen);
|
|
112
|
+
let peekPhase = 0;
|
|
113
|
+
|
|
114
|
+
$effect(() => {
|
|
115
|
+
const next = isOpen;
|
|
116
|
+
untrack(() => {
|
|
117
|
+
if (next === peekDirection) return;
|
|
118
|
+
peekDirection = next;
|
|
119
|
+
if (variant !== 'peek') return;
|
|
120
|
+
const phase = ++peekPhase;
|
|
121
|
+
peekStatus = next ? 'entering' : 'exiting';
|
|
122
|
+
void settlePeek(phase, next);
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
async function settlePeek(phase: number, next: boolean) {
|
|
127
|
+
await tick();
|
|
128
|
+
const animations = clipElement?.getAnimations?.() ?? [];
|
|
129
|
+
if (animations.length > 0) await Promise.allSettled(animations.map((a) => a.finished));
|
|
130
|
+
if (phase !== peekPhase) return;
|
|
131
|
+
peekStatus = next ? 'open' : 'closed';
|
|
132
|
+
if (next) onAfterOpen?.();
|
|
133
|
+
else onAfterClose?.();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Closed peek content is clipped, not removed: controls below the visible preview would stay
|
|
137
|
+
// tabbable while invisible, so they are inert until the content opens.
|
|
138
|
+
const FOCUSABLE =
|
|
139
|
+
'a[href],area[href],button,input,select,textarea,summary,iframe,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
|
|
140
|
+
|
|
141
|
+
$effect(() => {
|
|
142
|
+
if (variant !== 'peek' || peekStatus !== 'closed') return;
|
|
143
|
+
// Re-run when the content or the preview height changes.
|
|
144
|
+
void contentHeight;
|
|
145
|
+
void peekHeightCss;
|
|
146
|
+
const clip = clipElement;
|
|
147
|
+
const content = contentElement;
|
|
148
|
+
if (!clip || !content) return;
|
|
149
|
+
const inerted: Element[] = [];
|
|
150
|
+
const limit = clip.getBoundingClientRect().bottom;
|
|
151
|
+
for (const element of content.querySelectorAll(FOCUSABLE)) {
|
|
152
|
+
if (element.hasAttribute('inert')) continue;
|
|
153
|
+
if (element.getBoundingClientRect().top < limit) continue;
|
|
154
|
+
element.setAttribute('inert', '');
|
|
155
|
+
inerted.push(element);
|
|
156
|
+
}
|
|
157
|
+
return () => {
|
|
158
|
+
for (const element of inerted) element.removeAttribute('inert');
|
|
159
|
+
};
|
|
160
|
+
});
|
|
68
161
|
</script>
|
|
69
162
|
|
|
70
163
|
{#snippet triggerIcon()}
|
|
@@ -88,11 +181,14 @@
|
|
|
88
181
|
data-disabled={disabled ? '' : undefined}
|
|
89
182
|
data-size={size}
|
|
90
183
|
data-variant="peek"
|
|
184
|
+
{...openStateAttributes(isOpen)}
|
|
185
|
+
{...transitionStatusAttributes(peekStatus)}
|
|
91
186
|
class={classes.root({ size, className })}
|
|
92
187
|
{...attachments}
|
|
93
188
|
>
|
|
94
189
|
<div class="relative">
|
|
95
190
|
<div
|
|
191
|
+
bind:this={clipElement}
|
|
96
192
|
id={contentId}
|
|
97
193
|
class="overflow-hidden transition-[max-height]"
|
|
98
194
|
style:transition-duration={`${contentMotion.in.duration ?? 0}ms`}
|
|
@@ -103,7 +199,7 @@
|
|
|
103
199
|
style:-webkit-mask-image={isOpen ? undefined : maskGradient}
|
|
104
200
|
style:mask-image={isOpen ? undefined : maskGradient}
|
|
105
201
|
>
|
|
106
|
-
<div bind:clientHeight={contentHeight} class="pb-12">
|
|
202
|
+
<div bind:this={contentElement} bind:clientHeight={contentHeight} class="pb-12">
|
|
107
203
|
<Slot payload={{ open: isOpen }} render={children} />
|
|
108
204
|
</div>
|
|
109
205
|
</div>
|
|
@@ -114,6 +210,7 @@
|
|
|
114
210
|
aria-controls={contentId}
|
|
115
211
|
data-state={collapsibleState}
|
|
116
212
|
data-disabled={disabled ? '' : undefined}
|
|
213
|
+
{...openStateAttributes(isOpen)}
|
|
117
214
|
{disabled}
|
|
118
215
|
class="state-layer bg-surface text-neutral/80 raised-1 pointer-events-auto inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition disabled:cursor-not-allowed disabled:opacity-50"
|
|
119
216
|
onclick={handleToggle}
|
|
@@ -130,15 +227,18 @@
|
|
|
130
227
|
data-state={collapsibleState}
|
|
131
228
|
data-disabled={disabled ? '' : undefined}
|
|
132
229
|
data-size={size}
|
|
230
|
+
{...openStateAttributes(isOpen)}
|
|
231
|
+
{...transitionStatusAttributes(panel.status)}
|
|
133
232
|
class={classes.root({ size, className })}
|
|
134
233
|
{...attachments}
|
|
135
234
|
>
|
|
136
235
|
<button
|
|
137
236
|
type="button"
|
|
138
237
|
aria-expanded={isOpen}
|
|
139
|
-
aria-controls={contentId}
|
|
238
|
+
aria-controls={panel.rendered ? contentId : undefined}
|
|
140
239
|
data-state={collapsibleState}
|
|
141
240
|
data-disabled={disabled ? '' : undefined}
|
|
241
|
+
{...openStateAttributes(isOpen)}
|
|
142
242
|
{disabled}
|
|
143
243
|
class={classes.trigger({ size, disabled })}
|
|
144
244
|
onclick={handleToggle}
|
|
@@ -147,19 +247,25 @@
|
|
|
147
247
|
{@render triggerIcon()}
|
|
148
248
|
</button>
|
|
149
249
|
|
|
150
|
-
{#if
|
|
250
|
+
{#if panel.rendered}
|
|
251
|
+
<!-- The panel stays bare: while it hides until found, only its content is skipped, so
|
|
252
|
+
the padding, gap and margin of the content slot live on the element inside. -->
|
|
151
253
|
<div
|
|
152
254
|
id={contentId}
|
|
153
255
|
data-state={collapsibleState}
|
|
154
256
|
data-disabled={disabled ? '' : undefined}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
out:slideTransition={contentMotion.out}
|
|
257
|
+
{...panel.attributes}
|
|
258
|
+
{@attach panel.attach}
|
|
158
259
|
>
|
|
159
|
-
<
|
|
260
|
+
<div
|
|
261
|
+
data-state={collapsibleState}
|
|
262
|
+
data-disabled={disabled ? '' : undefined}
|
|
263
|
+
{...openStateAttributes(isOpen)}
|
|
264
|
+
class={classes.content({ size })}
|
|
265
|
+
>
|
|
266
|
+
<Slot payload={{ open: isOpen }} render={children} />
|
|
267
|
+
</div>
|
|
160
268
|
</div>
|
|
161
|
-
{:else if accessible || srOnlyContent}
|
|
162
|
-
<Slot render={srOnlyContent || children} payload={{ open: isOpen }} />
|
|
163
269
|
{/if}
|
|
164
270
|
</div>
|
|
165
271
|
{/if}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styling hooks a Collapsible exposes. Attributes are presence attributes (`''` while the
|
|
3
|
+
* state holds, omitted otherwise) unless the description says they carry a value.
|
|
4
|
+
*/
|
|
5
|
+
export declare const collapsibleDataAttributes: {
|
|
6
|
+
readonly 'data-open': "On the root, the trigger, the panel and the content: present while open.";
|
|
7
|
+
readonly 'data-closed': "On the root, the trigger, the panel and the content: present while closed, including during the exit transition.";
|
|
8
|
+
readonly 'data-entering': "On the root and the panel (`variant=\"peek\"` has no separate panel): present while the opening animation plays.";
|
|
9
|
+
readonly 'data-exiting': "On the root and the panel (`variant=\"peek\"` has no separate panel): present while the closing animation plays.";
|
|
10
|
+
readonly 'data-disabled': "On the root, the trigger, the panel and the content: present while `disabled`.";
|
|
11
|
+
readonly 'data-state': "On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).";
|
|
12
|
+
readonly 'data-size': "On the root: the resolved `size`.";
|
|
13
|
+
readonly 'data-variant': "On the root: `peek` with `variant=\"peek\"`.";
|
|
14
|
+
};
|
|
15
|
+
/** The name of a Collapsible data attribute. */
|
|
16
|
+
export type CollapsibleDataAttribute = keyof typeof collapsibleDataAttributes;
|
|
17
|
+
export declare const collapsibleCssVariables: {
|
|
18
|
+
readonly '--disclosure-panel-height': "On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.";
|
|
19
|
+
};
|
|
20
|
+
/** The name of a Collapsible CSS variable. */
|
|
21
|
+
export type CollapsibleCssVariable = keyof typeof collapsibleCssVariables;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styling hooks a Collapsible exposes. Attributes are presence attributes (`''` while the
|
|
3
|
+
* state holds, omitted otherwise) unless the description says they carry a value.
|
|
4
|
+
*/
|
|
5
|
+
export const collapsibleDataAttributes = {
|
|
6
|
+
'data-open': 'On the root, the trigger, the panel and the content: present while open.',
|
|
7
|
+
'data-closed': 'On the root, the trigger, the panel and the content: present while closed, including during the exit transition.',
|
|
8
|
+
'data-entering': 'On the root and the panel (`variant="peek"` has no separate panel): present while the opening animation plays.',
|
|
9
|
+
'data-exiting': 'On the root and the panel (`variant="peek"` has no separate panel): present while the closing animation plays.',
|
|
10
|
+
'data-disabled': 'On the root, the trigger, the panel and the content: present while `disabled`.',
|
|
11
|
+
'data-state': 'On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).',
|
|
12
|
+
'data-size': 'On the root: the resolved `size`.',
|
|
13
|
+
'data-variant': 'On the root: `peek` with `variant="peek"`.'
|
|
14
|
+
};
|
|
15
|
+
export const collapsibleCssVariables = {
|
|
16
|
+
'--disclosure-panel-height': 'On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.'
|
|
17
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const collapsibleDescription = "\n# Collapsible Component\n\nThe Collapsible component provides a way to show and hide content with a toggle trigger. It supports both controlled and uncontrolled modes, keyboard navigation, and smooth slide transitions.\n\n## Basic Usage\n\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tClick to expand\n\t{/snippet}\n\tThis content will be shown when expanded.\n</Collapsible>\n```\n\n## Props\n\n### Core Props\n- **open**: boolean (optional)\n - Current bindable disclosure state.\n\n- **defaultOpen**: boolean (default: false)\n - Initial open state when `open` is omitted.\n - Ignored when `open` prop is provided.\n\n- **disabled**: boolean (default: false)\n - Disables the collapsible trigger and prevents toggling.\n - Applies opacity styling and removes pointer events.\n\n- **onOpenChange**: (open: boolean) => void (optional)\n - Callback fired once after a component-owned open state change.\n - Receives the new open state as parameter.\n\n### Layout Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n - Controls padding and text size of trigger and content.\n - small: Reduced padding (py-2 px-2) and text-sm\n - normal: Standard padding (py-3 px-4) and text-base\n - large: Increased padding (py-4 px-6) and text-lg\n\n- **icon**: 'chevron' | 'plus-minus' | 'none' | Snippet (default: 'chevron')\n - Disclosure indicator rendered in the trigger.\n - chevron: rotating chevron; plus-minus: plus/minus glyph; none: no indicator.\n - Pass a snippet (it receives `{ open }`) for a custom icon.\n\n### Content Props (Slots)\n- **trigger**: Snippet - Content rendered in the toggle button\n - Required for the component to function\n - Typically contains text, icons, or both\n\n- **children**: Snippet<{ open: boolean }> - Content shown when expanded\n - Rendered inside the content container with a slide transition\n - Receives the current `open` state as a payload\n\n### Advanced Props\n- **theme**: CollapsibleThemeProps - Theme configuration overrides\n - Allows customizing styles for container, trigger, and content parts\n\n## Examples\n\n### Example 1 - Uncontrolled\n```svelte\n<script lang=\"ts\">\n\timport { Collapsible } from 'entasis/collapsible';\n\timport { caretDownIcon } from 'entasis/icons/caretDown';\n</script>\n\n<Collapsible defaultOpen={false} icon=\"none\">\n\t{#snippet trigger()}\n\t\t<span>Toggle Content</span>\n\t\t{@render caretDownIcon()}\n\t{/snippet}\n\t<p>This content can be toggled.</p>\n</Collapsible>\n```\n\n### Example 2 - Controlled\n```svelte\n<script>\n\tlet open = false;\n</script>\n\n<Collapsible bind:open={open} onOpenChange={(open) => console.log('State:', open)}>\n\t{#snippet trigger()}\n\t\tToggle (Currently: {open ? 'Open' : 'Closed'})\n\t{/snippet}\n\t<p>Controlled content</p>\n</Collapsible>\n```\n\n### Example 3 - Explicit Children Snippet\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tShow Details\n\t{/snippet}\n\t{#snippet children({ open })}\n\t\t<p>This panel is {open ? 'open' : 'closed'}.</p>\n\t\t<ul>\n\t\t\t<li>Item 1</li>\n\t\t\t<li>Item 2</li>\n\t\t</ul>\n\t{/snippet}\n</Collapsible>\n```\n\n### Example 4 - Disabled State\n```svelte\n<Collapsible disabled={true}>\n\t{#snippet trigger()}\n\t\tDisabled Collapsible\n\t{/snippet}\n\tThis content cannot be toggled.\n</Collapsible>\n```\n\n### Example 5 - Different Sizes\n```svelte\n<Collapsible size=\"small\">\n\t{#snippet trigger()}\n\t\tSmall Collapsible\n\t{/snippet}\n\tSmall content\n</Collapsible>\n\n<Collapsible size=\"large\">\n\t{#snippet trigger()}\n\t\tLarge Collapsible\n\t{/snippet}\n\tLarge content\n</Collapsible>\n```\n\n## Structure\n\nThe component renders:\n- A container `<div>` with data attributes for state\n- A trigger `<button>` with ARIA attributes\n- A content `<div>` with slide transition (only when open)\n\n## Accessibility\n\n- **ARIA Attributes**:\n - `aria-expanded` on trigger indicates open/closed state\n - `aria-controls` links trigger to content element\n - `data-state` attribute provides state information for styling\n\n- **Keyboard Support**:\n - **Enter** or **Space**: Toggles the collapsible\n - Focus management handled by browser default behavior\n\n- **Semantic HTML**:\n - Uses `<button>` element for trigger (proper focus and keyboard handling)\n - Content is hidden from accessibility tree when closed\n\n## Notes\n\n- The component uses Svelte's built-in `slide` transition with a 200ms duration.\n- When `open` prop is provided, the component is controlled. Otherwise, it manages its own state.\n- Content is completely removed from DOM when closed (not just hidden) for better performance.\n\n## Theme Customization\n\nThe Collapsible component uses a theme object that can be customized using the `theme` prop or by setting a global theme.\n\n### Theme Structure\n\nThe theme object contains the following parts:\n- **root**: Main collapsible container styles\n- **trigger**: Toggle trigger button styles\n- **content**: Collapsible content panel styles\n- **icon**: Expand/collapse icon styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for main container\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container size\n\n**trigger**:\n- base: Base classes for trigger button\n- Variants:\n - size: 'small' | 'normal' | 'large' - Trigger padding and text size\n - disabled: boolean - Disabled state styling\n\n**content**:\n- base: Base classes for content panel\n- Variants:\n - size: 'small' | 'normal' | 'large' - Content gap and text size\n\n**icon**:\n- base: Base classes for expand/collapse icon\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Collapsible \n theme={{\n root: {\n base: 'w-full'\n },\n trigger: {\n base: 'flex items-center justify-between w-full',\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n {#snippet trigger()}\n Toggle\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Custom Trigger Styling**:\n```svelte\n<Collapsible \n theme={{\n trigger: {\n base: 'state-layer rounded-lg transition-colors',\n size: {\n large: 'px-6 py-4 text-lg'\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed'\n }\n },\n icon: {\n size: {\n normal: 'size-5'\n }\n }\n }}\n>\n {#snippet trigger()}\n Custom Trigger\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setCollapsibleTheme } from './index.ts';\n \n setCollapsibleTheme({\n root: {\n base: 'w-full flex flex-col'\n },\n trigger: {\n base: 'transition-all hover:opacity-80',\n size: {\n normal: 'px-2 py-2 text-sm'\n }\n },\n content: {\n size: {\n normal: 'gap-2 mt-2'\n }\n }\n });\n</script>\n```\n\n## Motion\n\n- **motion** theme slot, keyed by `variant`: `default` slides the content open on the y axis,\n `peek` animates its clip height on `slow` / `enter`.\n- Ladder: `<Theme components={{ collapsible: { motion } }}>` \u2192 `setCollapsibleTheme({ motion })`\n \u2192 `theme.motion` \u2192 the `transition` prop. Reduced motion collapses it to 0.\n";
|
|
1
|
+
export declare const collapsibleDescription = "\n# Collapsible Component\n\nThe Collapsible component provides a way to show and hide content with a toggle trigger. It supports both controlled and uncontrolled modes, keyboard navigation, and smooth slide transitions.\n\n## Basic Usage\n\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tClick to expand\n\t{/snippet}\n\tThis content will be shown when expanded.\n</Collapsible>\n```\n\n## Props\n\n### Core Props\n- **open**: boolean (optional)\n - Current bindable disclosure state.\n\n- **defaultOpen**: boolean (default: false)\n - Initial open state when `open` is omitted.\n - Ignored when `open` prop is provided.\n\n- **disabled**: boolean (default: false)\n - Disables the collapsible trigger and prevents toggling.\n - Applies opacity styling and removes pointer events.\n\n- **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void (optional)\n - Called before a component-owned open state change: a trigger press or the browser's find-in-page.\n - `open` is the requested state. `details.reason` is `'trigger-press'` or `'find-in-page'`, `details.event` carries the DOM event, and `details.cancel()` keeps the collapsible as it was. See `entasis/types` for `OpenChangeDetails`.\n - Not called for initialization or for changes the parent assigns to `open`.\n\n- **onAfterOpen** / **onAfterClose**: () => void (optional)\n - Called once each time an open or close finishes: after the slide, or at once when no animation plays (reduced motion, zero duration, find-in-page), also when the panel is removed mid-close. Not called for the initial state.\n\n- **hiddenUntilFound**: boolean (default: false)\n - Keeps the closed content in the DOM under `hidden=\"until-found\"`, so the browser's find-in-page, text fragments and `#id` links reach it and open the collapsible (reason `find-in-page`, no animation).\n - Closed content stays out of the accessibility tree and the tab order until then. Cancelling the open-change leaves it closed and findable.\n - A disabled collapsible is not findable: its closed content stays under plain `hidden`.\n - Only the content is skipped while closed, so keep padding, gaps and margins on an element inside the panel (the `content` theme slot already is).\n\n- **keepMounted**: boolean (default: false)\n - Keeps the closed content mounted under `hidden`, preserving its state (form values, scroll, media). Not findable by the browser.\n\n### Layout Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n - Controls padding and text size of trigger and content.\n - small: Reduced padding (py-2 px-2) and text-sm\n - normal: Standard padding (py-3 px-4) and text-base\n - large: Increased padding (py-4 px-6) and text-lg\n\n- **icon**: 'chevron' | 'plus-minus' | 'none' | Snippet (default: 'chevron')\n - Disclosure indicator rendered in the trigger.\n - chevron: rotating chevron; plus-minus: plus/minus glyph; none: no indicator.\n - Pass a snippet (it receives `{ open }`) for a custom icon.\n\n### Content Props (Slots)\n- **trigger**: Snippet - Content rendered in the toggle button\n - Required for the component to function\n - Typically contains text, icons, or both\n\n- **children**: Snippet<{ open: boolean }> - Content shown when expanded\n - Rendered inside the content container, animated by height\n - Receives the current `open` state as a payload\n\n### Advanced Props\n- **theme**: CollapsibleThemeProps - Theme configuration overrides\n - Allows customizing styles for container, trigger, and content parts\n\n- **variant**: 'default' | 'peek' (default: 'default')\n - `peek` keeps the content mounted, clips it to `peekHeight` and fades the edge while closed. While closed, links and controls below the visible preview are inert so Tab never lands on clipped content. The clipped text itself stays in the accessibility tree (the clip is visual only, like a read-more preview), so screen readers read all of it. `hiddenUntilFound` and `keepMounted` apply to `default` only.\n\n## Examples\n\n### Example 1 - Uncontrolled\n```svelte\n<script lang=\"ts\">\n\timport { Collapsible } from 'entasis/collapsible';\n\timport { caretDownIcon } from 'entasis/icons/caretDown';\n</script>\n\n<Collapsible defaultOpen={false} icon=\"none\">\n\t{#snippet trigger()}\n\t\t<span>Toggle Content</span>\n\t\t{@render caretDownIcon()}\n\t{/snippet}\n\t<p>This content can be toggled.</p>\n</Collapsible>\n```\n\n### Example 2 - Controlled\n```svelte\n<script>\n\tlet open = false;\n</script>\n\n<Collapsible bind:open={open} onOpenChange={(open) => console.log('State:', open)}>\n\t{#snippet trigger()}\n\t\tToggle (Currently: {open ? 'Open' : 'Closed'})\n\t{/snippet}\n\t<p>Controlled content</p>\n</Collapsible>\n```\n\n### Example 3 - Explicit Children Snippet\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tShow Details\n\t{/snippet}\n\t{#snippet children({ open })}\n\t\t<p>This panel is {open ? 'open' : 'closed'}.</p>\n\t\t<ul>\n\t\t\t<li>Item 1</li>\n\t\t\t<li>Item 2</li>\n\t\t</ul>\n\t{/snippet}\n</Collapsible>\n```\n\n### Example 4 - Disabled State\n```svelte\n<Collapsible disabled={true}>\n\t{#snippet trigger()}\n\t\tDisabled Collapsible\n\t{/snippet}\n\tThis content cannot be toggled.\n</Collapsible>\n```\n\n### Example 5 - Different Sizes\n```svelte\n<Collapsible size=\"small\">\n\t{#snippet trigger()}\n\t\tSmall Collapsible\n\t{/snippet}\n\tSmall content\n</Collapsible>\n\n<Collapsible size=\"large\">\n\t{#snippet trigger()}\n\t\tLarge Collapsible\n\t{/snippet}\n\tLarge content\n</Collapsible>\n```\n\n### Example 6 - Find in page\n```svelte\n<!-- Ctrl+F for \"refund window\" opens the collapsible; onOpenChange reports reason 'find-in-page'. -->\n<Collapsible hiddenUntilFound onOpenChange={(open, details) => console.log(open, details.reason)}>\n\t{#snippet trigger()}\n\t\tRefund policy\n\t{/snippet}\n\t<p>The refund window is 30 days.</p>\n</Collapsible>\n```\n\n## Structure\n\nThe component renders:\n- A container `<div>` with data attributes for state\n- A trigger `<button>` with ARIA attributes\n- A content panel `<div>` (only when open, or while closed with `keepMounted` / `hiddenUntilFound`) holding the themed content `<div>`; it carries `hidden` or `hidden=\"until-found\"` while closed\n- Styling hooks: `data-open` / `data-closed` on the root, trigger and content, `data-disabled`, and `data-entering` / `data-exiting` on the root and panel; the panel exposes `--disclosure-panel-height` while it animates\n\n## Styling hooks\n\nEvery part carries the open state, so a `data-open:` variant styles it without reading component state.\n\nAttributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.\n\n**Data attributes**\n- `data-open`: On the root, the trigger, the panel and the content: present while open.\n- `data-closed`: On the root, the trigger, the panel and the content: present while closed, including during the exit transition.\n- `data-entering`: On the root and the panel (`variant=\"peek\"` has no separate panel): present while the opening animation plays.\n- `data-exiting`: On the root and the panel (`variant=\"peek\"` has no separate panel): present while the closing animation plays.\n- `data-disabled`: On the root, the trigger, the panel and the content: present while `disabled`.\n- `data-state`: On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).\n- `data-size`: On the root: the resolved `size`.\n- `data-variant`: On the root: `peek` with `variant=\"peek\"`.\n\n**CSS variables**\n- `--disclosure-panel-height`: On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.\n\nThe typed maps `collapsibleDataAttributes` and `collapsibleCssVariables` (from `entasis/collapsible`) list each name with its meaning.\n\n## Accessibility\n\n- **ARIA Attributes**:\n - `aria-expanded` on trigger indicates open/closed state\n - `aria-controls` links trigger to the content element while it exists in the DOM\n - `data-state` attribute provides state information for styling\n\n- **Keyboard Support**:\n - **Enter** or **Space**: Toggles the collapsible\n - Focus management handled by browser default behavior\n\n- **Semantic HTML**:\n - Uses `<button>` element for trigger (proper focus and keyboard handling)\n - Closed content is not in the DOM (or is `hidden` / `hidden=\"until-found\"`), so it is neither read nor tabbable\n\n## Notes\n\n- The panel animates its height with the theme's `motion` slot (`duration`, `delay`, `easing`); reduced motion disables it.\n- Migration: the `accessible` and `srOnlyContent` props are removed. They rendered the closed content visibly; use `hiddenUntilFound` or `keepMounted` instead.\n- When `open` prop is provided, the component is controlled. Otherwise, it manages its own state.\n- Content is removed from the DOM when closed unless `keepMounted` or `hiddenUntilFound` is set.\n\n## Theme Customization\n\nThe Collapsible component uses a theme object that can be customized using the `theme` prop or by setting a global theme.\n\n### Theme Structure\n\nThe theme object contains the following parts:\n- **root**: Main collapsible container styles\n- **trigger**: Toggle trigger button styles\n- **content**: Collapsible content styles, on the element inside the panel\n- **icon**: Expand/collapse icon styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for main container\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container size\n\n**trigger**:\n- base: Base classes for trigger button\n- Variants:\n - size: 'small' | 'normal' | 'large' - Trigger padding and text size\n - disabled: boolean - Disabled state styling\n\n**content**:\n- base: Base classes for content panel\n- Variants:\n - size: 'small' | 'normal' | 'large' - Content gap and text size\n\n**icon**:\n- base: Base classes for expand/collapse icon\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Collapsible \n theme={{\n root: {\n base: 'w-full'\n },\n trigger: {\n base: 'flex items-center justify-between w-full',\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n {#snippet trigger()}\n Toggle\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Custom Trigger Styling**:\n```svelte\n<Collapsible \n theme={{\n trigger: {\n base: 'state-layer rounded-lg transition-colors',\n size: {\n large: 'px-6 py-4 text-lg'\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed'\n }\n },\n icon: {\n size: {\n normal: 'size-5'\n }\n }\n }}\n>\n {#snippet trigger()}\n Custom Trigger\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setCollapsibleTheme } from './index.ts';\n \n setCollapsibleTheme({\n root: {\n base: 'w-full flex flex-col'\n },\n trigger: {\n base: 'transition-all hover:opacity-80',\n size: {\n normal: 'px-2 py-2 text-sm'\n }\n },\n content: {\n size: {\n normal: 'gap-2 mt-2'\n }\n }\n });\n</script>\n```\n\n## Motion\n\n- **motion** theme slot, keyed by `variant`: `default` animates the panel's height with the\n preset's `duration` / `delay` / `easing`, `peek` animates its clip height on `slow` / `enter`.\n- Ladder: `<Theme components={{ collapsible: { motion } }}>` \u2192 `setCollapsibleTheme({ motion })`\n \u2192 `theme.motion` \u2192 the `transition` prop. Reduced motion collapses it to 0.\n";
|
|
@@ -28,9 +28,22 @@ The Collapsible component provides a way to show and hide content with a toggle
|
|
|
28
28
|
- Disables the collapsible trigger and prevents toggling.
|
|
29
29
|
- Applies opacity styling and removes pointer events.
|
|
30
30
|
|
|
31
|
-
- **onOpenChange**: (open: boolean) => void (optional)
|
|
32
|
-
-
|
|
33
|
-
-
|
|
31
|
+
- **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void (optional)
|
|
32
|
+
- Called before a component-owned open state change: a trigger press or the browser's find-in-page.
|
|
33
|
+
- \`open\` is the requested state. \`details.reason\` is \`'trigger-press'\` or \`'find-in-page'\`, \`details.event\` carries the DOM event, and \`details.cancel()\` keeps the collapsible as it was. See \`entasis/types\` for \`OpenChangeDetails\`.
|
|
34
|
+
- Not called for initialization or for changes the parent assigns to \`open\`.
|
|
35
|
+
|
|
36
|
+
- **onAfterOpen** / **onAfterClose**: () => void (optional)
|
|
37
|
+
- Called once each time an open or close finishes: after the slide, or at once when no animation plays (reduced motion, zero duration, find-in-page), also when the panel is removed mid-close. Not called for the initial state.
|
|
38
|
+
|
|
39
|
+
- **hiddenUntilFound**: boolean (default: false)
|
|
40
|
+
- Keeps the closed content in the DOM under \`hidden="until-found"\`, so the browser's find-in-page, text fragments and \`#id\` links reach it and open the collapsible (reason \`find-in-page\`, no animation).
|
|
41
|
+
- Closed content stays out of the accessibility tree and the tab order until then. Cancelling the open-change leaves it closed and findable.
|
|
42
|
+
- A disabled collapsible is not findable: its closed content stays under plain \`hidden\`.
|
|
43
|
+
- Only the content is skipped while closed, so keep padding, gaps and margins on an element inside the panel (the \`content\` theme slot already is).
|
|
44
|
+
|
|
45
|
+
- **keepMounted**: boolean (default: false)
|
|
46
|
+
- Keeps the closed content mounted under \`hidden\`, preserving its state (form values, scroll, media). Not findable by the browser.
|
|
34
47
|
|
|
35
48
|
### Layout Props
|
|
36
49
|
- **size**: 'small' | 'normal' | 'large' (default: 'normal')
|
|
@@ -50,13 +63,16 @@ The Collapsible component provides a way to show and hide content with a toggle
|
|
|
50
63
|
- Typically contains text, icons, or both
|
|
51
64
|
|
|
52
65
|
- **children**: Snippet<{ open: boolean }> - Content shown when expanded
|
|
53
|
-
- Rendered inside the content container
|
|
66
|
+
- Rendered inside the content container, animated by height
|
|
54
67
|
- Receives the current \`open\` state as a payload
|
|
55
68
|
|
|
56
69
|
### Advanced Props
|
|
57
70
|
- **theme**: CollapsibleThemeProps - Theme configuration overrides
|
|
58
71
|
- Allows customizing styles for container, trigger, and content parts
|
|
59
72
|
|
|
73
|
+
- **variant**: 'default' | 'peek' (default: 'default')
|
|
74
|
+
- \`peek\` keeps the content mounted, clips it to \`peekHeight\` and fades the edge while closed. While closed, links and controls below the visible preview are inert so Tab never lands on clipped content. The clipped text itself stays in the accessibility tree (the clip is visual only, like a read-more preview), so screen readers read all of it. \`hiddenUntilFound\` and \`keepMounted\` apply to \`default\` only.
|
|
75
|
+
|
|
60
76
|
## Examples
|
|
61
77
|
|
|
62
78
|
### Example 1 - Uncontrolled
|
|
@@ -132,18 +148,51 @@ The Collapsible component provides a way to show and hide content with a toggle
|
|
|
132
148
|
</Collapsible>
|
|
133
149
|
\`\`\`
|
|
134
150
|
|
|
151
|
+
### Example 6 - Find in page
|
|
152
|
+
\`\`\`svelte
|
|
153
|
+
<!-- Ctrl+F for "refund window" opens the collapsible; onOpenChange reports reason 'find-in-page'. -->
|
|
154
|
+
<Collapsible hiddenUntilFound onOpenChange={(open, details) => console.log(open, details.reason)}>
|
|
155
|
+
{#snippet trigger()}
|
|
156
|
+
Refund policy
|
|
157
|
+
{/snippet}
|
|
158
|
+
<p>The refund window is 30 days.</p>
|
|
159
|
+
</Collapsible>
|
|
160
|
+
\`\`\`
|
|
161
|
+
|
|
135
162
|
## Structure
|
|
136
163
|
|
|
137
164
|
The component renders:
|
|
138
165
|
- A container \`<div>\` with data attributes for state
|
|
139
166
|
- A trigger \`<button>\` with ARIA attributes
|
|
140
|
-
- A content \`<div>\`
|
|
167
|
+
- A content panel \`<div>\` (only when open, or while closed with \`keepMounted\` / \`hiddenUntilFound\`) holding the themed content \`<div>\`; it carries \`hidden\` or \`hidden="until-found"\` while closed
|
|
168
|
+
- Styling hooks: \`data-open\` / \`data-closed\` on the root, trigger and content, \`data-disabled\`, and \`data-entering\` / \`data-exiting\` on the root and panel; the panel exposes \`--disclosure-panel-height\` while it animates
|
|
169
|
+
|
|
170
|
+
## Styling hooks
|
|
171
|
+
|
|
172
|
+
Every part carries the open state, so a \`data-open:\` variant styles it without reading component state.
|
|
173
|
+
|
|
174
|
+
Attributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.
|
|
175
|
+
|
|
176
|
+
**Data attributes**
|
|
177
|
+
- \`data-open\`: On the root, the trigger, the panel and the content: present while open.
|
|
178
|
+
- \`data-closed\`: On the root, the trigger, the panel and the content: present while closed, including during the exit transition.
|
|
179
|
+
- \`data-entering\`: On the root and the panel (\`variant="peek"\` has no separate panel): present while the opening animation plays.
|
|
180
|
+
- \`data-exiting\`: On the root and the panel (\`variant="peek"\` has no separate panel): present while the closing animation plays.
|
|
181
|
+
- \`data-disabled\`: On the root, the trigger, the panel and the content: present while \`disabled\`.
|
|
182
|
+
- \`data-state\`: On the root, the trigger, the panel and the content: \`open\` or \`closed\` (kept for compatibility; prefer \`data-open\` / \`data-closed\`).
|
|
183
|
+
- \`data-size\`: On the root: the resolved \`size\`.
|
|
184
|
+
- \`data-variant\`: On the root: \`peek\` with \`variant="peek"\`.
|
|
185
|
+
|
|
186
|
+
**CSS variables**
|
|
187
|
+
- \`--disclosure-panel-height\`: On the panel: its measured height in px while it animates, \`auto\` once open and \`0px\` once closed.
|
|
188
|
+
|
|
189
|
+
The typed maps \`collapsibleDataAttributes\` and \`collapsibleCssVariables\` (from \`entasis/collapsible\`) list each name with its meaning.
|
|
141
190
|
|
|
142
191
|
## Accessibility
|
|
143
192
|
|
|
144
193
|
- **ARIA Attributes**:
|
|
145
194
|
- \`aria-expanded\` on trigger indicates open/closed state
|
|
146
|
-
- \`aria-controls\` links trigger to content element
|
|
195
|
+
- \`aria-controls\` links trigger to the content element while it exists in the DOM
|
|
147
196
|
- \`data-state\` attribute provides state information for styling
|
|
148
197
|
|
|
149
198
|
- **Keyboard Support**:
|
|
@@ -152,13 +201,14 @@ The component renders:
|
|
|
152
201
|
|
|
153
202
|
- **Semantic HTML**:
|
|
154
203
|
- Uses \`<button>\` element for trigger (proper focus and keyboard handling)
|
|
155
|
-
-
|
|
204
|
+
- Closed content is not in the DOM (or is \`hidden\` / \`hidden="until-found"\`), so it is neither read nor tabbable
|
|
156
205
|
|
|
157
206
|
## Notes
|
|
158
207
|
|
|
159
|
-
- The
|
|
208
|
+
- The panel animates its height with the theme's \`motion\` slot (\`duration\`, \`delay\`, \`easing\`); reduced motion disables it.
|
|
209
|
+
- Migration: the \`accessible\` and \`srOnlyContent\` props are removed. They rendered the closed content visibly; use \`hiddenUntilFound\` or \`keepMounted\` instead.
|
|
160
210
|
- When \`open\` prop is provided, the component is controlled. Otherwise, it manages its own state.
|
|
161
|
-
- Content is
|
|
211
|
+
- Content is removed from the DOM when closed unless \`keepMounted\` or \`hiddenUntilFound\` is set.
|
|
162
212
|
|
|
163
213
|
## Theme Customization
|
|
164
214
|
|
|
@@ -169,7 +219,7 @@ The Collapsible component uses a theme object that can be customized using the \
|
|
|
169
219
|
The theme object contains the following parts:
|
|
170
220
|
- **root**: Main collapsible container styles
|
|
171
221
|
- **trigger**: Toggle trigger button styles
|
|
172
|
-
- **content**: Collapsible content panel
|
|
222
|
+
- **content**: Collapsible content styles, on the element inside the panel
|
|
173
223
|
- **icon**: Expand/collapse icon styles
|
|
174
224
|
|
|
175
225
|
### Available Variants
|
|
@@ -272,8 +322,8 @@ The theme object contains the following parts:
|
|
|
272
322
|
|
|
273
323
|
## Motion
|
|
274
324
|
|
|
275
|
-
- **motion** theme slot, keyed by \`variant\`: \`default\`
|
|
276
|
-
\`peek\` animates its clip height on \`slow\` / \`enter\`.
|
|
325
|
+
- **motion** theme slot, keyed by \`variant\`: \`default\` animates the panel's height with the
|
|
326
|
+
preset's \`duration\` / \`delay\` / \`easing\`, \`peek\` animates its clip height on \`slow\` / \`enter\`.
|
|
277
327
|
- Ladder: \`<Theme components={{ collapsible: { motion } }}>\` → \`setCollapsibleTheme({ motion })\`
|
|
278
328
|
→ \`theme.motion\` → the \`transition\` prop. Reduced motion collapses it to 0.
|
|
279
329
|
`;
|
|
@@ -3,6 +3,7 @@ import type { ResponsiveProps } from '../Theme/theme.js';
|
|
|
3
3
|
import type { FSOProps } from '../../transitions/transition.js';
|
|
4
4
|
import type { WithSlot, Slot } from '../Slot/slot.js';
|
|
5
5
|
import type { WithAttachments } from '../../types/props.js';
|
|
6
|
+
import type { OpenChangeHandler } from '../../utils/openChange.js';
|
|
6
7
|
import type { CollapsibleThemeProps } from './collapsible.theme.js';
|
|
7
8
|
type CollapsibleBaseProps = {
|
|
8
9
|
/**
|
|
@@ -26,9 +27,40 @@ type CollapsibleBaseProps = {
|
|
|
26
27
|
*/
|
|
27
28
|
disabled?: boolean;
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* Called before the open state changes, whenever the user (a trigger press, or the browser's
|
|
31
|
+
* find-in-page reaching hidden content) or an imperative call asks to open or close it.
|
|
32
|
+
* `details.reason` says why, `details.event` carries the DOM event, and `details.cancel()`
|
|
33
|
+
* keeps the collapsible as it was. Inside the callback `open` still holds the previous state.
|
|
34
|
+
* Not called for initialization or for changes the parent assigns to `open`.
|
|
30
35
|
*/
|
|
31
|
-
onOpenChange?:
|
|
36
|
+
onOpenChange?: OpenChangeHandler | null | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Called once each time an open finishes: after the slide, or at once when no animation runs
|
|
39
|
+
* (reduced motion, a zero duration, find-in-page). Not called for the initial state.
|
|
40
|
+
*/
|
|
41
|
+
onAfterOpen?: () => void;
|
|
42
|
+
/**
|
|
43
|
+
* Called once each time a close finishes: after the slide, at once when no animation runs, or
|
|
44
|
+
* when the panel is removed mid-close. Not called for the initial state.
|
|
45
|
+
*/
|
|
46
|
+
onAfterClose?: () => void;
|
|
47
|
+
/**
|
|
48
|
+
* Keeps the closed content in the DOM under `hidden="until-found"`, so the browser's
|
|
49
|
+
* find-in-page, text fragments and `#id` links can reach it and open the collapsible
|
|
50
|
+
* (reason `find-in-page`, no animation). Closed content is hidden from assistive technology
|
|
51
|
+
* and from the tab order until then. A parent that refuses the change leaves it closed. A disabled
|
|
52
|
+
* collapsible is not findable: its closed content stays under plain `hidden`.
|
|
53
|
+
* Applies to the `default` variant; `peek` always keeps its content mounted.
|
|
54
|
+
* @default false
|
|
55
|
+
*/
|
|
56
|
+
hiddenUntilFound?: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Keeps the closed content mounted under `hidden`, preserving its state (form values, scroll,
|
|
59
|
+
* media). It is not findable by the browser; use `hiddenUntilFound` for that. Applies to the
|
|
60
|
+
* `default` variant.
|
|
61
|
+
* @default false
|
|
62
|
+
*/
|
|
63
|
+
keepMounted?: boolean;
|
|
32
64
|
/**
|
|
33
65
|
* Size variant of the collapsible.
|
|
34
66
|
*/
|
|
@@ -42,14 +74,13 @@ type CollapsibleBaseProps = {
|
|
|
42
74
|
* Theme configuration overrides.
|
|
43
75
|
*/
|
|
44
76
|
theme?: CollapsibleThemeProps;
|
|
45
|
-
/**
|
|
46
|
-
* Whether the collapsible is accessible.
|
|
47
|
-
*/
|
|
48
|
-
accessible?: boolean;
|
|
49
77
|
/**
|
|
50
78
|
* Visual variant. `default` toggles the content in and out with a slide.
|
|
51
79
|
* `peek` keeps the content mounted, clips it to `peekHeight` and fades the
|
|
52
|
-
* edge while closed, with the trigger floating as a pill over the fade
|
|
80
|
+
* edge while closed, with the trigger floating as a pill over the fade; links and controls
|
|
81
|
+
* below the visible preview are inert until it opens. The clipped text stays in the
|
|
82
|
+
* accessibility tree on purpose: the clip is a visual preview, so screen reader users read the
|
|
83
|
+
* whole content (a "read more" pattern) and the trigger's `aria-expanded` reports the state.
|
|
53
84
|
*/
|
|
54
85
|
variant?: 'default' | 'peek';
|
|
55
86
|
/**
|
|
@@ -62,7 +93,7 @@ type CollapsibleBaseProps = {
|
|
|
62
93
|
*/
|
|
63
94
|
transition?: ResponsiveProps<FSOProps>;
|
|
64
95
|
};
|
|
65
|
-
type CollapsibleSlotProps = WithSlot<CollapsibleBaseProps, 'trigger' | 'children'
|
|
96
|
+
type CollapsibleSlotProps = WithSlot<CollapsibleBaseProps, 'trigger' | 'children', {
|
|
66
97
|
open: boolean;
|
|
67
98
|
}>;
|
|
68
99
|
export type CollapsibleProps = WithAttachments<CollapsibleSlotProps>;
|
|
@@ -45,8 +45,10 @@ const defaultCollapsibleContent = cva({
|
|
|
45
45
|
size: 'normal'
|
|
46
46
|
}
|
|
47
47
|
});
|
|
48
|
+
// The glyph fills the box: drawn at its own 16px it overflowed a small (12px) box downward and
|
|
49
|
+
// sat in the top of a large (20px) one, so the chevron was off the text's centre.
|
|
48
50
|
const defaultCollapsibleIcon = cva({
|
|
49
|
-
base: 'size-4 transition-transform flex-shrink-0',
|
|
51
|
+
base: 'size-4 transition-transform flex-shrink-0 [&>svg]:size-full',
|
|
50
52
|
variants: {
|
|
51
53
|
size: {
|
|
52
54
|
small: 'size-3',
|
|
@@ -2,3 +2,4 @@ export { default as Collapsible } from './Collapsible.svelte';
|
|
|
2
2
|
export type { CollapsibleProps } from './collapsible.props.js';
|
|
3
3
|
export type { CollapsibleTheme, CollapsibleThemeProps } from './collapsible.theme.js';
|
|
4
4
|
export { collapsibleTheme, setCollapsibleTheme, useCollapsibleTheme } from './collapsible.theme.js';
|
|
5
|
+
export { collapsibleDataAttributes, collapsibleCssVariables, type CollapsibleDataAttribute, type CollapsibleCssVariable } from './collapsible.attributes.js';
|