entasis 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (839) hide show
  1. package/README.md +1 -1
  2. package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
  3. package/dist/attachments/disclosurePanel.svelte.js +277 -0
  4. package/dist/attachments/portal.d.ts +17 -1
  5. package/dist/attachments/portal.js +39 -2
  6. package/dist/attachments/spinnerOverlay.svelte.js +12 -0
  7. package/dist/attachments/transitionSize.d.ts +6 -0
  8. package/dist/attachments/transitionSize.js +30 -0
  9. package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
  10. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
  11. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
  12. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
  13. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
  14. package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
  15. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
  16. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
  17. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
  18. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
  19. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
  20. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
  21. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
  22. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
  23. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
  24. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
  25. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
  26. package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
  27. package/dist/components/AIAskUserQuestion/index.js +2 -0
  28. package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
  29. package/dist/components/AIAskUserQuestion/schemas.js +10 -3
  30. package/dist/components/AIChat/AIChat.svelte +10 -0
  31. package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
  32. package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
  33. package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
  34. package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
  35. package/dist/components/AIChat/AIChatSurface.svelte +30 -2
  36. package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
  37. package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
  38. package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
  39. package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
  40. package/dist/components/AIChat/aiChat.mcp.js +31 -15
  41. package/dist/components/AIChat/aiChat.props.d.ts +36 -10
  42. package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
  43. package/dist/components/AIChat/aiChat.theme.js +21 -4
  44. package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
  45. package/dist/components/AIChat/index.d.ts +1 -1
  46. package/dist/components/AIComposer/AIComposer.svelte +102 -5
  47. package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
  48. package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
  49. package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
  50. package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
  51. package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
  52. package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
  53. package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
  54. package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
  55. package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
  56. package/dist/components/AIComposer/aiComposer.theme.js +37 -5
  57. package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
  58. package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
  59. package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
  60. package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
  61. package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
  62. package/dist/components/AIContext/AIContext.svelte +7 -3
  63. package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
  64. package/dist/components/AIContext/aiContext.mcp.js +1 -1
  65. package/dist/components/AIContext/aiContext.props.d.ts +4 -1
  66. package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
  67. package/dist/components/AIContext/aiContext.theme.js +7 -2
  68. package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
  69. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  70. package/dist/components/AIMarker/AIMarker.svelte +2 -0
  71. package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
  72. package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
  73. package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
  74. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  75. package/dist/components/AIMessage/AIMessage.svelte +38 -16
  76. package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
  77. package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
  78. package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
  79. package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
  80. package/dist/components/AIMessage/aiMessage.theme.js +91 -32
  81. package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
  82. package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
  83. package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
  84. package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
  85. package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
  86. package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
  87. package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
  88. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
  89. package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
  90. package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
  91. package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
  92. package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
  93. package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
  94. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
  95. package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
  96. package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
  97. package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
  98. package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
  99. package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
  100. package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
  101. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  102. package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
  103. package/dist/components/AIThread/AIThread.svelte +378 -95
  104. package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
  105. package/dist/components/AIThread/AIThreadItems.svelte +266 -64
  106. package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
  107. package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
  108. package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
  109. package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
  110. package/dist/components/AIThread/aiThread.mcp.js +34 -20
  111. package/dist/components/AIThread/aiThread.props.d.ts +73 -8
  112. package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
  113. package/dist/components/AIThread/aiThread.theme.js +108 -9
  114. package/dist/components/AIThread/index.d.ts +1 -1
  115. package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
  116. package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
  117. package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
  118. package/dist/components/AIThread/threadRenderItems.js +265 -77
  119. package/dist/components/AIThread/threadScrollController.d.ts +0 -8
  120. package/dist/components/AIThread/threadScrollController.js +2 -39
  121. package/dist/components/AIThread/threadTools.d.ts +11 -0
  122. package/dist/components/AIThread/threadTools.js +79 -0
  123. package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
  124. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
  125. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
  126. package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
  127. package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
  128. package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
  129. package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
  130. package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
  131. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
  132. package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
  133. package/dist/components/AITool/AITool.svelte +56 -21
  134. package/dist/components/AITool/AIToolCallList.svelte +79 -29
  135. package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
  136. package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
  137. package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
  138. package/dist/components/AITool/AIToolValueSection.svelte +126 -28
  139. package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
  140. package/dist/components/AITool/AIToolValueTree.svelte +11 -16
  141. package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
  142. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  143. package/dist/components/AITool/aiTool.mcp.js +36 -8
  144. package/dist/components/AITool/aiTool.props.d.ts +52 -6
  145. package/dist/components/AITool/aiTool.theme.d.ts +117 -39
  146. package/dist/components/AITool/aiTool.theme.js +144 -140
  147. package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
  148. package/dist/components/AITool/aiToolClock.svelte.js +62 -0
  149. package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
  150. package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
  151. package/dist/components/AITool/index.d.ts +2 -1
  152. package/dist/components/AITool/index.js +1 -0
  153. package/dist/components/AITool/toolRendering.d.ts +33 -1
  154. package/dist/components/AITool/toolRendering.js +179 -15
  155. package/dist/components/AITool/toolValueTree.d.ts +14 -1
  156. package/dist/components/AITool/toolValueTree.js +126 -27
  157. package/dist/components/Accordion/Accordion.svelte +109 -109
  158. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
  159. package/dist/components/Accordion/AccordionPanel.svelte +64 -0
  160. package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
  161. package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
  162. package/dist/components/Accordion/accordion.attributes.js +20 -0
  163. package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
  164. package/dist/components/Accordion/accordion.mcp.js +78 -22
  165. package/dist/components/Accordion/accordion.props.d.ts +54 -10
  166. package/dist/components/Accordion/accordion.theme.d.ts +3 -0
  167. package/dist/components/Accordion/accordion.theme.js +4 -0
  168. package/dist/components/Accordion/index.d.ts +1 -0
  169. package/dist/components/Accordion/index.js +1 -0
  170. package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
  171. package/dist/components/Avatar/Avatar.svelte +60 -10
  172. package/dist/components/Avatar/AvatarGroup.svelte +9 -0
  173. package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
  174. package/dist/components/Avatar/avatar.mcp.js +13 -5
  175. package/dist/components/Avatar/avatar.props.d.ts +28 -1
  176. package/dist/components/Avatar/avatar.theme.js +3 -3
  177. package/dist/components/Avatar/index.d.ts +1 -1
  178. package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
  179. package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
  180. package/dist/components/Button/Button.svelte +35 -15
  181. package/dist/components/Button/button.mcp.d.ts +1 -1
  182. package/dist/components/Button/button.mcp.js +8 -4
  183. package/dist/components/Button/button.props.d.ts +23 -8
  184. package/dist/components/Button/button.theme.d.ts +12 -0
  185. package/dist/components/Button/button.theme.js +17 -4
  186. package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
  187. package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
  188. package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
  189. package/dist/components/Collapsible/Collapsible.svelte +125 -19
  190. package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
  191. package/dist/components/Collapsible/collapsible.attributes.js +17 -0
  192. package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
  193. package/dist/components/Collapsible/collapsible.mcp.js +62 -12
  194. package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
  195. package/dist/components/Collapsible/collapsible.theme.js +3 -1
  196. package/dist/components/Collapsible/index.d.ts +1 -0
  197. package/dist/components/Collapsible/index.js +1 -0
  198. package/dist/components/Command/Command.svelte +56 -14
  199. package/dist/components/Command/command.mcp.d.ts +1 -1
  200. package/dist/components/Command/command.mcp.js +12 -6
  201. package/dist/components/Command/command.props.d.ts +39 -6
  202. package/dist/components/Command/command.state.svelte.d.ts +40 -11
  203. package/dist/components/Command/command.state.svelte.js +75 -28
  204. package/dist/components/Command/command.theme.js +4 -3
  205. package/dist/components/Confirmation/Confirmation.svelte +72 -31
  206. package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
  207. package/dist/components/Confirmation/confirmation.mcp.js +5 -4
  208. package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
  209. package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
  210. package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
  211. package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
  212. package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
  213. package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
  214. package/dist/components/DataTable/DataTable.svelte +4 -9
  215. package/dist/components/DataTable/DataTableEditor.svelte +5 -0
  216. package/dist/components/DataTable/DataTableFilter.svelte +1 -0
  217. package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
  218. package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
  219. package/dist/components/DataTable/dataTable.mcp.js +4 -2
  220. package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
  221. package/dist/components/DataTable/dataTable.theme.js +9 -6
  222. package/dist/components/Dialog/Dialog.svelte +120 -35
  223. package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
  224. package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
  225. package/dist/components/Dialog/dialog.api.d.ts +65 -0
  226. package/dist/components/Dialog/dialog.api.js +1 -0
  227. package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
  228. package/dist/components/Dialog/dialog.attributes.js +19 -0
  229. package/dist/components/Dialog/dialog.indent.d.ts +6 -0
  230. package/dist/components/Dialog/dialog.indent.js +16 -0
  231. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  232. package/dist/components/Dialog/dialog.mcp.js +195 -22
  233. package/dist/components/Dialog/dialog.props.d.ts +102 -19
  234. package/dist/components/Dialog/dialog.snap.d.ts +40 -0
  235. package/dist/components/Dialog/dialog.snap.js +78 -0
  236. package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
  237. package/dist/components/Dialog/dialog.state.svelte.js +525 -66
  238. package/dist/components/Dialog/dialog.theme.d.ts +48 -0
  239. package/dist/components/Dialog/dialog.theme.js +32 -9
  240. package/dist/components/Dialog/index.d.ts +4 -1
  241. package/dist/components/Dialog/index.js +1 -0
  242. package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
  243. package/dist/components/DocumentViewer/documentOutput.js +2 -1
  244. package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
  245. package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
  246. package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
  247. package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
  248. package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
  249. package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
  250. package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
  251. package/dist/components/Form/Ask/Ask.svelte +9 -13
  252. package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
  253. package/dist/components/Form/Ask/ask.mcp.js +1 -1
  254. package/dist/components/Form/Ask/ask.props.d.ts +1 -1
  255. package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
  256. package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
  257. package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
  258. package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
  259. package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
  260. package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
  261. package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
  262. package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
  263. package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
  264. package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
  265. package/dist/components/Form/Autocomplete/index.d.ts +3 -0
  266. package/dist/components/Form/Autocomplete/index.js +2 -0
  267. package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
  268. package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
  269. package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
  270. package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
  271. package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
  272. package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
  273. package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
  274. package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
  275. package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
  276. package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
  277. package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
  278. package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
  279. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
  280. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
  281. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
  282. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
  283. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
  284. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
  285. package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
  286. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
  287. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
  288. package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
  289. package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
  290. package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
  291. package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
  292. package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
  293. package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
  294. package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
  295. package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
  296. package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
  297. package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
  298. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
  299. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
  300. package/dist/components/Form/Combobox/Combobox.svelte +145 -185
  301. package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
  302. package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
  303. package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
  304. package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
  305. package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
  306. package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
  307. package/dist/components/Form/Combobox/combobox.items.js +68 -0
  308. package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
  309. package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
  310. package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
  311. package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
  312. package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
  313. package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
  314. package/dist/components/Form/Combobox/combobox.theme.js +37 -1
  315. package/dist/components/Form/Combobox/index.d.ts +2 -1
  316. package/dist/components/Form/Combobox/index.js +1 -0
  317. package/dist/components/Form/DateInput/DateInput.svelte +11 -3
  318. package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
  319. package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
  320. package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
  321. package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
  322. package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
  323. package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
  324. package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
  325. package/dist/components/Form/Field/Field.svelte +256 -30
  326. package/dist/components/Form/Field/Field.svelte.d.ts +9 -0
  327. package/dist/components/Form/Field/FieldGroup.svelte +29 -0
  328. package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
  329. package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
  330. package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
  331. package/dist/components/Form/Field/field.d.ts +64 -8
  332. package/dist/components/Form/Field/field.mcp.d.ts +1 -1
  333. package/dist/components/Form/Field/field.mcp.js +158 -18
  334. package/dist/components/Form/Field/field.messages.d.ts +47 -0
  335. package/dist/components/Form/Field/field.messages.js +64 -0
  336. package/dist/components/Form/Field/field.state.svelte.d.ts +109 -3
  337. package/dist/components/Form/Field/field.state.svelte.js +508 -16
  338. package/dist/components/Form/Field/field.theme.d.ts +46 -0
  339. package/dist/components/Form/Field/field.theme.js +33 -0
  340. package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
  341. package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
  342. package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
  343. package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
  344. package/dist/components/Form/Field/index.d.ts +5 -2
  345. package/dist/components/Form/Field/index.js +1 -0
  346. package/dist/components/Form/Field/schemas.js +7 -2
  347. package/dist/components/Form/File/FileInput.svelte +24 -3
  348. package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
  349. package/dist/components/Form/File/fileInput.mcp.js +1 -0
  350. package/dist/components/Form/Form/Form.svelte +47 -14
  351. package/dist/components/Form/Form/FormActions.svelte +3 -1
  352. package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
  353. package/dist/components/Form/Form/FormFieldRenderer.svelte +40 -2
  354. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  355. package/dist/components/Form/Form/form.d.ts +35 -6
  356. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  357. package/dist/components/Form/Form/form.mcp.js +113 -13
  358. package/dist/components/Form/Form/form.props.d.ts +32 -1
  359. package/dist/components/Form/Form/form.registry.d.ts +2 -2
  360. package/dist/components/Form/Form/form.registry.js +1 -4
  361. package/dist/components/Form/Form/form.state.svelte.d.ts +1138 -413
  362. package/dist/components/Form/Form/form.state.svelte.js +319 -26
  363. package/dist/components/Form/Form/index.d.ts +3 -1
  364. package/dist/components/Form/Form/visibility.d.ts +3096 -1831
  365. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  366. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  367. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  368. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  369. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  370. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  371. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  372. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1022 -408
  373. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  374. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  375. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  376. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  377. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  378. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  379. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  380. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  381. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  382. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  383. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  384. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  385. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  386. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  387. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  388. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  389. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  390. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  391. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  392. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  393. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  394. package/dist/components/Form/PinInput/index.d.ts +1 -1
  395. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  396. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  397. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  398. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  399. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  400. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  401. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  402. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  403. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  404. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  405. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  406. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  407. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  408. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  409. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  410. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  411. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  412. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  413. package/dist/components/Form/Select/Select.svelte +186 -48
  414. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  415. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  416. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  417. package/dist/components/Form/Select/index.d.ts +2 -1
  418. package/dist/components/Form/Select/index.js +1 -0
  419. package/dist/components/Form/Select/select.align.d.ts +5 -0
  420. package/dist/components/Form/Select/select.align.js +19 -5
  421. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  422. package/dist/components/Form/Select/select.attributes.js +27 -0
  423. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  424. package/dist/components/Form/Select/select.mcp.js +103 -18
  425. package/dist/components/Form/Select/select.props.d.ts +87 -10
  426. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  427. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  428. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  429. package/dist/components/Form/Select/select.theme.js +22 -0
  430. package/dist/components/Form/Slider/Slider.svelte +54 -14
  431. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  432. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  433. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  434. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  435. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  436. package/dist/components/Form/Slider/index.d.ts +1 -1
  437. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  438. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  439. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  440. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  441. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  442. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  443. package/dist/components/Form/Slider/slider.theme.js +35 -17
  444. package/dist/components/Form/Switch/Switch.svelte +61 -38
  445. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  446. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  447. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  448. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  449. package/dist/components/Form/Switch/switch.theme.js +8 -3
  450. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  451. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  452. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  453. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  454. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  455. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  456. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  457. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  458. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  459. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  460. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  461. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  462. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  463. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  464. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  465. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  466. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  467. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  468. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  469. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  470. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  471. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  472. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  473. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  474. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  475. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  476. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  477. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  478. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  479. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  480. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  481. package/dist/components/HoverCard/index.d.ts +1 -0
  482. package/dist/components/HoverCard/index.js +1 -0
  483. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  484. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  485. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  487. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  488. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  489. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  490. package/dist/components/Kanban/kanban.theme.js +7 -3
  491. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  492. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  493. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  494. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  495. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  496. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  497. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  498. package/dist/components/Map/maplibre-cdn.js +3 -2
  499. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  500. package/dist/components/Markdown/markdown.mcp.js +2 -1
  501. package/dist/components/Markdown/markdown.theme.js +18 -9
  502. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  503. package/dist/components/Menu/Menu.svelte +3 -3
  504. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  505. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  506. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  507. package/dist/components/Menu/MenuFloating.svelte +421 -74
  508. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  509. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  510. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  511. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  512. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  513. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  514. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  515. package/dist/components/Menu/MenuStacked.svelte +404 -158
  516. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  517. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  518. package/dist/components/Menu/index.d.ts +2 -1
  519. package/dist/components/Menu/index.js +1 -0
  520. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  521. package/dist/components/Menu/menu.attributes.js +28 -0
  522. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  523. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  524. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  525. package/dist/components/Menu/menu.mcp.js +227 -17
  526. package/dist/components/Menu/menu.platform.d.ts +5 -0
  527. package/dist/components/Menu/menu.platform.js +11 -0
  528. package/dist/components/Menu/menu.props.d.ts +172 -9
  529. package/dist/components/Menu/menu.theme.d.ts +147 -0
  530. package/dist/components/Menu/menu.theme.js +101 -0
  531. package/dist/components/Menu/menuTree.d.ts +35 -1
  532. package/dist/components/Menu/menuTree.js +158 -1
  533. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  534. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  535. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  536. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  537. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  538. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  539. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  540. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  541. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  542. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  543. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  544. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  545. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  546. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  547. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  548. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  549. package/dist/components/Meter/Meter.svelte +110 -24
  550. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  551. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  552. package/dist/components/Meter/meter.mcp.js +23 -37
  553. package/dist/components/Meter/meter.props.d.ts +36 -44
  554. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  555. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  556. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  557. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  558. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  559. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/index.d.ts +4 -0
  561. package/dist/components/NavigationMenu/index.js +3 -0
  562. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  563. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  564. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  565. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  566. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  567. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  568. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  569. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  570. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  571. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  572. package/dist/components/Overlay/Overlay.svelte +19 -30
  573. package/dist/components/Overlay/index.d.ts +1 -0
  574. package/dist/components/Overlay/index.js +1 -0
  575. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  576. package/dist/components/Overlay/overlay.attributes.js +14 -0
  577. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  578. package/dist/components/Overlay/overlay.mcp.js +21 -3
  579. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  580. package/dist/components/Popover/Popover.svelte +163 -52
  581. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  582. package/dist/components/Popover/PopoverSession.svelte +12 -0
  583. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  584. package/dist/components/Popover/index.d.ts +10 -2
  585. package/dist/components/Popover/index.js +4 -1
  586. package/dist/components/Popover/popover.api.d.ts +83 -0
  587. package/dist/components/Popover/popover.api.js +1 -0
  588. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  589. package/dist/components/Popover/popover.attributes.js +28 -0
  590. package/dist/components/Popover/popover.claims.d.ts +19 -0
  591. package/dist/components/Popover/popover.claims.js +45 -0
  592. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  593. package/dist/components/Popover/popover.mcp.js +163 -31
  594. package/dist/components/Popover/popover.position.d.ts +226 -0
  595. package/dist/components/Popover/popover.position.js +402 -0
  596. package/dist/components/Popover/popover.props.d.ts +179 -24
  597. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  598. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  599. package/dist/components/Popover/popover.theme.d.ts +15 -0
  600. package/dist/components/Popover/popover.theme.js +27 -2
  601. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  602. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  603. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  604. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  605. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  606. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  607. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  608. package/dist/components/Progress/Progress.svelte +160 -0
  609. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  610. package/dist/components/Progress/index.d.ts +3 -0
  611. package/dist/components/Progress/index.js +2 -0
  612. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  613. package/dist/components/Progress/progress.mcp.js +101 -0
  614. package/dist/components/Progress/progress.props.d.ts +79 -0
  615. package/dist/components/Progress/progress.props.js +1 -0
  616. package/dist/components/Progress/progress.theme.d.ts +129 -0
  617. package/dist/components/Progress/progress.theme.js +83 -0
  618. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  619. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  620. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  621. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  622. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  623. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  624. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  625. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  626. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  627. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  628. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  629. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  630. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  631. package/dist/components/RichTextInput/suggestions.js +2 -0
  632. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  633. package/dist/components/ScrollArea/index.d.ts +2 -1
  634. package/dist/components/ScrollArea/index.js +1 -0
  635. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  636. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  637. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  638. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  639. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  640. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  641. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  642. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  643. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  644. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  645. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  646. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  647. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  648. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  649. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  650. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  651. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  652. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  653. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  654. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  655. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  656. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  657. package/dist/components/Sidebar/index.d.ts +1 -0
  658. package/dist/components/Sidebar/index.js +1 -0
  659. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  660. package/dist/components/Sidebar/sidebar-position.js +31 -2
  661. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  662. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  663. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  664. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  665. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  666. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  667. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  668. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  669. package/dist/components/Stepper/Stepper.svelte +2 -0
  670. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  671. package/dist/components/Stepper/stepper.mcp.js +1 -0
  672. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  673. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  674. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  675. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  676. package/dist/components/Tabbar/index.d.ts +1 -1
  677. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  678. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  679. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  680. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  681. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  682. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  683. package/dist/components/Tabs/Tabs.svelte +73 -16
  684. package/dist/components/Tabs/index.d.ts +2 -1
  685. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  686. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  687. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  688. package/dist/components/Tabs/tabs.mcp.js +22 -4
  689. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  690. package/dist/components/Tabs/tabs.theme.js +3 -1
  691. package/dist/components/Theme/Theme.svelte +44 -27
  692. package/dist/components/Theme/helper.d.ts +16 -2
  693. package/dist/components/Theme/helper.js +46 -4
  694. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  695. package/dist/components/Theme/theme.mcp.js +103 -0
  696. package/dist/components/Theme/theme.props.d.ts +16 -0
  697. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  698. package/dist/components/Theme/theme.state.svelte.js +18 -1
  699. package/dist/components/Toast/Toast.svelte +184 -39
  700. package/dist/components/Toast/Toaster.svelte +14 -10
  701. package/dist/components/Toast/index.d.ts +1 -0
  702. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  703. package/dist/components/Toast/toast.mcp.js +47 -6
  704. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  705. package/dist/components/Toast/toast.state.svelte.js +513 -68
  706. package/dist/components/Toast/toast.theme.js +1 -1
  707. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  708. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  709. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  710. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  711. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  712. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  713. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  714. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  715. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  716. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  720. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  721. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  722. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  723. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  724. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  725. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  726. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  727. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  728. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  729. package/dist/components/Tooltip/index.d.ts +1 -0
  730. package/dist/components/Tooltip/index.js +1 -0
  731. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  732. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  733. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  734. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  735. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  736. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  737. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  738. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  739. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  740. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  741. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  742. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  743. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  744. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  745. package/dist/generated/componentAliases.d.ts +3 -0
  746. package/dist/generated/componentAliases.js +3 -0
  747. package/dist/generated/componentContract.d.ts +79 -34
  748. package/dist/generated/componentContract.js +225 -6
  749. package/dist/generated/componentMcpRegistry.js +6 -0
  750. package/dist/i18n/ar.js +107 -3
  751. package/dist/i18n/context.svelte.d.ts +6 -0
  752. package/dist/i18n/context.svelte.js +12 -0
  753. package/dist/i18n/de.js +101 -3
  754. package/dist/i18n/en.d.ts +91 -2
  755. package/dist/i18n/en.js +101 -3
  756. package/dist/i18n/es.js +101 -3
  757. package/dist/i18n/fr.js +101 -3
  758. package/dist/i18n/ja.js +101 -3
  759. package/dist/i18n/pt.js +101 -3
  760. package/dist/i18n/zh.js +101 -3
  761. package/dist/tailwind/geometry.js +7 -0
  762. package/dist/tailwind/global.js +31 -0
  763. package/dist/types/index.d.ts +1 -0
  764. package/dist/types/types.mcp.d.ts +1 -1
  765. package/dist/types/types.mcp.js +23 -0
  766. package/dist/utils/cspNonce.d.ts +16 -0
  767. package/dist/utils/cspNonce.js +39 -0
  768. package/dist/utils/cva/merge.d.ts +5 -1
  769. package/dist/utils/cva/merge.js +6 -4
  770. package/dist/utils/focus.d.ts +34 -0
  771. package/dist/utils/focus.js +93 -0
  772. package/dist/utils/focusHistory.d.ts +21 -0
  773. package/dist/utils/focusHistory.js +99 -0
  774. package/dist/utils/handlers.d.ts +7 -0
  775. package/dist/utils/handlers.js +14 -0
  776. package/dist/utils/hoverIntent.d.ts +42 -0
  777. package/dist/utils/hoverIntent.js +57 -0
  778. package/dist/utils/id.d.ts +7 -0
  779. package/dist/utils/id.js +15 -0
  780. package/dist/utils/layers.svelte.d.ts +32 -4
  781. package/dist/utils/layers.svelte.js +214 -21
  782. package/dist/utils/listFilter.d.ts +44 -0
  783. package/dist/utils/listFilter.js +130 -0
  784. package/dist/utils/match.d.ts +35 -0
  785. package/dist/utils/match.js +36 -0
  786. package/dist/utils/number.d.ts +126 -0
  787. package/dist/utils/number.js +401 -0
  788. package/dist/utils/openChange.d.ts +88 -0
  789. package/dist/utils/openChange.js +71 -0
  790. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  791. package/dist/utils/openLifecycle.svelte.js +134 -0
  792. package/dist/utils/pointerDrag.d.ts +10 -0
  793. package/dist/utils/pointerDrag.js +37 -2
  794. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  795. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  796. package/dist/utils/range.d.ts +62 -0
  797. package/dist/utils/range.js +70 -0
  798. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  799. package/dist/utils/requestNativeSubmit.js +47 -0
  800. package/dist/utils/safeArea.svelte.d.ts +10 -1
  801. package/dist/utils/safeArea.svelte.js +19 -11
  802. package/dist/utils/stateAttributes.d.ts +108 -0
  803. package/dist/utils/stateAttributes.js +78 -0
  804. package/dist/utils/swipeVelocity.d.ts +32 -0
  805. package/dist/utils/swipeVelocity.js +59 -0
  806. package/dist/utils/timer.svelte.d.ts +65 -2
  807. package/dist/utils/timer.svelte.js +159 -25
  808. package/dist/utils/trigger.d.ts +41 -0
  809. package/dist/utils/trigger.js +103 -0
  810. package/dist/utils/typeahead.d.ts +9 -0
  811. package/dist/utils/typeahead.js +21 -9
  812. package/dist/utils/useDndList.svelte.d.ts +1 -1
  813. package/dist/utils/useDndList.svelte.js +6 -23
  814. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  815. package/dist/utils/useFocusScope.svelte.js +189 -27
  816. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  817. package/dist/utils/useHoverAction.svelte.js +161 -51
  818. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  819. package/dist/utils/useKeyDown.svelte.js +19 -12
  820. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  821. package/dist/utils/useListNavigation.svelte.js +261 -35
  822. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  823. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  824. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  825. package/dist/utils/useNavigation.svelte.js +699 -332
  826. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  827. package/dist/utils/usePressAndHold.svelte.js +191 -0
  828. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  829. package/dist/utils/useScrollLock.svelte.js +54 -13
  830. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  831. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  832. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  833. package/dist/utils/useTabBridge.svelte.js +109 -0
  834. package/dist/utils/values.d.ts +15 -0
  835. package/dist/utils/values.js +49 -0
  836. package/package.json +31 -2
  837. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  838. package/dist/utils/useDrag.svelte.d.ts +0 -11
  839. package/dist/utils/useDrag.svelte.js +0 -55
