entasis 0.10.2 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/README.md +1 -1
  2. package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
  3. package/dist/attachments/disclosurePanel.svelte.js +277 -0
  4. package/dist/attachments/portal.d.ts +17 -1
  5. package/dist/attachments/portal.js +39 -2
  6. package/dist/attachments/spinnerOverlay.svelte.js +12 -0
  7. package/dist/attachments/transitionSize.d.ts +6 -0
  8. package/dist/attachments/transitionSize.js +30 -0
  9. package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
  10. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
  11. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
  12. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
  13. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
  14. package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
  15. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
  16. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
  17. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
  18. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
  19. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
  20. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
  21. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
  22. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
  23. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
  24. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
  25. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
  26. package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
  27. package/dist/components/AIAskUserQuestion/index.js +2 -0
  28. package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
  29. package/dist/components/AIAskUserQuestion/schemas.js +10 -3
  30. package/dist/components/AIChat/AIChat.svelte +10 -0
  31. package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
  32. package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
  33. package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
  34. package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
  35. package/dist/components/AIChat/AIChatSurface.svelte +30 -2
  36. package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
  37. package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
  38. package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
  39. package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
  40. package/dist/components/AIChat/aiChat.mcp.js +31 -15
  41. package/dist/components/AIChat/aiChat.props.d.ts +36 -10
  42. package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
  43. package/dist/components/AIChat/aiChat.theme.js +21 -4
  44. package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
  45. package/dist/components/AIChat/index.d.ts +1 -1
  46. package/dist/components/AIComposer/AIComposer.svelte +102 -5
  47. package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
  48. package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
  49. package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
  50. package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
  51. package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
  52. package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
  53. package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
  54. package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
  55. package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
  56. package/dist/components/AIComposer/aiComposer.theme.js +37 -5
  57. package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
  58. package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
  59. package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
  60. package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
  61. package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
  62. package/dist/components/AIContext/AIContext.svelte +7 -3
  63. package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
  64. package/dist/components/AIContext/aiContext.mcp.js +1 -1
  65. package/dist/components/AIContext/aiContext.props.d.ts +4 -1
  66. package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
  67. package/dist/components/AIContext/aiContext.theme.js +7 -2
  68. package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
  69. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  70. package/dist/components/AIMarker/AIMarker.svelte +2 -0
  71. package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
  72. package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
  73. package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
  74. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  75. package/dist/components/AIMessage/AIMessage.svelte +38 -16
  76. package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
  77. package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
  78. package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
  79. package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
  80. package/dist/components/AIMessage/aiMessage.theme.js +91 -32
  81. package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
  82. package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
  83. package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
  84. package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
  85. package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
  86. package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
  87. package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
  88. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
  89. package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
  90. package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
  91. package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
  92. package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
  93. package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
  94. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
  95. package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
  96. package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
  97. package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
  98. package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
  99. package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
  100. package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
  101. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  102. package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
  103. package/dist/components/AIThread/AIThread.svelte +378 -95
  104. package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
  105. package/dist/components/AIThread/AIThreadItems.svelte +266 -64
  106. package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
  107. package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
  108. package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
  109. package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
  110. package/dist/components/AIThread/aiThread.mcp.js +34 -20
  111. package/dist/components/AIThread/aiThread.props.d.ts +73 -8
  112. package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
  113. package/dist/components/AIThread/aiThread.theme.js +108 -9
  114. package/dist/components/AIThread/index.d.ts +1 -1
  115. package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
  116. package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
  117. package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
  118. package/dist/components/AIThread/threadRenderItems.js +265 -77
  119. package/dist/components/AIThread/threadScrollController.d.ts +0 -8
  120. package/dist/components/AIThread/threadScrollController.js +2 -39
  121. package/dist/components/AIThread/threadTools.d.ts +11 -0
  122. package/dist/components/AIThread/threadTools.js +79 -0
  123. package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
  124. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
  125. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
  126. package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
  127. package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
  128. package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
  129. package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
  130. package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
  131. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
  132. package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
  133. package/dist/components/AITool/AITool.svelte +56 -21
  134. package/dist/components/AITool/AIToolCallList.svelte +79 -29
  135. package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
  136. package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
  137. package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
  138. package/dist/components/AITool/AIToolValueSection.svelte +126 -28
  139. package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
  140. package/dist/components/AITool/AIToolValueTree.svelte +11 -16
  141. package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
  142. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  143. package/dist/components/AITool/aiTool.mcp.js +36 -8
  144. package/dist/components/AITool/aiTool.props.d.ts +52 -6
  145. package/dist/components/AITool/aiTool.theme.d.ts +117 -39
  146. package/dist/components/AITool/aiTool.theme.js +144 -140
  147. package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
  148. package/dist/components/AITool/aiToolClock.svelte.js +62 -0
  149. package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
  150. package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
  151. package/dist/components/AITool/index.d.ts +2 -1
  152. package/dist/components/AITool/index.js +1 -0
  153. package/dist/components/AITool/toolRendering.d.ts +33 -1
  154. package/dist/components/AITool/toolRendering.js +179 -15
  155. package/dist/components/AITool/toolValueTree.d.ts +14 -1
  156. package/dist/components/AITool/toolValueTree.js +126 -27
  157. package/dist/components/Accordion/Accordion.svelte +109 -109
  158. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
  159. package/dist/components/Accordion/AccordionPanel.svelte +64 -0
  160. package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
  161. package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
  162. package/dist/components/Accordion/accordion.attributes.js +20 -0
  163. package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
  164. package/dist/components/Accordion/accordion.mcp.js +78 -22
  165. package/dist/components/Accordion/accordion.props.d.ts +54 -10
  166. package/dist/components/Accordion/accordion.theme.d.ts +3 -0
  167. package/dist/components/Accordion/accordion.theme.js +4 -0
  168. package/dist/components/Accordion/index.d.ts +1 -0
  169. package/dist/components/Accordion/index.js +1 -0
  170. package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
  171. package/dist/components/Avatar/Avatar.svelte +60 -10
  172. package/dist/components/Avatar/AvatarGroup.svelte +9 -0
  173. package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
  174. package/dist/components/Avatar/avatar.mcp.js +13 -5
  175. package/dist/components/Avatar/avatar.props.d.ts +28 -1
  176. package/dist/components/Avatar/avatar.theme.js +3 -3
  177. package/dist/components/Avatar/index.d.ts +1 -1
  178. package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
  179. package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
  180. package/dist/components/Button/Button.svelte +35 -15
  181. package/dist/components/Button/button.mcp.d.ts +1 -1
  182. package/dist/components/Button/button.mcp.js +8 -4
  183. package/dist/components/Button/button.props.d.ts +23 -8
  184. package/dist/components/Button/button.theme.d.ts +12 -0
  185. package/dist/components/Button/button.theme.js +17 -4
  186. package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
  187. package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
  188. package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
  189. package/dist/components/Collapsible/Collapsible.svelte +125 -19
  190. package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
  191. package/dist/components/Collapsible/collapsible.attributes.js +17 -0
  192. package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
  193. package/dist/components/Collapsible/collapsible.mcp.js +62 -12
  194. package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
  195. package/dist/components/Collapsible/collapsible.theme.js +3 -1
  196. package/dist/components/Collapsible/index.d.ts +1 -0
  197. package/dist/components/Collapsible/index.js +1 -0
  198. package/dist/components/Command/Command.svelte +56 -14
  199. package/dist/components/Command/command.mcp.d.ts +1 -1
  200. package/dist/components/Command/command.mcp.js +12 -6
  201. package/dist/components/Command/command.props.d.ts +39 -6
  202. package/dist/components/Command/command.state.svelte.d.ts +40 -11
  203. package/dist/components/Command/command.state.svelte.js +75 -28
  204. package/dist/components/Command/command.theme.js +4 -3
  205. package/dist/components/Confirmation/Confirmation.svelte +72 -31
  206. package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
  207. package/dist/components/Confirmation/confirmation.mcp.js +5 -4
  208. package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
  209. package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
  210. package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
  211. package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
  212. package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
  213. package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
  214. package/dist/components/DataTable/DataTable.svelte +4 -9
  215. package/dist/components/DataTable/DataTableEditor.svelte +5 -0
  216. package/dist/components/DataTable/DataTableFilter.svelte +1 -0
  217. package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
  218. package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
  219. package/dist/components/DataTable/dataTable.mcp.js +4 -2
  220. package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
  221. package/dist/components/DataTable/dataTable.theme.js +9 -6
  222. package/dist/components/Dialog/Dialog.svelte +120 -35
  223. package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
  224. package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
  225. package/dist/components/Dialog/dialog.api.d.ts +65 -0
  226. package/dist/components/Dialog/dialog.api.js +1 -0
  227. package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
  228. package/dist/components/Dialog/dialog.attributes.js +19 -0
  229. package/dist/components/Dialog/dialog.indent.d.ts +6 -0
  230. package/dist/components/Dialog/dialog.indent.js +16 -0
  231. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  232. package/dist/components/Dialog/dialog.mcp.js +195 -22
  233. package/dist/components/Dialog/dialog.props.d.ts +102 -19
  234. package/dist/components/Dialog/dialog.snap.d.ts +40 -0
  235. package/dist/components/Dialog/dialog.snap.js +78 -0
  236. package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
  237. package/dist/components/Dialog/dialog.state.svelte.js +525 -66
  238. package/dist/components/Dialog/dialog.theme.d.ts +48 -0
  239. package/dist/components/Dialog/dialog.theme.js +32 -9
  240. package/dist/components/Dialog/index.d.ts +4 -1
  241. package/dist/components/Dialog/index.js +1 -0
  242. package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
  243. package/dist/components/DocumentViewer/documentOutput.js +2 -1
  244. package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
  245. package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
  246. package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
  247. package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
  248. package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
  249. package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
  250. package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
  251. package/dist/components/Form/Ask/Ask.svelte +9 -13
  252. package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
  253. package/dist/components/Form/Ask/ask.mcp.js +1 -1
  254. package/dist/components/Form/Ask/ask.props.d.ts +1 -1
  255. package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
  256. package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
  257. package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
  258. package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
  259. package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
  260. package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
  261. package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
  262. package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
  263. package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
  264. package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
  265. package/dist/components/Form/Autocomplete/index.d.ts +3 -0
  266. package/dist/components/Form/Autocomplete/index.js +2 -0
  267. package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
  268. package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
  269. package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
  270. package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
  271. package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
  272. package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
  273. package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
  274. package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
  275. package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
  276. package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
  277. package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
  278. package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
  279. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
  280. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
  281. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
  282. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
  283. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
  284. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
  285. package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
  286. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
  287. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
  288. package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
  289. package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
  290. package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
  291. package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
  292. package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
  293. package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
  294. package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
  295. package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
  296. package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
  297. package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
  298. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
  299. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
  300. package/dist/components/Form/Combobox/Combobox.svelte +145 -185
  301. package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
  302. package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
  303. package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
  304. package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
  305. package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
  306. package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
  307. package/dist/components/Form/Combobox/combobox.items.js +68 -0
  308. package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
  309. package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
  310. package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
  311. package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
  312. package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
  313. package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
  314. package/dist/components/Form/Combobox/combobox.theme.js +37 -1
  315. package/dist/components/Form/Combobox/index.d.ts +2 -1
  316. package/dist/components/Form/Combobox/index.js +1 -0
  317. package/dist/components/Form/DateInput/DateInput.svelte +11 -3
  318. package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
  319. package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
  320. package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
  321. package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
  322. package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
  323. package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
  324. package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
  325. package/dist/components/Form/Field/Field.svelte +258 -32
  326. package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
  327. package/dist/components/Form/Field/FieldGroup.svelte +29 -0
  328. package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
  329. package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
  330. package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
  331. package/dist/components/Form/Field/field.d.ts +75 -10
  332. package/dist/components/Form/Field/field.mcp.d.ts +1 -1
  333. package/dist/components/Form/Field/field.mcp.js +158 -18
  334. package/dist/components/Form/Field/field.messages.d.ts +47 -0
  335. package/dist/components/Form/Field/field.messages.js +64 -0
  336. package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
  337. package/dist/components/Form/Field/field.state.svelte.js +525 -16
  338. package/dist/components/Form/Field/field.theme.d.ts +46 -0
  339. package/dist/components/Form/Field/field.theme.js +33 -0
  340. package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
  341. package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
  342. package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
  343. package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
  344. package/dist/components/Form/Field/index.d.ts +5 -2
  345. package/dist/components/Form/Field/index.js +1 -0
  346. package/dist/components/Form/Field/schemas.js +7 -2
  347. package/dist/components/Form/File/FileInput.svelte +24 -3
  348. package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
  349. package/dist/components/Form/File/fileInput.mcp.js +1 -0
  350. package/dist/components/Form/Form/Form.svelte +49 -15
  351. package/dist/components/Form/Form/FormActions.svelte +3 -1
  352. package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
  353. package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
  354. package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
  355. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  356. package/dist/components/Form/Form/form.d.ts +84 -11
  357. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  358. package/dist/components/Form/Form/form.mcp.js +178 -12
  359. package/dist/components/Form/Form/form.props.d.ts +32 -1
  360. package/dist/components/Form/Form/form.registry.d.ts +28 -0
  361. package/dist/components/Form/Form/form.registry.js +59 -0
  362. package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
  363. package/dist/components/Form/Form/form.state.svelte.js +322 -28
  364. package/dist/components/Form/Form/index.d.ts +4 -1
  365. package/dist/components/Form/Form/index.js +1 -0
  366. package/dist/components/Form/Form/visibility.d.ts +3130 -1863
  367. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  368. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  369. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  370. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  371. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  372. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  373. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  374. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
  375. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  376. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  377. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  378. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  379. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  380. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  381. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  382. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  383. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  384. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  385. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  386. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  387. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  388. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  389. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  390. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  391. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  392. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  393. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  394. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  395. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  396. package/dist/components/Form/PinInput/index.d.ts +1 -1
  397. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  398. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  399. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  400. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  401. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  402. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  403. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  404. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  405. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  406. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  407. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  408. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  409. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  410. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  411. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  412. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  413. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  414. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  415. package/dist/components/Form/Select/Select.svelte +186 -48
  416. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  417. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  418. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  419. package/dist/components/Form/Select/index.d.ts +2 -1
  420. package/dist/components/Form/Select/index.js +1 -0
  421. package/dist/components/Form/Select/select.align.d.ts +5 -0
  422. package/dist/components/Form/Select/select.align.js +19 -5
  423. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  424. package/dist/components/Form/Select/select.attributes.js +27 -0
  425. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  426. package/dist/components/Form/Select/select.mcp.js +103 -18
  427. package/dist/components/Form/Select/select.props.d.ts +87 -10
  428. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  429. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  430. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  431. package/dist/components/Form/Select/select.theme.js +22 -0
  432. package/dist/components/Form/Slider/Slider.svelte +54 -14
  433. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  434. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  435. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  436. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  437. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  438. package/dist/components/Form/Slider/index.d.ts +1 -1
  439. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  440. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  441. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  442. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  443. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  444. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  445. package/dist/components/Form/Slider/slider.theme.js +35 -17
  446. package/dist/components/Form/Switch/Switch.svelte +61 -38
  447. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  448. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  449. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  450. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  451. package/dist/components/Form/Switch/switch.theme.js +8 -3
  452. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  453. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  454. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  455. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  456. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  457. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  458. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  459. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  460. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  461. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  462. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  463. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  464. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  465. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  466. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  467. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  468. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  469. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  470. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  471. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  472. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  473. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  474. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  475. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  476. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  477. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  478. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  479. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  480. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  481. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  482. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  483. package/dist/components/HoverCard/index.d.ts +1 -0
  484. package/dist/components/HoverCard/index.js +1 -0
  485. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  487. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  488. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  489. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  490. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  491. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  492. package/dist/components/Kanban/kanban.theme.js +7 -3
  493. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  494. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  495. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  496. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  497. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  498. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  499. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  500. package/dist/components/Map/maplibre-cdn.js +3 -2
  501. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  502. package/dist/components/Markdown/markdown.mcp.js +2 -1
  503. package/dist/components/Markdown/markdown.theme.js +18 -9
  504. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  505. package/dist/components/Menu/Menu.svelte +3 -3
  506. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  507. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  508. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  509. package/dist/components/Menu/MenuFloating.svelte +421 -74
  510. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  511. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  512. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  513. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  514. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  515. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  516. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  517. package/dist/components/Menu/MenuStacked.svelte +404 -158
  518. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  519. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  520. package/dist/components/Menu/index.d.ts +2 -1
  521. package/dist/components/Menu/index.js +1 -0
  522. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  523. package/dist/components/Menu/menu.attributes.js +28 -0
  524. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  525. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  526. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  527. package/dist/components/Menu/menu.mcp.js +227 -17
  528. package/dist/components/Menu/menu.platform.d.ts +5 -0
  529. package/dist/components/Menu/menu.platform.js +11 -0
  530. package/dist/components/Menu/menu.props.d.ts +172 -9
  531. package/dist/components/Menu/menu.theme.d.ts +147 -0
  532. package/dist/components/Menu/menu.theme.js +101 -0
  533. package/dist/components/Menu/menuTree.d.ts +35 -1
  534. package/dist/components/Menu/menuTree.js +158 -1
  535. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  536. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  537. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  538. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  539. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  540. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  541. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  542. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  543. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  544. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  545. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  546. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  547. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  548. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  549. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  550. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  551. package/dist/components/Meter/Meter.svelte +110 -24
  552. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  553. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  554. package/dist/components/Meter/meter.mcp.js +23 -37
  555. package/dist/components/Meter/meter.props.d.ts +36 -44
  556. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  557. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  558. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  559. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  561. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  562. package/dist/components/NavigationMenu/index.d.ts +4 -0
  563. package/dist/components/NavigationMenu/index.js +3 -0
  564. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  565. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  566. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  567. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  568. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  569. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  570. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  571. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  572. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  573. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  574. package/dist/components/Overlay/Overlay.svelte +19 -30
  575. package/dist/components/Overlay/index.d.ts +1 -0
  576. package/dist/components/Overlay/index.js +1 -0
  577. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  578. package/dist/components/Overlay/overlay.attributes.js +14 -0
  579. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  580. package/dist/components/Overlay/overlay.mcp.js +21 -3
  581. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  582. package/dist/components/Popover/Popover.svelte +163 -52
  583. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  584. package/dist/components/Popover/PopoverSession.svelte +12 -0
  585. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  586. package/dist/components/Popover/index.d.ts +10 -2
  587. package/dist/components/Popover/index.js +4 -1
  588. package/dist/components/Popover/popover.api.d.ts +83 -0
  589. package/dist/components/Popover/popover.api.js +1 -0
  590. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  591. package/dist/components/Popover/popover.attributes.js +28 -0
  592. package/dist/components/Popover/popover.claims.d.ts +19 -0
  593. package/dist/components/Popover/popover.claims.js +45 -0
  594. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  595. package/dist/components/Popover/popover.mcp.js +163 -31
  596. package/dist/components/Popover/popover.position.d.ts +226 -0
  597. package/dist/components/Popover/popover.position.js +402 -0
  598. package/dist/components/Popover/popover.props.d.ts +179 -24
  599. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  600. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  601. package/dist/components/Popover/popover.theme.d.ts +15 -0
  602. package/dist/components/Popover/popover.theme.js +27 -2
  603. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  604. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  605. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  606. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  607. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  608. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  609. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  610. package/dist/components/Progress/Progress.svelte +160 -0
  611. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  612. package/dist/components/Progress/index.d.ts +3 -0
  613. package/dist/components/Progress/index.js +2 -0
  614. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  615. package/dist/components/Progress/progress.mcp.js +101 -0
  616. package/dist/components/Progress/progress.props.d.ts +79 -0
  617. package/dist/components/Progress/progress.props.js +1 -0
  618. package/dist/components/Progress/progress.theme.d.ts +129 -0
  619. package/dist/components/Progress/progress.theme.js +83 -0
  620. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  621. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  622. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  623. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  624. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  625. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  626. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  627. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  628. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  629. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  630. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  631. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  632. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  633. package/dist/components/RichTextInput/suggestions.js +2 -0
  634. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  635. package/dist/components/ScrollArea/index.d.ts +2 -1
  636. package/dist/components/ScrollArea/index.js +1 -0
  637. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  638. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  639. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  640. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  641. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  642. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  643. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  644. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  645. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  646. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  647. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  648. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  649. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  650. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  651. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  652. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  653. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  654. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  655. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  656. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  657. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  658. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  659. package/dist/components/Sidebar/index.d.ts +1 -0
  660. package/dist/components/Sidebar/index.js +1 -0
  661. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  662. package/dist/components/Sidebar/sidebar-position.js +31 -2
  663. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  664. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  665. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  666. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  667. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  668. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  669. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  670. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  671. package/dist/components/Stepper/Stepper.svelte +2 -0
  672. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  673. package/dist/components/Stepper/stepper.mcp.js +1 -0
  674. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  675. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  676. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  677. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  678. package/dist/components/Tabbar/index.d.ts +1 -1
  679. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  680. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  681. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  682. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  683. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  684. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  685. package/dist/components/Tabs/Tabs.svelte +73 -16
  686. package/dist/components/Tabs/index.d.ts +2 -1
  687. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  688. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  689. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  690. package/dist/components/Tabs/tabs.mcp.js +22 -4
  691. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  692. package/dist/components/Tabs/tabs.theme.js +3 -1
  693. package/dist/components/Theme/Theme.svelte +44 -27
  694. package/dist/components/Theme/helper.d.ts +16 -2
  695. package/dist/components/Theme/helper.js +46 -4
  696. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  697. package/dist/components/Theme/theme.mcp.js +103 -0
  698. package/dist/components/Theme/theme.props.d.ts +16 -0
  699. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  700. package/dist/components/Theme/theme.state.svelte.js +18 -1
  701. package/dist/components/Toast/Toast.svelte +184 -39
  702. package/dist/components/Toast/Toaster.svelte +14 -10
  703. package/dist/components/Toast/index.d.ts +1 -0
  704. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  705. package/dist/components/Toast/toast.mcp.js +47 -6
  706. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  707. package/dist/components/Toast/toast.state.svelte.js +513 -68
  708. package/dist/components/Toast/toast.theme.js +1 -1
  709. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  710. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  711. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  712. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  713. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  714. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  715. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  716. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  720. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  721. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  722. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  723. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  724. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  725. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  726. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  727. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  728. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  729. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  730. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  731. package/dist/components/Tooltip/index.d.ts +1 -0
  732. package/dist/components/Tooltip/index.js +1 -0
  733. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  734. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  735. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  736. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  737. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  738. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  739. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  740. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  741. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  742. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  743. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  744. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  745. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  746. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  747. package/dist/generated/componentAliases.d.ts +3 -0
  748. package/dist/generated/componentAliases.js +3 -0
  749. package/dist/generated/componentContract.d.ts +79 -34
  750. package/dist/generated/componentContract.js +231 -6
  751. package/dist/generated/componentMcpRegistry.js +6 -0
  752. package/dist/i18n/ar.js +107 -3
  753. package/dist/i18n/context.svelte.d.ts +6 -0
  754. package/dist/i18n/context.svelte.js +12 -0
  755. package/dist/i18n/de.js +101 -3
  756. package/dist/i18n/en.d.ts +91 -2
  757. package/dist/i18n/en.js +101 -3
  758. package/dist/i18n/es.js +101 -3
  759. package/dist/i18n/fr.js +101 -3
  760. package/dist/i18n/ja.js +101 -3
  761. package/dist/i18n/pt.js +101 -3
  762. package/dist/i18n/zh.js +101 -3
  763. package/dist/tailwind/geometry.js +7 -0
  764. package/dist/tailwind/global.js +31 -0
  765. package/dist/types/index.d.ts +1 -0
  766. package/dist/types/types.mcp.d.ts +1 -1
  767. package/dist/types/types.mcp.js +23 -0
  768. package/dist/utils/cspNonce.d.ts +16 -0
  769. package/dist/utils/cspNonce.js +39 -0
  770. package/dist/utils/cva/merge.d.ts +5 -1
  771. package/dist/utils/cva/merge.js +6 -4
  772. package/dist/utils/focus.d.ts +34 -0
  773. package/dist/utils/focus.js +93 -0
  774. package/dist/utils/focusHistory.d.ts +21 -0
  775. package/dist/utils/focusHistory.js +99 -0
  776. package/dist/utils/handlers.d.ts +7 -0
  777. package/dist/utils/handlers.js +14 -0
  778. package/dist/utils/hoverIntent.d.ts +42 -0
  779. package/dist/utils/hoverIntent.js +57 -0
  780. package/dist/utils/id.d.ts +7 -0
  781. package/dist/utils/id.js +15 -0
  782. package/dist/utils/layers.svelte.d.ts +32 -4
  783. package/dist/utils/layers.svelte.js +214 -21
  784. package/dist/utils/listFilter.d.ts +44 -0
  785. package/dist/utils/listFilter.js +130 -0
  786. package/dist/utils/match.d.ts +35 -0
  787. package/dist/utils/match.js +36 -0
  788. package/dist/utils/number.d.ts +126 -0
  789. package/dist/utils/number.js +401 -0
  790. package/dist/utils/openChange.d.ts +88 -0
  791. package/dist/utils/openChange.js +71 -0
  792. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  793. package/dist/utils/openLifecycle.svelte.js +134 -0
  794. package/dist/utils/pointerDrag.d.ts +10 -0
  795. package/dist/utils/pointerDrag.js +37 -2
  796. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  797. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  798. package/dist/utils/range.d.ts +62 -0
  799. package/dist/utils/range.js +70 -0
  800. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  801. package/dist/utils/requestNativeSubmit.js +47 -0
  802. package/dist/utils/safeArea.svelte.d.ts +10 -1
  803. package/dist/utils/safeArea.svelte.js +19 -11
  804. package/dist/utils/stateAttributes.d.ts +108 -0
  805. package/dist/utils/stateAttributes.js +78 -0
  806. package/dist/utils/swipeVelocity.d.ts +32 -0
  807. package/dist/utils/swipeVelocity.js +59 -0
  808. package/dist/utils/timer.svelte.d.ts +65 -2
  809. package/dist/utils/timer.svelte.js +159 -25
  810. package/dist/utils/trigger.d.ts +41 -0
  811. package/dist/utils/trigger.js +103 -0
  812. package/dist/utils/typeahead.d.ts +9 -0
  813. package/dist/utils/typeahead.js +21 -9
  814. package/dist/utils/useDndList.svelte.d.ts +1 -1
  815. package/dist/utils/useDndList.svelte.js +6 -23
  816. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  817. package/dist/utils/useFocusScope.svelte.js +189 -27
  818. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  819. package/dist/utils/useHoverAction.svelte.js +161 -51
  820. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  821. package/dist/utils/useKeyDown.svelte.js +19 -12
  822. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  823. package/dist/utils/useListNavigation.svelte.js +261 -35
  824. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  825. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  826. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  827. package/dist/utils/useNavigation.svelte.js +699 -332
  828. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  829. package/dist/utils/usePressAndHold.svelte.js +191 -0
  830. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  831. package/dist/utils/useScrollLock.svelte.js +54 -13
  832. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  833. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  834. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  835. package/dist/utils/useTabBridge.svelte.js +109 -0
  836. package/dist/utils/values.d.ts +15 -0
  837. package/dist/utils/values.js +49 -0
  838. package/package.json +31 -2
  839. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  840. package/dist/utils/useDrag.svelte.d.ts +0 -11
  841. package/dist/utils/useDrag.svelte.js +0 -55
