entasis 0.10.2 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/README.md +1 -1
  2. package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
  3. package/dist/attachments/disclosurePanel.svelte.js +277 -0
  4. package/dist/attachments/portal.d.ts +17 -1
  5. package/dist/attachments/portal.js +39 -2
  6. package/dist/attachments/spinnerOverlay.svelte.js +12 -0
  7. package/dist/attachments/transitionSize.d.ts +6 -0
  8. package/dist/attachments/transitionSize.js +30 -0
  9. package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
  10. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
  11. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
  12. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
  13. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
  14. package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
  15. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
  16. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
  17. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
  18. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
  19. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
  20. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
  21. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
  22. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
  23. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
  24. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
  25. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
  26. package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
  27. package/dist/components/AIAskUserQuestion/index.js +2 -0
  28. package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
  29. package/dist/components/AIAskUserQuestion/schemas.js +10 -3
  30. package/dist/components/AIChat/AIChat.svelte +10 -0
  31. package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
  32. package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
  33. package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
  34. package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
  35. package/dist/components/AIChat/AIChatSurface.svelte +30 -2
  36. package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
  37. package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
  38. package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
  39. package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
  40. package/dist/components/AIChat/aiChat.mcp.js +31 -15
  41. package/dist/components/AIChat/aiChat.props.d.ts +36 -10
  42. package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
  43. package/dist/components/AIChat/aiChat.theme.js +21 -4
  44. package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
  45. package/dist/components/AIChat/index.d.ts +1 -1
  46. package/dist/components/AIComposer/AIComposer.svelte +102 -5
  47. package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
  48. package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
  49. package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
  50. package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
  51. package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
  52. package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
  53. package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
  54. package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
  55. package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
  56. package/dist/components/AIComposer/aiComposer.theme.js +37 -5
  57. package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
  58. package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
  59. package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
  60. package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
  61. package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
  62. package/dist/components/AIContext/AIContext.svelte +7 -3
  63. package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
  64. package/dist/components/AIContext/aiContext.mcp.js +1 -1
  65. package/dist/components/AIContext/aiContext.props.d.ts +4 -1
  66. package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
  67. package/dist/components/AIContext/aiContext.theme.js +7 -2
  68. package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
  69. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  70. package/dist/components/AIMarker/AIMarker.svelte +2 -0
  71. package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
  72. package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
  73. package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
  74. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  75. package/dist/components/AIMessage/AIMessage.svelte +38 -16
  76. package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
  77. package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
  78. package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
  79. package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
  80. package/dist/components/AIMessage/aiMessage.theme.js +91 -32
  81. package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
  82. package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
  83. package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
  84. package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
  85. package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
  86. package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
  87. package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
  88. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
  89. package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
  90. package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
  91. package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
  92. package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
  93. package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
  94. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
  95. package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
  96. package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
  97. package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
  98. package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
  99. package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
  100. package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
  101. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  102. package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
  103. package/dist/components/AIThread/AIThread.svelte +378 -95
  104. package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
  105. package/dist/components/AIThread/AIThreadItems.svelte +266 -64
  106. package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
  107. package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
  108. package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
  109. package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
  110. package/dist/components/AIThread/aiThread.mcp.js +34 -20
  111. package/dist/components/AIThread/aiThread.props.d.ts +73 -8
  112. package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
  113. package/dist/components/AIThread/aiThread.theme.js +108 -9
  114. package/dist/components/AIThread/index.d.ts +1 -1
  115. package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
  116. package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
  117. package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
  118. package/dist/components/AIThread/threadRenderItems.js +265 -77
  119. package/dist/components/AIThread/threadScrollController.d.ts +0 -8
  120. package/dist/components/AIThread/threadScrollController.js +2 -39
  121. package/dist/components/AIThread/threadTools.d.ts +11 -0
  122. package/dist/components/AIThread/threadTools.js +79 -0
  123. package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
  124. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
  125. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
  126. package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
  127. package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
  128. package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
  129. package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
  130. package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
  131. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
  132. package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
  133. package/dist/components/AITool/AITool.svelte +56 -21
  134. package/dist/components/AITool/AIToolCallList.svelte +79 -29
  135. package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
  136. package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
  137. package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
  138. package/dist/components/AITool/AIToolValueSection.svelte +126 -28
  139. package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
  140. package/dist/components/AITool/AIToolValueTree.svelte +11 -16
  141. package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
  142. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  143. package/dist/components/AITool/aiTool.mcp.js +36 -8
  144. package/dist/components/AITool/aiTool.props.d.ts +52 -6
  145. package/dist/components/AITool/aiTool.theme.d.ts +117 -39
  146. package/dist/components/AITool/aiTool.theme.js +144 -140
  147. package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
  148. package/dist/components/AITool/aiToolClock.svelte.js +62 -0
  149. package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
  150. package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
  151. package/dist/components/AITool/index.d.ts +2 -1
  152. package/dist/components/AITool/index.js +1 -0
  153. package/dist/components/AITool/toolRendering.d.ts +33 -1
  154. package/dist/components/AITool/toolRendering.js +179 -15
  155. package/dist/components/AITool/toolValueTree.d.ts +14 -1
  156. package/dist/components/AITool/toolValueTree.js +126 -27
  157. package/dist/components/Accordion/Accordion.svelte +109 -109
  158. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
  159. package/dist/components/Accordion/AccordionPanel.svelte +64 -0
  160. package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
  161. package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
  162. package/dist/components/Accordion/accordion.attributes.js +20 -0
  163. package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
  164. package/dist/components/Accordion/accordion.mcp.js +78 -22
  165. package/dist/components/Accordion/accordion.props.d.ts +54 -10
  166. package/dist/components/Accordion/accordion.theme.d.ts +3 -0
  167. package/dist/components/Accordion/accordion.theme.js +4 -0
  168. package/dist/components/Accordion/index.d.ts +1 -0
  169. package/dist/components/Accordion/index.js +1 -0
  170. package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
  171. package/dist/components/Avatar/Avatar.svelte +60 -10
  172. package/dist/components/Avatar/AvatarGroup.svelte +9 -0
  173. package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
  174. package/dist/components/Avatar/avatar.mcp.js +13 -5
  175. package/dist/components/Avatar/avatar.props.d.ts +28 -1
  176. package/dist/components/Avatar/avatar.theme.js +3 -3
  177. package/dist/components/Avatar/index.d.ts +1 -1
  178. package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
  179. package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
  180. package/dist/components/Button/Button.svelte +35 -15
  181. package/dist/components/Button/button.mcp.d.ts +1 -1
  182. package/dist/components/Button/button.mcp.js +8 -4
  183. package/dist/components/Button/button.props.d.ts +23 -8
  184. package/dist/components/Button/button.theme.d.ts +12 -0
  185. package/dist/components/Button/button.theme.js +17 -4
  186. package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
  187. package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
  188. package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
  189. package/dist/components/Collapsible/Collapsible.svelte +125 -19
  190. package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
  191. package/dist/components/Collapsible/collapsible.attributes.js +17 -0
  192. package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
  193. package/dist/components/Collapsible/collapsible.mcp.js +62 -12
  194. package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
  195. package/dist/components/Collapsible/collapsible.theme.js +3 -1
  196. package/dist/components/Collapsible/index.d.ts +1 -0
  197. package/dist/components/Collapsible/index.js +1 -0
  198. package/dist/components/Command/Command.svelte +56 -14
  199. package/dist/components/Command/command.mcp.d.ts +1 -1
  200. package/dist/components/Command/command.mcp.js +12 -6
  201. package/dist/components/Command/command.props.d.ts +39 -6
  202. package/dist/components/Command/command.state.svelte.d.ts +40 -11
  203. package/dist/components/Command/command.state.svelte.js +75 -28
  204. package/dist/components/Command/command.theme.js +4 -3
  205. package/dist/components/Confirmation/Confirmation.svelte +72 -31
  206. package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
  207. package/dist/components/Confirmation/confirmation.mcp.js +5 -4
  208. package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
  209. package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
  210. package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
  211. package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
  212. package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
  213. package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
  214. package/dist/components/DataTable/DataTable.svelte +4 -9
  215. package/dist/components/DataTable/DataTableEditor.svelte +5 -0
  216. package/dist/components/DataTable/DataTableFilter.svelte +1 -0
  217. package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
  218. package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
  219. package/dist/components/DataTable/dataTable.mcp.js +4 -2
  220. package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
  221. package/dist/components/DataTable/dataTable.theme.js +9 -6
  222. package/dist/components/Dialog/Dialog.svelte +120 -35
  223. package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
  224. package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
  225. package/dist/components/Dialog/dialog.api.d.ts +65 -0
  226. package/dist/components/Dialog/dialog.api.js +1 -0
  227. package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
  228. package/dist/components/Dialog/dialog.attributes.js +19 -0
  229. package/dist/components/Dialog/dialog.indent.d.ts +6 -0
  230. package/dist/components/Dialog/dialog.indent.js +16 -0
  231. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  232. package/dist/components/Dialog/dialog.mcp.js +195 -22
  233. package/dist/components/Dialog/dialog.props.d.ts +102 -19
  234. package/dist/components/Dialog/dialog.snap.d.ts +40 -0
  235. package/dist/components/Dialog/dialog.snap.js +78 -0
  236. package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
  237. package/dist/components/Dialog/dialog.state.svelte.js +525 -66
  238. package/dist/components/Dialog/dialog.theme.d.ts +48 -0
  239. package/dist/components/Dialog/dialog.theme.js +32 -9
  240. package/dist/components/Dialog/index.d.ts +4 -1
  241. package/dist/components/Dialog/index.js +1 -0
  242. package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
  243. package/dist/components/DocumentViewer/documentOutput.js +2 -1
  244. package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
  245. package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
  246. package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
  247. package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
  248. package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
  249. package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
  250. package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
  251. package/dist/components/Form/Ask/Ask.svelte +9 -13
  252. package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
  253. package/dist/components/Form/Ask/ask.mcp.js +1 -1
  254. package/dist/components/Form/Ask/ask.props.d.ts +1 -1
  255. package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
  256. package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
  257. package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
  258. package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
  259. package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
  260. package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
  261. package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
  262. package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
  263. package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
  264. package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
  265. package/dist/components/Form/Autocomplete/index.d.ts +3 -0
  266. package/dist/components/Form/Autocomplete/index.js +2 -0
  267. package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
  268. package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
  269. package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
  270. package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
  271. package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
  272. package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
  273. package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
  274. package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
  275. package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
  276. package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
  277. package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
  278. package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
  279. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
  280. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
  281. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
  282. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
  283. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
  284. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
  285. package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
  286. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
  287. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
  288. package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
  289. package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
  290. package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
  291. package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
  292. package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
  293. package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
  294. package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
  295. package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
  296. package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
  297. package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
  298. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
  299. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
  300. package/dist/components/Form/Combobox/Combobox.svelte +145 -185
  301. package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
  302. package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
  303. package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
  304. package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
  305. package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
  306. package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
  307. package/dist/components/Form/Combobox/combobox.items.js +68 -0
  308. package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
  309. package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
  310. package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
  311. package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
  312. package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
  313. package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
  314. package/dist/components/Form/Combobox/combobox.theme.js +37 -1
  315. package/dist/components/Form/Combobox/index.d.ts +2 -1
  316. package/dist/components/Form/Combobox/index.js +1 -0
  317. package/dist/components/Form/DateInput/DateInput.svelte +11 -3
  318. package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
  319. package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
  320. package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
  321. package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
  322. package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
  323. package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
  324. package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
  325. package/dist/components/Form/Field/Field.svelte +258 -32
  326. package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
  327. package/dist/components/Form/Field/FieldGroup.svelte +29 -0
  328. package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
  329. package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
  330. package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
  331. package/dist/components/Form/Field/field.d.ts +75 -10
  332. package/dist/components/Form/Field/field.mcp.d.ts +1 -1
  333. package/dist/components/Form/Field/field.mcp.js +158 -18
  334. package/dist/components/Form/Field/field.messages.d.ts +47 -0
  335. package/dist/components/Form/Field/field.messages.js +64 -0
  336. package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
  337. package/dist/components/Form/Field/field.state.svelte.js +525 -16
  338. package/dist/components/Form/Field/field.theme.d.ts +46 -0
  339. package/dist/components/Form/Field/field.theme.js +33 -0
  340. package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
  341. package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
  342. package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
  343. package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
  344. package/dist/components/Form/Field/index.d.ts +5 -2
  345. package/dist/components/Form/Field/index.js +1 -0
  346. package/dist/components/Form/Field/schemas.js +7 -2
  347. package/dist/components/Form/File/FileInput.svelte +24 -3
  348. package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
  349. package/dist/components/Form/File/fileInput.mcp.js +1 -0
  350. package/dist/components/Form/Form/Form.svelte +49 -15
  351. package/dist/components/Form/Form/FormActions.svelte +3 -1
  352. package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
  353. package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
  354. package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
  355. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  356. package/dist/components/Form/Form/form.d.ts +84 -11
  357. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  358. package/dist/components/Form/Form/form.mcp.js +178 -12
  359. package/dist/components/Form/Form/form.props.d.ts +32 -1
  360. package/dist/components/Form/Form/form.registry.d.ts +28 -0
  361. package/dist/components/Form/Form/form.registry.js +59 -0
  362. package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
  363. package/dist/components/Form/Form/form.state.svelte.js +322 -28
  364. package/dist/components/Form/Form/index.d.ts +4 -1
  365. package/dist/components/Form/Form/index.js +1 -0
  366. package/dist/components/Form/Form/visibility.d.ts +3130 -1863
  367. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  368. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  369. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  370. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  371. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  372. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  373. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  374. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
  375. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  376. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  377. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  378. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  379. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  380. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  381. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  382. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  383. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  384. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  385. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  386. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  387. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  388. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  389. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  390. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  391. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  392. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  393. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  394. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  395. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  396. package/dist/components/Form/PinInput/index.d.ts +1 -1
  397. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  398. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  399. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  400. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  401. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  402. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  403. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  404. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  405. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  406. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  407. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  408. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  409. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  410. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  411. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  412. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  413. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  414. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  415. package/dist/components/Form/Select/Select.svelte +186 -48
  416. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  417. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  418. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  419. package/dist/components/Form/Select/index.d.ts +2 -1
  420. package/dist/components/Form/Select/index.js +1 -0
  421. package/dist/components/Form/Select/select.align.d.ts +5 -0
  422. package/dist/components/Form/Select/select.align.js +19 -5
  423. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  424. package/dist/components/Form/Select/select.attributes.js +27 -0
  425. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  426. package/dist/components/Form/Select/select.mcp.js +103 -18
  427. package/dist/components/Form/Select/select.props.d.ts +87 -10
  428. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  429. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  430. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  431. package/dist/components/Form/Select/select.theme.js +22 -0
  432. package/dist/components/Form/Slider/Slider.svelte +54 -14
  433. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  434. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  435. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  436. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  437. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  438. package/dist/components/Form/Slider/index.d.ts +1 -1
  439. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  440. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  441. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  442. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  443. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  444. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  445. package/dist/components/Form/Slider/slider.theme.js +35 -17
  446. package/dist/components/Form/Switch/Switch.svelte +61 -38
  447. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  448. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  449. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  450. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  451. package/dist/components/Form/Switch/switch.theme.js +8 -3
  452. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  453. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  454. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  455. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  456. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  457. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  458. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  459. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  460. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  461. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  462. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  463. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  464. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  465. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  466. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  467. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  468. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  469. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  470. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  471. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  472. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  473. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  474. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  475. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  476. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  477. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  478. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  479. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  480. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  481. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  482. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  483. package/dist/components/HoverCard/index.d.ts +1 -0
  484. package/dist/components/HoverCard/index.js +1 -0
  485. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  487. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  488. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  489. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  490. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  491. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  492. package/dist/components/Kanban/kanban.theme.js +7 -3
  493. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  494. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  495. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  496. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  497. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  498. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  499. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  500. package/dist/components/Map/maplibre-cdn.js +3 -2
  501. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  502. package/dist/components/Markdown/markdown.mcp.js +2 -1
  503. package/dist/components/Markdown/markdown.theme.js +18 -9
  504. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  505. package/dist/components/Menu/Menu.svelte +3 -3
  506. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  507. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  508. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  509. package/dist/components/Menu/MenuFloating.svelte +421 -74
  510. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  511. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  512. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  513. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  514. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  515. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  516. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  517. package/dist/components/Menu/MenuStacked.svelte +404 -158
  518. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  519. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  520. package/dist/components/Menu/index.d.ts +2 -1
  521. package/dist/components/Menu/index.js +1 -0
  522. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  523. package/dist/components/Menu/menu.attributes.js +28 -0
  524. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  525. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  526. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  527. package/dist/components/Menu/menu.mcp.js +227 -17
  528. package/dist/components/Menu/menu.platform.d.ts +5 -0
  529. package/dist/components/Menu/menu.platform.js +11 -0
  530. package/dist/components/Menu/menu.props.d.ts +172 -9
  531. package/dist/components/Menu/menu.theme.d.ts +147 -0
  532. package/dist/components/Menu/menu.theme.js +101 -0
  533. package/dist/components/Menu/menuTree.d.ts +35 -1
  534. package/dist/components/Menu/menuTree.js +158 -1
  535. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  536. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  537. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  538. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  539. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  540. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  541. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  542. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  543. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  544. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  545. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  546. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  547. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  548. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  549. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  550. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  551. package/dist/components/Meter/Meter.svelte +110 -24
  552. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  553. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  554. package/dist/components/Meter/meter.mcp.js +23 -37
  555. package/dist/components/Meter/meter.props.d.ts +36 -44
  556. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  557. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  558. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  559. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  561. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  562. package/dist/components/NavigationMenu/index.d.ts +4 -0
  563. package/dist/components/NavigationMenu/index.js +3 -0
  564. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  565. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  566. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  567. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  568. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  569. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  570. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  571. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  572. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  573. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  574. package/dist/components/Overlay/Overlay.svelte +19 -30
  575. package/dist/components/Overlay/index.d.ts +1 -0
  576. package/dist/components/Overlay/index.js +1 -0
  577. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  578. package/dist/components/Overlay/overlay.attributes.js +14 -0
  579. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  580. package/dist/components/Overlay/overlay.mcp.js +21 -3
  581. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  582. package/dist/components/Popover/Popover.svelte +163 -52
  583. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  584. package/dist/components/Popover/PopoverSession.svelte +12 -0
  585. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  586. package/dist/components/Popover/index.d.ts +10 -2
  587. package/dist/components/Popover/index.js +4 -1
  588. package/dist/components/Popover/popover.api.d.ts +83 -0
  589. package/dist/components/Popover/popover.api.js +1 -0
  590. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  591. package/dist/components/Popover/popover.attributes.js +28 -0
  592. package/dist/components/Popover/popover.claims.d.ts +19 -0
  593. package/dist/components/Popover/popover.claims.js +45 -0
  594. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  595. package/dist/components/Popover/popover.mcp.js +163 -31
  596. package/dist/components/Popover/popover.position.d.ts +226 -0
  597. package/dist/components/Popover/popover.position.js +402 -0
  598. package/dist/components/Popover/popover.props.d.ts +179 -24
  599. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  600. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  601. package/dist/components/Popover/popover.theme.d.ts +15 -0
  602. package/dist/components/Popover/popover.theme.js +27 -2
  603. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  604. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  605. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  606. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  607. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  608. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  609. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  610. package/dist/components/Progress/Progress.svelte +160 -0
  611. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  612. package/dist/components/Progress/index.d.ts +3 -0
  613. package/dist/components/Progress/index.js +2 -0
  614. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  615. package/dist/components/Progress/progress.mcp.js +101 -0
  616. package/dist/components/Progress/progress.props.d.ts +79 -0
  617. package/dist/components/Progress/progress.props.js +1 -0
  618. package/dist/components/Progress/progress.theme.d.ts +129 -0
  619. package/dist/components/Progress/progress.theme.js +83 -0
  620. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  621. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  622. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  623. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  624. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  625. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  626. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  627. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  628. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  629. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  630. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  631. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  632. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  633. package/dist/components/RichTextInput/suggestions.js +2 -0
  634. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  635. package/dist/components/ScrollArea/index.d.ts +2 -1
  636. package/dist/components/ScrollArea/index.js +1 -0
  637. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  638. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  639. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  640. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  641. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  642. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  643. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  644. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  645. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  646. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  647. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  648. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  649. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  650. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  651. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  652. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  653. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  654. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  655. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  656. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  657. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  658. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  659. package/dist/components/Sidebar/index.d.ts +1 -0
  660. package/dist/components/Sidebar/index.js +1 -0
  661. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  662. package/dist/components/Sidebar/sidebar-position.js +31 -2
  663. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  664. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  665. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  666. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  667. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  668. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  669. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  670. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  671. package/dist/components/Stepper/Stepper.svelte +2 -0
  672. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  673. package/dist/components/Stepper/stepper.mcp.js +1 -0
  674. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  675. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  676. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  677. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  678. package/dist/components/Tabbar/index.d.ts +1 -1
  679. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  680. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  681. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  682. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  683. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  684. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  685. package/dist/components/Tabs/Tabs.svelte +73 -16
  686. package/dist/components/Tabs/index.d.ts +2 -1
  687. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  688. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  689. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  690. package/dist/components/Tabs/tabs.mcp.js +22 -4
  691. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  692. package/dist/components/Tabs/tabs.theme.js +3 -1
  693. package/dist/components/Theme/Theme.svelte +44 -27
  694. package/dist/components/Theme/helper.d.ts +16 -2
  695. package/dist/components/Theme/helper.js +46 -4
  696. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  697. package/dist/components/Theme/theme.mcp.js +103 -0
  698. package/dist/components/Theme/theme.props.d.ts +16 -0
  699. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  700. package/dist/components/Theme/theme.state.svelte.js +18 -1
  701. package/dist/components/Toast/Toast.svelte +184 -39
  702. package/dist/components/Toast/Toaster.svelte +14 -10
  703. package/dist/components/Toast/index.d.ts +1 -0
  704. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  705. package/dist/components/Toast/toast.mcp.js +47 -6
  706. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  707. package/dist/components/Toast/toast.state.svelte.js +513 -68
  708. package/dist/components/Toast/toast.theme.js +1 -1
  709. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  710. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  711. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  712. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  713. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  714. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  715. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  716. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  720. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  721. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  722. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  723. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  724. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  725. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  726. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  727. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  728. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  729. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  730. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  731. package/dist/components/Tooltip/index.d.ts +1 -0
  732. package/dist/components/Tooltip/index.js +1 -0
  733. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  734. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  735. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  736. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  737. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  738. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  739. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  740. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  741. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  742. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  743. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  744. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  745. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  746. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  747. package/dist/generated/componentAliases.d.ts +3 -0
  748. package/dist/generated/componentAliases.js +3 -0
  749. package/dist/generated/componentContract.d.ts +79 -34
  750. package/dist/generated/componentContract.js +231 -6
  751. package/dist/generated/componentMcpRegistry.js +6 -0
  752. package/dist/i18n/ar.js +107 -3
  753. package/dist/i18n/context.svelte.d.ts +6 -0
  754. package/dist/i18n/context.svelte.js +12 -0
  755. package/dist/i18n/de.js +101 -3
  756. package/dist/i18n/en.d.ts +91 -2
  757. package/dist/i18n/en.js +101 -3
  758. package/dist/i18n/es.js +101 -3
  759. package/dist/i18n/fr.js +101 -3
  760. package/dist/i18n/ja.js +101 -3
  761. package/dist/i18n/pt.js +101 -3
  762. package/dist/i18n/zh.js +101 -3
  763. package/dist/tailwind/geometry.js +7 -0
  764. package/dist/tailwind/global.js +31 -0
  765. package/dist/types/index.d.ts +1 -0
  766. package/dist/types/types.mcp.d.ts +1 -1
  767. package/dist/types/types.mcp.js +23 -0
  768. package/dist/utils/cspNonce.d.ts +16 -0
  769. package/dist/utils/cspNonce.js +39 -0
  770. package/dist/utils/cva/merge.d.ts +5 -1
  771. package/dist/utils/cva/merge.js +6 -4
  772. package/dist/utils/focus.d.ts +34 -0
  773. package/dist/utils/focus.js +93 -0
  774. package/dist/utils/focusHistory.d.ts +21 -0
  775. package/dist/utils/focusHistory.js +99 -0
  776. package/dist/utils/handlers.d.ts +7 -0
  777. package/dist/utils/handlers.js +14 -0
  778. package/dist/utils/hoverIntent.d.ts +42 -0
  779. package/dist/utils/hoverIntent.js +57 -0
  780. package/dist/utils/id.d.ts +7 -0
  781. package/dist/utils/id.js +15 -0
  782. package/dist/utils/layers.svelte.d.ts +32 -4
  783. package/dist/utils/layers.svelte.js +214 -21
  784. package/dist/utils/listFilter.d.ts +44 -0
  785. package/dist/utils/listFilter.js +130 -0
  786. package/dist/utils/match.d.ts +35 -0
  787. package/dist/utils/match.js +36 -0
  788. package/dist/utils/number.d.ts +126 -0
  789. package/dist/utils/number.js +401 -0
  790. package/dist/utils/openChange.d.ts +88 -0
  791. package/dist/utils/openChange.js +71 -0
  792. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  793. package/dist/utils/openLifecycle.svelte.js +134 -0
  794. package/dist/utils/pointerDrag.d.ts +10 -0
  795. package/dist/utils/pointerDrag.js +37 -2
  796. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  797. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  798. package/dist/utils/range.d.ts +62 -0
  799. package/dist/utils/range.js +70 -0
  800. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  801. package/dist/utils/requestNativeSubmit.js +47 -0
  802. package/dist/utils/safeArea.svelte.d.ts +10 -1
  803. package/dist/utils/safeArea.svelte.js +19 -11
  804. package/dist/utils/stateAttributes.d.ts +108 -0
  805. package/dist/utils/stateAttributes.js +78 -0
  806. package/dist/utils/swipeVelocity.d.ts +32 -0
  807. package/dist/utils/swipeVelocity.js +59 -0
  808. package/dist/utils/timer.svelte.d.ts +65 -2
  809. package/dist/utils/timer.svelte.js +159 -25
  810. package/dist/utils/trigger.d.ts +41 -0
  811. package/dist/utils/trigger.js +103 -0
  812. package/dist/utils/typeahead.d.ts +9 -0
  813. package/dist/utils/typeahead.js +21 -9
  814. package/dist/utils/useDndList.svelte.d.ts +1 -1
  815. package/dist/utils/useDndList.svelte.js +6 -23
  816. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  817. package/dist/utils/useFocusScope.svelte.js +189 -27
  818. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  819. package/dist/utils/useHoverAction.svelte.js +161 -51
  820. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  821. package/dist/utils/useKeyDown.svelte.js +19 -12
  822. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  823. package/dist/utils/useListNavigation.svelte.js +261 -35
  824. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  825. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  826. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  827. package/dist/utils/useNavigation.svelte.js +699 -332
  828. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  829. package/dist/utils/usePressAndHold.svelte.js +191 -0
  830. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  831. package/dist/utils/useScrollLock.svelte.js +54 -13
  832. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  833. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  834. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  835. package/dist/utils/useTabBridge.svelte.js +109 -0
  836. package/dist/utils/values.d.ts +15 -0
  837. package/dist/utils/values.js +49 -0
  838. package/package.json +31 -2
  839. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  840. package/dist/utils/useDrag.svelte.d.ts +0 -11
  841. package/dist/utils/useDrag.svelte.js +0 -55
