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
|
@@ -5,28 +5,56 @@
|
|
|
5
5
|
import { useScrollAreaTheme } from './scrollArea.theme.js';
|
|
6
6
|
import { caretUpIcon } from '../Icons/caretUp.js';
|
|
7
7
|
import { caretDownIcon } from '../Icons/caretDown.js';
|
|
8
|
-
import { useI18n } from '../../i18n/context.svelte.js';
|
|
8
|
+
import { getI18nDirection, useI18n } from '../../i18n/context.svelte.js';
|
|
9
|
+
import { presence } from '../../utils/stateAttributes.js';
|
|
10
|
+
import { useDirection } from '../../utils/useDirection.svelte.js';
|
|
11
|
+
import { untrack } from 'svelte';
|
|
9
12
|
|
|
10
13
|
let {
|
|
11
14
|
ref = $bindable(null),
|
|
12
15
|
viewportRef = $bindable(null),
|
|
13
16
|
label,
|
|
14
|
-
viewportRole
|
|
17
|
+
viewportRole,
|
|
18
|
+
viewportAttrs,
|
|
15
19
|
class: className = '',
|
|
16
20
|
children,
|
|
17
21
|
delay = 0,
|
|
18
22
|
type = 'hover',
|
|
19
23
|
scrollOnEdges = false,
|
|
20
24
|
scrollFade = false,
|
|
25
|
+
overflowEdgeThreshold = 1,
|
|
21
26
|
onscroll,
|
|
22
27
|
theme,
|
|
23
28
|
...attachments
|
|
24
29
|
}: ScrollAreaProps = $props();
|
|
25
30
|
const t = $derived(useI18n());
|
|
26
31
|
|
|
32
|
+
const MERGED_VIEWPORT_ATTRS = [
|
|
33
|
+
'role',
|
|
34
|
+
'aria-label',
|
|
35
|
+
'tabindex',
|
|
36
|
+
'class',
|
|
37
|
+
'onscroll',
|
|
38
|
+
'onfocus',
|
|
39
|
+
'onblur'
|
|
40
|
+
];
|
|
41
|
+
|
|
27
42
|
const componentId = $props.id();
|
|
28
43
|
const viewportId = `${componentId}-viewport`;
|
|
29
44
|
|
|
45
|
+
// The horizontal offset of an RTL viewport is negative. The element's own computed direction
|
|
46
|
+
// wins (a `dir="ltr"` code block inside an RTL page), the i18n direction covers what a
|
|
47
|
+
// computed style cannot say.
|
|
48
|
+
const i18nDirection = getI18nDirection();
|
|
49
|
+
const resolveDirection = useDirection(
|
|
50
|
+
() => viewportRef,
|
|
51
|
+
() => {
|
|
52
|
+
if (!viewportRef || typeof getComputedStyle !== 'function') return undefined;
|
|
53
|
+
const computed = getComputedStyle(viewportRef).direction;
|
|
54
|
+
return computed === 'rtl' || computed === 'ltr' ? computed : undefined;
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
30
58
|
const scrollArea = new ScrollArea({
|
|
31
59
|
get type() {
|
|
32
60
|
return type;
|
|
@@ -36,7 +64,19 @@
|
|
|
36
64
|
},
|
|
37
65
|
get scrollOnEdges() {
|
|
38
66
|
return scrollOnEdges;
|
|
39
|
-
}
|
|
67
|
+
},
|
|
68
|
+
get overflowEdgeThreshold() {
|
|
69
|
+
return overflowEdgeThreshold;
|
|
70
|
+
},
|
|
71
|
+
direction: () => resolveDirection()
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
// A direction change (a locale switch, a `dir` flip) moves no box the observers watch.
|
|
75
|
+
$effect(() => {
|
|
76
|
+
// The computed direction answers first, so the i18n context is read here to subscribe.
|
|
77
|
+
void i18nDirection?.();
|
|
78
|
+
void resolveDirection();
|
|
79
|
+
untrack(() => scrollArea.measure());
|
|
40
80
|
});
|
|
41
81
|
|
|
42
82
|
const scrollFadeAxis = $derived.by(() => {
|
|
@@ -47,33 +87,126 @@
|
|
|
47
87
|
});
|
|
48
88
|
|
|
49
89
|
const classes = $derived(useScrollAreaTheme(theme));
|
|
90
|
+
|
|
91
|
+
// Accessibility of the viewport. An idle viewport is a plain div: it adds no role, no name and
|
|
92
|
+
// no tab stop, so a scroll area that fits its content (a short Select list, a card) is invisible
|
|
93
|
+
// to assistive tech. It becomes a named, focusable `group` only while it overflows (WCAG SCR34),
|
|
94
|
+
// or keeps the role and name the caller passed. A presentational viewport (`presentation` /
|
|
95
|
+
// `none`) stays transparent even while it overflows: the surrounding widget (a listbox with
|
|
96
|
+
// active-descendant navigation, say) owns keyboard scrolling, and a focusable or named node
|
|
97
|
+
// would cancel the presentational role.
|
|
98
|
+
//
|
|
99
|
+
// A caller that makes the viewport its own widget passes `viewportAttrs` with a `role`: the
|
|
100
|
+
// caller then owns the name and the tab stop as well, and the viewport adds neither.
|
|
101
|
+
//
|
|
102
|
+
// A viewport that holds focus keeps its role, name and a programmatic tab stop (-1) after its
|
|
103
|
+
// content stops overflowing (a resize, a zoom-out, filtered content): removing the tabindex of
|
|
104
|
+
// the focused element would make the browser drop focus to <body>. They go once it blurs.
|
|
105
|
+
let viewportFocused = $state(false);
|
|
106
|
+
const exposed = $derived(scrollArea.overflowing || viewportFocused);
|
|
107
|
+
const ownedRole = $derived(viewportAttrs?.role);
|
|
108
|
+
const effectiveRole = $derived(ownedRole ?? viewportRole);
|
|
109
|
+
const presentational = $derived(effectiveRole === 'presentation' || effectiveRole === 'none');
|
|
110
|
+
const resolvedViewportRole = $derived(
|
|
111
|
+
ownedRole ?? viewportRole ?? (label !== undefined || exposed ? 'group' : undefined)
|
|
112
|
+
);
|
|
113
|
+
const resolvedViewportLabel = $derived(
|
|
114
|
+
viewportAttrs?.['aria-label'] ??
|
|
115
|
+
(presentational
|
|
116
|
+
? undefined
|
|
117
|
+
: (label ??
|
|
118
|
+
(exposed && ownedRole === undefined && !viewportAttrs?.['aria-labelledby']
|
|
119
|
+
? t.scrollableContent
|
|
120
|
+
: undefined)))
|
|
121
|
+
);
|
|
122
|
+
const resolvedViewportTabindex = $derived(
|
|
123
|
+
viewportAttrs?.tabindex ??
|
|
124
|
+
(presentational || ownedRole !== undefined
|
|
125
|
+
? undefined
|
|
126
|
+
: scrollArea.overflowing
|
|
127
|
+
? 0
|
|
128
|
+
: viewportFocused
|
|
129
|
+
? -1
|
|
130
|
+
: undefined)
|
|
131
|
+
);
|
|
132
|
+
// Everything else the caller passes goes straight onto the viewport. The properties above, the
|
|
133
|
+
// class and the handlers are merged instead, so they are left out here.
|
|
134
|
+
const viewportExtra = $derived.by(() => {
|
|
135
|
+
const extra: Record<PropertyKey, unknown> = { ...viewportAttrs };
|
|
136
|
+
for (const key of MERGED_VIEWPORT_ATTRS) delete extra[key];
|
|
137
|
+
return extra;
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Bars show while the area is hovered or scrolling in `hover` mode: touch scrolling, which
|
|
141
|
+
// never hovers, still reveals them.
|
|
142
|
+
const showScrollbarY = $derived(
|
|
143
|
+
scrollArea.isDraggingY ||
|
|
144
|
+
(scrollArea.visible &&
|
|
145
|
+
(type === 'always' ||
|
|
146
|
+
type === 'auto' ||
|
|
147
|
+
(type === 'hover' && (scrollArea.hoover.isHovered || scrollArea.isScrolling)) ||
|
|
148
|
+
(type === 'scroll' && scrollArea.isScrolling)))
|
|
149
|
+
);
|
|
150
|
+
const showScrollbarX = $derived(
|
|
151
|
+
scrollArea.isDraggingX ||
|
|
152
|
+
(scrollArea.visibleX &&
|
|
153
|
+
(type === 'always' ||
|
|
154
|
+
type === 'auto' ||
|
|
155
|
+
(type === 'hover' && (scrollArea.hoover.isHovered || scrollArea.isScrolling)) ||
|
|
156
|
+
(type === 'scroll' && scrollArea.isScrolling)))
|
|
157
|
+
);
|
|
158
|
+
const scrolling = $derived(presence(scrollArea.isScrolling));
|
|
50
159
|
</script>
|
|
51
160
|
|
|
52
161
|
<div
|
|
53
162
|
data-scroll-area
|
|
54
163
|
data-slot="scroll-area"
|
|
164
|
+
data-scrolling={scrolling}
|
|
165
|
+
data-has-overflow-x={presence(scrollArea.visibleX)}
|
|
166
|
+
data-has-overflow-y={presence(scrollArea.visible)}
|
|
167
|
+
data-overflow-x-start={presence(scrollArea.hasOverflowXStart)}
|
|
168
|
+
data-overflow-x-end={presence(scrollArea.hasOverflowXEnd)}
|
|
169
|
+
data-overflow-y-start={presence(scrollArea.hasOverflowYStart)}
|
|
170
|
+
data-overflow-y-end={presence(scrollArea.hasOverflowYEnd)}
|
|
55
171
|
bind:this={ref}
|
|
56
172
|
class={classes.root({ className })}
|
|
57
173
|
style:position="relative"
|
|
174
|
+
style:--scroll-area-overflow-x-start="{scrollArea.overflowXStart}px"
|
|
175
|
+
style:--scroll-area-overflow-x-end="{scrollArea.overflowXEnd}px"
|
|
176
|
+
style:--scroll-area-overflow-y-start="{scrollArea.overflowYStart}px"
|
|
177
|
+
style:--scroll-area-overflow-y-end="{scrollArea.overflowYEnd}px"
|
|
58
178
|
{@attach scrollArea.hoover.reference}
|
|
59
179
|
{@attach scrollArea.scrollOnEdgesAttachment}
|
|
60
180
|
{...attachments}
|
|
61
181
|
>
|
|
62
182
|
<!-- The viewport is the native scroll container and the keyboard scroll region: focusable
|
|
63
183
|
only when it overflows (WCAG SCR34 scrollable-region pattern), so it never becomes a
|
|
64
|
-
dead tab stop. -->
|
|
184
|
+
dead tab stop. Role, name and tab stop resolve in the script above. -->
|
|
65
185
|
<!-- svelte-ignore a11y_no_noninteractive_tabindex -->
|
|
66
186
|
<div
|
|
67
187
|
id={viewportId}
|
|
188
|
+
{...viewportExtra}
|
|
68
189
|
data-scroll-area-viewport
|
|
69
190
|
data-slot="scroll-area-viewport"
|
|
191
|
+
data-scrolling={scrolling}
|
|
70
192
|
data-scroll-fade-axis={scrollFadeAxis === 'none' ? undefined : scrollFadeAxis}
|
|
71
193
|
bind:this={viewportRef}
|
|
72
|
-
class={classes.viewport({ scrollFade: scrollFadeAxis })}
|
|
73
|
-
tabindex={
|
|
74
|
-
role={
|
|
75
|
-
aria-label={
|
|
76
|
-
{
|
|
194
|
+
class={classes.viewport({ scrollFade: scrollFadeAxis, className: viewportAttrs?.class })}
|
|
195
|
+
tabindex={resolvedViewportTabindex}
|
|
196
|
+
role={resolvedViewportRole}
|
|
197
|
+
aria-label={resolvedViewportLabel}
|
|
198
|
+
onscroll={(event) => {
|
|
199
|
+
viewportAttrs?.onscroll?.(event);
|
|
200
|
+
onscroll?.(event);
|
|
201
|
+
}}
|
|
202
|
+
onfocus={(event) => {
|
|
203
|
+
viewportAttrs?.onfocus?.(event);
|
|
204
|
+
viewportFocused = true;
|
|
205
|
+
}}
|
|
206
|
+
onblur={(event) => {
|
|
207
|
+
viewportAttrs?.onblur?.(event);
|
|
208
|
+
viewportFocused = false;
|
|
209
|
+
}}
|
|
77
210
|
{@attach scrollArea.viewportAttachment}
|
|
78
211
|
style:position="relative"
|
|
79
212
|
style:overflow="scroll"
|
|
@@ -97,71 +230,76 @@
|
|
|
97
230
|
</div>
|
|
98
231
|
</div>
|
|
99
232
|
|
|
100
|
-
|
|
233
|
+
<!-- The scrollbars are pointer-only affordances: the viewport is the keyboard scroll region, so
|
|
234
|
+
the tracks stay out of the accessibility tree instead of exposing an unreachable
|
|
235
|
+
role="scrollbar" (inside a listbox they would also be invalid children). Where both bars
|
|
236
|
+
show, each stops short of the other at the corner. -->
|
|
237
|
+
{#if showScrollbarY}
|
|
101
238
|
<div
|
|
102
239
|
data-slot="scroll-area-scrollbar"
|
|
240
|
+
data-orientation="vertical"
|
|
241
|
+
data-scrolling={scrolling}
|
|
103
242
|
transition:fade={{ duration: 200 }}
|
|
104
243
|
bind:this={scrollArea.scrollbarYElement}
|
|
105
244
|
class={classes.scrollbar()}
|
|
106
|
-
style="
|
|
245
|
+
style:bottom="{scrollArea.trackXThickness}px"
|
|
107
246
|
style:display="flex"
|
|
108
247
|
style:user-select="none"
|
|
109
248
|
style:opacity={scrollArea.visible ? 1 : 0}
|
|
110
249
|
style:transition="opacity 0.2s ease"
|
|
111
|
-
|
|
112
|
-
aria-controls={viewportId}
|
|
113
|
-
aria-valuenow={scrollArea.scrollY}
|
|
114
|
-
aria-valuemin="0"
|
|
115
|
-
aria-valuemax={scrollArea.maxScrollY}
|
|
250
|
+
aria-hidden="true"
|
|
116
251
|
{@attach scrollArea.trackAttachment}
|
|
117
252
|
{@attach scrollArea.trackRect.reference}
|
|
118
253
|
>
|
|
119
254
|
<div
|
|
120
255
|
data-thumb
|
|
121
256
|
data-slot="scroll-area-thumb"
|
|
257
|
+
data-orientation="vertical"
|
|
258
|
+
data-scrolling={scrolling}
|
|
122
259
|
class={classes.scrollbarThumb()}
|
|
123
260
|
style:height={scrollArea.thumbYSize + 'px'}
|
|
124
261
|
style:width="100%"
|
|
125
262
|
style:transform={`translateY(${scrollArea.thumbYPosition}px)`}
|
|
126
|
-
{@attach scrollArea.dragY
|
|
263
|
+
{@attach scrollArea.dragY}
|
|
127
264
|
{@attach scrollArea.thumbRect.reference}
|
|
128
265
|
></div>
|
|
129
266
|
</div>
|
|
130
267
|
{/if}
|
|
131
268
|
|
|
132
|
-
{#if
|
|
269
|
+
{#if showScrollbarX}
|
|
133
270
|
<div
|
|
134
271
|
data-slot="scroll-area-scrollbar"
|
|
272
|
+
data-orientation="horizontal"
|
|
273
|
+
data-scrolling={scrolling}
|
|
135
274
|
transition:fade={{ duration: 200 }}
|
|
136
275
|
bind:this={scrollArea.scrollbarXElement}
|
|
137
276
|
class={classes.scrollbarX()}
|
|
138
|
-
style="
|
|
277
|
+
style:inset-inline-end="{scrollArea.trackYThickness}px"
|
|
139
278
|
style:display="flex"
|
|
140
279
|
style:user-select="none"
|
|
141
280
|
style:opacity={scrollArea.visibleX ? 1 : 0}
|
|
142
281
|
style:transition="opacity 0.2s ease"
|
|
143
|
-
|
|
144
|
-
aria-orientation="horizontal"
|
|
145
|
-
aria-controls={viewportId}
|
|
146
|
-
aria-valuenow={scrollArea.scrollX}
|
|
147
|
-
aria-valuemin="0"
|
|
148
|
-
aria-valuemax={scrollArea.maxScrollX}
|
|
282
|
+
aria-hidden="true"
|
|
149
283
|
{@attach scrollArea.trackAttachmentX}
|
|
284
|
+
{@attach scrollArea.trackRectX.reference}
|
|
150
285
|
>
|
|
151
286
|
<div
|
|
152
287
|
data-thumb
|
|
153
288
|
data-slot="scroll-area-thumb"
|
|
289
|
+
data-orientation="horizontal"
|
|
290
|
+
data-scrolling={scrolling}
|
|
154
291
|
class={classes.scrollbarThumb()}
|
|
155
292
|
style:width={scrollArea.thumbXSize + 'px'}
|
|
156
293
|
style:height="100%"
|
|
157
|
-
style:transform={`translateX(${scrollArea.
|
|
158
|
-
{@attach scrollArea.dragX
|
|
294
|
+
style:transform={`translateX(${scrollArea.thumbXTranslate}px)`}
|
|
295
|
+
{@attach scrollArea.dragX}
|
|
159
296
|
></div>
|
|
160
297
|
</div>
|
|
161
298
|
{/if}
|
|
162
299
|
{#if scrollArea.scrollOnEdgesAttachment}
|
|
163
300
|
{#if scrollArea.canScrollUp}
|
|
164
301
|
<div
|
|
302
|
+
aria-hidden="true"
|
|
165
303
|
class="absolute top-0 left-0 flex w-full items-center justify-center"
|
|
166
304
|
style:pointer-events="none"
|
|
167
305
|
>
|
|
@@ -171,6 +309,7 @@
|
|
|
171
309
|
|
|
172
310
|
{#if scrollArea.canScrollDown}
|
|
173
311
|
<div
|
|
312
|
+
aria-hidden="true"
|
|
174
313
|
class="absolute bottom-0 left-0 flex w-full items-center justify-center"
|
|
175
314
|
style:pointer-events="none"
|
|
176
315
|
>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { default as ScrollArea } from './ScrollArea.svelte';
|
|
2
|
-
export type { ScrollAreaProps } from './scrollArea.props.js';
|
|
2
|
+
export type { ScrollAreaProps, ScrollAreaViewportAttributes } from './scrollArea.props.js';
|
|
3
3
|
export { scrollAreaTheme, setScrollAreaTheme, useScrollAreaTheme, type ScrollAreaTheme, type ScrollAreaThemeProps } from './scrollArea.theme.js';
|
|
4
|
+
export { scrollAreaDataAttributes, scrollAreaCssVariables, type ScrollAreaDataAttribute, type ScrollAreaCssVariable } from './scrollArea.attributes.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styling hooks a ScrollArea exposes. Attributes are presence attributes (`''` while the
|
|
3
|
+
* state holds, omitted otherwise) unless the description says they carry a value; the variables
|
|
4
|
+
* are set on the root element in px.
|
|
5
|
+
*/
|
|
6
|
+
export declare const scrollAreaDataAttributes: {
|
|
7
|
+
readonly 'data-scrolling': "On the root, the viewport, the scrollbars and the thumbs: present from the first scroll event until the viewport has been idle for 400 ms.";
|
|
8
|
+
readonly 'data-has-overflow-x': "On the root: present while the content overflows horizontally.";
|
|
9
|
+
readonly 'data-has-overflow-y': "On the root: present while the content overflows vertically.";
|
|
10
|
+
readonly 'data-overflow-x-start': "On the root: present while content is hidden past the inline start edge (to the left in LTR, to the right in RTL).";
|
|
11
|
+
readonly 'data-overflow-x-end': "On the root: present while content is hidden past the inline end edge (to the right in LTR, to the left in RTL).";
|
|
12
|
+
readonly 'data-overflow-y-start': "On the root: present while content is hidden above the viewport.";
|
|
13
|
+
readonly 'data-overflow-y-end': "On the root: present while content is hidden below the viewport.";
|
|
14
|
+
readonly 'data-orientation': "On the scrollbars and thumbs: `vertical` or `horizontal`, the axis they scroll.";
|
|
15
|
+
};
|
|
16
|
+
/** The name of a ScrollArea data attribute. */
|
|
17
|
+
export type ScrollAreaDataAttribute = keyof typeof scrollAreaDataAttributes;
|
|
18
|
+
export declare const scrollAreaCssVariables: {
|
|
19
|
+
readonly '--scroll-area-overflow-x-start': "Px of content hidden past the inline start edge (0 while the axis does not overflow).";
|
|
20
|
+
readonly '--scroll-area-overflow-x-end': "Px of content hidden past the inline end edge (0 while the axis does not overflow).";
|
|
21
|
+
readonly '--scroll-area-overflow-y-start': "Px of content hidden above the viewport.";
|
|
22
|
+
readonly '--scroll-area-overflow-y-end': "Px of content hidden below the viewport.";
|
|
23
|
+
};
|
|
24
|
+
/** The name of a ScrollArea CSS variable. */
|
|
25
|
+
export type ScrollAreaCssVariable = keyof typeof scrollAreaCssVariables;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The styling hooks a ScrollArea exposes. Attributes are presence attributes (`''` while the
|
|
3
|
+
* state holds, omitted otherwise) unless the description says they carry a value; the variables
|
|
4
|
+
* are set on the root element in px.
|
|
5
|
+
*/
|
|
6
|
+
export const scrollAreaDataAttributes = {
|
|
7
|
+
'data-scrolling': 'On the root, the viewport, the scrollbars and the thumbs: present from the first scroll event until the viewport has been idle for 400 ms.',
|
|
8
|
+
'data-has-overflow-x': 'On the root: present while the content overflows horizontally.',
|
|
9
|
+
'data-has-overflow-y': 'On the root: present while the content overflows vertically.',
|
|
10
|
+
'data-overflow-x-start': 'On the root: present while content is hidden past the inline start edge (to the left in LTR, to the right in RTL).',
|
|
11
|
+
'data-overflow-x-end': 'On the root: present while content is hidden past the inline end edge (to the right in LTR, to the left in RTL).',
|
|
12
|
+
'data-overflow-y-start': 'On the root: present while content is hidden above the viewport.',
|
|
13
|
+
'data-overflow-y-end': 'On the root: present while content is hidden below the viewport.',
|
|
14
|
+
'data-orientation': 'On the scrollbars and thumbs: `vertical` or `horizontal`, the axis they scroll.'
|
|
15
|
+
};
|
|
16
|
+
export const scrollAreaCssVariables = {
|
|
17
|
+
'--scroll-area-overflow-x-start': 'Px of content hidden past the inline start edge (0 while the axis does not overflow).',
|
|
18
|
+
'--scroll-area-overflow-x-end': 'Px of content hidden past the inline end edge (0 while the axis does not overflow).',
|
|
19
|
+
'--scroll-area-overflow-y-start': 'Px of content hidden above the viewport.',
|
|
20
|
+
'--scroll-area-overflow-y-end': 'Px of content hidden below the viewport.'
|
|
21
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const scrollAreaDescription = "\n# ScrollArea Component\n\nThe ScrollArea component provides a native scroll viewport with custom overlay scrollbars.\n\n## Basic Usage\n\n```svelte\n<ScrollArea class=\"h-64\">\n\t{#each items as item}\n\t\t<div>{item}</div>\n\t{/each}\n</ScrollArea>\n```\n\n## Props\n\n### Core Props\n- **children**: Snippet - Content rendered inside the scrollable viewport\n- **ref**: HTMLElement | null (bindable) - Reference to the root scroll-area element\n- **viewportRef**: HTMLElement | null (bindable) - Reference to the native scrolling viewport, suitable for virtualizers and imperative scrolling\n- Native div attributes and attachments are forwarded to the root element\n- **label**: string
|
|
1
|
+
export declare const scrollAreaDescription = "\n# ScrollArea Component\n\nThe ScrollArea component provides a native scroll viewport with custom overlay scrollbars.\n\n## Basic Usage\n\n```svelte\n<ScrollArea class=\"h-64\">\n\t{#each items as item}\n\t\t<div>{item}</div>\n\t{/each}\n</ScrollArea>\n```\n\n## Props\n\n### Core Props\n- **children**: Snippet - Content rendered inside the scrollable viewport\n- **ref**: HTMLElement | null (bindable) - Reference to the root scroll-area element\n- **viewportRef**: HTMLElement | null (bindable) - Reference to the native scrolling viewport, suitable for virtualizers and imperative scrolling\n- Native div attributes and attachments are forwarded to the root element\n- **label**: string - Accessible name for the native scrolling viewport; passing it makes the viewport a named `group` even when its content fits. Without it the viewport is named 'Scrollable content' (i18n `scrollableContent`) only while it overflows\n- **viewportAttrs**: attributes, handlers and attachments spread onto the scrolling viewport, for a widget that makes the viewport its own element (a listbox: `role`, `aria-activedescendant`, `id`). They win over the viewport's own: `class` is added to its classes, and `onscroll`, `onfocus` and `onblur` run before the built-in handling. A `role` here hands the viewport's semantics to the caller: the viewport then adds neither the automatic 'Scrollable content' name nor the automatic tab stop, so pass `tabindex` and a name when the role needs them\n- **viewportRole**: string - Role of the scrolling viewport. Without it the viewport is a plain element while its content fits and a `group` while it overflows (or when `label` is passed). Set it to the role the surrounding structure expects (`rowgroup` inside a grid or treegrid, for instance); inside a listbox pass `presentation`, which keeps the viewport unnamed and out of the tab order even while it overflows\n- **type**: 'hover' | 'always' | 'scroll' | 'auto' (default: 'hover') - Controls scrollbar visibility. `hover` shows the bars while the pointer is over the area or the area is scrolling, so touch scrolling (which never hovers) reveals them too; `always` and `auto` show them whenever the content overflows; `scroll` shows them only while scrolling\n- **overflowEdgeThreshold**: number (default: 1) - Px of content that may stay hidden past an edge before `data-overflow-*-start` / `data-overflow-*-end` (and the `scrollOnEdges` arrows) count it\n- **delay**: number (default: 0) - Milliseconds before hover mode treats the area as hovered\n- **onscroll**: (event: Event) => void - Native scroll handler attached to the viewport\n\n### Behavior Props\n- **scrollOnEdges**: boolean (default: false) - Enables auto-scroll and up/down indicators when the pointer rests near the viewport edges\n- **scrollFade**: boolean (default: false) - Applies the shared `scroll-fade` utility to the scrollable viewport\n\n### Styling Props\n- **class**: string - Additional CSS classes for the root scroll area\n- **theme**: ScrollAreaThemeProps - Custom theme overrides\n\n## Examples\n\n### With Scroll Fade\n```svelte\n<ScrollArea class=\"h-64\" scrollFade>\n\t{#each items as item}\n\t\t<div>{item}</div>\n\t{/each}\n</ScrollArea>\n```\n\n### Always Visible Scrollbar\n```svelte\n<ScrollArea class=\"h-64\" type=\"always\">\n\tContent\n</ScrollArea>\n```\n\n### Edge Auto Scroll\n```svelte\n<ScrollArea class=\"h-64\" scrollOnEdges>\n\tContent\n</ScrollArea>\n```\n\n## Notes\n\n- The viewport is the native scroll container.\n- The `scrollFade` prop applies the utility to the viewport, not the outer wrapper.\n- Native browser scrollbars are hidden while custom scrollbar thumbs are rendered over the viewport.\n- Keyboard focus is applied only when the viewport overflows.\n\n## Accessibility\n\n- A viewport whose content fits is a plain element: no role, no name, no tab stop.\n- While it overflows, the viewport is a `group` named by `label` (default 'Scrollable content') with `tabindex=\"0\"`, so keyboard users can scroll it (WCAG SCR34).\n- A focused viewport whose content stops overflowing keeps its role, name and `tabindex=\"-1\"` until it blurs, so focus never drops to the page.\n- `viewportRole=\"presentation\"` (or `none`) keeps the viewport transparent even while it overflows; use it when a surrounding listbox or grid owns keyboard scrolling.\n- The custom scrollbars and the edge-scroll arrows are pointer-only and carry `aria-hidden=\"true\"`.\n\n## Styling hooks\n\nData attributes (presence attributes, set to `\"\"` while the state holds):\n\n- `data-scrolling` on the root, viewport, scrollbars and thumbs: from the first scroll event until the viewport has been idle for 400 ms\n- `data-has-overflow-x` / `data-has-overflow-y` on the root: the content overflows on that axis\n- `data-overflow-x-start`, `data-overflow-x-end`, `data-overflow-y-start`, `data-overflow-y-end` on the root: content is hidden past that edge by more than `overflowEdgeThreshold`. The x edges are logical (inline start / end), so in RTL `start` is the right edge\n- `data-orientation` (`vertical` | `horizontal`) on the scrollbars and thumbs\n\nCSS variables on the root, in px (0 while the axis does not overflow): `--scroll-area-overflow-x-start`, `--scroll-area-overflow-x-end`, `--scroll-area-overflow-y-start`, `--scroll-area-overflow-y-end`. Overscroll (WebKit rubber banding) is not counted as hidden content.\n\nThe typed maps `scrollAreaDataAttributes` and `scrollAreaCssVariables` (from `entasis/scroll-area`) list each name with its meaning.\n\n```svelte\n<!-- Rules appear only while content is hidden past that edge. -->\n<ScrollArea class=\"h-64 data-overflow-y-start:border-t data-overflow-y-end:border-b\">\n\tContent\n</ScrollArea>\n```\n\n```css\n/* Fade the top edge only while content is hidden above. */\n[data-scroll-area]::before {\n\topacity: min(1, calc(var(--scroll-area-overflow-y-start) / 24));\n}\n```\n\n## Behavior\n\n- Wheeling over a scrollbar scrolls the viewport, and passes the wheel on to the page once the viewport cannot move that way.\n- Pressing a scrollbar or thumb with the primary button does not move focus (a Combobox input keeps it while its list is dragged). Scroll snapping on the viewport is paused while a thumb is held, then restored.\n- Horizontal scrolling follows the viewport's writing direction: in RTL the offset is negative, the vertical bar sits at the left, the horizontal thumb starts at the right, and the bars inset each other at the corner when both show.\n- While WebKit rubber-bands past either end, the thumb shrinks (down to 18 px) and stays pinned to that edge instead of leaving its track.\n\n## Theme Structure\n\nThe theme object contains:\n- **root**: Main scroll area container styles\n- **viewport**: Scrollable viewport container styles\n- **content**: Scrollable content wrapper styles\n- **scrollbar**: Vertical scrollbar track styles\n- **scrollbarX**: Horizontal scrollbar track styles\n- **scrollbarThumb**: Scrollbar thumb styles\n\n## Available Variants\n\n**viewport**:\n- scrollFade: 'none' | 'y' | 'x' - Adds the shared vertical or horizontal scroll-fade utility\n";
|
|
@@ -20,9 +20,11 @@ The ScrollArea component provides a native scroll viewport with custom overlay s
|
|
|
20
20
|
- **ref**: HTMLElement | null (bindable) - Reference to the root scroll-area element
|
|
21
21
|
- **viewportRef**: HTMLElement | null (bindable) - Reference to the native scrolling viewport, suitable for virtualizers and imperative scrolling
|
|
22
22
|
- Native div attributes and attachments are forwarded to the root element
|
|
23
|
-
- **label**: string
|
|
24
|
-
- **
|
|
25
|
-
- **
|
|
23
|
+
- **label**: string - Accessible name for the native scrolling viewport; passing it makes the viewport a named \`group\` even when its content fits. Without it the viewport is named 'Scrollable content' (i18n \`scrollableContent\`) only while it overflows
|
|
24
|
+
- **viewportAttrs**: attributes, handlers and attachments spread onto the scrolling viewport, for a widget that makes the viewport its own element (a listbox: \`role\`, \`aria-activedescendant\`, \`id\`). They win over the viewport's own: \`class\` is added to its classes, and \`onscroll\`, \`onfocus\` and \`onblur\` run before the built-in handling. A \`role\` here hands the viewport's semantics to the caller: the viewport then adds neither the automatic 'Scrollable content' name nor the automatic tab stop, so pass \`tabindex\` and a name when the role needs them
|
|
25
|
+
- **viewportRole**: string - Role of the scrolling viewport. Without it the viewport is a plain element while its content fits and a \`group\` while it overflows (or when \`label\` is passed). Set it to the role the surrounding structure expects (\`rowgroup\` inside a grid or treegrid, for instance); inside a listbox pass \`presentation\`, which keeps the viewport unnamed and out of the tab order even while it overflows
|
|
26
|
+
- **type**: 'hover' | 'always' | 'scroll' | 'auto' (default: 'hover') - Controls scrollbar visibility. \`hover\` shows the bars while the pointer is over the area or the area is scrolling, so touch scrolling (which never hovers) reveals them too; \`always\` and \`auto\` show them whenever the content overflows; \`scroll\` shows them only while scrolling
|
|
27
|
+
- **overflowEdgeThreshold**: number (default: 1) - Px of content that may stay hidden past an edge before \`data-overflow-*-start\` / \`data-overflow-*-end\` (and the \`scrollOnEdges\` arrows) count it
|
|
26
28
|
- **delay**: number (default: 0) - Milliseconds before hover mode treats the area as hovered
|
|
27
29
|
- **onscroll**: (event: Event) => void - Native scroll handler attached to the viewport
|
|
28
30
|
|
|
@@ -66,6 +68,48 @@ The ScrollArea component provides a native scroll viewport with custom overlay s
|
|
|
66
68
|
- Native browser scrollbars are hidden while custom scrollbar thumbs are rendered over the viewport.
|
|
67
69
|
- Keyboard focus is applied only when the viewport overflows.
|
|
68
70
|
|
|
71
|
+
## Accessibility
|
|
72
|
+
|
|
73
|
+
- A viewport whose content fits is a plain element: no role, no name, no tab stop.
|
|
74
|
+
- While it overflows, the viewport is a \`group\` named by \`label\` (default 'Scrollable content') with \`tabindex="0"\`, so keyboard users can scroll it (WCAG SCR34).
|
|
75
|
+
- A focused viewport whose content stops overflowing keeps its role, name and \`tabindex="-1"\` until it blurs, so focus never drops to the page.
|
|
76
|
+
- \`viewportRole="presentation"\` (or \`none\`) keeps the viewport transparent even while it overflows; use it when a surrounding listbox or grid owns keyboard scrolling.
|
|
77
|
+
- The custom scrollbars and the edge-scroll arrows are pointer-only and carry \`aria-hidden="true"\`.
|
|
78
|
+
|
|
79
|
+
## Styling hooks
|
|
80
|
+
|
|
81
|
+
Data attributes (presence attributes, set to \`""\` while the state holds):
|
|
82
|
+
|
|
83
|
+
- \`data-scrolling\` on the root, viewport, scrollbars and thumbs: from the first scroll event until the viewport has been idle for 400 ms
|
|
84
|
+
- \`data-has-overflow-x\` / \`data-has-overflow-y\` on the root: the content overflows on that axis
|
|
85
|
+
- \`data-overflow-x-start\`, \`data-overflow-x-end\`, \`data-overflow-y-start\`, \`data-overflow-y-end\` on the root: content is hidden past that edge by more than \`overflowEdgeThreshold\`. The x edges are logical (inline start / end), so in RTL \`start\` is the right edge
|
|
86
|
+
- \`data-orientation\` (\`vertical\` | \`horizontal\`) on the scrollbars and thumbs
|
|
87
|
+
|
|
88
|
+
CSS variables on the root, in px (0 while the axis does not overflow): \`--scroll-area-overflow-x-start\`, \`--scroll-area-overflow-x-end\`, \`--scroll-area-overflow-y-start\`, \`--scroll-area-overflow-y-end\`. Overscroll (WebKit rubber banding) is not counted as hidden content.
|
|
89
|
+
|
|
90
|
+
The typed maps \`scrollAreaDataAttributes\` and \`scrollAreaCssVariables\` (from \`entasis/scroll-area\`) list each name with its meaning.
|
|
91
|
+
|
|
92
|
+
\`\`\`svelte
|
|
93
|
+
<!-- Rules appear only while content is hidden past that edge. -->
|
|
94
|
+
<ScrollArea class="h-64 data-overflow-y-start:border-t data-overflow-y-end:border-b">
|
|
95
|
+
Content
|
|
96
|
+
</ScrollArea>
|
|
97
|
+
\`\`\`
|
|
98
|
+
|
|
99
|
+
\`\`\`css
|
|
100
|
+
/* Fade the top edge only while content is hidden above. */
|
|
101
|
+
[data-scroll-area]::before {
|
|
102
|
+
opacity: min(1, calc(var(--scroll-area-overflow-y-start) / 24));
|
|
103
|
+
}
|
|
104
|
+
\`\`\`
|
|
105
|
+
|
|
106
|
+
## Behavior
|
|
107
|
+
|
|
108
|
+
- Wheeling over a scrollbar scrolls the viewport, and passes the wheel on to the page once the viewport cannot move that way.
|
|
109
|
+
- Pressing a scrollbar or thumb with the primary button does not move focus (a Combobox input keeps it while its list is dragged). Scroll snapping on the viewport is paused while a thumb is held, then restored.
|
|
110
|
+
- Horizontal scrolling follows the viewport's writing direction: in RTL the offset is negative, the vertical bar sits at the left, the horizontal thumb starts at the right, and the bars inset each other at the corner when both show.
|
|
111
|
+
- While WebKit rubber-bands past either end, the thumb shrinks (down to 18 px) and stays pinned to that edge instead of leaving its track.
|
|
112
|
+
|
|
69
113
|
## Theme Structure
|
|
70
114
|
|
|
71
115
|
The theme object contains:
|
|
@@ -2,23 +2,43 @@ import type { Snippet } from 'svelte';
|
|
|
2
2
|
import type { WithAttachments } from '../../types/props.js';
|
|
3
3
|
import type { ScrollAreaThemeProps } from './scrollArea.theme.js';
|
|
4
4
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
5
|
+
/** Attributes, handlers and attachments for the scrolling viewport element. */
|
|
6
|
+
export type ScrollAreaViewportAttributes = WithAttachments<Omit<HTMLAttributes<HTMLDivElement>, 'children'>>;
|
|
5
7
|
type ScrollAreaRootAttributes = Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'class' | 'onscroll'>;
|
|
6
8
|
export type ScrollAreaProps = WithAttachments<ScrollAreaRootAttributes & {
|
|
7
9
|
/** Bindable reference to the root scroll-area element. */
|
|
8
10
|
ref?: HTMLDivElement | null;
|
|
9
11
|
/** Bindable reference to the native scrolling viewport. */
|
|
10
12
|
viewportRef?: HTMLDivElement | null;
|
|
11
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Accessible name of the native scrolling viewport. Passing it makes the viewport a named
|
|
15
|
+
* `group` even when its content fits. Without it, the viewport is named "Scrollable content"
|
|
16
|
+
* (from the i18n catalog) only while it overflows and is a keyboard tab stop.
|
|
17
|
+
*/
|
|
12
18
|
label?: string;
|
|
13
19
|
/**
|
|
14
|
-
* Role of the native scrolling viewport.
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
20
|
+
* Role of the native scrolling viewport. Without it, the viewport is a plain element while
|
|
21
|
+
* its content fits and a `group` while it overflows (or when `label` is passed). Override
|
|
22
|
+
* it when the scroll area sits inside a structural role whose children are constrained: a
|
|
23
|
+
* grid or treegrid, say, where the viewport has to read as `rowgroup`. Inside a listbox,
|
|
24
|
+
* pass `presentation`: the viewport then never takes a name or a tab stop, even while it
|
|
25
|
+
* overflows, because the listbox owns keyboard scrolling.
|
|
18
26
|
*/
|
|
19
27
|
viewportRole?: string;
|
|
20
28
|
/**
|
|
21
|
-
*
|
|
29
|
+
* Attributes spread onto the scrolling viewport, for a widget that makes the viewport itself
|
|
30
|
+
* its semantic element: a listbox with `role`, `aria-activedescendant` and its own `id`,
|
|
31
|
+
* say. They are merged with the viewport's own, and win over them: `class` is added to the
|
|
32
|
+
* viewport's classes, and `onscroll`, `onfocus` and `onblur` run before the built-in
|
|
33
|
+
* handling. A `role` here hands the viewport's semantics to the caller: the viewport then
|
|
34
|
+
* takes neither the automatic "Scrollable content" name nor the automatic tab stop, so pass
|
|
35
|
+
* `tabindex` (and a name) when the role needs them.
|
|
36
|
+
*/
|
|
37
|
+
viewportAttrs?: ScrollAreaViewportAttributes;
|
|
38
|
+
/**
|
|
39
|
+
* Controls when the scrollbars are shown. `hover` shows them while the pointer is over the
|
|
40
|
+
* area or the area is scrolling (so touch scrolling, which never hovers, still reveals them),
|
|
41
|
+
* `always` and `auto` whenever the content overflows, `scroll` only while scrolling.
|
|
22
42
|
* @default 'hover'
|
|
23
43
|
*/
|
|
24
44
|
type?: 'auto' | 'always' | 'scroll' | 'hover';
|
|
@@ -32,6 +52,13 @@ export type ScrollAreaProps = WithAttachments<ScrollAreaRootAttributes & {
|
|
|
32
52
|
* @default false
|
|
33
53
|
*/
|
|
34
54
|
scrollFade?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Px of content that may stay hidden past an edge before `data-overflow-*-start` and
|
|
57
|
+
* `data-overflow-*-end` (and the `scrollOnEdges` arrows) count it. A fractional zoom level
|
|
58
|
+
* leaves a remainder below one px at the scroll end, which must not read as more content.
|
|
59
|
+
* @default 1
|
|
60
|
+
*/
|
|
61
|
+
overflowEdgeThreshold?: number;
|
|
35
62
|
/**
|
|
36
63
|
* Milliseconds to wait before hover mode treats the scroll area as hovered.
|
|
37
64
|
* @default 0
|
|
@@ -2,6 +2,16 @@ export interface ScrollAreaOptions {
|
|
|
2
2
|
delay: number;
|
|
3
3
|
type: 'auto' | 'always' | 'scroll' | 'hover';
|
|
4
4
|
scrollOnEdges: boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Px of content that may stay hidden past an edge before that edge counts as overflowing.
|
|
7
|
+
* Defaults to 1.
|
|
8
|
+
*/
|
|
9
|
+
overflowEdgeThreshold?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Writing direction of the viewport. In `rtl` the horizontal offset runs from 0 down to a
|
|
12
|
+
* negative number, so every horizontal read and write is mirrored. Defaults to `ltr`.
|
|
13
|
+
*/
|
|
14
|
+
direction?: () => 'ltr' | 'rtl';
|
|
5
15
|
}
|
|
6
16
|
declare const ScrollArea_base: new (props: ScrollAreaOptions) => {} & ScrollAreaOptions;
|
|
7
17
|
export declare class ScrollArea extends ScrollArea_base {
|
|
@@ -27,6 +37,18 @@ export declare class ScrollArea extends ScrollArea_base {
|
|
|
27
37
|
scrollbarXEnabled: boolean;
|
|
28
38
|
visible: boolean;
|
|
29
39
|
visibleX: boolean;
|
|
40
|
+
rtl: boolean;
|
|
41
|
+
trackYThickness: number;
|
|
42
|
+
trackXThickness: number;
|
|
43
|
+
private edgeThreshold;
|
|
44
|
+
overflowYStart: number;
|
|
45
|
+
overflowYEnd: number;
|
|
46
|
+
overflowXStart: number;
|
|
47
|
+
overflowXEnd: number;
|
|
48
|
+
hasOverflowYStart: boolean;
|
|
49
|
+
hasOverflowYEnd: boolean;
|
|
50
|
+
hasOverflowXStart: boolean;
|
|
51
|
+
hasOverflowXEnd: boolean;
|
|
30
52
|
canScrollUp: boolean;
|
|
31
53
|
canScrollDown: boolean;
|
|
32
54
|
thumbRect: {
|
|
@@ -37,27 +59,48 @@ export declare class ScrollArea extends ScrollArea_base {
|
|
|
37
59
|
readonly current: DOMRect;
|
|
38
60
|
reference: (ref: HTMLElement) => (() => void) | undefined;
|
|
39
61
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
readonly isDragging: boolean;
|
|
62
|
+
trackRectX: {
|
|
63
|
+
readonly current: DOMRect;
|
|
64
|
+
reference: (ref: HTMLElement) => (() => void) | undefined;
|
|
44
65
|
};
|
|
45
|
-
|
|
66
|
+
private trackYLength;
|
|
67
|
+
private trackXLength;
|
|
68
|
+
/** Thumb length the content ratio asks for, before any overscroll shrinks it. */
|
|
69
|
+
thumbYBaseSize: number;
|
|
70
|
+
thumbXBaseSize: number;
|
|
71
|
+
overscrollY: number;
|
|
72
|
+
overscrollX: number;
|
|
73
|
+
thumbYSize: number;
|
|
46
74
|
thumbXSize: number;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
75
|
+
private savedScrollSnapType;
|
|
76
|
+
private pauseScrollSnap;
|
|
77
|
+
private restoreScrollSnap;
|
|
78
|
+
isDraggingY: boolean;
|
|
79
|
+
dragY: import("svelte/attachments").Attachment<HTMLElement>;
|
|
51
80
|
isDraggingX: boolean;
|
|
52
|
-
|
|
81
|
+
dragX: import("svelte/attachments").Attachment<HTMLElement>;
|
|
82
|
+
overflowing: boolean;
|
|
53
83
|
hoover: {
|
|
54
|
-
reference: (ref: HTMLElement) => (
|
|
84
|
+
reference: (ref: HTMLElement) => () => void;
|
|
55
85
|
destroy: () => void;
|
|
86
|
+
cancel: () => void;
|
|
56
87
|
readonly isHovered: boolean;
|
|
57
88
|
};
|
|
58
89
|
thumbYPosition: number;
|
|
90
|
+
/** Distance from the track's inline start to the thumb's inline start edge. */
|
|
59
91
|
thumbXPosition: number;
|
|
60
|
-
|
|
92
|
+
/** The horizontal thumb's `translateX` in px: mirrored in RTL, where the track fills from the right. */
|
|
93
|
+
thumbXTranslate: number;
|
|
94
|
+
isScrolling: boolean;
|
|
95
|
+
private scrollingTimer;
|
|
96
|
+
private clearScrollingTimer;
|
|
97
|
+
/** Horizontal scroll offset as distance from the inline start, whatever the direction. */
|
|
98
|
+
private readScrollX;
|
|
99
|
+
/** Scrolls horizontally to a distance from the inline start. */
|
|
100
|
+
private writeScrollX;
|
|
101
|
+
/** Re-resolves the writing direction; true when it flipped. */
|
|
102
|
+
private syncDirection;
|
|
103
|
+
private readScrollOffsets;
|
|
61
104
|
private handleScroll;
|
|
62
105
|
handleTrackClick: (event: MouseEvent) => void;
|
|
63
106
|
handleTrackClickX: (event: MouseEvent) => void;
|
|
@@ -75,6 +118,7 @@ export declare class ScrollArea extends ScrollArea_base {
|
|
|
75
118
|
viewportAttachment: (element: HTMLElement) => () => void;
|
|
76
119
|
contentAttachment: (element: HTMLElement) => () => void;
|
|
77
120
|
private forwardWheelToViewport;
|
|
121
|
+
private keepFocusOnPress;
|
|
78
122
|
trackAttachment: (element: HTMLElement) => () => void;
|
|
79
123
|
trackAttachmentX: (element: HTMLElement) => () => void;
|
|
80
124
|
private scrollAnimationFrame;
|