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,103 @@
1
+ // The shared trigger contract (AGENTS.md proposed law 4): any element can open a disclosure
2
+ // owner's popup. The owner writes `aria-haspopup`, `aria-expanded` and `aria-controls` on it,
3
+ // a non-control element becomes a keyboard-reachable button, and a press on it requests the
4
+ // change with `reason: 'trigger-press'` unless the element's own handler already acted or called
5
+ // `event.preventDefault()`.
6
+ import { focusableSelector } from './focus.js';
7
+ /** Elements that may carry popup ARIA state. */
8
+ export const POPUP_CONTROL = 'button, a[href], input, select, textarea, summary, [role="button"], [role="link"], [role="combobox"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="tab"], [role="option"], [role="treeitem"], [role="gridcell"], [role="switch"], [role="checkbox"]';
9
+ /** Elements the browser already focuses and activates from the keyboard. */
10
+ export const NATIVE_CONTROL = 'button, a[href], input, select, textarea, summary';
11
+ const TRIGGER_ARIA = {
12
+ haspopup: 'aria-haspopup',
13
+ expanded: 'aria-expanded',
14
+ controls: 'aria-controls'
15
+ };
16
+ /**
17
+ * Writes the popup ARIA attributes on a trigger. Call inside an `$effect` so they follow the
18
+ * state. Only real controls carry them: a wrapper `div` or a presentational `span` used as an
19
+ * anchor must not (axe: aria-allowed-attr).
20
+ */
21
+ export function writePopupAria(node, props) {
22
+ if (!node.matches(POPUP_CONTROL))
23
+ return;
24
+ for (const [prop, value] of Object.entries(props)) {
25
+ const name = TRIGGER_ARIA[prop];
26
+ if (value === undefined)
27
+ node.removeAttribute(name);
28
+ else
29
+ node.setAttribute(name, String(value));
30
+ }
31
+ }
32
+ /**
33
+ * Makes `node` a trigger that activates on click, and on Enter and Space when it is not a native
34
+ * control. A non-control element also gets `role="button"` and `tabindex="0"`. Returns cleanup.
35
+ */
36
+ export function triggerActivation(node, options) {
37
+ const nativeControl = node.matches(NATIVE_CONTROL);
38
+ if (!node.matches(POPUP_CONTROL) && !node.hasAttribute('role')) {
39
+ node.setAttribute('role', 'button');
40
+ }
41
+ if (!nativeControl && !node.hasAttribute('tabindex'))
42
+ node.tabIndex = 0;
43
+ // The element's own handler wins. Svelte delegates `onclick` to the root, so it runs after
44
+ // this listener: the default action waits until the event has finished dispatching, then
45
+ // runs only if nothing cancelled the event or asked for an open state meanwhile.
46
+ let pending;
47
+ const press = (event) => {
48
+ if (options.enabled && !options.enabled())
49
+ return;
50
+ const requests = options.requests();
51
+ clearTimeout(pending);
52
+ pending = setTimeout(() => {
53
+ if (event.defaultPrevented || options.requests() !== requests)
54
+ return;
55
+ options.activate(event);
56
+ });
57
+ };
58
+ const onKeydown = (event) => {
59
+ if (nativeControl || event.target !== node)
60
+ return;
61
+ if (event.key !== 'Enter' && event.key !== ' ')
62
+ return;
63
+ event.preventDefault();
64
+ const requests = options.requests();
65
+ clearTimeout(pending);
66
+ pending = setTimeout(() => {
67
+ if (options.requests() !== requests || (options.enabled && !options.enabled()))
68
+ return;
69
+ options.activate(event);
70
+ });
71
+ };
72
+ node.addEventListener('click', press);
73
+ node.addEventListener('keydown', onKeydown);
74
+ return () => {
75
+ clearTimeout(pending);
76
+ node.removeEventListener('click', press);
77
+ node.removeEventListener('keydown', onKeydown);
78
+ };
79
+ }
80
+ /**
81
+ * The element focus returns to when a popup opened from `trigger` closes: the trigger when it is
82
+ * focusable, else the focusable element inside it that was pressed or focused (the country button
83
+ * inside a phone field's wrapper), else `null` (the focus scope's own default).
84
+ */
85
+ export function triggerFocusTarget(trigger, event) {
86
+ if (trigger.matches(focusableSelector) && !trigger.matches(':disabled'))
87
+ return trigger;
88
+ const active = trigger.ownerDocument.activeElement;
89
+ if (active instanceof HTMLElement && active !== trigger && trigger.contains(active))
90
+ return active;
91
+ const target = event?.target;
92
+ if (target instanceof Element) {
93
+ const focusable = target.closest(focusableSelector);
94
+ if (focusable && trigger.contains(focusable))
95
+ return focusable;
96
+ }
97
+ return null;
98
+ }
99
+ /** The element that has focus now, or `null` when nothing does (the body). */
100
+ export function focusedElement(document = globalThis.document) {
101
+ const active = document?.activeElement;
102
+ return active instanceof HTMLElement && active !== document.body ? active : null;
103
+ }
@@ -3,10 +3,19 @@ export interface TypeaheadOptions<Item> {
3
3
  getText: (item: Item) => string;
4
4
  getCurrentIndex: () => number;
5
5
  onMatch: (index: number, item: Item) => void;
6
+ /**
7
+ * Items the search steps over, such as disabled or hidden ones: a match on one of them moves
8
+ * on to the next match instead of ending the search.
9
+ */
10
+ isItemDisabled?: (item: Item) => boolean;
6
11
  /** Milliseconds of silence before the buffer resets. */
7
12
  timeout?: number;
8
13
  }
