solid-baseui 0.1.0-alpha.0 → 0.1.0-alpha.1

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 (311) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +95 -8
  3. package/dist/lib/client/DialogHandle-BGyIbcvg.js +521 -0
  4. package/dist/lib/client/DialogPopup-Df7MC358.js +138 -0
  5. package/dist/lib/client/FieldControl-C0PATyKV.js +142 -0
  6. package/dist/lib/client/{FocusManager-grSdNHqW.js → FocusManager-NP1uPXTi.js} +5 -5
  7. package/dist/lib/client/{FormContext-BB05lWOI.js → FormContext-CwLBtm_d.js} +1 -0
  8. package/dist/lib/client/{LabelableContext-DKsB0fIx.js → LabelableContext-CmQF-TX2.js} +3 -6
  9. package/dist/lib/client/MenuSubmenuTrigger-yfncqM-D.js +1584 -0
  10. package/dist/lib/client/{PopupHandle-CcJG4NMy.js → PopupHandle-CQI6Om1Z.js} +1 -1
  11. package/dist/lib/client/{PopupStore-DjB-wO88.js → PopupStore-Du0O57fL.js} +118 -98
  12. package/dist/lib/client/{PopupViewport-DgrIqQea.js → PopupViewport-IS4XU03s.js} +2 -2
  13. package/dist/lib/client/Separator-D5oJzlA3.js +27 -0
  14. package/dist/lib/client/TriggerFocusGuards-Cs8LVBj5.js +51 -0
  15. package/dist/lib/client/accordion/index.js +1 -1
  16. package/dist/lib/client/accordion-BFeZFpJZ.js +381 -0
  17. package/dist/lib/client/alert-dialog/index.js +1 -1
  18. package/dist/lib/client/{alert-dialog-BH_3ndio.js → alert-dialog-BxGUF8_Q.js} +2 -2
  19. package/dist/lib/client/autocomplete/index.js +1 -1
  20. package/dist/lib/client/{autocomplete-Cob_FZEP.js → autocomplete-C9QA98XD.js} +30 -25
  21. package/dist/lib/client/avatar/index.js +1 -1
  22. package/dist/lib/client/avatar-BQoEzzav.js +191 -0
  23. package/dist/lib/client/button/index.js +1 -1
  24. package/dist/lib/client/button-akYS6FyY.js +88 -0
  25. package/dist/lib/client/checkbox/index.js +1 -1
  26. package/dist/lib/client/checkbox-DOXtzBhA.js +425 -0
  27. package/dist/lib/client/checkbox-group/index.js +1 -1
  28. package/dist/lib/client/checkbox-group-CwMDoSTK.js +135 -0
  29. package/dist/lib/client/collapsible/index.js +1 -1
  30. package/dist/lib/client/collapsible-t8YReaIp.js +230 -0
  31. package/dist/lib/client/combobox/index.js +2 -2
  32. package/dist/lib/client/combobox-6DhOdzit.js +399 -0
  33. package/dist/lib/client/{constants-BYjBUIIi.js → constants-cOVxAoxB.js} +5 -1
  34. package/dist/lib/client/context-menu/index.js +1 -1
  35. package/dist/lib/client/context-menu-CplDpqmi.js +220 -0
  36. package/dist/lib/client/{createAnchorPositioning-DcxDXUgB.js → createAnchorPositioning-D96gu-Dz.js} +148 -145
  37. package/dist/lib/client/{createCollapsiblePanel-DeDu0O2t.js → createCollapsiblePanel-BQ8r4RTi.js} +1 -1
  38. package/dist/lib/client/createFocusInteraction--s9_qBf3.js +60 -0
  39. package/dist/lib/client/createLabelableId-DxJRwMUJ.js +14 -0
  40. package/dist/lib/client/{createPopupAutoResize-CGNiLhGq.js → createPopupAutoResize-Dn-stj-8.js} +1 -1
  41. package/dist/lib/client/{createTransitionStatus-B1L-whed.js → createTransitionStatus-BL_cPSEA.js} +12 -12
  42. package/dist/lib/client/dialog/index.js +1 -1
  43. package/dist/lib/client/{dialog-DkaQwIgP.js → dialog-B9tR9X48.js} +2 -2
  44. package/dist/lib/client/drawer/index.js +1 -1
  45. package/dist/lib/client/drawer-dyr3_sKQ.js +1539 -0
  46. package/dist/lib/client/field/index.js +1 -1
  47. package/dist/lib/client/field-CjUAjp1m.js +483 -0
  48. package/dist/lib/client/fieldset/index.js +1 -1
  49. package/dist/lib/client/fieldset-Byqk3noT.js +70 -0
  50. package/dist/lib/client/form/index.js +1 -1
  51. package/dist/lib/client/form-6Ne_bWQX.js +109 -0
  52. package/dist/lib/client/index.js +44 -42
  53. package/dist/lib/client/input/index.js +1 -1
  54. package/dist/lib/client/{input-gb0ejxkm.js → input-_QHvSSqM.js} +1 -1
  55. package/dist/lib/client/internals/form-context/index.js +1 -1
  56. package/dist/lib/client/internals/labelable-provider/index.js +1 -1
  57. package/dist/lib/client/menu/index.js +1 -1
  58. package/dist/lib/client/menu-DLqUBmMK.js +334 -0
  59. package/dist/lib/client/menubar/index.js +1 -1
  60. package/dist/lib/client/menubar-DhPRUQZ6.js +163 -0
  61. package/dist/lib/client/{mergeStyleValue-C4ITiiIV.js → mergeStyleValue-DhTA9Nwe.js} +7 -3
  62. package/dist/lib/client/meter/index.js +1 -1
  63. package/dist/lib/client/meter-BvWdppcx.js +178 -0
  64. package/dist/lib/client/navigation-menu/index.js +1 -1
  65. package/dist/lib/client/navigation-menu-mVHV41Ky.js +1070 -0
  66. package/dist/lib/client/number-field/index.js +1 -1
  67. package/dist/lib/client/number-field-DusLw_0X.js +1043 -0
  68. package/dist/lib/client/otp-field/index.js +1 -1
  69. package/dist/lib/client/otp-field-D-B9tZzF.js +584 -0
  70. package/dist/lib/client/popover/index.js +1 -1
  71. package/dist/lib/client/popover-Cv7xn0nW.js +938 -0
  72. package/dist/lib/client/popupStateMapping-C6jQ_LKo.js +371 -0
  73. package/dist/lib/client/preview-card/index.js +1 -1
  74. package/dist/lib/client/preview-card-FTN_aafM.js +632 -0
  75. package/dist/lib/client/progress/index.js +1 -1
  76. package/dist/lib/client/progress-AVKxvgpc.js +195 -0
  77. package/dist/lib/client/radio/index.js +1 -1
  78. package/dist/lib/client/radio-DA_oZhQT.js +284 -0
  79. package/dist/lib/client/radio-group/index.js +1 -1
  80. package/dist/lib/client/radio-group-CWtQxWDl.js +195 -0
  81. package/dist/lib/client/runOnceAnimationsFinish-CFADb4CN.js +49 -0
  82. package/dist/lib/client/{safePolygon--bbKn0c8.js → safePolygon-DJG0VIVo.js} +4 -0
  83. package/dist/lib/client/scroll-area/index.js +1 -1
  84. package/dist/lib/client/scroll-area-NCr49LkD.js +717 -0
  85. package/dist/lib/client/select/index.js +1 -1
  86. package/dist/lib/client/select-DSPJt7Rk.js +1933 -0
  87. package/dist/lib/client/separator/index.js +1 -1
  88. package/dist/lib/client/slider/index.js +1 -1
  89. package/dist/lib/client/slider-CWq9hxFf.js +927 -0
  90. package/dist/lib/client/switch/index.js +1 -1
  91. package/dist/lib/client/switch-CPl7QHKI.js +306 -0
  92. package/dist/lib/client/tabs/index.js +1 -1
  93. package/dist/lib/client/tabs-Bn4rZDyZ.js +692 -0
  94. package/dist/lib/client/toast/index.js +1 -1
  95. package/dist/lib/client/toast-7LdqZWOs.js +1118 -0
  96. package/dist/lib/client/toggle/index.js +1 -1
  97. package/dist/lib/client/toggle-CsC37e3e.js +142 -0
  98. package/dist/lib/client/toggle-group/index.js +1 -1
  99. package/dist/lib/client/toggle-group-DSWb9HxN.js +134 -0
  100. package/dist/lib/client/toolbar/index.js +1 -1
  101. package/dist/lib/client/toolbar-DcCi3HNp.js +504 -0
  102. package/dist/lib/client/tooltip/index.js +1 -1
  103. package/dist/lib/client/tooltip-D-PkGco9.js +849 -0
  104. package/dist/lib/client/use-render/index.js +2 -0
  105. package/dist/lib/client/useFilteredItems-B7z2CGMV.js +2270 -0
  106. package/dist/lib/client/useRender-CxZ8PI-g.js +12 -0
  107. package/dist/lib/server/{DialogHandle-ATZlm9RC.js → DialogHandle-nJSSy_jM.js} +24 -33
  108. package/dist/lib/server/{DialogPopup-BebI-w5P.js → DialogPopup-Da1aIxVA.js} +10 -13
  109. package/dist/lib/server/{FieldControl-Y_kI7ARp.js → FieldControl-BDeNR3ug.js} +56 -20
  110. package/dist/lib/server/{FocusManager-BrbZVWME.js → FocusManager-1LfoCsya.js} +1 -3
  111. package/dist/lib/server/{FormContext-pvESt85v.js → FormContext-CYwo_ZnB.js} +1 -0
  112. package/dist/lib/server/{LabelableContext-DZP3rgAY.js → LabelableContext-BTeF0IWb.js} +4 -6
  113. package/dist/lib/server/{MenuSubmenuTrigger-DA4gsv6z.js → MenuSubmenuTrigger-rR8ZN7YR.js} +133 -166
  114. package/dist/lib/server/{PopupHandle-DthPgNjy.js → PopupHandle-Ct6wywmP.js} +1 -1
  115. package/dist/lib/server/{PopupStore-DEs3FAEe.js → PopupStore-kHjFPiQ5.js} +38 -14
  116. package/dist/lib/server/{PopupViewport-3r_KTFwX.js → PopupViewport-DftN5VUp.js} +2 -2
  117. package/dist/lib/server/{Separator-vhhYxWGr.js → Separator-DTvtnxzP.js} +4 -6
  118. package/dist/lib/server/TriggerFocusGuards-CvoGfft9.js +61 -0
  119. package/dist/lib/server/accordion/index.js +32 -70
  120. package/dist/lib/server/alert-dialog/index.js +2 -2
  121. package/dist/lib/server/autocomplete/index.js +14 -5
  122. package/dist/lib/server/avatar/index.js +90 -51
  123. package/dist/lib/server/button/index.js +8 -9
  124. package/dist/lib/server/checkbox/index.js +30 -57
  125. package/dist/lib/server/checkbox-group/index.js +20 -10
  126. package/dist/lib/server/collapsible/index.js +36 -43
  127. package/dist/lib/server/combobox/index.js +64 -35
  128. package/dist/lib/server/{constants-9H__9xbS.js → constants-D7ciIzsV.js} +8 -3
  129. package/dist/lib/server/context-menu/index.js +7 -9
  130. package/dist/lib/server/{createAnchorPositioning-C-cVOPwz.js → createAnchorPositioning-B5Y0WEev.js} +11 -6
  131. package/dist/lib/server/{createCollapsiblePanel-DTyVJz0G.js → createCollapsiblePanel-B45kTe6v.js} +1 -1
  132. package/dist/lib/server/{createFocusInteraction-EIS0QOel.js → createFocusInteraction-DMyKsniI.js} +22 -2
  133. package/dist/lib/server/createLabelableId-WMUKtY6s.js +18 -0
  134. package/dist/lib/server/{createPopupAutoResize-DO50jjNX.js → createPopupAutoResize-ImBjwdj_.js} +1 -1
  135. package/dist/lib/server/{createTransitionStatus-BTlrerSS.js → createTransitionStatus-184v7j3-.js} +2 -2
  136. package/dist/lib/server/dialog/index.js +2 -2
  137. package/dist/lib/server/drawer/index.js +63 -71
  138. package/dist/lib/server/field/index.js +105 -93
  139. package/dist/lib/server/fieldset/index.js +13 -16
  140. package/dist/lib/server/form/index.js +16 -12
  141. package/dist/lib/server/index.js +5 -3
  142. package/dist/lib/server/input/index.js +1 -1
  143. package/dist/lib/server/internals/form-context/index.js +1 -1
  144. package/dist/lib/server/internals/labelable-provider/index.js +1 -1
  145. package/dist/lib/server/menu/index.js +21 -20
  146. package/dist/lib/server/menubar/index.js +6 -31
  147. package/dist/lib/server/{mergeStyleValue-Db8bRCM4.js → mergeStyleValue-BwJ10_X2.js} +6 -1
  148. package/dist/lib/server/meter/index.js +20 -32
  149. package/dist/lib/server/navigation-menu/index.js +53 -124
  150. package/dist/lib/server/number-field/index.js +44 -42
  151. package/dist/lib/server/otp-field/index.js +11 -14
  152. package/dist/lib/server/popover/index.js +42 -59
  153. package/dist/lib/server/{popupStateMapping-nKoUwoke.js → popupStateMapping-B2KsiiLb.js} +18 -16
  154. package/dist/lib/server/preview-card/index.js +30 -41
  155. package/dist/lib/server/progress/index.js +21 -33
  156. package/dist/lib/server/radio/index.js +18 -39
  157. package/dist/lib/server/radio-group/index.js +7 -8
  158. package/dist/lib/server/{runOnceAnimationsFinish-DCHzXWZU.js → runOnceAnimationsFinish-CYq38H8J.js} +2 -1
  159. package/dist/lib/server/{safePolygon-CAm5RJGv.js → safePolygon-C1GNJbKR.js} +5 -0
  160. package/dist/lib/server/scroll-area/index.js +23 -32
  161. package/dist/lib/server/select/index.js +95 -181
  162. package/dist/lib/server/separator/index.js +1 -1
  163. package/dist/lib/server/slider/index.js +25 -38
  164. package/dist/lib/server/switch/index.js +13 -23
  165. package/dist/lib/server/tabs/index.js +185 -129
  166. package/dist/lib/server/toast/index.js +49 -66
  167. package/dist/lib/server/toggle/index.js +4 -6
  168. package/dist/lib/server/toggle-group/index.js +9 -7
  169. package/dist/lib/server/toolbar/index.js +62 -79
  170. package/dist/lib/server/tooltip/index.js +28 -37
  171. package/dist/lib/server/use-render/index.js +2 -0
  172. package/dist/lib/server/{useFilteredItems-DvuctLt3.js → useFilteredItems-DCxq20Is.js} +164 -189
  173. package/dist/lib/server/useRender-CryVdCjs.js +16 -0
  174. package/dist/lib/types/accordion/header/AccordionHeader.d.ts +1 -1
  175. package/dist/lib/types/accordion/item/AccordionItem.d.ts +1 -1
  176. package/dist/lib/types/accordion/panel/AccordionPanel.d.ts +1 -1
  177. package/dist/lib/types/accordion/root/AccordionRoot.d.ts +2 -7
  178. package/dist/lib/types/accordion/trigger/AccordionTrigger.d.ts +1 -1
  179. package/dist/lib/types/alert-dialog/trigger/AlertDialogTrigger.d.ts +1 -2
  180. package/dist/lib/types/autocomplete/trigger/AutocompleteTrigger.d.ts +1 -0
  181. package/dist/lib/types/avatar/fallback/AvatarFallback.d.ts +2 -2
  182. package/dist/lib/types/avatar/image/AvatarImage.d.ts +9 -3
  183. package/dist/lib/types/avatar/image/createImageLoadingStatus.d.ts +3 -2
  184. package/dist/lib/types/avatar/root/AvatarRoot.d.ts +1 -1
  185. package/dist/lib/types/button/Button.d.ts +1 -1
  186. package/dist/lib/types/checkbox-group/CheckboxGroupContext.d.ts +4 -1
  187. package/dist/lib/types/collapsible/panel/CollapsiblePanel.d.ts +1 -1
  188. package/dist/lib/types/collapsible/root/CollapsibleRoot.d.ts +1 -1
  189. package/dist/lib/types/collapsible/trigger/CollapsibleTrigger.d.ts +1 -1
  190. package/dist/lib/types/combobox/index.d.ts +2 -0
  191. package/dist/lib/types/combobox/index.parts.d.ts +1 -0
  192. package/dist/lib/types/combobox/items/createItems.d.ts +42 -0
  193. package/dist/lib/types/combobox/root/AriaCombobox.d.ts +4 -0
  194. package/dist/lib/types/combobox/root/ComboboxRoot.d.ts +12 -8
  195. package/dist/lib/types/combobox/root/ComboboxRootContext.d.ts +2 -0
  196. package/dist/lib/types/combobox/trigger/ComboboxTrigger.d.ts +1 -0
  197. package/dist/lib/types/dialog/backdrop/DialogBackdrop.d.ts +1 -1
  198. package/dist/lib/types/dialog/description/DialogDescription.d.ts +1 -1
  199. package/dist/lib/types/dialog/title/DialogTitle.d.ts +1 -1
  200. package/dist/lib/types/dialog/viewport/DialogViewport.d.ts +1 -1
  201. package/dist/lib/types/drawer/backdrop/DrawerBackdrop.d.ts +1 -1
  202. package/dist/lib/types/drawer/content/DrawerContent.d.ts +1 -1
  203. package/dist/lib/types/drawer/indent/DrawerIndent.d.ts +1 -1
  204. package/dist/lib/types/drawer/indent-background/DrawerIndentBackground.d.ts +1 -1
  205. package/dist/lib/types/field/root/FieldRoot.d.ts +1 -1
  206. package/dist/lib/types/field/root/createFieldValidation.d.ts +3 -2
  207. package/dist/lib/types/fieldset/legend/FieldsetLegend.d.ts +1 -1
  208. package/dist/lib/types/fieldset/root/FieldsetRoot.d.ts +1 -1
  209. package/dist/lib/types/index.d.ts +1 -0
  210. package/dist/lib/types/internals/createTransitionStatus.d.ts +1 -1
  211. package/dist/lib/types/internals/form-context/FormContext.d.ts +1 -0
  212. package/dist/lib/types/internals/labelable-provider/LabelableContext.d.ts +1 -0
  213. package/dist/lib/types/internals/labelable-provider/createLabelableId.d.ts +3 -0
  214. package/dist/lib/types/internals/overlay/PopupPortal.d.ts +4 -2
  215. package/dist/lib/types/internals/overlay/createPopupPresence.d.ts +1 -0
  216. package/dist/lib/types/menu/root/MenuRootContext.d.ts +1 -0
  217. package/dist/lib/types/meter/indicator/MeterIndicator.d.ts +1 -1
  218. package/dist/lib/types/meter/label/MeterLabel.d.ts +1 -1
  219. package/dist/lib/types/meter/root/MeterRoot.d.ts +1 -1
  220. package/dist/lib/types/meter/track/MeterTrack.d.ts +1 -1
  221. package/dist/lib/types/meter/value/MeterValue.d.ts +1 -1
  222. package/dist/lib/types/navigation-menu/trigger/NavigationMenuTrigger.d.ts +1 -0
  223. package/dist/lib/types/number-field/root/NumberFieldRootContext.d.ts +1 -0
  224. package/dist/lib/types/popover/arrow/PopoverArrow.d.ts +1 -1
  225. package/dist/lib/types/popover/backdrop/PopoverBackdrop.d.ts +1 -1
  226. package/dist/lib/types/popover/description/PopoverDescription.d.ts +1 -1
  227. package/dist/lib/types/popover/positioner/PopoverPositioner.d.ts +1 -1
  228. package/dist/lib/types/popover/title/PopoverTitle.d.ts +1 -1
  229. package/dist/lib/types/preview-card/arrow/PreviewCardArrow.d.ts +1 -1
  230. package/dist/lib/types/preview-card/backdrop/PreviewCardBackdrop.d.ts +1 -1
  231. package/dist/lib/types/preview-card/positioner/PreviewCardPositioner.d.ts +1 -1
  232. package/dist/lib/types/progress/indicator/ProgressIndicator.d.ts +1 -1
  233. package/dist/lib/types/progress/label/ProgressLabel.d.ts +1 -1
  234. package/dist/lib/types/progress/root/ProgressRoot.d.ts +1 -1
  235. package/dist/lib/types/progress/track/ProgressTrack.d.ts +1 -1
  236. package/dist/lib/types/progress/value/ProgressValue.d.ts +1 -1
  237. package/dist/lib/types/radio/indicator/RadioIndicator.d.ts +2 -2
  238. package/dist/lib/types/scroll-area/content/ScrollAreaContent.d.ts +1 -1
  239. package/dist/lib/types/scroll-area/corner/ScrollAreaCorner.d.ts +1 -1
  240. package/dist/lib/types/scroll-area/root/ScrollAreaRoot.d.ts +1 -1
  241. package/dist/lib/types/scroll-area/scrollbar/ScrollAreaScrollbar.d.ts +2 -1
  242. package/dist/lib/types/scroll-area/thumb/ScrollAreaThumb.d.ts +1 -1
  243. package/dist/lib/types/scroll-area/viewport/ScrollAreaViewport.d.ts +1 -1
  244. package/dist/lib/types/separator/Separator.d.ts +1 -1
  245. package/dist/lib/types/tabs/indicator/prehydrationScript.d.ts +1 -1
  246. package/dist/lib/types/tabs/list/TabsList.d.ts +1 -1
  247. package/dist/lib/types/tabs/panel/TabsPanel.d.ts +1 -1
  248. package/dist/lib/types/tabs/root/TabsRoot.d.ts +1 -1
  249. package/dist/lib/types/tabs/tab/TabsTab.d.ts +1 -1
  250. package/dist/lib/types/toast/createToastManager.d.ts +2 -2
  251. package/dist/lib/types/toast/store/ToastStore.d.ts +1 -1
  252. package/dist/lib/types/toast/useToastManager.d.ts +1 -1
  253. package/dist/lib/types/toggle/Toggle.d.ts +1 -1
  254. package/dist/lib/types/toggle-group/ToggleGroup.d.ts +1 -1
  255. package/dist/lib/types/toolbar/group/ToolbarGroup.d.ts +1 -1
  256. package/dist/lib/types/toolbar/link/ToolbarLink.d.ts +1 -1
  257. package/dist/lib/types/toolbar/root/ToolbarRoot.d.ts +1 -1
  258. package/dist/lib/types/toolbar/separator/ToolbarSeparator.d.ts +1 -1
  259. package/dist/lib/types/tooltip/arrow/TooltipArrow.d.ts +1 -1
  260. package/dist/lib/types/tooltip/positioner/TooltipPositioner.d.ts +1 -1
  261. package/dist/lib/types/types/index.d.ts +7 -3
  262. package/dist/lib/types/use-render/index.d.ts +2 -0
  263. package/dist/lib/types/use-render/useRender.d.ts +10 -0
  264. package/package.json +24 -11
  265. package/dist/lib/client/DialogHandle-DrN2YWCv.js +0 -518
  266. package/dist/lib/client/DialogPopup-ZlqmGfdk.js +0 -136
  267. package/dist/lib/client/FieldControl-Bc-z2og6.js +0 -116
  268. package/dist/lib/client/MenuSubmenuTrigger-QZkQ0F2v.js +0 -1570
  269. package/dist/lib/client/Separator-9DboD_Si.js +0 -25
  270. package/dist/lib/client/TriggerFocusGuards-CQ-JuASy.js +0 -56
  271. package/dist/lib/client/accordion-sOXt9AlG.js +0 -399
  272. package/dist/lib/client/avatar-AF9vyD4q.js +0 -146
  273. package/dist/lib/client/button-DpUi-2g8.js +0 -82
  274. package/dist/lib/client/checkbox-BbAwOptH.js +0 -441
  275. package/dist/lib/client/checkbox-group-CSSp_805.js +0 -128
  276. package/dist/lib/client/collapsible-BIbje_ub.js +0 -232
  277. package/dist/lib/client/combobox-8O-vgTLL.js +0 -352
  278. package/dist/lib/client/context-menu-BTMkXtrs.js +0 -217
  279. package/dist/lib/client/createFocusInteraction-D4w1-235.js +0 -50
  280. package/dist/lib/client/drawer-Ce2cChLt.js +0 -1550
  281. package/dist/lib/client/field-C-o7jzKW.js +0 -469
  282. package/dist/lib/client/fieldset-BQTAWv2L.js +0 -65
  283. package/dist/lib/client/form-BINBiW5L.js +0 -106
  284. package/dist/lib/client/menu-DeMT08oD.js +0 -326
  285. package/dist/lib/client/menubar-C4aomSYv.js +0 -185
  286. package/dist/lib/client/meter-xSU37Q0m.js +0 -171
  287. package/dist/lib/client/navigation-menu-ZILQmdn6.js +0 -1083
  288. package/dist/lib/client/number-field-B8CsTb_8.js +0 -1035
  289. package/dist/lib/client/otp-field-DBkMcnog.js +0 -582
  290. package/dist/lib/client/popover-CQwyp-fs.js +0 -929
  291. package/dist/lib/client/popupStateMapping-C9eZl19i.js +0 -367
  292. package/dist/lib/client/preview-card-D_2Q8lpC.js +0 -625
  293. package/dist/lib/client/progress-D7r0xAC9.js +0 -188
  294. package/dist/lib/client/radio-CzGQ81z1.js +0 -299
  295. package/dist/lib/client/radio-group-DpHlBKA6.js +0 -193
  296. package/dist/lib/client/runOnceAnimationsFinish-15EM-Z4l.js +0 -48
  297. package/dist/lib/client/scroll-area-CffM4U0R.js +0 -701
  298. package/dist/lib/client/select-IFhiEg73.js +0 -1940
  299. package/dist/lib/client/slider-BCagYmGp.js +0 -921
  300. package/dist/lib/client/switch-RIJeDnvS.js +0 -308
  301. package/dist/lib/client/tabs-fOAKs7r3.js +0 -696
  302. package/dist/lib/client/toast-D2P8UqUs.js +0 -1108
  303. package/dist/lib/client/toggle-group-0Aue0owJ.js +0 -129
  304. package/dist/lib/client/toggle-momVEIBL.js +0 -138
  305. package/dist/lib/client/toolbar-Du22aKCv.js +0 -492
  306. package/dist/lib/client/tooltip-CyK61fl1.js +0 -844
  307. package/dist/lib/client/useFilteredItems-DTekHz39.js +0 -2223
  308. package/dist/lib/client/withoutComponentBinding-CcCW7fSc.js +0 -13
  309. package/dist/lib/server/TriggerFocusGuards-sbGwf45f.js +0 -63
  310. package/dist/lib/server/withoutComponentBinding-BHaWr5kU.js +0 -20
  311. package/dist/lib/types/internals/withoutComponentBinding.d.ts +0 -7
