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
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// The shared trigger contract (AGENTS.md proposed law 4): any element can open a disclosure
|
|
2
|
+
// owner's popup. The owner writes `aria-haspopup`, `aria-expanded` and `aria-controls` on it,
|
|
3
|
+
// a non-control element becomes a keyboard-reachable button, and a press on it requests the
|
|
4
|
+
// change with `reason: 'trigger-press'` unless the element's own handler already acted or called
|
|
5
|
+
// `event.preventDefault()`.
|
|
6
|
+
import { focusableSelector } from './focus.js';
|
|
7
|
+
/** Elements that may carry popup ARIA state. */
|
|
8
|
+
export const POPUP_CONTROL = 'button, a[href], input, select, textarea, summary, [role="button"], [role="link"], [role="combobox"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="tab"], [role="option"], [role="treeitem"], [role="gridcell"], [role="switch"], [role="checkbox"]';
|
|
9
|
+
/** Elements the browser already focuses and activates from the keyboard. */
|
|
10
|
+
export const NATIVE_CONTROL = 'button, a[href], input, select, textarea, summary';
|
|
11
|
+
const TRIGGER_ARIA = {
|
|
12
|
+
haspopup: 'aria-haspopup',
|
|
13
|
+
expanded: 'aria-expanded',
|
|
14
|
+
controls: 'aria-controls'
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Writes the popup ARIA attributes on a trigger. Call inside an `$effect` so they follow the
|
|
18
|
+
* state. Only real controls carry them: a wrapper `div` or a presentational `span` used as an
|
|
19
|
+
* anchor must not (axe: aria-allowed-attr).
|
|
20
|
+
*/
|
|
21
|
+
export function writePopupAria(node, props) {
|
|
22
|
+
if (!node.matches(POPUP_CONTROL))
|
|
23
|
+
return;
|
|
24
|
+
for (const [prop, value] of Object.entries(props)) {
|
|
25
|
+
const name = TRIGGER_ARIA[prop];
|
|
26
|
+
if (value === undefined)
|
|
27
|
+
node.removeAttribute(name);
|
|
28
|
+
else
|
|
29
|
+
node.setAttribute(name, String(value));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Makes `node` a trigger that activates on click, and on Enter and Space when it is not a native
|
|
34
|
+
* control. A non-control element also gets `role="button"` and `tabindex="0"`. Returns cleanup.
|
|
35
|
+
*/
|
|
36
|
+
export function triggerActivation(node, options) {
|
|
37
|
+
const nativeControl = node.matches(NATIVE_CONTROL);
|
|
38
|
+
if (!node.matches(POPUP_CONTROL) && !node.hasAttribute('role')) {
|
|
39
|
+
node.setAttribute('role', 'button');
|
|
40
|
+
}
|
|
41
|
+
if (!nativeControl && !node.hasAttribute('tabindex'))
|
|
42
|
+
node.tabIndex = 0;
|
|
43
|
+
// The element's own handler wins. Svelte delegates `onclick` to the root, so it runs after
|
|
44
|
+
// this listener: the default action waits until the event has finished dispatching, then
|
|
45
|
+
// runs only if nothing cancelled the event or asked for an open state meanwhile.
|
|
46
|
+
let pending;
|
|
47
|
+
const press = (event) => {
|
|
48
|
+
if (options.enabled && !options.enabled())
|
|
49
|
+
return;
|
|
50
|
+
const requests = options.requests();
|
|
51
|
+
clearTimeout(pending);
|
|
52
|
+
pending = setTimeout(() => {
|
|
53
|
+
if (event.defaultPrevented || options.requests() !== requests)
|
|
54
|
+
return;
|
|
55
|
+
options.activate(event);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const onKeydown = (event) => {
|
|
59
|
+
if (nativeControl || event.target !== node)
|
|
60
|
+
return;
|
|
61
|
+
if (event.key !== 'Enter' && event.key !== ' ')
|
|
62
|
+
return;
|
|
63
|
+
event.preventDefault();
|
|
64
|
+
const requests = options.requests();
|
|
65
|
+
clearTimeout(pending);
|
|
66
|
+
pending = setTimeout(() => {
|
|
67
|
+
if (options.requests() !== requests || (options.enabled && !options.enabled()))
|
|
68
|
+
return;
|
|
69
|
+
options.activate(event);
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
node.addEventListener('click', press);
|
|
73
|
+
node.addEventListener('keydown', onKeydown);
|
|
74
|
+
return () => {
|
|
75
|
+
clearTimeout(pending);
|
|
76
|
+
node.removeEventListener('click', press);
|
|
77
|
+
node.removeEventListener('keydown', onKeydown);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* The element focus returns to when a popup opened from `trigger` closes: the trigger when it is
|
|
82
|
+
* focusable, else the focusable element inside it that was pressed or focused (the country button
|
|
83
|
+
* inside a phone field's wrapper), else `null` (the focus scope's own default).
|
|
84
|
+
*/
|
|
85
|
+
export function triggerFocusTarget(trigger, event) {
|
|
86
|
+
if (trigger.matches(focusableSelector) && !trigger.matches(':disabled'))
|
|
87
|
+
return trigger;
|
|
88
|
+
const active = trigger.ownerDocument.activeElement;
|
|
89
|
+
if (active instanceof HTMLElement && active !== trigger && trigger.contains(active))
|
|
90
|
+
return active;
|
|
91
|
+
const target = event?.target;
|
|
92
|
+
if (target instanceof Element) {
|
|
93
|
+
const focusable = target.closest(focusableSelector);
|
|
94
|
+
if (focusable && trigger.contains(focusable))
|
|
95
|
+
return focusable;
|
|
96
|
+
}
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
/** The element that has focus now, or `null` when nothing does (the body). */
|
|
100
|
+
export function focusedElement(document = globalThis.document) {
|
|
101
|
+
const active = document?.activeElement;
|
|
102
|
+
return active instanceof HTMLElement && active !== document.body ? active : null;
|
|
103
|
+
}
|
|
@@ -3,10 +3,19 @@ export interface TypeaheadOptions<Item> {
|
|
|
3
3
|
getText: (item: Item) => string;
|
|
4
4
|
getCurrentIndex: () => number;
|
|
5
5
|
onMatch: (index: number, item: Item) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Items the search steps over, such as disabled or hidden ones: a match on one of them moves
|
|
8
|
+
* on to the next match instead of ending the search.
|
|
9
|
+
*/
|
|
10
|
+
isItemDisabled?: (item: Item) => boolean;
|
|
6
11
|
/** Milliseconds of silence before the buffer resets. */
|
|
7
12
|
timeout?: number;
|
|
8
13
|
}
|
|
14
|
+
/** A field the user types into: text inputs, textareas and contenteditable regions. */
|
|
15
|
+
export declare const isTextEntry: (target: EventTarget | null) => target is HTMLElement;
|
|
9
16
|
export declare function createTypeahead<Item>(options: TypeaheadOptions<Item>): {
|
|
10
17
|
handleKey: (event: KeyboardEvent) => boolean;
|
|
11
18
|
reset: () => void;
|
|
19
|
+
/** True while the buffer holds typed characters (until the timeout or a `reset`). */
|
|
20
|
+
readonly isTyping: boolean;
|
|
12
21
|
};
|
package/dist/utils/typeahead.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
const
|
|
1
|
+
const nonTextInputTypes = ['button', 'checkbox', 'radio', 'range', 'submit', 'reset', 'image'];
|
|
2
|
+
/** A field the user types into: text inputs, textareas and contenteditable regions. */
|
|
3
|
+
export const isTextEntry = (target) => typeof HTMLElement !== 'undefined' &&
|
|
2
4
|
target instanceof HTMLElement &&
|
|
3
5
|
(target.isContentEditable ||
|
|
4
6
|
target.tagName === 'TEXTAREA' ||
|
|
5
|
-
(target.tagName === 'INPUT' &&
|
|
6
|
-
!['button', 'checkbox', 'radio', 'range', 'submit', 'reset'].includes(target.type)));
|
|
7
|
+
(target.tagName === 'INPUT' && !nonTextInputTypes.includes(target.type)));
|
|
7
8
|
export function createTypeahead(options) {
|
|
8
9
|
let buffer = '';
|
|
9
10
|
let timer = null;
|
|
11
|
+
/** Empties the buffer and clears its timer; call it on focus-out and on destroy. */
|
|
10
12
|
const reset = () => {
|
|
11
13
|
buffer = '';
|
|
12
14
|
if (timer)
|
|
@@ -21,12 +23,12 @@ export function createTypeahead(options) {
|
|
|
21
23
|
return false;
|
|
22
24
|
if (event.key === ' ' && buffer === '')
|
|
23
25
|
return false; // Space activates, it does not search
|
|
24
|
-
if (timer)
|
|
25
|
-
clearTimeout(timer);
|
|
26
|
-
timer = setTimeout(reset, options.timeout ?? 1000);
|
|
27
26
|
const items = options.getItems();
|
|
28
27
|
if (items.length === 0)
|
|
29
28
|
return false;
|
|
29
|
+
if (timer)
|
|
30
|
+
clearTimeout(timer);
|
|
31
|
+
timer = setTimeout(reset, options.timeout ?? 1000);
|
|
30
32
|
buffer += event.key.toLowerCase();
|
|
31
33
|
const repeated = buffer.length > 1 && [...buffer].every((c) => c === buffer[0]);
|
|
32
34
|
const needle = repeated ? buffer[0] : buffer;
|
|
@@ -35,12 +37,22 @@ export function createTypeahead(options) {
|
|
|
35
37
|
const start = repeated || buffer.length === 1 ? current + 1 : current;
|
|
36
38
|
for (let step = 0; step < items.length; step += 1) {
|
|
37
39
|
const index = (((start + step) % items.length) + items.length) % items.length;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
const item = items[index];
|
|
41
|
+
if (options.isItemDisabled?.(item))
|
|
42
|
+
continue;
|
|
43
|
+
if (options.getText(item).trim().toLowerCase().startsWith(needle)) {
|
|
44
|
+
options.onMatch(index, item);
|
|
40
45
|
return true;
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
return true;
|
|
44
49
|
};
|
|
45
|
-
return {
|
|
50
|
+
return {
|
|
51
|
+
handleKey,
|
|
52
|
+
reset,
|
|
53
|
+
/** True while the buffer holds typed characters (until the timeout or a `reset`). */
|
|
54
|
+
get isTyping() {
|
|
55
|
+
return buffer !== '';
|
|
56
|
+
}
|
|
57
|
+
};
|
|
46
58
|
}
|
|
@@ -144,7 +144,7 @@ export type DndOver = {
|
|
|
144
144
|
* containers on its own.
|
|
145
145
|
*
|
|
146
146
|
* Styling hooks: `data-dnd-dragging` on the dragged item (default 0.4 opacity
|
|
147
|
-
* via
|
|
147
|
+
* via the Tailwind plugin base styles), `data-dnd-over` on a hovered container (an EMPTY
|
|
148
148
|
* hovered list gets a default primary tint instead of an indicator line —
|
|
149
149
|
* there is no index to point at; override via your own `data-dnd-over`
|
|
150
150
|
* styles), `data-dnd-indicator` on the shared indicator line,
|
|
@@ -80,27 +80,12 @@ const toLogicalEdge = (physical, element, axis) => {
|
|
|
80
80
|
return physical === 'left' ? 'right' : physical === 'right' ? 'left' : physical;
|
|
81
81
|
};
|
|
82
82
|
// ---------------------------------------------------------------------------
|
|
83
|
-
// Drop indicator
|
|
84
|
-
//
|
|
85
|
-
//
|
|
83
|
+
// Drop indicator: one fixed-position line for the whole app, managed imperatively. The default
|
|
84
|
+
// dragging style and the empty-list tint are plain rules in the Tailwind plugin CSS
|
|
85
|
+
// (`tailwind/global.ts`), so nothing is injected into the document head and a strict CSP needs
|
|
86
|
+
// no nonce for them. Override via the [data-dnd-indicator] / [data-dnd-dragging] selectors.
|
|
86
87
|
// ---------------------------------------------------------------------------
|
|
87
88
|
let indicatorEl = null;
|
|
88
|
-
// Injected once per document, from the list attachment — indicator-less
|
|
89
|
-
// (preview) lists need the data-dnd-dragging default and the empty-list tint
|
|
90
|
-
// too, not just lists that ever draw the line.
|
|
91
|
-
const ensureBaseStyles = () => {
|
|
92
|
-
if (document.querySelector('style[data-dnd-styles]'))
|
|
93
|
-
return;
|
|
94
|
-
const style = document.createElement('style');
|
|
95
|
-
style.setAttribute('data-dnd-styles', '');
|
|
96
|
-
// The empty-list rule is wrapped in :where() (zero specificity) so any
|
|
97
|
-
// consumer class on the container wins over the default tint.
|
|
98
|
-
style.textContent =
|
|
99
|
-
'[data-dnd-dragging]{opacity:.4;}' +
|
|
100
|
-
':where([data-dnd-over="true"]:not(:has([data-dnd-item]))){' +
|
|
101
|
-
'background-color:color-mix(in oklab, var(--color-primary, currentColor) 6%, transparent);}';
|
|
102
|
-
document.head.appendChild(style);
|
|
103
|
-
};
|
|
104
89
|
const ensureIndicator = () => {
|
|
105
90
|
// Query the DOM (not just the module variable) so HMR re-evaluations reuse
|
|
106
91
|
// the existing node instead of orphaning it.
|
|
@@ -118,7 +103,6 @@ const ensureIndicator = () => {
|
|
|
118
103
|
display: 'none'
|
|
119
104
|
});
|
|
120
105
|
document.body.appendChild(indicatorEl);
|
|
121
|
-
ensureBaseStyles();
|
|
122
106
|
return indicatorEl;
|
|
123
107
|
};
|
|
124
108
|
const THICKNESS = 2;
|
|
@@ -283,7 +267,7 @@ const registerAutoScroll = (listEl) => {
|
|
|
283
267
|
* containers on its own.
|
|
284
268
|
*
|
|
285
269
|
* Styling hooks: `data-dnd-dragging` on the dragged item (default 0.4 opacity
|
|
286
|
-
* via
|
|
270
|
+
* via the Tailwind plugin base styles), `data-dnd-over` on a hovered container (an EMPTY
|
|
287
271
|
* hovered list gets a default primary tint instead of an indicator line —
|
|
288
272
|
* there is no index to point at; override via your own `data-dnd-over`
|
|
289
273
|
* styles), `data-dnd-indicator` on the shared indicator line,
|
|
@@ -499,7 +483,6 @@ export const useDndList = (options) => {
|
|
|
499
483
|
const list = (element) => {
|
|
500
484
|
element.setAttribute('data-dnd-list', listId);
|
|
501
485
|
listElements.add(element);
|
|
502
|
-
ensureBaseStyles();
|
|
503
486
|
/** Rows belonging to THIS list only — nested lists' rows don't count. */
|
|
504
487
|
const ownRows = () => [...element.querySelectorAll('[data-dnd-item]')].filter((row) => row.closest('[data-dnd-list]') === element);
|
|
505
488
|
const terminalEdge = () => {
|
|
@@ -522,7 +505,7 @@ export const useDndList = (options) => {
|
|
|
522
505
|
else {
|
|
523
506
|
// Empty list: there is no index to point at, so no line — the
|
|
524
507
|
// container itself signals via [data-dnd-over] (default tint from
|
|
525
|
-
// the
|
|
508
|
+
// the plugin base styles, override with your own styles).
|
|
526
509
|
hideIndicator();
|
|
527
510
|
}
|
|
528
511
|
};
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import type { OpenChangeDetails } from './openChange.js';
|
|
2
|
+
/**
|
|
3
|
+
* Where focus goes when an overlay closes. `true` (or nothing) restores it to the opener, else the
|
|
4
|
+
* most recent element still on the page; `false` leaves focus alone; an element receives it. A
|
|
5
|
+
* function is called with the details of the change that closed the overlay (`null` when it
|
|
6
|
+
* closed without one) and returns any of these; returning nothing restores as usual.
|
|
7
|
+
*/
|
|
8
|
+
export type FocusOnClose = boolean | HTMLElement | null | ((details: OpenChangeDetails | null) => HTMLElement | boolean | null | void);
|
|
1
9
|
export interface FocusScopeOptions {
|
|
2
10
|
/** Scope is live (typically: it is the topmost layer of its kind). */
|
|
3
11
|
isActive: () => boolean;
|
|
@@ -14,7 +22,28 @@ export interface FocusScopeOptions {
|
|
|
14
22
|
returnTo?: () => HTMLElement | null;
|
|
15
23
|
/** Mark every sibling subtree up to `<body>` `inert` while active (modal scopes). */
|
|
16
24
|
inertSiblings?: () => boolean;
|
|
25
|
+
/** The owner's `focusOnClose` choice; see `FocusOnClose`. Wins over `restoreFocus`. */
|
|
26
|
+
focusOnClose?: () => FocusOnClose | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* The change that closed the overlay. A close by Escape or from the keyboard returns focus
|
|
29
|
+
* with a visible focus ring, and `focusOnClose` functions receive it.
|
|
30
|
+
*/
|
|
31
|
+
closeDetails?: () => OpenChangeDetails | null;
|
|
17
32
|
}
|
|
33
|
+
/** What `focusOnClose` resolves to for one close: leave focus, restore as usual, or this element. */
|
|
34
|
+
export declare function resolveFocusOnClose(choice: FocusOnClose | undefined, details: OpenChangeDetails | null): false | 'default' | HTMLElement;
|
|
35
|
+
/**
|
|
36
|
+
* The node of the newest live scope that contains Tab and holds `element` (a modal dialog around a
|
|
37
|
+
* popover's trigger), or `null`. Lets Tab that has nowhere to go inside a portaled panel wrap
|
|
38
|
+
* within the modal instead of leaving it.
|
|
39
|
+
*/
|
|
40
|
+
export declare function findTrappingScope(element: Node): HTMLElement | null;
|
|
41
|
+
/**
|
|
42
|
+
* Whether the focus event being dispatched right now comes from an overlay handing focus back to
|
|
43
|
+
* its opener. Read it synchronously inside a `focus` or `focusin` listener: a tooltip does not
|
|
44
|
+
* open for focus the page returned, only for focus the user moved.
|
|
45
|
+
*/
|
|
46
|
+
export declare const isRestoringFocus: () => boolean;
|
|
18
47
|
export declare function useFocusScope(options: FocusScopeOptions): {
|
|
19
48
|
attachment: (target: HTMLElement) => () => void;
|
|
20
49
|
restore: () => void;
|
|
@@ -3,7 +3,15 @@
|
|
|
3
3
|
// to the opener when the scope goes away. Radix calls this FocusScope.
|
|
4
4
|
import { on } from 'svelte/events';
|
|
5
5
|
import { tick, untrack } from 'svelte';
|
|
6
|
-
import { getTabbableElements, resolveInitialFocus } from './focus.js';
|
|
6
|
+
import { composedContains, getDeepActiveElement, getTabbableElements, isFocusable, isTextField, isWebKit, resolveInitialFocus } from './focus.js';
|
|
7
|
+
import { findFocusFallback, installFocusHistory } from './focusHistory.js';
|
|
8
|
+
/** What `focusOnClose` resolves to for one close: leave focus, restore as usual, or this element. */
|
|
9
|
+
export function resolveFocusOnClose(choice, details) {
|
|
10
|
+
const value = typeof choice === 'function' ? choice(details) : choice;
|
|
11
|
+
if (value === false)
|
|
12
|
+
return false;
|
|
13
|
+
return value instanceof HTMLElement ? value : 'default';
|
|
14
|
+
}
|
|
7
15
|
// `inert` refcount per element so stacked modals release it in any order.
|
|
8
16
|
const inertCounts = new WeakMap();
|
|
9
17
|
const makeInert = (element) => {
|
|
@@ -22,26 +30,117 @@ const releaseInert = (element) => {
|
|
|
22
30
|
inertCounts.set(element, count - 1);
|
|
23
31
|
}
|
|
24
32
|
};
|
|
33
|
+
/** Whether focus is on `<body>`, or inside the node (shadow roots included). */
|
|
25
34
|
const isFocusInside = (node) => {
|
|
26
|
-
const
|
|
27
|
-
|
|
35
|
+
const doc = node.ownerDocument;
|
|
36
|
+
const active = getDeepActiveElement(doc);
|
|
37
|
+
return !active || active === doc.body || composedContains(node, active);
|
|
28
38
|
};
|
|
39
|
+
/** Mounted scopes, in the order they last became active (the newest is last). */
|
|
40
|
+
const scopes = [];
|
|
41
|
+
/**
|
|
42
|
+
* The node of the newest live scope that contains Tab and holds `element` (a modal dialog around a
|
|
43
|
+
* popover's trigger), or `null`. Lets Tab that has nowhere to go inside a portaled panel wrap
|
|
44
|
+
* within the modal instead of leaving it.
|
|
45
|
+
*/
|
|
46
|
+
export function findTrappingScope(element) {
|
|
47
|
+
for (let index = scopes.length - 1; index >= 0; index -= 1) {
|
|
48
|
+
const scope = scopes[index];
|
|
49
|
+
if (scope.node.isConnected &&
|
|
50
|
+
scope.isActive() &&
|
|
51
|
+
scope.traps() &&
|
|
52
|
+
composedContains(scope.node, element))
|
|
53
|
+
return scope.node;
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
// Counts the `focus()` calls a closing overlay makes to give focus back. Their `focusin` events
|
|
58
|
+
// are dispatched inside the call, so a listener can tell restored focus from focus the user moved.
|
|
59
|
+
let restoringFocus = 0;
|
|
60
|
+
/**
|
|
61
|
+
* Whether the focus event being dispatched right now comes from an overlay handing focus back to
|
|
62
|
+
* its opener. Read it synchronously inside a `focus` or `focusin` listener: a tooltip does not
|
|
63
|
+
* open for focus the page returned, only for focus the user moved.
|
|
64
|
+
*/
|
|
65
|
+
export const isRestoringFocus = () => restoringFocus > 0;
|
|
66
|
+
const usable = (element) => !!element && element.isConnected && !element.closest('[inert]') && isFocusable(element);
|
|
29
67
|
export function useFocusScope(options) {
|
|
30
68
|
let node = null;
|
|
31
69
|
let returnTarget = null;
|
|
32
70
|
let restored = false;
|
|
33
|
-
/**
|
|
71
|
+
/** Initial focus is applied once per mount: a later re-activation leaves focus where it is. */
|
|
72
|
+
let initialFocusDone = false;
|
|
73
|
+
let lastFocusedInside = null;
|
|
74
|
+
/** Releases the `inert` this scope set on the page behind it; idempotent. */
|
|
75
|
+
let releaseSiblings = () => { };
|
|
76
|
+
/** A close by Escape or from the keyboard shows the focus ring where focus lands. */
|
|
77
|
+
const focusVisibleOnClose = () => {
|
|
78
|
+
const details = options.closeDetails?.() ?? null;
|
|
79
|
+
return details?.reason === 'escape-key' || details?.interaction === 'keyboard';
|
|
80
|
+
};
|
|
81
|
+
const focusElement = (element, focusVisible = false) => {
|
|
82
|
+
// `focusVisible` makes engines that do not infer a focus ring from the last input (Firefox,
|
|
83
|
+
// Safari after a pointer open) show it; engines that do not know the option ignore it. It is
|
|
84
|
+
// left out otherwise: `false` would suppress the ring a keyboard user is owed.
|
|
85
|
+
restoringFocus += 1;
|
|
86
|
+
try {
|
|
87
|
+
element.focus({
|
|
88
|
+
preventScroll: true,
|
|
89
|
+
...(focusVisible ? { focusVisible } : {})
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
restoringFocus -= 1;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Where focus goes when the scope's own target is gone: the last element that had focus in the
|
|
98
|
+
* scope still showing below this one (a Dialog under a closing Confirmation), else the most
|
|
99
|
+
* recent element in the focus history that is still on the page.
|
|
100
|
+
*/
|
|
101
|
+
const fallbackTarget = (scope) => {
|
|
102
|
+
for (let index = scopes.length - 1; index >= 0; index -= 1) {
|
|
103
|
+
const other = scopes[index];
|
|
104
|
+
if (other.node === scope || !other.node.isConnected || !other.isActive())
|
|
105
|
+
continue;
|
|
106
|
+
const candidate = other.lastFocused();
|
|
107
|
+
if (usable(candidate) && !composedContains(scope, candidate))
|
|
108
|
+
return candidate;
|
|
109
|
+
}
|
|
110
|
+
return findFocusFallback(scope.ownerDocument, { exclude: scope });
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Idempotent; only moves focus when it is still on `<body>` or inside the scope. The page
|
|
114
|
+
* behind is released first: an `inert` opener cannot take focus, and a close that is
|
|
115
|
+
* reported once its transition ends runs this before the node is torn down.
|
|
116
|
+
*/
|
|
34
117
|
const restore = () => {
|
|
35
118
|
if (restored)
|
|
36
119
|
return;
|
|
37
120
|
restored = true;
|
|
38
|
-
|
|
121
|
+
releaseSiblings();
|
|
122
|
+
const scope = node;
|
|
123
|
+
if (!scope)
|
|
39
124
|
return;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
125
|
+
// Safari scrolls the page when a focused text field leaves the document: let go of it
|
|
126
|
+
// while it is still mounted.
|
|
127
|
+
const active = getDeepActiveElement(scope.ownerDocument);
|
|
128
|
+
if (isWebKit() && active && composedContains(scope, active) && isTextField(active)) {
|
|
129
|
+
active.blur();
|
|
130
|
+
}
|
|
131
|
+
const choice = resolveFocusOnClose(options.focusOnClose?.(), options.closeDetails?.() ?? null);
|
|
132
|
+
if (choice === false)
|
|
43
133
|
return;
|
|
44
|
-
|
|
134
|
+
if (choice === 'default' && !(options.restoreFocus?.() ?? true))
|
|
135
|
+
return;
|
|
136
|
+
if (!isFocusInside(scope))
|
|
137
|
+
return;
|
|
138
|
+
const target = choice !== 'default'
|
|
139
|
+
? choice
|
|
140
|
+
: [options.returnTo?.() ?? null, returnTarget].find(usable) || fallbackTarget(scope);
|
|
141
|
+
returnTarget = null;
|
|
142
|
+
if (usable(target))
|
|
143
|
+
focusElement(target, focusVisibleOnClose());
|
|
45
144
|
};
|
|
46
145
|
const applyInitialFocus = (target) => {
|
|
47
146
|
const mode = options.initialFocus?.() ?? 'first';
|
|
@@ -52,50 +151,110 @@ export function useFocusScope(options) {
|
|
|
52
151
|
target.tabIndex = -1;
|
|
53
152
|
element.focus({ preventScroll: true });
|
|
54
153
|
};
|
|
154
|
+
const insideOtherScope = (element) => scopes.some((other) => other.node !== node && other.isActive() && composedContains(other.node, element));
|
|
55
155
|
const handleKeyDown = (event) => {
|
|
56
156
|
if (!node || event.key !== 'Tab' || event.defaultPrevented)
|
|
57
157
|
return;
|
|
158
|
+
if (event.ctrlKey || event.metaKey)
|
|
159
|
+
return;
|
|
58
160
|
if (!(options.trap?.() ?? options.isActive()))
|
|
59
161
|
return;
|
|
162
|
+
const doc = node.ownerDocument;
|
|
163
|
+
const active = getDeepActiveElement(doc);
|
|
164
|
+
const inside = !!active && composedContains(node, active);
|
|
165
|
+
// A panel opened from inside the scope (a popover over a dialog) handles its own Tab.
|
|
166
|
+
if (active && !inside && insideOtherScope(active))
|
|
167
|
+
return;
|
|
60
168
|
const tabbable = getTabbableElements(node);
|
|
61
169
|
if (tabbable.length === 0) {
|
|
62
170
|
event.preventDefault();
|
|
63
171
|
node.focus();
|
|
64
172
|
return;
|
|
65
173
|
}
|
|
66
|
-
const
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
174
|
+
const index = active instanceof HTMLElement ? tabbable.indexOf(active) : -1;
|
|
175
|
+
const edge = event.shiftKey ? tabbable[tabbable.length - 1] : tabbable[0];
|
|
176
|
+
let next;
|
|
177
|
+
if (index >= 0) {
|
|
178
|
+
// Move focus ourselves rather than trusting the engine's Tab order: WebKit without
|
|
179
|
+
// Full Keyboard Access skips buttons, which would let Tab leave the scope.
|
|
180
|
+
const step = event.shiftKey ? index - 1 : index + 1;
|
|
181
|
+
next = tabbable[(step + tabbable.length) % tabbable.length];
|
|
182
|
+
}
|
|
183
|
+
else if (!inside || active === node) {
|
|
184
|
+
next = edge;
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// Focus is on something the list does not know (a roving item, an element in a shadow
|
|
188
|
+
// root): the engine moves it, unless nothing tabbable lies ahead, which would leave.
|
|
189
|
+
const ahead = tabbable.some((element) => {
|
|
190
|
+
const position = active.compareDocumentPosition(element);
|
|
191
|
+
return event.shiftKey
|
|
192
|
+
? position & Node.DOCUMENT_POSITION_PRECEDING
|
|
193
|
+
: position & Node.DOCUMENT_POSITION_FOLLOWING;
|
|
194
|
+
});
|
|
195
|
+
if (ahead)
|
|
196
|
+
return;
|
|
197
|
+
next = edge;
|
|
198
|
+
}
|
|
75
199
|
event.preventDefault();
|
|
76
|
-
|
|
200
|
+
next.focus();
|
|
77
201
|
};
|
|
78
202
|
const attachment = (target) => {
|
|
79
203
|
return untrack(() => {
|
|
80
204
|
node = target;
|
|
81
205
|
restored = false;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
206
|
+
initialFocusDone = false;
|
|
207
|
+
const doc = target.ownerDocument;
|
|
208
|
+
const active = getDeepActiveElement(doc);
|
|
209
|
+
returnTarget = active instanceof HTMLElement && active !== doc.body ? active : null;
|
|
210
|
+
lastFocusedInside =
|
|
211
|
+
active instanceof HTMLElement && composedContains(target, active) ? active : null;
|
|
85
212
|
if (target.tabIndex < 0)
|
|
86
213
|
target.tabIndex = -1;
|
|
214
|
+
const record = {
|
|
215
|
+
node: target,
|
|
216
|
+
isActive: () => options.isActive(),
|
|
217
|
+
traps: () => options.trap?.() ?? options.isActive(),
|
|
218
|
+
lastFocused: () => lastFocusedInside
|
|
219
|
+
};
|
|
220
|
+
scopes.push(record);
|
|
87
221
|
const inerted = [];
|
|
88
|
-
|
|
222
|
+
releaseSiblings = () => inerted.splice(0).forEach(releaseInert);
|
|
223
|
+
const cleanups = [
|
|
224
|
+
installFocusHistory(doc),
|
|
225
|
+
on(doc, 'keydown', handleKeyDown),
|
|
226
|
+
// Remember where focus last was inside, for the scope below to hand focus back to.
|
|
227
|
+
on(target, 'focusin', (event) => {
|
|
228
|
+
const origin = event.composedPath()[0] ?? event.target;
|
|
229
|
+
if (origin instanceof HTMLElement)
|
|
230
|
+
lastFocusedInside = origin;
|
|
231
|
+
}),
|
|
232
|
+
// A focused element that is disabled or removed drops focus with no new target; it is
|
|
233
|
+
// still the best place to return to if it comes back.
|
|
234
|
+
on(target, 'focusout', (event) => {
|
|
235
|
+
const origin = event.composedPath()[0] ?? event.target;
|
|
236
|
+
if (!event.relatedTarget && origin instanceof HTMLElement)
|
|
237
|
+
lastFocusedInside = origin;
|
|
238
|
+
})
|
|
239
|
+
];
|
|
89
240
|
$effect(() => {
|
|
90
241
|
const active = options.isActive();
|
|
91
242
|
if (!active)
|
|
92
243
|
return;
|
|
244
|
+
// The newest active scope is the last one: a scope that becomes active again after the
|
|
245
|
+
// one above it closed is the next to receive focus.
|
|
246
|
+
const position = scopes.indexOf(record);
|
|
247
|
+
if (position >= 0)
|
|
248
|
+
scopes.push(...scopes.splice(position, 1));
|
|
93
249
|
// Wait for the intro to mount children before picking the initial target.
|
|
94
250
|
let cancelled = false;
|
|
95
251
|
void tick().then(() => {
|
|
96
|
-
if (
|
|
252
|
+
if (cancelled || !node || initialFocusDone)
|
|
253
|
+
return;
|
|
254
|
+
initialFocusDone = true;
|
|
255
|
+
const current = getDeepActiveElement(node.ownerDocument);
|
|
256
|
+
if (!current || !composedContains(node, current))
|
|
97
257
|
applyInitialFocus(node);
|
|
98
|
-
}
|
|
99
258
|
});
|
|
100
259
|
if (options.inertSiblings?.()) {
|
|
101
260
|
let current = target;
|
|
@@ -116,13 +275,16 @@ export function useFocusScope(options) {
|
|
|
116
275
|
}
|
|
117
276
|
return () => {
|
|
118
277
|
cancelled = true;
|
|
119
|
-
|
|
278
|
+
releaseSiblings();
|
|
120
279
|
};
|
|
121
280
|
});
|
|
122
281
|
return () => {
|
|
123
282
|
cleanups.forEach((cleanup) => cleanup());
|
|
124
|
-
|
|
283
|
+
releaseSiblings();
|
|
125
284
|
restore();
|
|
285
|
+
const at = scopes.indexOf(record);
|
|
286
|
+
if (at >= 0)
|
|
287
|
+
scopes.splice(at, 1);
|
|
126
288
|
node = null;
|
|
127
289
|
};
|
|
128
290
|
});
|
|
@@ -1,12 +1,52 @@
|
|
|
1
|
+
import type { HoverIntentGroup } from './hoverIntent.js';
|
|
1
2
|
type HoverActionHandlerOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* Checked when the pointer enters (no delay starts while inactive), again once the delay
|
|
5
|
+
* elapses, and when it leaves; never when attaching.
|
|
6
|
+
*/
|
|
2
7
|
isActive: () => boolean;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
8
|
+
/** Receives the `mouseenter` event that began the hover, also once a delay has elapsed. */
|
|
9
|
+
onMouseEnter?: (event: MouseEvent) => void;
|
|
10
|
+
/** Receives the `mouseleave` (or the `mouseout` that stood in for it) that ended the hover. */
|
|
11
|
+
onMouseLeave?: (event: MouseEvent) => void;
|
|
12
|
+
/**
|
|
13
|
+
* Milliseconds between the pointer entering and `onMouseEnter`. Read on every enter, so a
|
|
14
|
+
* getter or a function follows a changing value; a function also lets a class field read
|
|
15
|
+
* options its constructor has not bound yet.
|
|
16
|
+
*/
|
|
17
|
+
delay?: number | (() => number | undefined);
|
|
18
|
+
/**
|
|
19
|
+
* Pointer types whose hover is ignored. Default `['touch']`: a tap fires compatibility mouse
|
|
20
|
+
* events, `mouseenter` included, that are not a hover.
|
|
21
|
+
*/
|
|
22
|
+
ignorePointerTypes?: readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Whether a disabled trigger (`:disabled`, `aria-disabled="true"`, or a `data-disabled` other
|
|
25
|
+
* than `"false"`) is skipped, on enter and again when the delay elapses. Default `true`.
|
|
26
|
+
* Tooltips opt out: they often explain why their trigger is disabled.
|
|
27
|
+
*/
|
|
28
|
+
skipDisabled?: boolean;
|
|
29
|
+
/** Warm-up group: while it is warm for the trigger, the delay is skipped. */
|
|
30
|
+
group?: () => HoverIntentGroup | null | undefined;
|
|
31
|
+
/** Whether the owner's popup is open. While it is, the owner counts as open in `group`. */
|
|
32
|
+
isOpen?: () => boolean;
|
|
33
|
+
/** Whether a node is inside the owner's open popup; see `HoverIntentMember.contains`. */
|
|
34
|
+
contains?: (node: Node) => boolean;
|
|
6
35
|
};
|
|
36
|
+
/**
|
|
37
|
+
* Delayed hover for a popup trigger. Hover is read from `mouseenter`/`mouseleave`, with the
|
|
38
|
+
* pointer type recorded from the pointer events before them, so a touch tap's compatibility
|
|
39
|
+
* events never count. A pending open needs the pointer still on the trigger when its delay ends:
|
|
40
|
+
* `mouseout` backs up a `mouseleave` that Chrome can drop when the hovered element restyles.
|
|
41
|
+
*/
|
|
7
42
|
export declare const useHoverAction: (props: HoverActionHandlerOptions) => {
|
|
8
|
-
reference: (ref: HTMLElement) => (
|
|
43
|
+
reference: (ref: HTMLElement) => () => void;
|
|
9
44
|
destroy: () => void;
|
|
45
|
+
/**
|
|
46
|
+
* Cancels pending delayed enters. Owners call it when their state changes another way (a
|
|
47
|
+
* click, Escape), so a hover that began before the change cannot undo it afterwards.
|
|
48
|
+
*/
|
|
49
|
+
cancel: () => void;
|
|
10
50
|
readonly isHovered: boolean;
|
|
11
51
|
};
|
|
12
52
|
export {};
|