@@ -0,0 +1,28 @@
1
+ import type { ComboboxFilter, ComboboxItems, ComboboxOption, ComboboxOptionGroup } from './combobox.props.js';
2
+ export declare const isOptionGroup: (entry: ComboboxOption | ComboboxOptionGroup) => entry is ComboboxOptionGroup;
3
+ /** Every option, flattened across groups, in render order. */
4
+ export declare const flattenItems: (items: ComboboxItems) => ComboboxOption[];
5
+ /** Options a keyboard or pointer can act on: everything except disabled options. */
6
+ export declare const selectableOptions: (items: ComboboxItems) => ComboboxOption[];
7
+ export type RenderGroup = {
8
+ label?: string;
9
+ items: ComboboxOption[];
10
+ };
11
+ /** Items as rendered: consecutive bare options bundled into one unlabeled group. */
12
+ export declare const toRenderGroups: (items: ComboboxItems) => RenderGroup[];
13
+ /** The default match: a case- and accent-insensitive substring of the label, in `locale`. */
14
+ export declare const createOptionMatcher: (locale: string) => ComboboxFilter;
15
+ type NarrowOptions = {
16
+ /** Keeps an option when it returns `true`; an empty query matches everything. */
17
+ match?: ComboboxFilter;
18
+ /** Leaves out options that are already taken (TagsInput's selected tags). */
19
+ exclude?: (option: ComboboxOption) => boolean;
20
+ /** Stop once this many options are kept. The rest of the list is never compared. */
21
+ limit?: number;
22
+ };
23
+ /**
24
+ * Narrows `items` to the options that match `query`, keeping their groups (a group with no
25
+ * match disappears) and stopping once `limit` options are kept, across groups.
26
+ */
27
+ export declare const narrowItems: (items: ComboboxItems, query: string, { match, exclude, limit }?: NarrowOptions) => ComboboxItems;
28
+ export {};
@@ -0,0 +1,68 @@
1
+ // Pure helpers over the options a Combobox or TagsInput lists: groups, matching and limits.
2
+ import { createListFilter } from '../../../utils/listFilter.js';
3
+ export const isOptionGroup = (entry) => 'items' in entry && Array.isArray(entry.items);
4
+ /** Every option, flattened across groups, in render order. */
5
+ export const flattenItems = (items) => items.flatMap((entry) => (isOptionGroup(entry) ? entry.items : [entry]));
6
+ /** Options a keyboard or pointer can act on: everything except disabled options. */
7
+ export const selectableOptions = (items) => flattenItems(items).filter((option) => !option.disabled);
8
+ /** Items as rendered: consecutive bare options bundled into one unlabeled group. */
9
+ export const toRenderGroups = (items) => {
10
+ const groups = [];
11
+ let bare = null;
12
+ for (const entry of items) {
13
+ if (isOptionGroup(entry)) {
14
+ bare = null;
15
+ groups.push({ label: entry.label, items: entry.items });
16
+ }
17
+ else {
18
+ if (!bare) {
19
+ bare = { items: [] };
20
+ groups.push(bare);
21
+ }
22
+ bare.items.push(entry);
23
+ }
24
+ }
25
+ return groups;
26
+ };
27
+ /** The default match: a case- and accent-insensitive substring of the label, in `locale`. */
28
+ export const createOptionMatcher = (locale) => {
29
+ const filter = createListFilter({ locale });
30
+ return (option, query) => filter.contains(option.label, query);
31
+ };
32
+ /**
33
+ * Narrows `items` to the options that match `query`, keeping their groups (a group with no
34
+ * match disappears) and stopping once `limit` options are kept, across groups.
35
+ */
36
+ export const narrowItems = (items, query, { match, exclude, limit } = {}) => {
37
+ let remaining = limit !== undefined && limit >= 0 ? limit : Infinity;
38
+ const keep = (option) => {
39
+ if (remaining <= 0)
40
+ return false;
41
+ if (exclude?.(option))
42
+ return false;
43
+ if (query !== '' && match && !match(option, query))
44
+ return false;
45
+ remaining -= 1;
46
+ return true;
47
+ };
48
+ const result = [];
49
+ for (const entry of items) {
50
+ if (remaining <= 0)
51
+ break;
52
+ if (isOptionGroup(entry)) {
53
+ const kept = [];
54
+ for (const option of entry.items) {
55
+ if (remaining <= 0)
56
+ break;
57
+ if (keep(option))
58
+ kept.push(option);
59
+ }
60
+ if (kept.length > 0)
61
+ result.push({ ...entry, items: kept });
62
+ }
63
+ else if (keep(entry)) {
64
+ result.push(entry);
65
+ }
66
+ }
67
+ return result;
68
+ };
@@ -1 +1 @@
1
- export declare const comboboxDescription = "\n# Combobox Component\n\nA searchable dropdown component that supports both static arrays and async option loading. Provides keyboard navigation, debounced search, and full ARIA accessibility. Use it when users need to search and select from a large list of options.\n\n## Basic Usage\n\n```svelte\n<script>\n\timport { Combobox } from 'entasis/combobox';\n\tlet value = $state(null);\n\tconst items = [\n\t\t{ value: 'us', label: 'United States', description: 'North America' },\n\t\t{ value: 'uk', label: 'United Kingdom', description: 'Europe' }\n\t];\n</script>\n\n<Combobox\n\tplaceholder=\"Search countries...\"\n\titems={items}\n\tbind:value={value}\n/>\n```\n\n## Props\n\n### Core Props\n\n- **items**: `ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>)` (required)\n - Array of options or async function that returns options based on search value\n - For arrays: filtered client-side\n - For functions: called with search value, returns Promise or array\n\n- **value**: `string | null` (bindable)\n - Selected option value\n- **defaultValue**: `string | null` (default: `null`)\n - Initial selected value when `value` is omitted\n\n- **searchValue**: `string` (default: `''`, bindable)\n - Current search input value\n\n- **loading**: `boolean` (default: `false`, bindable)\n - Loading state (managed automatically for async options)\n\n### Behavior Props\n\n- **showAllOnFocus**: `boolean` (default: `false`)\n - Show all options when input is focused, even without typing\n\n- **getValueOption**: `(value: string) => MaybePromise<ComboboxOption | null | undefined>`\n - Function to get option data for a value when not in loaded options\n - Useful for async options with pre-selected values\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, option }: { value: string | null; option: ComboboxOption | null }) => void`\n - Called when selection changes\n - Receives a named payload with both the value and full option object\n\n- **onValidate**: `(value: string) => string[] | boolean`\n - Custom validation function\n\n### Slot Props\n\n- **prefix**: `Snippet | false` (default: magnifying glass icon)\n - Prefix content. Set to `false` to hide default icon\n\n- **suffix**: `Snippet`\n - Suffix content (clear button shown automatically when value exists)\n\n### Theme Props\n\n- **theme**: `ComboboxThemeProps`\n - Customize styling for: input, inputContainer, loading, error, noOptions\n - Option rows are `MenuOption` components: style them globally with `setMenuOptionTheme` from `entasis/menu-option`\n\n## Examples\n\n### Array Options (Client-side Filtering)\n\n```svelte\n<script>\n\tlet value = $state(null);\n\tconst countries = [\n\t\t{ value: 'us', label: 'United States' },\n\t\t{ value: 'uk', label: 'United Kingdom' }\n\t];\n</script>\n\n<Combobox\n\titems={countries}\n\tbind:value={value}\n\tplaceholder=\"Search countries...\"\n/>\n```\n\n### Async Options (API Call)\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(null);\n\tconst getOptions = async (searchValue?: string) => {\n\t\tconst response = await fetch(`/api/search?q=${searchValue}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<Combobox\n\titems={getOptions}\n\tbind:value={value}\n\tplaceholder=\"Search async...\"\n/>\n```\n\n### Show All Options on Focus\n\n```svelte\n<Combobox\n\titems={countries}\n\tshowAllOnFocus={true}\n\tbind:value={value}\n/>\n```\n\n### Pre-selected Value with Async Options\n\n```svelte\n<script lang=\"ts\">\n\timport type { ComboboxOption } from 'entasis/combobox';\n\tlet value = $state<string | null>('us');\n\tconst getValueOption = async (value: string): Promise<ComboboxOption> => {\n\t\treturn { value, label: 'United States' };\n\t};\n\tconst getOptions = async (searchValue?: string): Promise<ComboboxOption[]> => {\n\t\tconst response = await fetch(`/api/countries?q=${searchValue ?? ''}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<Combobox\n\titems={getOptions}\n\tbind:value={value}\n\tgetValueOption={getValueOption}\n/>\n```\n\n## State Management\n\n- **value**: Bindable string (option value) or null\n- **searchValue**: Bindable string for search input\n- **loading**: Bindable boolean, automatically managed for async options\n- **errors**: Bindable array or boolean for validation errors\n- **focused**: Bindable boolean for focus state\n\n## Accessibility\n\n- Full ARIA combobox pattern implementation\n- **role=\"combobox\"** on input\n- **role=\"listbox\"** on options container\n- **role=\"option\"** on each option\n- **aria-expanded**, **aria-controls**, **aria-activedescendant** for state\n- **aria-autocomplete=\"list\"** for search behavior\n- Keyboard navigation: ArrowDown/Up (wraps around), Enter (select), Escape (close), Home/End (first/last)\n- Screen reader announcements for loading and error states\n\n## Notes\n\n- **Debouncing**: Search is debounced by 100ms to reduce API calls\n- **Race Conditions**: Handled automatically - only latest async request updates state\n- **Option Format**: Options must have `value` (string) and `label` (string). Optional `description` displays below label\n- **Keyboard Navigation**: Wraps around - ArrowDown at bottom goes to top, ArrowUp at top goes to bottom\n- **Empty States**: Shows loading text, error message, or no options text appropriately\n- **Clear Button**: Automatically shown when value exists, uses the shared field action button hitbox\n- **Default Prefix**: Magnifying glass icon shown by default unless `prefix={false}` or custom snippet provided\n\n## Theme Customization\n\nThe Combobox 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- **loading**: Loading state indicator styles\n- **error**: Error message styles\n- **noOptions**: No options found message styles\n\nOption rows are rendered with the shared `MenuOption` component (parts: root, title, description, prefix, suffix, content) and are themed through `setMenuOptionTheme` from `entasis/menu-option`, not through the Combobox theme.\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\n- Variants:\n - size: 'small' | 'normal' | 'large' - Size-based styling\n - disabled: boolean - Disabled state styling\n\n**loading**:\n- base: Base classes for loading indicator\n\n**error**:\n- base: Base classes for error message\n\n**noOptions**:\n- base: Base classes for no options message\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Combobox\n items={items}\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 noOptions: {\n base: 'italic'\n }\n }}\n/>\n```\n\n**Custom Option Styling** (option rows use the shared MenuOption theme):\n```svelte\n<script lang=\"ts\">\n import { setMenuOptionTheme } from '../../MenuOption/index.ts';\n\n let value = $state<string | null>(null);\n const items = [\n { value: 'us', label: 'United States', description: 'North America' },\n { value: 'uk', label: 'United Kingdom', description: 'Europe' }\n ];\n\n setMenuOptionTheme({\n root: {\n base: 'rounded-md transition-colors'\n },\n title: {\n base: 'font-semibold'\n },\n description: {\n base: 'text-sm text-neutral/70'\n }\n });\n</script>\n\n<Combobox items={items} bind:value={value} />\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setComboboxTheme } from './index.ts';\n \n setComboboxTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'px-4 py-2'\n }\n },\n loading: {\n base: 'italic'\n }\n });\n</script>\n```\n";
1
+ export declare const comboboxDescription = "\n# Combobox Component\n\nA searchable dropdown component that supports both static arrays and async option loading. Provides keyboard navigation, debounced search, and full ARIA accessibility. Use it when users need to search and select from a large list of options.\n\n## Basic Usage\n\n```svelte\n<script>\n\timport { Combobox } from 'entasis/combobox';\n\tlet value = $state(null);\n\tconst items = [\n\t\t{ value: 'us', label: 'United States', description: 'North America' },\n\t\t{ value: 'uk', label: 'United Kingdom', description: 'Europe' }\n\t];\n</script>\n\n<Combobox\n\tplaceholder=\"Search countries...\"\n\titems={items}\n\tbind:value={value}\n/>\n```\n\n## Props\n\n### Core Props\n\n- **items**: `ComboboxItems | ((searchValue: string | undefined, request: { signal: AbortSignal }) => MaybePromise<ComboboxItems>)` (required)\n - Array of options (and groups) or a function that returns them for the search text\n - `ComboboxItems` is `(ComboboxOption | { label?: string; items: ComboboxOption[] })[]`; flat options and groups can be mixed. `ComboboxOption` is `{ value; label; description?; disabled?; data? }`\n - For arrays: filtered client-side with a case- and accent-insensitive match on the label, in the active I18n locale (\"eclair\" finds \"\u00C9clair\")\n - For functions: called (after a 100ms pause in typing) with the search text and `{ signal }`. The signal is aborted when a newer search replaces the request, and a response that is not the latest is ignored, so a slow answer never overwrites a newer list. The last results stay visible, marked busy, while the next request loads\n\n- **value**: `string | null` (bindable)\n - Selected option value\n- **defaultValue**: `string | null` (default: `null`)\n - Initial selected value when `value` is omitted\n\n- **searchValue**: `string` (default: `''`, bindable)\n - Current search input value (a draft: it is never submitted by a native form)\n\n- **open**: `boolean` (bindable) / **defaultOpen**: `boolean` (default: `false`)\n - Whether the options list is open. The list only renders while there is something to show (options, a loading or error message, or the \"no options\" message for the typed text)\n - **onOpenChange**: `(open, details) => void` runs before the list opens or closes. `details` carries `reason` (`'input-change'`, `'escape-key'`, `'item-press'`, `'list-navigation'`, `'trigger-press'`, `'trigger-focus'`, `'focus-out'`), `event`, `interaction` and `cancel()`; a cancelled change leaves the list as it was\n - **onAfterOpen** / **onAfterClose**: `() => void` fire once after the open or close transition\n\n- **loading**: `boolean` (default: `false`, bindable)\n - Loading state (managed automatically for async options)\n\n### Behavior Props\n\n- **openOnFocus**: `boolean` (default: `false`)\n - Open the list when the input receives focus, even before 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- **filter**: `(option, searchValue) => boolean` - Custom match for static arrays (functions filter themselves)\n- **limit**: `number` - Show at most this many matches; matching stops once the limit is reached, across groups\n\n- **autoHighlight**: `boolean | 'always'` (default: `'always'`)\n - `'always'` keeps the first match (or the selected option while the text is empty) highlighted; `true` only while text is typed; `false` highlights nothing until an arrow key or the pointer moves it\n- **loop**: `'wrap' | 'input' | false` (default: `'wrap'`) - Past either end of the list: continue at the other end, land on no highlight first (focus stays in the input), or stop\n- **separators**: `boolean` (default: `true`) - Separators between consecutive groups\n- **item**: `Snippet<[ComboboxOption]>` - Custom row renderer, replaces the title and description layout\n- **readOnly**: `boolean` - The list opens and can be browsed, but the value cannot change: choosing does nothing, the clear button is hidden, the input is natively `readonly`. The value still submits\n\n- **getValueOption**: `(value: string) => MaybePromise<ComboboxOption | null | undefined>`\n - Function to get option data for a value when not in loaded options\n - Useful for async options with pre-selected values\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, option }: { value: string | null; option: ComboboxOption | null }) => void`\n - Called when selection changes\n - Receives a named payload with both the value and full option object\n\n- **onHighlightChange**: `({ value, reason, event }) => void`\n - Called when the highlighted option changes. `value` is the option's value or `undefined`; `reason` is `'keyboard'`, `'pointer'` or `'list'` (results changed, or the list opened); `event` is the KeyboardEvent or pointer event, absent for `'list'`\n\n- **onValidate**: `(value: string) => string[] | boolean`\n - Custom validation function\n\n### Slot Props\n\n- **prefix**: `Snippet | false` (default: magnifying glass icon)\n - Prefix content. Set to `false` to hide default icon\n\n- **suffix**: `Snippet`\n - Suffix content (clear button shown automatically when value exists)\n\n### Theme Props\n\n- **theme**: `ComboboxThemeProps`\n - Customize styling for: input, inputContainer, loading, error, noOptions\n - Option rows are `MenuOption` components: style them globally with `setMenuOptionTheme` from `entasis/menu-option`\n\n## Examples\n\n### Array Options (Client-side Filtering)\n\n```svelte\n<script>\n\tlet value = $state(null);\n\tconst countries = [\n\t\t{ value: 'us', label: 'United States' },\n\t\t{ value: 'uk', label: 'United Kingdom' }\n\t];\n</script>\n\n<Combobox\n\titems={countries}\n\tbind:value={value}\n\tplaceholder=\"Search countries...\"\n/>\n```\n\n### Async Options (API Call)\n\n```svelte\n<script lang=\"ts\">\n\tlet value = $state(null);\n\tconst getOptions = async (searchValue?: string) => {\n\t\tconst response = await fetch(`/api/search?q=${searchValue}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<Combobox\n\titems={getOptions}\n\tbind:value={value}\n\tplaceholder=\"Search async...\"\n/>\n```\n\n### Open on Focus\n\n```svelte\n<Combobox\n\titems={countries}\n\topenOnFocus\n\tbind:value={value}\n/>\n```\n\n### Pre-selected Value with Async Options\n\n```svelte\n<script lang=\"ts\">\n\timport type { ComboboxOption } from 'entasis/combobox';\n\tlet value = $state<string | null>('us');\n\tconst getValueOption = async (value: string): Promise<ComboboxOption> => {\n\t\treturn { value, label: 'United States' };\n\t};\n\tconst getOptions = async (searchValue?: string): Promise<ComboboxOption[]> => {\n\t\tconst response = await fetch(`/api/countries?q=${searchValue ?? ''}`);\n\t\treturn response.json();\n\t};\n</script>\n\n<Combobox\n\titems={getOptions}\n\tbind:value={value}\n\tgetValueOption={getValueOption}\n/>\n```\n\n### Groups, Disabled Options and Custom Rows\n\n```svelte\n<Combobox\n\topenOnFocus\n\titems={[\n\t\t{ label: 'Europe', items: [{ value: 'fr', label: 'France' }, { value: 'de', label: 'Germany' }] },\n\t\t{ label: 'Asia', items: [{ value: 'cn', label: 'China', disabled: true }] }\n\t]}\n\tbind:value={value}\n>\n\t{#snippet item(option)}\n\t\t<span>{option.label}</span>\n\t{/snippet}\n</Combobox>\n```\n\n### Abortable Async Options\n\n```svelte\n<script lang=\"ts\">\n\tconst getOptions = async (searchValue: string | undefined, { signal }: { signal: AbortSignal }) => {\n\t\tconst response = await fetch(`/api/countries?q=${searchValue ?? ''}`, { signal });\n\t\treturn response.json();\n\t};\n</script>\n\n<Combobox items={getOptions} bind:value={value} />\n```\n\n## State Management\n\n- **value**: Bindable string (option value) or null\n- **searchValue**: Bindable string for search input\n- **loading**: Bindable boolean, automatically managed for async options\n- **open**: Bindable boolean for the list\n- **errors**: Bindable array or boolean for validation errors\n- **focused**: Bindable boolean for focus state\n\n## Styling hooks\n\nThe input, the field container, the list panel and every option carry state attributes. `data-highlighted` and `data-selected` are written as `\"true\"`; match them by presence.\n\nAttributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.\n\n**Data attributes**\n- `data-popup-open`: On the input and the field container around it: present while the list (or its empty, loading or error status) shows.\n- `data-popup-side`: On the field container: the side of the field the list sits on.\n- `data-disabled`: On the input: present while disabled. On an option: present while it is disabled.\n- `data-highlighted`: On an option: present while the keyboard or the pointer highlights it.\n- `data-selected`: On an option: present while it is the value.\n- `data-open`: On the list panel: present while open.\n- `data-closed`: On the list panel: present while its exit transition plays.\n- `data-entering`: On the list panel: present while the enter transition plays.\n- `data-exiting`: On the list panel: present while the exit transition plays.\n- `data-side`: On the list panel: the side of the field it sits on after flipping.\n- `data-align`: On the list panel: `start`, `center` or `end`.\n\n**CSS variables** (set on the list panel's positioned wrapper and inherited by the list)\n- `--available-width`: The width in px the panel can take before it reaches the viewport edges, minus 20px.\n- `--available-height`: The room in px between the trigger and the viewport edge on the panel's side, minus 20px. Cap a scrolling list with `max-height: min(240px, var(--available-height))`.\n- `--anchor-width`: The trigger's width in px, snapped to the device pixel grid.\n- `--anchor-height`: The trigger's height in px, snapped to the device pixel grid.\n- `--transform-origin`: The panel corner facing the trigger, mirrored in right-to-left documents; the point the panel scales from.\n\nThe typed maps `comboboxDataAttributes` and `comboboxCssVariables` (from `entasis/combobox`) list each name with its meaning.\n\n## Accessibility\n\n- Full ARIA combobox pattern implementation\n- **role=\"combobox\"** on input\n- **role=\"listbox\"** on options container\n- **role=\"option\"** on each option\n- **aria-expanded**, **aria-controls**, **aria-activedescendant** for state\n- **aria-autocomplete=\"list\"** for search behavior\n- Keyboard navigation: ArrowDown/ArrowUp open a closed list (with every option) and then move the highlight, Enter selects, Escape closes the list and keeps focus in the input (a second Escape clears the typed text), Home/End jump to the first/last option\n- Clicking the already-focused input toggles the list; choosing an option, Clear and Escape all keep focus in the input\n- The listbox owns only options and groups; the loading, error and \"no options\" messages sit beside it, and `aria-expanded` is true while options are listed\n- One persistent visually hidden live region (`role=\"status\"`) next to the input announces result counts (\"3 results available\"), the empty state, loading and errors after typing settles\n- The highlight follows the selected option when the list opens and when the text is cleared\n\n## Notes\n\n- **Debouncing**: Search is debounced by 100ms to reduce API calls\n- **Race Conditions**: Handled automatically - older requests are aborted and only the latest response updates state\n- **Native forms**: The search box carries no `name`. A hidden input beside it submits the selected value under `name` (nothing when there is no name or the field is disabled); `required` blocks a native submit while nothing is selected\n- **Closing**: Escape, choosing an option, or focus leaving the field closes the list; the rows stay on screen through the exit transition\n- **Option Format**: Options must have `value` (string) and `label` (string). Optional `description` displays below label\n- **Keyboard Navigation**: Wraps around by default - ArrowDown at bottom goes to top, ArrowUp at top goes to bottom (see `loop`)\n- **Groups and disabled options**: Disabled options are dimmed and skipped by the keyboard; groups render like Select's (`role=\"group\"` with a hidden label, presentational separators)\n- **Empty States**: Shows loading text, error message, or no options text appropriately\n- **Clear Button**: Automatically shown when value exists, uses the shared field action button hitbox\n- **Default Prefix**: Magnifying glass icon shown by default unless `prefix={false}` or custom snippet provided\n- **List 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- **Styling hooks**: While the list is open, the field it is anchored to carries `data-popup-side` (`bottom` or `top`) and the panel `data-side`\n\n## Theme Customization\n\nThe Combobox 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- **loading**: Loading state indicator styles\n- **error**: Error message styles\n- **noOptions**: No options found message styles\n- **group**, **groupLabel**, **separator**: Group container, group label and the divider between groups\n\nOption rows are rendered with the shared `MenuOption` component (parts: root, title, description, prefix, suffix, content) and are themed through `setMenuOptionTheme` from `entasis/menu-option`, not through the Combobox theme.\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\n- Variants:\n - size: 'small' | 'normal' | 'large' - Size-based styling\n - disabled: boolean - Disabled state styling\n\n**loading**:\n- base: Base classes for loading indicator\n\n**error**:\n- base: Base classes for error message\n\n**noOptions**:\n- base: Base classes for no options message\n\n**group**, **groupLabel**, **separator**:\n- base: Base classes for a labelled group, its label and the divider between groups\n\n### Usage Examples\n\n**Basic Theme Override**:\n```svelte\n<Combobox\n items={items}\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 noOptions: {\n base: 'italic'\n }\n }}\n/>\n```\n\n**Custom Option Styling** (option rows use the shared MenuOption theme):\n```svelte\n<script lang=\"ts\">\n import { setMenuOptionTheme } from '../../MenuOption/index.ts';\n\n let value = $state<string | null>(null);\n const items = [\n { value: 'us', label: 'United States', description: 'North America' },\n { value: 'uk', label: 'United Kingdom', description: 'Europe' }\n ];\n\n setMenuOptionTheme({\n root: {\n base: 'rounded-md transition-colors'\n },\n title: {\n base: 'font-semibold'\n },\n description: {\n base: 'text-sm text-neutral/70'\n }\n });\n</script>\n\n<Combobox items={items} bind:value={value} />\n```\n\n**Global Theme Setting**:\n```svelte\n<script>\n import { setComboboxTheme } from './index.ts';\n \n setComboboxTheme({\n inputContainer: {\n base: 'rounded-lg border-2 transition-all',\n size: {\n normal: 'px-4 py-2'\n }\n },\n loading: {\n base: 'italic'\n }\n });\n</script>\n```\n";
@@ -26,10 +26,11 @@ A searchable dropdown component that supports both static arrays and async optio
26
26
 