@@ -1,4 +1,5 @@
1
1
  import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
2
+ import { t as useRender } from "../useRender-CryVdCjs.js";
2
3
  import { getStateAttributesProps } from "../internals/getStateAttributesProps.js";
3
4
  import { a as closeWatcher, k as swipe } from "../internals/reasons.js";
4
5
  import { n as resolveClass, t as resolveStyle } from "../resolveStyle-XCSFDHAL.js";
@@ -6,15 +7,15 @@ import { createChangeEventDetails } from "../internals/createBaseUIEventDetails.
6
7
  import { TransitionStatusDataAttributes } from "../internals/stateAttributesMapping.js";
7
8
  import { composeEventHandlers } from "../internals/composeEventHandlers.js";
8
9
  import { a as isElement, c as isHTMLElement, l as isInteractiveElement, m as ownerWindow, n as contains, p as ownerDocument, r as getEventTarget, t as activeElement } from "../dom-Crg_2R-j.js";
9
- import { n as createTriggerRegistration } from "../PopupStore-DEs3FAEe.js";
10
- import { r as popupTransitionStateMapping, t as CommonPopupDataAttributes } from "../popupStateMapping-nKoUwoke.js";
11
- import { t as FocusManager } from "../FocusManager-BrbZVWME.js";
12
- import { a as DialogTitle, c as DialogDescription, d as dialogTransitionStateAttributesMapping, f as mergeDialogStyles, h as useDialogRootContext, i as DialogTrigger, l as DialogClose, m as renderDialogRoot, o as DialogPortal, r as DialogViewport, s as useDialogPortalContext, t as DialogHandle } from "../DialogHandle-ATZlm9RC.js";
10
+ import { n as createTriggerRegistration } from "../PopupStore-kHjFPiQ5.js";
11
+ import { r as popupTransitionStateMapping, t as CommonPopupDataAttributes } from "../popupStateMapping-B2KsiiLb.js";
12
+ import { t as FocusManager } from "../FocusManager-1LfoCsya.js";
13
+ import { a as DialogTitle, c as DialogDescription, d as dialogTransitionStateAttributesMapping, f as mergeDialogStyles, h as useDialogRootContext, i as DialogTrigger, l as DialogClose, m as renderDialogRoot, o as DialogPortal, r as DialogViewport, s as useDialogPortalContext, t as DialogHandle } from "../DialogHandle-nJSSy_jM.js";
13
14
  import { n as getComposedParentNode, t as findScrollableTouchTarget } from "../scrollable-CjsSxbGr.js";
