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
package/dist/i18n/zh.js CHANGED
@@ -185,8 +185,6 @@ export const zh = {
185
185
  playVideo: '播放视频',
186
186
  imageLoadError: '图片无法加载',
187
187
  dataTableLabel: '数据表',
188
- dataTableLoading: '正在加载表格数据',
189
- dataTableSaving: '正在保存表格更改',
190
188
  dataTableLoadingRows: '正在加载行',
191
189
  dataTableErrorTitle: '无法加载数据',
192
190
  dataTableErrorDescription: '数据无法加载。',
@@ -493,6 +491,24 @@ export const zh = {
493
491
  aiComposerMentions: '提及与引用',
494
492
  aiComposerFiles: '文件',
495
493
  aiComposerReferences: '引用',
494
+ // AIComposer chrome and file notices
495
+ aiComposerQueue: '将消息加入队列',
496
+ aiComposerSteering: '正在引导',
497
+ aiComposerQueuedFiles: (count) => `${count} 个文件`,
498
+ aiComposerSubmitFailed: '无法发送消息。',
499
+ aiComposerStopFailed: '无法停止回复。',
500
+ aiComposerUploadFailed: (name) => `无法上传 ${name}。`,
501
+ aiComposerVoiceFailed: '无法处理语音输入。',
502
+ aiComposerFileUnsupported: (name, types) => `不支持 ${name},请使用${types}`,
503
+ aiComposerFilesUnsupported: (count, types) => `不支持 ${count} 个文件,请使用${types}`,
504
+ aiComposerFileTooLarge: (name, size) => `${name} 太大,上限为 ${size}`,
505
+ aiComposerFileDuplicate: (name) => `${name} 已附加`,
506
+ aiComposerFileLimit: (max) => `最多可附加 ${max} 个文件`,
507
+ aiComposerFilesRejected: (count) => `${count} 个文件无法附加`,
508
+ aiComposerFileTypeImages: '图片',
509
+ aiComposerFileTypeVideos: '视频',
510
+ aiComposerFileTypeAudio: '音频',
511
+ aiComposerFileTypeText: '文本文件',
496
512
  // AI 模型选择器
497
513
  aiModelSelectorPlaceholder: '选择模型',
498
514
  aiModelSelectorSearch: '搜索模型...',
@@ -504,6 +520,16 @@ export const zh = {
504
520
  aiThreadTranscript: '对话记录',
505
521
  aiThreadScrollToLatest: '滚动到最新消息',
506
522
  aiChatConnecting: '正在连接聊天',
523
+ // AI thread rows, follow-ups and message action errors
524
+ aiThreadGreeting: '今天有什么可以帮你?',
525
+ aiThreadRetry: '重试',
526
+ aiThreadSources: '来源',
527
+ aiThreadFollowUps: '推荐的后续问题',
528
+ aiThreadQuestionFailed: '无法完成该提问请求。',
529
+ aiMessageCopyFailed: '无法复制此消息。',
530
+ aiMessageCopyCallbackFailed: '消息已复制,但复制操作失败。',
531
+ aiMessageEditFailed: '无法编辑此消息。',
532
+ aiMessageRetryFailed: '无法重试此消息。',
507
533
  // AI 向用户提问
508
534
  aiAskTitle: '回答请求',
509
535
  aiAskSubmitting: '正在提交...',
@@ -524,6 +550,53 @@ export const zh = {
524
550
  aiReasoningThinking: '思考中…',
525
551
  aiReasoningFewSeconds: '思考了几秒钟',
526
552
  aiReasoningDuration: (seconds) => `思考了 ${seconds} 秒`,
553
+ // AI 富文本对话块(工具状态、值、耗时、问题、对话目录)
554
+ aiToolStatusPending: '等待中',
555
+ aiToolStatusRunning: '运行中',
556
+ aiToolStatusStreaming: '准备中',
557
+ aiToolStatusSuccess: '已完成',
558
+ aiToolStatusError: '失败',
559
+ aiToolStatusCancelled: '已取消',
560
+ aiToolStatusAwaitingApproval: '等待批准',
561
+ aiToolStatusApproved: '已批准',
562
+ aiToolStatusDenied: '已拒绝',
563
+ aiToolGroupSummary: (titles, count) => `${titles} · ${count} 次调用`,
564
+ aiToolMoreTools: (count) => `另外 ${count} 个`,
565
+ aiToolShowAll: '显示全部',
566
+ aiToolShowLess: '收起',
567
+ aiToolValueItems: (count) => `${count} 项`,
568
+ aiToolValueKeys: (count) => `${count} 个键`,
569
+ aiToolValueMore: (count) => `还有 ${count} 项`,
570
+ aiToolValueEmptyArray: '空数组',
571
+ aiToolValueEmptyObject: '空对象',
572
+ aiToolValueCircular: '循环引用',
573
+ aiToolValueMaxDepth: '已达到最大深度',
574
+ aiToolValueInvalidDate: '无效日期',
575
+ aiToolValueUnreadable: '无法读取的值',
576
+ aiElapsedUnderSecond: '不到 1 秒',
577
+ aiElapsedSeconds: (seconds) => `${seconds} 秒`,
578
+ aiElapsedMinutes: (minutes, seconds) => `${minutes} 分 ${seconds} 秒`,
579
+ aiElapsedHours: (hours, minutes) => `${hours} 小时 ${minutes} 分`,
580
+ aiReasoningUnderSecond: '思考了不到 1 秒',
581
+ aiReasoningDurationLong: (elapsed) => `思考了 ${elapsed}`,
582
+ aiAskPlaceholder: '输入你的回答…',
583
+ aiAskOther: '其他…',
584
+ aiAskOtherPlaceholder: '描述你的回答',
585
+ aiAskSkip: '跳过',
586
+ aiAskRequiredMarker: '必填',
587
+ aiAskSkipped: '已跳过',
588
+ aiAskSummaryTitle: '你的回答',
589
+ aiAskSubmitFailed: '无法提交回答。',
590
+ aiAskDiscardFailed: '无法放弃这些问题。',
591
+ aiAskFileType: '部分文件不符合允许的类型。',
592
+ aiAskFileSize: '部分文件超过了允许的大小。',
593
+ aiAskFileLimit: '此问题选择的文件过多。',
594
+ aiAskFileDuplicate: '部分文件已被选择。',
595
+ aiAskFileRejected: '部分文件无法添加。',
596
+ aiThreadTocTurn: (turn, total) => `第 ${turn} 轮,共 ${total} 轮`,
597
+ aiThreadTocMoreFiles: (count) => `还有 ${count} 个`,
598
+ aiThreadTocScrollTo: (title) => `跳转到 ${title}`,
599
+ aiThreadTocFiles: (count) => `${count} 个文件`,
527
600
  // AI 上下文窗口
528
601
  aiContextTitle: '上下文窗口',
529
602
  aiContextRemaining: (tokens) => `剩余 ${tokens} 个 token`,
@@ -532,5 +605,30 @@ export const zh = {
532
605
  aiContextReasoning: '推理',
533
606
  aiContextCachedInput: '缓存输入',
534
607
  aiContextUsed: '已使用',
535
- aiContextUsage: (used, maximum, remaining) => `上下文使用情况:已使用 ${used} / ${maximum} 个 token。剩余 ${remaining} 个 token。`
608
+ aiContextUsage: (used, maximum, remaining) => `上下文使用情况:已使用 ${used} / ${maximum} 个 token。剩余 ${remaining} 个 token。`,
609
+ // 密码输入
610
+ passwordTooShort: (min) => `密码至少需要 ${min} 个字符`,
611
+ // 计量器
612
+ meter: '计量器',
613
+ meterSegment: (index, count) => `第 ${index} 段,共 ${count} 段`,
614
+ progressIndeterminate: '进度不确定',
615
+ // 字段验证
616
+ fieldRequired: '此字段为必填项',
617
+ fieldMustBeChecked: '请勾选此框以继续',
618
+ fieldMustBeOn: '请开启此选项以继续',
619
+ fieldInvalid: '请输入有效的值',
620
+ fieldInvalidEmail: '请输入有效的电子邮件地址',
621
+ fieldInvalidUrl: '请输入有效的网址',
622
+ fieldTooShort: (min) => `请至少输入 ${min} 个字符`,
623
+ fieldTooLong: (max) => `最多只能输入 ${max} 个字符`,
624
+ fieldRangeUnderflow: (min) => `请输入大于或等于 ${min} 的值`,
625
+ fieldRangeOverflow: (max) => `请输入小于或等于 ${max} 的值`,
626
+ fieldIncomplete: (length) => `请输入全部 ${length} 个字符`,
627
+ // Combobox
628
+ resultsCount: (count) => `有 ${count} 个结果可用`,
629
+ tags: '标签',
630
+ // CheckboxesInput
631
+ selectAll: '全选',
632
+ // PinInput
633
+ oneTimeCode: '一次性验证码'
536
634
  };
@@ -39,6 +39,13 @@ export const applyGeometryEngine = ({ addBase, addUtilities }) => {
39
39
  md: 'var(--row-height-md)',
40
40
  lg: 'var(--row-height-lg)'
41
41
  }),
42
+ // A control height as a floor, for rows that may wrap (a small menu row: a control tall,
43
+ // growing with a description).
44
+ ...sizedUtilities('min-h-control', 'min-height', {
45
+ sm: 'var(--control-height-sm)',
46
+ md: 'var(--control-height-md)',
47
+ lg: 'var(--control-height-lg)'
48
+ }),
42
49
  ...sizedUtilities('min-h-row', 'min-height', {
43
50
  sm: 'var(--row-height-sm)',
44
51
  md: 'var(--row-height-md)',
@@ -160,6 +160,37 @@ export const applyGlobalEngine = (api, options) => {
160
160
  'border-selected': stateUtility('border-color', 'selected'),
161
161
  'ring-selected': stateUtility('--tw-ring-color', 'selected')
162
162
  }, stateOptions);
163
+ // SCROLL LOCK — dialogs and popovers lock the page by putting `data-entasis-scroll-lock` on
164
+ // `<html>`, never by writing inline styles, so a lock held by another library on the same
165
+ // element is neither restored over nor released early. The value is empty while the lock
166
+ // hides a classic scrollbar: `scrollbar-gutter: stable` then keeps its room and
167
+ // `--entasis-scrollbar-width` carries its width for `position: fixed` bars. `padding` is the
168
+ // same lock after the lock measured that the gutter did not hold (an unsupported property, or
169
+ // a viewport with a custom `::-webkit-scrollbar`): the scrollbar's width is padded instead.
170
+ // `uncompensated` marks a page that reserves the gutter itself or has no classic scrollbar,
171
+ // which would otherwise gain a gutter it never had.
172
+ const scrollLock = '[data-entasis-scroll-lock]';
173
+ const scrollLockGutter = `${scrollLock}:not([data-entasis-scroll-lock='uncompensated']):not([data-entasis-scroll-lock='padding'])`;
174
+ addBase({
175
+ // `!important`: base-layer rules lose to a page's unlayered `html { overflow-y: scroll }`
176
+ // and to an outside library's inline `overflow`, and the lock has to hold against both.
177
+ [scrollLock]: { overflow: 'hidden !important' },
178
+ [scrollLockGutter]: { 'scrollbar-gutter': 'stable !important' },
179
+ [`${scrollLock}[data-entasis-scroll-lock='padding']`]: {
180
+ 'padding-inline-end': 'var(--entasis-scrollbar-width, 0px)'
181
+ },
182
+ // The keyboard overlap from the visual viewport (see Theme); `0px` until a Theme measures it.
183
+ html: { '--keyboard-inset': '0px' }
184
+ });
185
+ // DRAG AND DROP — the dragged item's dim and the empty-list drop tint, as plain rules rather
186
+ // than a `<style>` the list attachment would inject (a strict CSP would block it without a
187
+ // nonce). The tint sits in `:where()` (zero specificity) so any class on the container wins.
188
+ addBase({
189
+ '[data-dnd-dragging]': { opacity: '0.4' },
190
+ ':where([data-dnd-over="true"]:not(:has([data-dnd-item])))': {
191
+ 'background-color': 'color-mix(in oklab, var(--color-primary, currentColor) 6%, transparent)'
192
+ }
193
+ });
163
194
  // DYNAMIC WINDOW UTILITIES
164
195
  addUtilities({
165
196
  '.h-window': {
@@ -1 +1,2 @@
1
1
  export * from './theme.js';
2
+ export type { OpenChangeDetails, OpenChangeHandler, OpenChangeInteraction, OpenChangeReason } from '../utils/openChange.js';
@@ -1 +1 @@
1
- export declare const typesDescription = "\n# Shared theme types\n\nImport from `entasis/types`.\n\nColors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.\n";
1
+ export declare const typesDescription = "\n# Shared theme types\n\nImport from `entasis/types`.\n\nColors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.\n\n## Open-change details\n\nEvery overlay's `onOpenChange(open, details)` receives `OpenChangeDetails` as its second argument, and runs before the state changes:\n\n- `reason` (`OpenChangeReason`): `'trigger-press'`, `'trigger-hover'`, `'trigger-focus'`, `'outside-press'`, `'escape-key'`, `'close-watcher'` (the Android Back gesture), `'close-press'`, `'item-press'`, `'list-navigation'`, `'input-change'` (typing in a combobox input), `'focus-out'`, `'swipe'`, `'trigger-unmount'`, `'find-in-page'` (the browser's find-in-page opened a disclosure that hides its content until found) or `'imperative-action'`.\n- `event`: the DOM event behind the change, when there is one.\n- `trigger`: the trigger element involved, when a trigger caused it.\n- `interaction` (`OpenChangeInteraction`): `'mouse'`, `'touch'`, `'pen'`, `'keyboard'` or `'programmatic'`.\n- `cancel()` keeps the overlay as it was and leaves the event untouched (a cancelled Escape is not `defaultPrevented`); `isCanceled` reports it.\n\n`OpenChangeHandler` is the `(open, details) => void` signature itself. Inside the callback, `open` still holds the previous state.\n\n```ts\nimport type { OpenChangeDetails } from 'entasis/types';\n\n// Keeps an editor open when the user presses outside it with unsaved text.\nexport function keepDraftOpen(draft: () => string) {\n\treturn (open: boolean, details: OpenChangeDetails) => {\n\t\tif (!open && details.reason === 'outside-press' && draft()) details.cancel();\n\t};\n}\n```\n";
@@ -4,4 +4,27 @@ export const typesDescription = `
4
4
  Import from \`entasis/types\`.
5
5
 
6
6
  Colors names semantic palette roles. Sizes selects small, normal, or large component geometry. Density uses a separate compact/normal/comfortable scale for internal whitespace, so a density value can never be passed where a size is expected. The module also exports theme color paths, typography paths, transition easing, style types, and deepMerge for composing nested theme values.
7
+
8
+ ## Open-change details
9
+
10
+ Every overlay's \`onOpenChange(open, details)\` receives \`OpenChangeDetails\` as its second argument, and runs before the state changes:
11
+
12
+ - \`reason\` (\`OpenChangeReason\`): \`'trigger-press'\`, \`'trigger-hover'\`, \`'trigger-focus'\`, \`'outside-press'\`, \`'escape-key'\`, \`'close-watcher'\` (the Android Back gesture), \`'close-press'\`, \`'item-press'\`, \`'list-navigation'\`, \`'input-change'\` (typing in a combobox input), \`'focus-out'\`, \`'swipe'\`, \`'trigger-unmount'\`, \`'find-in-page'\` (the browser's find-in-page opened a disclosure that hides its content until found) or \`'imperative-action'\`.
13
+ - \`event\`: the DOM event behind the change, when there is one.
14
+ - \`trigger\`: the trigger element involved, when a trigger caused it.
15
+ - \`interaction\` (\`OpenChangeInteraction\`): \`'mouse'\`, \`'touch'\`, \`'pen'\`, \`'keyboard'\` or \`'programmatic'\`.
16
+ - \`cancel()\` keeps the overlay as it was and leaves the event untouched (a cancelled Escape is not \`defaultPrevented\`); \`isCanceled\` reports it.
17
+
18
+ \`OpenChangeHandler\` is the \`(open, details) => void\` signature itself. Inside the callback, \`open\` still holds the previous state.
19
+
20
+ \`\`\`ts
21
+ import type { OpenChangeDetails } from './index.ts';
22
+
23
+ // Keeps an editor open when the user presses outside it with unsaved text.
24
+ export function keepDraftOpen(draft: () => string) {
25
+ return (open: boolean, details: OpenChangeDetails) => {
26
+ if (!open && details.reason === 'outside-press' && draft()) details.cancel();
27
+ };
28
+ }
29
+ \`\`\`
7
30
  `;
@@ -0,0 +1,16 @@
1
+ type NonceSource = () => string | undefined;
2
+ /** Registers where the nonce comes from; the returned function removes the registration. */
3
+ export declare function registerCspNonce(source: NonceSource): () => void;
4
+ /**
5
+ * The nonce of the most recently mounted `<Theme>` that has one, or `undefined` without a Theme
6
+ * or a nonce. Client-only: on the server a module-level value would leak between requests.
7
+ */
8
+ export declare function getCspNonce(): string | undefined;
9
+ /**
10
+ * Stamps `nonce` (default: `getCspNonce()`) on a script, style or link element before it is
11
+ * attached, so a CSP that only allows nonced inline code accepts it. Returns the element.
12
+ */
13
+ export declare function applyCspNonce<E extends Element>(element: E, nonce?: string | undefined): E;
14
+ /** ` nonce="…"` for markup built as a string, or `''` without a nonce. */
15
+ export declare const nonceAttribute: (nonce: string | undefined) => string;
16
+ export {};
@@ -0,0 +1,39 @@
1
+ // The Content-Security-Policy nonce of the page, for code that injects a `<script>` or `<style>`
2
+ // outside a component (CDN loaders, runtime stylesheets). `<Theme nonce>` registers its value
3
+ // here while it is mounted, the way `registerActiveTheme` exposes the Theme to plain modules;
4
+ // components that render markup (BeforeHydratation) read it from the Theme directly.
5
+ const sources = [];
6
+ /** Registers where the nonce comes from; the returned function removes the registration. */
7
+ export function registerCspNonce(source) {
8
+ sources.push(source);
9
+ return () => {
10
+ const index = sources.lastIndexOf(source);
11
+ if (index >= 0)
12
+ sources.splice(index, 1);
13
+ };
14
+ }
15
+ /**
16
+ * The nonce of the most recently mounted `<Theme>` that has one, or `undefined` without a Theme
17
+ * or a nonce. Client-only: on the server a module-level value would leak between requests.
18
+ */
19
+ export function getCspNonce() {
20
+ for (let index = sources.length - 1; index >= 0; index -= 1) {
21
+ const nonce = sources[index]();
22
+ if (nonce)
23
+ return nonce;
24
+ }
25
+ return undefined;
26
+ }
27
+ /**
28
+ * Stamps `nonce` (default: `getCspNonce()`) on a script, style or link element before it is
29
+ * attached, so a CSP that only allows nonced inline code accepts it. Returns the element.
30
+ */
31
+ export function applyCspNonce(element, nonce = getCspNonce()) {
32
+ if (nonce)
33
+ element.setAttribute('nonce', nonce);
34
+ return element;
35
+ }
36
+ /** Escapes a value for a double-quoted HTML attribute. */
37
+ const escapeAttribute = (value) => value.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
38
+ /** ` nonce="…"` for markup built as a string, or `''` without a nonce. */
39
+ export const nonceAttribute = (nonce) => nonce ? ` nonce="${escapeAttribute(nonce)}"` : '';
@@ -7,7 +7,7 @@
7
7
  * "last class wins" rule holds for them too:
8
8
  * - `raised-*` elevation (bordered) and `lift-*` (shadow only)
9
9
  * - `h-control-*` control heights
10
- * - `h-row-*` / `min-h-row-*` row densities
10
+ * - `h-row-*` / `min-h-row-*` row densities, `min-h-control-*` control-height floors
11
11
  * - `size-icon-*` icon sizes
12
12
  * - `min-size-hit-*` minimum hit areas
13
13
  * - `ps-indent-*` nesting indents
@@ -53,6 +53,9 @@ export declare const mergeConfig: {
53
53
  'min-h-row': {
54
54
  'min-h-row': string[];
55
55
  }[];
56
+ 'min-h-control': {
57
+ 'min-h-control': string[];
58
+ }[];
56
59
  'size-icon': {
57
60
  'size-icon': string[];
58
61
  }[];
@@ -135,6 +138,7 @@ export declare const mergeConfig: {
135
138
  size: string[];
136
139
  'min-size-hit': string[];
137
140
  'min-h-row': string[];
141
+ 'min-h-control': string[];
138
142
  'min-w': string[];
139
143
  'min-h': string[];
140
144
  'ps-indent': string[];
@@ -7,7 +7,7 @@
7
7
  * "last class wins" rule holds for them too:
8
8
  * - `raised-*` elevation (bordered) and `lift-*` (shadow only)
9
9
  * - `h-control-*` control heights
10
- * - `h-row-*` / `min-h-row-*` row densities
10
+ * - `h-row-*` / `min-h-row-*` row densities, `min-h-control-*` control-height floors
11
11
  * - `size-icon-*` icon sizes
12
12
  * - `min-size-hit-*` minimum hit areas
13
13
  * - `ps-indent-*` nesting indents
@@ -64,6 +64,7 @@ export const mergeConfig = {
64
64
  'h-control': [{ 'h-control': ['sm', 'md', 'lg'] }],
65
65
  'h-row': [{ 'h-row': ['sm', 'md', 'lg'] }],
66
66
  'min-h-row': [{ 'min-h-row': ['sm', 'md', 'lg'] }],
67
+ 'min-h-control': [{ 'min-h-control': ['sm', 'md', 'lg'] }],
67
68
  'size-icon': [{ 'size-icon': ['xs', 'sm', 'md', 'lg', 'xl'] }],
68
69
  'min-size-hit': [{ 'min-size-hit': ['sm', 'md', 'lg'] }],
69
70
  'ps-indent': [{ 'ps-indent': ['sm', 'md', 'lg', 'xl'] }],
@@ -105,10 +106,11 @@ export const mergeConfig = {
105
106
  w: ['size-icon'],
106
107
  size: ['h-control', 'h-row', 'size-icon'],
107
108
  // `min-size-hit-*` sets `min-width` + `min-height`, `min-h-row-*` only the height.
108
- 'min-size-hit': ['min-w', 'min-h', 'min-h-row'],
109
- 'min-h-row': ['min-h', 'min-size-hit'],
109
+ 'min-size-hit': ['min-w', 'min-h', 'min-h-row', 'min-h-control'],
110
+ 'min-h-row': ['min-h', 'min-size-hit', 'min-h-control'],
111
+ 'min-h-control': ['min-h', 'min-size-hit', 'min-h-row'],
110
112
  'min-w': ['min-size-hit'],
111
- 'min-h': ['min-size-hit', 'min-h-row'],
113
+ 'min-h': ['min-size-hit', 'min-h-row', 'min-h-control'],
112
114
  // `ps-indent-*` sets `padding-inline-start`.
113
115
  'ps-indent': ['ps', 'px', 'p'],
114
116
  ps: ['ps-indent'],
@@ -1,5 +1,30 @@
1
1
  export declare const focusableSelector: string;
2
+ /**
3
+ * Whether the element can take focus right now: a focusable kind of element that is enabled,
4
+ * rendered and not inside an `inert`, `hidden` or `aria-hidden` subtree. Unlike `isTabbable` it
5
+ * accepts `tabindex="-1"`, the kind of target focus restoration may land on.
6
+ */
7
+ export declare function isFocusable(element: HTMLElement): boolean;
2
8
  export declare function isTabbable(element: HTMLElement): boolean;
9
+ /**
10
+ * The element that really has focus: `root.activeElement` stops at a shadow host, so this looks
11
+ * inside open shadow roots until it reaches the focused element. Like `activeElement`, it is
12
+ * `<body>` when nothing is focused. It is an `Element`, not only an `HTMLElement`: an SVG element
13
+ * with a `tabindex` takes focus too, and must not read as "nothing is focused".
14
+ */
15
+ export declare function getDeepActiveElement(root?: Document | ShadowRoot): Element | null;
16
+ /**
17
+ * `container.contains(node)` across shadow boundaries: an element inside a shadow root belongs to
18
+ * the container when its host does.
19
+ */
20
+ export declare function composedContains(container: Node, node: Node | null): boolean;
21
+ /**
22
+ * Whether the page runs in WebKit (Safari, and every browser on iOS) rather than Chromium or
23
+ * Gecko. Safari is the only engine whose `navigator.vendor` is Apple's.
24
+ */
25
+ export declare function isWebKit(): boolean;
26
+ /** Whether typing goes into the element: a text input, a textarea or an editable region. */
27
+ export declare function isTextField(element: Element | null): element is HTMLElement;
3
28
  /** Tabbable descendants in tab order (positive tabindex first, one radio per group). */
4
29
  export declare function getTabbableElements(node: HTMLElement): HTMLElement[];
5
30
  export declare const getFirstTabbable: (node: HTMLElement) => HTMLElement;
@@ -8,3 +33,12 @@ export declare const getFirstTabbable: (node: HTMLElement) => HTMLElement;
8
33
  * `[data-autofocus]` target, else the first tabbable, else the container itself.
9
34
  */
10
35
  export declare function resolveInitialFocus(node: HTMLElement): HTMLElement;
36
+ /**
37
+ * The first tabbable element that follows `reference` in document order, skipping its own
38
+ * descendants and everything inside `exclude`. `boundary` limits the search to one subtree (a
39
+ * parent popover's panel). `null` when nothing follows.
40
+ */
41
+ export declare function getTabbableAfter(reference: HTMLElement, { exclude, boundary }?: {
42
+ exclude?: HTMLElement | null;
43
+ boundary?: HTMLElement | null;
44
+ }): HTMLElement | null;
@@ -16,6 +16,23 @@ export const focusableSelector = [
16
16
  '[contenteditable]:not([contenteditable="false"])',
17
17
  '[tabindex]'
18
18
  ].join(',');
19
+ /**
20
+ * Whether the element can take focus right now: a focusable kind of element that is enabled,
21
+ * rendered and not inside an `inert`, `hidden` or `aria-hidden` subtree. Unlike `isTabbable` it
22
+ * accepts `tabindex="-1"`, the kind of target focus restoration may land on.
23
+ */
24
+ export function isFocusable(element) {
25
+ if (!element.isConnected || !element.matches(focusableSelector))
26
+ return false;
27
+ if (element.matches(':disabled'))
28
+ return false;
29
+ if (element.closest('[inert], [hidden], [aria-hidden="true"]'))
30
+ return false;
31
+ if (element.getClientRects().length === 0)
32
+ return false;
33
+ const style = getComputedStyle(element);
34
+ return style.visibility !== 'hidden' && style.visibility !== 'collapse';
35
+ }
19
36
  export function isTabbable(element) {
20
37
  if (element.tabIndex < 0 || element.matches(':disabled'))
21
38
  return false;
@@ -26,6 +43,59 @@ export function isTabbable(element) {
26
43
  const style = getComputedStyle(element);
27
44
  return style.visibility !== 'hidden' && style.visibility !== 'collapse';
28
45
  }
46
+ /**
47
+ * The element that really has focus: `root.activeElement` stops at a shadow host, so this looks
48
+ * inside open shadow roots until it reaches the focused element. Like `activeElement`, it is
49
+ * `<body>` when nothing is focused. It is an `Element`, not only an `HTMLElement`: an SVG element
50
+ * with a `tabindex` takes focus too, and must not read as "nothing is focused".
51
+ */
52
+ export function getDeepActiveElement(root = document) {
53
+ let active = root.activeElement;
54
+ while (active?.shadowRoot?.activeElement)
55
+ active = active.shadowRoot.activeElement;
56
+ return active;
57
+ }
58
+ /**
59
+ * `container.contains(node)` across shadow boundaries: an element inside a shadow root belongs to
60
+ * the container when its host does.
61
+ */
62
+ export function composedContains(container, node) {
63
+ let current = node;
64
+ while (current) {
65
+ if (current === container)
66
+ return true;
67
+ current = current.parentNode ?? current.host ?? null;
68
+ }
69
+ return false;
70
+ }
71
+ /**
72
+ * Whether the page runs in WebKit (Safari, and every browser on iOS) rather than Chromium or
73
+ * Gecko. Safari is the only engine whose `navigator.vendor` is Apple's.
74
+ */
75
+ export function isWebKit() {
76
+ return typeof navigator !== 'undefined' && /Apple/i.test(navigator.vendor ?? '');
77
+ }
78
+ const TEXT_INPUT_TYPES = new Set([
79
+ 'text',
80
+ 'search',
81
+ 'email',
82
+ 'url',
83
+ 'tel',
84
+ 'password',
85
+ 'number',
86
+ ''
87
+ ]);
88
+ /** Whether typing goes into the element: a text input, a textarea or an editable region. */
89
+ export function isTextField(element) {
90
+ if (!(element instanceof HTMLElement))
91
+ return false;
92
+ if (element instanceof HTMLTextAreaElement)
93
+ return true;
94
+ if (element instanceof HTMLInputElement)
95
+ return TEXT_INPUT_TYPES.has(element.type);
96
+ return (element.isContentEditable === true ||
97
+ element.matches('[contenteditable]:not([contenteditable="false"])'));
98
+ }
29
99
  /** Tabbable descendants in tab order (positive tabindex first, one radio per group). */
30
100
  export function getTabbableElements(node) {
31
101
  const visible = Array.from(node.querySelectorAll(focusableSelector)).filter(isTabbable);
@@ -63,3 +133,26 @@ export function resolveInitialFocus(node) {
63
133
  const tabbable = getTabbableElements(node);
64
134
  return (tabbable.find((element) => !element.closest('[data-autofocus-skip]')) ?? tabbable[0] ?? node);
65
135
  }
136
+ /**
137
+ * The first tabbable element that follows `reference` in document order, skipping its own
138
+ * descendants and everything inside `exclude`. `boundary` limits the search to one subtree (a
139
+ * parent popover's panel). `null` when nothing follows.
140
+ */
141
+ export function getTabbableAfter(reference, { exclude, boundary = reference.ownerDocument.body } = {}) {
142
+ if (!boundary)
143
+ return null;
144
+ let next = null;
145
+ for (const element of getTabbableElements(boundary)) {
146
+ if (exclude && composedContains(exclude, element))
147
+ continue;
148
+ const position = reference.compareDocumentPosition(element);
149
+ if (position & Node.DOCUMENT_POSITION_CONTAINED_BY)
150
+ continue;
151
+ if (!(position & Node.DOCUMENT_POSITION_FOLLOWING))
152
+ continue;
153
+ // The tabbable list puts positive tabindex first; the nearest one in the page wins here.
154
+ if (!next || next.compareDocumentPosition(element) & Node.DOCUMENT_POSITION_PRECEDING)
155
+ next = element;
156
+ }
157
+ return next;
158
+ }
@@ -0,0 +1,21 @@
1
+ /** How many elements are remembered per document. */
2
+ export declare const FOCUS_HISTORY_SIZE = 20;
3
+ /** Remembers an element as the newest entry of a document's history. */
4
+ export declare function recordFocus(element: HTMLElement, doc?: Document): void;
5
+ /**
6
+ * Starts remembering focus in `doc`. Calls nest: the listener stays until every caller has run
7
+ * the function this returns. Safe to call on the server, where it does nothing.
8
+ */
9
+ export declare function installFocusHistory(doc?: Document | undefined): () => void;
10
+ /** The remembered elements of `doc` that are still connected, newest first. */
11
+ export declare function getFocusHistory(doc?: Document): HTMLElement[];
12
+ /**
13
+ * The most recently focused element that can take focus again: connected, enabled, rendered and
14
+ * not inside `exclude` (the overlay that is closing) or an `inert` subtree. `null` when none is.
15
+ */
16
+ export declare function findFocusFallback(doc: Document, { exclude, accept }?: {
17
+ exclude?: Node | null;
18
+ accept?: (element: HTMLElement) => boolean;
19
+ }): HTMLElement | null;
20
+ /** Forgets everything remembered for `doc`. For tests. */
21
+ export declare function clearFocusHistory(doc?: Document): void;
@@ -0,0 +1,99 @@
1
+ // A short memory of where focus has been, so an overlay whose opener is gone (a menu item that
2
+ // opened a dialog and left with the menu) can hand focus to the most recent element that is still
3
+ // on the page instead of dropping it on <body>. `<Theme>` installs the listener for its document;
4
+ // a focus scope installs it for its own document too, so an overlay in an iframe is covered.
5
+ import { composedContains, isFocusable } from './focus.js';
6
+ /** How many elements are remembered per document. */
7
+ export const FOCUS_HISTORY_SIZE = 20;
8
+ const histories = new WeakMap();
9
+ /** Remembers an element as the newest entry of a document's history. */
10
+ export function recordFocus(element, doc = element.ownerDocument) {
11
+ const history = histories.get(doc);
12
+ if (!history || element === doc.body || element === doc.documentElement)
13
+ return;
14
+ const { entries } = history;
15
+ const newest = entries.at(-1)?.deref();
16
+ if (newest === element)
17
+ return;
18
+ // Drop an earlier entry for the same element and every entry that has been collected.
19
+ const kept = entries.filter((entry) => {
20
+ const value = entry.deref();
21
+ return value !== undefined && value !== element;
22
+ });
23
+ kept.push(new WeakRef(element));
24
+ history.entries = kept.slice(-FOCUS_HISTORY_SIZE);
25
+ }
26
+ /**
27
+ * Starts remembering focus in `doc`. Calls nest: the listener stays until every caller has run
28
+ * the function this returns. Safe to call on the server, where it does nothing.
29
+ */
30
+ export function installFocusHistory(doc = typeof document === 'undefined' ? undefined : document) {
31
+ if (!doc)
32
+ return () => { };
33
+ let history = histories.get(doc);
34
+ if (!history) {
35
+ const onFocusIn = (event) => {
36
+ // Retargeted at the document when the focus is inside a shadow root: use the real target.
37
+ const target = event.composedPath()[0] ?? event.target;
38
+ if (target instanceof HTMLElement)
39
+ recordFocus(target, doc);
40
+ };
41
+ doc.addEventListener('focusin', onFocusIn, true);
42
+ history = {
43
+ entries: [],
44
+ installs: 0,
45
+ stop: () => doc.removeEventListener('focusin', onFocusIn, true)
46
+ };
47
+ histories.set(doc, history);
48
+ // Whatever has focus now is the first thing worth remembering.
49
+ const active = doc.activeElement;
50
+ if (active instanceof HTMLElement)
51
+ recordFocus(active, doc);
52
+ }
53
+ history.installs += 1;
54
+ const owned = history;
55
+ let released = false;
56
+ return () => {
57
+ if (released)
58
+ return;
59
+ released = true;
60
+ owned.installs -= 1;
61
+ if (owned.installs > 0)
62
+ return;
63
+ owned.stop();
64
+ histories.delete(doc);
65
+ };
66
+ }
67
+ /** The remembered elements of `doc` that are still connected, newest first. */
68
+ export function getFocusHistory(doc = document) {
69
+ const entries = histories.get(doc)?.entries ?? [];
70
+ const live = [];
71
+ for (const entry of entries) {
72
+ const element = entry.deref();
73
+ if (element?.isConnected)
74
+ live.push(element);
75
+ }
76
+ return live.reverse();
77
+ }
78
+ /**
79
+ * The most recently focused element that can take focus again: connected, enabled, rendered and
80
+ * not inside `exclude` (the overlay that is closing) or an `inert` subtree. `null` when none is.
81
+ */
82
+ export function findFocusFallback(doc, { exclude, accept } = {}) {
83
+ for (const element of getFocusHistory(doc)) {
84
+ if (exclude && composedContains(exclude, element))
85
+ continue;
86
+ if (element.closest('[inert]') || !isFocusable(element))
87
+ continue;
88
+ if (accept && !accept(element))
89
+ continue;
90
+ return element;
91
+ }
92
+ return null;
93
+ }
94
+ /** Forgets everything remembered for `doc`. For tests. */
95
+ export function clearFocusHistory(doc = document) {
96
+ const history = histories.get(doc);
97
+ if (history)
98
+ history.entries = [];
99
+ }
@@ -0,0 +1,7 @@
1
+ type Handler<E extends Event> = (event: E) => unknown;
2
+ /**
3
+ * Runs `consumer` first, then `builtIn` unless the consumer called `event.preventDefault()`.
4
+ * Either side may be missing; the returned handler is always callable.
5
+ */
6
+ export declare function composeHandlers<E extends Event>(consumer: Handler<E> | null | undefined, builtIn: Handler<E> | null | undefined): (event: E) => void;
7
+ export {};
@@ -0,0 +1,14 @@
1
+ // Handler composition for components that wrap a consumer's handler around built-in behaviour.
2
+ // The rule (AGENTS.md proposed law 3): the consumer's handler runs first, on the same native
3
+ // event, and calling `event.preventDefault()` there cancels the built-in behaviour.
4
+ /**
5
+ * Runs `consumer` first, then `builtIn` unless the consumer called `event.preventDefault()`.
6
+ * Either side may be missing; the returned handler is always callable.
7
+ */
8
+ export function composeHandlers(consumer, builtIn) {
9
+ return (event) => {
10
+ consumer?.(event);
11
+ if (!event.defaultPrevented)
12
+ builtIn?.(event);
13
+ };
14
+ }