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,32 +1,33 @@
1
+ import { t as useRender } from "./useRender-CryVdCjs.js";
1
2
  import { getStateAttributesProps } from "./internals/getStateAttributesProps.js";
2
3
  import { E as pointer, S as listNavigation, b as keyboard, g as inputClear, h as inputChange, l as escapeKey, r as clearPress, t as cancelOpen, v as inputPress, w as none, y as itemPress } from "./internals/reasons.js";
3
4
  import { n as resolveClass, t as resolveStyle } from "./resolveStyle-XCSFDHAL.js";
4
5
  import { createChangeEventDetails, createGenericEventDetails } from "./internals/createBaseUIEventDetails.js";
5
6
  import { transitionStatusMapping } from "./internals/stateAttributesMapping.js";
6
7
  import { composeEventHandlers } from "./internals/composeEventHandlers.js";
7
- import { t as runOnceAnimationsFinish } from "./runOnceAnimationsFinish-DCHzXWZU.js";
8
+ import { t as runOnceAnimationsFinish } from "./runOnceAnimationsFinish-CYq38H8J.js";
8
9
  import { a as isElement, c as isHTMLElement, l as isInteractiveElement, n as contains, o as isElementVisible, p as ownerDocument } from "./dom-Crg_2R-j.js";
9
10
  import { i as isListIndexDisabled, n as getMinListIndex, r as getNavigatedIndex, t as getMaxListIndex } from "./compositeNavigation-BRVT1C38.js";
10
- import { t as createAnchorPositioning } from "./createAnchorPositioning-C-cVOPwz.js";
11
+ import { t as createAnchorPositioning } from "./createAnchorPositioning-B5Y0WEev.js";
11
12
  import { t as InternalBackdrop } from "./InternalBackdrop-C_iDPVR-.js";
12
13
  import { t as createAnchoredPopupScrollLock } from "./createAnchoredPopupScrollLock-DFuUrykR.js";
13
14
  import { t as createClickInteraction } from "./createClickInteraction-BYsMgvup.js";
14
15
  import { c as useFloatingTree, i as createFloatingNode, n as FloatingTreeContext, r as FloatingTreeStore, s as useFloatingParentNodeId, t as FloatingParentNodeContext } from "./FloatingTree-z1JPD1dR.js";
15
- import { a as createPopupPresence, n as createTriggerRegistration, o as createDismiss, t as PopupStore } from "./PopupStore-DEs3FAEe.js";
16
- import { t as createTransitionStatus } from "./createTransitionStatus-BTlrerSS.js";
17
- import { a as triggerOpenStateMapping, i as pressableTriggerOpenStateMapping, n as popupStateMapping, o as PopupPortal, r as popupTransitionStateMapping } from "./popupStateMapping-nKoUwoke.js";
18
- import { t as FocusManager } from "./FocusManager-BrbZVWME.js";
19
- import { a as stopButtonInteraction, i as preventDisabledButtonKeyDown, n as handleNonNativeButtonKeyUp, r as preventButtonInteraction, t as handleNonNativeButtonKeyDown } from "./buttonSemantics-BSwDxJhh.js";
16
+ import { a as createPopupPresence, n as createTriggerRegistration, o as createDismiss, t as PopupStore } from "./PopupStore-kHjFPiQ5.js";
17
+ import { t as createTransitionStatus } from "./createTransitionStatus-184v7j3-.js";
18
+ import { a as triggerOpenStateMapping, i as pressableTriggerOpenStateMapping, n as popupStateMapping, o as PopupPortal, r as popupTransitionStateMapping } from "./popupStateMapping-B2KsiiLb.js";
19
+ import { t as FocusManager } from "./FocusManager-1LfoCsya.js";
20
20
  import { t as setRef } from "./setRef-Bt70sW7c.js";
21
+ import { a as stopButtonInteraction, i as preventDisabledButtonKeyDown, n as handleNonNativeButtonKeyUp, r as preventButtonInteraction, t as handleNonNativeButtonKeyDown } from "./buttonSemantics-BSwDxJhh.js";
21
22
  import { n as useDirection } from "./DirectionContext-YORWLF08.js";
22
23
  import { DEFAULT_FIELD_STATE_ATTRIBUTES, fieldStateAttributesMapping } from "./internals/field-constants.js";
23
24
  import { n as useFieldRootContext } from "./FieldRootContext-IC-LWzVp.js";
24
- import { n as useFormContext } from "./FormContext-pvESt85v.js";
25
- import { a as defaultItemEquality, c as removeItem, i as compareItemEquality, l as selectedValueIncludes, n as isSolidAccessor, o as findItemIndex, r as areItemArraysEqual, s as findSelectionIndex, t as mergeStyleValue } from "./mergeStyleValue-Db8bRCM4.js";
26
- import { r as useLabelableContext } from "./LabelableContext-DZP3rgAY.js";
25
+ import { n as useFormContext } from "./FormContext-CYwo_ZnB.js";
26
+ import { a as defaultItemEquality, c as removeItem, i as compareItemEquality, l as selectedValueIncludes, n as isSolidAccessor, o as findItemIndex, r as areItemArraysEqual, s as findSelectionIndex, t as mergeStyleValue } from "./mergeStyleValue-BwJ10_X2.js";
27
+ import { r as useLabelableContext } from "./LabelableContext-BTeF0IWb.js";
27
28
  import { i as isScrollableY } from "./scrollable-CjsSxbGr.js";
28
29
  import { t as isAndroid } from "./platform-DYukKUir.js";
29
- import { Dynamic, escape, memo, mergeProps, ssr, ssrAttribute, ssrElement, ssrGroup, ssrHydrationKey, ssrStyle } from "@solidjs/web";
30
+ import { escape, memo, mergeProps, ssr, ssrAttribute, ssrElement, ssrGroup, ssrHydrationKey, ssrStyle } from "@solidjs/web";
30
31
  import { For, Show, createContext, createEffect, createMemo, createSignal, createUniqueId, flush, omit, onCleanup, untrack, useContext } from "solid-js";
31
32
  //#region src/internals/overlay/createListNavigation.ts
32
33
  function createListNavigation(options) {
@@ -195,7 +196,7 @@ function serializeValue(value) {
195
196
  }
196
197
  }
197
198
  function isGroupedItems(items) {
198
- return Array.isArray(items) && items.length > 0 && typeof items[0] === "object" && items[0] != null && "items" in items[0];
199
+ return Array.isArray(items) && items.length > 0 && typeof items[0] === "object" && items[0] != null && Array.isArray(items[0].items);
199
200
  }