14
+ /** A field the user types into: text inputs, textareas and contenteditable regions. */
15
+ export declare const isTextEntry: (target: EventTarget | null) => target is HTMLElement;
9
16
  export declare function createTypeahead<Item>(options: TypeaheadOptions<Item>): {
10
17
  handleKey: (event: KeyboardEvent) => boolean;
11
18
  reset: () => void;
19
+ /** True while the buffer holds typed characters (until the timeout or a `reset`). */
20
+ readonly isTyping: boolean;
12
21
  };
@@ -1,12 +1,14 @@
1
- const isTextEntry = (target) => typeof HTMLElement !== 'undefined' &&
1
+ const nonTextInputTypes = ['button', 'checkbox', 'radio', 'range', 'submit', 'reset', 'image'];
2
+ /** A field the user types into: text inputs, textareas and contenteditable regions. */
3
+ export const isTextEntry = (target) => typeof HTMLElement !== 'undefined' &&
2
4
  target instanceof HTMLElement &&
3
5
  (target.isContentEditable ||
4
6
  target.tagName === 'TEXTAREA' ||
5
- (target.tagName === 'INPUT' &&
6
- !['button', 'checkbox', 'radio', 'range', 'submit', 'reset'].includes(target.type)));
7
+ (target.tagName === 'INPUT' && !nonTextInputTypes.includes(target.type)));
7
8
  export function createTypeahead(options) {
8
9
  let buffer = '';
9
10
  let timer = null;
11
+ /** Empties the buffer and clears its timer; call it on focus-out and on destroy. */
10
12
  const reset = () => {
11
13
  buffer = '';
12
14
  if (timer)
@@ -21,12 +23,12 @@ export function createTypeahead(options) {
21
23
  return false;
22
24
  if (event.key === ' ' && buffer === '')
23
25
  return false; // Space activates, it does not search
24
- if (timer)
25
- clearTimeout(timer);
26
- timer = setTimeout(reset, options.timeout ?? 1000);
27
26
  const items = options.getItems();
28
27
  if (items.length === 0)
29
28
  return false;
29
+ if (timer)
30
+ clearTimeout(timer);
31
+ timer = setTimeout(reset, options.timeout ?? 1000);
30
32
  buffer += event.key.toLowerCase();
31
33
  const repeated = buffer.length > 1 && [...buffer].every((c) => c === buffer[0]);
32
34
  const needle = repeated ? buffer[0] : buffer;
@@ -35,12 +37,22 @@ export function createTypeahead(options) {
35
37
  const start = repeated || buffer.length === 1 ? current + 1 : current;
36
38
  for (let step = 0; step < items.length; step += 1) {
37
39
  const index = (((start + step) % items.length) + items.length) % items.length;
38
- if (options.getText(items[index]).trim().toLowerCase().startsWith(needle)) {
39
- options.onMatch(index, items[index]);
40
+ const item = items[index];
41
+ if (options.isItemDisabled?.(item))
42
+ continue;
43
+ if (options.getText(item).trim().toLowerCase().startsWith(needle)) {
44
+ options.onMatch(index, item);
40
45
  return true;
41
46
  }
42
47
  }
43
48
  return true;
44
49
  };
45
- return { handleKey, reset };
50
+ return {
51
+ handleKey,
52
+ reset,
53
+ /** True while the buffer holds typed characters (until the timeout or a `reset`). */
54
+ get isTyping() {
55
+ return buffer !== '';
56
+ }
57
+ };
46
58
  }
@@ -144,7 +144,7 @@ export type DndOver = {
144
144
  * containers on its own.
145
145
  *
146
146
  * Styling hooks: `data-dnd-dragging` on the dragged item (default 0.4 opacity
147
- * via an injected rule), `data-dnd-over` on a hovered container (an EMPTY
147
+ * via the Tailwind plugin base styles), `data-dnd-over` on a hovered container (an EMPTY
148
148
  * hovered list gets a default primary tint instead of an indicator line —
149
149
  * there is no index to point at; override via your own `data-dnd-over`
150
150
  * styles), `data-dnd-indicator` on the shared indicator line,
@@ -80,27 +80,12 @@ const toLogicalEdge = (physical, element, axis) => {
80
80
  return physical === 'left' ? 'right' : physical === 'right' ? 'left' : physical;
81
81
  };
82
82
  // ---------------------------------------------------------------------------
83
- // Drop indicator + default dragging style: one fixed-position line and one
84
- // tiny stylesheet for the whole app, managed imperatively. Override via the
85
- // [data-dnd-indicator] / [data-dnd-dragging] selectors.
83
+ // Drop indicator: one fixed-position line for the whole app, managed imperatively. The default
84
+ // dragging style and the empty-list tint are plain rules in the Tailwind plugin CSS
85
+ // (`tailwind/global.ts`), so nothing is injected into the document head and a strict CSP needs
86
+ // no nonce for them. Override via the [data-dnd-indicator] / [data-dnd-dragging] selectors.
86
87
  // ---------------------------------------------------------------------------
87
88
  let indicatorEl = null;
88
- // Injected once per document, from the list attachment — indicator-less
89
- // (preview) lists need the data-dnd-dragging default and the empty-list tint
90
- // too, not just lists that ever draw the line.
91
- const ensureBaseStyles = () => {
92
- if (document.querySelector('style[data-dnd-styles]'))
93
- return;
94
- const style = document.createElement('style');
95
- style.setAttribute('data-dnd-styles', '');
96
- // The empty-list rule is wrapped in :where() (zero specificity) so any
97
- // consumer class on the container wins over the default tint.
98
- style.textContent =
99
- '[data-dnd-dragging]{opacity:.4;}' +
100
- ':where([data-dnd-over="true"]:not(:has([data-dnd-item]))){' +
101
- 'background-color:color-mix(in oklab, var(--color-primary, currentColor) 6%, transparent);}';
102
- document.head.appendChild(style);
103
- };
104
89
  const ensureIndicator = () => {
105
90
  // Query the DOM (not just the module variable) so HMR re-evaluations reuse
106
91
  // the existing node instead of orphaning it.
@@ -118,7 +103,6 @@ const ensureIndicator = () => {
118
103
  display: 'none'
119
104
  });
120
105
  document.body.appendChild(indicatorEl);
121
- ensureBaseStyles();
122
106
  return indicatorEl;
123
107
  };
124
108
  const THICKNESS = 2;
@@ -283,7 +267,7 @@ const registerAutoScroll = (listEl) => {
283
267
  * containers on its own.
284
268
  *
285
269
  * Styling hooks: `data-dnd-dragging` on the dragged item (default 0.4 opacity
286
- * via an injected rule), `data-dnd-over` on a hovered container (an EMPTY
270
+ * via the Tailwind plugin base styles), `data-dnd-over` on a hovered container (an EMPTY
287
271
  * hovered list gets a default primary tint instead of an indicator line —
288
272
  * there is no index to point at; override via your own `data-dnd-over`
289
273
  * styles), `data-dnd-indicator` on the shared indicator line,
@@ -499,7 +483,6 @@ export const useDndList = (options) => {
499
483
  const list = (element) => {
500
484
  element.setAttribute('data-dnd-list', listId);
501
485
  listElements.add(element);
502
- ensureBaseStyles();
503
486
  /** Rows belonging to THIS list only — nested lists' rows don't count. */
504
487
  const ownRows = () => [...element.querySelectorAll('[data-dnd-item]')].filter((row) => row.closest('[data-dnd-list]') === element);
505
488
  const terminalEdge = () => {
@@ -522,7 +505,7 @@ export const useDndList = (options) => {
522
505
  else {
523
506
  // Empty list: there is no index to point at, so no line — the
524
507
  // container itself signals via [data-dnd-over] (default tint from
525
- // the injected stylesheet, override with your own styles).
508
+ // the plugin base styles, override with your own styles).
526
509
  hideIndicator();
527
510
  }
528
511
  };
@@ -1,3 +1,11 @@
1
+ import type { OpenChangeDetails } from './openChange.js';
2
+ /**
3
+ * Where focus goes when an overlay closes. `true` (or nothing) restores it to the opener, else the
4
+ * most recent element still on the page; `false` leaves focus alone; an element receives it. A
5
+ * function is called with the details of the change that closed the overlay (`null` when it
6
+ * closed without one) and returns any of these; returning nothing restores as usual.
7
+ */
8
+ export type FocusOnClose = boolean | HTMLElement | null | ((details: OpenChangeDetails | null) => HTMLElement | boolean | null | void);
1
9
  export interface FocusScopeOptions {
2
10
  /** Scope is live (typically: it is the topmost layer of its kind). */
3
11
  isActive: () => boolean;
@@ -14,7 +22,28 @@ export interface FocusScopeOptions {
14
22
  returnTo?: () => HTMLElement | null;
15
23
  /** Mark every sibling subtree up to `<body>` `inert` while active (modal scopes). */
16
24
  inertSiblings?: () => boolean;
25
+ /** The owner's `focusOnClose` choice; see `FocusOnClose`. Wins over `restoreFocus`. */
26
+ focusOnClose?: () => FocusOnClose | undefined;
27
+ /**
28
+ * The change that closed the overlay. A close by Escape or from the keyboard returns focus
29
+ * with a visible focus ring, and `focusOnClose` functions receive it.
30
+ */
31
+ closeDetails?: () => OpenChangeDetails | null;
17
32
  }
33
+ /** What `focusOnClose` resolves to for one close: leave focus, restore as usual, or this element. */
34
+ export declare function resolveFocusOnClose(choice: FocusOnClose | undefined, details: OpenChangeDetails | null): false | 'default' | HTMLElement;
35
+ /**
36
+ * The node of the newest live scope that contains Tab and holds `element` (a modal dialog around a
37
+ * popover's trigger), or `null`. Lets Tab that has nowhere to go inside a portaled panel wrap
38
+ * within the modal instead of leaving it.
39
+ */
40
+ export declare function findTrappingScope(element: Node): HTMLElement | null;
41
+ /**
42
+ * Whether the focus event being dispatched right now comes from an overlay handing focus back to
43
+ * its opener. Read it synchronously inside a `focus` or `focusin` listener: a tooltip does not
44
+ * open for focus the page returned, only for focus the user moved.
45
+ */
46
+ export declare const isRestoringFocus: () => boolean;
18
47
  export declare function useFocusScope(options: FocusScopeOptions): {
19
48
  attachment: (target: HTMLElement) => () => void;
20
49
  restore: () => void;
@@ -3,7 +3,15 @@
3
3
  // to the opener when the scope goes away. Radix calls this FocusScope.
4
4
  import { on } from 'svelte/events';
5
5
  import { tick, untrack } from 'svelte';
6
- import { getTabbableElements, resolveInitialFocus } from './focus.js';
6
+ import { composedContains, getDeepActiveElement, getTabbableElements, isFocusable, isTextField, isWebKit, resolveInitialFocus } from './focus.js';
7
+ import { findFocusFallback, installFocusHistory } from './focusHistory.js';
8
+ /** What `focusOnClose` resolves to for one close: leave focus, restore as usual, or this element. */
9
+ export function resolveFocusOnClose(choice, details) {
10
+ const value = typeof choice === 'function' ? choice(details) : choice;
11
+ if (value === false)
12
+ return false;
13
+ return value instanceof HTMLElement ? value : 'default';
14
+ }
7
15
  // `inert` refcount per element so stacked modals release it in any order.
8
16
  const inertCounts = new WeakMap();
9
17
  const makeInert = (element) => {
@@ -22,26 +30,117 @@ const releaseInert = (element) => {
22
30
  inertCounts.set(element, count - 1);
23
31
  }
24
32
  };
33
+ /** Whether focus is on `<body>`, or inside the node (shadow roots included). */
25
34
  const isFocusInside = (node) => {
26
- const active = node.ownerDocument.activeElement;
27
- return !active || active === node.ownerDocument.body || node.contains(active);
35
+ const doc = node.ownerDocument;
36
+ const active = getDeepActiveElement(doc);
37
+ return !active || active === doc.body || composedContains(node, active);
28
38
  };
39
+ /** Mounted scopes, in the order they last became active (the newest is last). */
40
+ const scopes = [];
41
+ /**
42
+ * The node of the newest live scope that contains Tab and holds `element` (a modal dialog around a
43
+ * popover's trigger), or `null`. Lets Tab that has nowhere to go inside a portaled panel wrap
44
+ * within the modal instead of leaving it.
45
+ */
46
+ export function findTrappingScope(element) {
47
+ for (let index = scopes.length - 1; index >= 0; index -= 1) {
48
+ const scope = scopes[index];
49
+ if (scope.node.isConnected &&
50
+ scope.isActive() &&
51
+ scope.traps() &&
52
+ composedContains(scope.node, element))
53
+ return scope.node;
54
+ }
55
+ return null;
56
+ }
57
+ // Counts the `focus()` calls a closing overlay makes to give focus back. Their `focusin` events
58
+ // are dispatched inside the call, so a listener can tell restored focus from focus the user moved.
59
+ let restoringFocus = 0;
60
+ /**
61
+ * Whether the focus event being dispatched right now comes from an overlay handing focus back to
62
+ * its opener. Read it synchronously inside a `focus` or `focusin` listener: a tooltip does not
63
+ * open for focus the page returned, only for focus the user moved.
64
+ */
65
+ export const isRestoringFocus = () => restoringFocus > 0;
66
+ const usable = (element) => !!element && element.isConnected && !element.closest('[inert]') && isFocusable(element);
29
67
  export function useFocusScope(options) {
30
68
  let node = null;
31
69
  let returnTarget = null;
32
70
  let restored = false;
33
- /** Idempotent; only moves focus when it is still on `<body>` or inside the scope. */
71
+ /** Initial focus is applied once per mount: a later re-activation leaves focus where it is. */
72
+ let initialFocusDone = false;
73
+ let lastFocusedInside = null;
74
+ /** Releases the `inert` this scope set on the page behind it; idempotent. */
75
+ let releaseSiblings = () => { };
76
+ /** A close by Escape or from the keyboard shows the focus ring where focus lands. */
77
+ const focusVisibleOnClose = () => {
78
+ const details = options.closeDetails?.() ?? null;
79
+ return details?.reason === 'escape-key' || details?.interaction === 'keyboard';
80
+ };
81
+ const focusElement = (element, focusVisible = false) => {
82
+ // `focusVisible` makes engines that do not infer a focus ring from the last input (Firefox,
83
+ // Safari after a pointer open) show it; engines that do not know the option ignore it. It is
84
+ // left out otherwise: `false` would suppress the ring a keyboard user is owed.
85
+ restoringFocus += 1;
86
+ try {
87
+ element.focus({
88
+ preventScroll: true,
89
+ ...(focusVisible ? { focusVisible } : {})
90
+ });
91
+ }
92
+ finally {
93
+ restoringFocus -= 1;
94
+ }
95
+ };
96
+ /**
97
+ * Where focus goes when the scope's own target is gone: the last element that had focus in the
98
+ * scope still showing below this one (a Dialog under a closing Confirmation), else the most
99
+ * recent element in the focus history that is still on the page.
100
+ */
101
+ const fallbackTarget = (scope) => {
102
+ for (let index = scopes.length - 1; index >= 0; index -= 1) {
103
+ const other = scopes[index];
104
+ if (other.node === scope || !other.node.isConnected || !other.isActive())
105
+ continue;
106
+ const candidate = other.lastFocused();
107
+ if (usable(candidate) && !composedContains(scope, candidate))
108
+ return candidate;
109
+ }
110
+ return findFocusFallback(scope.ownerDocument, { exclude: scope });
111
+ };
112
+ /**
113
+ * Idempotent; only moves focus when it is still on `<body>` or inside the scope. The page
114
+ * behind is released first: an `inert` opener cannot take focus, and a close that is
115
+ * reported once its transition ends runs this before the node is torn down.
116
+ */
34
117
  const restore = () => {
35
118
  if (restored)
36
119
  return;
37
120
  restored = true;
38
- if (!(options.restoreFocus?.() ?? true))
121
+ releaseSiblings();
122
+ const scope = node;
123
+ if (!scope)
39
124
  return;
40
- const target = options.returnTo?.() ?? returnTarget;
41
- returnTarget = null;
42
- if (!target?.isConnected || !node || !isFocusInside(node))
125
+ // Safari scrolls the page when a focused text field leaves the document: let go of it
126
+ // while it is still mounted.
127
+ const active = getDeepActiveElement(scope.ownerDocument);
128
+ if (isWebKit() && active && composedContains(scope, active) && isTextField(active)) {
129
+ active.blur();
130
+ }
131
+ const choice = resolveFocusOnClose(options.focusOnClose?.(), options.closeDetails?.() ?? null);
132
+ if (choice === false)
43
133
  return;
44
- target.focus({ preventScroll: true });
134
+ if (choice === 'default' && !(options.restoreFocus?.() ?? true))
135
+ return;
136
+ if (!isFocusInside(scope))
137
+ return;
138
+ const target = choice !== 'default'
139
+ ? choice
140
+ : [options.returnTo?.() ?? null, returnTarget].find(usable) || fallbackTarget(scope);
141
+ returnTarget = null;
142
+ if (usable(target))
143
+ focusElement(target, focusVisibleOnClose());
45
144
  };
46
145
  const applyInitialFocus = (target) => {
47
146
  const mode = options.initialFocus?.() ?? 'first';
@@ -52,50 +151,110 @@ export function useFocusScope(options) {
52
151
  target.tabIndex = -1;
53
152
  element.focus({ preventScroll: true });
54
153
  };
154
+ const insideOtherScope = (element) => scopes.some((other) => other.node !== node && other.isActive() && composedContains(other.node, element));
55
155
  const handleKeyDown = (event) => {
56
156
  if (!node || event.key !== 'Tab' || event.defaultPrevented)
57
157
  return;
158
+ if (event.ctrlKey || event.metaKey)
159
+ return;
58
160
  if (!(options.trap?.() ?? options.isActive()))
59
161
  return;
162
+ const doc = node.ownerDocument;
163
+ const active = getDeepActiveElement(doc);
164
+ const inside = !!active && composedContains(node, active);
165
+ // A panel opened from inside the scope (a popover over a dialog) handles its own Tab.
166
+ if (active && !inside && insideOtherScope(active))
167
+ return;
60
168
  const tabbable = getTabbableElements(node);
61
169
  if (tabbable.length === 0) {
62
170
  event.preventDefault();
63
171
  node.focus();
64
172
  return;
65
173
  }
66
- const active = node.ownerDocument.activeElement;
67
- const index = tabbable.indexOf(active);
68
- const first = tabbable[0];
69
- const last = tabbable[tabbable.length - 1];
70
- const wrapBackward = event.shiftKey && index <= 0;
71
- const wrapForward = !event.shiftKey && index === tabbable.length - 1;
72
- const outside = active ? !node.contains(active) : true;
73
- if (!wrapBackward && !wrapForward && !outside)
74
- return;
174
+ const index = active instanceof HTMLElement ? tabbable.indexOf(active) : -1;
175
+ const edge = event.shiftKey ? tabbable[tabbable.length - 1] : tabbable[0];
176
+ let next;
177
+ if (index >= 0) {
178
+ // Move focus ourselves rather than trusting the engine's Tab order: WebKit without
179
+ // Full Keyboard Access skips buttons, which would let Tab leave the scope.
180
+ const step = event.shiftKey ? index - 1 : index + 1;
181
+ next = tabbable[(step + tabbable.length) % tabbable.length];
182
+ }
183
+ else if (!inside || active === node) {
184
+ next = edge;
185
+ }
186
+ else {
187
+ // Focus is on something the list does not know (a roving item, an element in a shadow
188
+ // root): the engine moves it, unless nothing tabbable lies ahead, which would leave.
189
+ const ahead = tabbable.some((element) => {
190
+ const position = active.compareDocumentPosition(element);
191
+ return event.shiftKey
192
+ ? position & Node.DOCUMENT_POSITION_PRECEDING
193
+ : position & Node.DOCUMENT_POSITION_FOLLOWING;
194
+ });
195
+ if (ahead)
196
+ return;
197
+ next = edge;
198
+ }
75
199
  event.preventDefault();
76
- (event.shiftKey ? last : first).focus();
200
+ next.focus();
77
201
  };
78
202
  const attachment = (target) => {
79
203
  return untrack(() => {
80
204
  node = target;
81
205
  restored = false;
82
- const active = target.ownerDocument.activeElement;
83
- returnTarget =
84
- active instanceof HTMLElement && active !== target.ownerDocument.body ? active : null;
206
+ initialFocusDone = false;
207
+ const doc = target.ownerDocument;
208
+ const active = getDeepActiveElement(doc);
209
+ returnTarget = active instanceof HTMLElement && active !== doc.body ? active : null;
210
+ lastFocusedInside =
211
+ active instanceof HTMLElement && composedContains(target, active) ? active : null;
85
212
  if (target.tabIndex < 0)
86
213
  target.tabIndex = -1;
214
+ const record = {
215
+ node: target,
216
+ isActive: () => options.isActive(),
217
+ traps: () => options.trap?.() ?? options.isActive(),
218
+ lastFocused: () => lastFocusedInside
219
+ };
220
+ scopes.push(record);
87
221
  const inerted = [];
88
- const cleanups = [on(target.ownerDocument, 'keydown', handleKeyDown)];
222
+ releaseSiblings = () => inerted.splice(0).forEach(releaseInert);
223
+ const cleanups = [
224
+ installFocusHistory(doc),
225
+ on(doc, 'keydown', handleKeyDown),
226
+ // Remember where focus last was inside, for the scope below to hand focus back to.
227
+ on(target, 'focusin', (event) => {
228
+ const origin = event.composedPath()[0] ?? event.target;
229
+ if (origin instanceof HTMLElement)
230
+ lastFocusedInside = origin;
231
+ }),
232
+ // A focused element that is disabled or removed drops focus with no new target; it is
233
+ // still the best place to return to if it comes back.
234
+ on(target, 'focusout', (event) => {
235
+ const origin = event.composedPath()[0] ?? event.target;
236
+ if (!event.relatedTarget && origin instanceof HTMLElement)
237
+ lastFocusedInside = origin;
238
+ })
239
+ ];
89
240
  $effect(() => {
90
241
  const active = options.isActive();
91
242
  if (!active)
92
243
  return;
244
+ // The newest active scope is the last one: a scope that becomes active again after the
245
+ // one above it closed is the next to receive focus.
246
+ const position = scopes.indexOf(record);
247
+ if (position >= 0)
248
+ scopes.push(...scopes.splice(position, 1));
93
249
  // Wait for the intro to mount children before picking the initial target.
94
250
  let cancelled = false;
95
251
  void tick().then(() => {
96
- if (!cancelled && node && !node.contains(node.ownerDocument.activeElement)) {
252
+ if (cancelled || !node || initialFocusDone)
253
+ return;
254
+ initialFocusDone = true;
255
+ const current = getDeepActiveElement(node.ownerDocument);
256
+ if (!current || !composedContains(node, current))
97
257
  applyInitialFocus(node);
98
- }
99
258
  });
100
259
  if (options.inertSiblings?.()) {
101
260
  let current = target;
@@ -116,13 +275,16 @@ export function useFocusScope(options) {
116
275
  }
117
276
  return () => {
118
277
  cancelled = true;
119
- inerted.splice(0).forEach(releaseInert);
278
+ releaseSiblings();
120
279
  };
121
280
  });
122
281
  return () => {
123
282
  cleanups.forEach((cleanup) => cleanup());
124
- inerted.splice(0).forEach(releaseInert);
283
+ releaseSiblings();
125
284
  restore();
285
+ const at = scopes.indexOf(record);
286
+ if (at >= 0)
287
+ scopes.splice(at, 1);
126
288
  node = null;
127
289
  };
128
290
  });
@@ -1,12 +1,52 @@
1
+ import type { HoverIntentGroup } from './hoverIntent.js';
1
2
  type HoverActionHandlerOptions = {
3
+ /**
4
+ * Checked when the pointer enters (no delay starts while inactive), again once the delay
5
+ * elapses, and when it leaves; never when attaching.
6
+ */
2
7
  isActive: () => boolean;
3
- onMouseEnter?: () => void;
4
- onMouseLeave?: () => void;
5
- delay?: number;
8
+ /** Receives the `mouseenter` event that began the hover, also once a delay has elapsed. */
9
+ onMouseEnter?: (event: MouseEvent) => void;
10
+ /** Receives the `mouseleave` (or the `mouseout` that stood in for it) that ended the hover. */
11
+ onMouseLeave?: (event: MouseEvent) => void;
12
+ /**
13
+ * Milliseconds between the pointer entering and `onMouseEnter`. Read on every enter, so a
14
+ * getter or a function follows a changing value; a function also lets a class field read
15
+ * options its constructor has not bound yet.
16
+ */
17
+ delay?: number | (() => number | undefined);
18
+ /**
19
+ * Pointer types whose hover is ignored. Default `['touch']`: a tap fires compatibility mouse
20
+ * events, `mouseenter` included, that are not a hover.
21
+ */
22
+ ignorePointerTypes?: readonly string[];
23
+ /**
24
+ * Whether a disabled trigger (`:disabled`, `aria-disabled="true"`, or a `data-disabled` other
25
+ * than `"false"`) is skipped, on enter and again when the delay elapses. Default `true`.
26
+ * Tooltips opt out: they often explain why their trigger is disabled.
27
+ */
28
+ skipDisabled?: boolean;
29
+ /** Warm-up group: while it is warm for the trigger, the delay is skipped. */
30
+ group?: () => HoverIntentGroup | null | undefined;
31
+ /** Whether the owner's popup is open. While it is, the owner counts as open in `group`. */
32
+ isOpen?: () => boolean;
33
+ /** Whether a node is inside the owner's open popup; see `HoverIntentMember.contains`. */
34
+ contains?: (node: Node) => boolean;
6
35
  };
36
+ /**
37
+ * Delayed hover for a popup trigger. Hover is read from `mouseenter`/`mouseleave`, with the
38
+ * pointer type recorded from the pointer events before them, so a touch tap's compatibility
39
+ * events never count. A pending open needs the pointer still on the trigger when its delay ends:
40
+ * `mouseout` backs up a `mouseleave` that Chrome can drop when the hovered element restyles.
41
+ */
7
42
  export declare const useHoverAction: (props: HoverActionHandlerOptions) => {
8
- reference: (ref: HTMLElement) => (() => void) | null;
43
+ reference: (ref: HTMLElement) => () => void;
9
44
  destroy: () => void;
45
+ /**
46
+ * Cancels pending delayed enters. Owners call it when their state changes another way (a
47
+ * click, Escape), so a hover that began before the change cannot undo it afterwards.
48
+ */
49
+ cancel: () => void;
10
50
  readonly isHovered: boolean;
11
51
  };
12
52
  export {};