@@ -1,13 +1,24 @@
1
1
  <script lang="ts">
2
+ import { tick, untrack } from 'svelte';
2
3
  import Slot from '../Slot/Slot.svelte';
3
4
  import type { CollapsibleProps } from './collapsible.props.js';
4
5
  import { useCollapsibleMotion, useCollapsibleTheme } from './collapsible.theme.js';
5
- import { slide } from '../../transitions/transition.js';
6
+ import { disclosurePanel } from '../../attachments/disclosurePanel.svelte.js';
6
7
  import { easingBezierStrings } from '../../transitions/easingFunctions.js';
7
8
  import { caretDownIcon } from '../Icons/caretDown.js';
8
9
  import { plusIcon } from '../Icons/plus.js';
9
10
  import { minusIcon } from '../Icons/minus.js';
10
11
  import { createBindableValue } from '../../utils/state.svelte.js';
12
+ import {
13
+ createOpenChangeDetails,
14
+ requestOpenChange,
15
+ type OpenChangeInit
16
+ } from '../../utils/openChange.js';
17
+ import {
18
+ openStateAttributes,
19
+ transitionStatusAttributes,
20
+ type OpenTransitionStatus
21
+ } from '../../utils/stateAttributes.js';
11
22
 
12
23
  let {
13
24
  ref = $bindable(),
@@ -16,13 +27,15 @@
16
27
  open = $bindable(),
17
28
  disabled = false,
18
29
  onOpenChange,
30
+ onAfterOpen,
31
+ onAfterClose,
32
+ hiddenUntilFound = false,
33
+ keepMounted = false,
19
34
  size = 'normal',
20
35
  icon = 'chevron',
21
36
  theme,
22
37
  trigger,
23
38
  children,
24
- accessible,
25
- srOnlyContent,
26
39
  variant = 'default',
27
40
  peekHeight = 80,
28
41
  transition,
@@ -44,14 +57,26 @@
44
57
  // Peek variant: content is always mounted, clipped to `peekHeight` and faded
45
58
  // when closed. `contentHeight` (measured) drives a smooth max-height animation.
46
59
  let contentHeight = $state(0);
60
+ let clipElement = $state<HTMLElement | null>(null);
61
+ let contentElement = $state<HTMLElement | null>(null);
47
62
  const peekHeightCss = $derived(typeof peekHeight === 'number' ? `${peekHeight}px` : peekHeight);
48
63
  const maskGradient = 'linear-gradient(to bottom, rgb(0 0 0) 35%, transparent 100%)';
49
64
 
50
- const handleToggle = () => {
65
+ // The one path to a state change: `onOpenChange` runs first and may cancel.
66
+ function requestChange(next: boolean, init: OpenChangeInit) {
67
+ if (next === isOpen) return;
68
+ const details = createOpenChangeDetails(init);
69
+ if (!requestOpenChange(onOpenChange ?? undefined, next, details)) return;
70
+ openState.value = next;
71
+ }
72
+
73
+ const handleToggle = (event: MouseEvent) => {
51
74
  if (disabled) return;
52
- const newOpen = !isOpen;
53
- openState.value = newOpen;
54
- onOpenChange?.(newOpen);
75
+ requestChange(!isOpen, {
76
+ reason: 'trigger-press',
77
+ event,
78
+ trigger: event.currentTarget as HTMLElement
79
+ });
55
80
  };
56
81
 
57
82
  const classes = $derived(useCollapsibleTheme(theme));
@@ -60,11 +85,79 @@
60
85
 
61
86
  // Motion preset from `collapsibleTheme.motion`, through the override ladder
62
87
  // (registry → `setCollapsibleTheme` → instance `theme.motion` → `transition` prop).
63
- // `slide` is a factory: it captures the theme context at init because Svelte runs
64
- // transition functions outside component initialisation.
65
88
  const resolveMotion = useCollapsibleMotion();
66
- const slideTransition = slide();
67
89
  const contentMotion = $derived(resolveMotion({ variant }, { motion: theme?.motion, transition }));
90
+
91
+ // Default variant: the panel's `hidden` state, height animation, find-in-page reveal and the
92
+ // completion callbacks come from the shared disclosure panel.
93
+ const panel = disclosurePanel({
94
+ open: () => isOpen,
95
+ // A disabled collapsible cannot be toggled, so it is not findable: its closed content stays
96
+ // under plain `hidden`.
97
+ hiddenUntilFound: () => hiddenUntilFound && !disabled,
98
+ keepMounted: () => keepMounted || (hiddenUntilFound && disabled),
99
+ motion: () => contentMotion,
100
+ onBeforeMatch: (event) => {
101
+ if (!disabled) requestChange(true, { reason: 'find-in-page', event });
102
+ },
103
+ // The peek variant renders no panel: it reports its own completion below.
104
+ onAfterOpen: () => variant !== 'peek' && onAfterOpen?.(),
105
+ onAfterClose: () => variant !== 'peek' && onAfterClose?.()
106
+ });
107
+
108
+ // Peek variant: the clip animates its max-height with a CSS transition, so completion is
109
+ // the end of whatever animations that left running (none under reduced motion).
110
+ let peekStatus = $state<OpenTransitionStatus>(untrack(() => (isOpen ? 'open' : 'closed')));
111
+ let peekDirection = untrack(() => isOpen);
112
+ let peekPhase = 0;
113
+
114
+ $effect(() => {
115
+ const next = isOpen;
116
+ untrack(() => {
117
+ if (next === peekDirection) return;
118
+ peekDirection = next;
119
+ if (variant !== 'peek') return;
120
+ const phase = ++peekPhase;
121
+ peekStatus = next ? 'entering' : 'exiting';
122
+ void settlePeek(phase, next);
123
+ });
124
+ });
125
+
126
+ async function settlePeek(phase: number, next: boolean) {
127
+ await tick();
128
+ const animations = clipElement?.getAnimations?.() ?? [];
129
+ if (animations.length > 0) await Promise.allSettled(animations.map((a) => a.finished));
130
+ if (phase !== peekPhase) return;
131
+ peekStatus = next ? 'open' : 'closed';
132
+ if (next) onAfterOpen?.();
133
+ else onAfterClose?.();
134
+ }
135
+
136
+ // Closed peek content is clipped, not removed: controls below the visible preview would stay
137
+ // tabbable while invisible, so they are inert until the content opens.
138
+ const FOCUSABLE =
139
+ 'a[href],area[href],button,input,select,textarea,summary,iframe,[tabindex],[contenteditable]:not([contenteditable="false"]),audio[controls],video[controls]';
140
+
141
+ $effect(() => {
142
+ if (variant !== 'peek' || peekStatus !== 'closed') return;
143
+ // Re-run when the content or the preview height changes.
144
+ void contentHeight;
145
+ void peekHeightCss;
146
+ const clip = clipElement;
147
+ const content = contentElement;
148
+ if (!clip || !content) return;
149
+ const inerted: Element[] = [];
150
+ const limit = clip.getBoundingClientRect().bottom;
151
+ for (const element of content.querySelectorAll(FOCUSABLE)) {
152
+ if (element.hasAttribute('inert')) continue;
153
+ if (element.getBoundingClientRect().top < limit) continue;
154
+ element.setAttribute('inert', '');
155
+ inerted.push(element);
156
+ }
157
+ return () => {
158
+ for (const element of inerted) element.removeAttribute('inert');
159
+ };
160
+ });
68
161
  </script>
69
162
 
70
163
  {#snippet triggerIcon()}
@@ -88,11 +181,14 @@
88
181
  data-disabled={disabled ? '' : undefined}
89
182
  data-size={size}
90
183
  data-variant="peek"
184
+ {...openStateAttributes(isOpen)}
185
+ {...transitionStatusAttributes(peekStatus)}
91
186
  class={classes.root({ size, className })}
92
187
  {...attachments}
93
188
  >
94
189
  <div class="relative">
95
190
  <div
191
+ bind:this={clipElement}
96
192
  id={contentId}
97
193
  class="overflow-hidden transition-[max-height]"
98
194
  style:transition-duration={`${contentMotion.in.duration ?? 0}ms`}
@@ -103,7 +199,7 @@
103
199
  style:-webkit-mask-image={isOpen ? undefined : maskGradient}
104
200
  style:mask-image={isOpen ? undefined : maskGradient}
105
201
  >
106
- <div bind:clientHeight={contentHeight} class="pb-12">
202
+ <div bind:this={contentElement} bind:clientHeight={contentHeight} class="pb-12">
107
203
  <Slot payload={{ open: isOpen }} render={children} />
108
204
  </div>
109
205
  </div>
@@ -114,6 +210,7 @@
114
210
  aria-controls={contentId}
115
211
  data-state={collapsibleState}
116
212
  data-disabled={disabled ? '' : undefined}
213
+ {...openStateAttributes(isOpen)}
117
214
  {disabled}
118
215
  class="state-layer bg-surface text-neutral/80 raised-1 pointer-events-auto inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-sm font-medium transition disabled:cursor-not-allowed disabled:opacity-50"
119
216
  onclick={handleToggle}
@@ -130,15 +227,18 @@
130
227
  data-state={collapsibleState}
131
228
  data-disabled={disabled ? '' : undefined}
132
229
  data-size={size}
230
+ {...openStateAttributes(isOpen)}
231
+ {...transitionStatusAttributes(panel.status)}
133
232
  class={classes.root({ size, className })}
134
233
  {...attachments}
135
234
  >
136
235
  <button
137
236
  type="button"
138
237
  aria-expanded={isOpen}
139
- aria-controls={contentId}
238
+ aria-controls={panel.rendered ? contentId : undefined}
140
239
  data-state={collapsibleState}
141
240
  data-disabled={disabled ? '' : undefined}
241
+ {...openStateAttributes(isOpen)}
142
242
  {disabled}
143
243
  class={classes.trigger({ size, disabled })}
144
244
  onclick={handleToggle}
@@ -147,19 +247,25 @@
147
247
  {@render triggerIcon()}
148
248
  </button>
149
249
 
150
- {#if isOpen}
250
+ {#if panel.rendered}
251
+ <!-- The panel stays bare: while it hides until found, only its content is skipped, so
252
+ the padding, gap and margin of the content slot live on the element inside. -->
151
253
  <div
152
254
  id={contentId}
153
255
  data-state={collapsibleState}
154
256
  data-disabled={disabled ? '' : undefined}
155
- class={classes.content({ size })}
156
- in:slideTransition={contentMotion.in}
157
- out:slideTransition={contentMotion.out}
257
+ {...panel.attributes}
258
+ {@attach panel.attach}
158
259
  >
159
- <Slot payload={{ open: isOpen }} render={children} />
260
+ <div
261
+ data-state={collapsibleState}
262
+ data-disabled={disabled ? '' : undefined}
263
+ {...openStateAttributes(isOpen)}
264
+ class={classes.content({ size })}
265
+ >
266
+ <Slot payload={{ open: isOpen }} render={children} />
267
+ </div>
160
268
  </div>
161
- {:else if accessible || srOnlyContent}
162
- <Slot render={srOnlyContent || children} payload={{ open: isOpen }} />
163
269
  {/if}
164
270
  </div>
165
271
  {/if}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The styling hooks a Collapsible exposes. Attributes are presence attributes (`''` while the
3
+ * state holds, omitted otherwise) unless the description says they carry a value.
4
+ */
5
+ export declare const collapsibleDataAttributes: {
6
+ readonly 'data-open': "On the root, the trigger, the panel and the content: present while open.";
7
+ readonly 'data-closed': "On the root, the trigger, the panel and the content: present while closed, including during the exit transition.";
8
+ readonly 'data-entering': "On the root and the panel (`variant=\"peek\"` has no separate panel): present while the opening animation plays.";
9
+ readonly 'data-exiting': "On the root and the panel (`variant=\"peek\"` has no separate panel): present while the closing animation plays.";
10
+ readonly 'data-disabled': "On the root, the trigger, the panel and the content: present while `disabled`.";
11
+ readonly 'data-state': "On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).";
12
+ readonly 'data-size': "On the root: the resolved `size`.";
13
+ readonly 'data-variant': "On the root: `peek` with `variant=\"peek\"`.";
14
+ };
15
+ /** The name of a Collapsible data attribute. */
16
+ export type CollapsibleDataAttribute = keyof typeof collapsibleDataAttributes;
17
+ export declare const collapsibleCssVariables: {
18
+ readonly '--disclosure-panel-height': "On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.";
19
+ };
20
+ /** The name of a Collapsible CSS variable. */
21
+ export type CollapsibleCssVariable = keyof typeof collapsibleCssVariables;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The styling hooks a Collapsible exposes. Attributes are presence attributes (`''` while the
3
+ * state holds, omitted otherwise) unless the description says they carry a value.
4
+ */
5
+ export const collapsibleDataAttributes = {
6
+ 'data-open': 'On the root, the trigger, the panel and the content: present while open.',
7
+ 'data-closed': 'On the root, the trigger, the panel and the content: present while closed, including during the exit transition.',
8
+ 'data-entering': 'On the root and the panel (`variant="peek"` has no separate panel): present while the opening animation plays.',
9
+ 'data-exiting': 'On the root and the panel (`variant="peek"` has no separate panel): present while the closing animation plays.',
10
+ 'data-disabled': 'On the root, the trigger, the panel and the content: present while `disabled`.',
11
+ 'data-state': 'On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).',
12
+ 'data-size': 'On the root: the resolved `size`.',
13
+ 'data-variant': 'On the root: `peek` with `variant="peek"`.'
14
+ };
15
+ export const collapsibleCssVariables = {
16
+ '--disclosure-panel-height': 'On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.'
17
+ };
@@ -1 +1 @@
1
- export declare const collapsibleDescription = "\n# Collapsible Component\n\nThe Collapsible component provides a way to show and hide content with a toggle trigger. It supports both controlled and uncontrolled modes, keyboard navigation, and smooth slide transitions.\n\n## Basic Usage\n\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tClick to expand\n\t{/snippet}\n\tThis content will be shown when expanded.\n</Collapsible>\n```\n\n## Props\n\n### Core Props\n- **open**: boolean (optional)\n - Current bindable disclosure state.\n\n- **defaultOpen**: boolean (default: false)\n - Initial open state when `open` is omitted.\n - Ignored when `open` prop is provided.\n\n- **disabled**: boolean (default: false)\n - Disables the collapsible trigger and prevents toggling.\n - Applies opacity styling and removes pointer events.\n\n- **onOpenChange**: (open: boolean) => void (optional)\n - Callback fired once after a component-owned open state change.\n - Receives the new open state as parameter.\n\n### Layout Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n - Controls padding and text size of trigger and content.\n - small: Reduced padding (py-2 px-2) and text-sm\n - normal: Standard padding (py-3 px-4) and text-base\n - large: Increased padding (py-4 px-6) and text-lg\n\n- **icon**: 'chevron' | 'plus-minus' | 'none' | Snippet (default: 'chevron')\n - Disclosure indicator rendered in the trigger.\n - chevron: rotating chevron; plus-minus: plus/minus glyph; none: no indicator.\n - Pass a snippet (it receives `{ open }`) for a custom icon.\n\n### Content Props (Slots)\n- **trigger**: Snippet - Content rendered in the toggle button\n - Required for the component to function\n - Typically contains text, icons, or both\n\n- **children**: Snippet<{ open: boolean }> - Content shown when expanded\n - Rendered inside the content container with a slide transition\n - Receives the current `open` state as a payload\n\n### Advanced Props\n- **theme**: CollapsibleThemeProps - Theme configuration overrides\n - Allows customizing styles for container, trigger, and content parts\n\n## Examples\n\n### Example 1 - Uncontrolled\n```svelte\n<script lang=\"ts\">\n\timport { Collapsible } from 'entasis/collapsible';\n\timport { caretDownIcon } from 'entasis/icons/caretDown';\n</script>\n\n<Collapsible defaultOpen={false} icon=\"none\">\n\t{#snippet trigger()}\n\t\t<span>Toggle Content</span>\n\t\t{@render caretDownIcon()}\n\t{/snippet}\n\t<p>This content can be toggled.</p>\n</Collapsible>\n```\n\n### Example 2 - Controlled\n```svelte\n<script>\n\tlet open = false;\n</script>\n\n<Collapsible bind:open={open} onOpenChange={(open) => console.log('State:', open)}>\n\t{#snippet trigger()}\n\t\tToggle (Currently: {open ? 'Open' : 'Closed'})\n\t{/snippet}\n\t<p>Controlled content</p>\n</Collapsible>\n```\n\n### Example 3 - Explicit Children Snippet\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tShow Details\n\t{/snippet}\n\t{#snippet children({ open })}\n\t\t<p>This panel is {open ? 'open' : 'closed'}.</p>\n\t\t<ul>\n\t\t\t<li>Item 1</li>\n\t\t\t<li>Item 2</li>\n\t\t</ul>\n\t{/snippet}\n</Collapsible>\n```\n\n### Example 4 - Disabled State\n```svelte\n<Collapsible disabled={true}>\n\t{#snippet trigger()}\n\t\tDisabled Collapsible\n\t{/snippet}\n\tThis content cannot be toggled.\n</Collapsible>\n```\n\n### Example 5 - Different Sizes\n```svelte\n<Collapsible size=\"small\">\n\t{#snippet trigger()}\n\t\tSmall Collapsible\n\t{/snippet}\n\tSmall content\n</Collapsible>\n\n<Collapsible size=\"large\">\n\t{#snippet trigger()}\n\t\tLarge Collapsible\n\t{/snippet}\n\tLarge content\n</Collapsible>\n```\n\n## Structure\n\nThe component renders:\n- A container `<div>` with data attributes for state\n- A trigger `<button>` with ARIA attributes\n- A content `<div>` with slide transition (only when open)\n\n## Accessibility\n\n- **ARIA Attributes**:\n - `aria-expanded` on trigger indicates open/closed state\n - `aria-controls` links trigger to content element\n - `data-state` attribute provides state information for styling\n\n- **Keyboard Support**:\n - **Enter** or **Space**: Toggles the collapsible\n - Focus management handled by browser default behavior\n\n- **Semantic HTML**:\n - Uses `<button>` element for trigger (proper focus and keyboard handling)\n - Content is hidden from accessibility tree when closed\n\n## Notes\n\n- The component uses Svelte's built-in `slide` transition with a 200ms duration.\n- When `open` prop is provided, the component is controlled. Otherwise, it manages its own state.\n- Content is completely removed from DOM when closed (not just hidden) for better performance.\n\n## Theme Customization\n\nThe Collapsible component uses a theme object that can be customized using the `theme` prop or by setting a global theme.\n\n### Theme Structure\n\nThe theme object contains the following parts:\n- **root**: Main collapsible container styles\n- **trigger**: Toggle trigger button styles\n- **content**: Collapsible content panel styles\n- **icon**: Expand/collapse icon styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for main container\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container size\n\n**trigger**:\n- base: Base classes for trigger button\n- Variants:\n - size: 'small' | 'normal' | 'large' - Trigger padding and text size\n - disabled: boolean - Disabled state styling\n\n**content**:\n- base: Base classes for content panel\n- Variants:\n - size: 'small' | 'normal' | 'large' - Content gap and text size\n\n**icon**:\n- base: Base classes for expand/collapse icon\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Collapsible \n theme={{\n root: {\n base: 'w-full'\n },\n trigger: {\n base: 'flex items-center justify-between w-full',\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n {#snippet trigger()}\n Toggle\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Custom Trigger Styling**:\n```svelte\n<Collapsible \n theme={{\n trigger: {\n base: 'state-layer rounded-lg transition-colors',\n size: {\n large: 'px-6 py-4 text-lg'\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed'\n }\n },\n icon: {\n size: {\n normal: 'size-5'\n }\n }\n }}\n>\n {#snippet trigger()}\n Custom Trigger\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setCollapsibleTheme } from './index.ts';\n \n setCollapsibleTheme({\n root: {\n base: 'w-full flex flex-col'\n },\n trigger: {\n base: 'transition-all hover:opacity-80',\n size: {\n normal: 'px-2 py-2 text-sm'\n }\n },\n content: {\n size: {\n normal: 'gap-2 mt-2'\n }\n }\n });\n</script>\n```\n\n## Motion\n\n- **motion** theme slot, keyed by `variant`: `default` slides the content open on the y axis,\n `peek` animates its clip height on `slow` / `enter`.\n- Ladder: `<Theme components={{ collapsible: { motion } }}>` \u2192 `setCollapsibleTheme({ motion })`\n \u2192 `theme.motion` \u2192 the `transition` prop. Reduced motion collapses it to 0.\n";
1
+ export declare const collapsibleDescription = "\n# Collapsible Component\n\nThe Collapsible component provides a way to show and hide content with a toggle trigger. It supports both controlled and uncontrolled modes, keyboard navigation, and smooth slide transitions.\n\n## Basic Usage\n\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tClick to expand\n\t{/snippet}\n\tThis content will be shown when expanded.\n</Collapsible>\n```\n\n## Props\n\n### Core Props\n- **open**: boolean (optional)\n - Current bindable disclosure state.\n\n- **defaultOpen**: boolean (default: false)\n - Initial open state when `open` is omitted.\n - Ignored when `open` prop is provided.\n\n- **disabled**: boolean (default: false)\n - Disables the collapsible trigger and prevents toggling.\n - Applies opacity styling and removes pointer events.\n\n- **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void (optional)\n - Called before a component-owned open state change: a trigger press or the browser's find-in-page.\n - `open` is the requested state. `details.reason` is `'trigger-press'` or `'find-in-page'`, `details.event` carries the DOM event, and `details.cancel()` keeps the collapsible as it was. See `entasis/types` for `OpenChangeDetails`.\n - Not called for initialization or for changes the parent assigns to `open`.\n\n- **onAfterOpen** / **onAfterClose**: () => void (optional)\n - Called once each time an open or close finishes: after the slide, or at once when no animation plays (reduced motion, zero duration, find-in-page), also when the panel is removed mid-close. Not called for the initial state.\n\n- **hiddenUntilFound**: boolean (default: false)\n - Keeps the closed content in the DOM under `hidden=\"until-found\"`, so the browser's find-in-page, text fragments and `#id` links reach it and open the collapsible (reason `find-in-page`, no animation).\n - Closed content stays out of the accessibility tree and the tab order until then. Cancelling the open-change leaves it closed and findable.\n - A disabled collapsible is not findable: its closed content stays under plain `hidden`.\n - Only the content is skipped while closed, so keep padding, gaps and margins on an element inside the panel (the `content` theme slot already is).\n\n- **keepMounted**: boolean (default: false)\n - Keeps the closed content mounted under `hidden`, preserving its state (form values, scroll, media). Not findable by the browser.\n\n### Layout Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n - Controls padding and text size of trigger and content.\n - small: Reduced padding (py-2 px-2) and text-sm\n - normal: Standard padding (py-3 px-4) and text-base\n - large: Increased padding (py-4 px-6) and text-lg\n\n- **icon**: 'chevron' | 'plus-minus' | 'none' | Snippet (default: 'chevron')\n - Disclosure indicator rendered in the trigger.\n - chevron: rotating chevron; plus-minus: plus/minus glyph; none: no indicator.\n - Pass a snippet (it receives `{ open }`) for a custom icon.\n\n### Content Props (Slots)\n- **trigger**: Snippet - Content rendered in the toggle button\n - Required for the component to function\n - Typically contains text, icons, or both\n\n- **children**: Snippet<{ open: boolean }> - Content shown when expanded\n - Rendered inside the content container, animated by height\n - Receives the current `open` state as a payload\n\n### Advanced Props\n- **theme**: CollapsibleThemeProps - Theme configuration overrides\n - Allows customizing styles for container, trigger, and content parts\n\n- **variant**: 'default' | 'peek' (default: 'default')\n - `peek` keeps the content mounted, clips it to `peekHeight` and fades the edge while closed. While closed, links and controls below the visible preview are inert so Tab never lands on clipped content. The clipped text itself stays in the accessibility tree (the clip is visual only, like a read-more preview), so screen readers read all of it. `hiddenUntilFound` and `keepMounted` apply to `default` only.\n\n## Examples\n\n### Example 1 - Uncontrolled\n```svelte\n<script lang=\"ts\">\n\timport { Collapsible } from 'entasis/collapsible';\n\timport { caretDownIcon } from 'entasis/icons/caretDown';\n</script>\n\n<Collapsible defaultOpen={false} icon=\"none\">\n\t{#snippet trigger()}\n\t\t<span>Toggle Content</span>\n\t\t{@render caretDownIcon()}\n\t{/snippet}\n\t<p>This content can be toggled.</p>\n</Collapsible>\n```\n\n### Example 2 - Controlled\n```svelte\n<script>\n\tlet open = false;\n</script>\n\n<Collapsible bind:open={open} onOpenChange={(open) => console.log('State:', open)}>\n\t{#snippet trigger()}\n\t\tToggle (Currently: {open ? 'Open' : 'Closed'})\n\t{/snippet}\n\t<p>Controlled content</p>\n</Collapsible>\n```\n\n### Example 3 - Explicit Children Snippet\n```svelte\n<Collapsible>\n\t{#snippet trigger()}\n\t\tShow Details\n\t{/snippet}\n\t{#snippet children({ open })}\n\t\t<p>This panel is {open ? 'open' : 'closed'}.</p>\n\t\t<ul>\n\t\t\t<li>Item 1</li>\n\t\t\t<li>Item 2</li>\n\t\t</ul>\n\t{/snippet}\n</Collapsible>\n```\n\n### Example 4 - Disabled State\n```svelte\n<Collapsible disabled={true}>\n\t{#snippet trigger()}\n\t\tDisabled Collapsible\n\t{/snippet}\n\tThis content cannot be toggled.\n</Collapsible>\n```\n\n### Example 5 - Different Sizes\n```svelte\n<Collapsible size=\"small\">\n\t{#snippet trigger()}\n\t\tSmall Collapsible\n\t{/snippet}\n\tSmall content\n</Collapsible>\n\n<Collapsible size=\"large\">\n\t{#snippet trigger()}\n\t\tLarge Collapsible\n\t{/snippet}\n\tLarge content\n</Collapsible>\n```\n\n### Example 6 - Find in page\n```svelte\n<!-- Ctrl+F for \"refund window\" opens the collapsible; onOpenChange reports reason 'find-in-page'. -->\n<Collapsible hiddenUntilFound onOpenChange={(open, details) => console.log(open, details.reason)}>\n\t{#snippet trigger()}\n\t\tRefund policy\n\t{/snippet}\n\t<p>The refund window is 30 days.</p>\n</Collapsible>\n```\n\n## Structure\n\nThe component renders:\n- A container `<div>` with data attributes for state\n- A trigger `<button>` with ARIA attributes\n- A content panel `<div>` (only when open, or while closed with `keepMounted` / `hiddenUntilFound`) holding the themed content `<div>`; it carries `hidden` or `hidden=\"until-found\"` while closed\n- Styling hooks: `data-open` / `data-closed` on the root, trigger and content, `data-disabled`, and `data-entering` / `data-exiting` on the root and panel; the panel exposes `--disclosure-panel-height` while it animates\n\n## Styling hooks\n\nEvery part carries the open state, so a `data-open:` variant styles it without reading component state.\n\nAttributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.\n\n**Data attributes**\n- `data-open`: On the root, the trigger, the panel and the content: present while open.\n- `data-closed`: On the root, the trigger, the panel and the content: present while closed, including during the exit transition.\n- `data-entering`: On the root and the panel (`variant=\"peek\"` has no separate panel): present while the opening animation plays.\n- `data-exiting`: On the root and the panel (`variant=\"peek\"` has no separate panel): present while the closing animation plays.\n- `data-disabled`: On the root, the trigger, the panel and the content: present while `disabled`.\n- `data-state`: On the root, the trigger, the panel and the content: `open` or `closed` (kept for compatibility; prefer `data-open` / `data-closed`).\n- `data-size`: On the root: the resolved `size`.\n- `data-variant`: On the root: `peek` with `variant=\"peek\"`.\n\n**CSS variables**\n- `--disclosure-panel-height`: On the panel: its measured height in px while it animates, `auto` once open and `0px` once closed.\n\nThe typed maps `collapsibleDataAttributes` and `collapsibleCssVariables` (from `entasis/collapsible`) list each name with its meaning.\n\n## Accessibility\n\n- **ARIA Attributes**:\n - `aria-expanded` on trigger indicates open/closed state\n - `aria-controls` links trigger to the content element while it exists in the DOM\n - `data-state` attribute provides state information for styling\n\n- **Keyboard Support**:\n - **Enter** or **Space**: Toggles the collapsible\n - Focus management handled by browser default behavior\n\n- **Semantic HTML**:\n - Uses `<button>` element for trigger (proper focus and keyboard handling)\n - Closed content is not in the DOM (or is `hidden` / `hidden=\"until-found\"`), so it is neither read nor tabbable\n\n## Notes\n\n- The panel animates its height with the theme's `motion` slot (`duration`, `delay`, `easing`); reduced motion disables it.\n- Migration: the `accessible` and `srOnlyContent` props are removed. They rendered the closed content visibly; use `hiddenUntilFound` or `keepMounted` instead.\n- When `open` prop is provided, the component is controlled. Otherwise, it manages its own state.\n- Content is removed from the DOM when closed unless `keepMounted` or `hiddenUntilFound` is set.\n\n## Theme Customization\n\nThe Collapsible component uses a theme object that can be customized using the `theme` prop or by setting a global theme.\n\n### Theme Structure\n\nThe theme object contains the following parts:\n- **root**: Main collapsible container styles\n- **trigger**: Toggle trigger button styles\n- **content**: Collapsible content styles, on the element inside the panel\n- **icon**: Expand/collapse icon styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for main container\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container size\n\n**trigger**:\n- base: Base classes for trigger button\n- Variants:\n - size: 'small' | 'normal' | 'large' - Trigger padding and text size\n - disabled: boolean - Disabled state styling\n\n**content**:\n- base: Base classes for content panel\n- Variants:\n - size: 'small' | 'normal' | 'large' - Content gap and text size\n\n**icon**:\n- base: Base classes for expand/collapse icon\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Collapsible \n theme={{\n root: {\n base: 'w-full'\n },\n trigger: {\n base: 'flex items-center justify-between w-full',\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n {#snippet trigger()}\n Toggle\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Custom Trigger Styling**:\n```svelte\n<Collapsible \n theme={{\n trigger: {\n base: 'state-layer rounded-lg transition-colors',\n size: {\n large: 'px-6 py-4 text-lg'\n },\n disabled: {\n true: 'opacity-50 cursor-not-allowed'\n }\n },\n icon: {\n size: {\n normal: 'size-5'\n }\n }\n }}\n>\n {#snippet trigger()}\n Custom Trigger\n {/snippet}\n Content\n</Collapsible>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setCollapsibleTheme } from './index.ts';\n \n setCollapsibleTheme({\n root: {\n base: 'w-full flex flex-col'\n },\n trigger: {\n base: 'transition-all hover:opacity-80',\n size: {\n normal: 'px-2 py-2 text-sm'\n }\n },\n content: {\n size: {\n normal: 'gap-2 mt-2'\n }\n }\n });\n</script>\n```\n\n## Motion\n\n- **motion** theme slot, keyed by `variant`: `default` animates the panel's height with the\n preset's `duration` / `delay` / `easing`, `peek` animates its clip height on `slow` / `enter`.\n- Ladder: `<Theme components={{ collapsible: { motion } }}>` \u2192 `setCollapsibleTheme({ motion })`\n \u2192 `theme.motion` \u2192 the `transition` prop. Reduced motion collapses it to 0.\n";
@@ -28,9 +28,22 @@ The Collapsible component provides a way to show and hide content with a toggle
28
28
  - Disables the collapsible trigger and prevents toggling.
29
29
  - Applies opacity styling and removes pointer events.
30
30
 
31
- - **onOpenChange**: (open: boolean) => void (optional)
32
- - Callback fired once after a component-owned open state change.
33
- - Receives the new open state as parameter.
31
+ - **onOpenChange**: (open: boolean, details: OpenChangeDetails) => void (optional)
32
+ - Called before a component-owned open state change: a trigger press or the browser's find-in-page.
33
+ - \`open\` is the requested state. \`details.reason\` is \`'trigger-press'\` or \`'find-in-page'\`, \`details.event\` carries the DOM event, and \`details.cancel()\` keeps the collapsible as it was. See \`entasis/types\` for \`OpenChangeDetails\`.
34
+ - Not called for initialization or for changes the parent assigns to \`open\`.
35
+
36
+ - **onAfterOpen** / **onAfterClose**: () => void (optional)
37
+ - Called once each time an open or close finishes: after the slide, or at once when no animation plays (reduced motion, zero duration, find-in-page), also when the panel is removed mid-close. Not called for the initial state.
38
+
39
+ - **hiddenUntilFound**: boolean (default: false)
40
+ - Keeps the closed content in the DOM under \`hidden="until-found"\`, so the browser's find-in-page, text fragments and \`#id\` links reach it and open the collapsible (reason \`find-in-page\`, no animation).
41
+ - Closed content stays out of the accessibility tree and the tab order until then. Cancelling the open-change leaves it closed and findable.
42
+ - A disabled collapsible is not findable: its closed content stays under plain \`hidden\`.
43
+ - Only the content is skipped while closed, so keep padding, gaps and margins on an element inside the panel (the \`content\` theme slot already is).
44
+
45
+ - **keepMounted**: boolean (default: false)
46
+ - Keeps the closed content mounted under \`hidden\`, preserving its state (form values, scroll, media). Not findable by the browser.
34
47
 
35
48
  ### Layout Props
36
49
  - **size**: 'small' | 'normal' | 'large' (default: 'normal')
@@ -50,13 +63,16 @@ The Collapsible component provides a way to show and hide content with a toggle
50
63
  - Typically contains text, icons, or both
51
64
 
52
65
  - **children**: Snippet<{ open: boolean }> - Content shown when expanded
53
- - Rendered inside the content container with a slide transition
66
+ - Rendered inside the content container, animated by height
54
67
  - Receives the current \`open\` state as a payload
55
68
 
56
69
  ### Advanced Props
57
70
  - **theme**: CollapsibleThemeProps - Theme configuration overrides
58
71
  - Allows customizing styles for container, trigger, and content parts
59
72
 
73
+ - **variant**: 'default' | 'peek' (default: 'default')
74
+ - \`peek\` keeps the content mounted, clips it to \`peekHeight\` and fades the edge while closed. While closed, links and controls below the visible preview are inert so Tab never lands on clipped content. The clipped text itself stays in the accessibility tree (the clip is visual only, like a read-more preview), so screen readers read all of it. \`hiddenUntilFound\` and \`keepMounted\` apply to \`default\` only.
75
+
60
76
  ## Examples
61
77
 
62
78
  ### Example 1 - Uncontrolled
@@ -132,18 +148,51 @@ The Collapsible component provides a way to show and hide content with a toggle
132
148
  </Collapsible>
133
149
  \`\`\`
134
150
 
151
+ ### Example 6 - Find in page
152
+ \`\`\`svelte
153
+ <!-- Ctrl+F for "refund window" opens the collapsible; onOpenChange reports reason 'find-in-page'. -->
154
+ <Collapsible hiddenUntilFound onOpenChange={(open, details) => console.log(open, details.reason)}>
155
+ {#snippet trigger()}
156
+ Refund policy
157
+ {/snippet}
158
+ <p>The refund window is 30 days.</p>
159
+ </Collapsible>
160
+ \`\`\`
161
+
135
162
  ## Structure
136
163
 
137
164
  The component renders:
138
165
  - A container \`<div>\` with data attributes for state
139
166
  - A trigger \`<button>\` with ARIA attributes
140
- - A content \`<div>\` with slide transition (only when open)
167
+ - A content panel \`<div>\` (only when open, or while closed with \`keepMounted\` / \`hiddenUntilFound\`) holding the themed content \`<div>\`; it carries \`hidden\` or \`hidden="until-found"\` while closed
168
+ - Styling hooks: \`data-open\` / \`data-closed\` on the root, trigger and content, \`data-disabled\`, and \`data-entering\` / \`data-exiting\` on the root and panel; the panel exposes \`--disclosure-panel-height\` while it animates
169
+
170
+ ## Styling hooks
171
+
172
+ Every part carries the open state, so a \`data-open:\` variant styles it without reading component state.
173
+
174
+ Attributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.
175
+
176
+ **Data attributes**
177
+ - \`data-open\`: On the root, the trigger, the panel and the content: present while open.
178
+ - \`data-closed\`: On the root, the trigger, the panel and the content: present while closed, including during the exit transition.
179
+ - \`data-entering\`: On the root and the panel (\`variant="peek"\` has no separate panel): present while the opening animation plays.
180
+ - \`data-exiting\`: On the root and the panel (\`variant="peek"\` has no separate panel): present while the closing animation plays.
181
+ - \`data-disabled\`: On the root, the trigger, the panel and the content: present while \`disabled\`.
182
+ - \`data-state\`: On the root, the trigger, the panel and the content: \`open\` or \`closed\` (kept for compatibility; prefer \`data-open\` / \`data-closed\`).
183
+ - \`data-size\`: On the root: the resolved \`size\`.
184
+ - \`data-variant\`: On the root: \`peek\` with \`variant="peek"\`.
185
+
186
+ **CSS variables**
187
+ - \`--disclosure-panel-height\`: On the panel: its measured height in px while it animates, \`auto\` once open and \`0px\` once closed.
188
+
189
+ The typed maps \`collapsibleDataAttributes\` and \`collapsibleCssVariables\` (from \`entasis/collapsible\`) list each name with its meaning.
141
190
 
142
191
  ## Accessibility
143
192
 
144
193
  - **ARIA Attributes**:
145
194
  - \`aria-expanded\` on trigger indicates open/closed state
146
- - \`aria-controls\` links trigger to content element
195
+ - \`aria-controls\` links trigger to the content element while it exists in the DOM
147
196
  - \`data-state\` attribute provides state information for styling
148
197
 
149
198
  - **Keyboard Support**:
@@ -152,13 +201,14 @@ The component renders:
152
201
 
153
202
  - **Semantic HTML**:
154
203
  - Uses \`<button>\` element for trigger (proper focus and keyboard handling)
155
- - Content is hidden from accessibility tree when closed
204
+ - Closed content is not in the DOM (or is \`hidden\` / \`hidden="until-found"\`), so it is neither read nor tabbable
156
205
 
157
206
  ## Notes
158
207
 
159
- - The component uses Svelte's built-in \`slide\` transition with a 200ms duration.
208
+ - The panel animates its height with the theme's \`motion\` slot (\`duration\`, \`delay\`, \`easing\`); reduced motion disables it.
209
+ - Migration: the \`accessible\` and \`srOnlyContent\` props are removed. They rendered the closed content visibly; use \`hiddenUntilFound\` or \`keepMounted\` instead.
160
210
  - When \`open\` prop is provided, the component is controlled. Otherwise, it manages its own state.
161
- - Content is completely removed from DOM when closed (not just hidden) for better performance.
211
+ - Content is removed from the DOM when closed unless \`keepMounted\` or \`hiddenUntilFound\` is set.
162
212
 
163
213
  ## Theme Customization
164
214
 
@@ -169,7 +219,7 @@ The Collapsible component uses a theme object that can be customized using the \
169
219
  The theme object contains the following parts:
170
220
  - **root**: Main collapsible container styles
171
221
  - **trigger**: Toggle trigger button styles
172
- - **content**: Collapsible content panel styles
222
+ - **content**: Collapsible content styles, on the element inside the panel
173
223
  - **icon**: Expand/collapse icon styles
174
224
 
175
225
  ### Available Variants
@@ -272,8 +322,8 @@ The theme object contains the following parts:
272
322
 
273
323
  ## Motion
274
324
 
275
- - **motion** theme slot, keyed by \`variant\`: \`default\` slides the content open on the y axis,
276
- \`peek\` animates its clip height on \`slow\` / \`enter\`.
325
+ - **motion** theme slot, keyed by \`variant\`: \`default\` animates the panel's height with the
326
+ preset's \`duration\` / \`delay\` / \`easing\`, \`peek\` animates its clip height on \`slow\` / \`enter\`.
277
327
  - Ladder: \`<Theme components={{ collapsible: { motion } }}>\` → \`setCollapsibleTheme({ motion })\`
278
328
  → \`theme.motion\` → the \`transition\` prop. Reduced motion collapses it to 0.
279
329
  `;
@@ -3,6 +3,7 @@ import type { ResponsiveProps } from '../Theme/theme.js';
3
3
  import type { FSOProps } from '../../transitions/transition.js';
4
4
  import type { WithSlot, Slot } from '../Slot/slot.js';
5
5
  import type { WithAttachments } from '../../types/props.js';
6
+ import type { OpenChangeHandler } from '../../utils/openChange.js';
6
7
  import type { CollapsibleThemeProps } from './collapsible.theme.js';
7
8
  type CollapsibleBaseProps = {
8
9
  /**
@@ -26,9 +27,40 @@ type CollapsibleBaseProps = {
26
27
  */
27
28
  disabled?: boolean;
28
29
  /**
29
- * Callback fired when the open state changes.
30
+ * Called before the open state changes, whenever the user (a trigger press, or the browser's
31
+ * find-in-page reaching hidden content) or an imperative call asks to open or close it.
32
+ * `details.reason` says why, `details.event` carries the DOM event, and `details.cancel()`
33
+ * keeps the collapsible as it was. Inside the callback `open` still holds the previous state.
34
+ * Not called for initialization or for changes the parent assigns to `open`.
30
35
  */
31
- onOpenChange?: ((open: boolean) => void) | null | undefined;
36
+ onOpenChange?: OpenChangeHandler | null | undefined;
37
+ /**
38
+ * Called once each time an open finishes: after the slide, or at once when no animation runs
39
+ * (reduced motion, a zero duration, find-in-page). Not called for the initial state.
40
+ */
41
+ onAfterOpen?: () => void;
42
+ /**
43
+ * Called once each time a close finishes: after the slide, at once when no animation runs, or
44
+ * when the panel is removed mid-close. Not called for the initial state.
45
+ */
46
+ onAfterClose?: () => void;
47
+ /**
48
+ * Keeps the closed content in the DOM under `hidden="until-found"`, so the browser's
49
+ * find-in-page, text fragments and `#id` links can reach it and open the collapsible
50
+ * (reason `find-in-page`, no animation). Closed content is hidden from assistive technology
51
+ * and from the tab order until then. A parent that refuses the change leaves it closed. A disabled
52
+ * collapsible is not findable: its closed content stays under plain `hidden`.
53
+ * Applies to the `default` variant; `peek` always keeps its content mounted.
54
+ * @default false
55
+ */
56
+ hiddenUntilFound?: boolean;
57
+ /**
58
+ * Keeps the closed content mounted under `hidden`, preserving its state (form values, scroll,
59
+ * media). It is not findable by the browser; use `hiddenUntilFound` for that. Applies to the
60
+ * `default` variant.
61
+ * @default false
62
+ */
63
+ keepMounted?: boolean;
32
64
  /**
33
65
  * Size variant of the collapsible.
34
66
  */
@@ -42,14 +74,13 @@ type CollapsibleBaseProps = {
42
74
  * Theme configuration overrides.
43
75
  */
44
76
  theme?: CollapsibleThemeProps;
45
- /**
46
- * Whether the collapsible is accessible.
47
- */
48
- accessible?: boolean;
49
77
  /**
50
78
  * Visual variant. `default` toggles the content in and out with a slide.
51
79
  * `peek` keeps the content mounted, clips it to `peekHeight` and fades the
52
- * edge while closed, with the trigger floating as a pill over the fade.
80
+ * edge while closed, with the trigger floating as a pill over the fade; links and controls
81
+ * below the visible preview are inert until it opens. The clipped text stays in the
82
+ * accessibility tree on purpose: the clip is a visual preview, so screen reader users read the
83
+ * whole content (a "read more" pattern) and the trigger's `aria-expanded` reports the state.
53
84
  */
54
85
  variant?: 'default' | 'peek';
55
86
  /**
@@ -62,7 +93,7 @@ type CollapsibleBaseProps = {
62
93
  */
63
94
  transition?: ResponsiveProps<FSOProps>;
64
95
  };
65
- type CollapsibleSlotProps = WithSlot<CollapsibleBaseProps, 'trigger' | 'children' | 'srOnlyContent', {
96
+ type CollapsibleSlotProps = WithSlot<CollapsibleBaseProps, 'trigger' | 'children', {
66
97
  open: boolean;
67
98
  }>;
68
99
  export type CollapsibleProps = WithAttachments<CollapsibleSlotProps>;
@@ -45,8 +45,10 @@ const defaultCollapsibleContent = cva({
45
45
  size: 'normal'
46
46
  }
47
47
  });
48
+ // The glyph fills the box: drawn at its own 16px it overflowed a small (12px) box downward and
49
+ // sat in the top of a large (20px) one, so the chevron was off the text's centre.
48
50
  const defaultCollapsibleIcon = cva({
49
- base: 'size-4 transition-transform flex-shrink-0',
51
+ base: 'size-4 transition-transform flex-shrink-0 [&>svg]:size-full',
50
52
  variants: {
51
53
  size: {
52
54
  small: 'size-3',
@@ -2,3 +2,4 @@ export { default as Collapsible } from './Collapsible.svelte';
2
2
  export type { CollapsibleProps } from './collapsible.props.js';
3
3
  export type { CollapsibleTheme, CollapsibleThemeProps } from './collapsible.theme.js';
4
4
  export { collapsibleTheme, setCollapsibleTheme, useCollapsibleTheme } from './collapsible.theme.js';
5
+ export { collapsibleDataAttributes, collapsibleCssVariables, type CollapsibleDataAttribute, type CollapsibleCssVariable } from './collapsible.attributes.js';
@@ -1,2 +1,3 @@
1
1
  export { default as Collapsible } from './Collapsible.svelte';
2
2
  export { collapsibleTheme, setCollapsibleTheme, useCollapsibleTheme } from './collapsible.theme.js';
3
+ export { collapsibleDataAttributes, collapsibleCssVariables } from './collapsible.attributes.js';