@@ -1 +1 @@
1
- export declare const tagsInputDescription = "\n# TagsInput Component\n\nA multi-value tag input. Use it for entering a list of free-text tags, or restrict entry to a searchable option list (like the Combobox, but multi-select). Selected tags render as removable chips inside the field, followed by a text input that wraps to its own line when space runs out.\n\n## Basic Usage\n\n```svelte\n<script>\n\timport { TagsInput } from 'entasis/tags-input';\n\tlet value = $state(null);\n</script>\n\n<TagsInput\n\tplaceholder=\"Add a tag...\"\n\tbind:value={value}\n/>\n```\n\n## Props\n\n### Core Props\n\n- **value**: `string[] | null` (default: `null`, bindable)\n - The current list of tags. `null` is treated as empty.\n - The array is never mutated in place \u2014 every add/remove assigns a fresh array.\n\n- **searchValue**: `string` (default: `''`, bindable)\n - Current text typed in the input.\n\n- **loading**: `boolean` (default: `false`, bindable)\n - Loading state (managed automatically for async options).\n\n- **items**: `ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>)` (optional)\n - When omitted, the input accepts free text (any typed value becomes a tag).\n - When provided, behaves like a Combobox dropdown: static arrays are filtered client-side, functions are called with the search value and may return a Promise.\n\n### Behavior Props\n\n- **customTags**: `boolean` (default: `false`)\n - When `items` is provided, also allow Enter to add free text that is not in the option list.\n\n- **maxTags**: `number` (optional)\n - Maximum number of tags. Once reached, further adds (free entry and dropdown selection) are ignored.\n\n- **showAllOnFocus**: `boolean` (default: `false`)\n - Show all options when the input is focused, even without typing (static arrays only).\n\n- **getValueOption**: `(value: string) => MaybePromise<ComboboxOption | null | undefined>`\n - Resolves the option (and its label) for a value not yet loaded. Useful for pre-filled values with async options.\n\n- **placeholder**: `string` (default: `''`)\n - Input placeholder text.\n\n- **loadingText**: `string` (default: `'Loading...'`)\n - Text displayed while loading options.\n\n- **noOptionsText**: `string` (default: `'No options found'`)\n - Text displayed when no options match.\n\n### Field Props\n\n- **required**: `boolean` (default: `false`)\n- **disabled**: `boolean`\n- **size**: `'small' | 'normal' | 'large'` (default: `'normal'`)\n- **density**: `'compact' | 'normal' | 'comfortable'` (default: `'normal'`) - Spacing density forwarded to the dropdown option rows (paddings, gaps, min-height)\n- **name**: `string`\n- **errors**: `string[] | boolean` (bindable)\n- **focused**: `boolean` (bindable)\n- **description**: `string`\n\n### Event Props\n\n- **onValueChange**: `(value: string[]) => void`\n - Called when the list of tags changes.\n\n- **onValidate**: `(value: string[]) => string[] | boolean`\n - Custom validation function.\n\n### Theme Props\n\n- **theme**: `TagsInputThemeProps`\n - Customize styling for: input, inputContainer, tag, loading, error, noOptions.\n\n## Examples\n\n### Free-text Tags\n\n```svelte\n<script>\n\tlet value = $state(['svelte', 'kit']);\n</script>\n\n<TagsInput bind:value={value} placeholder=\"Add a tag...\" />\n```\n\n### Restricted to a Static Option List\n\n```svelte\n<script>\n\tlet value = $state(null);\n\tconst items = [\n\t\t{ value: 'red', label: 'Red' },\n\t\t{ value: 'green', label: 'Green' },\n\t\t{ value: 'blue', label: 'Blue' }\n\t];\n</script>\n\n<TagsInput items={items} showAllOnFocus bind:value={value} />\n```\n\n### Async Options\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(null);\n\tconst getItems = async (searchValue?: string) => {\n\t\tconst response = await fetch(`/api/search?q=${searchValue}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<TagsInput items={getItems} bind:value={value} />\n```\n\n### Options Plus Free Text\n\n```svelte\n<TagsInput items={items} customTags bind:value={value} />\n```\n\n### Limited Number of Tags\n\n```svelte\n<TagsInput maxTags={3} bind:value={value} />\n```\n\n### Pre-filled Values with Async Labels\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(['us', 'uk']);\n\tconst getValueOption = async (value: string) => {\n\t\treturn { value, label: value.toUpperCase() };\n\t};\n</script>\n\n<TagsInput items={getItems} getValueOption={getValueOption} bind:value={value} />\n```\n\n## Keyboard Interactions\n\n- **Enter**: In free mode (or with `customTags`), adds the current trimmed text as a tag and clears the input. When the dropdown is open and an option is highlighted, adds that option instead.\n- **Backspace** (input empty): Removes the last tag.\n- **ArrowDown / ArrowUp**: Move the dropdown highlight (wraps around). Restricted mode only.\n- **Home / End**: Highlight the first / last option. Restricted mode only.\n- **Escape**: Blurs the input and closes the dropdown.\n\n## Accessibility\n\n- The tag collection is a real list (`role=\"list\"` / `role=\"listitem\"`), not a listbox.\n- Each tag chip is non-interactive; removal is a dedicated `<button type=\"button\">` with an `aria-label` of \"Remove <label>\".\n- **With items** the input follows the ARIA combobox pattern: `role=\"combobox\"`, `aria-expanded`, `aria-controls`, `aria-autocomplete=\"list\"`, `aria-activedescendant`, `aria-haspopup=\"listbox\"`, and the dropdown is a `role=\"listbox\"` with `role=\"option\"` items.\n- **Without items** the input is a plain text input.\n- `autocomplete=\"off\"` and `data-1p-ignore` on the input.\n\n## Notes\n\n- **Deduplication invariant**: A tag can never appear twice. Duplicate adds (exact string match) simply clear the search. This is a hard requirement \u2014 duplicate keys in the keyed list crash the renderer.\n- **Fresh arrays**: The value array is never mutated in place. Every add/remove assigns a new array so binding, reactivity, and form updates fire correctly.\n- **Animations**: Tags animate on reorder (`animate:flip`) and on enter/leave (`transition:scale`).\n- **Free vs restricted mode**: Omitting `items` gives free-text entry. Providing `items` restricts entry to the option list; add `customTags` to permit free text alongside options.\n- **Label resolution**: A tag's chip label comes from static `items`, then a session cache of options picked from the dropdown, then `getValueOption` (resolved on mount for initial values), falling back to the raw value string.\n- **Dropdown filtering**: Options whose value is already selected are hidden from the dropdown.\n\n## Theme Customization\n\nThe TagsInput uses a theme object customizable via the `theme` prop or a global theme.\n\n### Theme Structure\n\n- **input**: Input element styles (flex-1 with a min-width so it wraps to its own line).\n- **inputContainer**: The flex-wrap container holding the tags and input.\n- **tag**: The animated wrapper element around each tag chip.\n- **loading**: Loading indicator styles.\n- **error**: Error message styles.\n- **noOptions**: No-options message styles.\n\n### Global Theme Setting\n\n```svelte\n<script>\n\timport { setTagsInputTheme } from 'entasis/tags-input';\n\n\tsetTagsInputTheme({\n\t\tinputContainer: {\n\t\t\tbase: 'rounded-lg border-2 transition-all'\n\t\t}\n\t});\n</script>\n```\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 tagsInputDescription = "\n# TagsInput Component\n\nA multi-value tag input. Use it for entering a list of free-text tags, or restrict entry to a searchable option list (like the Combobox, but multi-select). Selected tags render as removable chips inside the field, followed by a text input that wraps to its own line when space runs out.\n\n## Basic Usage\n\n```svelte\n<script>\n\timport { TagsInput } from 'entasis/tags-input';\n\tlet value = $state(null);\n</script>\n\n<TagsInput\n\tplaceholder=\"Add a tag...\"\n\tbind:value={value}\n/>\n```\n\n## Props\n\n### Core Props\n\n- **value**: `string[] | null` (default: `null`, bindable)\n - The current list of tags. `null` is treated as empty.\n - The array is never mutated in place \u2014 every add/remove assigns a fresh array.\n\n- **searchValue**: `string` (default: `''`, bindable)\n - Current text typed in the input.\n\n- **loading**: `boolean` (default: `false`, bindable)\n - Loading state (managed automatically for async options).\n\n- **items**: `ComboboxItems | ((searchValue: string | undefined, request: { signal: AbortSignal }) => MaybePromise<ComboboxItems>)` (optional)\n - When omitted, the input accepts free text (any typed value becomes a tag).\n - When provided, behaves like a Combobox dropdown: static arrays are filtered client-side (case- and accent-insensitive, in the active I18n locale), functions are called after a 100ms pause with the search text and `{ signal }` and may return a Promise. An older request is aborted and its response ignored when a newer search replaces it; the last results stay visible while the next load.\n - Flat options and `{ label?, items }` groups can be mixed; an option can be `disabled`.\n\n- **open** / **defaultOpen** / **onOpenChange**: The dropdown's open state, as in Combobox. `onOpenChange(open, details)` runs before the change; `details.cancel()` keeps the list as it was.\n\n### Behavior Props\n\n- **customTags**: `boolean` (default: `false`)\n - When `items` is provided, also allow Enter to add free text that is not in the option list.\n\n- **maxTags**: `number` (optional)\n - Maximum number of tags. Once reached, further adds (free entry and dropdown selection) are ignored.\n\n- **openOnFocus**: `boolean` (default: `false`)\n - Open the dropdown when the input is focused, even without typing (static arrays list every option, `items` functions are called with an empty search).\n- **showAllOnFocus**: `boolean` (deprecated alias of `openOnFocus`, kept for one minor)\n\n- **keepSearchOnSelect**: `boolean` (default: `false`)\n - Keep the typed text after an option is chosen, so several matches of one search can be added in a row. Free text added with Enter always clears it.\n\n- **filter**: `(option, searchValue) => boolean` and **limit**: `number` - Custom match and a cap on the matches shown (static arrays).\n- **autoHighlight**: `boolean | 'always'` (default: `false` with `customTags`, else `'always'`) - With `customTags`, nothing is highlighted on its own, so Enter adds what was typed (\"Java\") instead of the first match (\"JavaScript\").\n- **loop**, **separators**, **item**, **onHighlightChange**: As in Combobox. `onHighlightChange({ value, reason, event })` reports why the highlight moved.\n- **readOnly**: `boolean` - The dropdown opens and can be browsed, but tags cannot be added or removed. The tags render as a plain list with no remove buttons. They still submit.\n\n- **getValueOption**: `(value: string) => MaybePromise<ComboboxOption | null | undefined>`\n - Resolves the option (and its label) for a value not yet loaded. Useful for pre-filled values with async options.\n\n- **placeholder**: `string` (default: `''`)\n - Input placeholder text.\n\n- **loadingText**: `string` (default: `'Loading...'`)\n - Text displayed while loading options.\n\n- **noOptionsText**: `string` (default: `'No options found'`)\n - Text displayed when no options match.\n\n### Field Props\n\n- **required**: `boolean` (default: `false`)\n- **disabled**: `boolean`\n- **size**: `'small' | 'normal' | 'large'` (default: `'normal'`)\n- **density**: `'compact' | 'normal' | 'comfortable'` (default: `'normal'`) - Spacing density forwarded to the dropdown option rows (paddings, gaps, min-height)\n- **name**: `string`\n- **errors**: `string[] | boolean` (bindable)\n- **focused**: `boolean` (bindable)\n- **description**: `string`\n\n### Event Props\n\n- **onValueChange**: `(value: string[]) => void`\n - Called when the list of tags changes.\n- **onAfterOpen** / **onAfterClose**: `() => void` - After the dropdown's open or close transition.\n\n- **onValidate**: `(value: string[]) => string[] | boolean`\n - Custom validation function.\n\n### Theme Props\n\n- **theme**: `TagsInputThemeProps`\n - Customize styling for: input, inputContainer, tag, loading, error, noOptions, group, groupLabel, separator.\n\n## Examples\n\n### Free-text Tags\n\n```svelte\n<script>\n\tlet value = $state(['svelte', 'kit']);\n</script>\n\n<TagsInput bind:value={value} placeholder=\"Add a tag...\" />\n```\n\n### Restricted to a Static Option List\n\n```svelte\n<script>\n\tlet value = $state(null);\n\tconst items = [\n\t\t{ value: 'red', label: 'Red' },\n\t\t{ value: 'green', label: 'Green' },\n\t\t{ value: 'blue', label: 'Blue' }\n\t];\n</script>\n\n<TagsInput items={items} openOnFocus bind:value={value} />\n```\n\n### Async Options\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(null);\n\tconst getItems = async (searchValue?: string) => {\n\t\tconst response = await fetch(`/api/search?q=${searchValue}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<TagsInput items={getItems} bind:value={value} />\n```\n\n### Options Plus Free Text\n\n```svelte\n<TagsInput items={items} customTags bind:value={value} />\n```\n\n### Limited Number of Tags\n\n```svelte\n<TagsInput maxTags={3} bind:value={value} />\n```\n\n### Pre-filled Values with Async Labels\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(['us', 'uk']);\n\tconst getValueOption = async (value: string) => {\n\t\treturn { value, label: value.toUpperCase() };\n\t};\n</script>\n\n<TagsInput items={getItems} getValueOption={getValueOption} bind:value={value} />\n```\n\n## Keyboard Interactions\n\n- **Enter**: In free mode (or with `customTags`), adds the current trimmed text as a tag and clears the input. When the dropdown is open and an option is highlighted, adds that option instead.\n- **Backspace** (input empty): Removes the last tag.\n- **ArrowLeft** (**ArrowRight** in right-to-left text) at the start of the text: Moves focus to the last tag.\n- **ArrowLeft / ArrowRight** on a tag: Move between tags (mirrored in right-to-left text); the arrow past the last tag returns to the input. **Home / End** jump to the first / last tag.\n- **Backspace / Delete** on a focused tag: Removes it and moves focus to its neighbour (the next tag, else the previous one), or to the input when no tag remains. **Enter / Space** on its remove button removes it too.\n- **ArrowDown / ArrowUp**: Open a closed dropdown (restricted mode), then move the highlight (wraps around; see `loop`).\n- **Home / End** (dropdown open): Highlight the first / last option. Restricted mode only.\n- **Escape**: Closes the dropdown and keeps focus in the input; a second Escape clears the typed text (also in free mode).\n\n## Accessibility\n\n- Removable tags form a `role=\"toolbar\"` labelled \"Tags\" with a single tab stop (a roving tabindex over the remove buttons); the arrow keys move between them. Each tag chip is non-interactive; removal is a dedicated `<button type=\"button\">` with an `aria-label` of \"Remove <label>\".\n- When the field is disabled or read-only there are no remove buttons (no dead tab stops): the tags are a plain `role=\"list\"` of `role=\"listitem\"`.\n- The listbox owns only options and groups; the loading, error and \"no options\" messages sit beside it. A persistent visually hidden live region announces result counts, the empty state, loading and errors.\n- **With items** the input follows the ARIA combobox pattern: `role=\"combobox\"`, `aria-expanded`, `aria-controls`, `aria-autocomplete=\"list\"`, `aria-activedescendant`, `aria-haspopup=\"listbox\"`, and the dropdown is a `role=\"listbox\"` with `role=\"option\"` items.\n- **Without items** the input is a plain text input.\n- `autocomplete=\"off\"` and `data-1p-ignore` on the input.\n\n## Notes\n\n- **Deduplication invariant**: A tag can never appear twice. Duplicate adds (exact string match) simply clear the search. This is a hard requirement \u2014 duplicate keys in the keyed list crash the renderer.\n- **Fresh arrays**: The value array is never mutated in place. Every add/remove assigns a new array so binding, reactivity, and form updates fire correctly.\n- **Dropdown height**: The option list scrolls beyond 200px, or beyond the room left between the field and the viewport edge (the Popover's `--available-height`), so it shrinks above an on-screen keyboard instead of running under it\n- **Animations**: Tags animate on reorder (`animate:flip`) and on enter/leave (`transition:scale`).\n- **Free vs restricted mode**: Omitting `items` gives free-text entry. Providing `items` restricts entry to the option list; add `customTags` to permit free text alongside options.\n- **Label resolution**: A tag's chip label comes from static `items`, then a session cache of options picked from the dropdown, then `getValueOption` (resolved on mount for initial values), falling back to the raw value string.\n- **Dropdown filtering**: Options whose value is already selected are hidden from the dropdown.\n- **Native forms**: The search box carries no `name`. One hidden input per tag (all under `name`) submits the tags: read them with `FormData.getAll(name)`. Nothing is submitted without a name or when the field is disabled.\n\n## Theme Customization\n\nThe TagsInput uses a theme object customizable via the `theme` prop or a global theme.\n\n### Theme Structure\n\n- **input**: Input element styles (flex-1 with a min-width so it wraps to its own line).\n- **inputContainer**: The flex-wrap container holding the tags and input.\n- **tag**: The animated wrapper element around each tag chip.\n- **loading**: Loading indicator styles.\n- **error**: Error message styles.\n- **noOptions**: No-options message styles.\n- **group**, **groupLabel**, **separator**: Group container, group label and the divider between groups.\n\n### Global Theme Setting\n\n```svelte\n<script>\n\timport { setTagsInputTheme } from 'entasis/tags-input';\n\n\tsetTagsInputTheme({\n\t\tinputContainer: {\n\t\t\tbase: 'rounded-lg border-2 transition-all'\n\t\t}\n\t});\n</script>\n```\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";
@@ -31,9 +31,12 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
31
31
  - **loading**: \`boolean\` (default: \`false\`, bindable)
32
32
  - Loading state (managed automatically for async options).
33
33
 
34
- - **items**: \`ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>)\` (optional)
34
+ - **items**: \`ComboboxItems | ((searchValue: string | undefined, request: { signal: AbortSignal }) => MaybePromise<ComboboxItems>)\` (optional)
35
35
  - When omitted, the input accepts free text (any typed value becomes a tag).
36
- - When provided, behaves like a Combobox dropdown: static arrays are filtered client-side, functions are called with the search value and may return a Promise.
36
+ - When provided, behaves like a Combobox dropdown: static arrays are filtered client-side (case- and accent-insensitive, in the active I18n locale), functions are called after a 100ms pause with the search text and \`{ signal }\` and may return a Promise. An older request is aborted and its response ignored when a newer search replaces it; the last results stay visible while the next load.
37
+ - Flat options and \`{ label?, items }\` groups can be mixed; an option can be \`disabled\`.
38
+
39
+ - **open** / **defaultOpen** / **onOpenChange**: The dropdown's open state, as in Combobox. \`onOpenChange(open, details)\` runs before the change; \`details.cancel()\` keeps the list as it was.
37
40
 
38
41
  ### Behavior Props
39
42
 
@@ -43,8 +46,17 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
43
46
  - **maxTags**: \`number\` (optional)
44
47
  - Maximum number of tags. Once reached, further adds (free entry and dropdown selection) are ignored.
45
48
 
46
- - **showAllOnFocus**: \`boolean\` (default: \`false\`)
47
- - Show all options when the input is focused, even without typing (static arrays only).
49
+ - **openOnFocus**: \`boolean\` (default: \`false\`)
50
+ - Open the dropdown when the input is focused, even without typing (static arrays list every option, \`items\` functions are called with an empty search).
51
+ - **showAllOnFocus**: \`boolean\` (deprecated alias of \`openOnFocus\`, kept for one minor)
52
+
53
+ - **keepSearchOnSelect**: \`boolean\` (default: \`false\`)
54
+ - Keep the typed text after an option is chosen, so several matches of one search can be added in a row. Free text added with Enter always clears it.
55
+
56
+ - **filter**: \`(option, searchValue) => boolean\` and **limit**: \`number\` - Custom match and a cap on the matches shown (static arrays).
57
+ - **autoHighlight**: \`boolean | 'always'\` (default: \`false\` with \`customTags\`, else \`'always'\`) - With \`customTags\`, nothing is highlighted on its own, so Enter adds what was typed ("Java") instead of the first match ("JavaScript").
58
+ - **loop**, **separators**, **item**, **onHighlightChange**: As in Combobox. \`onHighlightChange({ value, reason, event })\` reports why the highlight moved.
59
+ - **readOnly**: \`boolean\` - The dropdown opens and can be browsed, but tags cannot be added or removed. The tags render as a plain list with no remove buttons. They still submit.
48
60
 
49
61
  - **getValueOption**: \`(value: string) => MaybePromise<ComboboxOption | null | undefined>\`
50
62
  - Resolves the option (and its label) for a value not yet loaded. Useful for pre-filled values with async options.
@@ -73,6 +85,7 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
73
85
 
74
86
  - **onValueChange**: \`(value: string[]) => void\`
75
87
  - Called when the list of tags changes.
88
+ - **onAfterOpen** / **onAfterClose**: \`() => void\` - After the dropdown's open or close transition.
76
89
 
77
90
  - **onValidate**: \`(value: string[]) => string[] | boolean\`
78
91
  - Custom validation function.
@@ -80,7 +93,7 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
80
93
  ### Theme Props
81
94
 
82
95
  - **theme**: \`TagsInputThemeProps\`
83
- - Customize styling for: input, inputContainer, tag, loading, error, noOptions.
96
+ - Customize styling for: input, inputContainer, tag, loading, error, noOptions, group, groupLabel, separator.
84
97
 
85
98
  ## Examples
86
99
 
@@ -106,7 +119,7 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
106
119
  ];
107
120
  </script>
108
121
 
109
- <TagsInput items={items} showAllOnFocus bind:value={value} />
122
+ <TagsInput items={items} openOnFocus bind:value={value} />
110
123
  \`\`\`
111
124
 
112
125
  ### Async Options
@@ -152,14 +165,18 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
152
165
 
153
166
  - **Enter**: In free mode (or with \`customTags\`), adds the current trimmed text as a tag and clears the input. When the dropdown is open and an option is highlighted, adds that option instead.
154
167
  - **Backspace** (input empty): Removes the last tag.
155
- - **ArrowDown / ArrowUp**: Move the dropdown highlight (wraps around). Restricted mode only.
156
- - **Home / End**: Highlight the first / last option. Restricted mode only.
157
- - **Escape**: Blurs the input and closes the dropdown.
168
+ - **ArrowLeft** (**ArrowRight** in right-to-left text) at the start of the text: Moves focus to the last tag.
169
+ - **ArrowLeft / ArrowRight** on a tag: Move between tags (mirrored in right-to-left text); the arrow past the last tag returns to the input. **Home / End** jump to the first / last tag.
170
+ - **Backspace / Delete** on a focused tag: Removes it and moves focus to its neighbour (the next tag, else the previous one), or to the input when no tag remains. **Enter / Space** on its remove button removes it too.
171
+ - **ArrowDown / ArrowUp**: Open a closed dropdown (restricted mode), then move the highlight (wraps around; see \`loop\`).
172
+ - **Home / End** (dropdown open): Highlight the first / last option. Restricted mode only.
173
+ - **Escape**: Closes the dropdown and keeps focus in the input; a second Escape clears the typed text (also in free mode).
158
174
 
159
175
  ## Accessibility
160
176
 
161
- - The tag collection is a real list (\`role="list"\` / \`role="listitem"\`), not a listbox.
162
- - Each tag chip is non-interactive; removal is a dedicated \`<button type="button">\` with an \`aria-label\` of "Remove <label>".
177
+ - Removable tags form a \`role="toolbar"\` labelled "Tags" with a single tab stop (a roving tabindex over the remove buttons); the arrow keys move between them. Each tag chip is non-interactive; removal is a dedicated \`<button type="button">\` with an \`aria-label\` of "Remove <label>".
178
+ - When the field is disabled or read-only there are no remove buttons (no dead tab stops): the tags are a plain \`role="list"\` of \`role="listitem"\`.
179
+ - The listbox owns only options and groups; the loading, error and "no options" messages sit beside it. A persistent visually hidden live region announces result counts, the empty state, loading and errors.
163
180
  - **With items** the input follows the ARIA combobox pattern: \`role="combobox"\`, \`aria-expanded\`, \`aria-controls\`, \`aria-autocomplete="list"\`, \`aria-activedescendant\`, \`aria-haspopup="listbox"\`, and the dropdown is a \`role="listbox"\` with \`role="option"\` items.
164
181
  - **Without items** the input is a plain text input.
165
182
  - \`autocomplete="off"\` and \`data-1p-ignore\` on the input.
@@ -168,10 +185,12 @@ A multi-value tag input. Use it for entering a list of free-text tags, or restri
168
185
 
169
186
  - **Deduplication invariant**: A tag can never appear twice. Duplicate adds (exact string match) simply clear the search. This is a hard requirement — duplicate keys in the keyed list crash the renderer.
170
187
  - **Fresh arrays**: The value array is never mutated in place. Every add/remove assigns a new array so binding, reactivity, and form updates fire correctly.
188
+ - **Dropdown height**: The option list scrolls beyond 200px, or beyond the room left between the field and the viewport edge (the Popover's \`--available-height\`), so it shrinks above an on-screen keyboard instead of running under it
171
189
  - **Animations**: Tags animate on reorder (\`animate:flip\`) and on enter/leave (\`transition:scale\`).
172
190
  - **Free vs restricted mode**: Omitting \`items\` gives free-text entry. Providing \`items\` restricts entry to the option list; add \`customTags\` to permit free text alongside options.
173
191
  - **Label resolution**: A tag's chip label comes from static \`items\`, then a session cache of options picked from the dropdown, then \`getValueOption\` (resolved on mount for initial values), falling back to the raw value string.
174
192
  - **Dropdown filtering**: Options whose value is already selected are hidden from the dropdown.
193
+ - **Native forms**: The search box carries no \`name\`. One hidden input per tag (all under \`name\`) submits the tags: read them with \`FormData.getAll(name)\`. Nothing is submitted without a name or when the field is disabled.
175
194
 
176
195
  ## Theme Customization
177
196
 
@@ -185,6 +204,7 @@ The TagsInput uses a theme object customizable via the \`theme\` prop or a globa
185
204
  - **loading**: Loading indicator styles.
186
205
  - **error**: Error message styles.
187
206
  - **noOptions**: No-options message styles.
207
+ - **group**, **groupLabel**, **separator**: Group container, group label and the divider between groups.
188
208
 
189
209
  ### Global Theme Setting
190
210
 
@@ -1,41 +1,21 @@
1
- import type { Density } from '../../../types/theme.js';
2
- import type { Messages } from '../../../i18n/en.js';
3
1
  import type { InputProps } from '../Field/field.js';
4
- import type { ComboboxOption, MaybePromise } from '../Combobox/combobox.props.js';
2
+ import type { ComboboxListProps } from '../Combobox/combobox.props.js';
5
3
  import type { TagsInputThemeProps } from './tagsInput.theme.js';
6
- export type TagsInputProps = Omit<InputProps<'tag'>, 'onValueChange'> & {
4
+ export type TagsInputProps = Omit<InputProps<'tag'>, 'onValueChange' | 'density'> & ComboboxListProps & {
7
5
  /** Called when the tags change, with the new array of tag values. */
8
6
  onValueChange?: (value: string[]) => void;
9
- /** Bindable text currently typed in the search input. */
10
- searchValue?: string;
11
- /** Bindable flag indicating async options are being fetched. */
12
- loading?: boolean;
13
7
  /** Hint text shown in the input when no tag is being typed. */
14
8
  placeholder?: string;
15
- /** Static array or function returning items filtered by the current search value. Omit for free-text entry. */
16
- items?: ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>);
17
- /**
18
- * Spacing density forwarded to the dropdown option rows (paddings, gaps, min-height).
19
- * @default 'normal'
20
- */
21
- density?: Density;
22
9
  /** When items is provided, also allow Enter to add free text that is not in the option list. */
23
10
  customTags?: boolean;
24
11
  /** Maximum number of tags allowed; further adds are ignored once reached. */
25
12
  maxTags?: number;
26
- /** When true, shows all options on focus without a search query (static arrays only). */
27
- showAllOnFocus?: boolean;
28
13
  /**
29
- * Function to resolve the option (and its label) for a value when the option is not yet loaded.
30
- * Useful for async options where initial values might not be in the option list.
14
+ * Keep the typed text after an option is chosen, so several matches of the same search can be
15
+ * added in a row. Free text added with Enter always clears it.
16
+ * @default false
31
17
  */
32
- getValueOption?: (value: string) => MaybePromise<ComboboxOption | null | undefined>;
33
- /** Text to display while loading options. Defaults to "Loading...". */
34
- loadingText?: string;
35
- /** Text to display when no options are found or available. Defaults to "No options found". */
36
- noOptionsText?: string;
18
+ keepSearchOnSelect?: boolean;
37
19
  /** Theme overrides for the tags input container, tags, dropdown, and field parts. */
38
20
  theme?: TagsInputThemeProps & InputProps<'tag'>['theme'];
39
- /** Per-instance i18n overrides merged over the global catalog. */
40
- i18n?: Partial<Messages>;
41
21
  };
@@ -50,6 +50,27 @@ export declare const tagsInputTheme: {
50
50
  large: string;
51
51
  };
52
52
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
53
+ group: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
54
+ size: {
55
+ small: string;
56
+ normal: string;
57
+ large: string;
58
+ };
59
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
60
+ groupLabel: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
61
+ size: {
62
+ small: string;
63
+ normal: string;
64
+ large: string;
65
+ };
66
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
67
+ separator: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
68
+ size: {
69
+ small: string;
70
+ normal: string;
71
+ large: string;
72
+ };
73
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
53
74
  };
54
75
  export type TagsInputTheme = typeof tagsInputTheme;
55
76
  export type TagsInputThemeProps = InferComponentTheme<TagsInputTheme>;
@@ -104,6 +125,27 @@ export declare const setTagsInputTheme: (theme: InferComponentTheme<{
104
125
  large: string;
105
126
  };
106
127
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
128
+ group: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
129
+ size: {
130
+ small: string;
131
+ normal: string;
132
+ large: string;
133
+ };
134
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
135
+ groupLabel: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
136
+ size: {
137
+ small: string;
138
+ normal: string;
139
+ large: string;
140
+ };
141
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
142
+ separator: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
143
+ size: {
144
+ small: string;
145
+ normal: string;
146
+ large: string;
147
+ };
148
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
107
149
  }>) => void;
108
150
  export declare const useTagsInputTheme: import("../../../utils/cva/theme.js").UseComponentTheme<{
109
151
  input: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
@@ -156,4 +198,25 @@ export declare const useTagsInputTheme: import("../../../utils/cva/theme.js").Us
156
198
  large: string;
157
199
  };
158
200
  }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
201
+ group: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
202
+ size: {
203
+ small: string;
204
+ normal: string;
205
+ large: string;
206
+ };
207
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
208
+ groupLabel: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
209
+ size: {
210
+ small: string;
211
+ normal: string;
212
+ large: string;
213
+ };
214
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
215
+ separator: (props?: (import("../../../utils/cva/types.js").CVAVariantSchema<{
216
+ size: {
217
+ small: string;
218
+ normal: string;
219
+ large: string;
220
+ };
221
+ }> & import("../../../utils/cva/types.js").CVAClassProp) | undefined) => string;
159
222
  }>;
@@ -79,13 +79,49 @@ const defaultNoOptions = cva({
79
79
  }
80
80
  }
81
81
  });
82
+ const defaultGroup = cva({
83
+ base: 'flex scroll-my-1 flex-col',
84
+ variants: {
85
+ size: {
86
+ small: '',
87
+ normal: '',
88
+ large: ''
89
+ }
90
+ }
91
+ });
92
+ const defaultGroupLabel = cva({
93
+ base: 'text-neutral/70',
94
+ variants: {
95
+ size: {
96
+ small: 'px-sm py-xs text-xs',
97
+ normal: 'px-sm py-xs text-xs',
98
+ large: 'px-sm py-xs text-xs'
99
+ }
100
+ },
101
+ defaultVariants: {
102
+ size: 'normal'
103
+ }
104
+ });
105
+ const defaultSeparator = cva({
106
+ base: 'bg-neutral-muted my-xs h-px',
107
+ variants: {
108
+ size: {
109
+ small: '',
110
+ normal: '',
111
+ large: ''
112
+ }
113
+ }
114
+ });
82
115
  export const tagsInputTheme = {
83
116
  input: defaultInput,
84
117
  inputContainer: defaultInputContainer,
85
118
  tag: defaultTag,
86
119
  loading: defaultLoading,
87
120
  error: defaultError,
88
- noOptions: defaultNoOptions
121
+ noOptions: defaultNoOptions,
122
+ group: defaultGroup,
123
+ groupLabel: defaultGroupLabel,
124
+ separator: defaultSeparator
89
125
  };
90
126
  export const setTagsInputTheme = setComponentTheme('tags-input');
91
127
  export const useTagsInputTheme = useComponentTheme('tags-input', tagsInputTheme);
@@ -15,6 +15,8 @@
15
15
  placeholder = '',
16
16
  theme,
17
17
  disabled,
18
+ readOnly,
19
+ messages,
18
20
  name,
19
21
  onValidate,
20
22
  visible,
@@ -56,6 +58,12 @@
56
58
  set disabled(v: boolean | undefined) {
57
59
  disabled = v;
58
60
  },
61
+ get readOnly() {
62
+ return readOnly;
63
+ },
64
+ get messages() {
65
+ return messages;
66
+ },
59
67
  get required() {
60
68
  return required;
61
69
  },
@@ -1 +1 @@
1
- export declare const textAreaDescription = "\n# TextArea Component\n\nThe TextArea component provides a multi-line text input field with a configurable row count, a maximum length, and validation.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet message = $state('');\n</script>\n\n<TextArea label=\"Message\" bind:value={message} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **value**: string (bindable) - Textarea value\n- **placeholder**: string - Placeholder text\n- **rows**: number (default: 3) - Number of visible text rows\n\n### Behavior Props\n- **maxLength**: number - Maximum character count\n- **textareaAttrs**: native attributes applied to the underlying textarea\n- **onPressEnter**: (payload) => void - Called when Enter is pressed without Shift\n\nThe textarea is not resizable by default (`resize-none`); enable a resize handle through the `input` theme slot, e.g. `theme={{ input: { base: 'resize-y' } }}`.\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 input\n- **size**: 'small' | 'normal' | 'large' - Input size\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<Label />\n\t<Description />\n\t<InputContainer>\n\t\t<TextArea />\n\t</InputContainer>\n\t<CharacterCount />\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic TextArea\n```svelte\n<script>\n\tlet bio = $state('');\n</script>\n\n<TextArea \n\tlabel=\"Biography\"\n\tbind:value={bio}\n\trows={4}\n/>\n```\n\n### With Placeholder\n```svelte\n<TextArea \n\tlabel=\"Comments\"\n\tplaceholder=\"Enter your comments here...\"\n\tbind:value={comments}\n/>\n```\n\n### With Max Length\n```svelte\n<TextArea \n\tlabel=\"Tweet\"\n\tbind:value={tweet}\n\tmaxLength={280}\n\tdescription=\"Maximum 280 characters\"\n/>\n```\n\n### Required Field\n```svelte\n<TextArea \n\tlabel=\"Feedback\"\n\tbind:value={feedback}\n\trequired\n\trows={5}\n/>\n```\n\n### Disabled State\n```svelte\n<TextArea \n\tlabel=\"Read Only\"\n\tvalue=\"This content cannot be edited\"\n\tdisabled\n/>\n```\n\n### Vertical Resize Handle\n```svelte\n<TextArea \n\tlabel=\"Notes\"\n\tbind:value={content}\n\ttheme={{ input: { base: 'resize-y' } }}\n\trows={6}\n/>\n```\n\n### Contact Form\n```svelte\n<script>\n\tlet formData = $state({\n\t\tname: '',\n\t\temail: '',\n\t\tmessage: ''\n\t});\n\t\n\tfunction handleSubmit() {\n\t\tconsole.log('Submitted:', formData);\n\t}\n</script>\n\n<form onsubmit={handleSubmit}>\n\t<TextInput \n\t\tlabel=\"Name\"\n\t\tbind:value={formData.name}\n\t\trequired\n\t/>\n\t\n\t<TextInput \n\t\ttype=\"email\"\n\t\tlabel=\"Email\"\n\t\tbind:value={formData.email}\n\t\trequired\n\t/>\n\t\n\t<TextArea \n\t\tlabel=\"Message\"\n\t\tbind:value={formData.message}\n\t\trows={6}\n\t\trequired\n\t\tplaceholder=\"How can we help you?\"\n\t/>\n\t\n\t<Button type=\"submit\">Send Message</Button>\n</form>\n```\n\n### Product Description\n```svelte\n<TextArea \n\tlabel=\"Product Description\"\n\tbind:value={description}\n\trows={8}\n\tmaxLength={500}\n\tdescription=\"Provide a detailed description of your product\"\n/>\n```\n\n### Code Input\n```svelte\n<TextArea \n\tlabel=\"CSS Styles\"\n\tbind:value={css}\n\trows={10}\n\tclass=\"font-mono\"\n\ttheme={{ input: { base: 'resize' } }}\n\tplaceholder={'.button { ... }'}\n/>\n```\n\n### Review Form\n```svelte\n<script>\n\tlet review = $state('');\n\tlet rating = $state(5);\n</script>\n\n<div>\n\t<NumberInput \n\t\tlabel=\"Rating\"\n\t\tbind:value={rating}\n\t\tmin={1}\n\t\tmax={5}\n\t/>\n\t\n\t<TextArea \n\t\tlabel=\"Review\"\n\t\tbind:value={review}\n\t\trows={6}\n\t\tmaxLength={1000}\n\t\trequired\n\t\tplaceholder=\"Share your experience...\"\n\t/>\n</div>\n```\n\n### Support Ticket\n```svelte\n<TextArea \n\tlabel=\"Issue Description\"\n\tbind:value={issue}\n\trows={8}\n\trequired\n\tdescription=\"Please provide as much detail as possible\"\n\tplaceholder=\"Describe the issue you're experiencing...\"\n/>\n```\n\n## Character Count\n\nWhen `maxLength` is set, a character counter is automatically displayed:\n- Shows current/max characters\n- Updates in real-time\n- Visual warning when approaching limit\n\n## Validation\n\nTextArea automatically validates:\n- **required**: Non-empty value\n- **maxLength**: Value doesn't exceed maximum\n\n## Accessibility\n\n- Proper label association\n- ARIA attributes for max length\n- Character count announced to screen readers\n- Resize controls are keyboard accessible\n- Error states properly communicated\n\n## Notes\n\n- Supports multi-line text input\n- Character counting for length limits\n- Resize handle can be enabled through the input theme slot\n- Works in forms with validation\n- Maintains scroll position during typing\n\n## Theme Customization\n\nThe TextArea 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- **input**: Textarea element styles\n- **inputContainer**: Textarea container wrapper styles\n\n### Available Variants\n\n**input**:\n- base: Base classes applied to the textarea element\n- Variants:\n - size: 'small' | 'normal' | 'large' - Text size\n - disabled: boolean - Disabled state styling\n\n**inputContainer**:\n- base: Base classes for the textarea container (handles focus states, borders, padding)\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container height and size-based styling\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<TextArea \n label=\"Message\"\n bind:value={message}\n theme={{\n inputContainer: {\n base: 'border-2 rounded-lg',\n size: {\n normal: 'h-24 px-4 py-2'\n }\n },\n input: {\n size: {\n normal: 'text-base'\n }\n }\n }}\n/>\n```\n\n**Focus State Customization**:\n\nTo recolor every focus ring in the app at once, set `designTokens.focusColor` on `Theme`\ninstead of overriding per component. `ring-focus` is the focus state role and falls back to the\ncurrent role, so it never hard-pins a color.\n\n```svelte\n<TextArea \n label=\"Custom TextArea\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'focus-within:ring-2 focus-within:ring-focus/50 focus-within:border-focus'\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setTextAreaTheme } from './index.ts';\n \n setTextAreaTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'h-24 px-4 py-2'\n }\n },\n input: {\n base: 'resize-y min-h-[100px]'\n }\n });\n</script>\n```\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 textAreaDescription = "\n# TextArea Component\n\nThe TextArea component provides a multi-line text input field with a configurable row count, a maximum length, and validation.\n\n## Basic Usage\n\n```svelte\n<script>\n\tlet message = $state('');\n</script>\n\n<TextArea label=\"Message\" bind:value={message} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **value**: string (bindable) - Textarea value\n- **placeholder**: string - Placeholder text\n- **rows**: number (default: 3) - Number of visible text rows\n\n### Behavior Props\n- **maxLength**: number - Maximum character count\n- **textareaAttrs**: native attributes applied to the underlying textarea\n- **onPressEnter**: (payload) => void - Called when Enter is pressed without Shift\n\nThe textarea is not resizable by default (`resize-none`); enable a resize handle through the `input` theme slot, e.g. `theme={{ input: { base: 'resize-y' } }}`.\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 input\n- **readOnly**: boolean - Make the textarea read-only: stays focusable and announced as read-only, refuses edits, and still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too\n- **size**: 'small' | 'normal' | 'large' - Input size\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<Label />\n\t<Description />\n\t<InputContainer>\n\t\t<TextArea />\n\t</InputContainer>\n\t<CharacterCount />\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic TextArea\n```svelte\n<script>\n\tlet bio = $state('');\n</script>\n\n<TextArea \n\tlabel=\"Biography\"\n\tbind:value={bio}\n\trows={4}\n/>\n```\n\n### With Placeholder\n```svelte\n<TextArea \n\tlabel=\"Comments\"\n\tplaceholder=\"Enter your comments here...\"\n\tbind:value={comments}\n/>\n```\n\n### With Max Length\n```svelte\n<TextArea \n\tlabel=\"Tweet\"\n\tbind:value={tweet}\n\tmaxLength={280}\n\tdescription=\"Maximum 280 characters\"\n/>\n```\n\n### Required Field\n```svelte\n<TextArea \n\tlabel=\"Feedback\"\n\tbind:value={feedback}\n\trequired\n\trows={5}\n/>\n```\n\n### Disabled State\n```svelte\n<TextArea \n\tlabel=\"Read Only\"\n\tvalue=\"This content cannot be edited\"\n\tdisabled\n/>\n```\n\n### Vertical Resize Handle\n```svelte\n<TextArea \n\tlabel=\"Notes\"\n\tbind:value={content}\n\ttheme={{ input: { base: 'resize-y' } }}\n\trows={6}\n/>\n```\n\n### Contact Form\n```svelte\n<script>\n\tlet formData = $state({\n\t\tname: '',\n\t\temail: '',\n\t\tmessage: ''\n\t});\n\t\n\tfunction handleSubmit() {\n\t\tconsole.log('Submitted:', formData);\n\t}\n</script>\n\n<form onsubmit={handleSubmit}>\n\t<TextInput \n\t\tlabel=\"Name\"\n\t\tbind:value={formData.name}\n\t\trequired\n\t/>\n\t\n\t<TextInput \n\t\ttype=\"email\"\n\t\tlabel=\"Email\"\n\t\tbind:value={formData.email}\n\t\trequired\n\t/>\n\t\n\t<TextArea \n\t\tlabel=\"Message\"\n\t\tbind:value={formData.message}\n\t\trows={6}\n\t\trequired\n\t\tplaceholder=\"How can we help you?\"\n\t/>\n\t\n\t<Button type=\"submit\">Send Message</Button>\n</form>\n```\n\n### Product Description\n```svelte\n<TextArea \n\tlabel=\"Product Description\"\n\tbind:value={description}\n\trows={8}\n\tmaxLength={500}\n\tdescription=\"Provide a detailed description of your product\"\n/>\n```\n\n### Code Input\n```svelte\n<TextArea \n\tlabel=\"CSS Styles\"\n\tbind:value={css}\n\trows={10}\n\tclass=\"font-mono\"\n\ttheme={{ input: { base: 'resize' } }}\n\tplaceholder={'.button { ... }'}\n/>\n```\n\n### Review Form\n```svelte\n<script>\n\tlet review = $state('');\n\tlet rating = $state(5);\n</script>\n\n<div>\n\t<NumberInput \n\t\tlabel=\"Rating\"\n\t\tbind:value={rating}\n\t\tmin={1}\n\t\tmax={5}\n\t/>\n\t\n\t<TextArea \n\t\tlabel=\"Review\"\n\t\tbind:value={review}\n\t\trows={6}\n\t\tmaxLength={1000}\n\t\trequired\n\t\tplaceholder=\"Share your experience...\"\n\t/>\n</div>\n```\n\n### Support Ticket\n```svelte\n<TextArea \n\tlabel=\"Issue Description\"\n\tbind:value={issue}\n\trows={8}\n\trequired\n\tdescription=\"Please provide as much detail as possible\"\n\tplaceholder=\"Describe the issue you're experiencing...\"\n/>\n```\n\n## Character Count\n\nWhen `maxLength` is set, a character counter is automatically displayed:\n- Shows current/max characters\n- Updates in real-time\n- Visual warning when approaching limit\n\n## Validation\n\nTextArea automatically validates:\n- **required**: Non-empty value\n- **maxLength**: Value doesn't exceed maximum\n\n## Accessibility\n\n- Proper label association\n- ARIA attributes for max length\n- Character count announced to screen readers\n- Resize controls are keyboard accessible\n- Error states properly communicated\n\n## Notes\n\n- Supports multi-line text input\n- Character counting for length limits\n- Resize handle can be enabled through the input theme slot\n- Works in forms with validation\n- Maintains scroll position during typing\n\n## Theme Customization\n\nThe TextArea 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- **input**: Textarea element styles\n- **inputContainer**: Textarea container wrapper styles\n\n### Available Variants\n\n**input**:\n- base: Base classes applied to the textarea element\n- Variants:\n - size: 'small' | 'normal' | 'large' - Text size\n - disabled: boolean - Disabled state styling\n\n**inputContainer**:\n- base: Base classes for the textarea container (handles focus states, borders, padding)\n- Variants:\n - size: 'small' | 'normal' | 'large' - Container height and size-based styling\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<TextArea \n label=\"Message\"\n bind:value={message}\n theme={{\n inputContainer: {\n base: 'border-2 rounded-lg',\n size: {\n normal: 'h-24 px-4 py-2'\n }\n },\n input: {\n size: {\n normal: 'text-base'\n }\n }\n }}\n/>\n```\n\n**Focus State Customization**:\n\nTo recolor every focus ring in the app at once, set `designTokens.focusColor` on `Theme`\ninstead of overriding per component. `ring-focus` is the focus state role and falls back to the\ncurrent role, so it never hard-pins a color.\n\n```svelte\n<TextArea \n label=\"Custom TextArea\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'focus-within:ring-2 focus-within:ring-focus/50 focus-within:border-focus'\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setTextAreaTheme } from './index.ts';\n \n setTextAreaTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'h-24 px-4 py-2'\n }\n },\n input: {\n base: 'resize-y min-h-[100px]'\n }\n });\n</script>\n```\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";
@@ -35,6 +35,7 @@ The textarea is not resizable by default (\`resize-none\`); enable a resize hand
35
35
  - **error**: string - Error message
36
36
  - **required**: boolean - Mark as required
37
37
  - **disabled**: boolean - Disable input
38
+ - **readOnly**: boolean - Make the textarea read-only: stays focusable and announced as read-only, refuses edits, and still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too
38
39
  - **size**: 'small' | 'normal' | 'large' - Input size
39
40
 
40
41
  ### Styling Props
@@ -14,6 +14,8 @@
14
14
  placeholder = '',
15
15
  theme,
16
16
  disabled,
17
+ readOnly,
18
+ messages,
17
19
  name,
18
20
  onValidate,
19
21
  visible,
@@ -55,6 +57,12 @@
55
57
  set disabled(v: boolean | undefined) {
56
58
  disabled = v;
57
59
  },
60
+ get readOnly() {
61
+ return readOnly;
62
+ },
63
+ get messages() {
64
+ return messages;
65
+ },
58
66
  get required() {
59
67
  return required;
60
68
  },
@@ -98,7 +106,6 @@
98
106
  {...inputAttrs}
99
107
  disabled={field.disabled}
100
108
  required={field.required}
101
- data-1p-ignore
102
109
  {type}
103
110
  {id}
104
111
  name={field.name}
@@ -1 +1 @@
1
- export declare const textInputDescription = "\n# TextInput Component\n\nThe TextInput component is a versatile text input field with support for different input types (text, email, URL), validation, and consistent styling.\n\n## Basic Usage\n\n```svelte\n<TextInput label=\"Name\" bind:value={name} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **type**: 'text' | 'email' | 'url' (default: 'text')\n- **value**: string (bindable) - Input value\n- **placeholder**: string - Placeholder text\n\n### Field Props (inherited)\n- **label**: string | Snippet - Field label\n- **description**: string | Snippet - Helper text below input\n- **error**: string - Error message\n- **required**: boolean - Mark field as required\n- **disabled**: boolean - Disable input\n- **size**: 'small' | 'normal' | 'large' - Input size\n\n### Content Slots\n- **prefix**: Snippet - Content before input (icons, text)\n- **suffix**: Snippet - Content after input (icons, buttons)\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<Label />\n\t<Description />\n\t<InputContainer>\n\t\t<Prefix />\n\t\t<Input />\n\t\t<Suffix />\n\t</InputContainer>\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic Text Input\n```svelte\n<script>\n\tlet name = $state('');\n</script>\n\n<TextInput label=\"Name\" bind:value={name} />\n```\n\n### Email Input\n```svelte\n<TextInput \n\ttype=\"email\"\n\tlabel=\"Email\"\n\tplaceholder=\"you@example.com\"\n\tbind:value={email}\n\trequired\n/>\n```\n\n### URL Input\n```svelte\n<TextInput \n\ttype=\"url\"\n\tlabel=\"Website\"\n\tplaceholder=\"https://example.com\"\n\tbind:value={website}\n/>\n```\n\n### With Placeholder\n```svelte\n<TextInput \n\tlabel=\"Username\"\n\tplaceholder=\"Enter your username\"\n\tbind:value={username}\n/>\n```\n\n### With Description\n```svelte\n<TextInput \n\tlabel=\"Display Name\"\n\tdescription=\"This is how others will see you\"\n\tbind:value={displayName}\n/>\n```\n\n### Required Field\n```svelte\n<TextInput \n\tlabel=\"Full Name\"\n\trequired\n\tbind:value={fullName}\n/>\n```\n\n### With Prefix Icon\n```svelte\n<script lang=\"ts\">\n\timport { magnifyingGlassIcon } from 'entasis/icons/magnifyingGlass';\n\n\tlet search = $state('');\n</script>\n\n<TextInput label=\"Search\" bind:value={search}>\n\t{#snippet prefix()}\n\t\t{@render magnifyingGlassIcon()}\n\t{/snippet}\n</TextInput>\n```\n\n### With Suffix Button\n```svelte\n<script lang=\"ts\">\n\timport { copyIcon } from 'entasis/icons/copy';\n\n\tlet apiKey = $state('');\n\tconst copyToClipboard = () => navigator.clipboard.writeText(apiKey);\n</script>\n\n<TextInput label=\"API Key\" bind:value={apiKey}>\n\t{#snippet suffix()}\n\t\t<Button size=\"small\" squared onclick={copyToClipboard}>\n\t\t\t{@render copyIcon()}\n\t\t</Button>\n\t{/snippet}\n</TextInput>\n```\n\n### With Both Prefix and Suffix\n```svelte\n<script lang=\"ts\">\n\timport { arrowSquareOutIcon } from 'entasis/icons/arrowSquareOut';\n\n\tlet url = $state('');\n</script>\n\n<TextInput label=\"Website\" bind:value={url}>\n\t{#snippet prefix()}\n\t\t<span class=\"text-muted\">https://</span>\n\t{/snippet}\n\t{#snippet suffix()}\n\t\t{@render arrowSquareOutIcon()}\n\t{/snippet}\n</TextInput>\n```\n\n### Disabled State\n```svelte\n<TextInput \n\tlabel=\"Disabled\"\n\tvalue=\"Cannot edit\"\n\tdisabled\n/>\n```\n\n### With Error\n```svelte\n<TextInput \n\tlabel=\"Username\"\n\tbind:value={username}\n\terror={usernameError}\n/>\n```\n\n### Different Sizes\n```svelte\n<TextInput size=\"small\" label=\"Small\" bind:value={val1} />\n<TextInput size=\"normal\" label=\"Normal\" bind:value={val2} />\n<TextInput size=\"large\" label=\"Large\" bind:value={val3} />\n```\n\n### Login Form\n```svelte\n<script lang=\"ts\">\n\timport { envelopeIcon } from 'entasis/icons/envelope';\n\timport { lockIcon } from 'entasis/icons/lock';\n\n\tlet email = $state('');\n\tlet password = $state('');\n</script>\n\n<form>\n\t<TextInput \n\t\ttype=\"email\"\n\t\tlabel=\"Email\"\n\t\tplaceholder=\"your@email.com\"\n\t\tbind:value={email}\n\t\trequired\n\t>\n\t\t{#snippet prefix()}\n\t\t\t{@render envelopeIcon()}\n\t\t{/snippet}\n\t</TextInput>\n\t\n\t<PasswordInput \n\t\tlabel=\"Password\"\n\t\tbind:value={password}\n\t\trequired\n\t>\n\t\t{#snippet prefix()}\n\t\t\t{@render lockIcon()}\n\t\t{/snippet}\n\t</PasswordInput>\n\t\n\t<Button type=\"submit\" fullWidth>Login</Button>\n</form>\n```\n\n## Validation\n\nTextInput automatically validates:\n- **email**: Valid email format\n- **url**: Valid URL format\n- **required**: Non-empty value\n\nCustom validation can be added through the Field component.\n\n## Accessibility\n\n- Proper label association with input\n- ARIA attributes for required fields\n- Error messages announced to screen readers\n- Focus states clearly visible\n- Keyboard accessible\n\n## Notes\n\n- Extends the Field component for consistent behavior\n- Prefix/suffix slots are ideal for icons and actions\n- Input container handles focus states\n- Validation runs on blur and submit\n- Type determines browser validation behavior\n\n## Theme Customization\n\nThe TextInput 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- **input**: Input element styles\n- **inputContainer**: Input container wrapper styles\n\n### Available Variants\n\n**input**:\n- base: Base classes applied to the input element\n- Variants:\n - size: 'small' | 'normal' | 'large' - Text size\n - disabled: boolean - Disabled state styling\n\n**inputContainer**:\n- base: Base classes for the input container (handles focus states, borders, padding)\n- Variants:\n - size: 'small' | 'normal' | 'large' - Size-based styling\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<TextInput \n label=\"Custom Input\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'border-2 rounded-lg',\n size: {\n normal: 'px-4 py-2'\n }\n },\n input: {\n size: {\n normal: 'text-base'\n }\n }\n }}\n/>\n```\n\n**Focus State Customization**:\n\nTo recolor every focus ring in the app at once, set `designTokens.focusColor` on `Theme`\ninstead of overriding per component. `ring-focus` is the focus state role and falls back to the\ncurrent role, so it never hard-pins a color.\n\n```svelte\n<TextInput \n label=\"Styled Input\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'focus-within:ring-2 focus-within:ring-focus/50 focus-within:border-focus'\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setTextInputTheme } from './index.ts';\n \n setTextInputTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'px-4 py-2'\n }\n },\n input: {\n base: 'placeholder:text-gray-400'\n }\n });\n</script>\n```\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 textInputDescription = "\n# TextInput Component\n\nThe TextInput component is a versatile text input field with support for different input types (text, email, URL), validation, and consistent styling.\n\n## Basic Usage\n\n```svelte\n<TextInput label=\"Name\" bind:value={name} />\n```\n\n## Props\n\nExtends all Field component props plus:\n\n### Core Props\n- **type**: 'text' | 'email' | 'url' (default: 'text')\n- **value**: string (bindable) - Input value\n- **placeholder**: string - Placeholder text\n- **inputAttrs**: native attributes for the underlying `<input>`, such as `autocomplete`, `inputmode`, `aria-*`, `data-*` and event handlers. `id`, `name`, `type`, `value`, `placeholder`, `required`, `disabled` and `class` stay owned by the component\n\n### Field Props (inherited)\n- **label**: string | Snippet - Field label\n- **description**: string | Snippet - Helper text below input\n- **error**: string - Error message\n- **required**: boolean - Mark field as required\n- **disabled**: boolean - Disable input\n- **readOnly**: boolean - Make the input read-only: stays focusable and announced as read-only, refuses edits, and still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too\n- **size**: 'small' | 'normal' | 'large' - Input size\n\n### Content Slots\n- **prefix**: Snippet - Content before input (icons, text)\n- **suffix**: Snippet - Content after input (icons, buttons)\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<Label />\n\t<Description />\n\t<InputContainer>\n\t\t<Prefix />\n\t\t<Input />\n\t\t<Suffix />\n\t</InputContainer>\n\t<Error />\n</Field>\n```\n\n## Examples\n\n### Basic Text Input\n```svelte\n<script>\n\tlet name = $state('');\n</script>\n\n<TextInput label=\"Name\" bind:value={name} />\n```\n\n### Email Input\n```svelte\n<TextInput \n\ttype=\"email\"\n\tlabel=\"Email\"\n\tplaceholder=\"you@example.com\"\n\tbind:value={email}\n\trequired\n/>\n```\n\n### URL Input\n```svelte\n<TextInput \n\ttype=\"url\"\n\tlabel=\"Website\"\n\tplaceholder=\"https://example.com\"\n\tbind:value={website}\n/>\n```\n\n### With Placeholder\n```svelte\n<TextInput \n\tlabel=\"Username\"\n\tplaceholder=\"Enter your username\"\n\tbind:value={username}\n/>\n```\n\n### With Description\n```svelte\n<TextInput \n\tlabel=\"Display Name\"\n\tdescription=\"This is how others will see you\"\n\tbind:value={displayName}\n/>\n```\n\n### Required Field\n```svelte\n<TextInput \n\tlabel=\"Full Name\"\n\trequired\n\tbind:value={fullName}\n/>\n```\n\n### With Prefix Icon\n```svelte\n<script lang=\"ts\">\n\timport { magnifyingGlassIcon } from 'entasis/icons/magnifyingGlass';\n\n\tlet search = $state('');\n</script>\n\n<TextInput label=\"Search\" bind:value={search}>\n\t{#snippet prefix()}\n\t\t{@render magnifyingGlassIcon()}\n\t{/snippet}\n</TextInput>\n```\n\n### With Suffix Button\n```svelte\n<script lang=\"ts\">\n\timport { copyIcon } from 'entasis/icons/copy';\n\n\tlet apiKey = $state('');\n\tconst copyToClipboard = () => navigator.clipboard.writeText(apiKey);\n</script>\n\n<TextInput label=\"API Key\" bind:value={apiKey}>\n\t{#snippet suffix()}\n\t\t<Button size=\"small\" squared onclick={copyToClipboard}>\n\t\t\t{@render copyIcon()}\n\t\t</Button>\n\t{/snippet}\n</TextInput>\n```\n\n### With Both Prefix and Suffix\n```svelte\n<script lang=\"ts\">\n\timport { arrowSquareOutIcon } from 'entasis/icons/arrowSquareOut';\n\n\tlet url = $state('');\n</script>\n\n<TextInput label=\"Website\" bind:value={url}>\n\t{#snippet prefix()}\n\t\t<span class=\"text-muted\">https://</span>\n\t{/snippet}\n\t{#snippet suffix()}\n\t\t{@render arrowSquareOutIcon()}\n\t{/snippet}\n</TextInput>\n```\n\n### Disabled State\n```svelte\n<TextInput \n\tlabel=\"Disabled\"\n\tvalue=\"Cannot edit\"\n\tdisabled\n/>\n```\n\n### With Error\n```svelte\n<TextInput \n\tlabel=\"Username\"\n\tbind:value={username}\n\terror={usernameError}\n/>\n```\n\n### Different Sizes\n```svelte\n<TextInput size=\"small\" label=\"Small\" bind:value={val1} />\n<TextInput size=\"normal\" label=\"Normal\" bind:value={val2} />\n<TextInput size=\"large\" label=\"Large\" bind:value={val3} />\n```\n\n### Login Form\n```svelte\n<script lang=\"ts\">\n\timport { envelopeIcon } from 'entasis/icons/envelope';\n\timport { lockIcon } from 'entasis/icons/lock';\n\n\tlet email = $state('');\n\tlet password = $state('');\n</script>\n\n<form>\n\t<TextInput \n\t\ttype=\"email\"\n\t\tlabel=\"Email\"\n\t\tplaceholder=\"your@email.com\"\n\t\tinputAttrs={{ autocomplete: 'username' }}\n\t\tbind:value={email}\n\t\trequired\n\t>\n\t\t{#snippet prefix()}\n\t\t\t{@render envelopeIcon()}\n\t\t{/snippet}\n\t</TextInput>\n\t\n\t<PasswordInput \n\t\tlabel=\"Password\"\n\t\tautocomplete=\"current-password\"\n\t\tbind:value={password}\n\t\trequired\n\t>\n\t\t{#snippet prefix()}\n\t\t\t{@render lockIcon()}\n\t\t{/snippet}\n\t</PasswordInput>\n\t\n\t<Button type=\"submit\" fullWidth>Login</Button>\n</form>\n```\n\n## Validation\n\nTextInput automatically validates:\n- **email**: Valid email format\n- **url**: Valid URL format\n- **required**: Non-empty value\n\nCustom validation can be added through the Field component.\n\n## Accessibility\n\n- Proper label association with input\n- ARIA attributes for required fields\n- Error messages announced to screen readers\n- Focus states clearly visible\n- Keyboard accessible\n\n## Notes\n\n- Extends the Field component for consistent behavior\n- Prefix/suffix slots are ideal for icons and actions\n- Input container handles focus states\n- Validation runs on blur and submit\n- Type determines browser validation behavior\n- Password managers and browser autofill are not blocked. To keep a manager away from a field, pass its opt-out attribute through `inputAttrs`, for example `inputAttrs={{ 'data-1p-ignore': true }}` for 1Password\n\n## Theme Customization\n\nThe TextInput 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- **input**: Input element styles\n- **inputContainer**: Input container wrapper styles\n\n### Available Variants\n\n**input**:\n- base: Base classes applied to the input element\n- Variants:\n - size: 'small' | 'normal' | 'large' - Text size\n - disabled: boolean - Disabled state styling\n\n**inputContainer**:\n- base: Base classes for the input container (handles focus states, borders, padding)\n- Variants:\n - size: 'small' | 'normal' | 'large' - Size-based styling\n - disabled: boolean - Disabled state styling\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<TextInput \n label=\"Custom Input\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'border-2 rounded-lg',\n size: {\n normal: 'px-4 py-2'\n }\n },\n input: {\n size: {\n normal: 'text-base'\n }\n }\n }}\n/>\n```\n\n**Focus State Customization**:\n\nTo recolor every focus ring in the app at once, set `designTokens.focusColor` on `Theme`\ninstead of overriding per component. `ring-focus` is the focus state role and falls back to the\ncurrent role, so it never hard-pins a color.\n\n```svelte\n<TextInput \n label=\"Styled Input\"\n bind:value={value}\n theme={{\n inputContainer: {\n base: 'focus-within:ring-2 focus-within:ring-focus/50 focus-within:border-focus'\n }\n }}\n/>\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setTextInputTheme } from './index.ts';\n \n setTextInputTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'px-4 py-2'\n }\n },\n input: {\n base: 'placeholder:text-gray-400'\n }\n });\n</script>\n```\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";
@@ -17,6 +17,7 @@ Extends all Field component props plus:
17
17
  - **type**: 'text' | 'email' | 'url' (default: 'text')
18
18
  - **value**: string (bindable) - Input value
19
19
  - **placeholder**: string - Placeholder text
20
+ - **inputAttrs**: native attributes for the underlying \`<input>\`, such as \`autocomplete\`, \`inputmode\`, \`aria-*\`, \`data-*\` and event handlers. \`id\`, \`name\`, \`type\`, \`value\`, \`placeholder\`, \`required\`, \`disabled\` and \`class\` stay owned by the component
20
21
 
21
22
  ### Field Props (inherited)
22
23
  - **label**: string | Snippet - Field label
@@ -24,6 +25,7 @@ Extends all Field component props plus:
24
25
  - **error**: string - Error message
25
26
  - **required**: boolean - Mark field as required
26
27
  - **disabled**: boolean - Disable input
28
+ - **readOnly**: boolean - Make the input read-only: stays focusable and announced as read-only, refuses edits, and still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too
27
29
  - **size**: 'small' | 'normal' | 'large' - Input size
28
30
 
29
31
  ### Content Slots
@@ -199,6 +201,7 @@ Extends all Field component props plus:
199
201
  type="email"
200
202
  label="Email"
201
203
  placeholder="your@email.com"
204
+ inputAttrs={{ autocomplete: 'username' }}
202
205
  bind:value={email}
203
206
  required
204
207
  >
@@ -209,6 +212,7 @@ Extends all Field component props plus:
209
212
 
210
213
  <PasswordInput
211
214
  label="Password"
215
+ autocomplete="current-password"
212
216
  bind:value={password}
213
217
  required
214
218
  >
@@ -245,6 +249,7 @@ Custom validation can be added through the Field component.
245
249
  - Input container handles focus states
246
250
  - Validation runs on blur and submit
247
251
  - Type determines browser validation behavior
252
+ - Password managers and browser autofill are not blocked. To keep a manager away from a field, pass its opt-out attribute through \`inputAttrs\`, for example \`inputAttrs={{ 'data-1p-ignore': true }}\` for 1Password
248
253
 
249
254
  ## Theme Customization
250
255
 
@@ -37,6 +37,8 @@
37
37
  required = false,
38
38
  theme,
39
39
  disabled,
40
+ readOnly,
41
+ messages,
40
42
  name,
41
43
  onValidate,
42
44
  visible,
@@ -77,6 +79,12 @@
77
79
  set disabled(v: boolean | undefined) {
78
80
  disabled = v;
79
81
  },
82
+ get readOnly() {
83
+ return readOnly;
84
+ },
85
+ get messages() {
86
+ return messages;
87
+ },
80
88
  get required() {
81
89
  return required;
82
90
  },
@@ -209,7 +217,7 @@
209
217
  }
210
218
  }}
211
219
  {...rest}
212
- {@attach popover.reference}
220
+ anchor={popover.reference}
213
221
  >
214
222
  <input
215
223
  data-1p-ignore
@@ -1 +1 @@
1
- export declare const timeInputDescription = "\n\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 timeInputDescription = "\n# TimeInput\n\nMasked time entry composed with Field, with a popover list of time options. The value is a number\ncounted from midnight, in the unit chosen by `as`.\n\n## Import\n\n```svelte\n<script lang=\"ts\">\n import { TimeInput } from './index.ts';\n</script>\n```\n\n## Usage\n\n```svelte\n<script lang=\"ts\">\n let value = $state<number | null>(null);\n</script>\n\n<TimeInput label=\"Start time\" format=\"HH:MM\" bind:value />\n```\n\n## Props\n\n- **as**: 'minuteSinceMidnight' | 'secondSinceMidnight' | 'millisecondSinceMidnight' - Unit of the numeric value; defaults to milliseconds\n- **format**: Maskito time mode such as `HH:MM` or `HH:MM:SS`; controls display and parsing\n- **minValues** / **maxValues**: per-segment bounds passed to the time mask\n- **placeholder**: string - Defaults to the `format` string\n- **disabled**: boolean - Disable the input and the picker button; a disabled field leaves Form values and posts nothing\n- **readOnly**: boolean - The input stays focusable and is announced as read-only; typing and picker choices are refused, and the value still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too\n- **size**: 'small' | 'normal' | 'large' - Input size\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,5 +1,36 @@
1
1
  export const timeInputDescription = `
2
+ # TimeInput
2
3
 
4
+ Masked time entry composed with Field, with a popover list of time options. The value is a number
5
+ counted from midnight, in the unit chosen by \`as\`.
6
+
7
+ ## Import
8
+
9
+ \`\`\`svelte
10
+ <script lang="ts">
11
+ import { TimeInput } from './index.ts';
12
+ </script>
13
+ \`\`\`
14
+
15
+ ## Usage
16
+
17
+ \`\`\`svelte
18
+ <script lang="ts">
19
+ let value = $state<number | null>(null);
20
+ </script>
21
+
22
+ <TimeInput label="Start time" format="HH:MM" bind:value />
23
+ \`\`\`
24
+
25
+ ## Props
26
+
27
+ - **as**: 'minuteSinceMidnight' | 'secondSinceMidnight' | 'millisecondSinceMidnight' - Unit of the numeric value; defaults to milliseconds
28
+ - **format**: Maskito time mode such as \`HH:MM\` or \`HH:MM:SS\`; controls display and parsing
29
+ - **minValues** / **maxValues**: per-segment bounds passed to the time mask
30
+ - **placeholder**: string - Defaults to the \`format\` string
31
+ - **disabled**: boolean - Disable the input and the picker button; a disabled field leaves Form values and posts nothing
32
+ - **readOnly**: boolean - The input stays focusable and is announced as read-only; typing and picker choices are refused, and the value still validates and submits. A read-only Form, FormGroup or fieldset Field makes it read-only too
33
+ - **size**: 'small' | 'normal' | 'large' - Input size
3
34
 
4
35
  ## State contract
5
36
 
@@ -27,6 +27,8 @@
27
27
  focused = $bindable(false),
28
28
  required = false,
29
29
  disabled = false,
30
+ readOnly,
31
+ messages,
30
32
  name,
31
33
  onValidate,
32
34
  onValueChange,
@@ -92,6 +94,12 @@
92
94
  set disabled(nextDisabled) {
93
95
  disabled = nextDisabled ?? false;
94
96
  },
97
+ get readOnly() {
98
+ return readOnly;
99
+ },
100
+ get messages() {
101
+ return messages;
102
+ },
95
103
  get name() {
96
104
  return name;
97
105
  },
@@ -255,7 +263,7 @@
255
263
  {size}
256
264
  color="danger"
257
265
  label={resolvedClearLabel}
258
- disabled={field.disabled}
266
+ disabled={field.disabled || field.readOnly}
259
267
  edge="none"
260
268
  class={classes.clearAction({
261
269
  size,
@@ -272,7 +280,7 @@
272
280
  {size}
273
281
  color={recorder.isRecording ? resolvedColor : 'neutral'}
274
282
  label={buttonLabel}
275
- disabled={field.disabled || recorder.isBusy}
283
+ disabled={field.disabled || field.readOnly || recorder.isBusy}
276
284
  edge={isExpanded ? 'end' : 'none'}
277
285
  class={classes.action({
278
286
  size,