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
|
@@ -97,7 +97,8 @@ export class ImageZoomLightbox {
|
|
|
97
97
|
plugins: [lgMediumZoom],
|
|
98
98
|
licenseKey: this.zoom.licenseKey,
|
|
99
99
|
startAnimationDuration: transitionDuration,
|
|
100
|
-
|
|
100
|
+
// Escape is handled here, so `onOpenChange` can be asked first (see attachEvents).
|
|
101
|
+
escKey: false,
|
|
101
102
|
hideScrollbar: this.zoom.lockScroll,
|
|
102
103
|
margin: Math.max(0, this.zoom.zoomMargin),
|
|
103
104
|
backgroundColor: this.zoom.backgroundColor,
|
|
@@ -124,6 +125,31 @@ export class ImageZoomLightbox {
|
|
|
124
125
|
this.sync(this.zoom.isOpen);
|
|
125
126
|
}
|
|
126
127
|
attachEvents(root, imageElement) {
|
|
128
|
+
// A press on the trigger asks `onOpenChange` before LightGallery's own listener on the
|
|
129
|
+
// trigger opens the zoom; a cancelled press never reaches it.
|
|
130
|
+
this.addEvent(root, 'click', (event) => {
|
|
131
|
+
const trigger = this.triggerElement;
|
|
132
|
+
if (!trigger || !(event.target instanceof Node) || !trigger.contains(event.target))
|
|
133
|
+
return;
|
|
134
|
+
if (this.instance?.lgOpened || this.zoom.disabled)
|
|
135
|
+
return;
|
|
136
|
+
if (!this.zoom.requestOpenChange(true, { reason: 'trigger-press', event, trigger })) {
|
|
137
|
+
event.preventDefault();
|
|
138
|
+
event.stopPropagation();
|
|
139
|
+
}
|
|
140
|
+
}, { capture: true });
|
|
141
|
+
this.addEvent(window, 'keydown', (event) => {
|
|
142
|
+
const key = event;
|
|
143
|
+
if (key.key !== 'Escape' || key.defaultPrevented || !this.instance?.lgOpened)
|
|
144
|
+
return;
|
|
145
|
+
if (!this.zoom.closeOnEscape)
|
|
146
|
+
return;
|
|
147
|
+
// A cancelled Escape is left untouched for whatever handles it next.
|
|
148
|
+
if (!this.zoom.requestOpenChange(false, { reason: 'escape-key', event }))
|
|
149
|
+
return;
|
|
150
|
+
key.preventDefault();
|
|
151
|
+
this.close();
|
|
152
|
+
});
|
|
127
153
|
this.addEvent(root, 'lgBeforeOpen', () => {
|
|
128
154
|
this.previousFocus =
|
|
129
155
|
document.activeElement instanceof HTMLElement
|
|
@@ -138,9 +164,9 @@ export class ImageZoomLightbox {
|
|
|
138
164
|
this.zoom.onAfterClose?.(this.zoom.payload);
|
|
139
165
|
});
|
|
140
166
|
this.addEvent(imageElement, 'load', this.handleImageLoad);
|
|
141
|
-
const handleScrollIntent = () => {
|
|
167
|
+
const handleScrollIntent = (event) => {
|
|
142
168
|
if (this.zoom.isOpen && this.zoom.closeOnScroll)
|
|
143
|
-
this.close();
|
|
169
|
+
this.zoom.close(event);
|
|
144
170
|
};
|
|
145
171
|
const scrollOptions = { capture: true, passive: true };
|
|
146
172
|
document.addEventListener('scroll', handleScrollIntent, scrollOptions);
|
|
@@ -152,14 +178,22 @@ export class ImageZoomLightbox {
|
|
|
152
178
|
document.removeEventListener('touchmove', handleScrollIntent, scrollOptions);
|
|
153
179
|
});
|
|
154
180
|
}
|
|
181
|
+
// The medium-zoom layer closes on any click: on the zoomed image (`close-press`) or around it
|
|
182
|
+
// (`outside-press`, only with `closeOnClickOutside`). The click asks `onOpenChange` first; a
|
|
183
|
+
// cancelled one, like an outside click that may not close, stops before LightGallery sees it.
|
|
155
184
|
attachOutsideClickPolicy(outer) {
|
|
156
185
|
const handleClick = (event) => {
|
|
157
|
-
if (this.
|
|
186
|
+
if (!this.instance?.lgOpened)
|
|
158
187
|
return;
|
|
159
188
|
const target = event.target;
|
|
160
|
-
|
|
189
|
+
const onImage = target instanceof Element && !!target.closest('.lg-object');
|
|
190
|
+
if (!onImage && !this.zoom.closeOnClickOutside) {
|
|
191
|
+
event.stopImmediatePropagation();
|
|
161
192
|
return;
|
|
162
|
-
|
|
193
|
+
}
|
|
194
|
+
const reason = onImage ? 'close-press' : 'outside-press';
|
|
195
|
+
if (!this.zoom.requestOpenChange(false, { reason, event }))
|
|
196
|
+
event.stopImmediatePropagation();
|
|
163
197
|
};
|
|
164
198
|
this.addEvent(outer, 'click', handleClick, { capture: true });
|
|
165
199
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const imageZoomDescription = "\n# ImageZoom\n\nImageZoom renders an accessible image trigger powered by LightGallery's Medium Zoom plugin. It\nanimates the source image into a focused full-viewport view while preserving controlled state,\nhigh-resolution sources, slots, focus restoration, and configurable dismissal.\n\n## Usage\n\n```svelte\n<script>\n\timport { ImageZoom } from 'entasis/image-zoom';\n</script>\n\n<ImageZoom\n\tsrc=\"/photos/desk-thumb.jpg\"\n\tzoomSrc=\"/photos/desk.jpg\"\n\tzoomWidth={2400}\n\tzoomHeight={1600}\n\talt=\"Desk setup with a laptop and notebook\"\n/>\n```\n\n## Props\n\n- **src**: string - Thumbnail image source. Optional when the children slot renders an image.\n- **alt**: string - Accessible image text. Optional when the children slot image has alt text.\n- **zoomSrc**: string - Full-size image source. Defaults to `src`.\n- **zoomWidth / zoomHeight**: number - Intrinsic dimensions of `zoomSrc`. Provide both when `zoomSrc` differs from the thumbnail so the origin transition and final image use the same rectangle.\n- **open**: boolean (bindable, default: false) - Controls the zoom layer.\n- **defaultOpen**: boolean (default: false) - Initial state when open is not provided.\n- **disabled**: boolean (default: false) - Prevents opening.\n- **width / height / srcset / sizes / loading / decoding** - Forwarded to the thumbnail image.\n- **zoomMargin**: number (default: 40) - Minimum viewport margin around the zoomed image.\n- Zoom animation duration now comes from the `motion` theme slot (default token `slower`); see Motion below.\n- **closeOnClickOutside**: boolean (default: true) - Closes from the backdrop.\n- **closeOnEscape**: boolean (default: true) - Closes on Escape.\n- **closeOnScroll**: boolean (default: true) - Closes on wheel, touch-scroll, page scroll, or nested-container scroll.\n- **lockScroll**: boolean (default: false) - Locks page scroll while open.\n- **buttonLabel**: string (default: \"Zoom image\") - Accessible trigger label.\n- **closeLabel**: string (default: \"Close image zoom\") - Accessible close/backdrop label.\n- **backgroundColor**: string (default: theme background) - CSS color used by the Medium Zoom backdrop.\n- **licenseKey**: string (default: LightGallery evaluation key) - LightGallery license key. A production key is required unless the consuming project is GPLv3-compatible.\n- **showIndicator**: boolean (default: true) - Toggles the thumbnail zoom indicator.\n- **indicatorPosition**: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" (default: \"top-right\") - Corner used for the thumbnail zoom indicator.\n- **class**: string - Additional root classes.\n- **theme**: ImageZoomThemeProps - Per-instance theme overrides.\n- **onOpenChange**: (open: boolean) => void - Fired
|
|
1
|
+
export declare const imageZoomDescription = "\n# ImageZoom\n\nImageZoom renders an accessible image trigger powered by LightGallery's Medium Zoom plugin. It\nanimates the source image into a focused full-viewport view while preserving controlled state,\nhigh-resolution sources, slots, focus restoration, and configurable dismissal.\n\n## Usage\n\n```svelte\n<script>\n\timport { ImageZoom } from 'entasis/image-zoom';\n</script>\n\n<ImageZoom\n\tsrc=\"/photos/desk-thumb.jpg\"\n\tzoomSrc=\"/photos/desk.jpg\"\n\tzoomWidth={2400}\n\tzoomHeight={1600}\n\talt=\"Desk setup with a laptop and notebook\"\n/>\n```\n\n## Props\n\n- **src**: string - Thumbnail image source. Optional when the children slot renders an image.\n- **alt**: string - Accessible image text. Optional when the children slot image has alt text.\n- **zoomSrc**: string - Full-size image source. Defaults to `src`.\n- **zoomWidth / zoomHeight**: number - Intrinsic dimensions of `zoomSrc`. Provide both when `zoomSrc` differs from the thumbnail so the origin transition and final image use the same rectangle.\n- **open**: boolean (bindable, default: false) - Controls the zoom layer.\n- **defaultOpen**: boolean (default: false) - Initial state when open is not provided.\n- **disabled**: boolean (default: false) - Prevents opening.\n- **width / height / srcset / sizes / loading / decoding** - Forwarded to the thumbnail image.\n- **zoomMargin**: number (default: 40) - Minimum viewport margin around the zoomed image.\n- Zoom animation duration now comes from the `motion` theme slot (default token `slower`); see Motion below.\n- **closeOnClickOutside**: boolean (default: true) - Closes from the backdrop.\n- **closeOnEscape**: boolean (default: true) - Closes on Escape.\n- **closeOnScroll**: boolean (default: true) - Closes on wheel, touch-scroll, page scroll, or nested-container scroll.\n- **lockScroll**: boolean (default: false) - Locks page scroll while open.\n- **buttonLabel**: string (default: \"Zoom image\") - Accessible trigger label.\n- **closeLabel**: string (default: \"Close image zoom\") - Accessible close/backdrop label.\n- **backgroundColor**: string (default: theme background) - CSS color used by the Medium Zoom backdrop.\n- **licenseKey**: string (default: LightGallery evaluation key) - LightGallery license key. A production key is required unless the consuming project is GPLv3-compatible.\n- **showIndicator**: boolean (default: true) - Toggles the thumbnail zoom indicator.\n- **indicatorPosition**: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" (default: \"top-right\") - Corner used for the thumbnail zoom indicator.\n- **class**: string - Additional root classes.\n- **theme**: ImageZoomThemeProps - Per-instance theme overrides.\n- **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void - Fired before the zoom opens or closes, with `details.reason` (`'trigger-press'`, `'escape-key'`, `'close-press'` for a click on the zoomed image, `'outside-press'`, `'imperative-action'` for `payload.open()` / `close()` and a scroll dismissal), `details.event` and `details.cancel()`, which keeps the state as it is.\n- **onAfterOpen**: (payload) => void - Fired once per open, after the open animation completes.\n- **onAfterClose**: (payload) => void - Fired once per close, after the close animation completes.\n\n## Slots\n\n- **children**: custom thumbnail content. Receives `ImageZoomPayload`. When `src` or `alt` are omitted, ImageZoom reads them from the first child `img`.\n- **caption**: caption rendered over the zoom layer. Receives `ImageZoomPayload`.\n- **indicator**: custom thumbnail zoom indicator content. Receives `ImageZoomPayload`.\n\n## Accessibility\n\n- The thumbnail trigger is a native `button type=\"button\"`.\n- LightGallery renders and manages the modal dialog layer.\n- Escape closes the dialog by default.\n- Page or nested-container scroll closes the dialog by default.\n- Focus remains trapped in the zoom layer and returns to the prior control after closing.\n- Reduced motion disables the zoom transition.\n\n## Examples\n\n### Controlled\n\n```svelte\n<script>\n\tlet open = false;\n</script>\n\n<ImageZoom bind:open src=\"/image.jpg\" alt=\"Product detail\" />\n```\n\n### High-resolution zoom source\n\n```svelte\n<ImageZoom\n\tsrc=\"/image-640.jpg\"\n\tzoomSrc=\"/image-2400.jpg\"\n\tzoomWidth={2400}\n\tzoomHeight={1600}\n\talt=\"Architectural detail\"\n/>\n```\n\n### Child image source\n\n```svelte\n<ImageZoom>\n\t{#snippet children()}\n\t\t<img src=\"/image.jpg\" alt=\"Architectural detail\" />\n\t{/snippet}\n</ImageZoom>\n```\n\n### Caption\n\n```svelte\n<ImageZoom src=\"/image.jpg\" alt=\"Mountain ridge\">\n\t{#snippet caption()}\n\t\t<span>Shot in the late afternoon.</span>\n\t{/snippet}\n</ImageZoom>\n```\n\n### Custom indicator\n\n```svelte\n<ImageZoom src=\"/image.jpg\" alt=\"Mountain ridge\" indicatorPosition=\"top-left\">\n\t{#snippet indicator()}\n\t\t<span>2x</span>\n\t{/snippet}\n</ImageZoom>\n```\n\n## Motion\n\n- **motion** theme slot: one preset (no variants). Only its resolved `duration` is used \u2014 it\n becomes LightGallery's zoom animation duration (default token `slower`).\n- Ladder: `<Theme components={{ 'image-zoom': { motion } }}>` \u2192 `setImageZoomTheme({ motion })`\n \u2192 `theme={{ motion: { duration: 250 } }}`. Reduced motion collapses it to 0.\n";
|
|
@@ -45,9 +45,9 @@ high-resolution sources, slots, focus restoration, and configurable dismissal.
|
|
|
45
45
|
- **indicatorPosition**: "top-left" | "top-right" | "bottom-left" | "bottom-right" (default: "top-right") - Corner used for the thumbnail zoom indicator.
|
|
46
46
|
- **class**: string - Additional root classes.
|
|
47
47
|
- **theme**: ImageZoomThemeProps - Per-instance theme overrides.
|
|
48
|
-
- **onOpenChange**: (open: boolean) => void - Fired
|
|
49
|
-
- **onAfterOpen**: (payload) => void - Fired after the open animation completes.
|
|
50
|
-
- **onAfterClose**: (payload) => void - Fired after the close animation completes.
|
|
48
|
+
- **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void - Fired before the zoom opens or closes, with \`details.reason\` (\`'trigger-press'\`, \`'escape-key'\`, \`'close-press'\` for a click on the zoomed image, \`'outside-press'\`, \`'imperative-action'\` for \`payload.open()\` / \`close()\` and a scroll dismissal), \`details.event\` and \`details.cancel()\`, which keeps the state as it is.
|
|
49
|
+
- **onAfterOpen**: (payload) => void - Fired once per open, after the open animation completes.
|
|
50
|
+
- **onAfterClose**: (payload) => void - Fired once per close, after the close animation completes.
|
|
51
51
|
|
|
52
52
|
## Slots
|
|
53
53
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Slot, WithSlot } from '../Slot/slot.js';
|
|
2
2
|
import type { WithAttachments } from '../../types/props.js';
|
|
3
3
|
import type { ImageZoomThemeProps } from './imageZoom.theme.js';
|
|
4
|
+
import type { OpenChangeHandler } from '../../utils/openChange.js';
|
|
4
5
|
export type ImageZoomPayload = {
|
|
5
6
|
/** Resolved thumbnail image source. */
|
|
6
7
|
src: string;
|
|
@@ -75,11 +76,16 @@ export type ImageZoomProps = WithAttachments<WithSlot<{
|
|
|
75
76
|
indicatorPosition?: ImageZoomIndicatorPosition;
|
|
76
77
|
/** Additional CSS classes merged onto the root element. */
|
|
77
78
|
class?: string;
|
|
78
|
-
/**
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Called before the zoomed layer opens or closes, with the change details: `reason`
|
|
81
|
+
* (`'trigger-press'`, `'escape-key'`, `'close-press'` for a click on the zoomed image,
|
|
82
|
+
* `'outside-press'`, `'imperative-action'` for `payload.open()`/`close()` and a scroll
|
|
83
|
+
* dismissal), the originating `event` and `cancel()`, which keeps the state as it is.
|
|
84
|
+
*/
|
|
85
|
+
onOpenChange?: OpenChangeHandler;
|
|
86
|
+
/** Callback fired once per open, after the open animation finishes. */
|
|
81
87
|
onAfterOpen?: (payload: ImageZoomPayload) => void;
|
|
82
|
-
/** Callback fired after the close animation finishes. */
|
|
88
|
+
/** Callback fired once per close, after the close animation finishes. */
|
|
83
89
|
onAfterClose?: (payload: ImageZoomPayload) => void;
|
|
84
90
|
/** Per-instance theme overrides for image zoom parts. */
|
|
85
91
|
theme?: ImageZoomThemeProps;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Attachment } from 'svelte/attachments';
|
|
2
2
|
import type { Messages } from '../../i18n/en.js';
|
|
3
|
+
import { type OpenChangeDetails, type OpenChangeInit } from '../../utils/openChange.js';
|
|
3
4
|
import type { ImageZoomPayload, ImageZoomProps } from './imageZoom.props.js';
|
|
4
5
|
type MakeRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
|
|
5
6
|
type ImageZoomStateOptions = MakeRequired<Pick<ImageZoomProps, 'src' | 'alt' | 'zoomSrc' | 'zoomWidth' | 'zoomHeight' | 'disabled' | 'zoomMargin' | 'closeOnClickOutside' | 'closeOnEscape' | 'closeOnScroll' | 'lockScroll' | 'closeLabel' | 'backgroundColor' | 'licenseKey' | 'onOpenChange' | 'onAfterOpen' | 'onAfterClose'>, 'disabled' | 'zoomMargin' | 'closeOnClickOutside' | 'closeOnEscape' | 'closeOnScroll' | 'lockScroll' | 'closeLabel' | 'backgroundColor' | 'licenseKey'> & {
|
|
@@ -10,7 +11,7 @@ type ImageZoomStateOptions = MakeRequired<Pick<ImageZoomProps, 'src' | 'alt' | '
|
|
|
10
11
|
messages: Messages;
|
|
11
12
|
};
|
|
12
13
|
type ImageZoomAttachmentConfig = Pick<ImageZoomStateOptions, 'src' | 'alt' | 'zoomSrc' | 'zoomWidth' | 'zoomHeight' | 'disabled' | 'zoomMargin' | 'transitionDuration' | 'closeOnClickOutside' | 'closeOnEscape' | 'closeOnScroll' | 'lockScroll' | 'closeLabel' | 'backgroundColor' | 'licenseKey'>;
|
|
13
|
-
declare const ImageZoomState_base: new (props: ImageZoomStateOptions) => {} & Omit<Pick<ImageZoomProps, "disabled" | "onOpenChange" | "alt" | "src" | "closeOnEscape" | "lockScroll" | "closeOnClickOutside" | "
|
|
14
|
+
declare const ImageZoomState_base: new (props: ImageZoomStateOptions) => {} & Omit<Pick<ImageZoomProps, "disabled" | "onOpenChange" | "onAfterOpen" | "onAfterClose" | "alt" | "src" | "closeOnEscape" | "lockScroll" | "closeOnClickOutside" | "backgroundColor" | "zoomMargin" | "closeLabel" | "licenseKey" | "zoomSrc" | "zoomWidth" | "zoomHeight" | "closeOnScroll">, "disabled" | "closeOnEscape" | "lockScroll" | "closeOnClickOutside" | "backgroundColor" | "zoomMargin" | "closeLabel" | "licenseKey" | "closeOnScroll"> & Required<Pick<Pick<ImageZoomProps, "disabled" | "onOpenChange" | "onAfterOpen" | "onAfterClose" | "alt" | "src" | "closeOnEscape" | "lockScroll" | "closeOnClickOutside" | "backgroundColor" | "zoomMargin" | "closeLabel" | "licenseKey" | "zoomSrc" | "zoomWidth" | "zoomHeight" | "closeOnScroll">, "disabled" | "closeOnEscape" | "lockScroll" | "closeOnClickOutside" | "backgroundColor" | "zoomMargin" | "closeLabel" | "licenseKey" | "closeOnScroll">> & {
|
|
14
15
|
isOpen: boolean;
|
|
15
16
|
/** Zoom animation duration in ms, resolved from the `motion` theme slot. */
|
|
16
17
|
transitionDuration: number;
|
|
@@ -18,19 +19,30 @@ declare const ImageZoomState_base: new (props: ImageZoomStateOptions) => {} & Om
|
|
|
18
19
|
messages: Messages;
|
|
19
20
|
};
|
|
20
21
|
export declare class ImageZoomState extends ImageZoomState_base {
|
|
22
|
+
#private;
|
|
21
23
|
private inferredSrc;
|
|
22
24
|
private inferredAlt;
|
|
23
25
|
private lightbox;
|
|
24
26
|
resolvedSrc: string;
|
|
25
27
|
resolvedAlt: string;
|
|
26
28
|
zoomedSrc: string;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Asks `onOpenChange` before the lightbox changes state. Returns `false` when the change was
|
|
31
|
+
* cancelled; otherwise the next matching lightbox event applies it without asking again.
|
|
32
|
+
*/
|
|
33
|
+
requestOpenChange(nextOpen: boolean, input?: OpenChangeDetails | OpenChangeInit | Event): boolean;
|
|
34
|
+
open: (input?: OpenChangeDetails | OpenChangeInit | Event) => void;
|
|
35
|
+
close: (input?: OpenChangeDetails | OpenChangeInit | Event) => void;
|
|
36
|
+
toggle: (input?: OpenChangeDetails | OpenChangeInit | Event) => void;
|
|
30
37
|
payload: ImageZoomPayload;
|
|
31
38
|
constructor(options: ImageZoomStateOptions);
|
|
32
39
|
attachRoot: (configuration: ImageZoomAttachmentConfig) => Attachment<HTMLElement>;
|
|
33
40
|
setInferredMetadata(src: string, alt: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Applies the state the lightbox reached. A change `onOpenChange` already approved (every
|
|
43
|
+
* path the component drives) applies silently; any other one is reported, and cannot be
|
|
44
|
+
* cancelled any more, before it applies. `notify: false` applies silently (a disabled zoom).
|
|
45
|
+
*/
|
|
34
46
|
updateOpen(nextOpen: boolean, notify: boolean): void;
|
|
35
47
|
}
|
|
36
48
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { untrack } from 'svelte';
|
|
2
2
|
import { createBindableStateClass } from '../../utils/state.svelte.js';
|
|
3
3
|
import { ImageZoomLightbox } from './imageZoom.lightbox.js';
|
|
4
|
+
import { createOpenChangeDetails, requestOpenChange, resolveOpenChangeDetails } from '../../utils/openChange.js';
|
|
4
5
|
export class ImageZoomState extends createBindableStateClass() {
|
|
5
6
|
inferredSrc = $state('');
|
|
6
7
|
inferredAlt = $state('');
|
|
@@ -8,19 +9,39 @@ export class ImageZoomState extends createBindableStateClass() {
|
|
|
8
9
|
resolvedSrc = $derived(this.src || this.inferredSrc);
|
|
9
10
|
resolvedAlt = $derived(this.alt ?? this.inferredAlt);
|
|
10
11
|
zoomedSrc = $derived(this.zoomSrc || this.resolvedSrc);
|
|
11
|
-
open
|
|
12
|
-
|
|
12
|
+
/** The open state `onOpenChange` already approved, until the lightbox reports it. */
|
|
13
|
+
#approved = null;
|
|
14
|
+
/**
|
|
15
|
+
* Asks `onOpenChange` before the lightbox changes state. Returns `false` when the change was
|
|
16
|
+
* cancelled; otherwise the next matching lightbox event applies it without asking again.
|
|
17
|
+
*/
|
|
18
|
+
requestOpenChange(nextOpen, input) {
|
|
19
|
+
if (this.isOpen === nextOpen)
|
|
20
|
+
return true;
|
|
21
|
+
if (!requestOpenChange(this.onOpenChange, nextOpen, resolveOpenChangeDetails(input))) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
this.#approved = nextOpen;
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
open = (input) => {
|
|
28
|
+
if (this.disabled || this.isOpen)
|
|
29
|
+
return;
|
|
30
|
+
if (this.requestOpenChange(true, input))
|
|
13
31
|
this.lightbox.open();
|
|
14
32
|
};
|
|
15
|
-
close = () => {
|
|
16
|
-
this.
|
|
33
|
+
close = (input) => {
|
|
34
|
+
if (!this.isOpen)
|
|
35
|
+
return;
|
|
36
|
+
if (this.requestOpenChange(false, input))
|
|
37
|
+
this.lightbox.close();
|
|
17
38
|
};
|
|
18
|
-
toggle = () => {
|
|
39
|
+
toggle = (input) => {
|
|
19
40
|
if (this.isOpen) {
|
|
20
|
-
this.close();
|
|
41
|
+
this.close(input);
|
|
21
42
|
return;
|
|
22
43
|
}
|
|
23
|
-
this.open();
|
|
44
|
+
this.open(input);
|
|
24
45
|
};
|
|
25
46
|
payload = $derived({
|
|
26
47
|
src: this.resolvedSrc,
|
|
@@ -51,11 +72,19 @@ export class ImageZoomState extends createBindableStateClass() {
|
|
|
51
72
|
this.inferredSrc = src;
|
|
52
73
|
this.inferredAlt = alt;
|
|
53
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Applies the state the lightbox reached. A change `onOpenChange` already approved (every
|
|
77
|
+
* path the component drives) applies silently; any other one is reported, and cannot be
|
|
78
|
+
* cancelled any more, before it applies. `notify: false` applies silently (a disabled zoom).
|
|
79
|
+
*/
|
|
54
80
|
updateOpen(nextOpen, notify) {
|
|
81
|
+
const approved = this.#approved === nextOpen;
|
|
82
|
+
this.#approved = null;
|
|
55
83
|
if (this.isOpen === nextOpen)
|
|
56
84
|
return;
|
|
85
|
+
if (notify && !approved) {
|
|
86
|
+
this.onOpenChange?.(nextOpen, createOpenChangeDetails({ cancelable: false }));
|
|
87
|
+
}
|
|
57
88
|
this.isOpen = nextOpen;
|
|
58
|
-
if (notify)
|
|
59
|
-
this.onOpenChange?.(nextOpen);
|
|
60
89
|
}
|
|
61
90
|
}
|
|
@@ -3,11 +3,13 @@ import { cva } from '../../utils/cva/index.js';
|
|
|
3
3
|
// Vega-quiet board: columns are soft elevated surfaces, cards one surface step
|
|
4
4
|
// above, the drop indicator comes from useDndList. Column color accents render
|
|
5
5
|
// as a small dot next to the title (driven by data-color on the column).
|
|
6
|
+
// The board scrolls on x, which makes it clip on y too, so `p-xs` keeps the ring and elevation
|
|
7
|
+
// shadow of the outermost columns inside the scroll container instead of cropping them.
|
|
6
8
|
const defaultKanban = cva({
|
|
7
|
-
base: 'flex w-full items-start gap-xl overflow-x-auto scrollbar-none'
|
|
9
|
+
base: 'flex w-full items-start gap-xl overflow-x-auto p-xs scrollbar-none'
|
|
8
10
|
});
|
|
9
11
|
const defaultKanbanColumn = cva({
|
|
10
|
-
base: 'bg-surface-raised ring-neutral-muted flex max-h-full w-
|
|
12
|
+
base: 'bg-surface-raised ring-neutral-muted flex max-h-full w-full flex-col rounded-lg ring-1'
|
|
11
13
|
});
|
|
12
14
|
const defaultKanbanColumnHeader = cva({
|
|
13
15
|
base: 'flex items-center gap-md',
|
|
@@ -109,8 +111,10 @@ const defaultKanbanCardWrapper = cva({
|
|
|
109
111
|
});
|
|
110
112
|
// Per-column wrapper (the dnd row of the board). `dragging` marks the dimmed
|
|
111
113
|
// placeholder while a column is dragged.
|
|
114
|
+
// Columns share the board's width between 15rem and 20rem, so a few columns fit inside narrow
|
|
115
|
+
// containers such as a tab panel; more columns than fit scroll horizontally.
|
|
112
116
|
const defaultKanbanColumnWrapper = cva({
|
|
113
|
-
base: '
|
|
117
|
+
base: 'min-w-60 max-w-80 flex-1 basis-72',
|
|
114
118
|
variants: {
|
|
115
119
|
dragging: {
|
|
116
120
|
true: 'opacity-40',
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export type LayoutSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
2
2
|
export type LayoutSpacingKey = LayoutSpacing;
|
|
3
|
-
export declare const layoutGapClasses: Record<LayoutSpacing, "gap-xs" | "gap-
|
|
3
|
+
export declare const layoutGapClasses: Record<LayoutSpacing, "gap-xs" | "gap-sm" | "gap-md" | "gap-lg" | "gap-xl" | "gap-0">;
|
|
4
4
|
export declare const layoutRowGapClasses: Record<LayoutSpacing, "gap-y-0" | "gap-y-xs" | "gap-y-sm" | "gap-y-md" | "gap-y-lg" | "gap-y-xl">;
|
|
5
5
|
export declare const layoutColumnGapClasses: Record<LayoutSpacing, "gap-x-0" | "gap-x-xs" | "gap-x-sm" | "gap-x-md" | "gap-x-lg" | "gap-x-xl">;
|
|
6
6
|
export declare const layoutPaddingInlineClasses: Record<LayoutSpacing, "px-lg" | "px-xl" | "px-md" | "px-0" | "px-xs" | "px-sm">;
|
|
7
7
|
export declare const layoutPaddingBlockClasses: Record<LayoutSpacing, "py-xs" | "py-sm" | "py-md" | "py-lg" | "py-0" | "py-xl">;
|
|
8
|
-
export declare const layoutSpacingCssValues: Record<LayoutSpacing, "var(--space-xs)" | "var(--space-sm)" | "var(--space-md)" | "var(--space-lg)" | "var(--space-xl)"
|
|
8
|
+
export declare const layoutSpacingCssValues: Record<LayoutSpacing, "0px" | "var(--space-xs)" | "var(--space-sm)" | "var(--space-md)" | "var(--space-lg)" | "var(--space-xl)">;
|
|
9
9
|
export declare const toLayoutSpacingKey: (spacing: LayoutSpacing) => LayoutSpacingKey;
|
|
@@ -40,6 +40,9 @@
|
|
|
40
40
|
transition,
|
|
41
41
|
size = 'normal',
|
|
42
42
|
disabled = false,
|
|
43
|
+
wrap = true,
|
|
44
|
+
anchorTo,
|
|
45
|
+
arrow = false,
|
|
43
46
|
class: className,
|
|
44
47
|
card,
|
|
45
48
|
popover,
|
|
@@ -173,6 +176,9 @@
|
|
|
173
176
|
{transition}
|
|
174
177
|
{size}
|
|
175
178
|
{disabled}
|
|
179
|
+
{wrap}
|
|
180
|
+
{anchorTo}
|
|
181
|
+
{arrow}
|
|
176
182
|
{popover}
|
|
177
183
|
card={{ color: card?.color ?? 'neutral', variant: card?.variant ?? 'solid', theme: card?.theme }}
|
|
178
184
|
{showBorders}
|
|
@@ -188,7 +194,7 @@
|
|
|
188
194
|
href={disabled ? undefined : href}
|
|
189
195
|
{target}
|
|
190
196
|
rel={resolvedRel}
|
|
191
|
-
class={classes.trigger({ disabled, className })}
|
|
197
|
+
class={classes.trigger({ disabled, wrap, className })}
|
|
192
198
|
data-status={previewState.status}
|
|
193
199
|
aria-describedby={id}
|
|
194
200
|
aria-disabled={disabled || undefined}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const linkPreviewDescription = "\n# LinkPreview Component\n\nLinkPreview renders an anchor trigger with a HoverCard preview that loads link metadata asynchronously. It shows Skeleton placeholders while loading and displays title, description, site name, Open Graph image, and favicon when available.\n\n## Import\n\n```svelte\n<script>\n\timport { LinkPreview } from 'entasis/link-preview';\n</script>\n```\n\n## Basic Usage\n\n```svelte\n<LinkPreview href=\"https://svelte.dev\">Svelte</LinkPreview>\n```\n\nBy default, LinkPreview requests `/api/link-metadata?url=<href>` when the card opens. Browser-only fetching of arbitrary links is not reliable because most sites block cross-origin HTML reads, so applications should provide a server endpoint or a custom `fetchMetadata` function.\n\n## With Preloaded Metadata\n\n```svelte\n<LinkPreview\n\thref=\"https://entasis.dev\"\n\tmetadata={{\n\t\ttitle: 'Entasis',\n\t\tdescription: 'Configuration-first Svelte components.',\n\t\tsiteName: 'Entasis',\n\t\tfavicon: '/favicon.png'\n\t}}\n>\n\tEntasis\n</LinkPreview>\n```\n\n## Custom Fetcher\n\n```svelte\n<script>\n\tconst fetchMetadata = async (href, signal) => {\n\t\tconst response = await fetch(`/api/preview?href=${encodeURIComponent(href)}`, { signal });\n\t\tif (!response.ok) throw new Error('Preview unavailable');\n\t\treturn response.json();\n\t};\n</script>\n\n<LinkPreview href=\"https://example.com\" {fetchMetadata}>Example</LinkPreview>\n```\n\n## Props\n\n- **href**: string - URL opened by the trigger link and requested by the metadata loader.\n- **id**: string - Stable DOM id for the underlying HoverCard; falls back to a generated id.\n- **open**: boolean - Bindable open state.\n- **defaultOpen**: boolean (default: false) - Initial state when open is not provided.\n- **children**: string | Snippet<[LinkPreviewPayload]> - Trigger anchor content.\n- **metadata**: LinkPreviewMetadata - Preloaded metadata; skips network loading.\n- **fetchMetadata**: (href, signal) => Promise<LinkPreviewMetadata> - Custom async loader.\n- **metadataEndpoint**: string | (href) => string - Endpoint used when fetchMetadata is not provided. String endpoints receive ?url=<href>.\n- **prefetch**: boolean - Load metadata on mount instead of waiting for open.\n- **target**: string - Trigger anchor target.\n- **rel**: string - Trigger anchor rel. Defaults to noopener noreferrer for target=\"_blank\".\n- **fallbackTitle**: string - Title shown when metadata has no title.\n- **imageAlt**: string - Alt text for the preview image.\n- **showUrl**: boolean - Whether to show the URL line.\n- **loadingLabel**: string - Accessible label for the loading region.\n- **errorLabel**: string - Heading shown when metadata loading fails.\n- **position**: Popover placement - Preferred card placement.\n- **offset**: number - Gap between trigger and card.\n- **delay**: number - Open delay in milliseconds.\n- **closeDelay**: number - Close delay in milliseconds.\n- **openOnFocus**: boolean - Open when focus enters trigger or card.\n- **openOnClick**: boolean - Toggle card on click before navigation.\n- **closeOnEscape**: boolean - Close on Escape.\n- **closeOnClickOutside**: boolean - Close when clicking outside.\n- **directedTransition**: boolean - Use placement-aware transitions.\n- **transition**: object - Popover transition overrides.\n- **size**: 'small' | 'normal' | 'large' - Preview card size.\n- **disabled**: boolean - Disable opening and link navigation.\n- **class**: string - Trigger anchor classes.\n- **card**: Props forwarded to the inner Card as one object - `{ class, color, variant, theme }` (defaults: color 'neutral', variant 'solid').\n- **popover**: Props forwarded to the Popover panel as one object - `{ class, theme }`.\n- **showBorders**: boolean - Show Card section borders.\n- **onOpenChange**: (open: boolean) => void - Called once for each library-requested state change.\n- **onAfterOpen**: (payload) => void - Called after open transition.\n- **onAfterClose**: (payload) => void - Called after close transition.\n- **onLoad**: (payload) => void - Called after metadata loads.\n- **onError**: (error) => void - Called after metadata loading fails.\n- **theme**: LinkPreviewThemeProps - LinkPreview theme overrides.\n- **hoverCardTheme**: HoverCardThemeProps - HoverCard wrapper theme overrides.\n\n## Metadata Shape\n\n```ts\ntype LinkPreviewMetadata = {\n\turl?: string;\n\ttitle?: string;\n\tdescription?: string;\n\tsiteName?: string;\n\timage?: string;\n\tfavicon?: string;\n};\n```\n\n## Endpoint Contract\n\nThe default endpoint should return JSON matching LinkPreviewMetadata. Non-2xx responses should return a JSON object with a `message` string when possible.\n\n## Accessibility\n\n- The trigger remains a real anchor, so the destination is reachable without hover.\n- Loading and error states use role=\"status\".\n- A disabled LinkPreview removes the anchor href and prevents hover opening.\n\n## Theme Parts\n\n- **trigger** - Anchor trigger.\n- **card** - HoverCard surface classes.\n- **content** - Preview content wrapper.\n- **media** - Image container.\n- **image** - Preview image.\n- **body** - Metadata text stack.\n- **header** - Favicon and site row.\n- **favicon** - Favicon image.\n- **site** - Site name text.\n- **title** - Preview title.\n- **description** - Preview description.\n- **url** - URL display line.\n- **loading** - Skeleton stack.\n- **error** - Error state container.\n\n## Motion\n\n- LinkPreview has no preset of its own: it forwards `transition` (now a plain `FSOProps`,\n responsive) to HoverCard, whose **motion** slot owns the preset.\n- Retune it with `<Theme components={{ 'hover-card': { motion } }}>` or\n `setHoverCardTheme({ motion })`; the `transition` prop still wins per instance.\n";
|
|
1
|
+
export declare const linkPreviewDescription = "\n# LinkPreview Component\n\nLinkPreview renders an anchor trigger with a HoverCard preview that loads link metadata asynchronously. It shows Skeleton placeholders while loading and displays title, description, site name, Open Graph image, and favicon when available.\n\n## Import\n\n```svelte\n<script>\n\timport { LinkPreview } from 'entasis/link-preview';\n</script>\n```\n\n## Basic Usage\n\n```svelte\n<LinkPreview href=\"https://svelte.dev\">Svelte</LinkPreview>\n```\n\nBy default, LinkPreview requests `/api/link-metadata?url=<href>` when the card opens. Browser-only fetching of arbitrary links is not reliable because most sites block cross-origin HTML reads, so applications should provide a server endpoint or a custom `fetchMetadata` function.\n\n## With Preloaded Metadata\n\n```svelte\n<LinkPreview\n\thref=\"https://entasis.dev\"\n\tmetadata={{\n\t\ttitle: 'Entasis',\n\t\tdescription: 'Configuration-first Svelte components.',\n\t\tsiteName: 'Entasis',\n\t\tfavicon: '/favicon.png'\n\t}}\n>\n\tEntasis\n</LinkPreview>\n```\n\n## Custom Fetcher\n\n```svelte\n<script>\n\tconst fetchMetadata = async (href, signal) => {\n\t\tconst response = await fetch(`/api/preview?href=${encodeURIComponent(href)}`, { signal });\n\t\tif (!response.ok) throw new Error('Preview unavailable');\n\t\treturn response.json();\n\t};\n</script>\n\n<LinkPreview href=\"https://example.com\" {fetchMetadata}>Example</LinkPreview>\n```\n\n## Props\n\n- **href**: string - URL opened by the trigger link and requested by the metadata loader.\n- **id**: string - Stable DOM id for the underlying HoverCard; falls back to a generated id.\n- **open**: boolean - Bindable open state.\n- **defaultOpen**: boolean (default: false) - Initial state when open is not provided.\n- **children**: string | Snippet<[LinkPreviewPayload]> - Trigger anchor content.\n- **metadata**: LinkPreviewMetadata - Preloaded metadata; skips network loading.\n- **fetchMetadata**: (href, signal) => Promise<LinkPreviewMetadata> - Custom async loader.\n- **metadataEndpoint**: string | (href) => string - Endpoint used when fetchMetadata is not provided. String endpoints receive ?url=<href>.\n- **prefetch**: boolean - Load metadata on mount instead of waiting for open.\n- **target**: string - Trigger anchor target.\n- **rel**: string - Trigger anchor rel. Defaults to noopener noreferrer for target=\"_blank\".\n- **fallbackTitle**: string - Title shown when metadata has no title.\n- **imageAlt**: string - Alt text for the preview image.\n- **showUrl**: boolean - Whether to show the URL line.\n- **loadingLabel**: string - Accessible label for the loading region.\n- **errorLabel**: string - Heading shown when metadata loading fails.\n- **position**: Popover placement - Preferred card placement.\n- **offset**: number - Gap between trigger and card.\n- **delay**: number - Open delay in milliseconds. Skipped right after another preview, hover card, tooltip or hover-opened popover was open, as for HoverCard.\n- **closeDelay**: number - Close delay in milliseconds.\n- **openOnFocus**: boolean - Open when focus enters trigger or card.\n- **openOnClick**: boolean - Toggle card on click before navigation.\n- **closeOnEscape**: boolean - Close on Escape.\n- **closeOnClickOutside**: boolean - Close when clicking outside.\n- **directedTransition**: boolean - Use placement-aware transitions.\n- **transition**: object - Popover transition overrides.\n- **size**: 'small' | 'normal' | 'large' - Preview card size.\n- **disabled**: boolean - Disable opening and link navigation.\n- **wrap**: boolean (default: true) - The link flows with the text around it (`display: inline`, `box-decoration-break: clone`) and breaks across lines; the card anchors to the line the pointer entered and stays there while it is open, and a keyboard open takes the first line above the link and the last one below it. `false` keeps the link one `inline-flex` box\n- **anchorTo**: 'box' | 'line' (default: 'line' with `wrap`) - What the card anchors to when the link wraps\n- **arrow**: boolean (default: false) - Draws an arrow from the card toward the link\n- **class**: string - Trigger anchor classes.\n- **card**: Props forwarded to the inner Card as one object - `{ class, color, variant, theme }` (defaults: color 'neutral', variant 'solid').\n- **popover**: Props forwarded to the Popover panel as one object - `{ class, theme }`.\n- **showBorders**: boolean - Show Card section borders.\n- **onOpenChange**: (open: boolean) => void - Called once for each library-requested state change.\n- **onAfterOpen**: (payload) => void - Called after open transition.\n- **onAfterClose**: (payload) => void - Called after close transition.\n- **onLoad**: (payload) => void - Called after metadata loads.\n- **onError**: (error) => void - Called after metadata loading fails.\n- **theme**: LinkPreviewThemeProps - LinkPreview theme overrides.\n- **hoverCardTheme**: HoverCardThemeProps - HoverCard wrapper theme overrides.\n\n## Metadata Shape\n\n```ts\ntype LinkPreviewMetadata = {\n\turl?: string;\n\ttitle?: string;\n\tdescription?: string;\n\tsiteName?: string;\n\timage?: string;\n\tfavicon?: string;\n};\n```\n\n## Endpoint Contract\n\nThe default endpoint should return JSON matching LinkPreviewMetadata. Non-2xx responses should return a JSON object with a `message` string when possible.\n\n## Accessibility\n\n- The trigger remains a real anchor, so the destination is reachable without hover.\n- Loading and error states use role=\"status\".\n- A disabled LinkPreview removes the anchor href and prevents hover opening.\n\n## Theme Parts\n\n- **trigger** - Anchor trigger.\n- **card** - HoverCard surface classes.\n- **content** - Preview content wrapper.\n- **media** - Image container.\n- **image** - Preview image.\n- **body** - Metadata text stack.\n- **header** - Favicon and site row.\n- **favicon** - Favicon image.\n- **site** - Site name text.\n- **title** - Preview title.\n- **description** - Preview description.\n- **url** - URL display line.\n- **loading** - Skeleton stack.\n- **error** - Error state container.\n\n## Motion\n\n- LinkPreview has no preset of its own: it forwards `transition` (now a plain `FSOProps`,\n responsive) to HoverCard, whose **motion** slot owns the preset.\n- Retune it with `<Theme components={{ 'hover-card': { motion } }}>` or\n `setHoverCardTheme({ motion })`; the `transition` prop still wins per instance.\n";
|
|
@@ -69,7 +69,7 @@ By default, LinkPreview requests \`/api/link-metadata?url=<href>\` when the card
|
|
|
69
69
|
- **errorLabel**: string - Heading shown when metadata loading fails.
|
|
70
70
|
- **position**: Popover placement - Preferred card placement.
|
|
71
71
|
- **offset**: number - Gap between trigger and card.
|
|
72
|
-
- **delay**: number - Open delay in milliseconds.
|
|
72
|
+
- **delay**: number - Open delay in milliseconds. Skipped right after another preview, hover card, tooltip or hover-opened popover was open, as for HoverCard.
|
|
73
73
|
- **closeDelay**: number - Close delay in milliseconds.
|
|
74
74
|
- **openOnFocus**: boolean - Open when focus enters trigger or card.
|
|
75
75
|
- **openOnClick**: boolean - Toggle card on click before navigation.
|
|
@@ -79,6 +79,9 @@ By default, LinkPreview requests \`/api/link-metadata?url=<href>\` when the card
|
|
|
79
79
|
- **transition**: object - Popover transition overrides.
|
|
80
80
|
- **size**: 'small' | 'normal' | 'large' - Preview card size.
|
|
81
81
|
- **disabled**: boolean - Disable opening and link navigation.
|
|
82
|
+
- **wrap**: boolean (default: true) - The link flows with the text around it (\`display: inline\`, \`box-decoration-break: clone\`) and breaks across lines; the card anchors to the line the pointer entered and stays there while it is open, and a keyboard open takes the first line above the link and the last one below it. \`false\` keeps the link one \`inline-flex\` box
|
|
83
|
+
- **anchorTo**: 'box' | 'line' (default: 'line' with \`wrap\`) - What the card anchors to when the link wraps
|
|
84
|
+
- **arrow**: boolean (default: false) - Draws an arrow from the card toward the link
|
|
82
85
|
- **class**: string - Trigger anchor classes.
|
|
83
86
|
- **card**: Props forwarded to the inner Card as one object - \`{ class, color, variant, theme }\` (defaults: color 'neutral', variant 'solid').
|
|
84
87
|
- **popover**: Props forwarded to the Popover panel as one object - \`{ class, theme }\`.
|
|
@@ -111,6 +111,21 @@ export type LinkPreviewProps = WithAttachments<{
|
|
|
111
111
|
size?: Sizes;
|
|
112
112
|
/** When true, prevents opening and marks the trigger as disabled. */
|
|
113
113
|
disabled?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Lets the link wrap across lines like the text around it. The card anchors to the line the
|
|
116
|
+
* pointer entered on and stays there while it is open; a keyboard open takes the first line
|
|
117
|
+
* above the link and the last one below it. Set it to `false` for a link that must stay one
|
|
118
|
+
* box, such as a button-like link with a fixed layout.
|
|
119
|
+
* @default true
|
|
120
|
+
*/
|
|
121
|
+
wrap?: boolean;
|
|
122
|
+
/**
|
|
123
|
+
* What the card anchors to when the link wraps: the whole box, or the line the pointer entered
|
|
124
|
+
* on. Defaults to `'line'` with `wrap`.
|
|
125
|
+
*/
|
|
126
|
+
anchorTo?: PopoverProps['anchorTo'];
|
|
127
|
+
/** Draws an arrow from the card toward the link. */
|
|
128
|
+
arrow?: PopoverProps['arrow'];
|
|
114
129
|
/** Additional CSS classes merged onto the trigger anchor. */
|
|
115
130
|
class?: string;
|
|
116
131
|
/** Props forwarded to the inner Card surface. */
|
|
@@ -5,6 +5,10 @@ export declare const linkPreviewTheme: {
|
|
|
5
5
|
true: string;
|
|
6
6
|
false: null;
|
|
7
7
|
};
|
|
8
|
+
wrap: {
|
|
9
|
+
true: string;
|
|
10
|
+
false: string;
|
|
11
|
+
};
|
|
8
12
|
}> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
|
|
9
13
|
card: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
|
|
10
14
|
size: {
|
|
@@ -64,6 +68,10 @@ export declare const setLinkPreviewTheme: (theme: InferComponentTheme<{
|
|
|
64
68
|
true: string;
|
|
65
69
|
false: null;
|
|
66
70
|
};
|
|
71
|
+
wrap: {
|
|
72
|
+
true: string;
|
|
73
|
+
false: string;
|
|
74
|
+
};
|
|
67
75
|
}> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
|
|
68
76
|
card: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
|
|
69
77
|
size: {
|
|
@@ -121,6 +129,10 @@ export declare const useLinkPreviewTheme: import("../../utils/cva/theme.js").Use
|
|
|
121
129
|
true: string;
|
|
122
130
|
false: null;
|
|
123
131
|
};
|
|
132
|
+
wrap: {
|
|
133
|
+
true: string;
|
|
134
|
+
false: string;
|
|
135
|
+
};
|
|
124
136
|
}> & import("../../utils/cva/types.js").CVAClassProp) | undefined) => string;
|
|
125
137
|
card: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
|
|
126
138
|
size: {
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { cva } from '../../utils/cva/index.js';
|
|
2
2
|
import { setComponentTheme, useComponentTheme } from '../../utils/cva/index.js';
|
|
3
3
|
const defaultLinkPreviewTrigger = cva({
|
|
4
|
-
base: 'text-primary-readable
|
|
4
|
+
base: 'text-primary-readable max-w-full rounded-sm underline-offset-4 transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus/50',
|
|
5
5
|
variants: {
|
|
6
6
|
disabled: {
|
|
7
7
|
true: 'pointer-events-none opacity-55',
|
|
8
8
|
false: null
|
|
9
|
+
},
|
|
10
|
+
// The link flows with the text around it and breaks across lines; its ring and rounding
|
|
11
|
+
// repeat on every line.
|
|
12
|
+
wrap: {
|
|
13
|
+
true: 'box-decoration-clone inline',
|
|
14
|
+
false: 'inline-flex items-center'
|
|
9
15
|
}
|
|
10
16
|
},
|
|
11
17
|
defaultVariants: {
|
|
12
|
-
disabled: false
|
|
18
|
+
disabled: false,
|
|
19
|
+
wrap: true
|
|
13
20
|
}
|
|
14
21
|
});
|
|
15
22
|
const defaultLinkPreviewCard = cva({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { applyCspNonce } from '../../utils/cspNonce.js';
|
|
1
2
|
const MAPLIBRE_CDN_VERSION = '5.24.0';
|
|
2
3
|
const MAPLIBRE_SCRIPT_ID = 'svelte-pro-maplibre-script';
|
|
3
4
|
const MAPLIBRE_STYLE_ID = 'svelte-pro-maplibre-style';
|
|
@@ -23,7 +24,7 @@ function ensureMapLibreStyle() {
|
|
|
23
24
|
if (document.getElementById(MAPLIBRE_STYLE_ID)) {
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
26
|
-
const link = document.createElement('link');
|
|
27
|
+
const link = applyCspNonce(document.createElement('link'));
|
|
27
28
|
link.id = MAPLIBRE_STYLE_ID;
|
|
28
29
|
link.rel = 'stylesheet';
|
|
29
30
|
link.href = MAPLIBRE_STYLE_URL;
|
|
@@ -53,7 +54,7 @@ function createMapLibreScriptPromise() {
|
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
function createMapLibreScript() {
|
|
56
|
-
const script = document.createElement('script');
|
|
57
|
+
const script = applyCspNonce(document.createElement('script'));
|
|
57
58
|
script.id = MAPLIBRE_SCRIPT_ID;
|
|
58
59
|
script.src = MAPLIBRE_SCRIPT_URL;
|
|
59
60
|
script.async = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const markdownDescription = "\n# Markdown Component\n\nRenders Markdown as themed HTML, built for streaming LLM output. Wraps the user's own [svelte-streamdown](https://github.com/) renderer, restyled with entasis design tokens so it matches the rest of the app and adapts to light and dark automatically. Incomplete/streaming Markdown (an unterminated code fence, a half-written table) is handled gracefully \u2014 nothing crashes or flashes as chunks arrive.\n\nFenced code blocks render through entasis's own Code component (syntax highlighting + copy button), and \\`mermaid\\` fences render through entasis's Mermaid component (pan/zoom, brand theming, and errorForgiving so a diagram being streamed in doesn't flash errors between chunks).\n\nCard, Stat, Stack, Grid, and GridSpan are also available as built-in MDX components. They can be used directly inside the Markdown source without passing an MDX component map.\n\n## Basic Usage\n\n\\`\\`\\`svelte\n<Markdown content={\"# Hello\\n\\nSome **bold** and _italic_ text.\"} />\n<Markdown content={message} size=\"small\" />\n<Markdown content={doc} size=\"large\" />\n\\`\\`\\`\n\n## Props\n\n### Core Props\n- **content**: string (required) - The Markdown source. Re-renders reactively as it changes; incomplete/streaming Markdown is handled gracefully (safe to bind to a growing string from a token stream).\n- **size**: 'small' | 'normal' | 'large' (default: 'normal') - Type and spacing scale.\n - **small**: compact \u2014 smaller headings, tighter block margins, \\`text-sm\\` body. Best for chat messages and dense UI.\n - **normal**: the default reading scale (\\`text-base\\` body, shadcn-equivalent heading sizes).\n - **large**: long-form \u2014 larger headings, roomier margins, \\`text-lg\\` body. Best for documents and articles.\n\n### Advanced Props\n- **class**: string - Additional CSS classes on the root wrapper.\n- **theme**: MarkdownThemeProps - Overrides for the root wrapper part (size variants live here).\n- **mdxComponents**: StreamdownProps['mdxComponents'] - Custom MDX components. Matching names override the built-in entasis components.\n- **...streamdown passthroughs**: every other svelte-streamdown prop is forwarded except the ones entasis controls (\\`content\\`, \\`theme\\`, \\`baseTheme\\`, \\`mergeTheme\\`, \\`class\\`, \\`code\\`, \\`mermaid\\`, \\`children\\`, \\`streamdown\\`, \\`element\\`). Use these for streamdown features such as controlling which block types are parsed, link/image handling, and other renderer options \u2014 see the svelte-streamdown docs.\n\n## Rendering\n\n- **Block elements**: headings (h1\u2013h6), paragraphs, lists (ordered, unordered, task lists), blockquotes, horizontal rules, tables, images and links are all styled from entasis tokens.\n- **GitHub alerts**: \\`> [!NOTE]\\`, \\`> [!TIP]\\`, \\`> [!IMPORTANT]\\`, \\`> [!WARNING]\\` and \\`> [!CAUTION]\\` render as colored callouts mapped to entasis info/success/primary/warning/danger muted pairings.\n- **Inline code** (\\`codespan\\`):
|
|
1
|
+
export declare const markdownDescription = "\n# Markdown Component\n\nRenders Markdown as themed HTML, built for streaming LLM output. Wraps the user's own [svelte-streamdown](https://github.com/) renderer, restyled with entasis design tokens so it matches the rest of the app and adapts to light and dark automatically. Incomplete/streaming Markdown (an unterminated code fence, a half-written table) is handled gracefully \u2014 nothing crashes or flashes as chunks arrive.\n\nFenced code blocks render through entasis's own Code component (syntax highlighting + copy button), and \\`mermaid\\` fences render through entasis's Mermaid component (pan/zoom, brand theming, and errorForgiving so a diagram being streamed in doesn't flash errors between chunks).\n\nCard, Stat, Stack, Grid, and GridSpan are also available as built-in MDX components. They can be used directly inside the Markdown source without passing an MDX component map.\n\n## Basic Usage\n\n\\`\\`\\`svelte\n<Markdown content={\"# Hello\\n\\nSome **bold** and _italic_ text.\"} />\n<Markdown content={message} size=\"small\" />\n<Markdown content={doc} size=\"large\" />\n\\`\\`\\`\n\n## Props\n\n### Core Props\n- **content**: string (required) - The Markdown source. Re-renders reactively as it changes; incomplete/streaming Markdown is handled gracefully (safe to bind to a growing string from a token stream).\n- **size**: 'small' | 'normal' | 'large' (default: 'normal') - Type and spacing scale.\n - **small**: compact \u2014 smaller headings, tighter block margins, \\`text-sm\\` body. Best for chat messages and dense UI.\n - **normal**: the default reading scale (\\`text-base\\` body, shadcn-equivalent heading sizes).\n - **large**: long-form \u2014 larger headings, roomier margins, \\`text-lg\\` body. Best for documents and articles.\n\n### Advanced Props\n- **class**: string - Additional CSS classes on the root wrapper.\n- **theme**: MarkdownThemeProps - Overrides for the root wrapper part (size variants live here).\n- **mdxComponents**: StreamdownProps['mdxComponents'] - Custom MDX components. Matching names override the built-in entasis components.\n- **...streamdown passthroughs**: every other svelte-streamdown prop is forwarded except the ones entasis controls (\\`content\\`, \\`theme\\`, \\`baseTheme\\`, \\`mergeTheme\\`, \\`class\\`, \\`code\\`, \\`mermaid\\`, \\`children\\`, \\`streamdown\\`, \\`element\\`). Use these for streamdown features such as controlling which block types are parsed, link/image handling, and other renderer options \u2014 see the svelte-streamdown docs.\n\n## Rendering\n\n- **Block elements**: headings (h1\u2013h6), paragraphs, lists (ordered, unordered, task lists), blockquotes, horizontal rules, tables, images and links are all styled from entasis tokens.\n- **GitHub alerts**: \\`> [!NOTE]\\`, \\`> [!TIP]\\`, \\`> [!IMPORTANT]\\`, \\`> [!WARNING]\\` and \\`> [!CAUTION]\\` render as colored callouts mapped to entasis info/success/primary/warning/danger muted pairings.\n- **Inline code** (\\`codespan\\`): a muted neutral chip at 0.9em of the surrounding text, readable on any surface.\n- **Lists** hang-indent: markers sit outside the text, so a wrapped line starts under the first word. **Tables** read at the surrounding text size, size their columns to content, and scroll with an edge fade when wider than their container.\n- **Code fences**: rendered by entasis's Code component \u2014 syntax highlighting and a copy button. The code block sizing follows \\`size\\`.\n- **Mermaid fences**: a fence tagged \\`mermaid\\` renders through entasis's Mermaid component with \\`errorForgiving\\` enabled, so a diagram that is still streaming in holds its last valid frame instead of flashing parse errors. Diagram size maps from the Markdown \\`size\\`.\n\n## Built-in MDX components\n\nThe built-in tags are **Card**, **Stat**, **Stack**, **Grid**, and **GridSpan**:\n\n~~~svelte\nconst content = [\n '<Grid columns={2} gap=\"lg\">',\n '<GridSpan columns=\"full\">',\n '<Card title=\"Release readiness\" variant=\"outline\">',\n '<Stack gap=\"md\">Everything is **ready**.</Stack>',\n '</Card>',\n '</GridSpan>',\n '<Stat label=\"Coverage\" value=\"94%\" trend=\"+3.2%\" trendDirection=\"up\" />',\n '<Stat label=\"Issues\" value=\"3\" trend=\"-8\" trendDirection=\"down\" />',\n '</Grid>'\n].join('\\n');\n\n<Markdown {content} />\n~~~\n\nMDX attributes support string, number, and boolean values. Imperative event handlers and root styling or link props are not forwarded from Markdown content. Caller-provided mdxComponents take priority, and the custom mdx snippet remains the fallback for unknown tags.\n\n## Theming\n\nThe full theme is derived from entasis design tokens (translated from the shadcn preset): borders use \\`border-neutral-muted\\`, muted surfaces use \\`bg-neutral-muted\\`, secondary text uses \\`text-neutral/70\\`, and so on. Because it is token-based, the rendered Markdown adapts to light and dark automatically and stays visually consistent with the rest of the app. Per-instance tweaks to the root wrapper go through the \\`theme\\` prop; deeper element overrides fall back safely to the built-in theme.\n\n## Examples\n\n### Chat message (small)\n\\`\\`\\`svelte\n<Markdown content={assistantMessage} size=\"small\" />\n\\`\\`\\`\n\n### Long-form document (large)\n\\`\\`\\`svelte\n<Markdown content={articleBody} size=\"large\" />\n\\`\\`\\`\n\n### Streaming from an LLM\n\\`\\`\\`svelte\n<script>\n\tlet content = $state('');\n\t// append tokens as they arrive\n\tfor await (const chunk of stream) content += chunk;\n</script>\n<Markdown {content} size=\"small\" />\n\\`\\`\\`\n\n## Accessibility\n\n- Output is semantic HTML (real headings, lists, tables, \\`<a>\\`, \\`<code>\\`), so the document outline and screen-reader navigation work as expected.\n- Code blocks inherit the Code component's accessible copy button (aria-labelled, keyboard operable) and Mermaid inherits its \\`role=\"img\"\\` + aria-label and keyboard-accessible controls.\n- Color is never the only signal for GitHub alerts \u2014 each keeps its label/heading text.\n- Task-list checkboxes are disabled and have no text of their own, so each carries an accessible name from the catalog (`taskComplete` / `taskIncomplete`).\n\n## Notes\n\n- Renders reactively: it is safe to bind \\`content\\` to a string that grows over time (token streaming). Partial Markdown between chunks won't throw.\n- The theme deep-merges over svelte-streamdown's built-in base theme, so any element entasis doesn't explicitly restyle still renders sensibly.\n- Code and Mermaid rendering delegate to entasis's own components rather than streamdown's, keeping copy/pan/zoom behavior consistent across the app.\n";
|
|
@@ -34,7 +34,8 @@ Card, Stat, Stack, Grid, and GridSpan are also available as built-in MDX compone
|
|
|
34
34
|
|
|
35
35
|
- **Block elements**: headings (h1–h6), paragraphs, lists (ordered, unordered, task lists), blockquotes, horizontal rules, tables, images and links are all styled from entasis tokens.
|
|
36
36
|
- **GitHub alerts**: \\\`> [!NOTE]\\\`, \\\`> [!TIP]\\\`, \\\`> [!IMPORTANT]\\\`, \\\`> [!WARNING]\\\` and \\\`> [!CAUTION]\\\` render as colored callouts mapped to entasis info/success/primary/warning/danger muted pairings.
|
|
37
|
-
- **Inline code** (\\\`codespan\\\`):
|
|
37
|
+
- **Inline code** (\\\`codespan\\\`): a muted neutral chip at 0.9em of the surrounding text, readable on any surface.
|
|
38
|
+
- **Lists** hang-indent: markers sit outside the text, so a wrapped line starts under the first word. **Tables** read at the surrounding text size, size their columns to content, and scroll with an edge fade when wider than their container.
|
|
38
39
|
- **Code fences**: rendered by entasis's Code component — syntax highlighting and a copy button. The code block sizing follows \\\`size\\\`.
|
|
39
40
|
- **Mermaid fences**: a fence tagged \\\`mermaid\\\` renders through entasis's Mermaid component with \\\`errorForgiving\\\` enabled, so a diagram that is still streaming in holds its last valid frame instead of flashing parse errors. Diagram size maps from the Markdown \\\`size\\\`.
|
|
40
41
|
|