27
27
  ### Core Props
28
28
 
29
- - **items**: \`ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>)\` (required)
30
- - Array of options or async function that returns options based on search value
31
- - For arrays: filtered client-side
32
- - For functions: called with search value, returns Promise or array
29
+ - **items**: \`ComboboxItems | ((searchValue: string | undefined, request: { signal: AbortSignal }) => MaybePromise<ComboboxItems>)\` (required)
30
+ - Array of options (and groups) or a function that returns them for the search text
31
+ - \`ComboboxItems\` is \`(ComboboxOption | { label?: string; items: ComboboxOption[] })[]\`; flat options and groups can be mixed. \`ComboboxOption\` is \`{ value; label; description?; disabled?; data? }\`
32
+ - For arrays: filtered client-side with a case- and accent-insensitive match on the label, in the active I18n locale ("eclair" finds "Éclair")
33
+ - For functions: called (after a 100ms pause in typing) with the search text and \`{ signal }\`. The signal is aborted when a newer search replaces the request, and a response that is not the latest is ignored, so a slow answer never overwrites a newer list. The last results stay visible, marked busy, while the next request loads
33
34
 
34
35
  - **value**: \`string | null\` (bindable)
35
36
  - Selected option value
@@ -37,15 +38,31 @@ A searchable dropdown component that supports both static arrays and async optio
37
38
  - Initial selected value when \`value\` is omitted
38
39
 
39
40
  - **searchValue**: \`string\` (default: \`''\`, bindable)
40
- - Current search input value
41
+ - Current search input value (a draft: it is never submitted by a native form)
42
+
43
+ - **open**: \`boolean\` (bindable) / **defaultOpen**: \`boolean\` (default: \`false\`)
44
+ - Whether the options list is open. The list only renders while there is something to show (options, a loading or error message, or the "no options" message for the typed text)
45
+ - **onOpenChange**: \`(open, details) => void\` runs before the list opens or closes. \`details\` carries \`reason\` (\`'input-change'\`, \`'escape-key'\`, \`'item-press'\`, \`'list-navigation'\`, \`'trigger-press'\`, \`'trigger-focus'\`, \`'focus-out'\`), \`event\`, \`interaction\` and \`cancel()\`; a cancelled change leaves the list as it was
46
+ - **onAfterOpen** / **onAfterClose**: \`() => void\` fire once after the open or close transition
41
47
 
42
48
  - **loading**: \`boolean\` (default: \`false\`, bindable)
43
49
  - Loading state (managed automatically for async options)
44
50
 
45
51
  ### Behavior Props
46
52
 
47
- - **showAllOnFocus**: \`boolean\` (default: \`false\`)
48
- - Show all options when input is focused, even without typing
53
+ - **openOnFocus**: \`boolean\` (default: \`false\`)
54
+ - Open the list when the input receives focus, even before typing: static arrays list every option, \`items\` functions are called with an empty search
55
+ - **showAllOnFocus**: \`boolean\` (deprecated alias of \`openOnFocus\`, kept for one minor)
56
+
57
+ - **filter**: \`(option, searchValue) => boolean\` - Custom match for static arrays (functions filter themselves)
58
+ - **limit**: \`number\` - Show at most this many matches; matching stops once the limit is reached, across groups
59
+
60
+ - **autoHighlight**: \`boolean | 'always'\` (default: \`'always'\`)
61
+ - \`'always'\` keeps the first match (or the selected option while the text is empty) highlighted; \`true\` only while text is typed; \`false\` highlights nothing until an arrow key or the pointer moves it
62
+ - **loop**: \`'wrap' | 'input' | false\` (default: \`'wrap'\`) - Past either end of the list: continue at the other end, land on no highlight first (focus stays in the input), or stop
63
+ - **separators**: \`boolean\` (default: \`true\`) - Separators between consecutive groups
64
+ - **item**: \`Snippet<[ComboboxOption]>\` - Custom row renderer, replaces the title and description layout
65
+ - **readOnly**: \`boolean\` - The list opens and can be browsed, but the value cannot change: choosing does nothing, the clear button is hidden, the input is natively \`readonly\`. The value still submits
49
66
 
50
67
  - **getValueOption**: \`(value: string) => MaybePromise<ComboboxOption | null | undefined>\`
51
68
  - Function to get option data for a value when not in loaded options
@@ -77,6 +94,9 @@ A searchable dropdown component that supports both static arrays and async optio
77
94
  - Called when selection changes
78
95
  - Receives a named payload with both the value and full option object
79
96
 
97
+ - **onHighlightChange**: \`({ value, reason, event }) => void\`
98
+ - Called when the highlighted option changes. \`value\` is the option's value or \`undefined\`; \`reason\` is \`'keyboard'\`, \`'pointer'\` or \`'list'\` (results changed, or the list opened); \`event\` is the KeyboardEvent or pointer event, absent for \`'list'\`
99
+
80
100
  - **onValidate**: \`(value: string) => string[] | boolean\`
81
101
  - Custom validation function
82
102
 
@@ -132,12 +152,12 @@ A searchable dropdown component that supports both static arrays and async optio
132
152
  />
133
153
  \`\`\`
134
154
 
135
- ### Show All Options on Focus
155
+ ### Open on Focus
136
156
 
137
157
  \`\`\`svelte
138
158
  <Combobox
139
159
  items={countries}
140
- showAllOnFocus={true}
160
+ openOnFocus
141
161
  bind:value={value}
142
162
  />
143
163
  \`\`\`
@@ -164,14 +184,73 @@ A searchable dropdown component that supports both static arrays and async optio
164
184
  />
165
185
  \`\`\`
166
186
 
187
+ ### Groups, Disabled Options and Custom Rows
188
+
189
+ \`\`\`svelte
190
+ <Combobox
191
+ openOnFocus
192
+ items={[
193
+ { label: 'Europe', items: [{ value: 'fr', label: 'France' }, { value: 'de', label: 'Germany' }] },
194
+ { label: 'Asia', items: [{ value: 'cn', label: 'China', disabled: true }] }
195
+ ]}
196
+ bind:value={value}
197
+ >
198
+ {#snippet item(option)}
199
+ <span>{option.label}</span>
200
+ {/snippet}
201
+ </Combobox>
202
+ \`\`\`
203
+
204
+ ### Abortable Async Options
205
+
206
+ \`\`\`svelte
207
+ <script lang="ts">
208
+ const getOptions = async (searchValue: string | undefined, { signal }: { signal: AbortSignal }) => {
209
+ const response = await fetch(\`/api/countries?q=\${searchValue ?? ''}\`, { signal });
210
+ return response.json();
211
+ };
212
+ </script>
213
+
214
+ <Combobox items={getOptions} bind:value={value} />
215
+ \`\`\`
216
+
167
217
  ## State Management
168
218
 
169
219
  - **value**: Bindable string (option value) or null
170
220
  - **searchValue**: Bindable string for search input
171
221
  - **loading**: Bindable boolean, automatically managed for async options
222
+ - **open**: Bindable boolean for the list
172
223
  - **errors**: Bindable array or boolean for validation errors
173
224
  - **focused**: Bindable boolean for focus state
174
225
 
226
+ ## Styling hooks
227
+
228
+ The input, the field container, the list panel and every option carry state attributes. \`data-highlighted\` and \`data-selected\` are written as \`"true"\`; match them by presence.
229
+
230
+ Attributes are presence attributes (set while the state holds, omitted otherwise) unless they carry a value.
231
+
232
+ **Data attributes**
233
+ - \`data-popup-open\`: On the input and the field container around it: present while the list (or its empty, loading or error status) shows.
234
+ - \`data-popup-side\`: On the field container: the side of the field the list sits on.
235
+ - \`data-disabled\`: On the input: present while disabled. On an option: present while it is disabled.
236
+ - \`data-highlighted\`: On an option: present while the keyboard or the pointer highlights it.
237
+ - \`data-selected\`: On an option: present while it is the value.
238
+ - \`data-open\`: On the list panel: present while open.
239
+ - \`data-closed\`: On the list panel: present while its exit transition plays.
240
+ - \`data-entering\`: On the list panel: present while the enter transition plays.
241
+ - \`data-exiting\`: On the list panel: present while the exit transition plays.
242
+ - \`data-side\`: On the list panel: the side of the field it sits on after flipping.
243
+ - \`data-align\`: On the list panel: \`start\`, \`center\` or \`end\`.
244
+
245
+ **CSS variables** (set on the list panel's positioned wrapper and inherited by the list)
246
+ - \`--available-width\`: The width in px the panel can take before it reaches the viewport edges, minus 20px.
247
+ - \`--available-height\`: The room in px between the trigger and the viewport edge on the panel's side, minus 20px. Cap a scrolling list with \`max-height: min(240px, var(--available-height))\`.
248
+ - \`--anchor-width\`: The trigger's width in px, snapped to the device pixel grid.
249
+ - \`--anchor-height\`: The trigger's height in px, snapped to the device pixel grid.
250
+ - \`--transform-origin\`: The panel corner facing the trigger, mirrored in right-to-left documents; the point the panel scales from.
251
+
252
+ The typed maps \`comboboxDataAttributes\` and \`comboboxCssVariables\` (from \`entasis/combobox\`) list each name with its meaning.
253
+
175
254
  ## Accessibility
176
255
 
177
256
  - Full ARIA combobox pattern implementation
@@ -180,18 +259,26 @@ A searchable dropdown component that supports both static arrays and async optio
180
259
  - **role="option"** on each option
181
260
  - **aria-expanded**, **aria-controls**, **aria-activedescendant** for state
182
261
  - **aria-autocomplete="list"** for search behavior
183
- - Keyboard navigation: ArrowDown/Up (wraps around), Enter (select), Escape (close), Home/End (first/last)
184
- - Screen reader announcements for loading and error states
262
+ - Keyboard navigation: ArrowDown/ArrowUp open a closed list (with every option) and then move the highlight, Enter selects, Escape closes the list and keeps focus in the input (a second Escape clears the typed text), Home/End jump to the first/last option
263
+ - Clicking the already-focused input toggles the list; choosing an option, Clear and Escape all keep focus in the input
264
+ - The listbox owns only options and groups; the loading, error and "no options" messages sit beside it, and \`aria-expanded\` is true while options are listed
265
+ - One persistent visually hidden live region (\`role="status"\`) next to the input announces result counts ("3 results available"), the empty state, loading and errors after typing settles
266
+ - The highlight follows the selected option when the list opens and when the text is cleared
185
267
 
186
268
  ## Notes
187
269
 
188
270
  - **Debouncing**: Search is debounced by 100ms to reduce API calls
189
- - **Race Conditions**: Handled automatically - only latest async request updates state
271
+ - **Race Conditions**: Handled automatically - older requests are aborted and only the latest response updates state
272
+ - **Native forms**: The search box carries no \`name\`. A hidden input beside it submits the selected value under \`name\` (nothing when there is no name or the field is disabled); \`required\` blocks a native submit while nothing is selected
273
+ - **Closing**: Escape, choosing an option, or focus leaving the field closes the list; the rows stay on screen through the exit transition
190
274
  - **Option Format**: Options must have \`value\` (string) and \`label\` (string). Optional \`description\` displays below label
191
- - **Keyboard Navigation**: Wraps around - ArrowDown at bottom goes to top, ArrowUp at top goes to bottom
275
+ - **Keyboard Navigation**: Wraps around by default - ArrowDown at bottom goes to top, ArrowUp at top goes to bottom (see \`loop\`)
276
+ - **Groups and disabled options**: Disabled options are dimmed and skipped by the keyboard; groups render like Select's (\`role="group"\` with a hidden label, presentational separators)
192
277
  - **Empty States**: Shows loading text, error message, or no options text appropriately
193
278
  - **Clear Button**: Automatically shown when value exists, uses the shared field action button hitbox
194
279
  - **Default Prefix**: Magnifying glass icon shown by default unless \`prefix={false}\` or custom snippet provided
280
+ - **List 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
281
+ - **Styling hooks**: While the list is open, the field it is anchored to carries \`data-popup-side\` (\`bottom\` or \`top\`) and the panel \`data-side\`
195
282
 
196
283
  ## Theme Customization
197
284
 
@@ -205,6 +292,7 @@ The theme object contains the following parts:
205
292
  - **loading**: Loading state indicator styles
206
293
  - **error**: Error message styles
207
294
  - **noOptions**: No options found message styles
295
+ - **group**, **groupLabel**, **separator**: Group container, group label and the divider between groups
208
296
 
209
297
  Option rows are rendered with the shared \`MenuOption\` component (parts: root, title, description, prefix, suffix, content) and are themed through \`setMenuOptionTheme\` from \`entasis/menu-option\`, not through the Combobox theme.
210
298
 
@@ -231,6 +319,9 @@ Option rows are rendered with the shared \`MenuOption\` component (parts: root,
231
319
  **noOptions**:
232
320
  - base: Base classes for no options message
233
321
 
322
+ **group**, **groupLabel**, **separator**:
323
+ - base: Base classes for a labelled group, its label and the divider between groups
324
+
234
325
  ### Usage Examples
235
326
 
236
327
  **Basic Theme Override**:
@@ -3,6 +3,8 @@ import type { Messages } from '../../../i18n/en.js';
3
3
  import type { InputProps } from '../Field/field.js';
4
4
  import type { ComboboxThemeProps } from './combobox.theme.js';
5
5
  import type { Snippet } from 'svelte';
6
+ import type { OpenChangeHandler } from '../../../utils/openChange.js';
7
+ import type { HighlightReason, ListLoop } from '../../../utils/useListNavigation.svelte.js';
6
8
  export type MaybePromise<T> = T | Promise<T>;
7
9
  export type ComboboxOption = {
8
10
  /** Unique value submitted when this option is selected. */
@@ -11,51 +13,143 @@ export type ComboboxOption = {
11
13
  label: string;
12
14
  /** Supporting text rendered below the option label in the dropdown. */
13
15
  description?: string;
16
+ /** Dims the option and keeps it out of keyboard navigation: it cannot be highlighted or selected. */
17
+ disabled?: boolean;
14
18
  /** Optional arbitrary metadata attached to the option. */
15
19
  data?: Record<string, unknown>;
16
20
  };
21
+ export type ComboboxOptionGroup = {
22
+ /** Optional group label rendered above the group's options. */
23
+ label?: string;
24
+ /** The options of the group. */
25
+ items: ComboboxOption[];
26
+ };
27
+ /** Flat options and `{ label, items }` groups can be mixed freely, as in Select. */
28
+ export type ComboboxItems = (ComboboxOption | ComboboxOptionGroup)[];
29
+ /** Second argument of an `items` function. */
30
+ export type ComboboxItemsRequest = {
31
+ /**
32
+ * Aborted when a newer search replaces this request (or the list is no longer wanted). Pass it
33
+ * to `fetch` to cancel the network call; results of an aborted request are ignored either way.
34
+ */
35
+ signal: AbortSignal;
36
+ };
37
+ /** The options, or a function that returns the options for the current search text. */
38
+ export type ComboboxItemsSource = ComboboxItems | ((searchValue: string | undefined, request: ComboboxItemsRequest) => MaybePromise<ComboboxItems>);
39
+ /** Decides whether an option matches the search text. */
40
+ export type ComboboxFilter = (option: ComboboxOption, searchValue: string) => boolean;
17
41
  export type ComboboxValueChangePayload = {
18
42
  value: string | null;
19
43
  option: ComboboxOption | null;
20
44
  };
21
- export type ComboboxProps = Omit<InputProps<'combobox'>, 'prefix' | 'onValueChange'> & {
22
- /** Called when the selection changes with its value and resolved option context. */
23
- onValueChange?: (payload: ComboboxValueChangePayload) => void;
45
+ /** Why the highlighted option changed: the keyboard, the pointer, or the list changing underneath it. */
46
+ export type ComboboxHighlightReason = HighlightReason;
47
+ export type ComboboxHighlightChangePayload = {
48
+ /** The highlighted option's value, or `undefined` when nothing is highlighted. */
49
+ value: string | undefined;
50
+ /** `'keyboard'` for keys, `'pointer'` for hover, `'list'` when results changed or the list opened. */
51
+ reason: ComboboxHighlightReason;
52
+ /** The keyboard or pointer event behind the change; absent for `'list'`. */
53
+ event?: Event;
54
+ };
55
+ /**
56
+ * Props shared by Combobox and TagsInput: the searchable list behind them. Both read the same
57
+ * options, open state and highlight model.
58
+ */
59
+ export type ComboboxListProps = {
24
60
  /** Bindable text currently typed in the search input. */
25
61
  searchValue?: string;
26
62
  /** Bindable flag indicating async options are being fetched. */
27
63
  loading?: boolean;
28
- /** Hint text shown in the search input when no option is selected. */
29
- placeholder?: string;
30
- /** Static array or function returning items filtered by the current search value. */
31
- items: ComboboxOption[] | ((searchValue?: string) => MaybePromise<ComboboxOption[]>);
64
+ /**
65
+ * Whether the options list is open. Bindable. The list only shows while there is something to
66
+ * show (options, a loading or error message, or a "no options" message for the typed text).
67
+ */
68
+ open?: boolean;
69
+ /** Initial open state when `open` is omitted. */
70
+ defaultOpen?: boolean;
71
+ /**
72
+ * Called before the list opens or closes, with the requested state and the change details:
73
+ * `reason` (`'input-change'`, `'escape-key'`, `'item-press'`, `'list-navigation'`,
74
+ * `'trigger-press'`, `'trigger-focus'`, `'focus-out'`…), the originating `event`, the
75
+ * `interaction` type and `cancel()`. Calling `details.cancel()` keeps the list as it is.
76
+ */
77
+ onOpenChange?: OpenChangeHandler;
78
+ /** Called once per open, after the open transition finishes. */
79
+ onAfterOpen?: () => void;
80
+ /** Called once per close, after the close transition finishes. */
81
+ onAfterClose?: () => void;
82
+ /**
83
+ * Open the list when the input receives focus, even before anything is typed: static arrays
84
+ * list every option, `items` functions are called with an empty search.
85
+ * @default false
86
+ */
87
+ openOnFocus?: boolean;
88
+ /** @deprecated Use `openOnFocus`. Kept as an alias for one minor. */
89
+ showAllOnFocus?: boolean;
90
+ /**
91
+ * Static array, or a function returning the options for the current search text. The function
92
+ * receives `{ signal }` as its second argument: it is aborted when a newer search replaces the
93
+ * request, and a response that is not the latest is ignored.
94
+ */
95
+ items?: ComboboxItemsSource;
96
+ /**
97
+ * Decides whether an option matches the typed text, for static arrays. Defaults to a case- and
98
+ * accent-insensitive substring match on the label, compared in the active I18n locale
99
+ * ("eclair" finds "Éclair"). Functions passed as `items` filter themselves.
100
+ */
101
+ filter?: ComboboxFilter;
102
+ /** Shows at most this many matching options. Matching stops once the limit is reached. */
103
+ limit?: number;
104
+ /**
105
+ * Which option is highlighted without keyboard input. `'always'` (default for Combobox) keeps
106
+ * the first match, or the selected option while the text is empty, highlighted; `true` does so
107
+ * only while text is typed; `false` highlights nothing until an arrow key or the pointer moves
108
+ * it, so Enter acts on the typed text.
109
+ */
110
+ autoHighlight?: boolean | 'always';
111
+ /**
112
+ * What moving past either end of the list does: `'wrap'` continues at the other end (default),
113
+ * `'input'` lands on no highlight first (focus stays in the input) and wraps from there, and
114
+ * `false` stops at the end.
115
+ * @default 'wrap'
116
+ */
117
+ loop?: ListLoop;
118
+ /** Called when the highlighted option changes, with the value, why it moved and the event behind it. */
119
+ onHighlightChange?: (payload: ComboboxHighlightChangePayload) => void;
120
+ /** Render a separator between consecutive groups. @default true */
121
+ separators?: boolean;
122
+ /** Custom row renderer: receives the option. Overrides the default title and description layout. */
123
+ item?: Snippet<[ComboboxOption]>;
32
124
  /**
33
125
  * Spacing density forwarded to the dropdown option rows (paddings, gaps, min-height).
34
126
  * @default 'normal'
35
127
  */
36
128
  density?: Density;
37
- /** When true, shows all options on focus without a search query (static arrays only). */
38
- showAllOnFocus?: boolean;
39
129
  /**
40
130
  * Function to get the label for a value when the option is not yet loaded.
41
131
  * Useful for async options where the default value might not be in the initial options list.
42
132
  */
43
133
  getValueOption?: (value: string) => MaybePromise<ComboboxOption | null | undefined>;
134
+ /** Text to display when loading options. Defaults to "Loading...". */
135
+ loadingText?: string;
136
+ /** Text to display when no options are found or available. Defaults to "No options found". */
137
+ noOptionsText?: string;
138
+ /** Per-instance i18n overrides merged over the global catalog. */
139
+ i18n?: Partial<Messages>;
140
+ };
141
+ export type ComboboxProps = Omit<InputProps<'combobox'>, 'prefix' | 'onValueChange' | 'density'> & ComboboxListProps & {
142
+ /** Static array, or a function returning the options for the current search text. */
143
+ items: ComboboxItemsSource;
144
+ /** Called when the selection changes with its value and resolved option context. */
145
+ onValueChange?: (payload: ComboboxValueChangePayload) => void;
146
+ /** Hint text shown in the search input when no option is selected. */
147
+ placeholder?: string;
44
148
  /**
45
149
  * Prefix content. Set to `false` to hide the default magnifying glass icon.
46
150
  * If not provided, the magnifying glass icon is shown by default.
47
151
  */
48
152
  prefix?: Snippet | false;
49
- /**
50
- * Text to display when loading options. Defaults to "Loading...".
51
- */
52
- loadingText?: string;
53
- /**
54
- * Text to display when no options are found or available. Defaults to "No options found".
55
- */
56
- noOptionsText?: string;
57
153
  /** Theme overrides for the combobox dropdown, options, and field parts. */
58
154
  theme?: ComboboxThemeProps & InputProps<'combobox'>['theme'];
59
- /** Per-instance i18n overrides merged over the global catalog. */
60
- i18n?: Partial<Messages>;
61
155
  };