entasis 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) 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 +256 -30
  326. package/dist/components/Form/Field/Field.svelte.d.ts +9 -0
  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 +64 -8
  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 +109 -3
  337. package/dist/components/Form/Field/field.state.svelte.js +508 -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 +47 -14
  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 +40 -2
  354. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  355. package/dist/components/Form/Form/form.d.ts +35 -6
  356. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  357. package/dist/components/Form/Form/form.mcp.js +113 -13
  358. package/dist/components/Form/Form/form.props.d.ts +32 -1
  359. package/dist/components/Form/Form/form.registry.d.ts +2 -2
  360. package/dist/components/Form/Form/form.registry.js +1 -4
  361. package/dist/components/Form/Form/form.state.svelte.d.ts +1138 -413
  362. package/dist/components/Form/Form/form.state.svelte.js +319 -26
  363. package/dist/components/Form/Form/index.d.ts +3 -1
  364. package/dist/components/Form/Form/visibility.d.ts +3096 -1831
  365. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  366. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  367. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  368. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  369. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  370. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  371. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  372. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1022 -408
  373. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  374. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  375. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  376. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  377. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  378. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  379. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  380. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  381. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  382. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  383. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  384. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  385. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  386. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  387. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  388. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  389. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  390. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  391. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  392. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  393. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  394. package/dist/components/Form/PinInput/index.d.ts +1 -1
  395. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  396. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  397. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  398. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  399. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  400. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  401. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  402. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  403. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  404. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  405. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  406. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  407. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  408. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  409. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  410. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  411. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  412. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  413. package/dist/components/Form/Select/Select.svelte +186 -48
  414. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  415. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  416. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  417. package/dist/components/Form/Select/index.d.ts +2 -1
  418. package/dist/components/Form/Select/index.js +1 -0
  419. package/dist/components/Form/Select/select.align.d.ts +5 -0
  420. package/dist/components/Form/Select/select.align.js +19 -5
  421. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  422. package/dist/components/Form/Select/select.attributes.js +27 -0
  423. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  424. package/dist/components/Form/Select/select.mcp.js +103 -18
  425. package/dist/components/Form/Select/select.props.d.ts +87 -10
  426. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  427. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  428. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  429. package/dist/components/Form/Select/select.theme.js +22 -0
  430. package/dist/components/Form/Slider/Slider.svelte +54 -14
  431. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  432. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  433. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  434. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  435. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  436. package/dist/components/Form/Slider/index.d.ts +1 -1
  437. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  438. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  439. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  440. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  441. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  442. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  443. package/dist/components/Form/Slider/slider.theme.js +35 -17
  444. package/dist/components/Form/Switch/Switch.svelte +61 -38
  445. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  446. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  447. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  448. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  449. package/dist/components/Form/Switch/switch.theme.js +8 -3
  450. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  451. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  452. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  453. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  454. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  455. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  456. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  457. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  458. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  459. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  460. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  461. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  462. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  463. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  464. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  465. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  466. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  467. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  468. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  469. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  470. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  471. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  472. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  473. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  474. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  475. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  476. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  477. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  478. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  479. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  480. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  481. package/dist/components/HoverCard/index.d.ts +1 -0
  482. package/dist/components/HoverCard/index.js +1 -0
  483. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  484. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  485. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  487. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  488. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  489. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  490. package/dist/components/Kanban/kanban.theme.js +7 -3
  491. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  492. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  493. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  494. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  495. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  496. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  497. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  498. package/dist/components/Map/maplibre-cdn.js +3 -2
  499. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  500. package/dist/components/Markdown/markdown.mcp.js +2 -1
  501. package/dist/components/Markdown/markdown.theme.js +18 -9
  502. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  503. package/dist/components/Menu/Menu.svelte +3 -3
  504. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  505. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  506. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  507. package/dist/components/Menu/MenuFloating.svelte +421 -74
  508. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  509. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  510. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  511. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  512. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  513. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  514. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  515. package/dist/components/Menu/MenuStacked.svelte +404 -158
  516. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  517. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  518. package/dist/components/Menu/index.d.ts +2 -1
  519. package/dist/components/Menu/index.js +1 -0
  520. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  521. package/dist/components/Menu/menu.attributes.js +28 -0
  522. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  523. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  524. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  525. package/dist/components/Menu/menu.mcp.js +227 -17
  526. package/dist/components/Menu/menu.platform.d.ts +5 -0
  527. package/dist/components/Menu/menu.platform.js +11 -0
  528. package/dist/components/Menu/menu.props.d.ts +172 -9
  529. package/dist/components/Menu/menu.theme.d.ts +147 -0
  530. package/dist/components/Menu/menu.theme.js +101 -0
  531. package/dist/components/Menu/menuTree.d.ts +35 -1
  532. package/dist/components/Menu/menuTree.js +158 -1
  533. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  534. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  535. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  536. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  537. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  538. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  539. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  540. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  541. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  542. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  543. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  544. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  545. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  546. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  547. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  548. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  549. package/dist/components/Meter/Meter.svelte +110 -24
  550. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  551. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  552. package/dist/components/Meter/meter.mcp.js +23 -37
  553. package/dist/components/Meter/meter.props.d.ts +36 -44
  554. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  555. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  556. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  557. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  558. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  559. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/index.d.ts +4 -0
  561. package/dist/components/NavigationMenu/index.js +3 -0
  562. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  563. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  564. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  565. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  566. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  567. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  568. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  569. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  570. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  571. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  572. package/dist/components/Overlay/Overlay.svelte +19 -30
  573. package/dist/components/Overlay/index.d.ts +1 -0
  574. package/dist/components/Overlay/index.js +1 -0
  575. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  576. package/dist/components/Overlay/overlay.attributes.js +14 -0
  577. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  578. package/dist/components/Overlay/overlay.mcp.js +21 -3
  579. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  580. package/dist/components/Popover/Popover.svelte +163 -52
  581. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  582. package/dist/components/Popover/PopoverSession.svelte +12 -0
  583. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  584. package/dist/components/Popover/index.d.ts +10 -2
  585. package/dist/components/Popover/index.js +4 -1
  586. package/dist/components/Popover/popover.api.d.ts +83 -0
  587. package/dist/components/Popover/popover.api.js +1 -0
  588. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  589. package/dist/components/Popover/popover.attributes.js +28 -0
  590. package/dist/components/Popover/popover.claims.d.ts +19 -0
  591. package/dist/components/Popover/popover.claims.js +45 -0
  592. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  593. package/dist/components/Popover/popover.mcp.js +163 -31
  594. package/dist/components/Popover/popover.position.d.ts +226 -0
  595. package/dist/components/Popover/popover.position.js +402 -0
  596. package/dist/components/Popover/popover.props.d.ts +179 -24
  597. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  598. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  599. package/dist/components/Popover/popover.theme.d.ts +15 -0
  600. package/dist/components/Popover/popover.theme.js +27 -2
  601. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  602. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  603. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  604. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  605. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  606. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  607. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  608. package/dist/components/Progress/Progress.svelte +160 -0
  609. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  610. package/dist/components/Progress/index.d.ts +3 -0
  611. package/dist/components/Progress/index.js +2 -0
  612. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  613. package/dist/components/Progress/progress.mcp.js +101 -0
  614. package/dist/components/Progress/progress.props.d.ts +79 -0
  615. package/dist/components/Progress/progress.props.js +1 -0
  616. package/dist/components/Progress/progress.theme.d.ts +129 -0
  617. package/dist/components/Progress/progress.theme.js +83 -0
  618. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  619. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  620. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  621. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  622. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  623. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  624. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  625. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  626. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  627. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  628. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  629. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  630. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  631. package/dist/components/RichTextInput/suggestions.js +2 -0
  632. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  633. package/dist/components/ScrollArea/index.d.ts +2 -1
  634. package/dist/components/ScrollArea/index.js +1 -0
  635. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  636. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  637. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  638. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  639. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  640. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  641. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  642. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  643. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  644. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  645. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  646. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  647. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  648. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  649. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  650. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  651. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  652. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  653. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  654. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  655. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  656. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  657. package/dist/components/Sidebar/index.d.ts +1 -0
  658. package/dist/components/Sidebar/index.js +1 -0
  659. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  660. package/dist/components/Sidebar/sidebar-position.js +31 -2
  661. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  662. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  663. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  664. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  665. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  666. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  667. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  668. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  669. package/dist/components/Stepper/Stepper.svelte +2 -0
  670. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  671. package/dist/components/Stepper/stepper.mcp.js +1 -0
  672. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  673. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  674. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  675. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  676. package/dist/components/Tabbar/index.d.ts +1 -1
  677. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  678. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  679. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  680. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  681. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  682. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  683. package/dist/components/Tabs/Tabs.svelte +73 -16
  684. package/dist/components/Tabs/index.d.ts +2 -1
  685. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  686. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  687. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  688. package/dist/components/Tabs/tabs.mcp.js +22 -4
  689. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  690. package/dist/components/Tabs/tabs.theme.js +3 -1
  691. package/dist/components/Theme/Theme.svelte +44 -27
  692. package/dist/components/Theme/helper.d.ts +16 -2
  693. package/dist/components/Theme/helper.js +46 -4
  694. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  695. package/dist/components/Theme/theme.mcp.js +103 -0
  696. package/dist/components/Theme/theme.props.d.ts +16 -0
  697. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  698. package/dist/components/Theme/theme.state.svelte.js +18 -1
  699. package/dist/components/Toast/Toast.svelte +184 -39
  700. package/dist/components/Toast/Toaster.svelte +14 -10
  701. package/dist/components/Toast/index.d.ts +1 -0
  702. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  703. package/dist/components/Toast/toast.mcp.js +47 -6
  704. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  705. package/dist/components/Toast/toast.state.svelte.js +513 -68
  706. package/dist/components/Toast/toast.theme.js +1 -1
  707. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  708. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  709. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  710. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  711. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  712. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  713. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  714. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  715. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  716. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  720. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  721. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  722. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  723. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  724. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  725. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  726. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  727. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  728. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  729. package/dist/components/Tooltip/index.d.ts +1 -0
  730. package/dist/components/Tooltip/index.js +1 -0
  731. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  732. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  733. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  734. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  735. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  736. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  737. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  738. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  739. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  740. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  741. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  742. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  743. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  744. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  745. package/dist/generated/componentAliases.d.ts +3 -0
  746. package/dist/generated/componentAliases.js +3 -0
  747. package/dist/generated/componentContract.d.ts +79 -34
  748. package/dist/generated/componentContract.js +225 -6
  749. package/dist/generated/componentMcpRegistry.js +6 -0
  750. package/dist/i18n/ar.js +107 -3
  751. package/dist/i18n/context.svelte.d.ts +6 -0
  752. package/dist/i18n/context.svelte.js +12 -0
  753. package/dist/i18n/de.js +101 -3
  754. package/dist/i18n/en.d.ts +91 -2
  755. package/dist/i18n/en.js +101 -3
  756. package/dist/i18n/es.js +101 -3
  757. package/dist/i18n/fr.js +101 -3
  758. package/dist/i18n/ja.js +101 -3
  759. package/dist/i18n/pt.js +101 -3
  760. package/dist/i18n/zh.js +101 -3
  761. package/dist/tailwind/geometry.js +7 -0
  762. package/dist/tailwind/global.js +31 -0
  763. package/dist/types/index.d.ts +1 -0
  764. package/dist/types/types.mcp.d.ts +1 -1
  765. package/dist/types/types.mcp.js +23 -0
  766. package/dist/utils/cspNonce.d.ts +16 -0
  767. package/dist/utils/cspNonce.js +39 -0
  768. package/dist/utils/cva/merge.d.ts +5 -1
  769. package/dist/utils/cva/merge.js +6 -4
  770. package/dist/utils/focus.d.ts +34 -0
  771. package/dist/utils/focus.js +93 -0
  772. package/dist/utils/focusHistory.d.ts +21 -0
  773. package/dist/utils/focusHistory.js +99 -0
  774. package/dist/utils/handlers.d.ts +7 -0
  775. package/dist/utils/handlers.js +14 -0
  776. package/dist/utils/hoverIntent.d.ts +42 -0
  777. package/dist/utils/hoverIntent.js +57 -0
  778. package/dist/utils/id.d.ts +7 -0
  779. package/dist/utils/id.js +15 -0
  780. package/dist/utils/layers.svelte.d.ts +32 -4
  781. package/dist/utils/layers.svelte.js +214 -21
  782. package/dist/utils/listFilter.d.ts +44 -0
  783. package/dist/utils/listFilter.js +130 -0
  784. package/dist/utils/match.d.ts +35 -0
  785. package/dist/utils/match.js +36 -0
  786. package/dist/utils/number.d.ts +126 -0
  787. package/dist/utils/number.js +401 -0
  788. package/dist/utils/openChange.d.ts +88 -0
  789. package/dist/utils/openChange.js +71 -0
  790. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  791. package/dist/utils/openLifecycle.svelte.js +134 -0
  792. package/dist/utils/pointerDrag.d.ts +10 -0
  793. package/dist/utils/pointerDrag.js +37 -2
  794. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  795. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  796. package/dist/utils/range.d.ts +62 -0
  797. package/dist/utils/range.js +70 -0
  798. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  799. package/dist/utils/requestNativeSubmit.js +47 -0
  800. package/dist/utils/safeArea.svelte.d.ts +10 -1
  801. package/dist/utils/safeArea.svelte.js +19 -11
  802. package/dist/utils/stateAttributes.d.ts +108 -0
  803. package/dist/utils/stateAttributes.js +78 -0
  804. package/dist/utils/swipeVelocity.d.ts +32 -0
  805. package/dist/utils/swipeVelocity.js +59 -0
  806. package/dist/utils/timer.svelte.d.ts +65 -2
  807. package/dist/utils/timer.svelte.js +159 -25
  808. package/dist/utils/trigger.d.ts +41 -0
  809. package/dist/utils/trigger.js +103 -0
  810. package/dist/utils/typeahead.d.ts +9 -0
  811. package/dist/utils/typeahead.js +21 -9
  812. package/dist/utils/useDndList.svelte.d.ts +1 -1
  813. package/dist/utils/useDndList.svelte.js +6 -23
  814. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  815. package/dist/utils/useFocusScope.svelte.js +189 -27
  816. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  817. package/dist/utils/useHoverAction.svelte.js +161 -51
  818. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  819. package/dist/utils/useKeyDown.svelte.js +19 -12
  820. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  821. package/dist/utils/useListNavigation.svelte.js +261 -35
  822. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  823. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  824. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  825. package/dist/utils/useNavigation.svelte.js +699 -332
  826. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  827. package/dist/utils/usePressAndHold.svelte.js +191 -0
  828. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  829. package/dist/utils/useScrollLock.svelte.js +54 -13
  830. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  831. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  832. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  833. package/dist/utils/useTabBridge.svelte.js +109 -0
  834. package/dist/utils/values.d.ts +15 -0
  835. package/dist/utils/values.js +49 -0
  836. package/package.json +31 -2
  837. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  838. package/dist/utils/useDrag.svelte.d.ts +0 -11
  839. package/dist/utils/useDrag.svelte.js +0 -55
