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
@@ -219,7 +219,7 @@ const defaultToastDescription = cva({
219
219
  // (margins, border, padding, sizing) and lets pointer events fall through — the
220
220
  // toasts themselves re-enable pointer-events.
221
221
  const defaultToaster = cva({
222
- base: 'pointer-events-none fixed inset-0 z-[9999] m-0 h-full w-full max-h-none max-w-none overflow-hidden border-0 bg-transparent p-0'
222
+ base: 'pointer-events-none fixed inset-0 z-[9999] m-0 h-full w-full max-h-none max-w-none overflow-hidden border-0 bg-transparent p-0 outline-none'
223
223
  });
224
224
  // Motion preset, keyed by the toast's resolved `position`: every toast flies in from
225
225
  // the screen edge it is pinned to and leaves the same way. Banners slide by their own
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import type { Attachment } from 'svelte/attachments';
2
3
  import Slot from '../Slot/Slot.svelte';
3
4
  import type { ToggleButtonProps } from './toggleButton.props.js';
4
5
  import { useToggleButtonTheme } from './toggleButton.theme.js';
@@ -17,6 +18,7 @@
17
18
  size = 'normal',
18
19
  ref = $bindable(),
19
20
  disabled = false,
21
+ focusableWhenDisabled = false,
20
22
  theme,
21
23
  defaultValue = false,
22
24
  value = $bindable(),
@@ -35,6 +37,23 @@
35
37
  !!((!children && prefix && !suffix) || (!children && !prefix && suffix))
36
38
  );
37
39
 
40
+ // A disabled button leaves the tab order through the native attribute, unless it is
41
+ // `focusableWhenDisabled`: then it keeps focus and announces `aria-disabled` instead.
42
+ const nativeDisabled = $derived(disabled && !focusableWhenDisabled);
43
+
44
+ // A focusable disabled button still receives clicks (and Enter or Space), so a capture listener
45
+ // cancels them before the group's or the consumer's own handlers see them. It is registered
46
+ // once and reads `disabled` on each click.
47
+ const refuseDisabledActivation: Attachment<HTMLElement> = (node) => {
48
+ const refuse = (event: MouseEvent) => {
49
+ if (!disabled) return;
50
+ event.preventDefault();
51
+ event.stopImmediatePropagation();
52
+ };
53
+ node.addEventListener('click', refuse, { capture: true });
54
+ return () => node.removeEventListener('click', refuse, { capture: true });
55
+ };
56
+
38
57
  const classes = $derived(useToggleButtonTheme(theme));
39
58
  const resolvedColor = $derived(useDefaultColor(color));
40
59
  </script>
@@ -48,7 +67,8 @@
48
67
  {role}
49
68
  aria-pressed={role === 'radio' ? undefined : valueState.value}
50
69
  aria-checked={role === 'radio' ? valueState.value : undefined}
51
- {disabled}
70
+ disabled={nativeDisabled ? true : undefined}
71
+ aria-disabled={disabled && !nativeDisabled ? true : undefined}
52
72
  class={classes.root({
53
73
  color: resolvedColor,
54
74
  checked: valueState.value,
@@ -56,8 +76,10 @@
56
76
  variant,
57
77
  size,
58
78
  disabled,
79
+ focusable: focusableWhenDisabled,
59
80
  className
60
81
  })}
82
+ {@attach refuseDisabledActivation}
61
83
  onclick={() => {
62
84
  if (!disabled) {
63
85
  valueState.value = !valueState.value;
@@ -1 +1 @@
1
- export declare const toggleButtonDescription = "\n# ToggleButton Component\n\nThe ToggleButton component is a two-state button that can be toggled on and off, useful for binary settings and selections.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet isActive = $state(false);\n</script>\n\n<ToggleButton bind:value={isActive}>\n\tToggle Me\n</ToggleButton>\n```\n\n## Props\n\n### Core Props\n- **value**: boolean (bindable) - Toggle state\n- **defaultValue**: boolean (default: false) - Initial state when value is omitted\n- **label**: string - Accessible name for icon-only buttons\n- **type**: 'button' | 'submit' | 'reset' (default: 'button') - Native button type. The default prevents accidental form submission.\n- **role**: 'radio' - Exposes the pressed state as `aria-checked` instead of `aria-pressed`. Set by ToggleButtonGroup in `type=\"single\"` mode; rarely needed on a standalone button\n\n### Visual Props\n- **color**: 'primary' | 'secondary' | 'neutral' | 'danger' | 'success' | 'warning' | 'info' (default: 'neutral')\n- **variant**: 'outline' | 'ghost' (default: 'ghost') \u2014 a Button subset. Resting outline uses the same border and surface recipe as Button; the pressed state adds a muted fill.\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n\n### State Props\n- **disabled**: boolean (default: false) - Disables interaction\n\n### Event Props\n- **onValueChange**: (value: boolean) => void - Called once when toggle state changes\n\n### Content Slots\n- **children**: Snippet - Button content\n- **prefix**: Snippet - Content before text (typically icons)\n- **suffix**: Snippet - Content after text (typically icons)\n\n### Styling Props\n- **class**: string - Additional CSS classes\n- **theme**: ComponentTheme - Custom theme overrides\n\n## Examples\n\n### Basic Toggle\n```svelte\n<script>\n\tlet value = $state(false);\n</script>\n\n<ToggleButton bind:value>\n\t{value ? 'On' : 'Off'}\n</ToggleButton>\n```\n\n### With Icon\n```svelte\n<script lang=\"ts\">\n\timport { textBIcon } from 'entasis/icons/textB';\n\n\tlet isBold = $state(false);\n</script>\n\n<ToggleButton bind:value={isBold}>\n\t{#snippet prefix()}\n\t\t{@render textBIcon()}\n\t{/snippet}\n\tBold\n</ToggleButton>\n```\n\n### Different Variants\n```svelte\n<ToggleButton variant=\"ghost\" bind:value>Ghost</ToggleButton>\n<ToggleButton variant=\"outline\" bind:value>Outline</ToggleButton>\n```\n\n### Different Colors\n```svelte\n<ToggleButton color=\"primary\" bind:value>Primary</ToggleButton>\n<ToggleButton color=\"danger\" bind:value>Danger</ToggleButton>\n<ToggleButton color=\"success\" bind:value>Success</ToggleButton>\n```\n\n### Toolbar Buttons\n```svelte\n<script lang=\"ts\">\n\timport { textBIcon } from 'entasis/icons/textB';\n\timport { textItalicIcon } from 'entasis/icons/textItalic';\n\timport { textUnderlineIcon } from 'entasis/icons/textUnderline';\n\n\tlet format = $state({ bold: false, italic: false, underline: false });\n</script>\n\n<div class=\"flex gap-1\">\n\t<ToggleButton bind:value={format.bold}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textBIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n\t<ToggleButton bind:value={format.italic}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textItalicIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n\t<ToggleButton bind:value={format.underline}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textUnderlineIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n</div>\n```\n\n### With Change Handler\n```svelte\n<script>\n\tfunction handleChange(value) {\n\t\tconsole.log('Toggled:', value);\n\t}\n</script>\n\n<ToggleButton onValueChange={handleChange}>\n\tNotify Me\n</ToggleButton>\n```\n\n### Disabled State\n```svelte\n<ToggleButton disabled value>Disabled On</ToggleButton>\n<ToggleButton disabled>Disabled Off</ToggleButton>\n```\n\n## Accessibility\n\n- Exposes the checked state through `aria-pressed` (or `aria-checked` when `role=\"radio\"`)\n- Renders `type=\"button\"` unless explicitly overridden\n- Keyboard accessible (Space/Enter to toggle)\n- Focus states for keyboard navigation\n- Screen reader friendly\n\n## Notes\n\n- Maintains toggle state between interactions\n- Visual feedback for checked/unchecked states\n- Can be used standalone or in ToggleButtonGroup\n- Supports all standard button features\n\n## Theme Customization\n\nThe ToggleButton 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 button element styles\n- **prefix**: Prefix icon/content styles\n- **suffix**: Suffix icon/content styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for button element\n- Variants:\n - checked: boolean - Checked/toggled state styling\n - disabled: boolean - Disabled state styling\n - color: Color variants\n - variant: 'outline' | 'ghost' - Button variant\n - squared: boolean - Square button styling\n - size: 'small' | 'normal' | 'large' - Button size\n\n**prefix**:\n- base: Base classes for prefix content\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n - checked: boolean - Checked state styling\n\n**suffix**:\n- base: Base classes for suffix content\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n - checked: boolean - Checked state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<ToggleButton \n bind:value\n theme={{\n root: {\n base: 'rounded-md transition-all',\n checked: {\n true: 'bg-primary text-white',\n false: 'bg-gray-200'\n },\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n Toggle\n</ToggleButton>\n```\n\n**Custom Checked State**:\n```svelte\n<script lang=\"ts\">\n import { checkIcon } from 'entasis/icons/check';\n</script>\n\n<ToggleButton \n bind:value\n variant=\"outline\"\n theme={{\n root: {\n variant: {\n outline: 'border-2'\n },\n checked: {\n true: 'border-primary bg-primary/10 text-primary',\n false: 'border-gray-300'\n }\n },\n prefix: {\n checked: {\n true: 'text-primary'\n }\n }\n }}\n>\n {#snippet prefix()}\n {@render checkIcon()}\n {/snippet}\n Toggle\n</ToggleButton>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setToggleButtonTheme } from './index.ts';\n \n setToggleButtonTheme({\n root: {\n base: 'transition-all duration-100',\n checked: {\n true: 'bg-primary text-white',\n false: 'bg-gray-200'\n },\n size: {\n normal: 'px-4 py-2 h-8'\n }\n },\n prefix: {\n size: {\n normal: 'max-w-6 max-h-6'\n }\n }\n });\n</script>\n```\n";
1
+ export declare const toggleButtonDescription = "\n# ToggleButton Component\n\nThe ToggleButton component is a two-state button that can be toggled on and off, useful for binary settings and selections.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet isActive = $state(false);\n</script>\n\n<ToggleButton bind:value={isActive}>\n\tToggle Me\n</ToggleButton>\n```\n\n## Props\n\n### Core Props\n- **value**: boolean (bindable) - Toggle state\n- **defaultValue**: boolean (default: false) - Initial state when value is omitted\n- **label**: string - Accessible name for icon-only buttons\n- **type**: 'button' | 'submit' | 'reset' (default: 'button') - Native button type. The default prevents accidental form submission.\n- **role**: 'radio' - Exposes the pressed state as `aria-checked` instead of `aria-pressed`. Set by ToggleButtonGroup in `type=\"single\"` mode; rarely needed on a standalone button\n\n### Visual Props\n- **color**: 'primary' | 'secondary' | 'neutral' | 'danger' | 'success' | 'warning' | 'info' (default: 'neutral')\n- **variant**: 'outline' | 'ghost' (default: 'ghost') \u2014 a Button subset. Resting outline uses the same border and surface recipe as Button; the pressed state adds a muted fill.\n- **size**: 'small' | 'normal' | 'large' (default: 'normal')\n\n### State Props\n- **disabled**: boolean (default: false) - Disables interaction. The button gets the native `disabled` attribute and leaves the tab order, unless `focusableWhenDisabled` is set\n- **focusableWhenDisabled**: boolean (default: false) - Keeps a `disabled` button focusable: it renders `aria-disabled=\"true\"` instead of the native attribute, stays in the tab order, still receives pointer events (for a tooltip that explains why), and refuses to toggle: clicks from the pointer, Enter and Space are cancelled before any other listener sees them. Has no effect without `disabled`\n\n### Event Props\n- **onValueChange**: (value: boolean) => void - Called once when toggle state changes\n\n### Content Slots\n- **children**: Snippet - Button content\n- **prefix**: Snippet - Content before text (typically icons)\n- **suffix**: Snippet - Content after text (typically icons)\n\n### Styling Props\n- **class**: string - Additional CSS classes\n- **theme**: ComponentTheme - Custom theme overrides\n\n## Examples\n\n### Basic Toggle\n```svelte\n<script>\n\tlet value = $state(false);\n</script>\n\n<ToggleButton bind:value>\n\t{value ? 'On' : 'Off'}\n</ToggleButton>\n```\n\n### With Icon\n```svelte\n<script lang=\"ts\">\n\timport { textBIcon } from 'entasis/icons/textB';\n\n\tlet isBold = $state(false);\n</script>\n\n<ToggleButton bind:value={isBold}>\n\t{#snippet prefix()}\n\t\t{@render textBIcon()}\n\t{/snippet}\n\tBold\n</ToggleButton>\n```\n\n### Different Variants\n```svelte\n<ToggleButton variant=\"ghost\" bind:value>Ghost</ToggleButton>\n<ToggleButton variant=\"outline\" bind:value>Outline</ToggleButton>\n```\n\n### Different Colors\n```svelte\n<ToggleButton color=\"primary\" bind:value>Primary</ToggleButton>\n<ToggleButton color=\"danger\" bind:value>Danger</ToggleButton>\n<ToggleButton color=\"success\" bind:value>Success</ToggleButton>\n```\n\n### Toolbar Buttons\n```svelte\n<script lang=\"ts\">\n\timport { textBIcon } from 'entasis/icons/textB';\n\timport { textItalicIcon } from 'entasis/icons/textItalic';\n\timport { textUnderlineIcon } from 'entasis/icons/textUnderline';\n\n\tlet format = $state({ bold: false, italic: false, underline: false });\n</script>\n\n<div class=\"flex gap-1\">\n\t<ToggleButton bind:value={format.bold}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textBIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n\t<ToggleButton bind:value={format.italic}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textItalicIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n\t<ToggleButton bind:value={format.underline}>\n\t\t{#snippet prefix()}\n\t\t\t{@render textUnderlineIcon()}\n\t\t{/snippet}\n\t</ToggleButton>\n</div>\n```\n\n### With Change Handler\n```svelte\n<script>\n\tfunction handleChange(value) {\n\t\tconsole.log('Toggled:', value);\n\t}\n</script>\n\n<ToggleButton onValueChange={handleChange}>\n\tNotify Me\n</ToggleButton>\n```\n\n### Disabled State\n```svelte\n<ToggleButton disabled value>Disabled On</ToggleButton>\n<ToggleButton disabled>Disabled Off</ToggleButton>\n```\n\n## Accessibility\n\n- Exposes the checked state through `aria-pressed` (or `aria-checked` when `role=\"radio\"`)\n- Renders `type=\"button\"` unless explicitly overridden\n- Keyboard accessible (Space/Enter to toggle)\n- Focus states for keyboard navigation\n- Screen reader friendly\n\n## Notes\n\n- Maintains toggle state between interactions\n- Visual feedback for checked/unchecked states\n- Can be used standalone or in ToggleButtonGroup\n- Supports all standard button features\n\n## Theme Customization\n\nThe ToggleButton 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 button element styles\n- **prefix**: Prefix icon/content styles\n- **suffix**: Suffix icon/content styles\n\n### Available Variants\n\n**root**:\n- base: Base classes for button element\n- Variants:\n - checked: boolean - Checked/toggled state styling\n - disabled: boolean - Disabled state styling\n - focusable: boolean - Set with `focusableWhenDisabled`: a disabled button keeps its pointer events\n - color: Color variants\n - variant: 'outline' | 'ghost' - Button variant\n - squared: boolean - Square button styling\n - size: 'small' | 'normal' | 'large' - Button size\n\n**prefix**:\n- base: Base classes for prefix content\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n - checked: boolean - Checked state styling\n\n**suffix**:\n- base: Base classes for suffix content\n- Variants:\n - size: 'small' | 'normal' | 'large' - Icon size\n - checked: boolean - Checked state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<ToggleButton \n bind:value\n theme={{\n root: {\n base: 'rounded-md transition-all',\n checked: {\n true: 'bg-primary text-white',\n false: 'bg-gray-200'\n },\n size: {\n normal: 'px-4 py-2'\n }\n }\n }}\n>\n Toggle\n</ToggleButton>\n```\n\n**Custom Checked State**:\n```svelte\n<script lang=\"ts\">\n import { checkIcon } from 'entasis/icons/check';\n</script>\n\n<ToggleButton \n bind:value\n variant=\"outline\"\n theme={{\n root: {\n variant: {\n outline: 'border-2'\n },\n checked: {\n true: 'border-primary bg-primary/10 text-primary',\n false: 'border-gray-300'\n }\n },\n prefix: {\n checked: {\n true: 'text-primary'\n }\n }\n }}\n>\n {#snippet prefix()}\n {@render checkIcon()}\n {/snippet}\n Toggle\n</ToggleButton>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setToggleButtonTheme } from './index.ts';\n \n setToggleButtonTheme({\n root: {\n base: 'transition-all duration-100',\n checked: {\n true: 'bg-primary text-white',\n false: 'bg-gray-200'\n },\n size: {\n normal: 'px-4 py-2 h-8'\n }\n },\n prefix: {\n size: {\n normal: 'max-w-6 max-h-6'\n }\n }\n });\n</script>\n```\n";
@@ -30,7 +30,8 @@ The ToggleButton component is a two-state button that can be toggled on and off,
30
30
  - **size**: 'small' | 'normal' | 'large' (default: 'normal')
31
31
 
32
32
  ### State Props
33
- - **disabled**: boolean (default: false) - Disables interaction
33
+ - **disabled**: boolean (default: false) - Disables interaction. The button gets the native \`disabled\` attribute and leaves the tab order, unless \`focusableWhenDisabled\` is set
34
+ - **focusableWhenDisabled**: boolean (default: false) - Keeps a \`disabled\` button focusable: it renders \`aria-disabled="true"\` instead of the native attribute, stays in the tab order, still receives pointer events (for a tooltip that explains why), and refuses to toggle: clicks from the pointer, Enter and Space are cancelled before any other listener sees them. Has no effect without \`disabled\`
34
35
 
35
36
  ### Event Props
36
37
  - **onValueChange**: (value: boolean) => void - Called once when toggle state changes
@@ -167,6 +168,7 @@ The theme object contains the following parts:
167
168
  - Variants:
168
169
  - checked: boolean - Checked/toggled state styling
169
170
  - disabled: boolean - Disabled state styling
171
+ - focusable: boolean - Set with \`focusableWhenDisabled\`: a disabled button keeps its pointer events
170
172
  - color: Color variants
171
173
  - variant: 'outline' | 'ghost' - Button variant
172
174
  - squared: boolean - Square button styling
@@ -22,8 +22,20 @@ export type ToggleButtonProps = WithAttachments<WithSlot<{
22
22
  variant?: ToggleButtonVariant;
23
23
  /** Size token controlling padding, height, and typography. */
24
24
  size?: Sizes;
25
- /** When true, prevents toggling and applies disabled styles. */
25
+ /**
26
+ * When true, prevents toggling and applies disabled styles. The button gets the native
27
+ * `disabled` attribute and leaves the tab order, unless `focusableWhenDisabled` is set.
28
+ */
26
29
  disabled?: boolean;
30
+ /**
31
+ * When true, a `disabled` button stays focusable: it renders `aria-disabled="true"`
32
+ * instead of the native `disabled` attribute, keeps its place in the tab order and still
33
+ * receives pointer events, and refuses to toggle: clicks from the pointer, Enter and
34
+ * Space are cancelled before any other listener sees them. Inside a ToggleButtonGroup the
35
+ * arrow keys stop on it. Has no effect without `disabled`.
36
+ * @default false
37
+ */
38
+ focusableWhenDisabled?: boolean;
27
39
  /**
28
40
  * The class name of the button. First element that the component outputs in the DOM.
29
41
  */
@@ -9,6 +9,10 @@ export declare const toggleButtonTheme: {
9
9
  true: string;
10
10
  false: null;
11
11
  };
12
+ focusable: {
13
+ true: null;
14
+ false: null;
15
+ };
12
16
  color: {
13
17
  primary: string;
14
18
  secondary: string;
@@ -67,6 +71,10 @@ export declare const setToggleButtonTheme: (theme: InferComponentTheme<{
67
71
  true: string;
68
72
  false: null;
69
73
  };
74
+ focusable: {
75
+ true: null;
76
+ false: null;
77
+ };
70
78
  color: {
71
79
  primary: string;
72
80
  secondary: string;
@@ -123,6 +131,10 @@ export declare const useToggleButtonTheme: import("../../utils/cva/theme.js").Us
123
131
  true: string;
124
132
  false: null;
125
133
  };
134
+ focusable: {
135
+ true: null;
136
+ false: null;
137
+ };
126
138
  color: {
127
139
  primary: string;
128
140
  secondary: string;
@@ -9,7 +9,13 @@ const defaultButton = cva({
9
9
  false: null
10
10
  },
11
11
  disabled: {
12
- true: 'opacity-50 cursor-not-allowed pointer-events-none',
12
+ true: 'opacity-50 cursor-not-allowed',
13
+ false: null
14
+ },
15
+ // Disabled but still focusable (`focusableWhenDisabled`): it renders `aria-disabled`, so it
16
+ // keeps its pointer events for the click guard and for hover tooltips.
17
+ focusable: {
18
+ true: null,
13
19
  false: null
14
20
  },
15
21
  color: {
@@ -39,9 +45,12 @@ const defaultButton = cva({
39
45
  checked: false,
40
46
  size: 'normal',
41
47
  variant: 'ghost',
42
- color: 'neutral'
48
+ color: 'neutral',
49
+ focusable: false
43
50
  },
44
51
  compoundVariants: [
52
+ // A natively disabled button takes no pointer events; a focusable one keeps them.
53
+ { disabled: true, focusable: false, class: 'pointer-events-none' },
45
54
  // Mirrors button.theme.ts: the neutral outline is toolbar chrome next to inputs and selects,
46
55
  // which all draw a `neutral-muted` hairline; a full-strength neutral border made it the odd
47
56
  // one out.
@@ -55,7 +64,10 @@ const defaultButton = cva({
55
64
  variant: 'outline',
56
65
  checked: true,
57
66
  class: `${selectedSoft} border-color`
58
- }
67
+ },
68
+ // A pressed neutral outline keeps its hairline: the soft fill shows the selection, and a
69
+ // full-strength neutral border boxed the pressed segment off from the rest of a joined group.
70
+ { color: 'neutral', variant: 'outline', checked: true, class: 'border-neutral-muted' }
59
71
  ]
60
72
  });
61
73
  const defaultToggleButtonPrefix = cva({
@@ -26,6 +26,8 @@
26
26
  variant,
27
27
  disabled,
28
28
  joined = false,
29
+ orientation = 'horizontal',
30
+ loopFocus = true,
29
31
  type = 'multiple' as Type,
30
32
  theme,
31
33
  class: className,
@@ -42,20 +44,35 @@
42
44
 
43
45
  const classes = $derived(useToggleButtonGroupTheme(theme));
44
46
  const id = $props.id();
45
- // One tab stop for the whole group; arrows move between buttons (Radix ToggleGroup / Toolbar).
46
- const navigation = useNavigation({
47
- orientation: 'horizontal',
48
- loop: true,
49
- id,
50
- enableHoverFocus: false
51
- });
52
-
53
47
  const pressed = $derived.by(() => {
54
48
  const current = valueState.value as string[] | string | undefined;
55
49
  if (Array.isArray(current)) return current;
56
50
  return current === undefined ? [] : [current];
57
51
  });
58
52
 
53
+ // One tab stop for the whole group, on the first pressed enabled button (the first enabled one
54
+ // when nothing is pressed); arrows move between buttons (Radix ToggleGroup / Toolbar). The group
55
+ // element is never a tab stop, so Shift+Tab leaves it in one step and a disabled group has no
56
+ // tabbable element. Buttons that are `focusableWhenDisabled` stay in the arrow-key order.
57
+ const navigation = useNavigation({
58
+ orientation: () => orientation,
59
+ get loop() {
60
+ return loopFocus;
61
+ },
62
+ id,
63
+ enableHoverFocus: false,
64
+ focusableContainer: false,
65
+ disabledItemsFocusable: true,
66
+ defaultFocusedIndex: () => {
67
+ const index = items.findIndex(
68
+ (item) =>
69
+ pressed.includes(item.value) &&
70
+ (!(disabled || item.disabled) || item.focusableWhenDisabled)
71
+ );
72
+ return index === -1 ? null : index;
73
+ }
74
+ });
75
+
59
76
  function getButtonProps(item: ToggleButtonGroupItem) {
60
77
  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- Strip the group keys before forwarding native toggle props.
61
78
  const { value: _value, onValueChange: _onValueChange, ...props } = item;
@@ -78,9 +95,12 @@
78
95
  <div
79
96
  role={type === 'single' ? 'radiogroup' : 'group'}
80
97
  aria-label={label}
98
+ aria-orientation={type === 'single' ? orientation : undefined}
81
99
  data-color={color}
82
100
  data-type={type}
83
- class={classes.root({ className, joined })}
101
+ data-orientation={orientation}
102
+ data-disabled={disabled ? '' : undefined}
103
+ class={classes.root({ className, joined, orientation })}
84
104
  {@attach navigation.containerReference}
85
105
  {...attachments}
86
106
  >
@@ -1,3 +1,3 @@
1
1
  export { default as ToggleButtonGroup } from './ToggleButtonGroup.svelte';
2
- export type { ToggleButtonGroupItem, ToggleButtonGroupItems, ToggleButtonGroupProps, ToggleButtonGroupType, ToggleButtonGroupValue } from './toggleButtonGroup.props.js';
2
+ export type { ToggleButtonGroupItem, ToggleButtonGroupItems, ToggleButtonGroupOrientation, ToggleButtonGroupProps, ToggleButtonGroupType, ToggleButtonGroupValue } from './toggleButtonGroup.props.js';
3
3
  export { toggleButtonGroupTheme, setToggleButtonGroupTheme, useToggleButtonGroupTheme, type ToggleButtonGroupTheme, type ToggleButtonGroupThemeProps } from './toggleButtonGroup.theme.js';
@@ -1 +1 @@
1
- export declare const toggleButtonGroupDescription = "\n# ToggleButtonGroup Component\n\nToggleButtonGroup renders an ordered list of ToggleButton items and exposes the pressed values as one bindable value.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\tlet formatting = $state(['bold']);\n</script>\n\n<ToggleButtonGroup\n\tbind:value={formatting}\n\tlabel=\"Text formatting\"\n\tcolor=\"neutral\"\n\titems={[\n\t\t{ value: 'bold', children: 'Bold' },\n\t\t{ value: 'italic', children: 'Italic' },\n\t\t{ value: 'underline', children: 'Underline' }\n\t]}\n/>\n```\n\n## Props\n\n- **items**: ToggleButtonGroupItem[] (required) - Ordered button configurations. Each item carries a unique `value` plus ToggleButton props (no `variant`, `color`, or `size`; pressed state lives on the group value).\n- **label**: string (required) - Accessible name for the group.\n- **value**: string[] | string | undefined (bindable) - The only pressed-state source. `type=\"multiple\"` holds every pressed value as an array; `type=\"single\"` holds the checked value.\n- **defaultValue**: same shape as value - Initial pressed state when value is omitted.\n- **onValueChange**: (value) => void - Called once with the updated group value after a toggle.\n- **size**: 'small' | 'normal' | 'large' - Applied to every item.\n- **color**: Colors - Applied to every item.\n- **variant**: 'outline' | 'ghost' - Applied to every item. Defaults to 'ghost'.\n- **disabled**: boolean - Disables every item.\n- **joined**: boolean (default: false) - Renders the buttons as contiguous segments.\n- **type**: 'single' | 'multiple' (default: 'multiple') - `'multiple'` lets any number of buttons be pressed (`role=\"group\"`, `aria-pressed`) and its value is a `string[]`. `'single'` makes the selection exclusive: the value is a single string, the root becomes `role=\"radiogroup\"`, each button `role=\"radio\"` with `aria-checked`, pressing one clears the others, and the checked radio cannot be unpressed.\n- **class**: string - Additional CSS classes for the root.\n- **theme**: ToggleButtonGroupThemeProps - Theme overrides.\n\n## Examples\n\n### Icon Toolbar\n\n```svelte\n<ToggleButtonGroup\n\tbind:value={formatting}\n\tlabel=\"Text formatting\"\n\titems={[\n\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' },\n\t\t{ value: 'underline', prefix: textUnderlineIcon, label: 'Underline' }\n\t]}\n/>\n```\n\n### Joined Segments\n\n```svelte\n<ToggleButtonGroup\n\tjoined\n\tvariant=\"outline\"\n\tcolor=\"neutral\"\n\tlabel=\"Text formatting\"\n\tvalue={['bold']}\n\titems={[\n\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' },\n\t\t{ value: 'underline', prefix: textUnderlineIcon, label: 'Underline' }\n\t]}\n/>\n```\n\n### Single Selection (radio group)\n\n```svelte\n<script lang=\"ts\">\n\tlet alignment = $state('left');\n</script>\n\n<ToggleButtonGroup\n\ttype=\"single\"\n\tlabel=\"Alignment\"\n\tbind:value={alignment}\n\titems={[\n\t\t{ value: 'left', children: 'Left' },\n\t\t{ value: 'center', children: 'Center' },\n\t\t{ value: 'right', children: 'Right' }\n\t]}\n/>\n```\n\n### Change Handler\n\n```svelte\n<ToggleButtonGroup\n\tlabel=\"Density options\"\n\titems={[\n\t\t{ value: 'compact', children: 'Compact' },\n\t\t{ value: 'comfortable', children: 'Comfortable' }\n\t]}\n\tonValueChange={(value) => {\n\t\tconsole.log(value);\n\t}}\n/>\n```\n\n## Theme\n\n- **root**: Main button group container styles.\n\n## Accessibility\n\n- `type=\"multiple\"`: the root is `role=\"group\"` named by `label`; each ToggleButton exposes its independent state through `aria-pressed`.\n- `type=\"single\"`: the root is `role=\"radiogroup\"`; buttons are `role=\"radio\"` with `aria-checked`.\n- The group is a single tab stop (roving tabindex): Tab enters it, ArrowLeft / ArrowRight move between buttons (looping, mirrored in RTL), Home / End jump to the first / last, Space or Enter toggles the focused button.\n- Prefer SegmentedControl for a visually segmented exclusive choice; use `type=\"single\"` when you want toggle-button styling with exclusive semantics.\n\n## Theme example\n\n```svelte\n<ToggleButtonGroup\n\tlabel=\"Options\"\n\titems={items}\n\ttheme={{\n\t\troot: {\n\t\t\tbase: 'flex items-center gap-1'\n\t\t}\n\t}}\n/>\n```\n";
1
+ export declare const toggleButtonGroupDescription = "\n# ToggleButtonGroup Component\n\nToggleButtonGroup renders an ordered list of ToggleButton items and exposes the pressed values as one bindable value.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\tlet formatting = $state(['bold']);\n</script>\n\n<ToggleButtonGroup\n\tbind:value={formatting}\n\tlabel=\"Text formatting\"\n\tcolor=\"neutral\"\n\titems={[\n\t\t{ value: 'bold', children: 'Bold' },\n\t\t{ value: 'italic', children: 'Italic' },\n\t\t{ value: 'underline', children: 'Underline' }\n\t]}\n/>\n```\n\n## Props\n\n- **items**: ToggleButtonGroupItem[] (required) - Ordered button configurations. Each item carries a unique `value` plus ToggleButton props (no `variant`, `color`, or `size`; pressed state lives on the group value).\n- **label**: string (required) - Accessible name for the group.\n- **value**: string[] | string | undefined (bindable) - The only pressed-state source. `type=\"multiple\"` holds every pressed value as an array; `type=\"single\"` holds the checked value.\n- **defaultValue**: same shape as value - Initial pressed state when value is omitted.\n- **onValueChange**: (value) => void - Called once with the updated group value after a toggle.\n- **size**: 'small' | 'normal' | 'large' - Applied to every item.\n- **color**: Colors - Applied to every item.\n- **variant**: 'outline' | 'ghost' - Applied to every item. Defaults to 'ghost'.\n- **disabled**: boolean - Disables every item. A disabled group has no tab stop, unless an item sets `focusableWhenDisabled`.\n- **joined**: boolean (default: false) - Renders the buttons as contiguous segments.\n- **orientation**: 'horizontal' | 'vertical' (default: 'horizontal') - Axis of the group. Horizontal lays the buttons out in a row and moves with ArrowLeft / ArrowRight; vertical stacks them (joined segments join top to bottom) and moves with ArrowUp / ArrowDown. Keys of the other axis are ignored. Reflected as `data-orientation`; a `type=\"single\"` group (radiogroup) also sets `aria-orientation`, the `group` role of a multiple group never does.\n- **loopFocus**: boolean (default: true) - Whether the arrow keys wrap from the last button to the first and back. False stops focus at the ends (Home / End still jump).\n- **type**: 'single' | 'multiple' (default: 'multiple') - `'multiple'` lets any number of buttons be pressed (`role=\"group\"`, `aria-pressed`) and its value is a `string[]`. `'single'` makes the selection exclusive: the value is a single string, the root becomes `role=\"radiogroup\"`, each button `role=\"radio\"` with `aria-checked`, pressing one clears the others, and the checked radio cannot be unpressed.\n- **class**: string - Additional CSS classes for the root.\n- **theme**: ToggleButtonGroupThemeProps - Theme overrides.\n\n## Examples\n\n### Icon Toolbar\n\n```svelte\n<ToggleButtonGroup\n\tbind:value={formatting}\n\tlabel=\"Text formatting\"\n\titems={[\n\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' },\n\t\t{ value: 'underline', prefix: textUnderlineIcon, label: 'Underline' }\n\t]}\n/>\n```\n\n### Joined Segments\n\n```svelte\n<ToggleButtonGroup\n\tjoined\n\tvariant=\"outline\"\n\tcolor=\"neutral\"\n\tlabel=\"Text formatting\"\n\tvalue={['bold']}\n\titems={[\n\t\t{ value: 'bold', prefix: textBIcon, label: 'Bold' },\n\t\t{ value: 'italic', prefix: textItalicIcon, label: 'Italic' },\n\t\t{ value: 'underline', prefix: textUnderlineIcon, label: 'Underline' }\n\t]}\n/>\n```\n\n### Single Selection (radio group)\n\n```svelte\n<script lang=\"ts\">\n\tlet alignment = $state('left');\n</script>\n\n<ToggleButtonGroup\n\ttype=\"single\"\n\tlabel=\"Alignment\"\n\tbind:value={alignment}\n\titems={[\n\t\t{ value: 'left', children: 'Left' },\n\t\t{ value: 'center', children: 'Center' },\n\t\t{ value: 'right', children: 'Right' }\n\t]}\n/>\n```\n\n### Change Handler\n\n```svelte\n<ToggleButtonGroup\n\tlabel=\"Density options\"\n\titems={[\n\t\t{ value: 'compact', children: 'Compact' },\n\t\t{ value: 'comfortable', children: 'Comfortable' }\n\t]}\n\tonValueChange={(value) => {\n\t\tconsole.log(value);\n\t}}\n/>\n```\n\n## Theme\n\n- **root**: Main button group container styles.\n\n## Accessibility\n\n- `type=\"multiple\"`: the root is `role=\"group\"` named by `label`; each ToggleButton exposes its independent state through `aria-pressed`.\n- `type=\"single\"`: the root is `role=\"radiogroup\"`; buttons are `role=\"radio\"` with `aria-checked`.\n- The group is a single tab stop (roving tabindex), and the group element itself is not focusable, so Shift+Tab leaves the group in one step. Tab lands on the first pressed enabled button, or the first enabled button when nothing is pressed. ArrowLeft / ArrowRight (ArrowUp / ArrowDown when `orientation=\"vertical\"`) move between buttons (looping unless `loopFocus={false}`, mirrored in RTL), Home / End jump to the first / last, Space or Enter toggles the focused button. Alt, Ctrl or Meta with an arrow is left to the browser.\n- An item with `focusableWhenDisabled` that is disabled stays in the arrow-key order and keeps the tab stop reachable, announced with `aria-disabled`; it cannot be toggled.\n- Prefer SegmentedControl for a visually segmented exclusive choice; use `type=\"single\"` when you want toggle-button styling with exclusive semantics.\n\n## Theme example\n\n```svelte\n<ToggleButtonGroup\n\tlabel=\"Options\"\n\titems={items}\n\ttheme={{\n\t\troot: {\n\t\t\tbase: 'flex items-center gap-1'\n\t\t}\n\t}}\n/>\n```\n";
@@ -32,8 +32,10 @@ ToggleButtonGroup renders an ordered list of ToggleButton items and exposes the
32
32
  - **size**: 'small' | 'normal' | 'large' - Applied to every item.
33
33
  - **color**: Colors - Applied to every item.
34
34
  - **variant**: 'outline' | 'ghost' - Applied to every item. Defaults to 'ghost'.
35
- - **disabled**: boolean - Disables every item.
35
+ - **disabled**: boolean - Disables every item. A disabled group has no tab stop, unless an item sets \`focusableWhenDisabled\`.
36
36
  - **joined**: boolean (default: false) - Renders the buttons as contiguous segments.
37
+ - **orientation**: 'horizontal' | 'vertical' (default: 'horizontal') - Axis of the group. Horizontal lays the buttons out in a row and moves with ArrowLeft / ArrowRight; vertical stacks them (joined segments join top to bottom) and moves with ArrowUp / ArrowDown. Keys of the other axis are ignored. Reflected as \`data-orientation\`; a \`type="single"\` group (radiogroup) also sets \`aria-orientation\`, the \`group\` role of a multiple group never does.
38
+ - **loopFocus**: boolean (default: true) - Whether the arrow keys wrap from the last button to the first and back. False stops focus at the ends (Home / End still jump).
37
39
  - **type**: 'single' | 'multiple' (default: 'multiple') - \`'multiple'\` lets any number of buttons be pressed (\`role="group"\`, \`aria-pressed\`) and its value is a \`string[]\`. \`'single'\` makes the selection exclusive: the value is a single string, the root becomes \`role="radiogroup"\`, each button \`role="radio"\` with \`aria-checked\`, pressing one clears the others, and the checked radio cannot be unpressed.
38
40
  - **class**: string - Additional CSS classes for the root.
39
41
  - **theme**: ToggleButtonGroupThemeProps - Theme overrides.
@@ -113,7 +115,8 @@ ToggleButtonGroup renders an ordered list of ToggleButton items and exposes the
113
115
 
114
116
  - \`type="multiple"\`: the root is \`role="group"\` named by \`label\`; each ToggleButton exposes its independent state through \`aria-pressed\`.
115
117
  - \`type="single"\`: the root is \`role="radiogroup"\`; buttons are \`role="radio"\` with \`aria-checked\`.
116
- - The group is a single tab stop (roving tabindex): Tab enters it, ArrowLeft / ArrowRight move between buttons (looping, mirrored in RTL), Home / End jump to the first / last, Space or Enter toggles the focused button.
118
+ - The group is a single tab stop (roving tabindex), and the group element itself is not focusable, so Shift+Tab leaves the group in one step. Tab lands on the first pressed enabled button, or the first enabled button when nothing is pressed. ArrowLeft / ArrowRight (ArrowUp / ArrowDown when \`orientation="vertical"\`) move between buttons (looping unless \`loopFocus={false}\`, mirrored in RTL), Home / End jump to the first / last, Space or Enter toggles the focused button. Alt, Ctrl or Meta with an arrow is left to the browser.
119
+ - An item with \`focusableWhenDisabled\` that is disabled stays in the arrow-key order and keeps the tab stop reachable, announced with \`aria-disabled\`; it cannot be toggled.
117
120
  - Prefer SegmentedControl for a visually segmented exclusive choice; use \`type="single"\` when you want toggle-button styling with exclusive semantics.
118
121
 
119
122
  ## Theme example
@@ -2,6 +2,7 @@ import type { Sizes, Colors } from '../../types/theme.js';
2
2
  import type { WithAttachments, WithoutAttachments } from '../../types/props.js';
3
3
  import type { ToggleButtonProps, ToggleButtonVariant } from '../ToggleButton/index.js';
4
4
  import type { ToggleButtonGroupThemeProps } from './toggleButtonGroup.theme.js';
5
+ export type ToggleButtonGroupOrientation = 'horizontal' | 'vertical';
5
6
  export type ToggleButtonGroupType = 'single' | 'multiple';
6
7
  export type ToggleButtonGroupItem = Omit<WithoutAttachments<ToggleButtonProps>, 'value' | 'defaultValue' | 'variant' | 'color' | 'size'> & {
7
8
  /** Value identifying this button inside the group value. Must be unique. */
@@ -23,10 +24,27 @@ export type ToggleButtonGroupProps<Items extends ToggleButtonGroupItems = Toggle
23
24
  color?: Colors;
24
25
  /** Visual variant applied to every button in the group. */
25
26
  variant?: ToggleButtonVariant;
26
- /** When true, disables all buttons in the group. */
27
+ /**
28
+ * When true, disables all buttons in the group. A disabled group has no tab stop, unless an
29
+ * item sets `focusableWhenDisabled`.
30
+ */
27
31
  disabled?: boolean;
28
32
  /** When true, renders the buttons as contiguous segments. */
29
33
  joined?: boolean;
34
+ /**
35
+ * Axis of the group: `'horizontal'` lays the buttons out in a row and moves between them with
36
+ * ArrowLeft and ArrowRight; `'vertical'` stacks them and uses ArrowUp and ArrowDown. Keys of
37
+ * the other axis are ignored. Exposed as `data-orientation`; a `type="single"` group (`radiogroup`)
38
+ * also sets `aria-orientation`, the `group` role of a multiple group never does.
39
+ * @default 'horizontal'
40
+ */
41
+ orientation?: ToggleButtonGroupOrientation;
42
+ /**
43
+ * Whether the arrow keys wrap from the last button to the first and back. When false, focus
44
+ * stops at the ends.
45
+ * @default true
46
+ */
47
+ loopFocus?: boolean;
30
48
  /**
31
49
  * `'multiple'` (default): any number of buttons can be pressed (`aria-pressed`).
32
50
  * `'single'`: at most one is checked at a time, exposed as a radio group.
@@ -1,6 +1,10 @@
1
1
  import { type InferComponentTheme } from '../../utils/cva/index.js';
2
2
  export declare const toggleButtonGroupTheme: {
3
3
  root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
4
+ orientation: {
5
+ horizontal: string;
6
+ vertical: string;
7
+ };
4
8
  joined: {
5
9
  true: string;
6
10
  false: string;
@@ -11,6 +15,10 @@ export type ToggleButtonGroupTheme = typeof toggleButtonGroupTheme;
11
15
  export type ToggleButtonGroupThemeProps = InferComponentTheme<ToggleButtonGroupTheme>;
12
16
  export declare const setToggleButtonGroupTheme: (theme: InferComponentTheme<{
13
17
  root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
18
+ orientation: {
19
+ horizontal: string;
20
+ vertical: string;
21
+ };
14
22
  joined: {
15
23
  true: string;
16
24
  false: string;
@@ -19,6 +27,10 @@ export declare const setToggleButtonGroupTheme: (theme: InferComponentTheme<{
19
27
  }>) => void;
20
28
  export declare const useToggleButtonGroupTheme: import("../../utils/cva/theme.js").UseComponentTheme<{
21
29
  root: (props?: (import("../../utils/cva/types.js").CVAVariantSchema<{
30
+ orientation: {
31
+ horizontal: string;
32
+ vertical: string;
33
+ };
22
34
  joined: {
23
35
  true: string;
24
36
  false: string;
@@ -1,14 +1,33 @@
1
1
  import { setComponentTheme, useComponentTheme } from '../../utils/cva/index.js';
2
2
  import { cva } from '../../utils/cva/index.js';
3
3
  const defaultToggleButtonGroup = cva({
4
- base: 'flex items-center',
4
+ base: 'flex',
5
5
  variants: {
6
+ orientation: {
7
+ horizontal: 'flex-row items-center',
8
+ vertical: 'flex-col items-stretch'
9
+ },
6
10
  joined: {
7
- true: 'first-child:rounded-r-none last-child:rounded-l-none not-first-not-last-child:rounded-none not-first-child:-ml-px [&>*:focus-visible]:z-10 [&>*]:active:translate-y-0',
11
+ // Joined segments overlap by a pixel: a pressed segment sits above its neighbours so its
12
+ // border is not cut by theirs, and a focused one above that.
13
+ true: '[&>[data-checked=true]]:z-1 [&>*:focus-visible]:z-10 [&>*]:active:translate-y-0',
8
14
  false: 'gap-xs'
9
15
  }
10
16
  },
17
+ compoundVariants: [
18
+ {
19
+ joined: true,
20
+ orientation: 'horizontal',
21
+ class: 'first-child:rounded-r-none last-child:rounded-l-none not-first-not-last-child:rounded-none not-first-child:-ml-px'
22
+ },
23
+ {
24
+ joined: true,
25
+ orientation: 'vertical',
26
+ class: 'first-child:rounded-b-none last-child:rounded-t-none not-first-not-last-child:rounded-none not-first-child:-mt-px'
27
+ }
28
+ ],
11
29
  defaultVariants: {
30
+ orientation: 'horizontal',
12
31
  joined: false
13
32
  }
14
33
  });