entasis 0.10.2 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (841) hide show
  1. package/README.md +1 -1
  2. package/dist/attachments/disclosurePanel.svelte.d.ts +84 -0
  3. package/dist/attachments/disclosurePanel.svelte.js +277 -0
  4. package/dist/attachments/portal.d.ts +17 -1
  5. package/dist/attachments/portal.js +39 -2
  6. package/dist/attachments/spinnerOverlay.svelte.js +12 -0
  7. package/dist/attachments/transitionSize.d.ts +6 -0
  8. package/dist/attachments/transitionSize.js +30 -0
  9. package/dist/components/AIAskUserQuestion/AIAskUserQuestion.svelte +131 -17
  10. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte +26 -6
  11. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFileStep.svelte.d.ts +6 -0
  12. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte +27 -53
  13. package/dist/components/AIAskUserQuestion/AIAskUserQuestionFooter.svelte.d.ts +3 -4
  14. package/dist/components/AIAskUserQuestion/AIAskUserQuestionHeader.svelte +19 -16
  15. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte +180 -21
  16. package/dist/components/AIAskUserQuestion/AIAskUserQuestionStep.svelte.d.ts +9 -1
  17. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte +56 -0
  18. package/dist/components/AIAskUserQuestion/AIAskUserQuestionSummary.svelte.d.ts +4 -0
  19. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.d.ts +1 -1
  20. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.mcp.js +26 -8
  21. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.props.d.ts +62 -5
  22. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.d.ts +42 -0
  23. package/dist/components/AIAskUserQuestion/aiAskUserQuestion.theme.js +53 -12
  24. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.d.ts +17 -1
  25. package/dist/components/AIAskUserQuestion/aiAskUserQuestionAnswers.js +56 -8
  26. package/dist/components/AIAskUserQuestion/index.d.ts +3 -1
  27. package/dist/components/AIAskUserQuestion/index.js +2 -0
  28. package/dist/components/AIAskUserQuestion/schemas.d.ts +44 -0
  29. package/dist/components/AIAskUserQuestion/schemas.js +10 -3
  30. package/dist/components/AIChat/AIChat.svelte +10 -0
  31. package/dist/components/AIChat/AIChat.svelte.d.ts +2 -2
  32. package/dist/components/AIChat/AIChatComposerSurface.svelte +23 -5
  33. package/dist/components/AIChat/AIChatComposerSurface.svelte.d.ts +5 -0
  34. package/dist/components/AIChat/AIChatSkeleton.svelte +29 -37
  35. package/dist/components/AIChat/AIChatSurface.svelte +30 -2
  36. package/dist/components/AIChat/AIChatSurface.svelte.d.ts +1 -1
  37. package/dist/components/AIChat/AIChatThreadSurface.svelte +11 -1
  38. package/dist/components/AIChat/AIChatThreadSurface.svelte.d.ts +3 -1
  39. package/dist/components/AIChat/aiChat.mcp.d.ts +1 -1
  40. package/dist/components/AIChat/aiChat.mcp.js +31 -15
  41. package/dist/components/AIChat/aiChat.props.d.ts +36 -10
  42. package/dist/components/AIChat/aiChat.theme.d.ts +9 -0
  43. package/dist/components/AIChat/aiChat.theme.js +21 -4
  44. package/dist/components/AIChat/aiChatSkeleton.props.d.ts +5 -0
  45. package/dist/components/AIChat/index.d.ts +1 -1
  46. package/dist/components/AIComposer/AIComposer.svelte +102 -5
  47. package/dist/components/AIComposer/AIComposer.svelte.d.ts +1 -0
  48. package/dist/components/AIComposer/AIComposerFooter.svelte +54 -12
  49. package/dist/components/AIComposer/AIComposerFooter.svelte.d.ts +2 -0
  50. package/dist/components/AIComposer/AIComposerQueue.svelte +8 -3
  51. package/dist/components/AIComposer/aiComposer.editor.theme.js +13 -2
  52. package/dist/components/AIComposer/aiComposer.mcp.d.ts +1 -1
  53. package/dist/components/AIComposer/aiComposer.mcp.js +15 -7
  54. package/dist/components/AIComposer/aiComposer.props.d.ts +27 -7
  55. package/dist/components/AIComposer/aiComposer.theme.d.ts +42 -3
  56. package/dist/components/AIComposer/aiComposer.theme.js +37 -5
  57. package/dist/components/AIComposer/aiComposerFileController.svelte.d.ts +20 -0
  58. package/dist/components/AIComposer/aiComposerFileController.svelte.js +75 -9
  59. package/dist/components/AIComposer/aiComposerSourceAdapter.js +22 -4
  60. package/dist/components/AIComposer/aiComposerSubmitController.svelte.d.ts +12 -0
  61. package/dist/components/AIComposer/aiComposerSubmitController.svelte.js +16 -6
  62. package/dist/components/AIContext/AIContext.svelte +7 -3
  63. package/dist/components/AIContext/aiContext.mcp.d.ts +1 -1
  64. package/dist/components/AIContext/aiContext.mcp.js +1 -1
  65. package/dist/components/AIContext/aiContext.props.d.ts +4 -1
  66. package/dist/components/AIContext/aiContext.theme.d.ts +3 -0
  67. package/dist/components/AIContext/aiContext.theme.js +7 -2
  68. package/dist/components/AIConversation/AIConversation.svelte.d.ts +2 -2
  69. package/dist/components/AIFilePreview/aiFilePreview.theme.js +1 -1
  70. package/dist/components/AIMarker/AIMarker.svelte +2 -0
  71. package/dist/components/AIMarker/aiMarker.mcp.d.ts +1 -1
  72. package/dist/components/AIMarker/aiMarker.mcp.js +2 -0
  73. package/dist/components/AIMarker/aiMarker.props.d.ts +3 -0
  74. package/dist/components/AIMarker/aiMarker.theme.js +2 -2
  75. package/dist/components/AIMessage/AIMessage.svelte +38 -16
  76. package/dist/components/AIMessage/aiMessage.mcp.d.ts +1 -1
  77. package/dist/components/AIMessage/aiMessage.mcp.js +20 -6
  78. package/dist/components/AIMessage/aiMessage.props.d.ts +18 -2
  79. package/dist/components/AIMessage/aiMessage.theme.d.ts +51 -6
  80. package/dist/components/AIMessage/aiMessage.theme.js +91 -32
  81. package/dist/components/AIMessageActions/AIMessageActions.svelte +19 -9
  82. package/dist/components/AIMessageActions/aiMessageActions.mcp.d.ts +1 -1
  83. package/dist/components/AIMessageActions/aiMessageActions.mcp.js +11 -3
  84. package/dist/components/AIMessageActions/aiMessageActions.theme.js +36 -9
  85. package/dist/components/AIModelSelector/AIModelSelector.svelte +25 -10
  86. package/dist/components/AIModelSelector/aiModelSelector.mcp.d.ts +1 -1
  87. package/dist/components/AIModelSelector/aiModelSelector.mcp.js +1 -1
  88. package/dist/components/AIModelSelector/aiModelSelector.theme.d.ts +3 -0
  89. package/dist/components/AIModelSelector/aiModelSelector.theme.js +7 -3
  90. package/dist/components/AIReasoning/AIReasoning.svelte +135 -38
  91. package/dist/components/AIReasoning/aiReasoning.mcp.d.ts +1 -1
  92. package/dist/components/AIReasoning/aiReasoning.mcp.js +11 -5
  93. package/dist/components/AIReasoning/aiReasoning.props.d.ts +15 -4
  94. package/dist/components/AIReasoning/aiReasoning.theme.d.ts +45 -0
  95. package/dist/components/AIReasoning/aiReasoning.theme.js +47 -7
  96. package/dist/components/AISuggestion/AISuggestion.svelte +2 -1
  97. package/dist/components/AISuggestion/AISuggestions.svelte +2 -1
  98. package/dist/components/AISuggestion/aiSuggestion.mcp.d.ts +1 -1
  99. package/dist/components/AISuggestion/aiSuggestion.mcp.js +8 -1
  100. package/dist/components/AISuggestion/aiSuggestion.props.d.ts +4 -1
  101. package/dist/components/AISuggestion/aiSuggestion.theme.js +1 -1
  102. package/dist/components/AISuggestion/aiSuggestions.props.d.ts +7 -0
  103. package/dist/components/AIThread/AIThread.svelte +378 -95
  104. package/dist/components/AIThread/AIThreadAskUserQuestion.svelte +1 -0
  105. package/dist/components/AIThread/AIThreadItems.svelte +266 -64
  106. package/dist/components/AIThread/AIThreadItems.svelte.d.ts +7 -3
  107. package/dist/components/AIThread/AIThreadMarker.svelte +8 -1
  108. package/dist/components/AIThread/AIThreadMarker.svelte.d.ts +1 -0
  109. package/dist/components/AIThread/aiThread.mcp.d.ts +1 -1
  110. package/dist/components/AIThread/aiThread.mcp.js +34 -20
  111. package/dist/components/AIThread/aiThread.props.d.ts +73 -8
  112. package/dist/components/AIThread/aiThread.theme.d.ts +78 -0
  113. package/dist/components/AIThread/aiThread.theme.js +108 -9
  114. package/dist/components/AIThread/index.d.ts +1 -1
  115. package/dist/components/AIThread/threadAskUserQuestion.d.ts +4 -1
  116. package/dist/components/AIThread/threadAskUserQuestion.js +8 -4
  117. package/dist/components/AIThread/threadRenderItems.d.ts +74 -3
  118. package/dist/components/AIThread/threadRenderItems.js +265 -77
  119. package/dist/components/AIThread/threadScrollController.d.ts +0 -8
  120. package/dist/components/AIThread/threadScrollController.js +2 -39
  121. package/dist/components/AIThread/threadTools.d.ts +11 -0
  122. package/dist/components/AIThread/threadTools.js +79 -0
  123. package/dist/components/AIThreadToc/AIThreadToc.svelte +188 -18
  124. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte +25 -2
  125. package/dist/components/AIThreadToc/AIThreadTocPreview.svelte.d.ts +3 -0
  126. package/dist/components/AIThreadToc/aiThreadToc.d.ts +4 -2
  127. package/dist/components/AIThreadToc/aiThreadToc.js +17 -5
  128. package/dist/components/AIThreadToc/aiThreadToc.mcp.d.ts +1 -1
  129. package/dist/components/AIThreadToc/aiThreadToc.mcp.js +13 -3
  130. package/dist/components/AIThreadToc/aiThreadToc.props.d.ts +11 -0
  131. package/dist/components/AIThreadToc/aiThreadToc.theme.d.ts +3 -0
  132. package/dist/components/AIThreadToc/aiThreadToc.theme.js +15 -6
  133. package/dist/components/AITool/AITool.svelte +56 -21
  134. package/dist/components/AITool/AIToolCallList.svelte +79 -29
  135. package/dist/components/AITool/AIToolCallList.svelte.d.ts +6 -2
  136. package/dist/components/AITool/AIToolStatusMark.svelte +52 -0
  137. package/dist/components/AITool/AIToolStatusMark.svelte.d.ts +14 -0
  138. package/dist/components/AITool/AIToolValueSection.svelte +126 -28
  139. package/dist/components/AITool/AIToolValueSection.svelte.d.ts +6 -2
  140. package/dist/components/AITool/AIToolValueTree.svelte +11 -16
  141. package/dist/components/AITool/AIToolValueTree.svelte.d.ts +2 -3
  142. package/dist/components/AITool/aiTool.mcp.d.ts +1 -1
  143. package/dist/components/AITool/aiTool.mcp.js +36 -8
  144. package/dist/components/AITool/aiTool.props.d.ts +52 -6
  145. package/dist/components/AITool/aiTool.theme.d.ts +117 -39
  146. package/dist/components/AITool/aiTool.theme.js +144 -140
  147. package/dist/components/AITool/aiToolClock.svelte.d.ts +18 -0
  148. package/dist/components/AITool/aiToolClock.svelte.js +62 -0
  149. package/dist/components/AITool/aiToolPrimitiveThemes.d.ts +0 -2
  150. package/dist/components/AITool/aiToolPrimitiveThemes.js +0 -10
  151. package/dist/components/AITool/index.d.ts +2 -1
  152. package/dist/components/AITool/index.js +1 -0
  153. package/dist/components/AITool/toolRendering.d.ts +33 -1
  154. package/dist/components/AITool/toolRendering.js +179 -15
  155. package/dist/components/AITool/toolValueTree.d.ts +14 -1
  156. package/dist/components/AITool/toolValueTree.js +126 -27
  157. package/dist/components/Accordion/Accordion.svelte +109 -109
  158. package/dist/components/Accordion/Accordion.svelte.d.ts +0 -1
  159. package/dist/components/Accordion/AccordionPanel.svelte +64 -0
  160. package/dist/components/Accordion/AccordionPanel.svelte.d.ts +20 -0
  161. package/dist/components/Accordion/accordion.attributes.d.ts +24 -0
  162. package/dist/components/Accordion/accordion.attributes.js +20 -0
  163. package/dist/components/Accordion/accordion.mcp.d.ts +1 -1
  164. package/dist/components/Accordion/accordion.mcp.js +78 -22
  165. package/dist/components/Accordion/accordion.props.d.ts +54 -10
  166. package/dist/components/Accordion/accordion.theme.d.ts +3 -0
  167. package/dist/components/Accordion/accordion.theme.js +4 -0
  168. package/dist/components/Accordion/index.d.ts +1 -0
  169. package/dist/components/Accordion/index.js +1 -0
  170. package/dist/components/AudioPlayer/audioPlayerVolumeControl.slider.theme.d.ts +31 -1
  171. package/dist/components/Avatar/Avatar.svelte +60 -10
  172. package/dist/components/Avatar/AvatarGroup.svelte +9 -0
  173. package/dist/components/Avatar/avatar.mcp.d.ts +1 -1
  174. package/dist/components/Avatar/avatar.mcp.js +13 -5
  175. package/dist/components/Avatar/avatar.props.d.ts +28 -1
  176. package/dist/components/Avatar/avatar.theme.js +3 -3
  177. package/dist/components/Avatar/index.d.ts +1 -1
  178. package/dist/components/Breadcrumbs/breadcrumbs.mcp.d.ts +1 -1
  179. package/dist/components/Breadcrumbs/breadcrumbs.mcp.js +1 -1
  180. package/dist/components/Button/Button.svelte +35 -15
  181. package/dist/components/Button/button.mcp.d.ts +1 -1
  182. package/dist/components/Button/button.mcp.js +8 -4
  183. package/dist/components/Button/button.props.d.ts +23 -8
  184. package/dist/components/Button/button.theme.d.ts +12 -0
  185. package/dist/components/Button/button.theme.js +17 -4
  186. package/dist/components/ButtonGroup/buttonGroup.mcp.d.ts +1 -1
  187. package/dist/components/ButtonGroup/buttonGroup.mcp.js +1 -1
  188. package/dist/components/ButtonGroup/buttonGroup.props.d.ts +4 -1
  189. package/dist/components/Collapsible/Collapsible.svelte +125 -19
  190. package/dist/components/Collapsible/collapsible.attributes.d.ts +21 -0
  191. package/dist/components/Collapsible/collapsible.attributes.js +17 -0
  192. package/dist/components/Collapsible/collapsible.mcp.d.ts +1 -1
  193. package/dist/components/Collapsible/collapsible.mcp.js +62 -12
  194. package/dist/components/Collapsible/collapsible.props.d.ts +39 -8
  195. package/dist/components/Collapsible/collapsible.theme.js +3 -1
  196. package/dist/components/Collapsible/index.d.ts +1 -0
  197. package/dist/components/Collapsible/index.js +1 -0
  198. package/dist/components/Command/Command.svelte +56 -14
  199. package/dist/components/Command/command.mcp.d.ts +1 -1
  200. package/dist/components/Command/command.mcp.js +12 -6
  201. package/dist/components/Command/command.props.d.ts +39 -6
  202. package/dist/components/Command/command.state.svelte.d.ts +40 -11
  203. package/dist/components/Command/command.state.svelte.js +75 -28
  204. package/dist/components/Command/command.theme.js +4 -3
  205. package/dist/components/Confirmation/Confirmation.svelte +72 -31
  206. package/dist/components/Confirmation/confirmation.mcp.d.ts +1 -1
  207. package/dist/components/Confirmation/confirmation.mcp.js +5 -4
  208. package/dist/components/ContextMenu/ContextMenu.svelte +126 -16
  209. package/dist/components/ContextMenu/contextMenu.mcp.d.ts +1 -1
  210. package/dist/components/ContextMenu/contextMenu.mcp.js +10 -7
  211. package/dist/components/ContextMenu/contextMenu.props.d.ts +13 -4
  212. package/dist/components/ContextMenu/contextMenu.theme.d.ts +3 -3
  213. package/dist/components/ContextMenu/contextMenu.theme.js +3 -2
  214. package/dist/components/DataTable/DataTable.svelte +4 -9
  215. package/dist/components/DataTable/DataTableEditor.svelte +5 -0
  216. package/dist/components/DataTable/DataTableFilter.svelte +1 -0
  217. package/dist/components/DataTable/DataTableToolbar.svelte +1 -0
  218. package/dist/components/DataTable/dataTable.mcp.d.ts +1 -1
  219. package/dist/components/DataTable/dataTable.mcp.js +4 -2
  220. package/dist/components/DataTable/dataTable.theme.d.ts +0 -3
  221. package/dist/components/DataTable/dataTable.theme.js +9 -6
  222. package/dist/components/Dialog/Dialog.svelte +120 -35
  223. package/dist/components/Dialog/Dialog.svelte.d.ts +1 -1
  224. package/dist/components/Dialog/DialogBackdrop.svelte +21 -1
  225. package/dist/components/Dialog/dialog.api.d.ts +65 -0
  226. package/dist/components/Dialog/dialog.api.js +1 -0
  227. package/dist/components/Dialog/dialog.attributes.d.ts +23 -0
  228. package/dist/components/Dialog/dialog.attributes.js +19 -0
  229. package/dist/components/Dialog/dialog.indent.d.ts +6 -0
  230. package/dist/components/Dialog/dialog.indent.js +16 -0
  231. package/dist/components/Dialog/dialog.mcp.d.ts +1 -1
  232. package/dist/components/Dialog/dialog.mcp.js +195 -22
  233. package/dist/components/Dialog/dialog.props.d.ts +102 -19
  234. package/dist/components/Dialog/dialog.snap.d.ts +40 -0
  235. package/dist/components/Dialog/dialog.snap.js +78 -0
  236. package/dist/components/Dialog/dialog.state.svelte.d.ts +122 -10
  237. package/dist/components/Dialog/dialog.state.svelte.js +525 -66
  238. package/dist/components/Dialog/dialog.theme.d.ts +48 -0
  239. package/dist/components/Dialog/dialog.theme.js +32 -9
  240. package/dist/components/Dialog/index.d.ts +4 -1
  241. package/dist/components/Dialog/index.js +1 -0
  242. package/dist/components/DocumentViewer/DocumentSearchControl.svelte +5 -3
  243. package/dist/components/DocumentViewer/documentOutput.js +2 -1
  244. package/dist/components/FloatingWindow/FloatingWindow.svelte +20 -32
  245. package/dist/components/FloatingWindow/FloatingWindow.svelte.d.ts +1 -1
  246. package/dist/components/FloatingWindow/floatingWindow.mcp.d.ts +1 -1
  247. package/dist/components/FloatingWindow/floatingWindow.mcp.js +3 -3
  248. package/dist/components/FloatingWindow/floatingWindow.props.d.ts +9 -4
  249. package/dist/components/FloatingWindow/floatingWindow.state.svelte.d.ts +8 -2
  250. package/dist/components/FloatingWindow/floatingWindow.state.svelte.js +18 -7
  251. package/dist/components/Form/Ask/Ask.svelte +9 -13
  252. package/dist/components/Form/Ask/ask.mcp.d.ts +1 -1
  253. package/dist/components/Form/Ask/ask.mcp.js +1 -1
  254. package/dist/components/Form/Ask/ask.props.d.ts +1 -1
  255. package/dist/components/Form/Autocomplete/Autocomplete.svelte +418 -0
  256. package/dist/components/Form/Autocomplete/Autocomplete.svelte.d.ts +4 -0
  257. package/dist/components/Form/Autocomplete/autocomplete.items.d.ts +30 -0
  258. package/dist/components/Form/Autocomplete/autocomplete.items.js +64 -0
  259. package/dist/components/Form/Autocomplete/autocomplete.mcp.d.ts +1 -0
  260. package/dist/components/Form/Autocomplete/autocomplete.mcp.js +134 -0
  261. package/dist/components/Form/Autocomplete/autocomplete.props.d.ts +146 -0
  262. package/dist/components/Form/Autocomplete/autocomplete.props.js +1 -0
  263. package/dist/components/Form/Autocomplete/autocomplete.theme.d.ts +213 -0
  264. package/dist/components/Form/Autocomplete/autocomplete.theme.js +119 -0
  265. package/dist/components/Form/Autocomplete/index.d.ts +3 -0
  266. package/dist/components/Form/Autocomplete/index.js +2 -0
  267. package/dist/components/Form/Calendar/CalendarInput.svelte +9 -0
  268. package/dist/components/Form/Calendar/CalendarMonthYearPicker.svelte +3 -0
  269. package/dist/components/Form/Calendar/CalendarPrimitive.svelte +5 -0
  270. package/dist/components/Form/Calendar/calendar.mcp.d.ts +1 -1
  271. package/dist/components/Form/Calendar/calendar.mcp.js +2 -1
  272. package/dist/components/Form/Calendar/calendarInput.props.d.ts +2 -0
  273. package/dist/components/Form/Calendar/useCalendar.svelte.d.ts +3 -0
  274. package/dist/components/Form/Calendar/useCalendar.svelte.js +3 -0
  275. package/dist/components/Form/Checkbox/Checkbox.svelte +17 -2
  276. package/dist/components/Form/Checkbox/checkbox.mcp.d.ts +1 -1
  277. package/dist/components/Form/Checkbox/checkbox.mcp.js +11 -1
  278. package/dist/components/Form/Checkbox/checkbox.props.d.ts +12 -1
  279. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte +69 -32
  280. package/dist/components/Form/CheckboxesInput/CheckboxLine.svelte.d.ts +10 -2
  281. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte +123 -74
  282. package/dist/components/Form/CheckboxesInput/CheckboxesInput.svelte.d.ts +12 -12
  283. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.d.ts +1 -1
  284. package/dist/components/Form/CheckboxesInput/checkboxesInput.mcp.js +11 -7
  285. package/dist/components/Form/CheckboxesInput/checkboxesInput.props.d.ts +25 -9
  286. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.d.ts +12 -0
  287. package/dist/components/Form/CheckboxesInput/checkboxesInput.theme.js +9 -4
  288. package/dist/components/Form/CheckboxesInput/choiceEnter.d.ts +11 -0
  289. package/dist/components/Form/CheckboxesInput/choiceEnter.js +27 -0
  290. package/dist/components/Form/ColorInput/ColorInput.svelte +12 -3
  291. package/dist/components/Form/ColorInput/colorInput.mcp.d.ts +1 -1
  292. package/dist/components/Form/ColorInput/colorInput.mcp.js +1 -0
  293. package/dist/components/Form/ColorPicker/ColorPicker.svelte +11 -2
  294. package/dist/components/Form/ColorPicker/ColorPickerInput.svelte +9 -0
  295. package/dist/components/Form/ColorPicker/colorPicker.mcp.d.ts +1 -1
  296. package/dist/components/Form/ColorPicker/colorPicker.mcp.js +1 -0
  297. package/dist/components/Form/ColorPicker/colorPicker.props.d.ts +2 -0
  298. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.d.ts +4 -0
  299. package/dist/components/Form/ColorPicker/colorPicker.state.svelte.js +12 -8
  300. package/dist/components/Form/Combobox/Combobox.svelte +145 -185
  301. package/dist/components/Form/Combobox/Combobox.svelte.d.ts +1 -1
  302. package/dist/components/Form/Combobox/ComboboxPopup.svelte +128 -0
  303. package/dist/components/Form/Combobox/ComboboxPopup.svelte.d.ts +28 -0
  304. package/dist/components/Form/Combobox/combobox.attributes.d.ts +34 -0
  305. package/dist/components/Form/Combobox/combobox.attributes.js +25 -0
  306. package/dist/components/Form/Combobox/combobox.items.d.ts +28 -0
  307. package/dist/components/Form/Combobox/combobox.items.js +68 -0
  308. package/dist/components/Form/Combobox/combobox.mcp.d.ts +1 -1
  309. package/dist/components/Form/Combobox/combobox.mcp.js +104 -13
  310. package/dist/components/Form/Combobox/combobox.props.d.ts +113 -19
  311. package/dist/components/Form/Combobox/combobox.state.svelte.d.ts +137 -0
  312. package/dist/components/Form/Combobox/combobox.state.svelte.js +375 -0
  313. package/dist/components/Form/Combobox/combobox.theme.d.ts +63 -0
  314. package/dist/components/Form/Combobox/combobox.theme.js +37 -1
  315. package/dist/components/Form/Combobox/index.d.ts +2 -1
  316. package/dist/components/Form/Combobox/index.js +1 -0
  317. package/dist/components/Form/DateInput/DateInput.svelte +11 -3
  318. package/dist/components/Form/DateInput/dateInput.mcp.d.ts +1 -1
  319. package/dist/components/Form/DateInput/dateInput.mcp.js +5 -0
  320. package/dist/components/Form/DateSelector/DateSelector.svelte +5 -2
  321. package/dist/components/Form/DateSelector/DateSelectorInput.svelte +9 -0
  322. package/dist/components/Form/DateSelector/dateSelector.mcp.d.ts +1 -1
  323. package/dist/components/Form/DateSelector/dateSelector.mcp.js +2 -2
  324. package/dist/components/Form/DateSelector/dateSelector.props.d.ts +2 -0
  325. package/dist/components/Form/Field/Field.svelte +258 -32
  326. package/dist/components/Form/Field/Field.svelte.d.ts +15 -6
  327. package/dist/components/Form/Field/FieldGroup.svelte +29 -0
  328. package/dist/components/Form/Field/FieldGroup.svelte.d.ts +11 -0
  329. package/dist/components/Form/Field/FieldHiddenInputs.svelte +187 -0
  330. package/dist/components/Form/Field/FieldHiddenInputs.svelte.d.ts +26 -0
  331. package/dist/components/Form/Field/field.d.ts +75 -10
  332. package/dist/components/Form/Field/field.mcp.d.ts +1 -1
  333. package/dist/components/Form/Field/field.mcp.js +158 -18
  334. package/dist/components/Form/Field/field.messages.d.ts +47 -0
  335. package/dist/components/Form/Field/field.messages.js +64 -0
  336. package/dist/components/Form/Field/field.state.svelte.d.ts +117 -40
  337. package/dist/components/Form/Field/field.state.svelte.js +525 -16
  338. package/dist/components/Form/Field/field.theme.d.ts +46 -0
  339. package/dist/components/Form/Field/field.theme.js +33 -0
  340. package/dist/components/Form/Field/fieldHiddenInputs.props.d.ts +61 -0
  341. package/dist/components/Form/Field/fieldHiddenInputs.props.js +1 -0
  342. package/dist/components/Form/Field/fieldNativeForm.svelte.d.ts +14 -0
  343. package/dist/components/Form/Field/fieldNativeForm.svelte.js +113 -0
  344. package/dist/components/Form/Field/index.d.ts +5 -2
  345. package/dist/components/Form/Field/index.js +1 -0
  346. package/dist/components/Form/Field/schemas.js +7 -2
  347. package/dist/components/Form/File/FileInput.svelte +24 -3
  348. package/dist/components/Form/File/fileInput.mcp.d.ts +1 -1
  349. package/dist/components/Form/File/fileInput.mcp.js +1 -0
  350. package/dist/components/Form/Form/Form.svelte +49 -15
  351. package/dist/components/Form/Form/FormActions.svelte +3 -1
  352. package/dist/components/Form/Form/FormActions.svelte.d.ts +42 -2
  353. package/dist/components/Form/Form/FormFieldRenderer.svelte +96 -12
  354. package/dist/components/Form/Form/FormFieldRenderer.svelte.d.ts +3 -2
  355. package/dist/components/Form/Form/FormInputRenderer.svelte +7 -0
  356. package/dist/components/Form/Form/form.d.ts +84 -11
  357. package/dist/components/Form/Form/form.mcp.d.ts +1 -1
  358. package/dist/components/Form/Form/form.mcp.js +178 -12
  359. package/dist/components/Form/Form/form.props.d.ts +32 -1
  360. package/dist/components/Form/Form/form.registry.d.ts +28 -0
  361. package/dist/components/Form/Form/form.registry.js +59 -0
  362. package/dist/components/Form/Form/form.state.svelte.d.ts +1186 -420
  363. package/dist/components/Form/Form/form.state.svelte.js +322 -28
  364. package/dist/components/Form/Form/index.d.ts +4 -1
  365. package/dist/components/Form/Form/index.js +1 -0
  366. package/dist/components/Form/Form/visibility.d.ts +3130 -1863
  367. package/dist/components/Form/KeyValueInput/KeyValueInput.svelte +22 -10
  368. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.d.ts +1 -1
  369. package/dist/components/Form/KeyValueInput/keyValueInput.mcp.js +1 -0
  370. package/dist/components/Form/MultiStepForm/MultiStepForm.svelte +12 -5
  371. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.d.ts +1 -1
  372. package/dist/components/Form/MultiStepForm/multiStepForm.mcp.js +5 -3
  373. package/dist/components/Form/MultiStepForm/multiStepForm.props.d.ts +5 -0
  374. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.d.ts +1050 -408
  375. package/dist/components/Form/MultiStepForm/multiStepForm.state.svelte.js +48 -24
  376. package/dist/components/Form/NumberInput/NumberInput.svelte +365 -46
  377. package/dist/components/Form/NumberInput/index.d.ts +1 -1
  378. package/dist/components/Form/NumberInput/numberInput.mcp.d.ts +1 -1
  379. package/dist/components/Form/NumberInput/numberInput.mcp.js +55 -30
  380. package/dist/components/Form/NumberInput/numberInput.props.d.ts +64 -4
  381. package/dist/components/Form/PasswordInput/Password.svelte +28 -1
  382. package/dist/components/Form/PasswordInput/index.d.ts +1 -1
  383. package/dist/components/Form/PasswordInput/passwordInput.mcp.d.ts +1 -1
  384. package/dist/components/Form/PasswordInput/passwordInput.mcp.js +20 -2
  385. package/dist/components/Form/PasswordInput/passwordInput.props.d.ts +23 -0
  386. package/dist/components/Form/PhoneInput/PhoneInput.svelte +11 -4
  387. package/dist/components/Form/PhoneInput/PhoneInputCountryPicker.svelte +47 -21
  388. package/dist/components/Form/PhoneInput/phoneInput-cdn.js +2 -1
  389. package/dist/components/Form/PhoneInput/phoneInput.mcp.d.ts +1 -1
  390. package/dist/components/Form/PhoneInput/phoneInput.mcp.js +6 -2
  391. package/dist/components/Form/PhoneInput/phoneInputCountry.d.ts +9 -3
  392. package/dist/components/Form/PhoneInput/phoneInputCountry.js +34 -24
  393. package/dist/components/Form/PinInput/PinInput.svelte +44 -9
  394. package/dist/components/Form/PinInput/PinInputCells.svelte +22 -1
  395. package/dist/components/Form/PinInput/PinInputCells.svelte.d.ts +1 -0
  396. package/dist/components/Form/PinInput/index.d.ts +1 -1
  397. package/dist/components/Form/PinInput/pinInput.mcp.d.ts +1 -1
  398. package/dist/components/Form/PinInput/pinInput.mcp.js +29 -6
  399. package/dist/components/Form/PinInput/pinInput.props.d.ts +38 -4
  400. package/dist/components/Form/PinInput/pinInput.state.svelte.d.ts +41 -0
  401. package/dist/components/Form/PinInput/pinInput.state.svelte.js +227 -24
  402. package/dist/components/Form/PinInput/pinInput.theme.d.ts +39 -3
  403. package/dist/components/Form/PinInput/pinInput.theme.js +27 -1
  404. package/dist/components/Form/RadioInput/RadioInput.svelte +94 -32
  405. package/dist/components/Form/RadioInput/RadioInput.svelte.d.ts +12 -12
  406. package/dist/components/Form/RadioInput/radioInput.mcp.d.ts +1 -1
  407. package/dist/components/Form/RadioInput/radioInput.mcp.js +12 -9
  408. package/dist/components/Form/RadioInput/radioInput.props.d.ts +22 -6
  409. package/dist/components/Form/RadioInput/radioInput.theme.d.ts +12 -0
  410. package/dist/components/Form/RadioInput/radioInput.theme.js +10 -5
  411. package/dist/components/Form/RatingInput/RatingInput.svelte +13 -4
  412. package/dist/components/Form/RatingInput/ratingInput.mcp.d.ts +1 -1
  413. package/dist/components/Form/RatingInput/ratingInput.mcp.js +3 -3
  414. package/dist/components/Form/RatingInput/ratingInput.props.d.ts +1 -1
  415. package/dist/components/Form/Select/Select.svelte +186 -48
  416. package/dist/components/Form/Select/Select.svelte.d.ts +23 -2
  417. package/dist/components/Form/Select/SelectOptionRow.svelte +69 -0
  418. package/dist/components/Form/Select/SelectOptionRow.svelte.d.ts +18 -0
  419. package/dist/components/Form/Select/index.d.ts +2 -1
  420. package/dist/components/Form/Select/index.js +1 -0
  421. package/dist/components/Form/Select/select.align.d.ts +5 -0
  422. package/dist/components/Form/Select/select.align.js +19 -5
  423. package/dist/components/Form/Select/select.attributes.d.ts +36 -0
  424. package/dist/components/Form/Select/select.attributes.js +27 -0
  425. package/dist/components/Form/Select/select.mcp.d.ts +1 -1
  426. package/dist/components/Form/Select/select.mcp.js +103 -18
  427. package/dist/components/Form/Select/select.props.d.ts +87 -10
  428. package/dist/components/Form/Select/select.state.svelte.d.ts +108 -17
  429. package/dist/components/Form/Select/select.state.svelte.js +354 -59
  430. package/dist/components/Form/Select/select.theme.d.ts +21 -0
  431. package/dist/components/Form/Select/select.theme.js +22 -0
  432. package/dist/components/Form/Slider/Slider.svelte +54 -14
  433. package/dist/components/Form/Slider/SliderMarks.svelte +1 -1
  434. package/dist/components/Form/Slider/SliderThumb.svelte +49 -19
  435. package/dist/components/Form/Slider/SliderThumb.svelte.d.ts +8 -2
  436. package/dist/components/Form/Slider/SliderTrack.svelte +33 -12
  437. package/dist/components/Form/Slider/SliderTrack.svelte.d.ts +6 -2
  438. package/dist/components/Form/Slider/index.d.ts +1 -1
  439. package/dist/components/Form/Slider/slider.mcp.d.ts +1 -1
  440. package/dist/components/Form/Slider/slider.mcp.js +55 -11
  441. package/dist/components/Form/Slider/slider.props.d.ts +35 -2
  442. package/dist/components/Form/Slider/slider.state.svelte.d.ts +66 -5
  443. package/dist/components/Form/Slider/slider.state.svelte.js +273 -49
  444. package/dist/components/Form/Slider/slider.theme.d.ts +36 -0
  445. package/dist/components/Form/Slider/slider.theme.js +35 -17
  446. package/dist/components/Form/Switch/Switch.svelte +61 -38
  447. package/dist/components/Form/Switch/switch.mcp.d.ts +1 -1
  448. package/dist/components/Form/Switch/switch.mcp.js +25 -5
  449. package/dist/components/Form/Switch/switch.props.d.ts +14 -1
  450. package/dist/components/Form/Switch/switch.theme.d.ts +12 -0
  451. package/dist/components/Form/Switch/switch.theme.js +8 -3
  452. package/dist/components/Form/TagGroup/TagGroup.svelte +8 -0
  453. package/dist/components/Form/TagGroup/tagGroup.mcp.d.ts +1 -1
  454. package/dist/components/Form/TagGroup/tagGroup.mcp.js +1 -0
  455. package/dist/components/Form/TagsInput/TagsInput.svelte +277 -275
  456. package/dist/components/Form/TagsInput/TagsInput.svelte.d.ts +1 -1
  457. package/dist/components/Form/TagsInput/tagsInput.mcp.d.ts +1 -1
  458. package/dist/components/Form/TagsInput/tagsInput.mcp.js +31 -11
  459. package/dist/components/Form/TagsInput/tagsInput.props.d.ts +6 -26
  460. package/dist/components/Form/TagsInput/tagsInput.theme.d.ts +63 -0
  461. package/dist/components/Form/TagsInput/tagsInput.theme.js +37 -1
  462. package/dist/components/Form/TextArea/TextArea.svelte +8 -0
  463. package/dist/components/Form/TextArea/textArea.mcp.d.ts +1 -1
  464. package/dist/components/Form/TextArea/textArea.mcp.js +1 -0
  465. package/dist/components/Form/TextInput/TextInput.svelte +8 -1
  466. package/dist/components/Form/TextInput/textInput.mcp.d.ts +1 -1
  467. package/dist/components/Form/TextInput/textInput.mcp.js +5 -0
  468. package/dist/components/Form/TimeInput/TimeInput.svelte +9 -1
  469. package/dist/components/Form/TimeInput/timeInput.mcp.d.ts +1 -1
  470. package/dist/components/Form/TimeInput/timeInput.mcp.js +31 -0
  471. package/dist/components/Form/VoiceInput/VoiceInput.svelte +10 -2
  472. package/dist/components/Form/VoiceInput/voiceInput.mcp.d.ts +1 -1
  473. package/dist/components/Form/VoiceInput/voiceInput.mcp.js +1 -0
  474. package/dist/components/GanttChart/GanttDependencyControl.svelte +4 -4
  475. package/dist/components/HoverCard/HoverCard.svelte +100 -10
  476. package/dist/components/HoverCard/hoverCard.attributes.d.ts +33 -0
  477. package/dist/components/HoverCard/hoverCard.attributes.js +24 -0
  478. package/dist/components/HoverCard/hoverCard.mcp.d.ts +1 -1
  479. package/dist/components/HoverCard/hoverCard.mcp.js +61 -2
  480. package/dist/components/HoverCard/hoverCard.props.d.ts +19 -0
  481. package/dist/components/HoverCard/hoverCard.theme.d.ts +12 -0
  482. package/dist/components/HoverCard/hoverCard.theme.js +9 -2
  483. package/dist/components/HoverCard/index.d.ts +1 -0
  484. package/dist/components/HoverCard/index.js +1 -0
  485. package/dist/components/ImageGallery/imageGallery.state.svelte.d.ts +1 -1
  486. package/dist/components/ImageZoom/imageZoom.lightbox.js +40 -6
  487. package/dist/components/ImageZoom/imageZoom.mcp.d.ts +1 -1
  488. package/dist/components/ImageZoom/imageZoom.mcp.js +3 -3
  489. package/dist/components/ImageZoom/imageZoom.props.d.ts +10 -4
  490. package/dist/components/ImageZoom/imageZoom.state.svelte.d.ts +16 -4
  491. package/dist/components/ImageZoom/imageZoom.state.svelte.js +38 -9
  492. package/dist/components/Kanban/kanban.theme.js +7 -3
  493. package/dist/components/Layout/layoutSpacing.d.ts +2 -2
  494. package/dist/components/LinkPreview/LinkPreview.svelte +7 -1
  495. package/dist/components/LinkPreview/linkPreview.mcp.d.ts +1 -1
  496. package/dist/components/LinkPreview/linkPreview.mcp.js +4 -1
  497. package/dist/components/LinkPreview/linkPreview.props.d.ts +15 -0
  498. package/dist/components/LinkPreview/linkPreview.theme.d.ts +12 -0
  499. package/dist/components/LinkPreview/linkPreview.theme.js +9 -2
  500. package/dist/components/Map/maplibre-cdn.js +3 -2
  501. package/dist/components/Markdown/markdown.mcp.d.ts +1 -1
  502. package/dist/components/Markdown/markdown.mcp.js +2 -1
  503. package/dist/components/Markdown/markdown.theme.js +18 -9
  504. package/dist/components/MediaVolume/MediaVolumeControl.svelte +4 -3
  505. package/dist/components/Menu/Menu.svelte +3 -3
  506. package/dist/components/Menu/Menu.svelte.d.ts +1 -1
  507. package/dist/components/Menu/MenuCheckboxItem.svelte +87 -0
  508. package/dist/components/Menu/MenuCheckboxItem.svelte.d.ts +16 -0
  509. package/dist/components/Menu/MenuFloating.svelte +421 -74
  510. package/dist/components/Menu/MenuFloating.svelte.d.ts +1 -1
  511. package/dist/components/Menu/MenuMirroredIcon.svelte +9 -0
  512. package/dist/components/Menu/MenuMirroredIcon.svelte.d.ts +7 -0
  513. package/dist/components/Menu/MenuRadioGroup.svelte +102 -0
  514. package/dist/components/Menu/MenuRadioGroup.svelte.d.ts +18 -0
  515. package/dist/components/Menu/MenuSearchField.svelte +54 -0
  516. package/dist/components/Menu/MenuSearchField.svelte.d.ts +20 -0
  517. package/dist/components/Menu/MenuStacked.svelte +404 -158
  518. package/dist/components/Menu/MenuStacked.svelte.d.ts +1 -1
  519. package/dist/components/Menu/MenuStackedBackHeader.svelte +6 -1
  520. package/dist/components/Menu/index.d.ts +2 -1
  521. package/dist/components/Menu/index.js +1 -0
  522. package/dist/components/Menu/menu.attributes.d.ts +37 -0
  523. package/dist/components/Menu/menu.attributes.js +28 -0
  524. package/dist/components/Menu/menu.filter.svelte.d.ts +52 -0
  525. package/dist/components/Menu/menu.filter.svelte.js +143 -0
  526. package/dist/components/Menu/menu.mcp.d.ts +1 -1
  527. package/dist/components/Menu/menu.mcp.js +227 -17
  528. package/dist/components/Menu/menu.platform.d.ts +5 -0
  529. package/dist/components/Menu/menu.platform.js +11 -0
  530. package/dist/components/Menu/menu.props.d.ts +172 -9
  531. package/dist/components/Menu/menu.theme.d.ts +147 -0
  532. package/dist/components/Menu/menu.theme.js +101 -0
  533. package/dist/components/Menu/menuTree.d.ts +35 -1
  534. package/dist/components/Menu/menuTree.js +158 -1
  535. package/dist/components/MenuBar/menuBar.mcp.d.ts +1 -1
  536. package/dist/components/MenuBar/menuBar.mcp.js +4 -2
  537. package/dist/components/MenuBar/menuBar.state.svelte.js +28 -10
  538. package/dist/components/MenuOption/MenuOption.svelte +5 -1
  539. package/dist/components/MenuOption/menuOption.mcp.d.ts +1 -1
  540. package/dist/components/MenuOption/menuOption.mcp.js +8 -0
  541. package/dist/components/MenuOption/menuOption.props.d.ts +12 -0
  542. package/dist/components/MenuOption/menuOption.theme.d.ts +18 -0
  543. package/dist/components/MenuOption/menuOption.theme.js +24 -4
  544. package/dist/components/Mermaid/mermaid.mcp.d.ts +1 -1
  545. package/dist/components/Mermaid/mermaid.mcp.js +8 -8
  546. package/dist/components/Mermaid/mermaid.props.d.ts +3 -4
  547. package/dist/components/Mermaid/mermaid.state.svelte.d.ts +20 -19
  548. package/dist/components/Mermaid/mermaid.state.svelte.js +80 -243
  549. package/dist/components/Mermaid/mermaid.theme.js +26 -1
  550. package/dist/components/MetadataList/MetadataList.svelte.d.ts +1 -1
  551. package/dist/components/Meter/Meter.svelte +110 -24
  552. package/dist/components/Meter/Meter.svelte.d.ts +12 -12
  553. package/dist/components/Meter/meter.mcp.d.ts +1 -1
  554. package/dist/components/Meter/meter.mcp.js +23 -37
  555. package/dist/components/Meter/meter.props.d.ts +36 -44
  556. package/dist/components/NavigationMenu/NavigationMenu.svelte +181 -0
  557. package/dist/components/NavigationMenu/NavigationMenu.svelte.d.ts +25 -0
  558. package/dist/components/NavigationMenu/NavigationMenuContent.svelte +141 -0
  559. package/dist/components/NavigationMenu/NavigationMenuContent.svelte.d.ts +13 -0
  560. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte +75 -0
  561. package/dist/components/NavigationMenu/NavigationMenuTrigger.svelte.d.ts +13 -0
  562. package/dist/components/NavigationMenu/index.d.ts +4 -0
  563. package/dist/components/NavigationMenu/index.js +3 -0
  564. package/dist/components/NavigationMenu/navigationMenu.attributes.d.ts +24 -0
  565. package/dist/components/NavigationMenu/navigationMenu.attributes.js +21 -0
  566. package/dist/components/NavigationMenu/navigationMenu.mcp.d.ts +1 -0
  567. package/dist/components/NavigationMenu/navigationMenu.mcp.js +138 -0
  568. package/dist/components/NavigationMenu/navigationMenu.props.d.ts +129 -0
  569. package/dist/components/NavigationMenu/navigationMenu.props.js +1 -0
  570. package/dist/components/NavigationMenu/navigationMenu.state.svelte.d.ts +163 -0
  571. package/dist/components/NavigationMenu/navigationMenu.state.svelte.js +721 -0
  572. package/dist/components/NavigationMenu/navigationMenu.theme.d.ts +326 -0
  573. package/dist/components/NavigationMenu/navigationMenu.theme.js +239 -0
  574. package/dist/components/Overlay/Overlay.svelte +19 -30
  575. package/dist/components/Overlay/index.d.ts +1 -0
  576. package/dist/components/Overlay/index.js +1 -0
  577. package/dist/components/Overlay/overlay.attributes.d.ts +16 -0
  578. package/dist/components/Overlay/overlay.attributes.js +14 -0
  579. package/dist/components/Overlay/overlay.mcp.d.ts +1 -1
  580. package/dist/components/Overlay/overlay.mcp.js +21 -3
  581. package/dist/components/Overlay/overlay.props.d.ts +8 -4
  582. package/dist/components/Popover/Popover.svelte +163 -52
  583. package/dist/components/Popover/Popover.svelte.d.ts +23 -2
  584. package/dist/components/Popover/PopoverSession.svelte +12 -0
  585. package/dist/components/Popover/PopoverSession.svelte.d.ts +7 -0
  586. package/dist/components/Popover/index.d.ts +10 -2
  587. package/dist/components/Popover/index.js +4 -1
  588. package/dist/components/Popover/popover.api.d.ts +83 -0
  589. package/dist/components/Popover/popover.api.js +1 -0
  590. package/dist/components/Popover/popover.attributes.d.ts +32 -0
  591. package/dist/components/Popover/popover.attributes.js +28 -0
  592. package/dist/components/Popover/popover.claims.d.ts +19 -0
  593. package/dist/components/Popover/popover.claims.js +45 -0
  594. package/dist/components/Popover/popover.mcp.d.ts +1 -1
  595. package/dist/components/Popover/popover.mcp.js +163 -31
  596. package/dist/components/Popover/popover.position.d.ts +226 -0
  597. package/dist/components/Popover/popover.position.js +402 -0
  598. package/dist/components/Popover/popover.props.d.ts +179 -24
  599. package/dist/components/Popover/popover.state.svelte.d.ts +169 -37
  600. package/dist/components/Popover/popover.state.svelte.js +1034 -194
  601. package/dist/components/Popover/popover.theme.d.ts +15 -0
  602. package/dist/components/Popover/popover.theme.js +27 -2
  603. package/dist/components/PopupMenu/PopupMenu.svelte +193 -22
  604. package/dist/components/PopupMenu/PopupMenu.svelte.d.ts +2 -2
  605. package/dist/components/PopupMenu/popupMenu.context.d.ts +42 -0
  606. package/dist/components/PopupMenu/popupMenu.context.js +52 -0
  607. package/dist/components/PopupMenu/popupMenu.mcp.d.ts +1 -1
  608. package/dist/components/PopupMenu/popupMenu.mcp.js +46 -6
  609. package/dist/components/PopupMenu/popupMenu.props.d.ts +29 -2
  610. package/dist/components/Progress/Progress.svelte +160 -0
  611. package/dist/components/Progress/Progress.svelte.d.ts +4 -0
  612. package/dist/components/Progress/index.d.ts +3 -0
  613. package/dist/components/Progress/index.js +2 -0
  614. package/dist/components/Progress/progress.mcp.d.ts +1 -0
  615. package/dist/components/Progress/progress.mcp.js +101 -0
  616. package/dist/components/Progress/progress.props.d.ts +79 -0
  617. package/dist/components/Progress/progress.props.js +1 -0
  618. package/dist/components/Progress/progress.theme.d.ts +129 -0
  619. package/dist/components/Progress/progress.theme.js +83 -0
  620. package/dist/components/ProgressCircle/ProgressCircle.svelte +51 -6
  621. package/dist/components/ProgressCircle/progressCircle.mcp.d.ts +1 -1
  622. package/dist/components/ProgressCircle/progressCircle.mcp.js +18 -4
  623. package/dist/components/ProgressCircle/progressCircle.props.d.ts +32 -2
  624. package/dist/components/ProgressCircle/progressCircle.theme.d.ts +15 -3
  625. package/dist/components/ProgressCircle/progressCircle.theme.js +7 -2
  626. package/dist/components/RichTextInput/RichTextInput.svelte +19 -1
  627. package/dist/components/RichTextInput/RichTextInputChrome.svelte +5 -1
  628. package/dist/components/RichTextInput/RichTextInputChrome.svelte.d.ts +2 -0
  629. package/dist/components/RichTextInput/RichTextInputViewport.svelte +3 -1
  630. package/dist/components/RichTextInput/RichTextInputViewport.svelte.d.ts +1 -0
  631. package/dist/components/RichTextInput/richTextInput.mcp.d.ts +1 -1
  632. package/dist/components/RichTextInput/richTextInput.mcp.js +1 -0
  633. package/dist/components/RichTextInput/suggestions.js +2 -0
  634. package/dist/components/ScrollArea/ScrollArea.svelte +166 -27
  635. package/dist/components/ScrollArea/index.d.ts +2 -1
  636. package/dist/components/ScrollArea/index.js +1 -0
  637. package/dist/components/ScrollArea/scrollArea.attributes.d.ts +25 -0
  638. package/dist/components/ScrollArea/scrollArea.attributes.js +21 -0
  639. package/dist/components/ScrollArea/scrollArea.mcp.d.ts +1 -1
  640. package/dist/components/ScrollArea/scrollArea.mcp.js +47 -3
  641. package/dist/components/ScrollArea/scrollArea.props.d.ts +33 -6
  642. package/dist/components/ScrollArea/scrollArea.svelte.d.ts +56 -12
  643. package/dist/components/ScrollArea/scrollArea.svelte.js +281 -71
  644. package/dist/components/ScrollArea/scrollArea.theme.js +5 -2
  645. package/dist/components/SegmentedControl/SegmentedControl.svelte +4 -3
  646. package/dist/components/SegmentedControl/segmentedControl.mcp.d.ts +1 -1
  647. package/dist/components/SegmentedControl/segmentedControl.mcp.js +3 -2
  648. package/dist/components/SelectionMenu/SelectionMenu.svelte +4 -2
  649. package/dist/components/Sidebar/SidebarAction.svelte +13 -3
  650. package/dist/components/Sidebar/SidebarAction.svelte.d.ts +2 -1
  651. package/dist/components/Sidebar/SidebarActivityBar.svelte +14 -7
  652. package/dist/components/Sidebar/SidebarFlyout.svelte +97 -0
  653. package/dist/components/Sidebar/SidebarFlyout.svelte.d.ts +32 -0
  654. package/dist/components/Sidebar/SidebarGroup.svelte +39 -15
  655. package/dist/components/Sidebar/SidebarMenuButton.svelte +6 -3
  656. package/dist/components/Sidebar/SidebarMenuItem.svelte +134 -31
  657. package/dist/components/Sidebar/SidebarMenuSubItem.svelte +30 -14
  658. package/dist/components/Sidebar/SidebarTreeNode.svelte +41 -61
  659. package/dist/components/Sidebar/index.d.ts +1 -0
  660. package/dist/components/Sidebar/index.js +1 -0
  661. package/dist/components/Sidebar/sidebar-position.d.ts +37 -2
  662. package/dist/components/Sidebar/sidebar-position.js +31 -2
  663. package/dist/components/Sidebar/sidebar.attributes.d.ts +33 -0
  664. package/dist/components/Sidebar/sidebar.attributes.js +29 -0
  665. package/dist/components/Sidebar/sidebar.mcp.d.ts +1 -1
  666. package/dist/components/Sidebar/sidebar.mcp.js +45 -10
  667. package/dist/components/Sidebar/sidebar.props.d.ts +28 -7
  668. package/dist/components/Sidebar/sidebar.theme.d.ts +51 -21
  669. package/dist/components/Sidebar/sidebar.theme.js +113 -62
  670. package/dist/components/Sidebar/sidebar.views.svelte.js +11 -18
  671. package/dist/components/Stepper/Stepper.svelte +2 -0
  672. package/dist/components/Stepper/stepper.mcp.d.ts +1 -1
  673. package/dist/components/Stepper/stepper.mcp.js +1 -0
  674. package/dist/components/Stepper/stepper.props.d.ts +5 -0
  675. package/dist/components/Stepper/stepper.state.svelte.d.ts +2 -0
  676. package/dist/components/Stepper/stepper.state.svelte.js +31 -12
  677. package/dist/components/Tabbar/Tabbar.svelte +55 -16
  678. package/dist/components/Tabbar/index.d.ts +1 -1
  679. package/dist/components/Tabbar/tabbar.mcp.d.ts +1 -1
  680. package/dist/components/Tabbar/tabbar.mcp.js +26 -9
  681. package/dist/components/Tabbar/tabbar.props.d.ts +34 -5
  682. package/dist/components/Tabbar/tabbar.selection.svelte.d.ts +79 -0
  683. package/dist/components/Tabbar/tabbar.selection.svelte.js +99 -0
  684. package/dist/components/TableOfContents/tableOfContents.state.svelte.js +9 -7
  685. package/dist/components/Tabs/Tabs.svelte +73 -16
  686. package/dist/components/Tabs/index.d.ts +2 -1
  687. package/dist/components/Tabs/tabs.direction.svelte.d.ts +25 -0
  688. package/dist/components/Tabs/tabs.direction.svelte.js +40 -0
  689. package/dist/components/Tabs/tabs.mcp.d.ts +1 -1
  690. package/dist/components/Tabs/tabs.mcp.js +22 -4
  691. package/dist/components/Tabs/tabs.props.d.ts +39 -12
  692. package/dist/components/Tabs/tabs.theme.js +3 -1
  693. package/dist/components/Theme/Theme.svelte +44 -27
  694. package/dist/components/Theme/helper.d.ts +16 -2
  695. package/dist/components/Theme/helper.js +46 -4
  696. package/dist/components/Theme/theme.mcp.d.ts +1 -1
  697. package/dist/components/Theme/theme.mcp.js +103 -0
  698. package/dist/components/Theme/theme.props.d.ts +16 -0
  699. package/dist/components/Theme/theme.state.svelte.d.ts +14 -1
  700. package/dist/components/Theme/theme.state.svelte.js +18 -1
  701. package/dist/components/Toast/Toast.svelte +184 -39
  702. package/dist/components/Toast/Toaster.svelte +14 -10
  703. package/dist/components/Toast/index.d.ts +1 -0
  704. package/dist/components/Toast/toast.mcp.d.ts +1 -1
  705. package/dist/components/Toast/toast.mcp.js +47 -6
  706. package/dist/components/Toast/toast.state.svelte.d.ts +172 -6
  707. package/dist/components/Toast/toast.state.svelte.js +513 -68
  708. package/dist/components/Toast/toast.theme.js +1 -1
  709. package/dist/components/ToggleButton/ToggleButton.svelte +23 -1
  710. package/dist/components/ToggleButton/toggleButton.mcp.d.ts +1 -1
  711. package/dist/components/ToggleButton/toggleButton.mcp.js +3 -1
  712. package/dist/components/ToggleButton/toggleButton.props.d.ts +13 -1
  713. package/dist/components/ToggleButton/toggleButton.theme.d.ts +12 -0
  714. package/dist/components/ToggleButton/toggleButton.theme.js +15 -3
  715. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.svelte +29 -9
  716. package/dist/components/ToggleButtonGroup/index.d.ts +1 -1
  717. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.d.ts +1 -1
  718. package/dist/components/ToggleButtonGroup/toggleButtonGroup.mcp.js +5 -2
  719. package/dist/components/ToggleButtonGroup/toggleButtonGroup.props.d.ts +19 -1
  720. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.d.ts +12 -0
  721. package/dist/components/ToggleButtonGroup/toggleButtonGroup.theme.js +21 -2
  722. package/dist/components/ToggleMenu/ToggleMenu.svelte +57 -43
  723. package/dist/components/ToggleMenu/ToggleMenuGroup.svelte +1 -0
  724. package/dist/components/ToggleMenu/ToggleMenuMenu.svelte +9 -3
  725. package/dist/components/ToggleMenu/ToggleMenuRadioGroup.svelte +7 -2
  726. package/dist/components/ToggleMenu/toggleMenu.mcp.d.ts +1 -1
  727. package/dist/components/ToggleMenu/toggleMenu.mcp.js +3 -2
  728. package/dist/components/ToggleMenu/toggleMenu.props.d.ts +4 -1
  729. package/dist/components/Tooltip/Tooltip.svelte +4 -12
  730. package/dist/components/Tooltip/TooltipHost.svelte +136 -15
  731. package/dist/components/Tooltip/index.d.ts +1 -0
  732. package/dist/components/Tooltip/index.js +1 -0
  733. package/dist/components/Tooltip/tooltip.attachment.svelte.d.ts +5 -0
  734. package/dist/components/Tooltip/tooltip.attachment.svelte.js +215 -33
  735. package/dist/components/Tooltip/tooltip.attributes.d.ts +32 -0
  736. package/dist/components/Tooltip/tooltip.attributes.js +28 -0
  737. package/dist/components/Tooltip/tooltip.mcp.d.ts +1 -1
  738. package/dist/components/Tooltip/tooltip.mcp.js +111 -10
  739. package/dist/components/Tooltip/tooltip.props.d.ts +33 -2
  740. package/dist/components/Tooltip/tooltip.surface.d.ts +24 -0
  741. package/dist/components/Tooltip/tooltip.surface.js +42 -0
  742. package/dist/components/Tree/TreeContextMenuSurface.svelte +16 -3
  743. package/dist/components/Utils/BeforeHydratation.svelte +14 -3
  744. package/dist/components/Utils/BeforeHydratation.svelte.d.ts +2 -0
  745. package/dist/components/VideoPlayer/VideoPlayer.svelte.d.ts +1 -1
  746. package/dist/components/VideoPlayer/VideoPlayerSettings.svelte +2 -0
  747. package/dist/generated/componentAliases.d.ts +3 -0
  748. package/dist/generated/componentAliases.js +3 -0
  749. package/dist/generated/componentContract.d.ts +79 -34
  750. package/dist/generated/componentContract.js +231 -6
  751. package/dist/generated/componentMcpRegistry.js +6 -0
  752. package/dist/i18n/ar.js +107 -3
  753. package/dist/i18n/context.svelte.d.ts +6 -0
  754. package/dist/i18n/context.svelte.js +12 -0
  755. package/dist/i18n/de.js +101 -3
  756. package/dist/i18n/en.d.ts +91 -2
  757. package/dist/i18n/en.js +101 -3
  758. package/dist/i18n/es.js +101 -3
  759. package/dist/i18n/fr.js +101 -3
  760. package/dist/i18n/ja.js +101 -3
  761. package/dist/i18n/pt.js +101 -3
  762. package/dist/i18n/zh.js +101 -3
  763. package/dist/tailwind/geometry.js +7 -0
  764. package/dist/tailwind/global.js +31 -0
  765. package/dist/types/index.d.ts +1 -0
  766. package/dist/types/types.mcp.d.ts +1 -1
  767. package/dist/types/types.mcp.js +23 -0
  768. package/dist/utils/cspNonce.d.ts +16 -0
  769. package/dist/utils/cspNonce.js +39 -0
  770. package/dist/utils/cva/merge.d.ts +5 -1
  771. package/dist/utils/cva/merge.js +6 -4
  772. package/dist/utils/focus.d.ts +34 -0
  773. package/dist/utils/focus.js +93 -0
  774. package/dist/utils/focusHistory.d.ts +21 -0
  775. package/dist/utils/focusHistory.js +99 -0
  776. package/dist/utils/handlers.d.ts +7 -0
  777. package/dist/utils/handlers.js +14 -0
  778. package/dist/utils/hoverIntent.d.ts +42 -0
  779. package/dist/utils/hoverIntent.js +57 -0
  780. package/dist/utils/id.d.ts +7 -0
  781. package/dist/utils/id.js +15 -0
  782. package/dist/utils/layers.svelte.d.ts +32 -4
  783. package/dist/utils/layers.svelte.js +214 -21
  784. package/dist/utils/listFilter.d.ts +44 -0
  785. package/dist/utils/listFilter.js +130 -0
  786. package/dist/utils/match.d.ts +35 -0
  787. package/dist/utils/match.js +36 -0
  788. package/dist/utils/number.d.ts +126 -0
  789. package/dist/utils/number.js +401 -0
  790. package/dist/utils/openChange.d.ts +88 -0
  791. package/dist/utils/openChange.js +71 -0
  792. package/dist/utils/openLifecycle.svelte.d.ts +41 -0
  793. package/dist/utils/openLifecycle.svelte.js +134 -0
  794. package/dist/utils/pointerDrag.d.ts +10 -0
  795. package/dist/utils/pointerDrag.js +37 -2
  796. package/dist/utils/pragmaticDragAndDrop.d.ts +2 -1
  797. package/dist/utils/pragmaticDragAndDrop.js +8 -3
  798. package/dist/utils/range.d.ts +62 -0
  799. package/dist/utils/range.js +70 -0
  800. package/dist/utils/requestNativeSubmit.d.ts +17 -0
  801. package/dist/utils/requestNativeSubmit.js +47 -0
  802. package/dist/utils/safeArea.svelte.d.ts +10 -1
  803. package/dist/utils/safeArea.svelte.js +19 -11
  804. package/dist/utils/stateAttributes.d.ts +108 -0
  805. package/dist/utils/stateAttributes.js +78 -0
  806. package/dist/utils/swipeVelocity.d.ts +32 -0
  807. package/dist/utils/swipeVelocity.js +59 -0
  808. package/dist/utils/timer.svelte.d.ts +65 -2
  809. package/dist/utils/timer.svelte.js +159 -25
  810. package/dist/utils/trigger.d.ts +41 -0
  811. package/dist/utils/trigger.js +103 -0
  812. package/dist/utils/typeahead.d.ts +9 -0
  813. package/dist/utils/typeahead.js +21 -9
  814. package/dist/utils/useDndList.svelte.d.ts +1 -1
  815. package/dist/utils/useDndList.svelte.js +6 -23
  816. package/dist/utils/useFocusScope.svelte.d.ts +29 -0
  817. package/dist/utils/useFocusScope.svelte.js +189 -27
  818. package/dist/utils/useHoverAction.svelte.d.ts +44 -4
  819. package/dist/utils/useHoverAction.svelte.js +161 -51
  820. package/dist/utils/useKeyDown.svelte.d.ts +19 -2
  821. package/dist/utils/useKeyDown.svelte.js +19 -12
  822. package/dist/utils/useListNavigation.svelte.d.ts +94 -13
  823. package/dist/utils/useListNavigation.svelte.js +261 -35
  824. package/dist/utils/useLiveAnnouncer.svelte.d.ts +77 -2
  825. package/dist/utils/useLiveAnnouncer.svelte.js +119 -2
  826. package/dist/utils/useNavigation.svelte.d.ts +36 -3
  827. package/dist/utils/useNavigation.svelte.js +699 -332
  828. package/dist/utils/usePressAndHold.svelte.d.ts +38 -0
  829. package/dist/utils/usePressAndHold.svelte.js +191 -0
  830. package/dist/utils/useScrollLock.svelte.d.ts +20 -1
  831. package/dist/utils/useScrollLock.svelte.js +54 -13
  832. package/dist/utils/useSlidingIndicator.svelte.d.ts +2 -0
  833. package/dist/utils/useSlidingIndicator.svelte.js +27 -5
  834. package/dist/utils/useTabBridge.svelte.d.ts +20 -0
  835. package/dist/utils/useTabBridge.svelte.js +109 -0
  836. package/dist/utils/values.d.ts +15 -0
  837. package/dist/utils/values.js +49 -0
  838. package/package.json +31 -2
  839. package/dist/generated/componentMcpRegistry.d.ts +0 -142
  840. package/dist/utils/useDrag.svelte.d.ts +0 -11
  841. package/dist/utils/useDrag.svelte.js +0 -55