200
201
  function flattenItems(items) {
201
202
  if (!Array.isArray(items)) return [];
@@ -205,7 +206,7 @@ function flattenItems(items) {
205
206
  /** Whether an explicit `null` item carries a label that should win over a placeholder. */
206
207
  function hasNullItemLabel(items) {
207
208
  if (items == null) return false;
208
- if (!Array.isArray(items)) return "null" in items;
209
+ if (!Array.isArray(items)) return Object.hasOwn(items, "null");
209
210
  for (const item of flattenItems(items)) {
210
211
  const labeled = item;
211
212
  if (labeled && typeof labeled === "object" && labeled.value == null && labeled.label != null) return true;
@@ -232,7 +233,7 @@ function resolveSelectedLabel(value, items, itemToStringLabel) {
232
233
  const fallback = () => stringifyAsLabel(value, itemToStringLabel);
233
234
  if (itemToStringLabel && value != null) return itemToStringLabel(value);
234
235
  if (value && typeof value === "object" && "label" in value && value.label != null) return value.label;
235
- if (items && !Array.isArray(items)) return items[String(value)] ?? fallback();
236
+ if (items && !Array.isArray(items)) return Object.hasOwn(items, String(value)) ? items[String(value)] ?? fallback() : fallback();
236
237
  if (Array.isArray(items)) {
237
238
  const flatItems = flattenItems(items);
238
239
  if (value == null || typeof value !== "object") {
@@ -563,7 +564,18 @@ function AriaCombobox(props) {
563
564
  const multiple = createMemo(() => props.selectionMode === "multiple");
564
565
  const single = createMemo(() => props.selectionMode === "single");
565
566
  const comparator = createMemo(() => props.isItemEqualToValue ?? defaultItemEquality);
566
- const itemToStringLabel = () => props.itemToStringLabel;
567
+ const itemToStringLabel = () => props.itemCollection ? resolveLabel : props.itemToStringLabel;
568
+ function resolveLabel(value) {
569
+ const collection = props.itemCollection;
570
+ if (!collection) return stringifyAsLabel(value, props.itemToStringLabel);
571
+ if (!collection.hasValue(value, comparator())) {
572
+ const external = flattenItems(props.filteredItems).find((item) => compareItemEquality(collection.value(item), value, comparator()));
573
+ if (external !== void 0) return collection.itemLabel(external);
574
+ }
575
+ return collection.label(value, comparator(), props.itemToStringLabel);
576
+ }
577
+ const projectValue = (item) => props.itemCollection ? props.itemCollection.value(item) : item;
578
+ const sourceLabel = () => props.itemCollection?.itemLabel ?? props.itemToStringLabel;
567
579
  const itemToStringValue = () => props.itemToStringValue;
568
580
  const initialSelectedValue = untrack(() => {
569
581
  const defaultValue = props.defaultSelectedValue;
@@ -574,7 +586,7 @@ function AriaCombobox(props) {
574
586
  const selectedValue = createMemo(() => controlledSelected ? props.selectedValue ?? null : uncontrolledSelected());
575
587
  const initialDefaultInputValue = untrack(() => {
576
588
  if (hasInputValueProp) return props.defaultInputValue ?? props.inputValue ?? "";
577
- if (props.selectionMode === "single") return stringifyAsLabel(selectedValue(), props.itemToStringLabel);
589
+ if (props.selectionMode === "single") return resolveLabel(selectedValue());
578
590
  return "";
579
591
  });
580
592
  const [uncontrolledInput, setUncontrolledInput] = createSignal(initialDefaultInputValue);
@@ -614,18 +626,18 @@ function AriaCombobox(props) {
614
626
  if (props.filter === null) return () => true;
615
627
  if (props.filter !== void 0) return props.filter;
616
628
  const collator = collatorFilter();
617
- const toLabel = props.itemToStringLabel;
629
+ const toLabel = sourceLabel();
618
630
  return (item, query) => item == null ? false : collator.contains(item, query, toLabel);
619
631
  });
620
632
  const query = createMemo(() => closeQuery() ?? String(inputValue()).trim());
621
- const selectedLabelString = createMemo(() => single() ? stringifyAsLabel(selectedValue(), props.itemToStringLabel) : "");
633
+ const selectedLabelString = createMemo(() => single() ? resolveLabel(selectedValue()) : "");
622
634
  const shouldBypassFiltering = createMemo(() => {
623
635
  const label = selectedLabelString();
624
636
  const currentQuery = query();
625
637
  return single() && !queryChangedAfterOpen() && currentQuery !== "" && label.length === currentQuery.length && collatorFilter().contains(label, currentQuery);
626
638
  });
627
- const filterQuery = createMemo(() => shouldBypassFiltering() ? "" : query());
628
- const shouldIgnoreExternalFiltering = createMemo(() => hasItems() && hasFilteredItemsProp() && shouldBypassFiltering());
639
+ const filterQuery = createMemo(() => props.filterQuery ?? (shouldBypassFiltering() ? "" : query()));
640
+ const shouldIgnoreExternalFiltering = createMemo(() => hasItems() && hasFilteredItemsProp() && shouldBypassFiltering() && (!props.itemCollection || props.itemCollection.hasValue(selectedValue(), comparator())));
629
641
  const flatItems = createMemo(() => flattenItems(props.items));
630
642
  const filteredItems = createMemo(() => {
631
643
  if (props.filteredItems !== void 0 && !shouldIgnoreExternalFiltering()) return props.filteredItems;
@@ -634,7 +646,7 @@ function AriaCombobox(props) {
634
646
  const currentQuery = filterQuery();
635
647
  const currentLimit = limit();
636
648
  const match = filter();
637
- const toLabel = props.itemToStringLabel;
649
+ const toLabel = sourceLabel();
638
650
  if (isGroupedItems(items)) {
639
651
  const resultingGroups = [];
640
652
  let currentCount = 0;
@@ -677,7 +689,6 @@ function AriaCombobox(props) {
677
689
  let initializedOpen = false;
678
690
  let previousSelectedValue = cloneValue(untrack(selectedValue));
679
691
  let previousInputValue = untrack(inputValue);
680
- let previousItems = untrack(() => props.items);
681
692
  let previousQuery = untrack(query);
682
693
  const store = new ComboboxStore({
683
694
  controlledOpen: () => controlledOpen ? props.open : void 0,
@@ -713,14 +724,14 @@ function AriaCombobox(props) {
713
724
  return store.track().popupElement;
714
725
  }
715
726
  /** Item values addressed by index, from `items` when provided and rendered items otherwise. */
716
- const itemValues = createMemo(() => hasItems() || hasFilteredItemsProp() ? flatFilteredItems() : store.collection.values());
717
- createMemo(() => {
727
+ const itemValues = createMemo(() => hasItems() || hasFilteredItemsProp() ? flatFilteredItems().map(projectValue) : store.collection.values());
728
+ function itemLabels() {
718
729
  const rendered = store.collection.labels();
719
730
  if (!hasItems()) return rendered;
720
- const derived = flatFilteredItems().map((item) => stringifyAsLabel(item, props.itemToStringLabel));
731
+ const derived = flatFilteredItems().map((item) => stringifyAsLabel(item, sourceLabel()));
721
732
  if (!store.forceMounted()) return derived;
722
733
  return derived.map((label, index) => rendered[index] ?? label);
723
- });
734
+ }
724
735
  const listElements = createMemo(() => {
725
736
  const elements = store.collection.elements();
726
737
  const length = itemValues().length;
@@ -789,9 +800,9 @@ function AriaCombobox(props) {
789
800
  }
790
801
  }
791
802
  function setInputValue(next, details) {
792
- hadInputClear = details.reason === inputClear;
793
803
  props.onInputValueChange?.(next, details);
794
804
  if (details.isCanceled) return;
805
+ hadInputClear = details.reason === inputClear;
795
806
  if (details.reason === "input-change") {
796
807
  if (store.open() && closeQuery() !== null) setCloseQuery(null);
797
808
  const event = details.event;
@@ -830,7 +841,7 @@ function AriaCombobox(props) {
830
841
  } else if (multiple()) {
831
842
  if (!inline()) setCloseQuery(currentQuery);
832
843
  if (store.inputInsidePopup()) setIndices({ activeIndex: null });
833
- if (!store.inputInsidePopup() || inline()) setInputValue("", createChangeEventDetails(inputClear, details.event));
844
+ if (!store.inputInsidePopup() || inline()) setInputValue("", createChangeEventDetails(inputClear, details.event, void 0, { isItemPress: details.reason === itemPress }));
834
845
  }
835
846
  }
836
847
  if (!nextOpen && store.inputInsidePopup() && (details.reason === "focus-out" || details.reason === "outside-press")) {
@@ -843,7 +854,7 @@ function AriaCombobox(props) {
843
854
  props.onSelectedValueChange?.(next, details);
844
855
  if (details.isCanceled) return;
845
856
  if (!controlledSelected) setUncontrolledSelected(() => next);
846
- if (selectionMode() === "none" && store.track().popupElement != null && (props.fillInputOnItemPress ?? true) || single() && !store.inputInsidePopup()) setInputValue(stringifyAsLabel(next, props.itemToStringLabel), createChangeEventDetails(details.reason, details.event));
857
+ if (selectionMode() === "none" && store.track().popupElement != null && (props.fillInputOnItemPress ?? true) || single() && !store.inputInsidePopup()) setInputValue(resolveLabel(next), createChangeEventDetails(details.reason, details.event));
847
858
  }
848
859
  function handleSelection(event, itemValue) {
849
860
  const target = event.target;
@@ -857,11 +868,14 @@ function AriaCombobox(props) {
857
868
  }
858
869
  if (multiple()) {
859
870
  const current = Array.isArray(selectedValue()) ? selectedValue() : [];
860
- setSelectedValue(selectedValueIncludes(current, itemValue, comparator()) ? removeItem(current, itemValue, comparator()) : [...current, itemValue], details);
871
+ const alreadySelected = selectedValueIncludes(current, itemValue, comparator());
872
+ setSelectedValue(alreadySelected ? removeItem(current, itemValue, comparator()) : [...current, itemValue], details);
861
873
  if (details.isCanceled) return;
862
874
  if (!((inputElement()?.value.trim() ?? "") !== "")) return;
863
- if (store.inputInsidePopup()) setInputValue("", createChangeEventDetails(inputClear, details.event));
864
- else setOpen(false, details);
875
+ if (store.inputInsidePopup()) {
876
+ setInputValue("", createChangeEventDetails(inputClear, details.event, void 0, { isItemPress: true }));
877
+ if (pendingQueryHighlight && !alreadySelected) pendingQueryHighlight.toggledValue = itemValue;
878
+ } else setOpen(false, details);
865
879
  return;
866
880
  }
867
881
  setSelectedValue(itemValue, details);
@@ -901,7 +915,7 @@ function AriaCombobox(props) {
901
915
  if (store.inputInsidePopup()) {
902
916
  if (currentInput && currentInput.value !== "") setInputValue("", createChangeEventDetails(inputClear));
903
917
  } else {
904
- const label = stringifyAsLabel(selectedValue(), props.itemToStringLabel);
918
+ const label = resolveLabel(selectedValue());
905
919
  if (currentInput && currentInput.value !== label) setInputValue(label, createChangeEventDetails(label === "" ? inputClear : none));
906
920
  }
907
921
  }
@@ -926,13 +940,13 @@ function AriaCombobox(props) {
926
940
  reference["aria-expanded"] = expanded() ? "true" : "false";
927
941
  reference["aria-haspopup"] = grid() ? "grid" : "listbox";
928
942
  reference["aria-controls"] = expanded() ? store.listElement()?.id : void 0;
929
- reference["aria-autocomplete"] = autoCompleteMode();
943
+ reference["aria-autocomplete"] = readOnly() ? "none" : autoCompleteMode();
930
944
  }
931
945
  return reference;
932
946
  });
933
947
  const click = createClickInteraction({
934
948
  context: store.context.floatingRoot,
935
- enabled: () => !readOnly() && !disabled() && openOnInputClick(),
949
+ enabled: () => !disabled() && openOnInputClick(),
936
950
  event: () => "mousedown-only",
937
951
  toggle: () => false,
938
952
  reason: () => inputPress,
@@ -941,7 +955,7 @@ function AriaCombobox(props) {
941
955
  const dismiss = createDismiss({
942
956
  context: store.context.floatingRoot,
943
957
  tree: () => tree,
944
- enabled: () => !readOnly() && !disabled() && !inline(),
958
+ enabled: () => !disabled() && !inline(),
945
959
  outsidePressEvent: () => ({
946
960
  mouse: "sloppy",
947
961
  touch: "intentional"
@@ -954,7 +968,7 @@ function AriaCombobox(props) {
954
968
  });
955
969
  const listNavigation$1 = createListNavigation({
956
970
  context: store.context.floatingRoot,
957
- enabled: () => !readOnly() && !disabled(),
971
+ enabled: () => !disabled(),
958
972
  list: listElements,
959
973
  activeIndex: store.activeIndex,
960
974
  selectedIndex: store.selectedIndex,
@@ -992,6 +1006,8 @@ function AriaCombobox(props) {
992
1006
  flatFilteredItems,
993
1007
  listEmpty,
994
1008
  itemValues,
1009
+ itemLabels,
1010
+ hasItemCollection: () => props.itemCollection !== void 0,
995
1011
  selectedValue,
996
1012
  inputValue,
997
1013
  hasSelectedValue,
@@ -1083,7 +1099,7 @@ function AriaCombobox(props) {
1083
1099
  if (state.open) return;
1084
1100
  store.pointerDownItem = null;
1085
1101
  if (state.mode === "none") return;
1086
- untrack(() => setIndices({ selectedIndex: findSelectionIndex(hasItems() ? flatItems() : state.values, state.selected, state.compare, state.isMultiple) }));
1102
+ untrack(() => setIndices({ selectedIndex: findSelectionIndex(state.values, state.selected, state.compare, state.isMultiple) }));
1087
1103
  });
1088
1104
  createEffect(() => ({
1089
1105
  activeIndex: store.activeIndex(),
@@ -1109,10 +1125,11 @@ function AriaCombobox(props) {
1109
1125
  if (!store.open() && !inline() || (inputElement()?.value.trim() ?? "") !== "") return;
1110
1126
  const current = selectedValue();
1111
1127
  const isMultiple = multiple();
1112
- const lastSelected = isMultiple && Array.isArray(current) ? current[current.length - 1] : current;
1113
- const hasSelection = selectionMode() !== "none" && lastSelected != null;
1114
- if (hasSelection || clearedBySelection) store.setActiveIndex(hasSelection ? findSelectionIndex(itemValues(), current, comparator(), isMultiple) : null);
1115
- else if (autoHighlight() === "always") store.setActiveIndex(0);
1128
+ const hasSelection = isMultiple && Array.isArray(current) ? current.length > 0 : selectionMode() !== "none" && current != null;
1129
+ if (hasSelection || clearedBySelection) {
1130
+ const toggledIndex = findItemIndex(itemValues(), pending.toggledValue, comparator());
1131
+ store.setActiveIndex(hasSelection ? toggledIndex !== -1 ? toggledIndex : findSelectionIndex(itemValues(), current, comparator(), isMultiple) : null);
1132
+ } else if (autoHighlight() === "always") store.setActiveIndex(0);
1116
1133
  }));
1117
1134
  }
1118
1135
  }
@@ -1162,9 +1179,12 @@ function AriaCombobox(props) {
1162
1179
  const pending = pendingInitialHighlight;
1163
1180
  pendingInitialHighlight = null;
1164
1181
  if (store.activeIndex() != null || queryChangedAfterOpen()) return;
1165
- const selected = selectionMode() === "none" ? null : store.selectedIndex();
1182
+ const selected = selectionMode() === "none" ? null : findSelectionIndex(itemValues(), selectedValue(), comparator(), multiple());
1166
1183
  if (selected != null) {
1167
- setIndices({ activeIndex: selected });
1184
+ setIndices({
1185
+ activeIndex: selected,
1186
+ selectedIndex: selected
1187
+ });
1168
1188
  return;
1169
1189
  }
1170
1190
  if (pending && (selectionMode() !== "none" || autoHighlight() !== false)) {
@@ -1204,7 +1224,7 @@ function AriaCombobox(props) {
1204
1224
  setQueryChangedAfterOpen(true);
1205
1225
  });
1206
1226
  function syncInputToSelectedLabel() {
1207
- const label = stringifyAsLabel(selectedValue(), props.itemToStringLabel);
1227
+ const label = resolveLabel(selectedValue());
1208
1228
  if (inputValue() !== label) setInputValue(label, createChangeEventDetails(none));
1209
1229
  }
1210
1230
  createEffect(() => ({
@@ -1236,10 +1256,11 @@ function AriaCombobox(props) {
1236
1256
  field.validation.change(state.input);
1237
1257
  });
1238
1258
  });
1239
- createEffect(() => props.items, (items) => {
1240
- const previous = previousItems;
1241
- previousItems = items;
1242
- if (previous === items) return;
1259
+ createEffect(() => ({
1260
+ items: props.items,
1261
+ label: selectedLabelString()
1262
+ }), (current, previous) => {
1263
+ if (!previous || current.items === previous.items && current.label === previous.label) return;
1243
1264
  untrack(() => {
1244
1265
  if (!single() || hasInputValueProp || store.inputInsidePopup() || queryChangedAfterOpen()) return;
1245
1266
  syncInputToSelectedLabel();
@@ -1269,7 +1290,7 @@ function AriaCombobox(props) {
1269
1290
  if (!setOpen(true, createChangeEventDetails("list-navigation", event, triggerElement() ?? void 0))) pendingInitialHighlight = null;
1270
1291
  }
1271
1292
  function handleNavigationKeyDown(event) {
1272
- if (readOnly() || disabled()) return;
1293
+ if (disabled()) return;
1273
1294
  if (!store.open() && !inline()) {
1274
1295
  if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
1275
1296
  event.preventDefault();
@@ -1413,6 +1434,7 @@ function ComboboxTrigger(props) {
1413
1434
  const ariaLabelledBy = createMemo(() => internalProps["aria-labelledby"] ?? labelable.labelId() ?? context.store.labelId());
1414
1435
  const state = createMemo(() => ({
1415
1436
  ...context.field.state(),
1437
+ readOnly: context.readOnly(),
1416
1438
  open: context.store.open(),
1417
1439
  disabled: disabled(),
1418
1440
  popupSide: context.store.resolvedPopupSide(),
@@ -1422,16 +1444,16 @@ function ComboboxTrigger(props) {
1422
1444
  const classValue = createMemo(() => resolveClass(props.class, state()));
1423
1445
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
1424
1446
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxControlStateMapping));
1425
- const others = omit(allProps, "aria-labelledby", "as", "class", "disabled", "id", "nativeButton", "onBlur", "onClick", "onFocus", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "onPointerEnter", "ref", "style");
1447
+ const others = omit(allProps, "aria-labelledby", "render", "class", "disabled", "id", "nativeButton", "onBlur", "onClick", "onFocus", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "onPointerEnter", "ref", "style");
1426
1448
  const click = createClickInteraction({
1427
1449
  context: context.store.context.floatingRoot,
1428
- enabled: () => !context.readOnly() && !context.disabled(),
1450
+ enabled: () => !context.disabled(),
1429
1451
  event: () => "mousedown"
1430
1452
  });
1431
1453
  const typeahead = createTypeahead({
1432
1454
  context: context.store.context.floatingRoot,
1433
1455
  enabled: () => !context.store.open() && !context.readOnly() && !context.disabled() && context.selectionMode() === "single",
1434
- list: () => context.store.collection.labels(),
1456
+ list: context.itemLabels,
1435
1457
  elements: () => context.store.collection.elements(),
1436
1458
  activeIndex: context.store.activeIndex,
1437
1459
  selectedIndex: context.store.selectedIndex,
@@ -1450,7 +1472,7 @@ function ComboboxTrigger(props) {
1450
1472
  }
1451
1473
  function handleFocus() {
1452
1474
  context.field.setFocused(true);
1453
- if (disabled() || context.readOnly()) return;
1475
+ if (disabled()) return;
1454
1476
  clearTimeout(focusTimer);
1455
1477
  focusTimer = setTimeout(() => context.forceMount(), 0);
1456
1478
  }
@@ -1478,7 +1500,7 @@ function ComboboxTrigger(props) {
1478
1500
  removeMouseUp = () => documentNode.removeEventListener("mouseup", onMouseUp);
1479
1501
  }
1480
1502
  function handleMouseDown(event) {
1481
- if (disabled() || context.readOnly()) return;
1503
+ if (disabled()) return;
1482
1504
  const trigger = event.currentTarget;
1483
1505
  if (!insidePopup()) context.store.context.floatingRoot.update({ domReferenceElement: trigger });
1484
1506
  context.forceMount();
@@ -1497,7 +1519,7 @@ function ComboboxTrigger(props) {
1497
1519
  click.onClick(event);
1498
1520
  }
1499
1521
  function handleKeyDown(event) {
1500
- if (context.readOnly()) return;
1522
+ if (disabled()) return;
1501
1523
  typeahead.onKeyDown(event);
1502
1524
  if (event.key === "ArrowDown" || event.key === "ArrowUp") {
1503
1525
  event.preventDefault();
@@ -1533,10 +1555,7 @@ function ComboboxTrigger(props) {
1533
1555
  removeMouseUp?.();
1534
1556
  labelable.registerControlId(labelSource, void 0);
1535
1557
  });
1536
- return Dynamic(mergeProps({
1537
- get component() {
1538
- return props.as ?? "button";
1539
- },
1558
+ return useRender(props, () => state(), (props) => ssrElement("button", props, void 0, true))(mergeProps({
1540
1559
  ref: [((value) => setElement(value)), internalProps.ref],
1541
1560
  get id() {
1542
1561
  return id();
@@ -1568,6 +1587,9 @@ function ComboboxTrigger(props) {
1568
1587
  get ["aria-required"]() {
1569
1588
  return insidePopup() && context.required() ? "true" : void 0;
1570
1589
  },
1590
+ get ["aria-readonly"]() {
1591
+ return insidePopup() && context.readOnly() ? "true" : void 0;
1592
+ },
1571
1593
  get ["aria-labelledby"]() {
1572
1594
  return ariaLabelledBy();
1573
1595
  },
@@ -1748,7 +1770,7 @@ function ComboboxInput(props) {
1748
1770
  const activeIndex = context.store.activeIndex();
1749
1771
  return activeIndex == null ? void 0 : `${context.id()}-${activeIndex}`;
1750
1772
  });
1751
- const others = omit(allProps, "as", "class", "disabled", "id", "onBlur", "onCompositionEnd", "onCompositionStart", "onFocus", "onInput", "onKeyDown", "onMouseDown", "onPointerDown", "onPointerMove", "ref", "style");
1773
+ const others = omit(allProps, "render", "class", "disabled", "id", "onBlur", "onCompositionEnd", "onCompositionStart", "onFocus", "onInput", "onKeyDown", "onMouseDown", "onPointerDown", "onPointerMove", "ref", "style");
1752
1774
  function clearHighlight() {
1753
1775
  context.setIndices({
1754
1776
  activeIndex: null,
@@ -1807,7 +1829,10 @@ function ComboboxInput(props) {
1807
1829
  }
1808
1830
  const changeDetails = createChangeEventDetails(inputChange, event);
1809
1831
  context.setInputValue(input.value, changeDetails);
1810
- if (changeDetails.isCanceled) return;
1832
+ if (changeDetails.isCanceled) {
1833
+ input.value = context.inputValue();
1834
+ return;
1835
+ }
1811
1836
  const empty = input.value === "";
1812
1837
  const clearDetails = createChangeEventDetails(inputClear, event);
1813
1838
  if (empty && !context.store.inputInsidePopup()) {
@@ -1859,10 +1884,16 @@ function ComboboxInput(props) {
1859
1884
  function handleKeyDown(event) {
1860
1885
  const editable = !disabled() && !context.readOnly();
1861
1886
  const modified = event.ctrlKey || event.shiftKey || event.altKey || event.metaKey;
1862
- if (editable && !modified) context.store.keyboardActive = true;
1887
+ if (!disabled() && !modified) context.store.keyboardActive = true;
1863
1888
  if (!(context.grid() && context.store.activeIndex() == null && (event.key === "ArrowLeft" || event.key === "ArrowRight"))) context.listNavigation.onKeyDown(event);
1864
1889
  context.dismiss.onKeyDown(event);
1865
- if (!editable || modified) return;
1890
+ if (!editable || modified) {
1891
+ if (context.readOnly() && event.key === "Enter" && context.store.open() && context.store.activeIndex() !== null) {
1892
+ event.preventDefault();
1893
+ event.stopPropagation();
1894
+ }
1895
+ return;
1896
+ }
1866
1897
  const input = event.currentTarget;
1867
1898
  const isRTL = direction() === "rtl";
1868
1899
  if (event.key === "Home" || event.key === "End") {
@@ -1934,6 +1965,7 @@ function ComboboxInput(props) {
1934
1965
  if (untrack(context.inputElement) === element) context.setInputElement(null);
1935
1966
  });
1936
1967
  let element = null;
1968
+ const Render = useRender(props, () => state(), (props) => ssrElement("input", props, void 0, true));
1937
1969
  return [Show({
1938
1970
  get when() {
1939
1971
  return memo(() => {
@@ -1945,10 +1977,7 @@ function ComboboxInput(props) {
1945
1977
  context.store.startDismissElement = node;
1946
1978
  } });
1947
1979
  }
1948
- }), Dynamic(mergeProps({
1949
- get component() {
1950
- return props.as ?? "input";
1951
- },
1980
+ }), Render(mergeProps({
1952
1981
  ref: [((value) => {
1953
1982
  element = value;
1954
1983
  context.setInputElement(value);
@@ -2054,16 +2083,13 @@ function ComboboxInputGroup(props) {
2054
2083
  const classValue = createMemo(() => resolveClass(props.class, state()));
2055
2084
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
2056
2085
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxControlStateMapping));
2057
- const others = omit(allProps, "as", "class", "onMouseDown", "ref", "style");
2086
+ const others = omit(allProps, "render", "class", "onMouseDown", "ref", "style");
2058
2087
  const onMouseDown = composeEventHandlers(() => internalProps.onMouseDown, () => (event) => handleInputPress(event, context, context.disabled(), context.readOnly(), (target) => contains(context.store.chipsContainerElement, target)));
2059
2088
  onCleanup(() => {
2060
2089
  if (untrack(context.inputGroupElement) === element) context.setInputGroupElement(null);
2061
2090
  });
2062
2091
  let element = null;
2063
- return Dynamic(mergeProps({
2064
- get component() {
2065
- return props.as ?? "div";
2066
- },
2092
+ return useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true))(mergeProps({
2067
2093
  ref: [((value) => {
2068
2094
  element = value;
2069
2095
  context.setInputGroupElement(value);
@@ -2089,44 +2115,19 @@ function ComboboxIcon(props) {
2089
2115
  const classValue = createMemo(() => resolveClass(props.class, state()));
2090
2116
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
2091
2117
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), triggerOpenStateMapping));
2092
- const others = omit(allProps, "as", "class", "ref", "style");
2093
- return Show({
2094
- get when() {
2095
- return props.as;
2096
- },
2097
- get fallback() {
2098
- return ssrElement("span", () => {
2099
- return mergeProps({
2100
- "aria-hidden": "true",
2101
- get ["class"]() {
2102
- return classValue();
2103
- },
2104
- get style() {
2105
- return styleValue();
2106
- }
2107
- }, stateAttributes, others);
2108
- }, () => {
2109
- return () => {
2110
- return escape(props.children ?? "▼");
2111
- };
2112
- }, true);
2113
- },
2114
- children: (component) => Dynamic(mergeProps({
2115
- get component() {
2116
- return component();
2117
- },
2118
- ref: [internalProps.ref],
2119
- "aria-hidden": "true",
2120
- get ["class"]() {
2121
- return classValue();
2122
- },
2123
- get style() {
2124
- return styleValue();
2125
- }
2126
- }, stateAttributes, others, { get children() {
2127
- return props.children ?? "▼";
2128
- } }))
2129
- });
2118
+ const others = omit(allProps, "render", "class", "ref", "style");
2119
+ return useRender(props, () => state(), (props) => ssrElement("span", props, void 0, true))(mergeProps({
2120
+ ref: [internalProps.ref],
2121
+ "aria-hidden": "true",
2122
+ get ["class"]() {
2123
+ return classValue();
2124
+ },
2125
+ get style() {
2126
+ return styleValue();
2127
+ }
2128
+ }, stateAttributes, others, { get children() {
2129
+ return props.children ?? "▼";
2130
+ } }));
2130
2131
  }
2131
2132
  //#endregion
2132
2133
  //#region src/combobox/clear/ComboboxClear.tsx
@@ -2154,7 +2155,7 @@ function ComboboxClear(props) {
2154
2155
  const classValue = createMemo(() => resolveClass(props.class, state()));
2155
2156
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
2156
2157
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxClearStateMapping));
2157
- const others = omit(allProps, "as", "class", "disabled", "keepMounted", "nativeButton", "onClick", "onKeyDown", "onKeyUp", "onMouseDown", "ref", "style");
2158
+ const others = omit(allProps, "render", "class", "disabled", "keepMounted", "nativeButton", "onClick", "onKeyDown", "onKeyUp", "onMouseDown", "ref", "style");
2158
2159
  let element = null;
2159
2160
  createEffect(() => ({
2160
2161
  visible: visible(),
@@ -2189,15 +2190,13 @@ function ComboboxClear(props) {
2189
2190
  const onKeyDown = composeEventHandlers(() => internalProps.onKeyDown, () => untrack(() => nativeButton() ? void 0 : handleNonNativeButtonKeyDown));
2190
2191
  const onKeyUp = composeEventHandlers(() => untrack(() => disabled() ? stopButtonInteraction : void 0), () => internalProps.onKeyUp, () => untrack(() => nativeButton() ? void 0 : handleNonNativeButtonKeyUp));
2191
2192
  const onMouseDown = composeEventHandlers(() => internalProps.onMouseDown, () => (event) => event.preventDefault());
2193
+ const Render = useRender(props, () => state(), (props) => ssrElement("button", props, void 0, true));
2192
2194
  return Show({
2193
2195
  get when() {
2194
2196
  return shouldRender();
2195
2197
  },
2196
2198
  get children() {
2197
- return Dynamic(mergeProps({
2198
- get component() {
2199
- return props.as ?? "button";
2200
- },
2199
+ return Render(mergeProps({
2201
2200
  ref: [((value) => {
2202
2201
  element = value;
2203
2202
  context.store.clearElement = value;
@@ -2266,7 +2265,7 @@ function ComboboxList(props) {
2266
2265
  const state = createMemo(() => ({ empty: context.listEmpty() }));
2267
2266
  const classValue = createMemo(() => resolveClass(props.class, state()));
2268
2267
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
2269
- const others = omit(allProps, "as", "children", "class", "id", "onKeyDown", "ref", "style");
2268
+ const others = omit(allProps, "render", "children", "class", "id", "onKeyDown", "ref", "style");
2270
2269
  function handleKeyDown(event) {
2271
2270
  if (context.disabled() || context.readOnly()) return;
2272
2271
  context.store.keyboardActive = true;
@@ -2304,10 +2303,7 @@ function ComboboxList(props) {
2304
2303
  if (typeof child === "function" && !isSolidAccessor(child)) return ComboboxCollection({ children: child });
2305
2304
  return child;
2306
2305
  });
2307
- return Dynamic(mergeProps({
2308
- get component() {
2309
- return props.as ?? "div";
2310
- },
2306
+ return useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true))(mergeProps({
2311
2307
  ref: [((element) => {
2312
2308
  setListElement(element);
2313
2309
  context.store.setListElement(element);
@@ -2323,6 +2319,9 @@ function ComboboxList(props) {
2323
2319
  get ["aria-multiselectable"]() {
2324
2320
  return context.multiple() ? "true" : void 0;
2325
2321
  },
2322
+ get ["aria-readonly"]() {
2323
+ return !context.grid() && context.readOnly() ? "true" : void 0;
2324
+ },
2326
2325
  get ["class"]() {
2327
2326
  return classValue();
2328
2327
  },
@@ -2388,13 +2387,10 @@ function ComboboxStatus(props) {
2388
2387
  const state = {};
2389
2388
  const classValue = createMemo(() => resolveClass(props.class, state));
2390
2389
  const styleValue = createMemo(() => resolveStyle(props.style, state));
2391
- const others = omit(allProps, "as", "class", "ref", "style");
2390
+ const others = omit(allProps, "render", "class", "ref", "style");
2392
2391
  const [element, setElement] = createSignal(null, { ownedWrite: true });
2393
2392
  createInitialLiveRegionTextMutation(element);
2394
- return Dynamic(mergeProps({
2395
- get component() {
2396
- return props.as ?? "div";
2397
- },
2393
+ return useRender(props, () => state, (props) => ssrElement("div", props, void 0, true))(mergeProps({
2398
2394
  ref: [((value) => setElement(value)), internalProps.ref],
2399
2395
  role: "status",
2400
2396
  "aria-live": "polite",
@@ -2432,7 +2428,7 @@ function ComboboxPortal(props) {
2432
2428
  const state = {};
2433
2429
  const classValue = createMemo(() => resolveClass(props.class, state));
2434
2430
  const styleValue = createMemo(() => resolveStyle(props.style, state));
2435
- const others = omit(allProps, "as", "class", "container", "keepMounted", "ref", "style");
2431
+ const others = omit(allProps, "render", "class", "container", "keepMounted", "ref", "style");
2436
2432
  return Show({
2437
2433
  get when() {
2438
2434
  return shouldRender();
@@ -2440,12 +2436,12 @@ function ComboboxPortal(props) {
2440
2436
  get children() {
2441
2437
  return ComboboxPortalContext({
2442
2438
  get value() {
2443
- return keepMounted();
2439
+ return untrack(keepMounted);
2444
2440
  },
2445
2441
  get children() {
2446
2442
  return PopupPortal(mergeProps({
2447
- get as() {
2448
- return props.as;
2443
+ get render() {
2444
+ return props.render;
2449
2445
  },
2450
2446
  get container() {
2451
2447
  return internalProps.container;
@@ -2482,11 +2478,8 @@ function ComboboxBackdrop(props) {
2482
2478
  "-webkit-user-select": "none"
2483
2479
  }, resolveStyle(props.style, state())));
2484
2480
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxBackdropStateMapping));
2485
- const others = omit(allProps, "as", "class", "ref", "style");
2486
- return Dynamic(mergeProps({
2487
- get component() {
2488
- return props.as ?? "div";
2489
- },
2481
+ const others = omit(allProps, "render", "class", "ref", "style");
2482
+ return useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true))(mergeProps({
2490
2483
  ref: [internalProps.ref],
2491
2484
  role: "presentation",
2492
2485
  get hidden() {
@@ -2551,7 +2544,7 @@ function ComboboxPositioner(props) {
2551
2544
  transition: context.store.track().transitionStatus === "starting" ? "none" : void 0
2552
2545
  }, resolveStyle(props.style, state())));
2553
2546
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxPositionerStateMapping));
2554
- const others = omit(allProps, "align", "alignOffset", "anchor", "arrowPadding", "as", "class", "collisionAvoidance", "collisionBoundary", "collisionPadding", "disableAnchorTracking", "positionMethod", "ref", "side", "sideOffset", "sticky", "style");
2547
+ const others = omit(allProps, "align", "alignOffset", "anchor", "arrowPadding", "render", "class", "collisionAvoidance", "collisionBoundary", "collisionPadding", "disableAnchorTracking", "positionMethod", "ref", "side", "sideOffset", "sticky", "style");
2555
2548
  createAnchoredPopupScrollLock({
2556
2549
  enabled: () => context.store.open() && context.modal(),
2557
2550
  touchOpen: () => context.store.openMethod() === "touch",
@@ -2585,6 +2578,7 @@ function ComboboxPositioner(props) {
2585
2578
  }
2586
2579
  });
2587
2580
  }
2581
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
2588
2582
  return ComboboxPositionerContext({
2589
2583
  value: positionerContext,
2590
2584
  get children() {
@@ -2597,10 +2591,7 @@ function ComboboxPositioner(props) {
2597
2591
  get children() {
2598
2592
  return ModalBackdrop({});
2599
2593
  }
2600
- }), Dynamic(mergeProps({
2601
- get component() {
2602
- return props.as ?? "div";
2603
- },
2594
+ }), Render(mergeProps({
2604
2595
  ref: [((value) => {
2605
2596
  setElement(value);
2606
2597
  context.store.setPositionerElement(value);
@@ -2648,7 +2639,7 @@ function ComboboxPopup(props) {
2648
2639
  const classValue = createMemo(() => resolveClass(props.class, state()));
2649
2640
  const styleValue = createMemo(() => mergeStyleValue({ transition: state().transitionStatus === "starting" ? "none" : void 0 }, resolveStyle(props.style, state())));
2650
2641
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), comboboxPopupStateMapping));
2651
- const others = omit(allProps, "as", "class", "finalFocus", "id", "initialFocus", "onFocus", "ref", "style");
2642
+ const others = omit(allProps, "render", "class", "finalFocus", "id", "initialFocus", "onFocus", "ref", "style");
2652
2643
  const focusManagerModal = createMemo(() => !context.store.inputInsidePopup() || context.modal());
2653
2644
  const resolvedInitialFocus = createMemo(() => {
2654
2645
  if (internalProps.initialFocus !== void 0) return internalProps.initialFocus;
@@ -2676,6 +2667,7 @@ function ComboboxPopup(props) {
2676
2667
  onCleanup(() => {
2677
2668
  if (context.store.state.popupElement === popupElement) context.store.setPopupElement(null);
2678
2669
  });
2670
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
2679
2671
  return FocusManager({
2680
2672
  get context() {
2681
2673
  return context.store.context.floatingRoot;
@@ -2704,10 +2696,7 @@ function ComboboxPopup(props) {
2704
2696
  referenceElement: () => context.store.inputInsidePopup() ? context.triggerElement() : context.inputElement(),
2705
2697
  getInsideElements: () => [context.store.startDismissElement, context.store.endDismissElement],
2706
2698
  get children() {
2707
- return [Dynamic(mergeProps({
2708
- get component() {
2709
- return props.as ?? "div";
2710
- },
2699
+ return [Render(mergeProps({
2711
2700
  ref: [((element) => {
2712
2701
  popupElement = element;
2713
2702
  context.store.setPopupElement(element);
@@ -2764,15 +2753,12 @@ function ComboboxArrow(props) {
2764
2753
  const classValue = createMemo(() => resolveClass(props.class, state()));
2765
2754
  const styleValue = createMemo(() => mergeStyleValue(positioner.arrowStyles(), resolveStyle(props.style, state())));
2766
2755
  const stateAttributes = createMemo(() => getStateAttributesProps(state(), popupStateMapping));
2767
- const others = omit(allProps, "as", "class", "ref", "style");
2756
+ const others = omit(allProps, "render", "class", "ref", "style");
2768
2757
  let arrow = null;
2769
2758
  onCleanup(() => {
2770
2759
  if (arrow) positioner.setArrowElement(null);
2771
2760
  });
2772
- return Dynamic(mergeProps({
2773
- get component() {
2774
- return props.as ?? "div";
2775
- },
2761
+ return useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true))(mergeProps({
2776
2762
  ref: [((element) => {
2777
2763
  arrow = element;
2778
2764
  positioner.setArrowElement(element);
@@ -2799,13 +2785,15 @@ function useComboboxGroupContext() {
2799
2785
  //#region src/combobox/group/ComboboxGroup.tsx
2800
2786
  /** Groups related items with the corresponding label. */
2801
2787
  function ComboboxGroup(props) {
2788
+ const context = useComboboxRootContext();
2802
2789
  const internalProps = props;
2803
2790
  const allProps = props;
2804
2791
  const [labelId, setLabelId] = createSignal(void 0, { ownedWrite: true });
2805
2792
  const state = {};
2806
2793
  const classValue = createMemo(() => resolveClass(props.class, state));
2807
2794
  const styleValue = createMemo(() => resolveStyle(props.style, state));
2808
- const others = omit(allProps, "as", "class", "items", "ref", "style");
2795
+ const others = omit(allProps, "render", "class", "items", "ref", "style");
2796
+ const Render = useRender(props, () => state, (props) => ssrElement("div", props, void 0, true));
2809
2797
  return ComboboxGroupCollectionContext({
2810
2798
  value: { items: () => internalProps.items },
2811
2799
  get children() {
@@ -2815,12 +2803,11 @@ function ComboboxGroup(props) {
2815
2803
  setLabelId
2816
2804
  },
2817
2805
  get children() {
2818
- return Dynamic(mergeProps({
2819
- get component() {
2820
- return props.as ?? "div";
2821
- },
2806
+ return Render(mergeProps({
2822
2807
  ref: [internalProps.ref],
2823
- role: "group",
2808
+ get role() {
2809
+ return context.grid() ? "rowgroup" : "group";
2810
+ },
2824
2811
  get ["aria-labelledby"]() {
2825
2812
  return labelId();
2826
2813
  },
@@ -2848,21 +2835,19 @@ function ComboboxGroupLabel(props) {
2848
2835
  const state = {};
2849
2836
  const classValue = createMemo(() => resolveClass(props.class, state));
2850
2837
  const styleValue = createMemo(() => resolveStyle(props.style, state));
2851
- const others = omit(allProps, "as", "class", "id", "ref", "style");
2838
+ const others = omit(allProps, "render", "class", "id", "ref", "style");
2852
2839
  createEffect(id, (currentId) => {
2853
2840
  context.setLabelId(currentId);
2854
2841
  return () => {
2855
2842
  if (context.labelId() === currentId) context.setLabelId(void 0);
2856
2843
  };
2857
2844
  });
2858
- return Dynamic(mergeProps({
2859
- get component() {
2860
- return props.as ?? "div";
2861
- },
2845
+ return useRender(props, () => state, (props) => ssrElement("div", props, void 0, true))(mergeProps({
2862
2846
  ref: [internalProps.ref],
2863
2847
  get id() {
2864
2848
  return id();
2865
2849
  },
2850
+ "aria-hidden": "true",
2866
2851
  get ["class"]() {
2867
2852
  return classValue();
2868
2853
  },
@@ -2908,7 +2893,7 @@ function ComboboxItem(props) {
2908
2893
  const declaredIndex = createMemo(() => {
2909
2894
  if (internalProps.index != null) return internalProps.index;
2910
2895
  if (!context.virtualized()) return;
2911
- const derived = findItemIndex(context.flatFilteredItems(), itemValue(), context.comparator());
2896
+ const derived = findItemIndex(context.itemValues(), itemValue(), context.comparator());
2912
2897
  return derived === -1 ? void 0 : derived;
2913
2898
  });
2914
2899
  const unregister = context.store.collection.register({
@@ -2936,7 +2921,7 @@ function ComboboxItem(props) {
2936
2921
  const classValue = createMemo(() => resolveClass(props.class, state()));
2937
2922
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
2938
2923
  const stateAttributes = createMemo(() => getStateAttributesProps(state()));
2939
- const others = omit(allProps, "as", "class", "disabled", "id", "index", "nativeButton", "onClick", "onMouseDown", "onMouseUp", "onPointerDown", "onPointerLeave", "onPointerMove", "ref", "style", "value");
2924
+ const others = omit(allProps, "render", "class", "disabled", "id", "index", "nativeButton", "onClick", "onMouseDown", "onMouseUp", "onPointerDown", "onPointerLeave", "onPointerMove", "ref", "style", "value");
2940
2925
  function commitSelection(event) {
2941
2926
  if (context.submitOnItemClick()) {
2942
2927
  context.handleSelection(event, itemValue());
@@ -2988,21 +2973,19 @@ function ComboboxItem(props) {
2988
2973
  compare: context.comparator()
2989
2974
  }), (current) => {
2990
2975
  if (!current.registered || current.hasItems) return;
2991
- const lastSelected = Array.isArray(current.selected) ? current.selected[current.selected.length - 1] : current.selected;
2992
- if (compareItemEquality(current.value, lastSelected, current.compare)) untrack(() => context.store.setSelectedIndex(current.index));
2976
+ untrack(() => context.store.setSelectedIndex(findSelectionIndex(context.store.collection.values(), current.selected, current.compare, context.multiple())));
2993
2977
  });
2994
2978
  createEffect(element, () => context.store.collection.touch());
2995
2979
  onCleanup(unregister);
2980
+ const itemContext = {
2981
+ selected,
2982
+ index
2983
+ };
2984
+ const Render = useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true));
2996
2985
  return ComboboxItemContext({
2997
- value: {
2998
- selected,
2999
- index
3000
- },
2986
+ value: itemContext,
3001
2987
  get children() {
3002
- return Dynamic(mergeProps({
3003
- get component() {
3004
- return props.as ?? "div";
3005
- },
2988
+ return Render(mergeProps({
3006
2989
  ref: [((value) => {
3007
2990
  setElement(value);
3008
2991
  context.store.collection.touch();
@@ -3050,14 +3033,12 @@ function ComboboxRow(props) {
3050
3033
  const state = {};
3051
3034
  const classValue = createMemo(() => resolveClass(props.class, state));
3052
3035
  const styleValue = createMemo(() => resolveStyle(props.style, state));
3053
- const others = omit(allProps, "as", "class", "ref", "style");
3036
+ const others = omit(allProps, "render", "class", "ref", "style");
3037
+ const Render = useRender(props, () => state, (props) => ssrElement("div", props, void 0, true));
3054
3038
  return ComboboxRowContext({
3055
3039
  value: true,
3056
3040
  get children() {
3057
- return Dynamic(mergeProps({
3058
- get component() {
3059
- return props.as ?? "div";
3060
- },
3041
+ return Render(mergeProps({
3061
3042
  ref: [internalProps.ref],
3062
3043
  role: "row",
3063
3044
  get ["class"]() {
@@ -3085,16 +3066,13 @@ function ComboboxEmpty(props) {
3085
3066
  const state = {};
3086
3067
  const classValue = createMemo(() => resolveClass(props.class, state));
3087
3068
  const styleValue = createMemo(() => resolveStyle(props.style, state));
3088
- const others = omit(allProps, "as", "children", "class", "ref", "style");
3069
+ const others = omit(allProps, "render", "children", "class", "ref", "style");
3089
3070
  const [element, setElement] = createSignal(null, { ownedWrite: true });
3090
3071
  createInitialLiveRegionTextMutation(element);
3091
3072
  onCleanup(() => {
3092
3073
  if (context.store.emptyElement === element()) context.store.emptyElement = null;
3093
3074
  });
3094
- return Dynamic(mergeProps({
3095
- get component() {
3096
- return props.as ?? "div";
3097
- },
3075
+ return useRender(props, () => state, (props) => ssrElement("div", props, void 0, true))(mergeProps({
3098
3076
  ref: [((value) => {
3099
3077
  setElement(value);
3100
3078
  context.store.emptyElement = value;
@@ -3130,11 +3108,8 @@ function ComboboxSeparator(props) {
3130
3108
  const classValue = createMemo(() => resolveClass(props.class, state()));
3131
3109
  const styleValue = createMemo(() => resolveStyle(props.style, state()));
3132
3110
  const stateAttributes = createMemo(() => getStateAttributesProps(state()));
3133
- const others = omit(allProps, "as", "class", "orientation", "ref", "style");
3134
- return Dynamic(mergeProps({
3135
- get component() {
3136
- return props.as ?? "div";
3137
- },
3111
+ const others = omit(allProps, "render", "class", "orientation", "ref", "style");
3112
+ return useRender(props, () => state(), (props) => ssrElement("div", props, void 0, true))(mergeProps({
3138
3113
  ref: [internalProps.ref],
3139
3114
  role: "presentation",
3140
3115
  get ["class"]() {
@@ -3154,4 +3129,4 @@ function useFilteredItems() {
3154
3129
  return useComboboxRootContext().filteredItems;
3155
3130
  }
3156
3131
  //#endregion
3157
- export { getFilter as A, getIndexAfterChipRemoval as C, ComboboxTrigger as D, useRequiredComboboxChipsContext as E, resolveMultipleLabels as M, resolveSelectedLabel as N, AriaCombobox as O, stringifyAsLabel as P, getChipNavigationKeys as S, ComboboxChipsContext as T, ComboboxClear as _, ComboboxItem as a, handleInputPress as b, ComboboxGroup as c, ComboboxPositioner as d, ComboboxBackdrop as f, ComboboxCollection as g, ComboboxList as h, ComboboxRow as i, hasNullItemLabel as j, useComboboxRootContext as k, ComboboxArrow as l, ComboboxStatus as m, ComboboxSeparator as n, useComboboxItemContext as o, ComboboxPortal as p, ComboboxEmpty as r, ComboboxGroupLabel as s, useFilteredItems as t, ComboboxPopup as u, ComboboxIcon as v, ComboboxChipRegistry as w, ComboboxInput as x, ComboboxInputGroup as y };
3132
+ export { getFilter as A, getIndexAfterChipRemoval as C, ComboboxTrigger as D, useRequiredComboboxChipsContext as E, stringifyAsLabel as F, hasNullItemLabel as M, resolveMultipleLabels as N, AriaCombobox as O, resolveSelectedLabel as P, getChipNavigationKeys as S, ComboboxChipsContext as T, ComboboxClear as _, ComboboxItem as a, handleInputPress as b, ComboboxGroup as c, ComboboxPositioner as d, ComboboxBackdrop as f, ComboboxCollection as g, ComboboxList as h, ComboboxRow as i, flattenItems as j, useComboboxRootContext as k, ComboboxArrow as l, ComboboxStatus as m, ComboboxSeparator as n, useComboboxItemContext as o, ComboboxPortal as p, ComboboxEmpty as r, ComboboxGroupLabel as s, useFilteredItems as t, ComboboxPopup as u, ComboboxIcon as v, ComboboxChipRegistry as w, ComboboxInput as x, ComboboxInputGroup as y };