entasis 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
- package/dist/attachments/disclosurePanel.svelte.js +277 -0
- package/dist/attachments/portal.d.ts +17 -1
- package/dist/attachments/portal.js +39 -2
- package/dist/attachments/spinnerOverlay.svelte.js +12 -0
- package/dist/attachments/transitionSize.d.ts +6 -0
- package/dist/attachments/transitionSize.js +30 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
- package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
- package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
- package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
- package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
- package/dist/components/AIAskUserQuestion/index.js +2 -0
- package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
- package/dist/components/AIAskUserQuestion/schemas.js +10 -3
- package/dist/components/AIChat/AIChat.svelte +10 -0
- package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
- package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
- package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
- package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
- package/dist/components/AIChat/AIChatSurface.svelte +30 -2
- package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
- package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
- package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
- package/dist/components/AIChat/aiChat.mcp.js +31 -15
- package/dist/components/AIChat/aiChat.props.d.ts +36 -10
- package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
- package/dist/components/AIChat/aiChat.theme.js +21 -4
- package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
- package/dist/components/AIChat/index.d.ts +1 -1
- package/dist/components/AIComposer/AIComposer.svelte +102 -5
- package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
- package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
- package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
- package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
- package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
- package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
- package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
- package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
- package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
- package/dist/components/AIComposer/aiComposer.theme.js +37 -5
- package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
- package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
- package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
- package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
- package/dist/components/AIContext/AIContext.svelte +7 -3
- package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
- package/dist/components/AIContext/aiContext.mcp.js +1 -1
- package/dist/components/AIContext/aiContext.props.d.ts +4 -1
- package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
- package/dist/components/AIContext/aiContext.theme.js +7 -2
- package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
- package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
- package/dist/components/AIMarker/AIMarker.svelte +2 -0
- package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
- package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
- package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
- package/dist/components/AIMarker/aiMarker.theme.js +2 -2
- package/dist/components/AIMessage/AIMessage.svelte +38 -16
- package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
- package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
- package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
- package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
- package/dist/components/AIMessage/aiMessage.theme.js +91 -32
- package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
- package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
- package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
- package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
- package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
- package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
- package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
- package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
- package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
- package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
- package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
- package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
- package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
- package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
- package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
- package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
- package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
- package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
- package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
- package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
- package/dist/components/AIThread/AIThread.svelte +378 -95
- package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
- package/dist/components/AIThread/AIThreadItems.svelte +266 -64
- package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
- package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
- package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
- package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
- package/dist/components/AIThread/aiThread.mcp.js +34 -20
- package/dist/components/AIThread/aiThread.props.d.ts +73 -8
- package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
- package/dist/components/AIThread/aiThread.theme.js +108 -9
- package/dist/components/AIThread/index.d.ts +1 -1
- package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
- package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
- package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
- package/dist/components/AIThread/threadRenderItems.js +265 -77
- package/dist/components/AIThread/threadScrollController.d.ts +0 -8
- package/dist/components/AIThread/threadScrollController.js +2 -39
- package/dist/components/AIThread/threadTools.d.ts +11 -0
- package/dist/components/AIThread/threadTools.js +79 -0
- package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
- package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
- package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
- package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
- package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
- package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
- package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
- package/dist/components/AITool/AITool.svelte +56 -21
- package/dist/components/AITool/AIToolCallList.svelte +79 -29
- package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
- package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
- package/dist/components/AITool/AIToolValueSection.svelte +126 -28
- package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
- package/dist/components/AITool/AIToolValueTree.svelte +11 -16
- package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
- package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
- package/dist/components/AITool/aiTool.mcp.js +36 -8
- package/dist/components/AITool/aiTool.props.d.ts +52 -6
- package/dist/components/AITool/aiTool.theme.d.ts +117 -39
- package/dist/components/AITool/aiTool.theme.js +144 -140
- package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
- package/dist/components/AITool/aiToolClock.svelte.js +62 -0
- package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
- package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
- package/dist/components/AITool/index.d.ts +2 -1
- package/dist/components/AITool/index.js +1 -0
- package/dist/components/AITool/toolRendering.d.ts +33 -1
- package/dist/components/AITool/toolRendering.js +179 -15
- package/dist/components/AITool/toolValueTree.d.ts +14 -1
- package/dist/components/AITool/toolValueTree.js +126 -27
- package/dist/components/Accordion/Accordion.svelte +109 -109
- package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
- package/dist/components/Accordion/AccordionPanel.svelte +64 -0
- package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
- package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
- package/dist/components/Accordion/accordion.attributes.js +20 -0
- package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
- package/dist/components/Accordion/accordion.mcp.js +78 -22
- package/dist/components/Accordion/accordion.props.d.ts +54 -10
- package/dist/components/Accordion/accordion.theme.d.ts +3 -0
- package/dist/components/Accordion/accordion.theme.js +4 -0
- package/dist/components/Accordion/index.d.ts +1 -0
- package/dist/components/Accordion/index.js +1 -0
- package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
- package/dist/components/Avatar/Avatar.svelte +60 -10
- package/dist/components/Avatar/AvatarGroup.svelte +9 -0
- package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
- package/dist/components/Avatar/avatar.mcp.js +13 -5
- package/dist/components/Avatar/avatar.props.d.ts +28 -1
- package/dist/components/Avatar/avatar.theme.js +3 -3
- package/dist/components/Avatar/index.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
- package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
- package/dist/components/Button/Button.svelte +35 -15
- package/dist/components/Button/button.mcp.d.ts +1 -1
- package/dist/components/Button/button.mcp.js +8 -4
- package/dist/components/Button/button.props.d.ts +23 -8
- package/dist/components/Button/button.theme.d.ts +12 -0
- package/dist/components/Button/button.theme.js +17 -4
- package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
- package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
- package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
- package/dist/components/Collapsible/Collapsible.svelte +125 -19
- package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
- package/dist/components/Collapsible/collapsible.attributes.js +17 -0
- package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
- package/dist/components/Collapsible/collapsible.mcp.js +62 -12
- package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
- package/dist/components/Collapsible/collapsible.theme.js +3 -1
- package/dist/components/Collapsible/index.d.ts +1 -0
- package/dist/components/Collapsible/index.js +1 -0
- package/dist/components/Command/Command.svelte +56 -14
- package/dist/components/Command/command.mcp.d.ts +1 -1
- package/dist/components/Command/command.mcp.js +12 -6
- package/dist/components/Command/command.props.d.ts +39 -6
- package/dist/components/Command/command.state.svelte.d.ts +40 -11
- package/dist/components/Command/command.state.svelte.js +75 -28
- package/dist/components/Command/command.theme.js +4 -3
- package/dist/components/Confirmation/Confirmation.svelte +72 -31
- package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
- package/dist/components/Confirmation/confirmation.mcp.js +5 -4
- package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
- package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
- package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
- package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
- package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
- package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
- package/dist/components/DataTable/DataTable.svelte +4 -9
- package/dist/components/DataTable/DataTableEditor.svelte +5 -0
- package/dist/components/DataTable/DataTableFilter.svelte +1 -0
- package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
- package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
- package/dist/components/DataTable/dataTable.mcp.js +4 -2
- package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
- package/dist/components/DataTable/dataTable.theme.js +9 -6
- package/dist/components/Dialog/Dialog.svelte +120 -35
- package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
- package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
- package/dist/components/Dialog/dialog.api.d.ts +65 -0
- package/dist/components/Dialog/dialog.api.js +1 -0
- package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
- package/dist/components/Dialog/dialog.attributes.js +19 -0
- package/dist/components/Dialog/dialog.indent.d.ts +6 -0
- package/dist/components/Dialog/dialog.indent.js +16 -0
- package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
- package/dist/components/Dialog/dialog.mcp.js +195 -22
- package/dist/components/Dialog/dialog.props.d.ts +102 -19
- package/dist/components/Dialog/dialog.snap.d.ts +40 -0
- package/dist/components/Dialog/dialog.snap.js +78 -0
- package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
- package/dist/components/Dialog/dialog.state.svelte.js +525 -66
- package/dist/components/Dialog/dialog.theme.d.ts +48 -0
- package/dist/components/Dialog/dialog.theme.js +32 -9
- package/dist/components/Dialog/index.d.ts +4 -1
- package/dist/components/Dialog/index.js +1 -0
- package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
- package/dist/components/DocumentViewer/documentOutput.js +2 -1
- package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
- package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
- package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
- package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
- package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
- package/dist/components/Form/Ask/Ask.svelte +9 -13
- package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
- package/dist/components/Form/Ask/ask.mcp.js +1 -1
- package/dist/components/Form/Ask/ask.props.d.ts +1 -1
- package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
- package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
- package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
- package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
- package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
- package/dist/components/Form/Autocomplete/index.d.ts +3 -0
- package/dist/components/Form/Autocomplete/index.js +2 -0
- package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
- package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
- package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
- package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
- package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
- package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
- package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
- package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
- package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
- package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
- package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
- package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
- package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
- package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
- package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
- package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
- package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
- package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
- package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
- package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
- package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
- package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
- package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
- package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
- package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
- package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
- package/dist/components/Form/Combobox/Combobox.svelte +145 -185
- package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
- package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
- package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
- package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
- package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
- package/dist/components/Form/Combobox/combobox.items.js +68 -0
- package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
- package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
- package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
- package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
- package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
- package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
- package/dist/components/Form/Combobox/combobox.theme.js +37 -1
- package/dist/components/Form/Combobox/index.d.ts +2 -1
- package/dist/components/Form/Combobox/index.js +1 -0
- package/dist/components/Form/DateInput/DateInput.svelte +11 -3
- package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
- package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
- package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
- package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
- package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
- package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
- package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
- package/dist/components/Form/Field/Field.svelte +256 -30
- package/dist/components/Form/Field/Field.svelte.d.ts +9 -0
- package/dist/components/Form/Field/FieldGroup.svelte +29 -0
- package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
- package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
- package/dist/components/Form/Field/field.d.ts +64 -8
- package/dist/components/Form/Field/field.mcp.d.ts +1 -1
- package/dist/components/Form/Field/field.mcp.js +158 -18
- package/dist/components/Form/Field/field.messages.d.ts +47 -0
- package/dist/components/Form/Field/field.messages.js +64 -0
- package/dist/components/Form/Field/field.state.svelte.d.ts +109 -3
- package/dist/components/Form/Field/field.state.svelte.js +508 -16
- package/dist/components/Form/Field/field.theme.d.ts +46 -0
- package/dist/components/Form/Field/field.theme.js +33 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
- package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
- package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
- package/dist/components/Form/Field/index.d.ts +5 -2
- package/dist/components/Form/Field/index.js +1 -0
- package/dist/components/Form/Field/schemas.js +7 -2
- package/dist/components/Form/File/FileInput.svelte +24 -3
- package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
- package/dist/components/Form/File/fileInput.mcp.js +1 -0
- package/dist/components/Form/Form/Form.svelte +47 -14
- package/dist/components/Form/Form/FormActions.svelte +3 -1
- package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
- package/dist/components/Form/Form/FormFieldRenderer.svelte +40 -2
- package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
- package/dist/components/Form/Form/form.d.ts +35 -6
- package/dist/components/Form/Form/form.mcp.d.ts +1 -1
- package/dist/components/Form/Form/form.mcp.js +113 -13
- package/dist/components/Form/Form/form.props.d.ts +32 -1
- package/dist/components/Form/Form/form.registry.d.ts +2 -2
- package/dist/components/Form/Form/form.registry.js +1 -4
- package/dist/components/Form/Form/form.state.svelte.d.ts +1138 -413
- package/dist/components/Form/Form/form.state.svelte.js +319 -26
- package/dist/components/Form/Form/index.d.ts +3 -1
- package/dist/components/Form/Form/visibility.d.ts +3096 -1831
- package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
- package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
- package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
- package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
- package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1022 -408
- package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
- package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
- package/dist/components/Form/NumberInput/index.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
- package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
- package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
- package/dist/components/Form/PasswordInput/Password.svelte +28 -1
- package/dist/components/Form/PasswordInput/index.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
- package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
- package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
- package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
- package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
- package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
- package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
- package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
- package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
- package/dist/components/Form/PinInput/PinInput.svelte +44 -9
- package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
- package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
- package/dist/components/Form/PinInput/index.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
- package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
- package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
- package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
- package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
- package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
- package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
- package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
- package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
- package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
- package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
- package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
- package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
- package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
- package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
- package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
- package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
- package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
- package/dist/components/Form/Select/Select.svelte +186 -48
- package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
- package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
- package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
- package/dist/components/Form/Select/index.d.ts +2 -1
- package/dist/components/Form/Select/index.js +1 -0
- package/dist/components/Form/Select/select.align.d.ts +5 -0
- package/dist/components/Form/Select/select.align.js +19 -5
- package/dist/components/Form/Select/select.attributes.d.ts +36 -0
- package/dist/components/Form/Select/select.attributes.js +27 -0
- package/dist/components/Form/Select/select.mcp.d.ts +1 -1
- package/dist/components/Form/Select/select.mcp.js +103 -18
- package/dist/components/Form/Select/select.props.d.ts +87 -10
- package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
- package/dist/components/Form/Select/select.state.svelte.js +354 -59
- package/dist/components/Form/Select/select.theme.d.ts +21 -0
- package/dist/components/Form/Select/select.theme.js +22 -0
- package/dist/components/Form/Slider/Slider.svelte +54 -14
- package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
- package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
- package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
- package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
- package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
- package/dist/components/Form/Slider/index.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
- package/dist/components/Form/Slider/slider.mcp.js +55 -11
- package/dist/components/Form/Slider/slider.props.d.ts +35 -2
- package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
- package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
- package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
- package/dist/components/Form/Slider/slider.theme.js +35 -17
- package/dist/components/Form/Switch/Switch.svelte +61 -38
- package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
- package/dist/components/Form/Switch/switch.mcp.js +25 -5
- package/dist/components/Form/Switch/switch.props.d.ts +14 -1
- package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
- package/dist/components/Form/Switch/switch.theme.js +8 -3
- package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
- package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
- package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
- package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
- package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
- package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
- package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
- package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
- package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
- package/dist/components/Form/TextArea/TextArea.svelte +8 -0
- package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
- package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
- package/dist/components/Form/TextInput/TextInput.svelte +8 -1
- package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
- package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
- package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
- package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
- package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
- package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
- package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
- package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
- package/dist/components/HoverCard/HoverCard.svelte +100 -10
- package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
- package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
- package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
- package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
- package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
- package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
- package/dist/components/HoverCard/hoverCard.theme.js +9 -2
- package/dist/components/HoverCard/index.d.ts +1 -0
- package/dist/components/HoverCard/index.js +1 -0
- package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
- package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
- package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
- package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
- package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
- package/dist/components/Kanban/kanban.theme.js +7 -3
- package/dist/components/Layout/layoutSpacing.d.ts +2 -2
- package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
- package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
- package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
- package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
- package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
- package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
- package/dist/components/Map/maplibre-cdn.js +3 -2
- package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
- package/dist/components/Markdown/markdown.mcp.js +2 -1
- package/dist/components/Markdown/markdown.theme.js +18 -9
- package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
- package/dist/components/Menu/Menu.svelte +3 -3
- package/dist/components/Menu/Menu.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
- package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
- package/dist/components/Menu/MenuFloating.svelte +421 -74
- package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
- package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
- package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
- package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
- package/dist/components/Menu/MenuSearchField.svelte +54 -0
- package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
- package/dist/components/Menu/MenuStacked.svelte +404 -158
- package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
- package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
- package/dist/components/Menu/index.d.ts +2 -1
- package/dist/components/Menu/index.js +1 -0
- package/dist/components/Menu/menu.attributes.d.ts +37 -0
- package/dist/components/Menu/menu.attributes.js +28 -0
- package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
- package/dist/components/Menu/menu.filter.svelte.js +143 -0
- package/dist/components/Menu/menu.mcp.d.ts +1 -1
- package/dist/components/Menu/menu.mcp.js +227 -17
- package/dist/components/Menu/menu.platform.d.ts +5 -0
- package/dist/components/Menu/menu.platform.js +11 -0
- package/dist/components/Menu/menu.props.d.ts +172 -9
- package/dist/components/Menu/menu.theme.d.ts +147 -0
- package/dist/components/Menu/menu.theme.js +101 -0
- package/dist/components/Menu/menuTree.d.ts +35 -1
- package/dist/components/Menu/menuTree.js +158 -1
- package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
- package/dist/components/MenuBar/menuBar.mcp.js +4 -2
- package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
- package/dist/components/MenuOption/MenuOption.svelte +5 -1
- package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
- package/dist/components/MenuOption/menuOption.mcp.js +8 -0
- package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
- package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
- package/dist/components/MenuOption/menuOption.theme.js +24 -4
- package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
- package/dist/components/Mermaid/mermaid.mcp.js +8 -8
- package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
- package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
- package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
- package/dist/components/Mermaid/mermaid.theme.js +26 -1
- package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
- package/dist/components/Meter/Meter.svelte +110 -24
- package/dist/components/Meter/Meter.svelte.d.ts +12 -12
- package/dist/components/Meter/meter.mcp.d.ts +1 -1
- package/dist/components/Meter/meter.mcp.js +23 -37
- package/dist/components/Meter/meter.props.d.ts +36 -44
- package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
- package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
- package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
- package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
- package/dist/components/NavigationMenu/index.d.ts +4 -0
- package/dist/components/NavigationMenu/index.js +3 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
- package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
- package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
- package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
- package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
- package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
- package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
- package/dist/components/Overlay/Overlay.svelte +19 -30
- package/dist/components/Overlay/index.d.ts +1 -0
- package/dist/components/Overlay/index.js +1 -0
- package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
- package/dist/components/Overlay/overlay.attributes.js +14 -0
- package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
- package/dist/components/Overlay/overlay.mcp.js +21 -3
- package/dist/components/Overlay/overlay.props.d.ts +8 -4
- package/dist/components/Popover/Popover.svelte +163 -52
- package/dist/components/Popover/Popover.svelte.d.ts +23 -2
- package/dist/components/Popover/PopoverSession.svelte +12 -0
- package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
- package/dist/components/Popover/index.d.ts +10 -2
- package/dist/components/Popover/index.js +4 -1
- package/dist/components/Popover/popover.api.d.ts +83 -0
- package/dist/components/Popover/popover.api.js +1 -0
- package/dist/components/Popover/popover.attributes.d.ts +32 -0
- package/dist/components/Popover/popover.attributes.js +28 -0
- package/dist/components/Popover/popover.claims.d.ts +19 -0
- package/dist/components/Popover/popover.claims.js +45 -0
- package/dist/components/Popover/popover.mcp.d.ts +1 -1
- package/dist/components/Popover/popover.mcp.js +163 -31
- package/dist/components/Popover/popover.position.d.ts +226 -0
- package/dist/components/Popover/popover.position.js +402 -0
- package/dist/components/Popover/popover.props.d.ts +179 -24
- package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
- package/dist/components/Popover/popover.state.svelte.js +1034 -194
- package/dist/components/Popover/popover.theme.d.ts +15 -0
- package/dist/components/Popover/popover.theme.js +27 -2
- package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
- package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
- package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
- package/dist/components/PopupMenu/popupMenu.context.js +52 -0
- package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
- package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
- package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
- package/dist/components/Progress/Progress.svelte +160 -0
- package/dist/components/Progress/Progress.svelte.d.ts +4 -0
- package/dist/components/Progress/index.d.ts +3 -0
- package/dist/components/Progress/index.js +2 -0
- package/dist/components/Progress/progress.mcp.d.ts +1 -0
- package/dist/components/Progress/progress.mcp.js +101 -0
- package/dist/components/Progress/progress.props.d.ts +79 -0
- package/dist/components/Progress/progress.props.js +1 -0
- package/dist/components/Progress/progress.theme.d.ts +129 -0
- package/dist/components/Progress/progress.theme.js +83 -0
- package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
- package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
- package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
- package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
- package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
- package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
- package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
- package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
- package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
- package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
- package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
- package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
- package/dist/components/RichTextInput/suggestions.js +2 -0
- package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
- package/dist/components/ScrollArea/index.d.ts +2 -1
- package/dist/components/ScrollArea/index.js +1 -0
- package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
- package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
- package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
- package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
- package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
- package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
- package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
- package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
- package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
- package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
- package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
- package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
- package/dist/components/Sidebar/SidebarAction.svelte +13 -3
- package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
- package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
- package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
- package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
- package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
- package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
- package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
- package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
- package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +1 -0
- package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
- package/dist/components/Sidebar/sidebar-position.js +31 -2
- package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
- package/dist/components/Sidebar/sidebar.attributes.js +29 -0
- package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
- package/dist/components/Sidebar/sidebar.mcp.js +45 -10
- package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
- package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
- package/dist/components/Sidebar/sidebar.theme.js +113 -62
- package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
- package/dist/components/Stepper/Stepper.svelte +2 -0
- package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
- package/dist/components/Stepper/stepper.mcp.js +1 -0
- package/dist/components/Stepper/stepper.props.d.ts +5 -0
- package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
- package/dist/components/Stepper/stepper.state.svelte.js +31 -12
- package/dist/components/Tabbar/Tabbar.svelte +55 -16
- package/dist/components/Tabbar/index.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
- package/dist/components/Tabbar/tabbar.mcp.js +26 -9
- package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
- package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
- package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
- package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
- package/dist/components/Tabs/Tabs.svelte +73 -16
- package/dist/components/Tabs/index.d.ts +2 -1
- package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
- package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
- package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
- package/dist/components/Tabs/tabs.mcp.js +22 -4
- package/dist/components/Tabs/tabs.props.d.ts +39 -12
- package/dist/components/Tabs/tabs.theme.js +3 -1
- package/dist/components/Theme/Theme.svelte +44 -27
- package/dist/components/Theme/helper.d.ts +16 -2
- package/dist/components/Theme/helper.js +46 -4
- package/dist/components/Theme/theme.mcp.d.ts +1 -1
- package/dist/components/Theme/theme.mcp.js +103 -0
- package/dist/components/Theme/theme.props.d.ts +16 -0
- package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
- package/dist/components/Theme/theme.state.svelte.js +18 -1
- package/dist/components/Toast/Toast.svelte +184 -39
- package/dist/components/Toast/Toaster.svelte +14 -10
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/toast.mcp.d.ts +1 -1
- package/dist/components/Toast/toast.mcp.js +47 -6
- package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
- package/dist/components/Toast/toast.state.svelte.js +513 -68
- package/dist/components/Toast/toast.theme.js +1 -1
- package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
- package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
- package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
- package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
- package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
- package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
- package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
- package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
- package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
- package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
- package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
- package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
- package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
- package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
- package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
- package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
- package/dist/components/Tooltip/Tooltip.svelte +4 -12
- package/dist/components/Tooltip/TooltipHost.svelte +136 -15
- package/dist/components/Tooltip/index.d.ts +1 -0
- package/dist/components/Tooltip/index.js +1 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
- package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
- package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
- package/dist/components/Tooltip/tooltip.attributes.js +28 -0
- package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
- package/dist/components/Tooltip/tooltip.mcp.js +111 -10
- package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
- package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
- package/dist/components/Tooltip/tooltip.surface.js +42 -0
- package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
- package/dist/components/Utils/BeforeHydratation.svelte +14 -3
- package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
- package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
- package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
- package/dist/generated/componentAliases.d.ts +3 -0
- package/dist/generated/componentAliases.js +3 -0
- package/dist/generated/componentContract.d.ts +79 -34
- package/dist/generated/componentContract.js +225 -6
- package/dist/generated/componentMcpRegistry.js +6 -0
- package/dist/i18n/ar.js +107 -3
- package/dist/i18n/context.svelte.d.ts +6 -0
- package/dist/i18n/context.svelte.js +12 -0
- package/dist/i18n/de.js +101 -3
- package/dist/i18n/en.d.ts +91 -2
- package/dist/i18n/en.js +101 -3
- package/dist/i18n/es.js +101 -3
- package/dist/i18n/fr.js +101 -3
- package/dist/i18n/ja.js +101 -3
- package/dist/i18n/pt.js +101 -3
- package/dist/i18n/zh.js +101 -3
- package/dist/tailwind/geometry.js +7 -0
- package/dist/tailwind/global.js +31 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types.mcp.d.ts +1 -1
- package/dist/types/types.mcp.js +23 -0
- package/dist/utils/cspNonce.d.ts +16 -0
- package/dist/utils/cspNonce.js +39 -0
- package/dist/utils/cva/merge.d.ts +5 -1
- package/dist/utils/cva/merge.js +6 -4
- package/dist/utils/focus.d.ts +34 -0
- package/dist/utils/focus.js +93 -0
- package/dist/utils/focusHistory.d.ts +21 -0
- package/dist/utils/focusHistory.js +99 -0
- package/dist/utils/handlers.d.ts +7 -0
- package/dist/utils/handlers.js +14 -0
- package/dist/utils/hoverIntent.d.ts +42 -0
- package/dist/utils/hoverIntent.js +57 -0
- package/dist/utils/id.d.ts +7 -0
- package/dist/utils/id.js +15 -0
- package/dist/utils/layers.svelte.d.ts +32 -4
- package/dist/utils/layers.svelte.js +214 -21
- package/dist/utils/listFilter.d.ts +44 -0
- package/dist/utils/listFilter.js +130 -0
- package/dist/utils/match.d.ts +35 -0
- package/dist/utils/match.js +36 -0
- package/dist/utils/number.d.ts +126 -0
- package/dist/utils/number.js +401 -0
- package/dist/utils/openChange.d.ts +88 -0
- package/dist/utils/openChange.js +71 -0
- package/dist/utils/openLifecycle.svelte.d.ts +41 -0
- package/dist/utils/openLifecycle.svelte.js +134 -0
- package/dist/utils/pointerDrag.d.ts +10 -0
- package/dist/utils/pointerDrag.js +37 -2
- package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
- package/dist/utils/pragmaticDragAndDrop.js +8 -3
- package/dist/utils/range.d.ts +62 -0
- package/dist/utils/range.js +70 -0
- package/dist/utils/requestNativeSubmit.d.ts +17 -0
- package/dist/utils/requestNativeSubmit.js +47 -0
- package/dist/utils/safeArea.svelte.d.ts +10 -1
- package/dist/utils/safeArea.svelte.js +19 -11
- package/dist/utils/stateAttributes.d.ts +108 -0
- package/dist/utils/stateAttributes.js +78 -0
- package/dist/utils/swipeVelocity.d.ts +32 -0
- package/dist/utils/swipeVelocity.js +59 -0
- package/dist/utils/timer.svelte.d.ts +65 -2
- package/dist/utils/timer.svelte.js +159 -25
- package/dist/utils/trigger.d.ts +41 -0
- package/dist/utils/trigger.js +103 -0
- package/dist/utils/typeahead.d.ts +9 -0
- package/dist/utils/typeahead.js +21 -9
- package/dist/utils/useDndList.svelte.d.ts +1 -1
- package/dist/utils/useDndList.svelte.js +6 -23
- package/dist/utils/useFocusScope.svelte.d.ts +29 -0
- package/dist/utils/useFocusScope.svelte.js +189 -27
- package/dist/utils/useHoverAction.svelte.d.ts +44 -4
- package/dist/utils/useHoverAction.svelte.js +161 -51
- package/dist/utils/useKeyDown.svelte.d.ts +19 -2
- package/dist/utils/useKeyDown.svelte.js +19 -12
- package/dist/utils/useListNavigation.svelte.d.ts +94 -13
- package/dist/utils/useListNavigation.svelte.js +261 -35
- package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
- package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
- package/dist/utils/useNavigation.svelte.d.ts +36 -3
- package/dist/utils/useNavigation.svelte.js +699 -332
- package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
- package/dist/utils/usePressAndHold.svelte.js +191 -0
- package/dist/utils/useScrollLock.svelte.d.ts +20 -1
- package/dist/utils/useScrollLock.svelte.js +54 -13
- package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
- package/dist/utils/useSlidingIndicator.svelte.js +27 -5
- package/dist/utils/useTabBridge.svelte.d.ts +20 -0
- package/dist/utils/useTabBridge.svelte.js +109 -0
- package/dist/utils/values.d.ts +15 -0
- package/dist/utils/values.js +49 -0
- package/package.json +31 -2
- package/dist/generated/componentMcpRegistry.d.ts +0 -142
- package/dist/utils/useDrag.svelte.d.ts +0 -11
- package/dist/utils/useDrag.svelte.js +0 -55
package/dist/i18n/zh.js
CHANGED
|
@@ -185,8 +185,6 @@ export const zh = {
|
|
|
185
185
|
playVideo: '播放视频',
|
|
186
186
|
imageLoadError: '图片无法加载',
|
|
187
187
|
dataTableLabel: '数据表',
|
|
188
|
-
dataTableLoading: '正在加载表格数据',
|
|
189
|
-
dataTableSaving: '正在保存表格更改',
|
|
190
188
|
dataTableLoadingRows: '正在加载行',
|
|
191
189
|
dataTableErrorTitle: '无法加载数据',
|
|
192
190
|
dataTableErrorDescription: '数据无法加载。',
|
|
@@ -493,6 +491,24 @@ export const zh = {
|
|
|
493
491
|
aiComposerMentions: '提及与引用',
|
|
494
492
|
aiComposerFiles: '文件',
|
|
495
493
|
aiComposerReferences: '引用',
|
|
494
|
+
// AIComposer chrome and file notices
|
|
495
|
+
aiComposerQueue: '将消息加入队列',
|
|
496
|
+
aiComposerSteering: '正在引导',
|
|
497
|
+
aiComposerQueuedFiles: (count) => `${count} 个文件`,
|
|
498
|
+
aiComposerSubmitFailed: '无法发送消息。',
|
|
499
|
+
aiComposerStopFailed: '无法停止回复。',
|
|
500
|
+
aiComposerUploadFailed: (name) => `无法上传 ${name}。`,
|
|
501
|
+
aiComposerVoiceFailed: '无法处理语音输入。',
|
|
502
|
+
aiComposerFileUnsupported: (name, types) => `不支持 ${name},请使用${types}`,
|
|
503
|
+
aiComposerFilesUnsupported: (count, types) => `不支持 ${count} 个文件,请使用${types}`,
|
|
504
|
+
aiComposerFileTooLarge: (name, size) => `${name} 太大,上限为 ${size}`,
|
|
505
|
+
aiComposerFileDuplicate: (name) => `${name} 已附加`,
|
|
506
|
+
aiComposerFileLimit: (max) => `最多可附加 ${max} 个文件`,
|
|
507
|
+
aiComposerFilesRejected: (count) => `${count} 个文件无法附加`,
|
|
508
|
+
aiComposerFileTypeImages: '图片',
|
|
509
|
+
aiComposerFileTypeVideos: '视频',
|
|
510
|
+
aiComposerFileTypeAudio: '音频',
|
|
511
|
+
aiComposerFileTypeText: '文本文件',
|
|
496
512
|
// AI 模型选择器
|
|
497
513
|
aiModelSelectorPlaceholder: '选择模型',
|
|
498
514
|
aiModelSelectorSearch: '搜索模型...',
|
|
@@ -504,6 +520,16 @@ export const zh = {
|
|
|
504
520
|
aiThreadTranscript: '对话记录',
|
|
505
521
|
aiThreadScrollToLatest: '滚动到最新消息',
|
|
506
522
|
aiChatConnecting: '正在连接聊天',
|
|
523
|
+
// AI thread rows, follow-ups and message action errors
|
|
524
|
+
aiThreadGreeting: '今天有什么可以帮你?',
|
|
525
|
+
aiThreadRetry: '重试',
|
|
526
|
+
aiThreadSources: '来源',
|
|
527
|
+
aiThreadFollowUps: '推荐的后续问题',
|
|
528
|
+
aiThreadQuestionFailed: '无法完成该提问请求。',
|
|
529
|
+
aiMessageCopyFailed: '无法复制此消息。',
|
|
530
|
+
aiMessageCopyCallbackFailed: '消息已复制,但复制操作失败。',
|
|
531
|
+
aiMessageEditFailed: '无法编辑此消息。',
|
|
532
|
+
aiMessageRetryFailed: '无法重试此消息。',
|
|
507
533
|
// AI 向用户提问
|
|
508
534
|
aiAskTitle: '回答请求',
|
|
509
535
|
aiAskSubmitting: '正在提交...',
|
|
@@ -524,6 +550,53 @@ export const zh = {
|
|
|
524
550
|
aiReasoningThinking: '思考中…',
|
|
525
551
|
aiReasoningFewSeconds: '思考了几秒钟',
|
|
526
552
|
aiReasoningDuration: (seconds) => `思考了 ${seconds} 秒`,
|
|
553
|
+
// AI 富文本对话块(工具状态、值、耗时、问题、对话目录)
|
|
554
|
+
aiToolStatusPending: '等待中',
|
|
555
|
+
aiToolStatusRunning: '运行中',
|
|
556
|
+
aiToolStatusStreaming: '准备中',
|
|
557
|
+
aiToolStatusSuccess: '已完成',
|
|
558
|
+
aiToolStatusError: '失败',
|
|
559
|
+
aiToolStatusCancelled: '已取消',
|
|
560
|
+
aiToolStatusAwaitingApproval: '等待批准',
|
|
561
|
+
aiToolStatusApproved: '已批准',
|
|
562
|
+
aiToolStatusDenied: '已拒绝',
|
|
563
|
+
aiToolGroupSummary: (titles, count) => `${titles} · ${count} 次调用`,
|
|
564
|
+
aiToolMoreTools: (count) => `另外 ${count} 个`,
|
|
565
|
+
aiToolShowAll: '显示全部',
|
|
566
|
+
aiToolShowLess: '收起',
|
|
567
|
+
aiToolValueItems: (count) => `${count} 项`,
|
|
568
|
+
aiToolValueKeys: (count) => `${count} 个键`,
|
|
569
|
+
aiToolValueMore: (count) => `还有 ${count} 项`,
|
|
570
|
+
aiToolValueEmptyArray: '空数组',
|
|
571
|
+
aiToolValueEmptyObject: '空对象',
|
|
572
|
+
aiToolValueCircular: '循环引用',
|
|
573
|
+
aiToolValueMaxDepth: '已达到最大深度',
|
|
574
|
+
aiToolValueInvalidDate: '无效日期',
|
|
575
|
+
aiToolValueUnreadable: '无法读取的值',
|
|
576
|
+
aiElapsedUnderSecond: '不到 1 秒',
|
|
577
|
+
aiElapsedSeconds: (seconds) => `${seconds} 秒`,
|
|
578
|
+
aiElapsedMinutes: (minutes, seconds) => `${minutes} 分 ${seconds} 秒`,
|
|
579
|
+
aiElapsedHours: (hours, minutes) => `${hours} 小时 ${minutes} 分`,
|
|
580
|
+
aiReasoningUnderSecond: '思考了不到 1 秒',
|
|
581
|
+
aiReasoningDurationLong: (elapsed) => `思考了 ${elapsed}`,
|
|
582
|
+
aiAskPlaceholder: '输入你的回答…',
|
|
583
|
+
aiAskOther: '其他…',
|
|
584
|
+
aiAskOtherPlaceholder: '描述你的回答',
|
|
585
|
+
aiAskSkip: '跳过',
|
|
586
|
+
aiAskRequiredMarker: '必填',
|
|
587
|
+
aiAskSkipped: '已跳过',
|
|
588
|
+
aiAskSummaryTitle: '你的回答',
|
|
589
|
+
aiAskSubmitFailed: '无法提交回答。',
|
|
590
|
+
aiAskDiscardFailed: '无法放弃这些问题。',
|
|
591
|
+
aiAskFileType: '部分文件不符合允许的类型。',
|
|
592
|
+
aiAskFileSize: '部分文件超过了允许的大小。',
|
|
593
|
+
aiAskFileLimit: '此问题选择的文件过多。',
|
|
594
|
+
aiAskFileDuplicate: '部分文件已被选择。',
|
|
595
|
+
aiAskFileRejected: '部分文件无法添加。',
|
|
596
|
+
aiThreadTocTurn: (turn, total) => `第 ${turn} 轮,共 ${total} 轮`,
|
|
597
|
+
aiThreadTocMoreFiles: (count) => `还有 ${count} 个`,
|
|
598
|
+
aiThreadTocScrollTo: (title) => `跳转到 ${title}`,
|
|
599
|
+
aiThreadTocFiles: (count) => `${count} 个文件`,
|
|
527
600
|
// AI 上下文窗口
|
|
528
601
|
aiContextTitle: '上下文窗口',
|
|
529
602
|
aiContextRemaining: (tokens) => `剩余 ${tokens} 个 token`,
|
|
@@ -532,5 +605,30 @@ export const zh = {
|
|
|
532
605
|
aiContextReasoning: '推理',
|
|
533
606
|
aiContextCachedInput: '缓存输入',
|
|
534
607
|
aiContextUsed: '已使用',
|
|
535
|
-
aiContextUsage: (used, maximum, remaining) => `上下文使用情况:已使用 ${used} / ${maximum} 个 token。剩余 ${remaining} 个 token
|
|
608
|
+
aiContextUsage: (used, maximum, remaining) => `上下文使用情况:已使用 ${used} / ${maximum} 个 token。剩余 ${remaining} 个 token。`,
|
|
609
|
+
// 密码输入
|
|
610
|
+
passwordTooShort: (min) => `密码至少需要 ${min} 个字符`,
|
|
611
|
+
// 计量器
|
|
612
|
+
meter: '计量器',
|
|
613
|
+
meterSegment: (index, count) => `第 ${index} 段,共 ${count} 段`,
|
|
614
|
+
progressIndeterminate: '进度不确定',
|
|
615
|
+
// 字段验证
|
|
616
|
+
fieldRequired: '此字段为必填项',
|
|
617
|
+
fieldMustBeChecked: '请勾选此框以继续',
|
|
618
|
+
fieldMustBeOn: '请开启此选项以继续',
|
|
619
|
+
fieldInvalid: '请输入有效的值',
|
|
620
|
+
fieldInvalidEmail: '请输入有效的电子邮件地址',
|
|
621
|
+
fieldInvalidUrl: '请输入有效的网址',
|
|
622
|
+
fieldTooShort: (min) => `请至少输入 ${min} 个字符`,
|
|
623
|
+
fieldTooLong: (max) => `最多只能输入 ${max} 个字符`,
|
|
624
|
+
fieldRangeUnderflow: (min) => `请输入大于或等于 ${min} 的值`,
|
|
625
|
+
fieldRangeOverflow: (max) => `请输入小于或等于 ${max} 的值`,
|
|
626
|
+
fieldIncomplete: (length) => `请输入全部 ${length} 个字符`,
|
|
627
|
+
// Combobox
|
|
628
|
+
resultsCount: (count) => `有 ${count} 个结果可用`,
|
|
629
|
+
tags: '标签',
|
|
630
|
+
// CheckboxesInput
|
|
631
|
+
selectAll: '全选',
|
|
632
|
+
// PinInput
|
|
633
|
+
oneTimeCode: '一次性验证码'
|
|
536
634
|
};
|
|
@@ -39,6 +39,13 @@ export const applyGeometryEngine = ({ addBase, addUtilities }) => {
|
|
|
39
39
|
md: 'var(--row-height-md)',
|
|
40
40
|
lg: 'var(--row-height-lg)'
|
|
41
41
|
}),
|
|
42
|
+
// A control height as a floor, for rows that may wrap (a small menu row: a control tall,
|
|
43
|
+
// growing with a description).
|
|
44
|
+
...sizedUtilities('min-h-control', 'min-height', {
|
|
45
|
+
sm: 'var(--control-height-sm)',
|
|
46
|
+
md: 'var(--control-height-md)',
|
|
47
|
+
lg: 'var(--control-height-lg)'
|
|
48
|
+
}),
|
|
42
49
|
...sizedUtilities('min-h-row', 'min-height', {
|
|
43
50
|
sm: 'var(--row-height-sm)',
|
|
44
51
|
md: 'var(--row-height-md)',
|
package/dist/tailwind/global.js
CHANGED
|
@@ -160,6 +160,37 @@ export const applyGlobalEngine = (api, options) => {
|
|
|
160
160
|
'border-selected': stateUtility('border-color', 'selected'),
|
|
161
161
|
'ring-selected': stateUtility('--tw-ring-color', 'selected')
|
|
162
162
|
}, stateOptions);
|
|
163
|
+
// SCROLL LOCK — dialogs and popovers lock the page by putting `data-entasis-scroll-lock` on
|
|
164
|
+
// `<html>`, never by writing inline styles, so a lock held by another library on the same
|
|
165
|
+
// element is neither restored over nor released early. The value is empty while the lock
|
|
166
|
+
// hides a classic scrollbar: `scrollbar-gutter: stable` then keeps its room and
|
|
167
|
+
// `--entasis-scrollbar-width` carries its width for `position: fixed` bars. `padding` is the
|
|
168
|
+
// same lock after the lock measured that the gutter did not hold (an unsupported property, or
|
|
169
|
+
// a viewport with a custom `::-webkit-scrollbar`): the scrollbar's width is padded instead.
|
|
170
|
+
// `uncompensated` marks a page that reserves the gutter itself or has no classic scrollbar,
|
|
171
|
+
// which would otherwise gain a gutter it never had.
|
|
172
|
+
const scrollLock = '[data-entasis-scroll-lock]';
|
|
173
|
+
const scrollLockGutter = `${scrollLock}:not([data-entasis-scroll-lock='uncompensated']):not([data-entasis-scroll-lock='padding'])`;
|
|
174
|
+
addBase({
|
|
175
|
+
// `!important`: base-layer rules lose to a page's unlayered `html { overflow-y: scroll }`
|
|
176
|
+
// and to an outside library's inline `overflow`, and the lock has to hold against both.
|
|
177
|
+
[scrollLock]: { overflow: 'hidden !important' },
|
|
178
|
+
[scrollLockGutter]: { 'scrollbar-gutter': 'stable !important' },
|
|
179
|
+
[`${scrollLock}[data-entasis-scroll-lock='padding']`]: {
|
|
180
|
+
'padding-inline-end': 'var(--entasis-scrollbar-width, 0px)'
|
|
181
|
+
},
|
|
182
|
+
// The keyboard overlap from the visual viewport (see Theme); `0px` until a Theme measures it.
|
|
183
|
+
html: { '--keyboard-inset': '0px' }
|
|
184
|
+
});
|
|
185
|
+
// DRAG AND DROP — the dragged item's dim and the empty-list drop tint, as plain rules rather
|
|
186
|
+
// than a `<style>` the list attachment would inject (a strict CSP would block it without a
|
|
187
|
+
// nonce). The tint sits in `:where()` (zero specificity) so any class on the container wins.
|
|
188
|
+
addBase({
|
|
189
|
+
'[data-dnd-dragging]': { opacity: '0.4' },
|
|
190
|
+
':where([data-dnd-over="true"]:not(:has([data-dnd-item])))': {
|
|
191
|
+
'background-color': 'color-mix(in oklab, var(--color-primary, currentColor) 6%, transparent)'
|
|
192
|
+
}
|
|
193
|
+
});
|
|
163
194
|
// DYNAMIC WINDOW UTILITIES
|
|
164
195
|
addUtilities({
|
|
165
196
|
'.h-window': {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const typesDescription = "\n# Shared theme types\n\nImport from `entasis/types`.\n\nColors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.\n";
|
|
1
|
+
export declare const typesDescription = "\n# Shared theme types\n\nImport from `entasis/types`.\n\nColors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.\n\n## Open-change details\n\nEvery overlay's `onOpenChange(open, details)` receives `OpenChangeDetails` as its second argument, and runs before the state changes:\n\n- `reason` (`OpenChangeReason`): `'trigger-press'`, `'trigger-hover'`, `'trigger-focus'`, `'outside-press'`, `'escape-key'`, `'close-watcher'` (the Android Back gesture), `'close-press'`, `'item-press'`, `'list-navigation'`, `'input-change'` (typing in a combobox input), `'focus-out'`, `'swipe'`, `'trigger-unmount'`, `'find-in-page'` (the browser's find-in-page opened a disclosure that hides its content until found) or `'imperative-action'`.\n- `event`: the DOM event behind the change, when there is one.\n- `trigger`: the trigger element involved, when a trigger caused it.\n- `interaction` (`OpenChangeInteraction`): `'mouse'`, `'touch'`, `'pen'`, `'keyboard'` or `'programmatic'`.\n- `cancel()` keeps the overlay as it was and leaves the event untouched (a cancelled Escape is not `defaultPrevented`); `isCanceled` reports it.\n\n`OpenChangeHandler` is the `(open, details) => void` signature itself. Inside the callback, `open` still holds the previous state.\n\n```ts\nimport type { OpenChangeDetails } from 'entasis/types';\n\n// Keeps an editor open when the user presses outside it with unsaved text.\nexport function keepDraftOpen(draft: () => string) {\n\treturn (open: boolean, details: OpenChangeDetails) => {\n\t\tif (!open && details.reason === 'outside-press' && draft()) details.cancel();\n\t};\n}\n```\n";
|
package/dist/types/types.mcp.js
CHANGED
|
@@ -4,4 +4,27 @@ export const typesDescription = `
|
|
|
4
4
|
Import from \`entasis/types\`.
|
|
5
5
|
|
|
6
6
|
Colors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.
|
|
7
|
+
|
|
8
|
+
## Open-change details
|
|
9
|
+
|
|
10
|
+
Every overlay's \`onOpenChange(open, details)\` receives \`OpenChangeDetails\` as its second argument, and runs before the state changes:
|
|
11
|
+
|
|
12
|
+
- \`reason\` (\`OpenChangeReason\`): \`'trigger-press'\`, \`'trigger-hover'\`, \`'trigger-focus'\`, \`'outside-press'\`, \`'escape-key'\`, \`'close-watcher'\` (the Android Back gesture), \`'close-press'\`, \`'item-press'\`, \`'list-navigation'\`, \`'input-change'\` (typing in a combobox input), \`'focus-out'\`, \`'swipe'\`, \`'trigger-unmount'\`, \`'find-in-page'\` (the browser's find-in-page opened a disclosure that hides its content until found) or \`'imperative-action'\`.
|
|
13
|
+
- \`event\`: the DOM event behind the change, when there is one.
|
|
14
|
+
- \`trigger\`: the trigger element involved, when a trigger caused it.
|
|
15
|
+
- \`interaction\` (\`OpenChangeInteraction\`): \`'mouse'\`, \`'touch'\`, \`'pen'\`, \`'keyboard'\` or \`'programmatic'\`.
|
|
16
|
+
- \`cancel()\` keeps the overlay as it was and leaves the event untouched (a cancelled Escape is not \`defaultPrevented\`); \`isCanceled\` reports it.
|
|
17
|
+
|
|
18
|
+
\`OpenChangeHandler\` is the \`(open, details) => void\` signature itself. Inside the callback, \`open\` still holds the previous state.
|
|
19
|
+
|
|
20
|
+
\`\`\`ts
|
|
21
|
+
import type { OpenChangeDetails } from './index.ts';
|
|
22
|
+
|
|
23
|
+
// Keeps an editor open when the user presses outside it with unsaved text.
|
|
24
|
+
export function keepDraftOpen(draft: () => string) {
|
|
25
|
+
return (open: boolean, details: OpenChangeDetails) => {
|
|
26
|
+
if (!open && details.reason === 'outside-press' && draft()) details.cancel();
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
\`\`\`
|
|
7
30
|
`;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
type NonceSource = () => string | undefined;
|
|
2
|
+
/** Registers where the nonce comes from; the returned function removes the registration. */
|
|
3
|
+
export declare function registerCspNonce(source: NonceSource): () => void;
|
|
4
|
+
/**
|
|
5
|
+
* The nonce of the most recently mounted `<Theme>` that has one, or `undefined` without a Theme
|
|
6
|
+
* or a nonce. Client-only: on the server a module-level value would leak between requests.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getCspNonce(): string | undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Stamps `nonce` (default: `getCspNonce()`) on a script, style or link element before it is
|
|
11
|
+
* attached, so a CSP that only allows nonced inline code accepts it. Returns the element.
|
|
12
|
+
*/
|
|
13
|
+
export declare function applyCspNonce<E extends Element>(element: E, nonce?: string | undefined): E;
|
|
14
|
+
/** ` nonce="…"` for markup built as a string, or `''` without a nonce. */
|
|
15
|
+
export declare const nonceAttribute: (nonce: string | undefined) => string;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// The Content-Security-Policy nonce of the page, for code that injects a `<script>` or `<style>`
|
|
2
|
+
// outside a component (CDN loaders, runtime stylesheets). `<Theme nonce>` registers its value
|
|
3
|
+
// here while it is mounted, the way `registerActiveTheme` exposes the Theme to plain modules;
|
|
4
|
+
// components that render markup (BeforeHydratation) read it from the Theme directly.
|
|
5
|
+
const sources = [];
|
|
6
|
+
/** Registers where the nonce comes from; the returned function removes the registration. */
|
|
7
|
+
export function registerCspNonce(source) {
|
|
8
|
+
sources.push(source);
|
|
9
|
+
return () => {
|
|
10
|
+
const index = sources.lastIndexOf(source);
|
|
11
|
+
if (index >= 0)
|
|
12
|
+
sources.splice(index, 1);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The nonce of the most recently mounted `<Theme>` that has one, or `undefined` without a Theme
|
|
17
|
+
* or a nonce. Client-only: on the server a module-level value would leak between requests.
|
|
18
|
+
*/
|
|
19
|
+
export function getCspNonce() {
|
|
20
|
+
for (let index = sources.length - 1; index >= 0; index -= 1) {
|
|
21
|
+
const nonce = sources[index]();
|
|
22
|
+
if (nonce)
|
|
23
|
+
return nonce;
|
|
24
|
+
}
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Stamps `nonce` (default: `getCspNonce()`) on a script, style or link element before it is
|
|
29
|
+
* attached, so a CSP that only allows nonced inline code accepts it. Returns the element.
|
|
30
|
+
*/
|
|
31
|
+
export function applyCspNonce(element, nonce = getCspNonce()) {
|
|
32
|
+
if (nonce)
|
|
33
|
+
element.setAttribute('nonce', nonce);
|
|
34
|
+
return element;
|
|
35
|
+
}
|
|
36
|
+
/** Escapes a value for a double-quoted HTML attribute. */
|
|
37
|
+
const escapeAttribute = (value) => value.replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
|
38
|
+
/** ` nonce="…"` for markup built as a string, or `''` without a nonce. */
|
|
39
|
+
export const nonceAttribute = (nonce) => nonce ? ` nonce="${escapeAttribute(nonce)}"` : '';
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* "last class wins" rule holds for them too:
|
|
8
8
|
* - `raised-*` elevation (bordered) and `lift-*` (shadow only)
|
|
9
9
|
* - `h-control-*` control heights
|
|
10
|
-
* - `h-row-*` / `min-h-row-*` row densities
|
|
10
|
+
* - `h-row-*` / `min-h-row-*` row densities, `min-h-control-*` control-height floors
|
|
11
11
|
* - `size-icon-*` icon sizes
|
|
12
12
|
* - `min-size-hit-*` minimum hit areas
|
|
13
13
|
* - `ps-indent-*` nesting indents
|
|
@@ -53,6 +53,9 @@ export declare const mergeConfig: {
|
|
|
53
53
|
'min-h-row': {
|
|
54
54
|
'min-h-row': string[];
|
|
55
55
|
}[];
|
|
56
|
+
'min-h-control': {
|
|
57
|
+
'min-h-control': string[];
|
|
58
|
+
}[];
|
|
56
59
|
'size-icon': {
|
|
57
60
|
'size-icon': string[];
|
|
58
61
|
}[];
|
|
@@ -135,6 +138,7 @@ export declare const mergeConfig: {
|
|
|
135
138
|
size: string[];
|
|
136
139
|
'min-size-hit': string[];
|
|
137
140
|
'min-h-row': string[];
|
|
141
|
+
'min-h-control': string[];
|
|
138
142
|
'min-w': string[];
|
|
139
143
|
'min-h': string[];
|
|
140
144
|
'ps-indent': string[];
|
package/dist/utils/cva/merge.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* "last class wins" rule holds for them too:
|
|
8
8
|
* - `raised-*` elevation (bordered) and `lift-*` (shadow only)
|
|
9
9
|
* - `h-control-*` control heights
|
|
10
|
-
* - `h-row-*` / `min-h-row-*` row densities
|
|
10
|
+
* - `h-row-*` / `min-h-row-*` row densities, `min-h-control-*` control-height floors
|
|
11
11
|
* - `size-icon-*` icon sizes
|
|
12
12
|
* - `min-size-hit-*` minimum hit areas
|
|
13
13
|
* - `ps-indent-*` nesting indents
|
|
@@ -64,6 +64,7 @@ export const mergeConfig = {
|
|
|
64
64
|
'h-control': [{ 'h-control': ['sm', 'md', 'lg'] }],
|
|
65
65
|
'h-row': [{ 'h-row': ['sm', 'md', 'lg'] }],
|
|
66
66
|
'min-h-row': [{ 'min-h-row': ['sm', 'md', 'lg'] }],
|
|
67
|
+
'min-h-control': [{ 'min-h-control': ['sm', 'md', 'lg'] }],
|
|
67
68
|
'size-icon': [{ 'size-icon': ['xs', 'sm', 'md', 'lg', 'xl'] }],
|
|
68
69
|
'min-size-hit': [{ 'min-size-hit': ['sm', 'md', 'lg'] }],
|
|
69
70
|
'ps-indent': [{ 'ps-indent': ['sm', 'md', 'lg', 'xl'] }],
|
|
@@ -105,10 +106,11 @@ export const mergeConfig = {
|
|
|
105
106
|
w: ['size-icon'],
|
|
106
107
|
size: ['h-control', 'h-row', 'size-icon'],
|
|
107
108
|
// `min-size-hit-*` sets `min-width` + `min-height`, `min-h-row-*` only the height.
|
|
108
|
-
'min-size-hit': ['min-w', 'min-h', 'min-h-row'],
|
|
109
|
-
'min-h-row': ['min-h', 'min-size-hit'],
|
|
109
|
+
'min-size-hit': ['min-w', 'min-h', 'min-h-row', 'min-h-control'],
|
|
110
|
+
'min-h-row': ['min-h', 'min-size-hit', 'min-h-control'],
|
|
111
|
+
'min-h-control': ['min-h', 'min-size-hit', 'min-h-row'],
|
|
110
112
|
'min-w': ['min-size-hit'],
|
|
111
|
-
'min-h': ['min-size-hit', 'min-h-row'],
|
|
113
|
+
'min-h': ['min-size-hit', 'min-h-row', 'min-h-control'],
|
|
112
114
|
// `ps-indent-*` sets `padding-inline-start`.
|
|
113
115
|
'ps-indent': ['ps', 'px', 'p'],
|
|
114
116
|
ps: ['ps-indent'],
|
package/dist/utils/focus.d.ts
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
export declare const focusableSelector: string;
|
|
2
|
+
/**
|
|
3
|
+
* Whether the element can take focus right now: a focusable kind of element that is enabled,
|
|
4
|
+
* rendered and not inside an `inert`, `hidden` or `aria-hidden` subtree. Unlike `isTabbable` it
|
|
5
|
+
* accepts `tabindex="-1"`, the kind of target focus restoration may land on.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isFocusable(element: HTMLElement): boolean;
|
|
2
8
|
export declare function isTabbable(element: HTMLElement): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The element that really has focus: `root.activeElement` stops at a shadow host, so this looks
|
|
11
|
+
* inside open shadow roots until it reaches the focused element. Like `activeElement`, it is
|
|
12
|
+
* `<body>` when nothing is focused. It is an `Element`, not only an `HTMLElement`: an SVG element
|
|
13
|
+
* with a `tabindex` takes focus too, and must not read as "nothing is focused".
|
|
14
|
+
*/
|
|
15
|
+
export declare function getDeepActiveElement(root?: Document | ShadowRoot): Element | null;
|
|
16
|
+
/**
|
|
17
|
+
* `container.contains(node)` across shadow boundaries: an element inside a shadow root belongs to
|
|
18
|
+
* the container when its host does.
|
|
19
|
+
*/
|
|
20
|
+
export declare function composedContains(container: Node, node: Node | null): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the page runs in WebKit (Safari, and every browser on iOS) rather than Chromium or
|
|
23
|
+
* Gecko. Safari is the only engine whose `navigator.vendor` is Apple's.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isWebKit(): boolean;
|
|
26
|
+
/** Whether typing goes into the element: a text input, a textarea or an editable region. */
|
|
27
|
+
export declare function isTextField(element: Element | null): element is HTMLElement;
|
|
3
28
|
/** Tabbable descendants in tab order (positive tabindex first, one radio per group). */
|
|
4
29
|
export declare function getTabbableElements(node: HTMLElement): HTMLElement[];
|
|
5
30
|
export declare const getFirstTabbable: (node: HTMLElement) => HTMLElement;
|
|
@@ -8,3 +33,12 @@ export declare const getFirstTabbable: (node: HTMLElement) => HTMLElement;
|
|
|
8
33
|
* `[data-autofocus]` target, else the first tabbable, else the container itself.
|
|
9
34
|
*/
|
|
10
35
|
export declare function resolveInitialFocus(node: HTMLElement): HTMLElement;
|
|
36
|
+
/**
|
|
37
|
+
* The first tabbable element that follows `reference` in document order, skipping its own
|
|
38
|
+
* descendants and everything inside `exclude`. `boundary` limits the search to one subtree (a
|
|
39
|
+
* parent popover's panel). `null` when nothing follows.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getTabbableAfter(reference: HTMLElement, { exclude, boundary }?: {
|
|
42
|
+
exclude?: HTMLElement | null;
|
|
43
|
+
boundary?: HTMLElement | null;
|
|
44
|
+
}): HTMLElement | null;
|
package/dist/utils/focus.js
CHANGED
|
@@ -16,6 +16,23 @@ export const focusableSelector = [
|
|
|
16
16
|
'[contenteditable]:not([contenteditable="false"])',
|
|
17
17
|
'[tabindex]'
|
|
18
18
|
].join(',');
|
|
19
|
+
/**
|
|
20
|
+
* Whether the element can take focus right now: a focusable kind of element that is enabled,
|
|
21
|
+
* rendered and not inside an `inert`, `hidden` or `aria-hidden` subtree. Unlike `isTabbable` it
|
|
22
|
+
* accepts `tabindex="-1"`, the kind of target focus restoration may land on.
|
|
23
|
+
*/
|
|
24
|
+
export function isFocusable(element) {
|
|
25
|
+
if (!element.isConnected || !element.matches(focusableSelector))
|
|
26
|
+
return false;
|
|
27
|
+
if (element.matches(':disabled'))
|
|
28
|
+
return false;
|
|
29
|
+
if (element.closest('[inert], [hidden], [aria-hidden="true"]'))
|
|
30
|
+
return false;
|
|
31
|
+
if (element.getClientRects().length === 0)
|
|
32
|
+
return false;
|
|
33
|
+
const style = getComputedStyle(element);
|
|
34
|
+
return style.visibility !== 'hidden' && style.visibility !== 'collapse';
|
|
35
|
+
}
|
|
19
36
|
export function isTabbable(element) {
|
|
20
37
|
if (element.tabIndex < 0 || element.matches(':disabled'))
|
|
21
38
|
return false;
|
|
@@ -26,6 +43,59 @@ export function isTabbable(element) {
|
|
|
26
43
|
const style = getComputedStyle(element);
|
|
27
44
|
return style.visibility !== 'hidden' && style.visibility !== 'collapse';
|
|
28
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* The element that really has focus: `root.activeElement` stops at a shadow host, so this looks
|
|
48
|
+
* inside open shadow roots until it reaches the focused element. Like `activeElement`, it is
|
|
49
|
+
* `<body>` when nothing is focused. It is an `Element`, not only an `HTMLElement`: an SVG element
|
|
50
|
+
* with a `tabindex` takes focus too, and must not read as "nothing is focused".
|
|
51
|
+
*/
|
|
52
|
+
export function getDeepActiveElement(root = document) {
|
|
53
|
+
let active = root.activeElement;
|
|
54
|
+
while (active?.shadowRoot?.activeElement)
|
|
55
|
+
active = active.shadowRoot.activeElement;
|
|
56
|
+
return active;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* `container.contains(node)` across shadow boundaries: an element inside a shadow root belongs to
|
|
60
|
+
* the container when its host does.
|
|
61
|
+
*/
|
|
62
|
+
export function composedContains(container, node) {
|
|
63
|
+
let current = node;
|
|
64
|
+
while (current) {
|
|
65
|
+
if (current === container)
|
|
66
|
+
return true;
|
|
67
|
+
current = current.parentNode ?? current.host ?? null;
|
|
68
|
+
}
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Whether the page runs in WebKit (Safari, and every browser on iOS) rather than Chromium or
|
|
73
|
+
* Gecko. Safari is the only engine whose `navigator.vendor` is Apple's.
|
|
74
|
+
*/
|
|
75
|
+
export function isWebKit() {
|
|
76
|
+
return typeof navigator !== 'undefined' && /Apple/i.test(navigator.vendor ?? '');
|
|
77
|
+
}
|
|
78
|
+
const TEXT_INPUT_TYPES = new Set([
|
|
79
|
+
'text',
|
|
80
|
+
'search',
|
|
81
|
+
'email',
|
|
82
|
+
'url',
|
|
83
|
+
'tel',
|
|
84
|
+
'password',
|
|
85
|
+
'number',
|
|
86
|
+
''
|
|
87
|
+
]);
|
|
88
|
+
/** Whether typing goes into the element: a text input, a textarea or an editable region. */
|
|
89
|
+
export function isTextField(element) {
|
|
90
|
+
if (!(element instanceof HTMLElement))
|
|
91
|
+
return false;
|
|
92
|
+
if (element instanceof HTMLTextAreaElement)
|
|
93
|
+
return true;
|
|
94
|
+
if (element instanceof HTMLInputElement)
|
|
95
|
+
return TEXT_INPUT_TYPES.has(element.type);
|
|
96
|
+
return (element.isContentEditable === true ||
|
|
97
|
+
element.matches('[contenteditable]:not([contenteditable="false"])'));
|
|
98
|
+
}
|
|
29
99
|
/** Tabbable descendants in tab order (positive tabindex first, one radio per group). */
|
|
30
100
|
export function getTabbableElements(node) {
|
|
31
101
|
const visible = Array.from(node.querySelectorAll(focusableSelector)).filter(isTabbable);
|
|
@@ -63,3 +133,26 @@ export function resolveInitialFocus(node) {
|
|
|
63
133
|
const tabbable = getTabbableElements(node);
|
|
64
134
|
return (tabbable.find((element) => !element.closest('[data-autofocus-skip]')) ?? tabbable[0] ?? node);
|
|
65
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* The first tabbable element that follows `reference` in document order, skipping its own
|
|
138
|
+
* descendants and everything inside `exclude`. `boundary` limits the search to one subtree (a
|
|
139
|
+
* parent popover's panel). `null` when nothing follows.
|
|
140
|
+
*/
|
|
141
|
+
export function getTabbableAfter(reference, { exclude, boundary = reference.ownerDocument.body } = {}) {
|
|
142
|
+
if (!boundary)
|
|
143
|
+
return null;
|
|
144
|
+
let next = null;
|
|
145
|
+
for (const element of getTabbableElements(boundary)) {
|
|
146
|
+
if (exclude && composedContains(exclude, element))
|
|
147
|
+
continue;
|
|
148
|
+
const position = reference.compareDocumentPosition(element);
|
|
149
|
+
if (position & Node.DOCUMENT_POSITION_CONTAINED_BY)
|
|
150
|
+
continue;
|
|
151
|
+
if (!(position & Node.DOCUMENT_POSITION_FOLLOWING))
|
|
152
|
+
continue;
|
|
153
|
+
// The tabbable list puts positive tabindex first; the nearest one in the page wins here.
|
|
154
|
+
if (!next || next.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING)
|
|
155
|
+
next = element;
|
|
156
|
+
}
|
|
157
|
+
return next;
|
|
158
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** How many elements are remembered per document. */
|
|
2
|
+
export declare const FOCUS_HISTORY_SIZE = 20;
|
|
3
|
+
/** Remembers an element as the newest entry of a document's history. */
|
|
4
|
+
export declare function recordFocus(element: HTMLElement, doc?: Document): void;
|
|
5
|
+
/**
|
|
6
|
+
* Starts remembering focus in `doc`. Calls nest: the listener stays until every caller has run
|
|
7
|
+
* the function this returns. Safe to call on the server, where it does nothing.
|
|
8
|
+
*/
|
|
9
|
+
export declare function installFocusHistory(doc?: Document | undefined): () => void;
|
|
10
|
+
/** The remembered elements of `doc` that are still connected, newest first. */
|
|
11
|
+
export declare function getFocusHistory(doc?: Document): HTMLElement[];
|
|
12
|
+
/**
|
|
13
|
+
* The most recently focused element that can take focus again: connected, enabled, rendered and
|
|
14
|
+
* not inside `exclude` (the overlay that is closing) or an `inert` subtree. `null` when none is.
|
|
15
|
+
*/
|
|
16
|
+
export declare function findFocusFallback(doc: Document, { exclude, accept }?: {
|
|
17
|
+
exclude?: Node | null;
|
|
18
|
+
accept?: (element: HTMLElement) => boolean;
|
|
19
|
+
}): HTMLElement | null;
|
|
20
|
+
/** Forgets everything remembered for `doc`. For tests. */
|
|
21
|
+
export declare function clearFocusHistory(doc?: Document): void;
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// A short memory of where focus has been, so an overlay whose opener is gone (a menu item that
|
|
2
|
+
// opened a dialog and left with the menu) can hand focus to the most recent element that is still
|
|
3
|
+
// on the page instead of dropping it on <body>. `<Theme>` installs the listener for its document;
|
|
4
|
+
// a focus scope installs it for its own document too, so an overlay in an iframe is covered.
|
|
5
|
+
import { composedContains, isFocusable } from './focus.js';
|
|
6
|
+
/** How many elements are remembered per document. */
|
|
7
|
+
export const FOCUS_HISTORY_SIZE = 20;
|
|
8
|
+
const histories = new WeakMap();
|
|
9
|
+
/** Remembers an element as the newest entry of a document's history. */
|
|
10
|
+
export function recordFocus(element, doc = element.ownerDocument) {
|
|
11
|
+
const history = histories.get(doc);
|
|
12
|
+
if (!history || element === doc.body || element === doc.documentElement)
|
|
13
|
+
return;
|
|
14
|
+
const { entries } = history;
|
|
15
|
+
const newest = entries.at(-1)?.deref();
|
|
16
|
+
if (newest === element)
|
|
17
|
+
return;
|
|
18
|
+
// Drop an earlier entry for the same element and every entry that has been collected.
|
|
19
|
+
const kept = entries.filter((entry) => {
|
|
20
|
+
const value = entry.deref();
|
|
21
|
+
return value !== undefined && value !== element;
|
|
22
|
+
});
|
|
23
|
+
kept.push(new WeakRef(element));
|
|
24
|
+
history.entries = kept.slice(-FOCUS_HISTORY_SIZE);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Starts remembering focus in `doc`. Calls nest: the listener stays until every caller has run
|
|
28
|
+
* the function this returns. Safe to call on the server, where it does nothing.
|
|
29
|
+
*/
|
|
30
|
+
export function installFocusHistory(doc = typeof document === 'undefined' ? undefined : document) {
|
|
31
|
+
if (!doc)
|
|
32
|
+
return () => { };
|
|
33
|
+
let history = histories.get(doc);
|
|
34
|
+
if (!history) {
|
|
35
|
+
const onFocusIn = (event) => {
|
|
36
|
+
// Retargeted at the document when the focus is inside a shadow root: use the real target.
|
|
37
|
+
const target = event.composedPath()[0] ?? event.target;
|
|
38
|
+
if (target instanceof HTMLElement)
|
|
39
|
+
recordFocus(target, doc);
|
|
40
|
+
};
|
|
41
|
+
doc.addEventListener('focusin', onFocusIn, true);
|
|
42
|
+
history = {
|
|
43
|
+
entries: [],
|
|
44
|
+
installs: 0,
|
|
45
|
+
stop: () => doc.removeEventListener('focusin', onFocusIn, true)
|
|
46
|
+
};
|
|
47
|
+
histories.set(doc, history);
|
|
48
|
+
// Whatever has focus now is the first thing worth remembering.
|
|
49
|
+
const active = doc.activeElement;
|
|
50
|
+
if (active instanceof HTMLElement)
|
|
51
|
+
recordFocus(active, doc);
|
|
52
|
+
}
|
|
53
|
+
history.installs += 1;
|
|
54
|
+
const owned = history;
|
|
55
|
+
let released = false;
|
|
56
|
+
return () => {
|
|
57
|
+
if (released)
|
|
58
|
+
return;
|
|
59
|
+
released = true;
|
|
60
|
+
owned.installs -= 1;
|
|
61
|
+
if (owned.installs > 0)
|
|
62
|
+
return;
|
|
63
|
+
owned.stop();
|
|
64
|
+
histories.delete(doc);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** The remembered elements of `doc` that are still connected, newest first. */
|
|
68
|
+
export function getFocusHistory(doc = document) {
|
|
69
|
+
const entries = histories.get(doc)?.entries ?? [];
|
|
70
|
+
const live = [];
|
|
71
|
+
for (const entry of entries) {
|
|
72
|
+
const element = entry.deref();
|
|
73
|
+
if (element?.isConnected)
|
|
74
|
+
live.push(element);
|
|
75
|
+
}
|
|
76
|
+
return live.reverse();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The most recently focused element that can take focus again: connected, enabled, rendered and
|
|
80
|
+
* not inside `exclude` (the overlay that is closing) or an `inert` subtree. `null` when none is.
|
|
81
|
+
*/
|
|
82
|
+
export function findFocusFallback(doc, { exclude, accept } = {}) {
|
|
83
|
+
for (const element of getFocusHistory(doc)) {
|
|
84
|
+
if (exclude && composedContains(exclude, element))
|
|
85
|
+
continue;
|
|
86
|
+
if (element.closest('[inert]') || !isFocusable(element))
|
|
87
|
+
continue;
|
|
88
|
+
if (accept && !accept(element))
|
|
89
|
+
continue;
|
|
90
|
+
return element;
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
/** Forgets everything remembered for `doc`. For tests. */
|
|
95
|
+
export function clearFocusHistory(doc = document) {
|
|
96
|
+
const history = histories.get(doc);
|
|
97
|
+
if (history)
|
|
98
|
+
history.entries = [];
|
|
99
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type Handler<E extends Event> = (event: E) => unknown;
|
|
2
|
+
/**
|
|
3
|
+
* Runs `consumer` first, then `builtIn` unless the consumer called `event.preventDefault()`.
|
|
4
|
+
* Either side may be missing; the returned handler is always callable.
|
|
5
|
+
*/
|
|
6
|
+
export declare function composeHandlers<E extends Event>(consumer: Handler<E> | null | undefined, builtIn: Handler<E> | null | undefined): (event: E) => void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Handler composition for components that wrap a consumer's handler around built-in behaviour.
|
|
2
|
+
// The rule (AGENTS.md proposed law 3): the consumer's handler runs first, on the same native
|
|
3
|
+
// event, and calling `event.preventDefault()` there cancels the built-in behaviour.
|
|
4
|
+
/**
|
|
5
|
+
* Runs `consumer` first, then `builtIn` unless the consumer called `event.preventDefault()`.
|
|
6
|
+
* Either side may be missing; the returned handler is always callable.
|
|
7
|
+
*/
|
|
8
|
+
export function composeHandlers(consumer, builtIn) {
|
|
9
|
+
return (event) => {
|
|
10
|
+
consumer?.(event);
|
|
11
|
+
if (!event.defaultPrevented)
|
|
12
|
+
builtIn?.(event);
|
|
13
|
+
};
|
|
14
|
+
}
|