@@ -0,0 +1,226 @@
1
+ import { type ClientRectObject, type Placement, type Strategy, type VirtualElement } from '@floating-ui/dom';
2
+ import type { PopupAlign, PopupSide } from '../../utils/stateAttributes.js';
3
+ import type { PopoverAnchorTo, PopoverCollisionBoundary, PopoverFallbackAxisSide, PopoverPlacement, PopoverProps, PopoverSide } from './popover.props.js';
4
+ /** What a floating panel is placed against: the trigger, the `ref` element, or a virtual point. */
5
+ export type PopoverReference = HTMLElement | VirtualElement;
6
+ /** Reading direction a placement resolves logical sides and start/end alignment with. */
7
+ export type PanelDirection = 'ltr' | 'rtl';
8
+ /**
9
+ * How long the visual viewport has to stay still before the panel is placed once more. iOS
10
+ * reports intermediate sizes while the on-screen keyboard slides in and the final one only after
11
+ * its last `resize` event.
12
+ */
13
+ export declare const VIEWPORT_SETTLE_MS = 100;
14
+ /**
15
+ * CSS variables a placement writes on the wrapper, inherited by the panel and its content:
16
+ * the room left between the panel and the viewport edges, the reference's size snapped to the
17
+ * device pixel grid, and the point the panel scales from.
18
+ */
19
+ export declare const PANEL_CSS_VARIABLES: readonly ["--available-width", "--available-height", "--anchor-width", "--anchor-height", "--transform-origin"];
20
+ /** Rounds a CSS pixel length to the device pixel grid, so edges stay crisp on every screen. */
21
+ export declare const snapToDevicePixel: (value: number, ratio?: number) => number;
22
+ /**
23
+ * The floating-ui placement for a requested one: `inline-start` / `inline-end` become `left` /
24
+ * `right` in a left-to-right document and `right` / `left` in a right-to-left one, keeping their
25
+ * alignment. Physical placements pass through (floating-ui mirrors their `start` / `end`
26
+ * alignment on its own).
27
+ */
28
+ export declare const resolvePlacement: (placement: PopoverPlacement, direction: PanelDirection) => Placement;
29
+ export { claimAnchorAttribute, claimPopupOpen, claimPopupSide } from './popover.claims.js';
30
+ /**
31
+ * The side a placed panel reports: the physical side floating-ui resolved, or, when a logical
32
+ * side was requested and the panel stayed on the inline axis, the logical side it landed on (a
33
+ * flip from `inline-end` reports `inline-start`).
34
+ */
35
+ export declare const reportedSide: (resolved: Placement, requested: PopoverPlacement, direction: PanelDirection) => PopupSide;
36
+ /** `start`, `center` or `end` from a resolved placement. */
37
+ export declare const placementAlign: (placement: Placement) => PopupAlign;
38
+ /**
39
+ * The CSS `transform-origin` for a resolved placement: the panel edge facing the reference, at
40
+ * the corner its alignment lines up with. floating-ui aligns a vertical `-start` placement to the
41
+ * reference's right edge in a right-to-left document, so `start` is the right corner there.
42
+ */
43
+ export declare const transformOriginFor: (placement: Placement, direction: PanelDirection) => string;
44
+ /** What one placement asks floating-ui for, besides the reference and the panel. */
45
+ export interface PanelMiddlewareOptions {
46
+ /** Gap in px between the reference and the panel; `undefined` keeps the 4px default. */
47
+ offset?: number;
48
+ /** The viewport `shift` keeps the panel inside. */
49
+ collisionBoundary?: PopoverCollisionBoundary;
50
+ /** The perpendicular sides `flip` falls back to when neither side of the axis fits. */
51
+ fallbackAxisSide?: PopoverFallbackAxisSide;
52
+ /**
53
+ * The requested placement. With `fallbackAxisSide` and a left or right side it narrows the
54
+ * fallback to the one perpendicular side asked for; see `fallbackPlacementsFor`.
55
+ */
56
+ placement?: Placement;
57
+ /**
58
+ * Anchor to the line of a wrapped reference nearest this point (viewport coordinates);
59
+ * `null` lets floating-ui's `inline()` pick the first or last line from the side. Omitted
60
+ * anchors to the whole box.
61
+ */
62
+ line?: {
63
+ x: number;
64
+ y: number;
65
+ } | null;
66
+ /** The arrow element the panel draws toward its reference; omitted for a panel without one. */
67
+ arrow?: HTMLElement | null;
68
+ }
69
+ /** The line box of a wrapped reference nearest a point: the one holding it, else the closest. */
70
+ export declare const nearestLine: <Rect extends ClientRectObject>(rects: Iterable<Rect>, point: {
71
+ x: number;
72
+ y: number;
73
+ }) => Rect | null;
74
+ /**
75
+ * The placements `flip` tries after the requested one when it asks for a perpendicular fallback
76
+ * beside a left or right placement (a submenu). floating-ui's own `fallbackAxisSideDirection`
77
+ * lists both perpendicular sides, and `flip` takes the first that fits: a submenu with no room
78
+ * below its row would jump above it and cover its menu. Only the requested side is kept, so with
79
+ * no room anywhere the least-overflowing candidate wins and `shift` slides it back. `undefined`
80
+ * leaves floating-ui's defaults.
81
+ */
82
+ export declare const fallbackPlacementsFor: (placement: Placement | undefined, fallbackAxisSide: PopoverFallbackAxisSide) => Placement[] | undefined;
83
+ /**
84
+ * The floating-ui middleware every floating panel is placed with, in order: `inline` (only when
85
+ * anchoring to a line without a pointer point), `offset`, `flip`, `size`, `shift`, `arrow` (only
86
+ * with an arrow element) and `hide`. `size` writes the available
87
+ * space and the snapped reference size as CSS variables on the wrapper. It runs before `shift`,
88
+ * so `--available-height` is the room on the panel's own side of the reference: a list capped by
89
+ * it never has to slide over its trigger to fit.
90
+ */
91
+ export declare const panelMiddleware: ({ offset: gap, collisionBoundary, fallbackAxisSide, placement, line, arrow }?: PanelMiddlewareOptions) => {
92
+ name: string;
93
+ options?: any;
94
+ fn: (state: import("@floating-ui/dom").MiddlewareState) => import("@floating-ui/dom").MiddlewareReturn | Promise<import("@floating-ui/dom").MiddlewareReturn>;
95
+ }[];
96
+ /** Everything `computePanelPosition` needs besides the reference and the panel. */
97
+ export interface PanelPositionOptions extends PanelMiddlewareOptions {
98
+ placement: Placement;
99
+ /** The direction floating-ui mirrors `start` / `end` alignment with. */
100
+ direction?: PanelDirection;
101
+ }
102
+ /** Asks floating-ui where the panel goes: viewport-fixed coordinates and the placement after flipping. */
103
+ export declare const computePanelPosition: (reference: PopoverReference, panel: HTMLElement, { placement, direction, ...middleware }: PanelPositionOptions) => Promise<import("@floating-ui/dom").ComputePositionReturn>;
104
+ /**
105
+ * Puts the wrapper at viewport coordinates, rounded to the device pixel grid, and reveals it: a
106
+ * floating panel stays hidden until its first placement lands, so it never flashes at the
107
+ * top-left corner. `anchorHidden` keeps it hidden while its anchor is scrolled out of view.
108
+ * `right` and `bottom` are reset because a `<dialog>` keeps the browser's `inset-inline: 0`,
109
+ * which beats `left` in a right-to-left document.
110
+ */
111
+ export declare const writePanelPosition: (panel: HTMLElement, x: number, y: number, strategy?: Strategy, { anchorHidden }?: {
112
+ anchorHidden?: boolean;
113
+ }) => void;
114
+ /** What floating-ui's `arrow` middleware reports. */
115
+ export type ArrowData = {
116
+ x?: number;
117
+ y?: number;
118
+ centerOffset: number;
119
+ };
120
+ /**
121
+ * Places the arrow on the edge of the panel that faces the reference, along the cross axis where
122
+ * `arrow` put it, and records the physical side as `data-side`. `data-uncentered` marks an arrow
123
+ * pushed off the middle of the panel by a shift. The edge offset is half the arrow's own size:
124
+ * a rotated square then pokes out by half its diagonal's overhang.
125
+ */
126
+ export declare const writeArrowPosition: (arrow: HTMLElement, placement: Placement, data: ArrowData | undefined) => void;
127
+ /**
128
+ * Hands the wrapper back to the document's layout (an inline panel, a mobile sheet). `reveal`
129
+ * also clears the visibility a floating panel is hidden with until placed.
130
+ */
131
+ export declare const releasePanelPosition: (panel: HTMLElement, reveal: boolean) => void;
132
+ /** How a directed transition moves the panel in from the reference. */
133
+ export interface DirectedMotion {
134
+ /** CSS `transform-origin` for the animated panel. */
135
+ transformOrigin: string;
136
+ /** The axis the panel travels along. */
137
+ axis: 'x' | 'y';
138
+ /** The signed fly distance in px, written to the `in` and `out` params on `axis`. */
139
+ distance: number;
140
+ }
141
+ /**
142
+ * The directed transition for a resolved placement: the panel travels along the placement axis
143
+ * and scales from the edge facing the reference, at the corner its alignment lines up with.
144
+ */
145
+ export declare const directedMotion: (placement: Placement, direction?: PanelDirection) => DirectedMotion;
146
+ /**
147
+ * Writes a directed motion's fly distance into transition params. The other axis gets back the
148
+ * value it had before any directed motion, so a panel that opened on another axis earlier
149
+ * doesn't slide in diagonally.
150
+ */
151
+ export declare const applyDirectedOffset: (params: {
152
+ x?: number | `${number}%`;
153
+ y?: number | `${number}%`;
154
+ }, { axis, distance }: Pick<DirectedMotion, "axis" | "distance">) => void;
155
+ /** One written placement, reported to the owner. */
156
+ export interface PanelPlacement {
157
+ /** The positioned wrapper. */
158
+ panel: HTMLElement;
159
+ /** The placement floating-ui resolved after flipping; `null` when `positionPanel` placed the panel. */
160
+ placement: Placement | null;
161
+ /** The side the panel sits on, logical when a logical side was requested; `none` for `positionPanel`. */
162
+ side: PopoverSide;
163
+ /** The panel's alignment with the reference; `null` for `positionPanel`. */
164
+ align: PopupAlign | null;
165
+ /** Whether the reference is scrolled out of view, which keeps the panel hidden. */
166
+ anchorHidden: boolean;
167
+ /** The direction the placement was resolved with. */
168
+ direction: PanelDirection;
169
+ /** Whether this is the placement made as the panel mounted. */
170
+ mount: boolean;
171
+ }
172
+ /** What the positioner reads from its owner and reports back to it. */
173
+ export interface PanelPositionerOptions {
174
+ /** The reference the panel is placed against, or `null` while there is none. */
175
+ reference: () => PopoverReference | null;
176
+ /** Whether floating-ui places the panel: inline panels and mobile sheets follow the document. */
177
+ floating: () => boolean;
178
+ /** Whether the opening transition has ended. Until it has, only the mount placement runs. */
179
+ settled: () => boolean;
180
+ /** The preferred placement, resolved from responsive values; logical sides allowed. */
181
+ placement: () => PopoverPlacement;
182
+ /** The reading direction logical sides and alignment resolve with. Default `'ltr'`. */
183
+ direction?: () => PanelDirection;
184
+ /** Gap in px between the reference and the panel; `undefined` uses the default. */
185
+ offset: () => number | undefined;
186
+ /** Whether the panel is at least as wide as the reference. */
187
+ fitTrigger: () => boolean;
188
+ /** The consumer's own placement, tried before floating-ui. */
189
+ positionPanel: () => PopoverProps['positionPanel'];
190
+ /** The viewport `shift` keeps the panel inside. Default `'visualViewport'`. */
191
+ collisionBoundary?: () => PopoverCollisionBoundary | undefined;
192
+ /** The perpendicular sides `flip` falls back to. Default `'none'`. */
193
+ fallbackAxisSide?: () => PopoverFallbackAxisSide | undefined;
194
+ /** Whether the panel anchors to the reference's box or to one of its lines. Default `'box'`. */
195
+ anchorTo?: () => PopoverAnchorTo | undefined;
196
+ /** The point (viewport coordinates) that picks the line when anchoring to a line. */
197
+ anchorPoint?: () => {
198
+ x: number;
199
+ y: number;
200
+ } | null;
201
+ /** The arrow element inside the panel, or `null` for a panel without one. */
202
+ arrow?: () => HTMLElement | null;
203
+ /**
204
+ * Receives the panel's minimum width in px: the reference width snapped to the device pixel
205
+ * grid (`fitTrigger`), the `minWidth` returned by `positionPanel`, or `null` when the panel is
206
+ * not floating.
207
+ */
208
+ setMinWidth: (width: number | null) => void;
209
+ /** Runs after each write of the panel's coordinates. */
210
+ onPlace: (placed: PanelPlacement) => void;
211
+ }
212
+ export interface PanelPositioner {
213
+ /**
214
+ * Places a floating panel once. Outside the mount placement it waits for the opening
215
+ * transition to end; for a panel that is not floating it only clears the minimum width.
216
+ */
217
+ place: (panel: HTMLElement, mount?: boolean) => Promise<void>;
218
+ /**
219
+ * Hides the panel, places it, and re-places it on every change floating-ui observes (scroll,
220
+ * resize, either element's size, the visual viewport) and once more when the visual viewport
221
+ * has settled after a change (an on-screen keyboard, pinch-zoom). `onReferenceDetached` runs
222
+ * instead of a placement once an element reference has left the document. Returns the cleanup.
223
+ */
224
+ track: (panel: HTMLElement, reference: PopoverReference, onReferenceDetached: () => void) => () => void;
225
+ }
226
+ export declare const createPanelPositioner: (options: PanelPositionerOptions) => PanelPositioner;
@@ -0,0 +1,402 @@
1
+ // Floating placement for Popover panels: the floating-ui middleware chain, the coordinates and
2
+ // CSS variables written on the portaled wrapper, logical sides, the motion that starts from the
3
+ // side facing the reference, and the autoUpdate wiring. PopoverState owns the reactive state (open
4
+ // state, the panel's minimum width, its transform origin and resolved side) and hands the
5
+ // positioner getters for its inputs and callbacks for its outputs. The getters are read when a
6
+ // placement runs; the synchronous part of the mount placement runs inside the panel attachment,
7
+ // so the inputs it reads re-place a mounted panel when they change.
8
+ import { arrow as arrowMiddleware, autoUpdate, computePosition, flip, hide, inline, offset, platform, shift, size } from '@floating-ui/dom';
9
+ /** Gap in px between the reference and the panel when `offset` is unset. */
10
+ const DEFAULT_OFFSET = 4;
11
+ /** Space in px that `flip`, `shift` and `size` keep between the panel and the viewport edges. */
12
+ const VIEWPORT_PADDING = 20;
13
+ /** Distance in px a directed transition travels along the placement axis. */
14
+ const DIRECTED_DISTANCE = 10;
15
+ /**
16
+ * How long the visual viewport has to stay still before the panel is placed once more. iOS
17
+ * reports intermediate sizes while the on-screen keyboard slides in and the final one only after
18
+ * its last `resize` event.
19
+ */
20
+ export const VIEWPORT_SETTLE_MS = 100;
21
+ /**
22
+ * CSS variables a placement writes on the wrapper, inherited by the panel and its content:
23
+ * the room left between the panel and the viewport edges, the reference's size snapped to the
24
+ * device pixel grid, and the point the panel scales from.
25
+ */
26
+ export const PANEL_CSS_VARIABLES = [
27
+ '--available-width',
28
+ '--available-height',
29
+ '--anchor-width',
30
+ '--anchor-height',
31
+ '--transform-origin'
32
+ ];
33
+ /** Rounds a CSS pixel length to the device pixel grid, so edges stay crisp on every screen. */
34
+ export const snapToDevicePixel = (value, ratio = 1) => {
35
+ const scale = ratio > 0 ? ratio : 1;
36
+ return Math.round(value * scale) / scale;
37
+ };
38
+ /** The device pixel ratio of the window an element lives in. */
39
+ const devicePixelRatioOf = (element) => element.ownerDocument.defaultView?.devicePixelRatio || 1;
40
+ const isLogical = (placement) => placement.startsWith('inline-');
41
+ /**
42
+ * The floating-ui placement for a requested one: `inline-start` / `inline-end` become `left` /
43
+ * `right` in a left-to-right document and `right` / `left` in a right-to-left one, keeping their
44
+ * alignment. Physical placements pass through (floating-ui mirrors their `start` / `end`
45
+ * alignment on its own).
46
+ */
47
+ export const resolvePlacement = (placement, direction) => {
48
+ if (!isLogical(placement))
49
+ return placement;
50
+ const [, edge, align] = placement.split('-');
51
+ const side = (edge === 'start') === (direction === 'ltr') ? 'left' : 'right';
52
+ return (align ? `${side}-${align}` : side);
53
+ };
54
+ // The anchor attribute claims live in their own module (no floating-ui), so Dialog and the
55
+ // form triggers share them; re-exported here for the callers that place panels.
56
+ export { claimAnchorAttribute, claimPopupOpen, claimPopupSide } from './popover.claims.js';
57
+ /**
58
+ * The side a placed panel reports: the physical side floating-ui resolved, or, when a logical
59
+ * side was requested and the panel stayed on the inline axis, the logical side it landed on (a
60
+ * flip from `inline-end` reports `inline-start`).
61
+ */
62
+ export const reportedSide = (resolved, requested, direction) => {
63
+ const side = resolved.split('-')[0];
64
+ if (!isLogical(requested) || side === 'top' || side === 'bottom')
65
+ return side;
66
+ return (side === 'right') === (direction === 'ltr') ? 'inline-end' : 'inline-start';
67
+ };
68
+ /** `start`, `center` or `end` from a resolved placement. */
69
+ export const placementAlign = (placement) => placement.split('-')[1] ?? 'center';
70
+ /**
71
+ * The CSS `transform-origin` for a resolved placement: the panel edge facing the reference, at
72
+ * the corner its alignment lines up with. floating-ui aligns a vertical `-start` placement to the
73
+ * reference's right edge in a right-to-left document, so `start` is the right corner there.
74
+ */
75
+ export const transformOriginFor = (placement, direction) => {
76
+ const side = placement.split('-')[0];
77
+ const align = placementAlign(placement);
78
+ if (side === 'top' || side === 'bottom') {
79
+ const x = align === 'center'
80
+ ? 'center'
81
+ : (align === 'start') === (direction === 'ltr')
82
+ ? 'left'
83
+ : 'right';
84
+ return `${x} ${side === 'top' ? 'bottom' : 'top'}`;
85
+ }
86
+ const y = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';
87
+ return `${side === 'left' ? 'right' : 'left'} ${y}`;
88
+ };
89
+ /**
90
+ * Whether floating-ui's `hide()` result can be trusted for this reference. A bare virtual point
91
+ * (a context menu at the cursor) has no scroll container to leave, and a reference with no size
92
+ * reads as clipped whenever it touches a viewport edge.
93
+ */
94
+ const canReportHidden = (reference, rect) => (reference instanceof Element || !!reference.contextElement) &&
95
+ (rect.width > 0 || rect.height > 0);
96
+ /** Room in px the arrow keeps from the panel's corners, so it never sits on a rounded corner. */
97
+ const ARROW_PADDING = 10;
98
+ /** The line box of a wrapped reference nearest a point: the one holding it, else the closest. */
99
+ export const nearestLine = (rects, point) => {
100
+ let nearest = null;
101
+ let nearestDistance = Infinity;
102
+ for (const rect of rects) {
103
+ if (!rect.width && !rect.height)
104
+ continue;
105
+ const dx = Math.max(rect.left - point.x, 0, point.x - rect.right);
106
+ const dy = Math.max(rect.top - point.y, 0, point.y - rect.bottom);
107
+ const distance = dx * dx + dy * dy;
108
+ if (distance < nearestDistance) {
109
+ nearest = rect;
110
+ nearestDistance = distance;
111
+ }
112
+ }
113
+ return nearest;
114
+ };
115
+ /**
116
+ * A reference standing for the line of `reference` nearest the point. floating-ui's own
117
+ * `inline()` honours a point only for two disjoint lines; a wrapped link usually has overlapping
118
+ * ones, so the line is chosen here and placed like any other box. The line is read at placement
119
+ * time, so a scroll or resize follows it.
120
+ */
121
+ const lineReference = (reference, point) => ({
122
+ contextElement: reference instanceof Element ? reference : reference.contextElement,
123
+ getBoundingClientRect: () => nearestLine(reference.getClientRects?.() ?? [], point) ?? reference.getBoundingClientRect()
124
+ });
125
+ const OPPOSITE_SIDE = {
126
+ top: 'bottom',
127
+ bottom: 'top',
128
+ left: 'right',
129
+ right: 'left'
130
+ };
131
+ const OPPOSITE_ALIGNMENT = { start: 'end', end: 'start' };
132
+ /**
133
+ * The placements `flip` tries after the requested one when it asks for a perpendicular fallback
134
+ * beside a left or right placement (a submenu). floating-ui's own `fallbackAxisSideDirection`
135
+ * lists both perpendicular sides, and `flip` takes the first that fits: a submenu with no room
136
+ * below its row would jump above it and cover its menu. Only the requested side is kept, so with
137
+ * no room anywhere the least-overflowing candidate wins and `shift` slides it back. `undefined`
138
+ * leaves floating-ui's defaults.
139
+ */
140
+ export const fallbackPlacementsFor = (placement, fallbackAxisSide) => {
141
+ if (!placement || fallbackAxisSide === 'none')
142
+ return undefined;
143
+ const [side, align] = placement.split('-');
144
+ if (side !== 'left' && side !== 'right')
145
+ return undefined;
146
+ const alignments = align ? [align, OPPOSITE_ALIGNMENT[align]] : [undefined];
147
+ const withAlign = (target, alignment) => (alignment ? `${target}-${alignment}` : target);
148
+ const cross = fallbackAxisSide === 'end' ? 'bottom' : 'top';
149
+ return [
150
+ // What flip tries without the option: the opposite side, then the alignment mirrors.
151
+ ...(align ? [withAlign(side, OPPOSITE_ALIGNMENT[align])] : []),
152
+ ...alignments.map((alignment) => withAlign(OPPOSITE_SIDE[side], alignment)),
153
+ ...alignments.map((alignment) => withAlign(cross, alignment))
154
+ ];
155
+ };
156
+ /**
157
+ * The floating-ui middleware every floating panel is placed with, in order: `inline` (only when
158
+ * anchoring to a line without a pointer point), `offset`, `flip`, `size`, `shift`, `arrow` (only
159
+ * with an arrow element) and `hide`. `size` writes the available
160
+ * space and the snapped reference size as CSS variables on the wrapper. It runs before `shift`,
161
+ * so `--available-height` is the room on the panel's own side of the reference: a list capped by
162
+ * it never has to slide over its trigger to fit.
163
+ */
164
+ export const panelMiddleware = ({ offset: gap, collisionBoundary = 'visualViewport', fallbackAxisSide = 'none', placement, line, arrow } = {}) => [
165
+ ...(line === null ? [inline({})] : []),
166
+ offset(gap ?? DEFAULT_OFFSET),
167
+ flip({
168
+ mainAxis: true,
169
+ crossAxis: true,
170
+ padding: VIEWPORT_PADDING,
171
+ fallbackAxisSideDirection: fallbackAxisSide,
172
+ fallbackPlacements: fallbackPlacementsFor(placement, fallbackAxisSide)
173
+ }),
174
+ size({
175
+ padding: VIEWPORT_PADDING,
176
+ apply({ elements, rects, availableWidth, availableHeight }) {
177
+ const wrapper = elements.floating;
178
+ const ratio = devicePixelRatioOf(wrapper);
179
+ const style = wrapper.style;
180
+ style.setProperty('--available-width', `${Math.max(0, availableWidth)}px`);
181
+ style.setProperty('--available-height', `${Math.max(0, availableHeight)}px`);
182
+ style.setProperty('--anchor-width', `${snapToDevicePixel(rects.reference.width, ratio)}px`);
183
+ style.setProperty('--anchor-height', `${snapToDevicePixel(rects.reference.height, ratio)}px`);
184
+ }
185
+ }),
186
+ shift({
187
+ mainAxis: true,
188
+ crossAxis: true,
189
+ padding: VIEWPORT_PADDING,
190
+ // floating-ui's `viewport` is the visual viewport; the layout viewport ignores
191
+ // pinch-zoom, so panning a zoomed page doesn't drag the panel along.
192
+ rootBoundary: collisionBoundary === 'layoutViewport' ? 'layoutViewport' : 'viewport'
193
+ }),
194
+ // After `shift`, so the arrow follows the panel to where it finally sits.
195
+ ...(arrow ? [arrowMiddleware({ element: arrow, padding: ARROW_PADDING })] : []),
196
+ hide()
197
+ ];
198
+ /** Asks floating-ui where the panel goes: viewport-fixed coordinates and the placement after flipping. */
199
+ export const computePanelPosition = (reference, panel, { placement, direction, ...middleware }) => computePosition(middleware.line ? lineReference(reference, middleware.line) : reference, panel, {
200
+ strategy: 'fixed',
201
+ placement,
202
+ middleware: panelMiddleware({ ...middleware, placement }),
203
+ // The direction resolved for the reference, not the portaled wrapper's own: a trigger in
204
+ // a `dir="rtl"` subtree aligns like the subtree even though its panel sits under <body>.
205
+ ...(direction ? { platform: { ...platform, isRTL: () => direction === 'rtl' } } : {})
206
+ });
207
+ /**
208
+ * Puts the wrapper at viewport coordinates, rounded to the device pixel grid, and reveals it: a
209
+ * floating panel stays hidden until its first placement lands, so it never flashes at the
210
+ * top-left corner. `anchorHidden` keeps it hidden while its anchor is scrolled out of view.
211
+ * `right` and `bottom` are reset because a `<dialog>` keeps the browser's `inset-inline: 0`,
212
+ * which beats `left` in a right-to-left document.
213
+ */
214
+ export const writePanelPosition = (panel, x, y, strategy = 'fixed', { anchorHidden = false } = {}) => {
215
+ const ratio = devicePixelRatioOf(panel);
216
+ Object.assign(panel.style, {
217
+ position: strategy,
218
+ left: `${snapToDevicePixel(x, ratio)}px`,
219
+ top: `${snapToDevicePixel(y, ratio)}px`,
220
+ right: 'auto',
221
+ bottom: 'auto',
222
+ visibility: anchorHidden ? 'hidden' : ''
223
+ });
224
+ };
225
+ const ARROW_STATIC_SIDE = {
226
+ top: 'bottom',
227
+ right: 'left',
228
+ bottom: 'top',
229
+ left: 'right'
230
+ };
231
+ /**
232
+ * Places the arrow on the edge of the panel that faces the reference, along the cross axis where
233
+ * `arrow` put it, and records the physical side as `data-side`. `data-uncentered` marks an arrow
234
+ * pushed off the middle of the panel by a shift. The edge offset is half the arrow's own size:
235
+ * a rotated square then pokes out by half its diagonal's overhang.
236
+ */
237
+ export const writeArrowPosition = (arrow, placement, data) => {
238
+ const side = placement.split('-')[0];
239
+ const edge = ARROW_STATIC_SIDE[side];
240
+ const half = (arrow.offsetWidth || 0) / 2;
241
+ Object.assign(arrow.style, {
242
+ left: data?.x != null ? `${data.x}px` : '',
243
+ top: data?.y != null ? `${data.y}px` : '',
244
+ right: '',
245
+ bottom: '',
246
+ [edge]: `${-half}px`
247
+ });
248
+ arrow.setAttribute('data-side', side);
249
+ if (data && data.centerOffset !== 0)
250
+ arrow.setAttribute('data-uncentered', '');
251
+ else
252
+ arrow.removeAttribute('data-uncentered');
253
+ };
254
+ /**
255
+ * Hands the wrapper back to the document's layout (an inline panel, a mobile sheet). `reveal`
256
+ * also clears the visibility a floating panel is hidden with until placed.
257
+ */
258
+ export const releasePanelPosition = (panel, reveal) => {
259
+ Object.assign(panel.style, reveal
260
+ ? { position: '', left: '', top: '', right: '', bottom: '', visibility: '' }
261
+ : { position: '', left: '', top: '', right: '', bottom: '' });
262
+ for (const name of PANEL_CSS_VARIABLES)
263
+ panel.style.removeProperty(name);
264
+ };
265
+ /**
266
+ * The directed transition for a resolved placement: the panel travels along the placement axis
267
+ * and scales from the edge facing the reference, at the corner its alignment lines up with.
268
+ */
269
+ export const directedMotion = (placement, direction = 'ltr') => {
270
+ const side = placement.split('-')[0];
271
+ return {
272
+ transformOrigin: transformOriginFor(placement, direction),
273
+ axis: side === 'top' || side === 'bottom' ? 'y' : 'x',
274
+ distance: side === 'top' || side === 'left' ? DIRECTED_DISTANCE : -DIRECTED_DISTANCE
275
+ };
276
+ };
277
+ /** The fly offsets a transition had before a directed motion first wrote to it. */
278
+ const undirectedOffsets = new WeakMap();
279
+ /**
280
+ * Writes a directed motion's fly distance into transition params. The other axis gets back the
281
+ * value it had before any directed motion, so a panel that opened on another axis earlier
282
+ * doesn't slide in diagonally.
283
+ */
284
+ export const applyDirectedOffset = (params, { axis, distance }) => {
285
+ let base = undirectedOffsets.get(params);
286
+ if (!base) {
287
+ base = { x: params.x, y: params.y };
288
+ undirectedOffsets.set(params, base);
289
+ }
290
+ Object.assign(params, base, { [axis]: distance });
291
+ };
292
+ /**
293
+ * Writes the reference's size, snapped to the device pixel grid, before floating-ui runs; returns
294
+ * the box and its snapped width.
295
+ */
296
+ const writeAnchorSize = (panel, reference) => {
297
+ const ratio = devicePixelRatioOf(panel);
298
+ const rect = reference.getBoundingClientRect();
299
+ const width = snapToDevicePixel(rect.width, ratio);
300
+ panel.style.setProperty('--anchor-width', `${width}px`);
301
+ panel.style.setProperty('--anchor-height', `${snapToDevicePixel(rect.height, ratio)}px`);
302
+ return { rect, width };
303
+ };
304
+ export const createPanelPositioner = (options) => {
305
+ const place = async (panel, mount = false) => {
306
+ const reference = options.floating() ? options.reference() : null;
307
+ if (!reference) {
308
+ options.setMinWidth(null);
309
+ return;
310
+ }
311
+ if (!mount && !options.settled()) {
312
+ return;
313
+ }
314
+ const direction = options.direction?.() ?? 'ltr';
315
+ const anchor = writeAnchorSize(panel, reference);
316
+ if (options.fitTrigger()) {
317
+ options.setMinWidth(anchor.width);
318
+ }
319
+ const custom = options.positionPanel()?.({ panel, reference });
320
+ if (custom) {
321
+ if (custom.minWidth != null)
322
+ options.setMinWidth(custom.minWidth);
323
+ writePanelPosition(panel, custom.x, custom.y);
324
+ panel.style.removeProperty('--transform-origin');
325
+ options.onPlace({
326
+ panel,
327
+ placement: null,
328
+ side: 'none',
329
+ align: null,
330
+ anchorHidden: false,
331
+ direction,
332
+ mount
333
+ });
334
+ return;
335
+ }
336
+ const requested = options.placement();
337
+ const lineAnchor = options.anchorTo?.() === 'line' && typeof reference.getClientRects === 'function';
338
+ const arrow = options.arrow?.() ?? null;
339
+ const { x, y, strategy, placement, middlewareData } = await computePanelPosition(reference, panel, {
340
+ placement: resolvePlacement(requested, direction),
341
+ direction,
342
+ offset: options.offset(),
343
+ collisionBoundary: options.collisionBoundary?.(),
344
+ fallbackAxisSide: options.fallbackAxisSide?.(),
345
+ ...(lineAnchor ? { line: options.anchorPoint?.() ?? null } : {}),
346
+ arrow
347
+ });
348
+ // The panel unmounted while floating-ui measured it: nothing left to place or report.
349
+ if (!panel.isConnected)
350
+ return;
351
+ const anchorHidden = !!middlewareData?.hide?.referenceHidden && canReportHidden(reference, anchor.rect);
352
+ writePanelPosition(panel, x, y, strategy, { anchorHidden });
353
+ if (arrow?.isConnected)
354
+ writeArrowPosition(arrow, placement, middlewareData?.arrow);
355
+ panel.style.setProperty('--transform-origin', transformOriginFor(placement, direction));
356
+ options.onPlace({
357
+ panel,
358
+ placement,
359
+ side: reportedSide(placement, requested, direction),
360
+ align: placementAlign(placement),
361
+ anchorHidden,
362
+ direction,
363
+ mount
364
+ });
365
+ };
366
+ const track = (panel, reference, onReferenceDetached) => {
367
+ // Hidden until the first placement resolves (computePosition is async). Until `size`
368
+ // measures the real space, the panel may use the whole viewport.
369
+ panel.style.visibility = 'hidden';
370
+ panel.style.setProperty('--available-width', '100vw');
371
+ panel.style.setProperty('--available-height', '100dvh');
372
+ void place(panel, true);
373
+ const update = () => {
374
+ // The observers also fire when the reference leaves the document (a `ref` element
375
+ // removed without a teardown): report it instead of placing against a detached node.
376
+ if (reference instanceof Element && !reference.isConnected) {
377
+ onReferenceDetached();
378
+ return;
379
+ }
380
+ void place(panel);
381
+ };
382
+ const stopObserving = autoUpdate(reference, panel, update);
383
+ // floating-ui places the panel on every visual viewport event, but iOS reports the size an
384
+ // on-screen keyboard leaves only after its last `resize`: place the panel once more when
385
+ // the viewport has stayed still, so a dropdown never stays under the keyboard.
386
+ const visualViewport = panel.ownerDocument.defaultView?.visualViewport ?? null;
387
+ let settleTimer;
388
+ const onViewportChange = () => {
389
+ clearTimeout(settleTimer);
390
+ settleTimer = setTimeout(update, VIEWPORT_SETTLE_MS);
391
+ };
392
+ visualViewport?.addEventListener('resize', onViewportChange);
393
+ visualViewport?.addEventListener('scroll', onViewportChange);
394
+ return () => {
395
+ clearTimeout(settleTimer);
396
+ visualViewport?.removeEventListener('resize', onViewportChange);
397
+ visualViewport?.removeEventListener('scroll', onViewportChange);
398
+ stopObserving();
399
+ };
400
+ };
401
+ return { place, track };
402
+ };