@@ -118,6 +118,10 @@ const defaultTrack = cva({
118
118
  true: 'cursor-not-allowed opacity-50',
119
119
  false: 'cursor-pointer'
120
120
  },
121
+ readOnly: {
122
+ true: 'cursor-default',
123
+ false: ''
124
+ },
121
125
  variant: {
122
126
  default: '',
123
127
  thick: '',
@@ -129,6 +133,7 @@ const defaultTrack = cva({
129
133
  size: 'normal',
130
134
  color: 'neutral',
131
135
  disabled: false,
136
+ readOnly: false,
132
137
  variant: 'default'
133
138
  },
134
139
  compoundVariants: [
@@ -239,11 +244,14 @@ const defaultRange = cva({
239
244
  }
240
245
  ]
241
246
  });
247
+ // Horizontal thumbs, hitboxes, contained ticks and marks sit at inset-inline-start, so in RTL their
248
+ // centring translate flips. It flips on `:dir(rtl)`, the nearest `dir`, rather than on the `rtl:`
249
+ // variant, which also matches inside an ltr slider placed in an rtl page.
242
250
  const defaultThumb = cva({
243
- base: 'group absolute z-20 flex size-11 touch-none appearance-none items-center justify-center rounded-full border-0 bg-transparent p-0 outline-none',
251
+ base: 'group/slider-thumb absolute z-20 flex size-11 touch-none appearance-none items-center justify-center rounded-full border-0 bg-transparent p-0 outline-none',
244
252
  variants: {
245
253
  orientation: {
246
- horizontal: 'top-1/2 -translate-x-1/2 -translate-y-1/2',
254
+ horizontal: 'top-1/2 -translate-x-1/2 -translate-y-1/2 [&:dir(rtl)]:translate-x-1/2',
247
255
  vertical: 'left-1/2 -translate-x-1/2 translate-y-1/2'
248
256
  },
249
257
  size: {
@@ -255,6 +263,10 @@ const defaultThumb = cva({
255
263
  true: 'cursor-not-allowed',
256
264
  false: 'cursor-grab active:cursor-grabbing'
257
265
  },
266
+ readOnly: {
267
+ true: 'cursor-default active:cursor-default',
268
+ false: ''
269
+ },
258
270
  color: {
259
271
  primary: '',
260
272
  secondary: '',
@@ -274,6 +286,7 @@ const defaultThumb = cva({
274
286
  orientation: 'horizontal',
275
287
  size: 'normal',
276
288
  disabled: false,
289
+ readOnly: false,
277
290
  color: 'neutral',
278
291
  variant: 'default'
279
292
  }
@@ -282,7 +295,7 @@ const defaultThumbHitbox = cva({
282
295
  base: 'absolute z-30 block touch-none rounded-full bg-transparent',
283
296
  variants: {
284
297
  orientation: {
285
- horizontal: 'top-1/2 -translate-x-1/2 -translate-y-1/2',
298
+ horizontal: 'top-1/2 -translate-x-1/2 -translate-y-1/2 [&:dir(rtl)]:translate-x-1/2',
286
299
  vertical: 'left-1/2 -translate-x-1/2 translate-y-1/2'
287
300
  },
288
301
  size: {
@@ -294,6 +307,10 @@ const defaultThumbHitbox = cva({
294
307
  true: 'pointer-events-none cursor-not-allowed',
295
308
  false: 'cursor-grab active:cursor-grabbing'
296
309
  },
310
+ readOnly: {
311
+ true: 'cursor-default active:cursor-default',
312
+ false: ''
313
+ },
297
314
  variant: {
298
315
  default: 'hidden',
299
316
  thick: '',
@@ -304,11 +321,12 @@ const defaultThumbHitbox = cva({
304
321
  orientation: 'horizontal',
305
322
  size: 'normal',
306
323
  disabled: false,
324
+ readOnly: false,
307
325
  variant: 'default'
308
326
  }
309
327
  });
310
328
  const defaultThumbVisual = cva({
311
- base: 'pointer-events-none rounded-full border-2 border-surface bg-current lift-1 ring-offset-surface transition-[box-shadow,transform] group-focus-visible:ring-2 group-focus-visible:ring-focus/50 group-focus-visible:ring-offset-2',
329
+ base: 'pointer-events-none rounded-full border-2 border-surface bg-current lift-1 ring-offset-surface transition-[box-shadow,transform] group-has-[:focus-visible]/slider-thumb:ring-2 group-has-[:focus-visible]/slider-thumb:ring-focus/50 group-has-[:focus-visible]/slider-thumb:ring-offset-2',
312
330
  variants: {
313
331
  orientation: {
314
332
  horizontal: '',
@@ -357,7 +375,7 @@ const defaultThumbVisual = cva({
357
375
  { orientation: 'vertical', variant: 'thick', size: 'large', class: 'h-9 w-5' },
358
376
  {
359
377
  variant: 'contained',
360
- class: 'bg-neutral/45 scale-75 border-0 shadow-none transition-[background-color,transform] duration-normal ease-standard group-focus-visible:scale-100 group-focus-visible:bg-neutral/80'
378
+ class: 'bg-neutral/45 scale-75 border-0 shadow-none transition-[background-color,transform] duration-normal ease-standard group-has-[:focus-visible]/slider-thumb:scale-100 group-has-[:focus-visible]/slider-thumb:bg-neutral/80'
361
379
  },
362
380
  { orientation: 'horizontal', variant: 'contained', size: 'small', class: 'h-5 w-1' },
363
381
  { orientation: 'horizontal', variant: 'contained', size: 'normal', class: 'h-7 w-1.5' },
@@ -401,19 +419,19 @@ const defaultValueLabels = cva({
401
419
  orientation: 'horizontal',
402
420
  variant: 'contained',
403
421
  size: 'small',
404
- class: 'pointer-events-none absolute top-0 right-3 z-30 h-8 flex-nowrap'
422
+ class: 'pointer-events-none absolute top-0 end-3 z-30 h-8 flex-nowrap'
405
423
  },
406
424
  {
407
425
  orientation: 'horizontal',
408
426
  variant: 'contained',
409
427
  size: 'normal',
410
- class: 'pointer-events-none absolute top-0 right-4 z-30 h-10 flex-nowrap'
428
+ class: 'pointer-events-none absolute top-0 end-4 z-30 h-10 flex-nowrap'
411
429
  },
412
430
  {
413
431
  orientation: 'horizontal',
414
432
  variant: 'contained',
415
433
  size: 'large',
416
- class: 'pointer-events-none absolute top-0 right-5 z-30 h-12 flex-nowrap'
434
+ class: 'pointer-events-none absolute top-0 end-5 z-30 h-12 flex-nowrap'
417
435
  },
418
436
  {
419
437
  orientation: 'horizontal',
@@ -483,15 +501,15 @@ const defaultValueLabel = cva({
483
501
  ]
484
502
  });
485
503
  const defaultContainedLabel = cva({
486
- base: 'text-neutral/70 pointer-events-none absolute top-0 left-0 z-30 flex max-w-[55%] min-w-0 items-center truncate font-medium',
504
+ base: 'text-neutral/70 pointer-events-none absolute top-0 start-0 z-30 flex max-w-[55%] min-w-0 items-center truncate font-medium',
487
505
  variants: {
488
506
  size: {
489
- small: 'h-8 pl-lg text-xs',
490
- normal: 'h-10 pl-xl text-sm',
491
- large: 'h-12 pl-layout-sm text-base'
507
+ small: 'h-8 ps-lg text-xs',
508
+ normal: 'h-10 ps-xl text-sm',
509
+ large: 'h-12 ps-layout-sm text-base'
492
510
  },
493
511
  required: {
494
- true: "after:text-danger-readable after:ml-xs after:content-['*']",
512
+ true: "after:text-danger-readable after:ms-xs after:content-['*']",
495
513
  false: ''
496
514
  },
497
515
  hasError: {
@@ -521,7 +539,7 @@ const defaultContainedTick = cva({
521
539
  base: 'bg-current/10 absolute rounded-full',
522
540
  variants: {
523
541
  orientation: {
524
- horizontal: 'top-1/2 w-px -translate-x-1/2 -translate-y-1/2',
542
+ horizontal: 'top-1/2 w-px -translate-x-1/2 -translate-y-1/2 [&:dir(rtl)]:translate-x-1/2',
525
543
  vertical: 'left-1/2 h-px -translate-x-1/2 translate-y-1/2'
526
544
  },
527
545
  size: {
@@ -548,7 +566,7 @@ const defaultMarks = cva({
548
566
  variants: {
549
567
  orientation: {
550
568
  horizontal: 'mt-sm h-5 w-full',
551
- vertical: 'absolute inset-y-0 left-full ml-lg w-16'
569
+ vertical: 'absolute inset-y-0 start-full ms-lg w-16'
552
570
  },
553
571
  size: {
554
572
  small: 'text-xs',
@@ -565,8 +583,8 @@ const defaultMark = cva({
565
583
  base: 'absolute flex text-center',
566
584
  variants: {
567
585
  orientation: {
568
- horizontal: 'top-0 -translate-x-1/2 flex-col items-center gap-xs',
569
- vertical: 'left-0 -translate-y-1/2 items-center gap-md'
586
+ horizontal: 'top-0 -translate-x-1/2 [&:dir(rtl)]:translate-x-1/2 flex-col items-center gap-xs',
587
+ vertical: 'start-0 -translate-y-1/2 items-center gap-md'
570
588
  }
571
589
  },
572
590
  defaultVariants: {
@@ -1,6 +1,7 @@
1
1
  <script lang="ts">
2
2
  import { untrack } from 'svelte';
3
3
  import Field from '../Field/Field.svelte';
4
+ import FieldHiddenInputs from '../Field/FieldHiddenInputs.svelte';
4
5
  import { useFieldTheme } from '../Field/field.theme.js';
5
6
  import { createFieldState } from '../Field/field.state.svelte.js';
6
7
  import type { SwitchProps } from './switch.props.js';
@@ -15,6 +16,8 @@
15
16
  required = false,
16
17
  theme,
17
18
  disabled,
19
+ readOnly,
20
+ messages,
18
21
  name,
19
22
  onValidate,
20
23
  visible,
@@ -22,11 +25,16 @@
22
25
  label,
23
26
  labelPosition,
24
27
  onValueChange,
28
+ inputValue = 'true',
29
+ inputAttrs,
25
30
  ...rest
26
31
  }: SwitchProps = $props();
27
32
  if (value === undefined) value = untrack(() => defaultValue);
28
33
 
29
34
  const id = $props.id();
35
+ // Field falls back to a generated name so Form wiring stays unique. Only a name the app gave,
36
+ // directly or through Form, is submitted: an unnamed switch submits nothing, like a checkbox.
37
+ let generatedName: string | undefined;
30
38
 
31
39
  const field = createFieldState({
32
40
  id,
@@ -57,17 +65,25 @@
57
65
  set disabled(v: boolean | undefined) {
58
66
  disabled = v;
59
67
  },
68
+ get readOnly() {
69
+ return readOnly;
70
+ },
71
+ get messages() {
72
+ return messages;
73
+ },
60
74
  get required() {
61
75
  return required;
62
76
  },
63
77
  get name() {
64
- return name;
78
+ return name || generatedName;
65
79
  },
66
80
  set name(v: string | undefined) {
67
- name = v;
81
+ generatedName = v;
68
82
  },
69
- get onValidate() {
70
- return onValidate;
83
+ // Required means the switch must be on, as for Checkbox: an off switch is not an answer.
84
+ onValidate: (checked) => {
85
+ if (required && !checked) return true;
86
+ return onValidate?.(checked) || false;
71
87
  },
72
88
  get visible() {
73
89
  return visible;
@@ -77,24 +93,15 @@
77
93
 
78
94
  const classes = $derived(useSwitchTheme(theme));
79
95
  const fieldClasses = $derived(useFieldTheme(theme));
80
- const onclick = () => {
81
- if (disabled) return;
96
+ // A read-only or disabled switch refuses the edit inside setValue.
97
+ const toggle = () => {
82
98
  field.value = !field.value;
83
99
  };
84
-
85
- const onKeydown = (e: KeyboardEvent) => {
86
- if (disabled) return;
87
- if (e.key === 'Enter' || e.key === ' ') {
88
- e.preventDefault();
89
- field.value = !field.value;
90
- }
91
- };
92
100
  </script>
93
101
 
94
102
  <Field
95
103
  {field}
96
104
  {labelPosition}
97
- labelFor={false}
98
105
  label={labelPosition ? label : undefined}
99
106
  theme={{
100
107
  ...(theme || {}),
@@ -109,35 +116,51 @@
109
116
  }}
110
117
  {...rest}
111
118
  >
112
- <input
113
- onchange={onclick}
114
- name={field.name}
115
- id={'input-' + field.id}
116
- {value}
117
- hidden
118
- disabled={field.disabled}
119
- type="checkbox"
120
- />
121
- <div
119
+ <!-- A native button: Enter and Space toggle once (Space on release), a disabled switch takes no
120
+ focus, and the labels below are <label for>, so a click on one toggles it. The name comes
121
+ from the label, or from an `aria-label` in inputAttrs. -->
122
+ <button
123
+ {...inputAttrs}
122
124
  bind:this={field.node}
123
125
  id={field.id}
124
- data-checked={!!value}
125
- aria-checked={!!value}
126
- aria-labelledby={label ? field.labelId : undefined}
127
- aria-disabled={field.disabled || undefined}
126
+ type="button"
128
127
  role="switch"
129
- tabindex={field.disabled ? -1 : 0}
130
- class={classes.toggle({ checked: !!value, size, disabled })}
131
- {onclick}
132
- onkeydown={onKeydown}
133
- onfocus={() => (field.focused = true)}
134
- onblur={() => (field.focused = false)}
128
+ aria-checked={!!field.value}
129
+ disabled={field.disabled}
130
+ data-checked={!!field.value}
131
+ data-readonly={field.readOnly ? '' : undefined}
132
+ class={classes.toggle({
133
+ checked: !!field.value,
134
+ size,
135
+ disabled: field.disabled,
136
+ readOnly: field.readOnly
137
+ })}
138
+ onclick={(event) => {
139
+ inputAttrs?.onclick?.(event);
140
+ if (!event.defaultPrevented) toggle();
141
+ }}
142
+ onfocus={(event) => {
143
+ inputAttrs?.onfocus?.(event);
144
+ field.focused = true;
145
+ }}
146
+ onblur={(event) => {
147
+ inputAttrs?.onblur?.(event);
148
+ field.focused = false;
149
+ }}
135
150
  >
136
- <span class={classes.thumb({ checked: !!value, size })} data-checked={!!value}></span>
137
- </div>
151
+ <span class={classes.thumb({ checked: !!field.value, size })} data-checked={!!field.value}
152
+ ></span>
153
+ </button>
154
+ <!-- Beside the button, not inside it: a button may not contain interactive content. -->
155
+ <FieldHiddenInputs {field} checked={!!field.value} value={inputValue} />
138
156
  {#snippet suffix()}
139
157
  {#if !labelPosition}
140
- <Slot as="span" attrs={{ id: field.labelId }} render={label} class={fieldClasses.label()} />
158
+ <Slot
159
+ as="label"
160
+ attrs={{ id: field.labelId, for: field.id }}
161
+ render={label}
162
+ class={fieldClasses.label({ required: field.required, disabled: field.disabled })}
163
+ />
141
164
  {/if}
142
165
  {/snippet}
143
166
  </Field>
@@ -1 +1 @@
1
- export declare const switchDescription = "\n# Switch Component\n\nThe Switch component is a toggle control for boolean settings, providing a visual on/off state with smooth animations.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet enabled = $state(false);\n</script>\n\n<Switch label=\"Enable notifications\" bind:value={enabled} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **value**: boolean | null (bindable) - Toggle state (bind with `bind:value`)\n- **defaultValue**: boolean | null (default: null) - Initial value when value is omitted\n\n### Field Props (inherited)\n- **label**: string | Snippet - Field label\n- **description**: string | Snippet - Helper text\n- **error**: string - Error message\n- **required**: boolean - Mark as required\n- **disabled**: boolean - Disable toggle\n- **size**: 'small' | 'normal' | 'large' - Switch size\n\n### Event Props\n- **onValueChange**: (value: boolean) => void - Called when toggled\n\n### Styling Props\n- **class**: string - Additional CSS classes\n- **theme**: ComponentTheme - Custom theme overrides\n\n## Structure\n\n```\n<Field>\n\t<InputContainer>\n\t\t<SwitchToggle>\n\t\t\t<SwitchThumb />\n\t\t</SwitchToggle>\n\t\t<Label />\n\t</InputContainer>\n\t<Description />\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic Switch\n```svelte\n<script>\n\tlet notifications = $state(false);\n</script>\n\n<Switch \n\tlabel=\"Enable Notifications\"\n\tbind:value={notifications}\n/>\n```\n\n### With Description\n```svelte\n<Switch \n\tlabel=\"Auto-save\"\n\tdescription=\"Automatically save your work every 5 minutes\"\n\tbind:value={autoSave}\n/>\n```\n\n### Required Switch\n```svelte\n<Switch \n\tlabel=\"I agree to the terms and conditions\"\n\tbind:value={agreedToTerms}\n\trequired\n/>\n```\n\n### Disabled Switch\n```svelte\n<Switch \n\tlabel=\"Premium Feature\"\n\tvalue={false}\n\tdisabled\n\tdescription=\"Upgrade to unlock this feature\"\n/>\n```\n\n### Different Sizes\n```svelte\n<Switch size=\"small\" label=\"Small Switch\" bind:value={val1} />\n<Switch size=\"normal\" label=\"Normal Switch\" bind:value={val2} />\n<Switch size=\"large\" label=\"Large Switch\" bind:value={val3} />\n```\n\n### With Change Handler\n```svelte\n<script>\n\tfunction handleToggle(checked) {\n\t\tconsole.log('Switch toggled:', checked);\n\t\t// Save to API, etc.\n\t}\n</script>\n\n<Switch \n\tlabel=\"Dark Mode\"\n\tbind:value={darkMode}\n\tonValueChange={handleToggle}\n/>\n```\n\n### Settings Panel\n```svelte\n<script>\n\tlet settings = $state({\n\t\tnotifications: true,\n\t\temailUpdates: false,\n\t\tautoPlay: false,\n\t\tshowPreview: true\n\t});\n</script>\n\n<div class=\"space-y-4\">\n\t<Switch \n\t\tlabel=\"Push Notifications\"\n\t\tdescription=\"Receive notifications on your device\"\n\t\tbind:value={settings.notifications}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Email Updates\"\n\t\tdescription=\"Get weekly email summaries\"\n\t\tbind:value={settings.emailUpdates}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Auto-play Videos\"\n\t\tdescription=\"Videos start playing automatically\"\n\t\tbind:value={settings.autoPlay}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Show Preview\"\n\t\tdescription=\"Display content previews\"\n\t\tbind:value={settings.showPreview}\n\t/>\n</div>\n```\n\n### Privacy Settings\n```svelte\n<form>\n\t<Heading size=\"h3\">Privacy Settings</Heading>\n\t\n\t<Switch \n\t\tlabel=\"Profile Visibility\"\n\t\tdescription=\"Make your profile visible to other users\"\n\t\tbind:value={privacy.profileVisible}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Show Email\"\n\t\tdescription=\"Display your email on your profile\"\n\t\tbind:value={privacy.showEmail}\n\t\tdisabled={!privacy.profileVisible}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Activity Status\"\n\t\tdescription=\"Show when you're online\"\n\t\tbind:value={privacy.showActivity}\n\t/>\n\t\n\t<Button type=\"submit\">Save Settings</Button>\n</form>\n```\n\n### Feature Toggles\n```svelte\n<script>\n\tlet features = $state({\n\t\texperimental: false,\n\t\tbeta: false,\n\t\tanalytics: true\n\t});\n\t\n\t$effect(() => {\n\t\tif (features.experimental) {\n\t\t\tconsole.log('Experimental features enabled');\n\t\t}\n\t});\n</script>\n\n<div class=\"panel\">\n\t<Heading size=\"h4\">Feature Flags</Heading>\n\t\n\t<Switch \n\t\tlabel=\"Experimental Features\"\n\t\tdescription=\"\u26A0\uFE0F Use at your own risk\"\n\t\tbind:value={features.experimental}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Beta Features\"\n\t\tdescription=\"Try new features before they're released\"\n\t\tbind:value={features.beta}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Analytics\"\n\t\tdescription=\"Help us improve by sharing usage data\"\n\t\tbind:value={features.analytics}\n\t/>\n</div>\n```\n\n### Conditional Content\n```svelte\n<script>\n\tlet advancedMode = $state(false);\n</script>\n\n<Switch \n\tlabel=\"Advanced Mode\"\n\tdescription=\"Show advanced options\"\n\tbind:value={advancedMode}\n/>\n\n{#if advancedMode}\n\t<div class=\"advanced-options\">\n\t\t<!-- Advanced settings here -->\n\t</div>\n{/if}\n```\n\n### Form Integration\n```svelte\n<Form \n\tinputs={{\n\t\tname: { type: 'text', label: 'Name', required: true },\n\t\tnotifications: { \n\t\t\ttype: 'switch', \n\t\t\tlabel: 'Enable Notifications',\n\t\t\tdescription: 'Receive important updates'\n\t\t},\n\t\tmarketing: { \n\t\t\ttype: 'switch', \n\t\t\tlabel: 'Marketing Emails'\n\t\t}\n\t}}\n\tonSubmit={handleSubmit}\n/>\n```\n\n## Validation\n\nSwitch validates:\n- **required**: Must be checked (useful for terms acceptance)\n\n## Accessibility\n\n- Proper ARIA roles and attributes\n- Keyboard accessible (Space/Enter to toggle)\n- Focus states clearly visible\n- Label clickable to toggle\n- State changes announced to screen readers\n- Disabled state communicated properly\n\n## Notes\n\n- Smooth animated transitions between states\n- Visual feedback on hover and focus\n- Works standalone or within forms\n- Thumb slides with smooth animation\n- Toggle background changes color based on state\n- Supports all Field component features\n\n## Theme Customization\n\nThe Switch 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- **toggle**: Switch toggle track styles\n- **thumb**: Switch thumb/knob styles\n- **inputContainer**: Container wrapper styles\n\n### Available Variants\n\n**toggle**:\n- base: Base classes for the toggle track\n- Variants:\n - checked: boolean - Background and border color based on checked state\n - size: 'small' | 'normal' | 'large' - Toggle dimensions (height and width)\n - disabled: boolean - Disabled state styling\n\n**thumb**:\n- base: Base classes for the thumb/knob\n- Variants:\n - checked: boolean - Thumb position and styling based on checked state\n - size: 'small' | 'normal' | 'large' - Thumb dimensions\n\n**inputContainer**:\n- base: Base classes for the container wrapper\n- Variants:\n - size: 'small' | 'normal' | 'large' - Gap spacing between label and toggle\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Switch \n label=\"Enable Feature\"\n bind:value={enabled}\n theme={{\n toggle: {\n base: 'rounded-full transition-all',\n checked: {\n true: 'bg-green-500 border-green-600'\n },\n size: {\n normal: 'h-6 w-11'\n }\n },\n thumb: {\n size: {\n normal: 'h-5 w-5'\n }\n }\n }}\n/>\n```\n\n**Custom Colors**:\n```svelte\n<Switch \n label=\"Custom Switch\"\n bind:value={checked}\n theme={{\n toggle: {\n checked: {\n true: 'bg-purple-500 border-purple-600',\n false: 'bg-gray-300 border-gray-400'\n }\n },\n thumb: {\n checked: {\n true: 'bg-white border-purple-500',\n false: 'bg-white border-gray-400'\n }\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setSwitchTheme } from './index.ts';\n \n setSwitchTheme({\n toggle: {\n base: 'transition-all duration-300',\n checked: {\n true: 'bg-primary border-primary lift-3'\n },\n size: {\n normal: 'h-6 w-12'\n }\n },\n thumb: {\n base: 'lift-4',\n size: {\n normal: 'h-5 w-5'\n }\n }\n });\n</script>\n```\n";
1
+ export declare const switchDescription = "\n# Switch Component\n\nThe Switch component is a toggle control for boolean settings, providing a visual on/off state with smooth animations.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet enabled = $state(false);\n</script>\n\n<Switch label=\"Enable notifications\" bind:value={enabled} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **value**: boolean | null (bindable) - Toggle state (bind with `bind:value`)\n- **defaultValue**: boolean | null (default: null) - Initial value when value is omitted\n- **inputValue**: string (default: 'true') - Value a native `<form>` submits under `name` while the switch is on; an off switch, or one without a `name`, submits nothing\n- **inputAttrs**: FieldButtonAttributes - Native attributes for the switch control, such as `aria-label`, `title`, `data-*` and event handlers. An `aria-label` names the switch instead of its label; a handler that calls `preventDefault()` cancels the toggle\n\n### Field Props (inherited)\n- **label**: string | Snippet - Field label\n- **description**: string | Snippet - Helper text\n- **error**: string - Error message\n- **required**: boolean - The switch must be on to be valid (like Checkbox); off, it shows the catalog message asking to turn it on (override with `messages.required`)\n- **disabled**: boolean - Disable toggle\n- **readOnly**: boolean - Keeps the switch focusable with `aria-readonly` while clicks and keys change nothing; the value still validates and submits\n- **size**: 'small' | 'normal' | 'large' - Switch size\n\n### Event Props\n- **onValueChange**: (value: boolean) => void - Called when toggled\n\n### Styling Props\n- **class**: string - Additional CSS classes\n- **theme**: ComponentTheme - Custom theme overrides\n\n## Structure\n\n```\n<Field>\n\t<InputContainer>\n\t\t<SwitchToggle>\n\t\t\t<SwitchThumb />\n\t\t</SwitchToggle>\n\t\t<Label />\n\t</InputContainer>\n\t<Description />\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic Switch\n```svelte\n<script>\n\tlet notifications = $state(false);\n</script>\n\n<Switch \n\tlabel=\"Enable Notifications\"\n\tbind:value={notifications}\n/>\n```\n\n### With Description\n```svelte\n<Switch \n\tlabel=\"Auto-save\"\n\tdescription=\"Automatically save your work every 5 minutes\"\n\tbind:value={autoSave}\n/>\n```\n\n### Required Switch\nA required switch is valid only while it is on, so it fits consent and terms acceptance.\n```svelte\n<Switch \n\tlabel=\"I agree to the terms and conditions\"\n\tbind:value={agreedToTerms}\n\trequired\n/>\n```\n\n### Native Form Submission\nInside a plain `<form>` (for example a SvelteKit form action), the switch submits its `name` with\n`inputValue` while it is on and nothing while it is off, like a native checkbox. A switch without a\n`name` submits nothing. A required switch that is off blocks the submit; when it is the first invalid\ncontrol, the browser's report lands on the switch, which takes focus and shows its error. A silent\n`checkValidity()` changes nothing.\n```svelte\n<form method=\"POST\">\n\t<Switch name=\"marketing\" inputValue=\"yes\" label=\"Marketing emails\" />\n\t<Switch name=\"terms\" label=\"Accept the terms\" required />\n\t<button type=\"submit\">Save</button>\n</form>\n```\n\n### Disabled Switch\n```svelte\n<Switch \n\tlabel=\"Premium Feature\"\n\tvalue={false}\n\tdisabled\n\tdescription=\"Upgrade to unlock this feature\"\n/>\n```\n\n### Different Sizes\n```svelte\n<Switch size=\"small\" label=\"Small Switch\" bind:value={val1} />\n<Switch size=\"normal\" label=\"Normal Switch\" bind:value={val2} />\n<Switch size=\"large\" label=\"Large Switch\" bind:value={val3} />\n```\n\n### With Change Handler\n```svelte\n<script>\n\tfunction handleToggle(checked) {\n\t\tconsole.log('Switch toggled:', checked);\n\t\t// Save to API, etc.\n\t}\n</script>\n\n<Switch \n\tlabel=\"Dark Mode\"\n\tbind:value={darkMode}\n\tonValueChange={handleToggle}\n/>\n```\n\n### Settings Panel\n```svelte\n<script>\n\tlet settings = $state({\n\t\tnotifications: true,\n\t\temailUpdates: false,\n\t\tautoPlay: false,\n\t\tshowPreview: true\n\t});\n</script>\n\n<div class=\"space-y-4\">\n\t<Switch \n\t\tlabel=\"Push Notifications\"\n\t\tdescription=\"Receive notifications on your device\"\n\t\tbind:value={settings.notifications}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Email Updates\"\n\t\tdescription=\"Get weekly email summaries\"\n\t\tbind:value={settings.emailUpdates}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Auto-play Videos\"\n\t\tdescription=\"Videos start playing automatically\"\n\t\tbind:value={settings.autoPlay}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Show Preview\"\n\t\tdescription=\"Display content previews\"\n\t\tbind:value={settings.showPreview}\n\t/>\n</div>\n```\n\n### Privacy Settings\n```svelte\n<form>\n\t<Heading size=\"h3\">Privacy Settings</Heading>\n\t\n\t<Switch \n\t\tlabel=\"Profile Visibility\"\n\t\tdescription=\"Make your profile visible to other users\"\n\t\tbind:value={privacy.profileVisible}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Show Email\"\n\t\tdescription=\"Display your email on your profile\"\n\t\tbind:value={privacy.showEmail}\n\t\tdisabled={!privacy.profileVisible}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Activity Status\"\n\t\tdescription=\"Show when you're online\"\n\t\tbind:value={privacy.showActivity}\n\t/>\n\t\n\t<Button type=\"submit\">Save Settings</Button>\n</form>\n```\n\n### Feature Toggles\n```svelte\n<script>\n\tlet features = $state({\n\t\texperimental: false,\n\t\tbeta: false,\n\t\tanalytics: true\n\t});\n\t\n\t$effect(() => {\n\t\tif (features.experimental) {\n\t\t\tconsole.log('Experimental features enabled');\n\t\t}\n\t});\n</script>\n\n<div class=\"panel\">\n\t<Heading size=\"h4\">Feature Flags</Heading>\n\t\n\t<Switch \n\t\tlabel=\"Experimental Features\"\n\t\tdescription=\"\u26A0\uFE0F Use at your own risk\"\n\t\tbind:value={features.experimental}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Beta Features\"\n\t\tdescription=\"Try new features before they're released\"\n\t\tbind:value={features.beta}\n\t/>\n\t\n\t<Switch \n\t\tlabel=\"Analytics\"\n\t\tdescription=\"Help us improve by sharing usage data\"\n\t\tbind:value={features.analytics}\n\t/>\n</div>\n```\n\n### Conditional Content\n```svelte\n<script>\n\tlet advancedMode = $state(false);\n</script>\n\n<Switch \n\tlabel=\"Advanced Mode\"\n\tdescription=\"Show advanced options\"\n\tbind:value={advancedMode}\n/>\n\n{#if advancedMode}\n\t<div class=\"advanced-options\">\n\t\t<!-- Advanced settings here -->\n\t</div>\n{/if}\n```\n\n### Form Integration\n```svelte\n<Form \n\tinputs={{\n\t\tname: { type: 'text', label: 'Name', required: true },\n\t\tnotifications: { \n\t\t\ttype: 'switch', \n\t\t\tlabel: 'Enable Notifications',\n\t\t\tdescription: 'Receive important updates'\n\t\t},\n\t\tmarketing: { \n\t\t\ttype: 'switch', \n\t\t\tlabel: 'Marketing Emails'\n\t\t}\n\t}}\n\tonSubmit={handleSubmit}\n/>\n```\n\n## Validation\n\nSwitch validates:\n- **required**: Must be on (useful for terms acceptance); an off switch fails Form validation and native form submission\n\n## Accessibility\n\n- The control is a native `<button role=\"switch\">` with `aria-checked`; a required switch carries `aria-required` and a required marker on its label\n- Keyboard accessible: Enter toggles once on press and Space once on release (holding Space does not repeat), because the browser's own button handling does it\n- Focus states clearly visible\n- The label is a `<label for>` the switch, so it names the switch and clicking it toggles it exactly once; an `aria-label` in `inputAttrs` names the switch instead\n- A disabled switch is a disabled button and takes no focus; a read-only one stays focusable with `aria-readonly` and does not toggle\n- The native submission is a hidden checkbox beside the button, never inside it\n- State changes announced to screen readers\n- Disabled state communicated properly\n\n## Notes\n\n- Smooth animated transitions between states\n- Visual feedback on hover and focus\n- Works standalone or within forms\n- Thumb slides with smooth animation\n- Toggle background changes color based on state\n- Supports all Field component features\n\n## Theme Customization\n\nThe Switch 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- **toggle**: Switch toggle track styles\n- **thumb**: Switch thumb/knob styles\n- **inputContainer**: Container wrapper styles\n\n### Available Variants\n\n**toggle**:\n- base: Base classes for the toggle track\n- Variants:\n - checked: boolean - Background and border color based on checked state\n - size: 'small' | 'normal' | 'large' - Toggle dimensions (height and width)\n - disabled: boolean - Disabled state styling\n\n**thumb**:\n- base: Base classes for the thumb/knob\n- Variants:\n - checked: boolean - Thumb position and styling based on checked state\n - size: 'small' | 'normal' | 'large' - Thumb dimensions\n\n**inputContainer**:\n- base: Base classes for the container wrapper\n- Variants:\n - size: 'small' | 'normal' | 'large' - Gap spacing between label and toggle\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Switch \n label=\"Enable Feature\"\n bind:value={enabled}\n theme={{\n toggle: {\n base: 'rounded-full transition-all',\n checked: {\n true: 'bg-green-500 border-green-600'\n },\n size: {\n normal: 'h-6 w-11'\n }\n },\n thumb: {\n size: {\n normal: 'h-5 w-5'\n }\n }\n }}\n/>\n```\n\n**Custom Colors**:\n```svelte\n<Switch \n label=\"Custom Switch\"\n bind:value={checked}\n theme={{\n toggle: {\n checked: {\n true: 'bg-purple-500 border-purple-600',\n false: 'bg-gray-300 border-gray-400'\n }\n },\n thumb: {\n checked: {\n true: 'bg-white border-purple-500',\n false: 'bg-white border-gray-400'\n }\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setSwitchTheme } from './index.ts';\n \n setSwitchTheme({\n toggle: {\n base: 'transition-all duration-300',\n checked: {\n true: 'bg-primary border-primary lift-3'\n },\n size: {\n normal: 'h-6 w-12'\n }\n },\n thumb: {\n base: 'lift-4',\n size: {\n normal: 'h-5 w-5'\n }\n }\n });\n</script>\n```\n";
@@ -20,13 +20,16 @@ Extends all Field component props plus:
20
20
  ### Core Props
21
21
  - **value**: boolean | null (bindable) - Toggle state (bind with \`bind:value\`)
22
22
  - **defaultValue**: boolean | null (default: null) - Initial value when value is omitted
23
+ - **inputValue**: string (default: 'true') - Value a native \`<form>\` submits under \`name\` while the switch is on; an off switch, or one without a \`name\`, submits nothing
24
+ - **inputAttrs**: FieldButtonAttributes - Native attributes for the switch control, such as \`aria-label\`, \`title\`, \`data-*\` and event handlers. An \`aria-label\` names the switch instead of its label; a handler that calls \`preventDefault()\` cancels the toggle
23
25
 
24
26
  ### Field Props (inherited)
25
27
  - **label**: string | Snippet - Field label
26
28
  - **description**: string | Snippet - Helper text
27
29
  - **error**: string - Error message
28
- - **required**: boolean - Mark as required
30
+ - **required**: boolean - The switch must be on to be valid (like Checkbox); off, it shows the catalog message asking to turn it on (override with \`messages.required\`)
29
31
  - **disabled**: boolean - Disable toggle
32
+ - **readOnly**: boolean - Keeps the switch focusable with \`aria-readonly\` while clicks and keys change nothing; the value still validates and submits
30
33
  - **size**: 'small' | 'normal' | 'large' - Switch size
31
34
 
32
35
  ### Event Props
@@ -75,6 +78,7 @@ Extends all Field component props plus:
75
78
  \`\`\`
76
79
 
77
80
  ### Required Switch
81
+ A required switch is valid only while it is on, so it fits consent and terms acceptance.
78
82
  \`\`\`svelte
79
83
  <Switch
80
84
  label="I agree to the terms and conditions"
@@ -83,6 +87,20 @@ Extends all Field component props plus:
83
87
  />
84
88
  \`\`\`
85
89
 
90
+ ### Native Form Submission
91
+ Inside a plain \`<form>\` (for example a SvelteKit form action), the switch submits its \`name\` with
92
+ \`inputValue\` while it is on and nothing while it is off, like a native checkbox. A switch without a
93
+ \`name\` submits nothing. A required switch that is off blocks the submit; when it is the first invalid
94
+ control, the browser's report lands on the switch, which takes focus and shows its error. A silent
95
+ \`checkValidity()\` changes nothing.
96
+ \`\`\`svelte
97
+ <form method="POST">
98
+ <Switch name="marketing" inputValue="yes" label="Marketing emails" />
99
+ <Switch name="terms" label="Accept the terms" required />
100
+ <button type="submit">Save</button>
101
+ </form>
102
+ \`\`\`
103
+
86
104
  ### Disabled Switch
87
105
  \`\`\`svelte
88
106
  <Switch
@@ -262,14 +280,16 @@ Extends all Field component props plus:
262
280
  ## Validation
263
281
 
264
282
  Switch validates:
265
- - **required**: Must be checked (useful for terms acceptance)
283
+ - **required**: Must be on (useful for terms acceptance); an off switch fails Form validation and native form submission
266
284
 
267
285
  ## Accessibility
268
286
 
269
- - Proper ARIA roles and attributes
270
- - Keyboard accessible (Space/Enter to toggle)
287
+ - The control is a native \`<button role="switch">\` with \`aria-checked\`; a required switch carries \`aria-required\` and a required marker on its label
288
+ - Keyboard accessible: Enter toggles once on press and Space once on release (holding Space does not repeat), because the browser's own button handling does it
271
289
  - Focus states clearly visible
272
- - Label clickable to toggle
290
+ - The label is a \`<label for>\` the switch, so it names the switch and clicking it toggles it exactly once; an \`aria-label\` in \`inputAttrs\` names the switch instead
291
+ - A disabled switch is a disabled button and takes no focus; a read-only one stays focusable with \`aria-readonly\` and does not toggle
292
+ - The native submission is a hidden checkbox beside the button, never inside it
273
293
  - State changes announced to screen readers
274
294
  - Disabled state communicated properly
275
295
 
@@ -1,6 +1,19 @@
1
- import type { InputProps } from '../Field/field.js';
1
+ import type { FieldButtonAttributes, InputProps } from '../Field/field.js';
2
2
  import type { SwitchThemeProps } from './switch.theme.js';
3
3
  export type SwitchProps = InputProps<'switch'> & {
4
+ /** A required switch is valid only while it is on, in a Form and in a native `<form>`. */
5
+ required?: boolean;
6
+ /**
7
+ * Value submitted with the switch's `name` by a native `<form>` while the switch is on; an
8
+ * off switch, or one without a `name`, submits nothing, like a native checkbox. Defaults to
9
+ * `'true'`.
10
+ */
11
+ inputValue?: string;
12
+ /**
13
+ * Native attributes for the switch control, such as `aria-label`, `title` or `data-*`. An
14
+ * `aria-label` names the switch instead of its label.
15
+ */
16
+ inputAttrs?: FieldButtonAttributes;
4
17
  /** Theme overrides for the switch toggle, thumb, input container, and field parts. */
5
18
  theme?: SwitchThemeProps & InputProps<'switch'>['theme'];
6
19
  };
@@ -14,6 +14,10 @@ export declare const switchTheme: {
14
14
  true: string;
15
15
  false: string;
16
16
  };
17
+ readOnly: {
18
+ true: string;
19
+ false: string;
20
+ };
17
21
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
18
22
  thumb: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
19
23
  checked: {
@@ -55,6 +59,10 @@ export declare const setSwitchTheme: (theme: InferComponentTheme<{
55
59
  true: string;
56
60
  false: string;
57
61
  };
62
+ readOnly: {
63
+ true: string;
64
+ false: string;
65
+ };
58
66
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
59
67
  thumb: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
60
68
  checked: {
@@ -94,6 +102,10 @@ export declare const useSwitchTheme: import("../../../utils/cva/theme.js").UseCo
94
102
  true: string;
95
103
  false: string;
96
104
  };
105
+ readOnly: {
106
+ true: string;
107
+ false: string;
108
+ };
97
109
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
98
110
  thumb: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
99
111
  checked: {
@@ -15,6 +15,11 @@ const defaultSwitchToggle = cva({
15
15
  disabled: {
16
16
  true: 'cursor-not-allowed opacity-50',
17
17
  false: ''
18
+ },
19
+ // Focusable and announced, but not changeable: no pointer cursor promising a toggle.
20
+ readOnly: {
21
+ true: 'cursor-default',
22
+ false: ''
18
23
  }
19
24
  },
20
25
  defaultVariants: {
@@ -40,17 +45,17 @@ const defaultSwitchThumb = cva({
40
45
  {
41
46
  size: 'small',
42
47
  checked: true,
43
- class: 'translate-x-4'
48
+ class: 'translate-x-4 rtl:-translate-x-4'
44
49
  },
45
50
  {
46
51
  size: 'normal',
47
52
  checked: true,
48
- class: 'translate-x-5'
53
+ class: 'translate-x-5 rtl:-translate-x-5'
49
54
  },
50
55
  {
51
56
  size: 'large',
52
57
  checked: true,
53
- class: 'translate-x-5'
58
+ class: 'translate-x-5 rtl:-translate-x-5'
54
59
  }
55
60
  ],
56
61
  defaultVariants: {
@@ -23,6 +23,8 @@
23
23
  theme,
24
24
  chipTheme,
25
25
  disabled,
26
+ readOnly,
27
+ messages,
26
28
  name,
27
29
  label,
28
30
  onValidate,
@@ -86,6 +88,12 @@
86
88
  set disabled(nextDisabled: boolean | undefined) {
87
89
  disabled = nextDisabled;
88
90
  },
91
+ get readOnly() {
92
+ return readOnly;
93
+ },
94
+ get messages() {
95
+ return messages;
96
+ },
89
97
  get required() {
90
98
  return required;
91
99
  },
@@ -1 +1 @@
1
- export declare const tagGroupDescription = "\n# TagGroup Component\n\nTagGroup renders a finite set of selectable tags as chips. It is a form input for compact category, filter, or preference selection.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\timport { TagGroup } from 'entasis/tag-group';\n\n\tlet value = $state('news');\n</script>\n\n<TagGroup\n\tlabel=\"Category\"\n\tbind:value\n\titems={[\n\t\t{ value: 'news', label: 'News' },\n\t\t{ value: 'travel', label: 'Travel' },\n\t\t{ value: 'gaming', label: 'Gaming' }\n\t]}\n/>\n```\n\n## Multiple Selection\n\n```svelte\n<script lang=\"ts\">\n\tlet selected = $state(['news', 'gaming']);\n</script>\n\n<TagGroup\n\tmultiple\n\tlabel=\"Topics\"\n\tbind:value={selected}\n\titems={[\n\t\t{ value: 'news', label: 'News' },\n\t\t{ value: 'travel', label: 'Travel' },\n\t\t{ value: 'gaming', label: 'Gaming' }\n\t]}\n/>\n```\n\n## Props\n\n### Core Props\n- **items**: TagGroupOption[] - Options rendered as selectable chips.\n- **value**: string | string[] | null - Bindable selection. Single mode writes string|null; multiple mode writes string[].\n- **defaultValue**: string | string[] | null - Initial selection used only when `value` is omitted.\n- **multiple**: boolean (default: false) - Enables selecting multiple tags.\n- **label**: Slot - Field label.\n- **name**: string - Form field name.\n- **required**: boolean (default: false) - Marks selection as required.\n- **disabled**: boolean (default: false) - Disables all tag buttons.\n\n### Option Props\n- **value**: string - Unique selection value.\n- **label**: string | Snippet - Visible chip label.\n- **icon**: string | Snippet - Optional icon rendered before the label.\n- **disabled**: boolean - Disables one option.\n- **color**: Colors - Per-option chip color override.\n- **variant**: 'solid' | 'outline' | 'soft' - Per-option chip variant override.\n\n### Style Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal') - Controls chip density.\n- **color**: Colors (default: 'primary') - Selected chip color.\n- **unselectedColor**: Colors (default: 'neutral') - Unselected chip color.\n- **selectedVariant**: 'solid' | 'outline' | 'soft' (default: 'soft') - Selected chip variant. The selected fill itself comes from the shared soft selected recipe on the item class.\n- **unselectedVariant**: 'solid' | 'outline' | 'soft' (default: 'outline') - Unselected chip variant. Outline by default so an unselected tag stays distinct from the soft selected fill at the neutral role.\n- **theme**: TagGroupThemeProps - Theme overrides for TagGroup and Field parts.\n- **chipTheme**: ChipThemeProps - Theme overrides forwarded to each Chip.\n\n### Events\n- **onValueChange**: (value: string | string[] | null) => void - Called when normalized selection changes.\n- **onValidate**: (value: string | string[] | null) => string[] | boolean - Custom validation.\n\n## Accessibility\n\n- Uses native button controls for each selectable chip.\n- Buttons expose aria-pressed for selected state.\n- The field is rendered as a fieldset through the shared Field wrapper.\n- Hidden inputs mirror selected values for native form submission.\n\n## State contract\n\n- **value**: current bindable editable value.\n- **defaultValue**: initial value used only when `value` is omitted.\n- **onValueChange**: called with the new value when the component changes it.\n\n";
1
+ export declare const tagGroupDescription = "\n# TagGroup Component\n\nTagGroup renders a finite set of selectable tags as chips. It is a form input for compact category, filter, or preference selection.\n\n## Basic Usage\n\n```svelte\n<script lang=\"ts\">\n\timport { TagGroup } from 'entasis/tag-group';\n\n\tlet value = $state('news');\n</script>\n\n<TagGroup\n\tlabel=\"Category\"\n\tbind:value\n\titems={[\n\t\t{ value: 'news', label: 'News' },\n\t\t{ value: 'travel', label: 'Travel' },\n\t\t{ value: 'gaming', label: 'Gaming' }\n\t]}\n/>\n```\n\n## Multiple Selection\n\n```svelte\n<script lang=\"ts\">\n\tlet selected = $state(['news', 'gaming']);\n</script>\n\n<TagGroup\n\tmultiple\n\tlabel=\"Topics\"\n\tbind:value={selected}\n\titems={[\n\t\t{ value: 'news', label: 'News' },\n\t\t{ value: 'travel', label: 'Travel' },\n\t\t{ value: 'gaming', label: 'Gaming' }\n\t]}\n/>\n```\n\n## Props\n\n### Core Props\n- **items**: TagGroupOption[] - Options rendered as selectable chips.\n- **value**: string | string[] | null - Bindable selection. Single mode writes string|null; multiple mode writes string[].\n- **defaultValue**: string | string[] | null - Initial selection used only when `value` is omitted.\n- **multiple**: boolean (default: false) - Enables selecting multiple tags.\n- **label**: Slot - Field label.\n- **name**: string - Form field name.\n- **required**: boolean (default: false) - Marks selection as required.\n- **disabled**: boolean (default: false) - Disables all tag buttons.\n- **readOnly**: boolean (default: false) - Tags stay focusable but pressing them changes nothing; the selection still validates and submits.\n\n### Option Props\n- **value**: string - Unique selection value.\n- **label**: string | Snippet - Visible chip label.\n- **icon**: string | Snippet - Optional icon rendered before the label.\n- **disabled**: boolean - Disables one option.\n- **color**: Colors - Per-option chip color override.\n- **variant**: 'solid' | 'outline' | 'soft' - Per-option chip variant override.\n\n### Style Props\n- **size**: 'small' | 'normal' | 'large' (default: 'normal') - Controls chip density.\n- **color**: Colors (default: 'primary') - Selected chip color.\n- **unselectedColor**: Colors (default: 'neutral') - Unselected chip color.\n- **selectedVariant**: 'solid' | 'outline' | 'soft' (default: 'soft') - Selected chip variant. The selected fill itself comes from the shared soft selected recipe on the item class.\n- **unselectedVariant**: 'solid' | 'outline' | 'soft' (default: 'outline') - Unselected chip variant. Outline by default so an unselected tag stays distinct from the soft selected fill at the neutral role.\n- **theme**: TagGroupThemeProps - Theme overrides for TagGroup and Field parts.\n- **chipTheme**: ChipThemeProps - Theme overrides forwarded to each Chip.\n\n### Events\n- **onValueChange**: (value: string | string[] | null) => void - Called when normalized selection changes.\n- **onValidate**: (value: string | string[] | null) => string[] | boolean - Custom validation.\n\n## Accessibility\n\n- Uses native button controls for each selectable chip.\n- Buttons expose aria-pressed for selected state.\n- The field is rendered as a fieldset through the shared Field wrapper.\n- Hidden inputs mirror selected values for native form submission.\n\n## State contract\n\n- **value**: current bindable editable value.\n- **defaultValue**: initial value used only when `value` is omitted.\n- **onValueChange**: called with the new value when the component changes it.\n\n";
@@ -53,6 +53,7 @@ TagGroup renders a finite set of selectable tags as chips. It is a form input fo
53
53
  - **name**: string - Form field name.
54
54
  - **required**: boolean (default: false) - Marks selection as required.
55
55
  - **disabled**: boolean (default: false) - Disables all tag buttons.
56
+ - **readOnly**: boolean (default: false) - Tags stay focusable but pressing them changes nothing; the selection still validates and submits.
56
57
 
57
58
  ### Option Props
58
59
  - **value**: string - Unique selection value.