14
15
  import { t as isAndroid } from "../platform-DYukKUir.js";
15
- import { a as getElementTransform, i as getDisplacement, o as getElementAtPoint, r as createSwipeDismiss, s as clamp, t as BASE_UI_SWIPE_IGNORE_SELECTOR } from "../constants-9H__9xbS.js";
16
- import { Dynamic, mergeProps, ssrElement } from "@solidjs/web";
17
- import { Show, createContext, createEffect, createMemo, createSignal, createUniqueId, flush, merge, omit, onCleanup, untrack, useContext } from "solid-js";
16
+ import { a as getElementTransform, i as getDisplacement, o as getElementAtPoint, r as createSwipeDismiss, s as clamp, t as BASE_UI_SWIPE_IGNORE_SELECTOR } from "../constants-D7ciIzsV.js";
17
+ import { mergeProps, ssrElement } from "@solidjs/web";
18
+ import { Show, createContext, createEffect, createMemo, createSignal, createUniqueId, flush, merge, omit, onCleanup, onSettled, untrack, useContext } from "solid-js";
18
19
  //#region src/drawer/popup/DrawerPopupCssVars.ts
19
20
  var DrawerPopupCssVars = /* @__PURE__ */ function(DrawerPopupCssVars) {
20
21
  /**
@@ -70,11 +71,12 @@ var DrawerBackdropCssVars = /* @__PURE__ */ function(DrawerBackdropCssVars) {
70
71
  function DrawerBackdrop(props) {
71
72
  const context = useDialogRootContext();
72
73
  const internalProps = props;
73
- const others = omit(props, "as", "class", "forceRender", "ref", "style");
74
+ const others = omit(props, "render", "class", "forceRender", "ref", "style");
74
75
  const state = createMemo(() => ({
75
76
  open: context.store.open(),
76
77
  transitionStatus: context.presence.transitionStatus()
77
78
  }));
79
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
78
80
  const classValue = createMemo(() => resolveClass(props.class, state()));
79
81
  const styleValue = createMemo(() => mergeDialogStyles({
80
82
  "pointer-events": context.store.open() ? void 0 : "none",
@@ -90,10 +92,7 @@ function DrawerBackdrop(props) {
90
92
  onCleanup(() => {
91
93
  if (context.backdropElement() === backdropElement) context.setBackdropElement(null);
92
94
  });
93
- return Dynamic(mergeProps({
94
- get component() {
95
- return props.as ?? "div";
96
- },
95
+ return Render(mergeProps({
97
96
  ref: [((element) => {
98
97
  backdropElement = element;
99
98
  context.setBackdropElement(element);
@@ -131,16 +130,12 @@ var DRAWER_CONTENT_ATTRIBUTE = "data-drawer-content";
131
130
  function DrawerContent(props) {
132
131
  useDialogRootContext();
133
132
  const internalProps = props;
134
- const others = omit(props, "as", "class", "ref", "style");
133
+ const others = omit(props, "render", "class", "ref", "style");
135
134
  const state = {};
135
+ const Render = useRender(props, () => state, (props) => ssrElement("div", props, void 0, true));
136
136
  const classValue = createMemo(() => resolveClass(props.class, state));
137
137
  const styleValue = createMemo(() => resolveStyle(props.style, state));
138
- return Dynamic(mergeProps({
139
- get component() {
140
- return props.as ?? "div";
141
- },
142
- ref: [internalProps.ref]
143
- }, { [DRAWER_CONTENT_ATTRIBUTE]: "" }, {
138
+ return Render(mergeProps({ ref: [internalProps.ref] }, { [DRAWER_CONTENT_ATTRIBUTE]: "" }, {
144
139
  get ["class"]() {
145
140
  return classValue();
146
141
  },
@@ -199,23 +194,12 @@ var drawerIndentStateAttributesMapping = { active: (value) => value ? ACTIVE : I
199
194
  function DrawerIndentBackground(props) {
200
195
  const provider = useDrawerProviderContext();
201
196
  const internalProps = props;
202
- const others = omit(props, "as", "class", "ref", "style");
197
+ const others = omit(props, "render", "class", "ref", "style");
203
198
  const state = () => ({ active: provider?.active() ?? false });
204
199
  const classValue = () => resolveClass(props.class, state());
205
200
  const styleValue = () => resolveStyle(props.style, state());
206
201
  const stateAttributes = () => getStateAttributesProps(state(), drawerIndentStateAttributesMapping);
207
- const component = untrack(() => props.as);
208
- return component === void 0 ? ssrElement("div", () => {
209
- return mergeProps({
210
- get ["class"]() {
211
- return classValue();
212
- },
213
- get style() {
214
- return styleValue();
215
- }
216
- }, stateAttributes, others);
217
- }, void 0, true) : Dynamic(mergeProps({
218
- component,
202
+ return useRender(props, state, (props) => ssrElement("div", props, void 0, true))(mergeProps({
219
203
  ref: [internalProps.ref],
220
204
  get ["class"]() {
221
205
  return classValue();
@@ -234,7 +218,7 @@ function DrawerIndentBackground(props) {
234
218
  function DrawerIndent(props) {
235
219
  const provider = useDrawerProviderContext();
236
220
  const internalProps = props;
237
- const others = omit(props, "as", "class", "ref", "style");
221
+ const others = omit(props, "render", "class", "ref", "style");
238
222
  const state = () => ({ active: provider?.active() ?? false });
239
223
  const classValue = () => resolveClass(props.class, state());
240
224
  const styleValue = () => mergeDialogStyles({ [DrawerBackdropCssVars.swipeProgress]: "0" }, resolveStyle(props.style, state()));
@@ -243,18 +227,7 @@ function DrawerIndent(props) {
243
227
  const indentRef = [((element) => {
244
228
  indentElement = element;
245
229
  }), internalProps.ref];
246
- const component = untrack(() => props.as);
247
- const element = component === void 0 ? ssrElement("div", () => {
248
- return mergeProps({
249
- get ["class"]() {
250
- return classValue();
251
- },
252
- get style() {
253
- return styleValue();
254
- }
255
- }, stateAttributes, others);
256
- }, void 0, true) : Dynamic(mergeProps({
257
- component,
230
+ const element = useRender(props, state, (props) => ssrElement("div", props, void 0, true))(mergeProps({
258
231
  ref: indentRef,
259
232
  get ["class"]() {
260
233
  return classValue();
@@ -511,7 +484,7 @@ function DrawerPopup(props) {
511
484
  const swipe = useDrawerViewportContext();
512
485
  const snap = createDrawerSnapPoints();
513
486
  const internalProps = props;
514
- const others = omit(props, "as", "class", "finalFocus", "id", "initialFocus", "onKeyDown", "ref", "style");
487
+ const others = omit(props, "render", "class", "finalFocus", "id", "initialFocus", "onKeyDown", "ref", "style");
515
488
  const nestedDrawerOpen = createMemo(() => context.nestedOpenDrawerCount() > 0);
516
489
  const swiping = createMemo(() => swipe?.swiping() ?? false);
517
490
  let popupElement = null;
@@ -586,6 +559,7 @@ function DrawerPopup(props) {
586
559
  swipeDirection: drawer.swipeDirection(),
587
560
  swiping: swiping()
588
561
  }));
562
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
589
563
  const classValue = createMemo(() => resolveClass(props.class, state()));
590
564
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), stateAttributesMapping$1));
591
565
  const snapPointOffsetValue = createMemo(() => {
@@ -639,10 +613,7 @@ function DrawerPopup(props) {
639
613
  onCleanup(() => {
640
614
  if (context.store.state.popupElement === popupElement) context.store.setPopupElement(null);
641
615
  });
642
- const popup = Dynamic(mergeProps({
643
- get component() {
644
- return props.as ?? "div";
645
- },
616
+ const popup = Render(mergeProps({
646
617
  ref: [((element) => {
647
618
  popupElement = element;
648
619
  context.store.setPopupElement(element);
@@ -935,7 +906,7 @@ function DrawerSwipeArea(props) {
935
906
  const drawer = useDrawerRootContext();
936
907
  const provider = useDrawerProviderContext();
937
908
  const internalProps = props;
938
- const others = omit(props, "as", "class", "disabled", "id", "onPointerCancel", "onPointerDown", "onPointerMove", "onPointerUp", "onTouchCancel", "onTouchEnd", "onTouchMove", "onTouchStart", "ref", "style", "swipeDirection");
909
+ const others = omit(props, "render", "class", "disabled", "id", "onPointerCancel", "onPointerDown", "onPointerMove", "onPointerUp", "onTouchCancel", "onTouchEnd", "onTouchMove", "onTouchStart", "ref", "style", "swipeDirection");
939
910
  const generatedId = `base-ui-${createUniqueId()}`;
940
911
  const id = createMemo(() => internalProps.id || generatedId);
941
912
  const disabled = createMemo(() => internalProps.disabled ?? false);
@@ -956,7 +927,17 @@ function DrawerSwipeArea(props) {
956
927
  const resolvedSwipeDirection = createMemo(() => internalProps.swipeDirection ?? oppositeSwipeDirection[drawer.swipeDirection()]);
957
928
  const dismissDirection = createMemo(() => oppositeSwipeDirection[resolvedSwipeDirection()]);
958
929
  const enabled = createMemo(() => !disabled() && (!store.open() || swipeActive()));
959
- createTriggerRegistration(() => store, id, swipeAreaElement);
930
+ const [registrationReady, setRegistrationReady] = createSignal(false, { ownedWrite: true });
931
+ onSettled(() => {
932
+ let disposed = false;
933
+ queueMicrotask(() => {
934
+ if (!disposed) setRegistrationReady(true);
935
+ });
936
+ return () => {
937
+ disposed = true;
938
+ };
939
+ });
940
+ createTriggerRegistration(() => store, id, () => registrationReady() ? swipeAreaElement() : null);
960
941
  function resetDragDelta() {
961
942
  dragDelta.x = 0;
962
943
  dragDelta.y = 0;
@@ -1152,6 +1133,7 @@ function DrawerSwipeArea(props) {
1152
1133
  swipeDirection: resolvedSwipeDirection(),
1153
1134
  disabled: disabled()
1154
1135
  }));
1136
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
1155
1137
  const classValue = createMemo(() => resolveClass(props.class, state()));
1156
1138
  const styleValue = createMemo(() => mergeDialogStyles({
1157
1139
  "pointer-events": enabled() ? void 0 : "none",
@@ -1179,10 +1161,7 @@ function DrawerSwipeArea(props) {
1179
1161
  const onTouchMove = composeEventHandlers(() => internalProps.onTouchMove, () => (event) => swipe$2.touchHandlers.onTouchMove(event));
1180
1162
  const onTouchEnd = composeEventHandlers(() => internalProps.onTouchEnd, () => (event) => swipe$2.touchHandlers.onTouchEnd(event));
1181
1163
  const onTouchCancel = composeEventHandlers(() => internalProps.onTouchCancel, () => (event) => swipe$2.touchHandlers.onTouchCancel(event));
1182
- return Dynamic(mergeProps({
1183
- get component() {
1184
- return props.as ?? "div";
1185
- },
1164
+ return Render(mergeProps({
1186
1165
  ref: [((element) => setSwipeAreaElement(element)), internalProps.ref],
1187
1166
  get id() {
1188
1167
  return id();
@@ -1366,7 +1345,7 @@ function DrawerViewport(props) {
1366
1345
  return true;
1367
1346
  },
1368
1347
  onProgress(progress, details) {
1369
- updateNestedSwipeActive(details);
1348
+ if (swipingNow) updateNestedSwipeActive(details);
1370
1349
  const points = drawer.snapPoints();
1371
1350
  const hasSnapPoints = Boolean(points && points.length > 0);
1372
1351
  if (swipingNow && swipeDirection() === "down" && hasSnapPoints && details) {
@@ -1382,13 +1361,17 @@ function DrawerViewport(props) {
1382
1361
  if (range && popupHeight > 0) {
1383
1362
  const baseOffset = snap.activeSnapPointOffset() ?? range.minOffset;
1384
1363
  const offsetToProgress = (nextOffset) => clamp((nextOffset - range.minOffset) / range.range, 0, 1);
1385
- if (details && Number.isFinite(details.deltaY)) resolvedProgress = offsetToProgress(clamp(baseOffset + details.deltaY, 0, popupHeight));
1364
+ if (swipingNow && details && Number.isFinite(details.deltaY)) resolvedProgress = offsetToProgress(clamp(baseOffset + details.deltaY, 0, popupHeight));
1386
1365
  else {
1387
1366
  const progressFromSnapPoint = snapPointProgress();
1388
1367
  if (progressFromSnapPoint !== null) resolvedProgress = progressFromSnapPoint;
1389
1368
  }
1390
1369
  }
1391
- applySwipeProgress(resolvedProgress, true, true);
1370
+ if (!swipingNow) {
1371
+ drawer.notifyParentSwipeProgressChange?.(0);
1372
+ finishNestedSwipe();
1373
+ }
1374
+ applySwipeProgress(resolvedProgress, true, swipingNow);
1392
1375
  },
1393
1376
  onRelease({ event, deltaX, deltaY, direction, velocityX, velocityY, releaseVelocityX, releaseVelocityY }) {
1394
1377
  const popupElement = store.state.popupElement;
@@ -1453,9 +1436,21 @@ function DrawerViewport(props) {
1453
1436
  const velocityOffset = Math.abs(resolvedDirectionalVelocity) >= SNAP_VELOCITY_THRESHOLD ? clamp(resolvedDirectionalVelocity, -4, MAX_SNAP_VELOCITY) * SNAP_VELOCITY_MULTIPLIER : 0;
1454
1437
  const targetOffset = drawer.snapToSequentialPoints() ? dragTargetOffset : clamp(dragTargetOffset + velocityOffset, 0, popupHeight);
1455
1438
  const snapPointEventDetails = createChangeEventDetails(swipe, event);
1456
- const closeFromSnapPoints = () => {
1457
- pendingSwipeCloseSnapPoint = snap.activeSnapPoint();
1439
+ const settleInPlace = () => {
1440
+ applySwipeProgress(0, true, true);
1441
+ clearSwipeRelease();
1442
+ return false;
1443
+ };
1444
+ const settleOnSnapPoint = (point) => {
1445
+ drawer.setActiveSnapPoint(point.value, snapPointEventDetails);
1446
+ return settleInPlace();
1447
+ };
1448
+ const closeFromSnapPoints = (fallback) => {
1449
+ if (!direction) return settleOnSnapPoint(fallback);
1450
+ const previousSnapPoint = snap.activeSnapPoint();
1458
1451
  drawer.setActiveSnapPoint(null, snapPointEventDetails);
1452
+ if (snapPointEventDetails.isCanceled) return settleInPlace();
1453
+ pendingSwipeCloseSnapPoint = previousSnapPoint;
1459
1454
  startSwipeRelease(currentSwipeDirection);
1460
1455
  return true;
1461
1456
  };
@@ -1475,19 +1470,16 @@ function DrawerViewport(props) {
1475
1470
  targetSnapPoint = adjacentPoint;
1476
1471
  effectiveTargetOffset = adjacentPoint.offset;
1477
1472
  }
1478
- } else if (dragDirection > 0) return closeFromSnapPoints();
1473
+ } else if (dragDirection > 0) return closeFromSnapPoints(targetSnapPoint);
1479
1474
  }
1480
- if (Math.abs(effectiveTargetOffset - popupHeight) < Math.abs(effectiveTargetOffset - targetSnapPoint.offset)) return closeFromSnapPoints();
1481
- drawer.setActiveSnapPoint(targetSnapPoint.value, snapPointEventDetails);
1482
- clearSwipeRelease();
1483
- return false;
1475
+ if (Math.abs(effectiveTargetOffset - popupHeight) < Math.abs(effectiveTargetOffset - targetSnapPoint.offset)) return closeFromSnapPoints(targetSnapPoint);
1476
+ return settleOnSnapPoint(targetSnapPoint);
1484
1477
  }
1485
- if (resolvedDirectionalVelocity >= FAST_SWIPE_VELOCITY && dragDelta > 0) return closeFromSnapPoints();
1486
1478
  const closestSnapPoint = resolvedSnapPoints[closestSnapPointIndex(resolvedSnapPoints.map((point) => point.offset), targetOffset)];
1487
- if (Math.abs(targetOffset - popupHeight) < Math.abs(targetOffset - closestSnapPoint.offset)) return closeFromSnapPoints();
1488
- drawer.setActiveSnapPoint(closestSnapPoint.value, snapPointEventDetails);
1489
- clearSwipeRelease();
1490
- return false;
1479
+ const closeDistance = Math.abs(targetOffset - popupHeight);
1480
+ if (resolvedDirectionalVelocity >= FAST_SWIPE_VELOCITY && dragDelta > 0) return closeFromSnapPoints(closestSnapPoint);
1481
+ if (closeDistance < Math.abs(targetOffset - closestSnapPoint.offset)) return closeFromSnapPoints(closestSnapPoint);
1482
+ return settleOnSnapPoint(closestSnapPoint);
1491
1483
  },
1492
1484
  onDismiss(event) {
1493
1485
  provider?.visualStateStore.set({
@@ -1,19 +1,20 @@
1
1
  import { t as __exportAll } from "../rolldown-runtime-D7D4PA-g.js";
2
+ import { t as useRender } from "../useRender-CryVdCjs.js";
2
3
  import { getStateAttributesProps } from "../internals/getStateAttributesProps.js";
3
4
  import { n as resolveClass, t as resolveStyle } from "../resolveStyle-XCSFDHAL.js";
4
5
  import { transitionStatusMapping } from "../internals/stateAttributesMapping.js";
5
6
  import { composeEventHandlers } from "../internals/composeEventHandlers.js";
6
- import { t as runOnceAnimationsFinish } from "../runOnceAnimationsFinish-DCHzXWZU.js";
7
- import { t as createTransitionStatus } from "../createTransitionStatus-BTlrerSS.js";
7
+ import { t as runOnceAnimationsFinish } from "../runOnceAnimationsFinish-CYq38H8J.js";
8
+ import { t as createTransitionStatus } from "../createTransitionStatus-184v7j3-.js";
8
9
  import { DEFAULT_VALIDITY_DATA, DEFAULT_VALIDITY_STATE, VALIDITY_KEYS, copyNativeValidity, fieldStateAttributesMapping } from "../internals/field-constants.js";
9
10
  import { n as useFieldRootContext, t as FieldRootContext } from "../FieldRootContext-IC-LWzVp.js";
10
- import { n as useFormContext } from "../FormContext-pvESt85v.js";
11
- import { n as createLabelableContext, r as useLabelableContext, t as LabelableContext } from "../LabelableContext-DZP3rgAY.js";
11
+ import { n as useFormContext } from "../FormContext-CYwo_ZnB.js";
12
+ import { n as createLabelableContext, r as useLabelableContext, t as LabelableContext } from "../LabelableContext-BTeF0IWb.js";
12
13
  import { n as useFieldItemContext, t as FieldItemContext } from "../FieldItemContext-x-C7ZlmX.js";
13
14
  import { n as useFieldsetRootContext } from "../FieldsetRootContext-DyNqCjK6.js";
14
15
  import { t as hasFormError } from "../form-types-P7-SCWyr.js";
15
- import { t as FieldControl } from "../FieldControl-Y_kI7ARp.js";
16
- import { Dynamic, escape, memo, mergeProps, ssr, ssrHydrationKey } from "@solidjs/web";
16
+ import { t as FieldControl } from "../FieldControl-BDeNR3ug.js";
17
+ import { escape, memo, mergeProps, ssr, ssrElement, ssrHydrationKey } from "@solidjs/web";
17
18
  import { For, Show, createEffect, createMemo, createSignal, createUniqueId, omit, onCleanup, onSettled, untrack } from "solid-js";
18
19
  //#region src/field/root/createFieldValidation.ts
19
20
  function createFieldValidation(options) {
@@ -21,7 +22,10 @@ function createFieldValidation(options) {
21
22
  let activeInputSource = null;
22
23
  let validationCommitId = 0;
23
24
  let timeout;
25
+ let pendingInput = null;
26
+ let customValidity;
24
27
  function clearTimer() {
28
+ pendingInput = null;
25
29
  if (timeout !== void 0) {
26
30
  clearTimeout(timeout);
27
31
  timeout = void 0;
@@ -38,93 +42,103 @@ function createFieldValidation(options) {
38
42
  }
39
43
  return fallback;
40
44
  }
41
- function clearCustomValidity(element) {
42
- for (const inputs of registeredInputs.values()) for (const input of inputs.keys()) input.setCustomValidity("");
43
- element?.setCustomValidity("");
44
- }
45
- function publishAllValid(value, element) {
46
- clearCustomValidity(element);
47
- options.publish({
48
- value,
49
- state: {
50
- ...DEFAULT_VALIDITY_STATE,
51
- valid: true
52
- },
53
- error: "",
54
- errors: [],
55
- initialValue: options.getValidityData().initialValue
56
- });
45
+ function clearCustomValidity() {
46
+ const record = customValidity;
47
+ customValidity = void 0;
48
+ if (record && (!record[0].willValidate || record[0].validationMessage === record[1])) record[0].setCustomValidity(record[2]);
57
49
  }
58
50
  function commit(value, revalidate = false) {
59
51
  validationCommitId += 1;
60
52
  const currentCommitId = validationCommitId;
61
53
  clearTimer();
62
- const element = findRepresentativeInput();
54
+ let element = findRepresentativeInput();
55
+ const nativeErrors = () => element?.validationMessage ? [element.validationMessage] : [];
56
+ const refreshState = () => {
57
+ element = findRepresentativeInput();
58
+ return element?.willValidate ? getNativeState(element, options.isMarkedDirty()) : {
59
+ ...DEFAULT_VALIDITY_STATE,
60
+ valid: true
61
+ };
62
+ };
63
+ const publish = (state, messages) => {
64
+ const errors = state.valid === false ? messages : [];
65
+ options.publish({
66
+ value,
67
+ state,
68
+ errors,
69
+ error: errors[0] ?? "",
70
+ initialValue: options.getValidityData().initialValue
71
+ });
72
+ };
63
73
  if (revalidate) {
64
74
  if (options.state().valid !== false || !element) return;
65
75
  const nativeValidity = element.validity;
66
76
  if (!nativeValidity.valueMissing) {
67
- publishAllValid(value, element);
77
+ clearCustomValidity();
78
+ element = findRepresentativeInput();
79
+ const foreign = element?.validity.customError ? nativeErrors() : [];
80
+ publish({
81
+ ...DEFAULT_VALIDITY_STATE,
82
+ valid: foreign.length === 0,
83
+ customError: foreign.length > 0
84
+ }, foreign);
68
85
  return;
69
86
  }
70
87
  for (const key of VALIDITY_KEYS) if (key !== "valueMissing" && key !== "customError" && nativeValidity[key]) return;
71
88
  }
72
- const nextState = element ? getNativeState(element, options.isMarkedDirty()) : {
73
- ...DEFAULT_VALIDITY_STATE,
74
- valid: true
75
- };
89
+ clearCustomValidity();
90
+ const nextState = refreshState();
76
91
  const validatesOnChange = options.shouldValidateOnChange();
77
92
  if (element?.validationMessage && !validatesOnChange) {
78
- options.publish({
79
- value,
80
- state: nextState,
81
- error: element.validationMessage,
82
- errors: [element.validationMessage],
83
- initialValue: options.getValidityData().initialValue
84
- });
93
+ publish(nextState, nativeErrors());
85
94
  return;
86
95
  }
87
- const result = options.validate()?.(value, options.form.getFormValues()) ?? null;
96
+ const finish = (result, state = nextState) => {
97
+ const errors = result ? [].concat(result).filter(Boolean) : [];
98
+ if (errors.length > 0) {
99
+ state.valid = false;
100
+ state.customError = true;
101
+ if (element?.willValidate) {
102
+ const displaced = element.validity.customError ? element.validationMessage : "";
103
+ const message = errors.join("\n").replace(/\r\n?/g, "\n");
104
+ element.setCustomValidity(message);
105
+ customValidity = [
106
+ element,
107
+ message,
108
+ displaced
109
+ ];
110
+ }
111
+ }
112
+ publish(state, errors.length > 0 ? errors : nativeErrors());
113
+ };
114
+ const result = options.validate()?.(value, options.form.getFormValues());
88
115
  if (isPromise(result)) {
116
+ pendingInput = element;
117
+ if (nextState.valid === false) publish(nextState, nativeErrors());
118
+ else if (options.validationMode() === "onSubmit" || !options.getValidityData().state.customError) publish({
119
+ ...nextState,
120
+ valid: null
121
+ }, []);
89
122
  result.then((resolved) => {
90
- if (currentCommitId === validationCommitId) publishCustomResult(value, element, nextState, resolved, validatesOnChange);
123
+ if (currentCommitId === validationCommitId) {
124
+ pendingInput = null;
125
+ finish(resolved, refreshState());
126
+ }
127
+ }, () => {
128
+ if (currentCommitId === validationCommitId) pendingInput = null;
91
129
  });
92
130
  return;
93
131
  }
94
- publishCustomResult(value, element, nextState, result, validatesOnChange);
95
- }
96
- function publishCustomResult(value, element, nativeState, result, validatesOnChange) {
97
- const state = { ...nativeState };
98
- let errors = [];
99
- let error = "";
100
- if (result !== null) {
101
- errors = Array.isArray(result) ? result : [result];
102
- error = errors[0] ?? "";
103
- state.valid = false;
104
- state.customError = true;
105
- element?.setCustomValidity(errors.join("\n"));
106
- } else if (validatesOnChange) {
107
- clearCustomValidity(element);
108
- state.customError = false;
109
- if (element?.validationMessage) {
110
- error = element.validationMessage;
111
- errors = [error];
112
- } else if (!element || element.validity.valid) state.valid = true;
113
- }
114
- options.publish({
115
- value,
116
- state,
117
- error,
118
- errors,
119
- initialValue: options.getValidityData().initialValue
120
- });
132
+ finish(result);
121
133
  }
122
- function change(value) {
134
+ function change(value, cancelPending = false) {
123
135
  clearTimer();
136
+ validationCommitId += 1;
137
+ if (cancelPending) return;
124
138
  const validatesOnChange = options.shouldValidateOnChange();
125
139
  const delay = options.validationDebounceTime();
126
140
  if (validatesOnChange && value !== "" && delay > 0) {
127
- validationCommitId += 1;
141
+ pendingInput = findRepresentativeInput();
128
142
  timeout = setTimeout(() => {
129
143
  timeout = void 0;
130
144
  commit(value);
@@ -139,9 +153,12 @@ function createFieldValidation(options) {
139
153
  inputs = /* @__PURE__ */ new Map();
140
154
  registeredInputs.set(source, inputs);
141
155
  }
142
- inputs.set(element, { getControl });
156
+ const registration = { getControl };
157
+ inputs.set(element, registration);
143
158
  return () => {
144
159
  const currentInputs = registeredInputs.get(source);
160
+ if (currentInputs?.get(element) !== registration) return;
161
+ if (source === activeInputSource && element === pendingInput) change(void 0, true);
145
162
  currentInputs?.delete(element);
146
163
  if (currentInputs?.size === 0) registeredInputs.delete(source);
147
164
  };
@@ -152,9 +169,13 @@ function createFieldValidation(options) {
152
169
  return input ? registration?.getControl() ?? input : null;
153
170
  }
154
171
  function setActiveInputSource(source) {
172
+ if (activeInputSource && activeInputSource !== source) change(void 0, true);
155
173
  activeInputSource = source;
156
174
  }
157
- onCleanup(clearTimer);
175
+ onCleanup(() => {
176
+ change(void 0, true);
177
+ clearCustomValidity();
178
+ });
158
179
  return {
159
180
  commit,
160
181
  change,
@@ -193,7 +214,7 @@ function FieldRoot(props) {
193
214
  const fieldset = useFieldsetRootContext(true);
194
215
  const parentLabelable = useLabelableContext();
195
216
  const labelable = createLabelableContext({ parent: parentLabelable });
196
- const others = omit(props, "actionsRef", "as", "class", "dirty", "disabled", "invalid", "name", "style", "touched", "validate", "validationDebounceTime", "validationMode");
217
+ const others = omit(props, "actionsRef", "render", "class", "dirty", "disabled", "invalid", "name", "style", "touched", "validate", "validationDebounceTime", "validationMode");
197
218
  const [touchedState, setTouchedState] = createSignal(false);
198
219
  const [dirtyState, setDirtyState] = createSignal(false);
199
220
  const [filled, setFilled] = createSignal(false);
@@ -229,6 +250,7 @@ function FieldRoot(props) {
229
250
  focused: focused()
230
251
  }));
231
252
  const classValue = createMemo(() => resolveClass(props.class, state()));
253
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
232
254
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
233
255
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), fieldStateAttributesMapping));
234
256
  function publishValidity(data) {
@@ -262,6 +284,7 @@ function FieldRoot(props) {
262
284
  validate: () => props.validate,
263
285
  validationDebounceTime: () => props.validationDebounceTime ?? 0,
264
286
  state,
287
+ validationMode,
265
288
  isMarkedDirty: () => markedDirty,
266
289
  shouldValidateOnChange: () => validationMode() === "onChange" || validationMode() === "onSubmit" && form.submitAttempted()
267
290
  });
@@ -336,10 +359,7 @@ function FieldRoot(props) {
336
359
  return FieldRootContext({
337
360
  value: context,
338
361
  get children() {
339
- return Dynamic(mergeProps({
340
- get component() {
341
- return props.as ?? "div";
342
- },
362
+ return Render(mergeProps({
343
363
  get ["class"]() {
344
364
  return classValue();
345
365
  },
@@ -363,7 +383,7 @@ function FieldLabel(props) {
363
383
  const allProps = props;
364
384
  const generatedId = `base-ui-${createUniqueId()}`;
365
385
  const [element, setElement] = createSignal();
366
- const others = omit(allProps, "as", "class", "id", "nativeLabel", "onClick", "onMouseDown", "onPointerDown", "ref", "style");
386
+ const others = omit(allProps, "render", "class", "id", "nativeLabel", "onClick", "onMouseDown", "onPointerDown", "ref", "style");
367
387
  const id = createMemo(() => internalProps.id ?? generatedId);
368
388
  const nativeLabel = createMemo(() => internalProps.nativeLabel ?? true);
369
389
  const state = createMemo(() => ({
@@ -371,6 +391,7 @@ function FieldLabel(props) {
371
391
  disabled: field.disabled() || item.disabled()
372
392
  }));
373
393
  const classValue = createMemo(() => resolveClass(props.class, state()));
394
+ const Render = useRender(props, () => state(), (props) => ssrElement("label", props, void 0, true));
374
395
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
375
396
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), fieldStateAttributesMapping));
376
397
  const callExternalClick = composeEventHandlers(() => internalProps.onClick);
@@ -405,10 +426,7 @@ function FieldLabel(props) {
405
426
  onSettled(() => {
406
427
  element();
407
428
  });
408
- return Dynamic(mergeProps({
409
- get component() {
410
- return props.as ?? "label";
411
- },
429
+ return Render(mergeProps({
412
430
  ref: [((value) => setElement(value)), internalProps.ref],
413
431
  get id() {
414
432
  return id();
@@ -438,21 +456,19 @@ function FieldDescription(props) {
438
456
  const labelable = useLabelableContext();
439
457
  const source = Symbol("FieldDescription");
440
458
  const generatedId = `base-ui-${createUniqueId()}`;
441
- const others = omit(props, "as", "class", "id", "style");
459
+ const others = omit(props, "render", "class", "id", "style");
442
460
  const id = createMemo(() => props.id ?? generatedId);
443
461
  const state = createMemo(() => ({
444
462
  ...field.state(),
445
463
  disabled: field.disabled() || item.disabled()
446
464
  }));
447
465
  const classValue = createMemo(() => resolveClass(props.class, state()));
466
+ const Render = useRender(props, () => state(), (props) => ssrElement("p", props, void 0, true));
448
467
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
449
468
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), fieldStateAttributesMapping));
450
469
  createEffect(id, (currentId) => labelable.registerMessageId(source, currentId));
451
470
  onCleanup(() => labelable.registerMessageId(source, void 0));
452
- return Dynamic(mergeProps({
453
- get component() {
454
- return props.as ?? "p";
455
- },
471
+ return Render(mergeProps({
456
472
  get id() {
457
473
  return id();
458
474
  },
@@ -471,13 +487,14 @@ function FieldItem(props) {
471
487
  const field = useFieldRootContext();
472
488
  const parentLabelable = useLabelableContext();
473
489
  const labelable = createLabelableContext({ parent: parentLabelable });
474
- const others = omit(props, "as", "class", "disabled", "style");
490
+ const others = omit(props, "render", "class", "disabled", "style");
475
491
  const disabled = createMemo(() => field.disabled() || (props.disabled ?? false));
476
492
  const state = createMemo(() => ({
477
493
  ...field.state(),
478
494
  disabled: disabled()
479
495
  }));
480
496
  const classValue = createMemo(() => resolveClass(props.class, state()));
497
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
481
498
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
482
499
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), fieldStateAttributesMapping));
483
500
  const context = { disabled };
@@ -487,10 +504,7 @@ function FieldItem(props) {
487
504
  return FieldItemContext({
488
505
  value: context,
489
506
  get children() {
490
- return Dynamic(mergeProps({
491
- get component() {
492
- return props.as ?? "div";
493
- },
507
+ return Render(mergeProps({
494
508
  get ["class"]() {
495
509
  return classValue();
496
510
  },
@@ -530,7 +544,7 @@ function FieldError(props) {
530
544
  const allProps = props;
531
545
  const source = Symbol("FieldError");
532
546
  const generatedId = `base-ui-${createUniqueId()}`;
533
- const others = omit(allProps, "as", "children", "class", "id", "match", "ref", "style");
547
+ const others = omit(allProps, "render", "children", "class", "id", "match", "ref", "style");
534
548
  const id = createMemo(() => internalProps.id ?? generatedId);
535
549
  const formError = createMemo(() => {
536
550
  const name = field.name();
@@ -575,6 +589,7 @@ function FieldError(props) {
575
589
  ...field.state(),
576
590
  transitionStatus: transition.transitionStatus()
577
591
  }));
592
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
578
593
  const classValue = createMemo(() => transition.mounted() ? resolveClass(props.class, state()) : void 0);
579
594
  const styleValue = createMemo(() => transition.mounted() ? resolveStyle(props.style, state()) : void 0);
580
595
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), stateAttributesMapping));
@@ -608,10 +623,7 @@ function FieldError(props) {
608
623
  return transition.mounted();
609
624
  },
610
625
  get children() {
611
- return Dynamic(mergeProps({
612
- get component() {
613
- return props.as ?? "div";
614
- },
626
+ return Render(mergeProps({
615
627
  ref: [internalProps.ref, ((element) => errorElement = element)],
616
628
  get id() {
617
629
  return id();