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

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 (189) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +30 -35
  3. package/dist/lib/client/DialogHandle-DluOK_7u.js +521 -0
  4. package/dist/lib/client/DialogPopup-CfEb3F54.js +138 -0
  5. package/dist/lib/client/FieldControl-eDe-Jnp9.js +142 -0
  6. package/dist/lib/client/{FieldRootContext-izCEh80D.js → FieldRootContext-D3fuVjs3.js} +1 -1
  7. package/dist/lib/client/{FocusManager-NP1uPXTi.js → FocusManager-q7z7PMV1.js} +92 -89
  8. package/dist/lib/client/{InternalBackdrop-cSK13gaM.js → InternalBackdrop-B8_lfUvf.js} +1 -1
  9. package/dist/lib/client/{MenuSubmenuTrigger-yfncqM-D.js → MenuSubmenuTrigger-DMb5CwTF.js} +386 -386
  10. package/dist/lib/client/{PopupHandle-CQI6Om1Z.js → PopupHandle-DyX5gY1e.js} +17 -11
  11. package/dist/lib/client/{PopupStore-Du0O57fL.js → PopupStore-BjRwcvbG.js} +91 -88
  12. package/dist/lib/client/PopupViewport-BanYHrD-.js +154 -0
  13. package/dist/lib/client/{TriggerFocusGuards-Cs8LVBj5.js → TriggerFocusGuards-Fzspp3Y1.js} +2 -2
  14. package/dist/lib/client/accordion/index.js +1 -1
  15. package/dist/lib/client/{accordion-BFeZFpJZ.js → accordion-CA2DfX67.js} +144 -144
  16. package/dist/lib/client/alert-dialog/index.js +1 -1
  17. package/dist/lib/client/{alert-dialog-BxGUF8_Q.js → alert-dialog-Bup88Dpx.js} +2 -2
  18. package/dist/lib/client/autocomplete/index.js +1 -1
  19. package/dist/lib/client/{autocomplete-C9QA98XD.js → autocomplete-oyy_uRpU.js} +2 -2
  20. package/dist/lib/client/avatar/index.js +1 -1
  21. package/dist/lib/client/avatar-DNZ4fnBd.js +191 -0
  22. package/dist/lib/client/button/index.js +1 -1
  23. package/dist/lib/client/button-BJZYmCVv.js +88 -0
  24. package/dist/lib/client/checkbox/index.js +1 -1
  25. package/dist/lib/client/checkbox-group/index.js +1 -1
  26. package/dist/lib/client/{checkbox-group-CwMDoSTK.js → checkbox-group-DGyrciZJ.js} +1 -1
  27. package/dist/lib/client/checkbox-sQHYTbpB.js +425 -0
  28. package/dist/lib/client/collapsible/index.js +1 -1
  29. package/dist/lib/client/collapsible-BENbFFCc.js +230 -0
  30. package/dist/lib/client/combobox/index.js +1 -1
  31. package/dist/lib/client/{combobox-6DhOdzit.js → combobox-BGH8QLXH.js} +143 -141
  32. package/dist/lib/client/compositeNavigation-DCt1sQon.js +82 -0
  33. package/dist/lib/client/{constants-cOVxAoxB.js → constants-ByOMFJAe.js} +100 -100
  34. package/dist/lib/client/context-menu/index.js +1 -1
  35. package/dist/lib/client/context-menu-xQ1sBCET.js +220 -0
  36. package/dist/lib/client/{createAnchorPositioning-D96gu-Dz.js → createAnchorPositioning-DCXIApS1.js} +1 -1
  37. package/dist/lib/client/{createAnchoredPopupScrollLock-Cx0cbh1_.js → createAnchoredPopupScrollLock-BxKpJbCE.js} +2 -2
  38. package/dist/lib/client/{createClickInteraction-CTaIFBiV.js → createClickInteraction-BeBsTqtY.js} +1 -1
  39. package/dist/lib/client/{createFocusInteraction--s9_qBf3.js → createFocusInteraction-DQPWkZe2.js} +7 -7
  40. package/dist/lib/client/{createPopupAutoResize-Dn-stj-8.js → createPopupAutoResize-CSNpMz5v.js} +3 -3
  41. package/dist/lib/client/dialog/index.js +1 -1
  42. package/dist/lib/client/{dialog-B9tR9X48.js → dialog-C0EF0a5u.js} +2 -2
  43. package/dist/lib/client/{dom-BEAeQ9Eb.js → dom-lDdayFF_.js} +25 -15
  44. package/dist/lib/client/drawer/index.js +1 -1
  45. package/dist/lib/client/{drawer-dyr3_sKQ.js → drawer-uKoNBwDU.js} +519 -518
  46. package/dist/lib/client/field/index.js +1 -1
  47. package/dist/lib/client/{field-CjUAjp1m.js → field-DIMrgpBW.js} +144 -144
  48. package/dist/lib/client/form/index.js +1 -1
  49. package/dist/lib/client/form-Bqq8wSLY.js +109 -0
  50. package/dist/lib/client/index.js +34 -34
  51. package/dist/lib/client/input/index.js +1 -1
  52. package/dist/lib/client/{input-_QHvSSqM.js → input-YthuKwIE.js} +1 -1
  53. package/dist/lib/client/internals/composeEventHandlers.js +14 -8
  54. package/dist/lib/client/internals/field-root-context/index.js +2 -2
  55. package/dist/lib/client/{mergeStyleValue-DhTA9Nwe.js → isSolidAccessor-BH_FevwH.js} +1 -12
  56. package/dist/lib/client/menu/index.js +1 -1
  57. package/dist/lib/client/{menu-DLqUBmMK.js → menu-4rNLN6aX.js} +79 -79
  58. package/dist/lib/client/menubar/index.js +1 -1
  59. package/dist/lib/client/menubar-nFQGtNmY.js +163 -0
  60. package/dist/lib/client/mergeStyleValue-Dcd36yxZ.js +12 -0
  61. package/dist/lib/client/navigation-menu/index.js +1 -1
  62. package/dist/lib/client/{navigation-menu-mVHV41Ky.js → navigation-menu-BbRyun3a.js} +284 -284
  63. package/dist/lib/client/number-field/index.js +1 -1
  64. package/dist/lib/client/{number-field-DusLw_0X.js → number-field-hT_H0hVu.js} +356 -356
  65. package/dist/lib/client/otp-field/index.js +1 -1
  66. package/dist/lib/client/otp-field-lsy2iGID.js +584 -0
  67. package/dist/lib/client/popover/index.js +1 -1
  68. package/dist/lib/client/{popover-Cv7xn0nW.js → popover-Cmvmuf1L.js} +250 -248
  69. package/dist/lib/client/{popupStateMapping-C6jQ_LKo.js → popupStateMapping-nhukB8NK.js} +51 -51
  70. package/dist/lib/client/preview-card/index.js +1 -1
  71. package/dist/lib/client/{preview-card-FTN_aafM.js → preview-card-Dtu8AnBN.js} +168 -168
  72. package/dist/lib/client/radio/index.js +1 -1
  73. package/dist/lib/client/{radio-DA_oZhQT.js → radio-CeCU-Qqi.js} +77 -77
  74. package/dist/lib/client/radio-group/index.js +1 -1
  75. package/dist/lib/client/radio-group-NbuJvjQe.js +195 -0
  76. package/dist/lib/client/{safePolygon-DJG0VIVo.js → safePolygon-DVAR5dQD.js} +70 -70
  77. package/dist/lib/client/scroll-area/index.js +1 -1
  78. package/dist/lib/client/scroll-area-DqbvoAd7.js +717 -0
  79. package/dist/lib/client/{scrollable-SRNYlhF7.js → scrollable-BVaDUXng.js} +12 -12
  80. package/dist/lib/client/select/index.js +1 -1
  81. package/dist/lib/client/{select-DSPJt7Rk.js → select-Dad51Xbn.js} +635 -634
  82. package/dist/lib/client/slider/index.js +1 -1
  83. package/dist/lib/client/slider-CLSKFq_M.js +927 -0
  84. package/dist/lib/client/switch/index.js +1 -1
  85. package/dist/lib/client/{switch-CPl7QHKI.js → switch-Bzuu5EIg.js} +61 -61
  86. package/dist/lib/client/tabs/index.js +1 -1
  87. package/dist/lib/client/{tabs-Bn4rZDyZ.js → tabs-DWiBDv8D.js} +252 -249
  88. package/dist/lib/client/toast/index.js +1 -1
  89. package/dist/lib/client/{toast-7LdqZWOs.js → toast-DmtPJW2k.js} +353 -353
  90. package/dist/lib/client/toggle/index.js +1 -1
  91. package/dist/lib/client/{toggle-CsC37e3e.js → toggle-CAe-Z8Xn.js} +33 -33
  92. package/dist/lib/client/toggle-group/index.js +1 -1
  93. package/dist/lib/client/{toggle-group-DSWb9HxN.js → toggle-group-BbQg5s-m.js} +44 -44
  94. package/dist/lib/client/toolbar/index.js +1 -1
  95. package/dist/lib/client/{toolbar-DcCi3HNp.js → toolbar-BXT_g-oX.js} +218 -218
  96. package/dist/lib/client/tooltip/index.js +1 -1
  97. package/dist/lib/client/{tooltip-D-PkGco9.js → tooltip-h2r2_Xuo.js} +250 -249
  98. package/dist/lib/client/{useFilteredItems-B7z2CGMV.js → useFilteredItems-BX0BEuSI.js} +850 -819
  99. package/dist/lib/server/{DialogHandle-nJSSy_jM.js → DialogHandle-BGIISmG7.js} +16 -16
  100. package/dist/lib/server/{DialogPopup-Da1aIxVA.js → DialogPopup-C2ZDGf42.js} +4 -4
  101. package/dist/lib/server/{FieldControl-BDeNR3ug.js → FieldControl-CDMMyvuj.js} +6 -6
  102. package/dist/lib/server/{FieldRootContext-IC-LWzVp.js → FieldRootContext-Bfpna6gA.js} +3 -3
  103. package/dist/lib/server/{FocusManager-1LfoCsya.js → FocusManager-D-xgblGs.js} +9 -3
  104. package/dist/lib/server/{InternalBackdrop-C_iDPVR-.js → InternalBackdrop-D_2zAWnl.js} +1 -1
  105. package/dist/lib/server/{MenuSubmenuTrigger-rR8ZN7YR.js → MenuSubmenuTrigger-BMQKlOvU.js} +50 -50
  106. package/dist/lib/server/{PopupHandle-Ct6wywmP.js → PopupHandle-QNj4mED2.js} +14 -5
  107. package/dist/lib/server/{PopupStore-kHjFPiQ5.js → PopupStore-evylvVnN.js} +5 -2
  108. package/dist/lib/server/{PopupViewport-DftN5VUp.js → PopupViewport-BDttjORN.js} +37 -27
  109. package/dist/lib/server/{TriggerFocusGuards-CvoGfft9.js → TriggerFocusGuards-B9GNbLrL.js} +2 -2
  110. package/dist/lib/server/accordion/index.js +7 -7
  111. package/dist/lib/server/alert-dialog/index.js +2 -2
  112. package/dist/lib/server/autocomplete/index.js +2 -2
  113. package/dist/lib/server/avatar/index.js +3 -3
  114. package/dist/lib/server/button/index.js +6 -6
  115. package/dist/lib/server/checkbox/index.js +7 -7
  116. package/dist/lib/server/checkbox-group/index.js +1 -1
  117. package/dist/lib/server/collapsible/index.js +6 -6
  118. package/dist/lib/server/combobox/index.js +18 -18
  119. package/dist/lib/server/{compositeNavigation-BRVT1C38.js → compositeNavigation-D5jKM4yk.js} +32 -1
  120. package/dist/lib/server/{constants-D7ciIzsV.js → constants-ByqXubhO.js} +2 -2
  121. package/dist/lib/server/context-menu/index.js +9 -9
  122. package/dist/lib/server/{createAnchorPositioning-B5Y0WEev.js → createAnchorPositioning-DrQYe7RS.js} +1 -1
  123. package/dist/lib/server/{createAnchoredPopupScrollLock-DFuUrykR.js → createAnchoredPopupScrollLock-q6gnOSmv.js} +2 -2
  124. package/dist/lib/server/{createClickInteraction-BYsMgvup.js → createClickInteraction-D7oc1Vco.js} +1 -1
  125. package/dist/lib/server/{createFocusInteraction-DMyKsniI.js → createFocusInteraction-DFKr4G7a.js} +1 -1
  126. package/dist/lib/server/{createPopupAutoResize-ImBjwdj_.js → createPopupAutoResize-Cg0-lLf4.js} +1 -1
  127. package/dist/lib/server/dialog/index.js +2 -2
  128. package/dist/lib/server/{dom-Crg_2R-j.js → dom-D8_aB1yy.js} +14 -1
  129. package/dist/lib/server/drawer/index.js +38 -34
  130. package/dist/lib/server/field/index.js +6 -6
  131. package/dist/lib/server/form/index.js +2 -2
  132. package/dist/lib/server/input/index.js +1 -1
  133. package/dist/lib/server/internals/composeEventHandlers.js +15 -9
  134. package/dist/lib/server/internals/field-root-context/index.js +1 -1
  135. package/dist/lib/server/{mergeStyleValue-BwJ10_X2.js → isSolidAccessor-CZpzAH5l.js} +1 -20
  136. package/dist/lib/server/menu/index.js +17 -17
  137. package/dist/lib/server/menubar/index.js +4 -4
  138. package/dist/lib/server/mergeStyleValue-DecVaoac.js +20 -0
  139. package/dist/lib/server/navigation-menu/index.js +21 -21
  140. package/dist/lib/server/number-field/index.js +21 -21
  141. package/dist/lib/server/otp-field/index.js +8 -8
  142. package/dist/lib/server/popover/index.js +27 -26
  143. package/dist/lib/server/{popupStateMapping-B2KsiiLb.js → popupStateMapping-VHqr6M4H.js} +1 -1
  144. package/dist/lib/server/preview-card/index.js +16 -16
  145. package/dist/lib/server/radio/index.js +6 -6
  146. package/dist/lib/server/radio-group/index.js +5 -5
  147. package/dist/lib/server/{safePolygon-C1GNJbKR.js → safePolygon-B8QtiIZ3.js} +1 -1
  148. package/dist/lib/server/scroll-area/index.js +18 -18
  149. package/dist/lib/server/{scrollable-CjsSxbGr.js → scrollable-C9Pgq8T5.js} +1 -1
  150. package/dist/lib/server/select/index.js +39 -38
  151. package/dist/lib/server/slider/index.js +14 -14
  152. package/dist/lib/server/switch/index.js +9 -9
  153. package/dist/lib/server/tabs/index.js +12 -8
  154. package/dist/lib/server/toast/index.js +32 -32
  155. package/dist/lib/server/toggle/index.js +7 -7
  156. package/dist/lib/server/toggle-group/index.js +2 -2
  157. package/dist/lib/server/toolbar/index.js +14 -14
  158. package/dist/lib/server/tooltip/index.js +32 -27
  159. package/dist/lib/server/{useFilteredItems-DCxq20Is.js → useFilteredItems-BmhL0nf1.js} +181 -137
  160. package/dist/lib/types/accordion/trigger/AccordionTrigger.d.ts +7 -7
  161. package/dist/lib/types/combobox/chip/ComboboxChip.d.ts +2 -0
  162. package/dist/lib/types/combobox/root/ComboboxRoot.d.ts +6 -1
  163. package/dist/lib/types/combobox/store/ComboboxStore.d.ts +1 -0
  164. package/dist/lib/types/combobox/utils/handleInputPress.d.ts +1 -1
  165. package/dist/lib/types/field/control/FieldControl.d.ts +5 -5
  166. package/dist/lib/types/internals/composeEventHandlers.d.ts +9 -2
  167. package/dist/lib/types/internals/field-root-context/FieldRootContext.d.ts +1 -0
  168. package/dist/lib/types/internals/overlay/dom.d.ts +2 -0
  169. package/dist/lib/types/number-field/input/NumberFieldInput.d.ts +5 -5
  170. package/dist/lib/types/slider/track/SliderTrack.d.ts +2 -2
  171. package/dist/lib/types/toolbar/link/ToolbarLink.d.ts +10 -3
  172. package/dist/lib/types/toolbar/root/ToolbarRoot.d.ts +10 -4
  173. package/package.json +2 -2
  174. package/dist/lib/client/DialogHandle-BGyIbcvg.js +0 -521
  175. package/dist/lib/client/DialogPopup-Df7MC358.js +0 -138
  176. package/dist/lib/client/FieldControl-C0PATyKV.js +0 -142
  177. package/dist/lib/client/PopupViewport-IS4XU03s.js +0 -152
  178. package/dist/lib/client/avatar-BQoEzzav.js +0 -191
  179. package/dist/lib/client/button-akYS6FyY.js +0 -88
  180. package/dist/lib/client/checkbox-DOXtzBhA.js +0 -425
  181. package/dist/lib/client/collapsible-t8YReaIp.js +0 -230
  182. package/dist/lib/client/compositeNavigation-sxniYTc7.js +0 -58
  183. package/dist/lib/client/context-menu-CplDpqmi.js +0 -220
  184. package/dist/lib/client/form-6Ne_bWQX.js +0 -109
  185. package/dist/lib/client/menubar-DhPRUQZ6.js +0 -163
  186. package/dist/lib/client/otp-field-D-B9tZzF.js +0 -584
  187. package/dist/lib/client/radio-group-CWtQxWDl.js +0 -195
  188. package/dist/lib/client/scroll-area-NCr49LkD.js +0 -717
  189. package/dist/lib/client/slider-CWq9hxFf.js +0 -927
package/CHANGELOG.md CHANGED
@@ -1,5 +1,61 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-alpha.3
4
+
5
+ ### Documentation
6
+
7
+ - Replace the README warning banner with "WIP: An unofficial port of Base UI for
8
+ SolidJS" and use the same wording for the npm package description.
9
+ - Refresh the Status section with the current release, all 38 implemented
10
+ component families, verification results, and development focus.
11
+ - Simplify the alpha installation guidance.
12
+ - Keep alpha.2 event-composition migration details in the changelog rather than
13
+ the README.
14
+
15
+ No runtime, API, or dependency changes from alpha.2.
16
+
17
+ ## 0.1.0-alpha.2
18
+
19
+ ### Breaking Changes
20
+
21
+ - `composeEventHandlers` now accepts direct handlers, bound `[handler, data]`
22
+ tuples, and `undefined`, rather than bare accessors returning handlers. Replace
23
+ `composeEventHandlers(() => handleClick)` with `composeEventHandlers(handleClick)`.
24
+ - For replaceable props or conditional handler sources, use
25
+ `composeEventHandlers(liveEventHandler(() => props.onClick), handleClick)`.
26
+ Both utilities are exported from `solid-baseui/internals/composeEventHandlers`.
27
+ Old bare accessors may still typecheck as void-returning handlers, but their
28
+ returned functions are no longer invoked. Migrate every call before upgrading.
29
+
30
+ ### Fixed
31
+
32
+ - Preserve Drawer swipe state, observers, and nested progress across unrelated
33
+ store updates, and retain Popover trigger-handoff animation completion.
34
+ - Compose string and callback-returned string styles correctly in Slider.Track,
35
+ Slider.Indicator, Slider.Thumb, and Tabs.Indicator.
36
+ - Return a directly attachable native handler from `composeEventHandlers` while
37
+ exposing Base UI cancellation to composed callbacks. Preserve native input/focus
38
+ target typing and expose cancellation on composed Toolbar events.
39
+ - Preserve the DOM receiver when NumberField.Input dispatches blur callbacks,
40
+ including replaceable bound handlers and teardown-time blur.
41
+ - Correct Combobox grid navigation, highlight restoration, controlled input and
42
+ autofill rollback, popup-input ARIA, RTL End navigation, portal focus, and List
43
+ exit-animation completion.
44
+ - Preserve Tooltip cursor initialization and reopening, detached registration and
45
+ hydration state, viewport payload updates, nested timers, and provider cleanup.
46
+ - Preserve Autocomplete form-name ownership across SSR and hydration, and isolate
47
+ Field context when replacing a popup input.
48
+ - Cancel stale Drawer alignment frames before delayed virtual-keyboard realignment.
49
+ - Improve Combobox grouped-array callback inference for mutable single-select and
50
+ readonly multiple-select items.
51
+
52
+ ### Verification
53
+
54
+ - Complete the requested Tooltip, Combobox, Autocomplete, and Drawer test-ledger
55
+ verification, including additional unit, browser, type, SSR, and hydration cases.
56
+ - The package remains an unstable alpha; this does not establish exhaustive Base UI
57
+ 1.8 parity or physical-device keyboard and gesture behavior.
58
+
3
59
  ## 0.1.0-alpha.1
4
60
 
5
61
  ### Breaking Changes
package/README.md CHANGED
@@ -1,10 +1,6 @@
1
1
  # solid-baseui
2
2
 
3
- > [!WARNING]
4
- > **Work in progress — alpha, unannounced, and not stable.**
5
- > Published to reserve the name and to be used in the author's own projects.
6
- > Expect breaking changes without notice, incomplete verification, and no
7
- > support. Do not adopt this in production.
3
+ > WIP: An unofficial port of Base UI for SolidJS
8
4
 
9
5
  A native Solid 2 port of [Base UI](https://base-ui.com/). It preserves Base UI's
10
6
  observable behavior and accessibility contracts while replacing React-specific
@@ -15,8 +11,7 @@ maintained by MUI or the Base UI team, nor by the SolidJS core team.
15
11
 
16
12
  ## Install
17
13
 
18
- Install explicitly from the `alpha` dist-tag to get the current prerelease.
19
- There is no stable release:
14
+ Install the current alpha release:
20
15
 
21
16
  ```bash
22
17
  bun add solid-baseui@alpha
@@ -123,25 +118,24 @@ callback writes native or custom-component JSX directly.
123
118
  callback and forward props/ref to every possible final element, for example
124
119
  `render={(props) => <>{compact() ? <span {...props} /> : <div {...props} />}</>}` on a
125
120
  visual part that supports those roots.
126
- - A spread does not compose an overridden handler, ref, or class. Preserve supplied
127
- values explicitly when adding behavior: use Solid ref/class arrays and the
128
- focused event helper for ordered cancellation. A custom component must do the
129
- same when it overrides forwarded props.
121
+ - Put interaction handlers such as `onClick` on the outer Base UI component. It
122
+ composes caller handlers with its internal behavior. Use `render` for the
123
+ element, styling, and prop forwarding, not to override supplied event handlers.
124
+ Custom components used inside `render` should also forward those handlers to
125
+ the final DOM node.
126
+ - A spread does not compose an overridden ref or class. Preserve supplied values
127
+ with Solid ref/class arrays when adding your own.
130
128
 
131
129
  ```tsx
132
130
  import { Button } from "solid-baseui/button";
133
- import { composeEventHandlers } from "solid-baseui/internals/composeEventHandlers";
134
131
 
135
132
  <Button
133
+ onClick={() => console.info("Save activated")}
136
134
  render={(props) => (
137
135
  <button
138
136
  {...props}
139
137
  class={[props.class, "action"]}
140
138
  ref={[props.ref, (element) => { element.dataset.action = "save"; }]}
141
- onClick={composeEventHandlers(
142
- () => props.onClick,
143
- () => () => console.info("Save activated"),
144
- )}
145
139
  />
146
140
  )}
147
141
  >
@@ -149,9 +143,11 @@ import { composeEventHandlers } from "solid-baseui/internals/composeEventHandler
149
143
  </Button>;
150
144
  ```
151
145
 
152
- The event accessor reads the current supplied handler at event time; the helper
153
- preserves its Base UI cancellation contract. Prefer putting ordinary caller
154
- handlers on the outer component when no callback-specific composition is needed.
146
+ Avoid `render={(props) => <button {...props} onClick={handleClick} />}`:
147
+ the explicit handler replaces the supplied handler and can break the component's
148
+ internal interaction behavior. Moving the spread last can instead discard your
149
+ handler. Put `onClick={handleClick}` on the outer component so both behaviors are
150
+ preserved without manually composing handlers.
155
151
 
156
152
  Component authors can import `useRender` from `solid-baseui/use-render` or the
157
153
  package root. Its signature is
@@ -167,22 +163,21 @@ See [CHANGELOG.md](./CHANGELOG.md) for this alpha's changes.
167
163
 
168
164
  ## Status
169
165
 
170
- Most of the port is done: component and utility subpaths are backed by the shared P0
171
- and overlay foundations. Not everything is finished:
172
-
173
- | Area | State |
174
- | ---------------------- | ------------------------------------------------------------------- |
175
- | Tooltip | Paused nested-timer, cursor-axis, and animation cases outstanding |
176
- | Combobox, Autocomplete | In progress |
177
- | Drawer | Behavior complete; parts of the upstream test ledger unclassified |
178
- | Remaining families | Done |
179
-
180
- A component is only treated as done when its upstream Base UI test ledger is
181
- classified and represented in the Solid suite. Per-family status, the decisions
182
- that are not derivable from the code, and the verification runs behind each one
183
- live in [`knowledge/README.md`](./knowledge/README.md); the stable scope and test
184
- ledger live in
185
- [`BASE_UI_PORTING_INVENTORY.md`](./BASE_UI_PORTING_INVENTORY.md).
166
+ | Area | Status |
167
+ | --- | --- |
168
+ | Current release | `0.1.0-alpha.3`, available from `solid-baseui@alpha` |
169
+ | Components | All 38 component families implemented and exported |
170
+ | Framework | Native Solid 2, using the RC.6 runtime and compiler |
171
+ | Verification | Typecheck, lint, unit, SSR, hydration, and Chromium/Firefox/WebKit suites passing |
172
+ | Current focus | Stabilization, performance, and real-application integrations |
173
+
174
+ The latest release includes the completed Tooltip, Combobox, Autocomplete, and
175
+ Drawer verification work. The optional `unstable-use-media-query` utility remains
176
+ outside the 38-component scope and is not implemented.
177
+
178
+ See [`knowledge/README.md`](./knowledge/README.md) for verification scope and
179
+ remaining work, and [`BASE_UI_PORTING_INVENTORY.md`](./BASE_UI_PORTING_INVENTORY.md)
180
+ for the upstream porting inventory.
186
181
 
187
182
  ## Solid API decisions
188
183
 
@@ -0,0 +1,521 @@
1
+ import { t as e } from "./useRender-CxZ8PI-g.js";
2
+ import { getStateAttributesProps as t } from "./internals/getStateAttributesProps.js";
3
+ import { P as n, d as r, i } from "./reasons-Co5CzjKq.js";
4
+ import { n as a, t as o } from "./resolveStyle-XcgAuaKR.js";
5
+ import { createChangeEventDetails as s } from "./internals/createBaseUIEventDetails.js";
6
+ import { transitionStatusMapping as c } from "./internals/stateAttributesMapping.js";
7
+ import { composeEventHandlers as l, liveEventHandler as u } from "./internals/composeEventHandlers.js";
8
+ import { i as d, n as f, o as p } from "./dom-lDdayFF_.js";
9
+ import { n as m, t as h } from "./InternalBackdrop-B8_lfUvf.js";
10
+ import { c as g, i as _, n as ee, r as v, s as y, t as b } from "./FloatingTree-23B7KKPD.js";
11
+ import { a as te, n as x, o as ne, t as S } from "./PopupStore-BjRwcvbG.js";
12
+ import { a as C, o as re } from "./popupStateMapping-nhukB8NK.js";
13
+ import { i as w, n as T, r as E, t as D } from "./PopupHandle-DyX5gY1e.js";
14
+ import { t as ie } from "./setRef-fXF6OIo3.js";
15
+ import { a as O, i as ae, n as k, r as A, t as oe } from "./buttonSemantics-paljfpOX.js";
16
+ import { createComponent as j, getNextElement as M, memo as N, mergeProps as P, runHydrationEvents as F, spread as I, template as L } from "@solidjs/web";
17
+ import { $REFRESH as se, Show as R, createContext as z, createEffect as B, createMemo as V, createSignal as H, createUniqueId as U, omit as W, onCleanup as G, untrack as K, useContext as q } from "solid-js";
18
+ //#region src/dialog/store/DialogStore.ts
19
+ var ce = class extends S {
20
+ openMethodAccessor;
21
+ setOpenMethodSignal;
22
+ openMethodRevisionAccessor;
23
+ setOpenMethodRevision;
24
+ constructor(e = {}) {
25
+ super(e);
26
+ let [t, n] = H(null, { ownedWrite: !0 });
27
+ this.openMethodAccessor = t, this.setOpenMethodSignal = n;
28
+ let [r, i] = H(0, { ownedWrite: !0 });
29
+ this.openMethodRevisionAccessor = r, this.setOpenMethodRevision = i;
30
+ }
31
+ openMethod() {
32
+ return this.openMethodAccessor();
33
+ }
34
+ setOpenMethod(e) {
35
+ this.setOpenMethodSignal(e), this.setOpenMethodRevision((e) => e + 1);
36
+ }
37
+ openMethodRevision() {
38
+ return this.openMethodRevisionAccessor();
39
+ }
40
+ setPayload(e) {
41
+ this.set("payload", e);
42
+ }
43
+ setOpen(e, t) {
44
+ return !e && t.trigger == null && this.activeTriggerId() != null && (t.trigger = this.state.activeTriggerElement ?? void 0), super.setOpen(e, t);
45
+ }
46
+ }, J = class extends T {
47
+ openMethod() {
48
+ return null;
49
+ }
50
+ setOpenMethod(e) {}
51
+ setPayload(e) {}
52
+ }, Y = Symbol("DialogRootContext"), le = z(Y);
53
+ function X(e = !1) {
54
+ let t = q(le);
55
+ if (t === Y) {
56
+ if (e) return;
57
+ throw Error("Base UI: DialogRootContext is missing. Dialog parts must be placed within <Dialog.Root>.");
58
+ }
59
+ return t;
60
+ }
61
+ //#endregion
62
+ //#region src/dialog/root/DialogRoot.tsx
63
+ function ue(e) {
64
+ return Z("dialog", e);
65
+ }
66
+ function Z(e, t, n = {}) {
67
+ let i = X(!0), a = g(), o = y(), c = a ?? new v(), l = U(), u = U(), h = K(() => t.open !== void 0), x = K(() => t.triggerId !== void 0), S = i !== void 0, C = e === "alert-dialog", re = e === "drawer", w = V(() => C ? !0 : t.modal ?? !0), T = V(() => C || (t.disablePointerDismissal ?? !1)), D = new ce({
68
+ controlledOpen: () => h ? t.open : void 0,
69
+ controlledTriggerId: () => x ? t.triggerId : void 0,
70
+ floatingId: u,
71
+ nested: o !== null,
72
+ nodeId: l,
73
+ onOpenChange: () => t.onOpenChange,
74
+ onOpenChangeComplete: () => t.onOpenChangeComplete
75
+ });
76
+ D.update({
77
+ open: h ? !!K(() => t.open) : !!K(() => t.defaultOpen),
78
+ activeTriggerId: K(() => t.defaultTriggerId ?? null)
79
+ });
80
+ let ie = D.access((e) => e.payload), O = _({
81
+ tree: c,
82
+ id: l,
83
+ parentId: o,
84
+ context: () => D.context.floatingRoot
85
+ }), [ae, k] = H(), [A, oe] = H(), [M, P] = H(null, { ownedWrite: !0 }), [F, I] = H(null, { ownedWrite: !0 }), [L, R] = H(null, { ownedWrite: !0 }), [z, W] = H(0, {
86
+ equals: !1,
87
+ ownedWrite: !0
88
+ }), q = /* @__PURE__ */ new Map(), J = V(() => {
89
+ z();
90
+ let e = 0;
91
+ for (let t of q.values()) e += t.dialogCount;
92
+ return e;
93
+ }), Y = V(() => {
94
+ z();
95
+ let e = 0;
96
+ for (let t of q.values()) e += t.drawerCount;
97
+ return e;
98
+ }), ue = { current: !0 }, Z = te(D, () => D.track().popupElement, { onUnmount: () => D.setOpenMethod(null) });
99
+ function de(e, t, n) {
100
+ let r = q.get(e);
101
+ (r?.dialogCount !== t || r.drawerCount !== n) && (q.set(e, {
102
+ dialogCount: t,
103
+ drawerCount: n
104
+ }), W((e) => e + 1));
105
+ }
106
+ function fe(e) {
107
+ q.delete(e) && W((e) => e + 1);
108
+ }
109
+ let pe = {
110
+ store: D,
111
+ tree: c,
112
+ nested: S,
113
+ role: C ? "alertdialog" : "dialog",
114
+ modal: w,
115
+ disablePointerDismissal: T,
116
+ nestedOpenDialogCount: J,
117
+ nestedOpenDrawerCount: Y,
118
+ outsidePressEnabled: ue,
119
+ titleId: ae,
120
+ setTitleId: k,
121
+ descriptionId: A,
122
+ setDescriptionId: oe,
123
+ backdropElement: M,
124
+ setBackdropElement: P,
125
+ internalBackdropElement: F,
126
+ setInternalBackdropElement: I,
127
+ viewportElement: L,
128
+ setViewportElement: R,
129
+ presence: Z,
130
+ updateNestedLayer: de,
131
+ removeNestedLayer: fe
132
+ };
133
+ D.context.floatingRoot.context.data.insideElements = () => [
134
+ M(),
135
+ F(),
136
+ L()
137
+ ], D.configureTriggerUnmount({ closeOnActiveTriggerUnmount: !1 }), E(() => t.handle, D);
138
+ let me = ne({
139
+ context: D.context.floatingRoot,
140
+ tree: () => c,
141
+ escapeKey: () => J() === 0,
142
+ outsidePress: () => (e) => {
143
+ if (!ue.current || T() || J() > 0 || "button" in e && e.button !== 0) return !1;
144
+ if ("touches" in e) {
145
+ if (e.type === "touchend") {
146
+ if (e.changedTouches.length !== 1 || e.touches.length !== 0) return !1;
147
+ } else if (e.touches.length !== 1) return !1;
148
+ }
149
+ if (w() === !1) return !0;
150
+ let t = d(e), n = F(), r = M();
151
+ return !n && !r || t === n || t === r || p(t) && f(t, D.state.popupElement) && !t.hasAttribute("data-base-ui-portal");
152
+ },
153
+ outsidePressEvent: () => F() || M() ? "intentional" : {
154
+ mouse: w() === "trap-focus" ? "sloppy" : "intentional",
155
+ touch: "sloppy"
156
+ }
157
+ });
158
+ D.setInteractionProps({
159
+ activeTriggerProps: { onKeyDown: me.onKeyDown },
160
+ inactiveTriggerProps: { onKeyDown: me.onKeyDown },
161
+ popupProps: {}
162
+ }), m(() => D.open() && w() === !0, () => D.track().popupElement), B(() => ({
163
+ open: D.open(),
164
+ activeTriggerId: D.activeTriggerId()
165
+ }), () => K(() => D.reconcileTriggers()));
166
+ let Q = K(() => D.open()), $ = K(() => D.openMethodRevision());
167
+ B(() => ({
168
+ open: D.open(),
169
+ openMethodRevision: D.openMethodRevision()
170
+ }), (e) => {
171
+ !e.open && Q ? $ = e.openMethodRevision : e.open && !Q && e.openMethodRevision === $ && D.setOpenMethod(null), Q = e.open;
172
+ });
173
+ let he = Symbol("DialogRoot");
174
+ B(() => ({
175
+ open: D.open(),
176
+ nestedDialogs: J(),
177
+ nestedDrawers: Y()
178
+ }), (e) => {
179
+ i?.updateNestedLayer(he, e.open ? e.nestedDialogs + 1 : 0, e.open ? e.nestedDrawers + +!!re : 0);
180
+ });
181
+ let ge = {
182
+ unmount: Z.forceUnmount,
183
+ close() {
184
+ D.setOpen(!1, s(r));
185
+ }
186
+ };
187
+ B(() => t.actionsRef, (e) => {
188
+ e?.(ge);
189
+ });
190
+ function _e() {
191
+ let e = V(() => t.children), n = K(e), r = n;
192
+ return typeof n == "function" && (r = n.name === "bound read" && Object.prototype.hasOwnProperty.call(n, se) ? N(() => e()) : K(() => n({ payload: ie }))), r;
193
+ }
194
+ return G(() => {
195
+ i?.removeNestedLayer(he), D.clearInteractionProps(), delete D.context.floatingRoot.context.data.insideElements;
196
+ }), j(le, {
197
+ value: pe,
198
+ get children() {
199
+ return j(ee, {
200
+ value: c,
201
+ get children() {
202
+ return j(b, {
203
+ get value() {
204
+ return O.id ?? null;
205
+ },
206
+ get children() {
207
+ return [N(() => n.extraContent?.()), j(_e, {})];
208
+ }
209
+ });
210
+ }
211
+ });
212
+ }
213
+ });
214
+ }
215
+ //#endregion
216
+ //#region src/dialog/utils/mergeDialogStyles.ts
217
+ function de(e, t) {
218
+ if (typeof t == "string") {
219
+ let n = Object.entries(e).filter((e) => e[1] != null).map(([e, t]) => `${e}:${String(t)}`).join(";");
220
+ return n ? `${n};${t}` : t;
221
+ }
222
+ return {
223
+ ...e,
224
+ ...t || void 0
225
+ };
226
+ }
227
+ //#endregion
228
+ //#region src/dialog/utils/stateAttributesMapping.ts
229
+ var fe = { "data-open": "" }, pe = { "data-closed": "" }, me = { "data-nested-dialog-open": "" }, Q = {
230
+ open: (e) => e ? fe : pe,
231
+ ...c
232
+ }, $ = {
233
+ ...Q,
234
+ nestedDialogOpen: (e) => e ? me : null
235
+ }, he = /* @__PURE__ */ L("<button>");
236
+ function ge(n) {
237
+ let r = X(), c = n, d = n, f = V(() => c.disabled ?? !1), p = V(() => c.nativeButton ?? !0), m = V(() => ({ disabled: f() })), h = e(n, () => m(), (e) => (() => {
238
+ var t = M(he);
239
+ return I(t, e, !1), F(), t;
240
+ })()), g = V(() => a(n.class, m())), _ = V(() => o(n.style, m())), ee = V(() => t(m())), v = W(d, "render", "class", "disabled", "nativeButton", "onClick", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "ref", "style");
241
+ function y(e) {
242
+ r.store.open() && r.store.setOpen(!1, s(i, e));
243
+ }
244
+ let b = l(u(() => K(() => f() ? A : void 0)), u(() => c.onClick), y), te = l(u(() => K(() => f() ? A : void 0)), u(() => c.onPointerDown)), x = l(u(() => K(() => f() ? O : void 0)), u(() => c.onMouseDown)), ne = l(u(() => K(() => f() ? ae : void 0)), u(() => c.onKeyDown), u(() => K(() => p() ? void 0 : oe))), S = l(u(() => K(() => f() ? O : void 0)), u(() => c.onKeyUp), u(() => K(() => p() ? void 0 : k)));
245
+ return j(h, P({
246
+ ref: [c.ref],
247
+ get type() {
248
+ return p() ? "button" : void 0;
249
+ },
250
+ get role() {
251
+ return p() ? void 0 : "button";
252
+ },
253
+ get tabIndex() {
254
+ return !p() && f() ? -1 : 0;
255
+ },
256
+ get disabled() {
257
+ return (N(() => !!p())() ? f() : p()) || void 0;
258
+ },
259
+ get "aria-disabled"() {
260
+ return !p() && f() ? "true" : void 0;
261
+ },
262
+ get class() {
263
+ return g();
264
+ },
265
+ get style() {
266
+ return _();
267
+ },
268
+ onClick: b,
269
+ onKeyDown: ne,
270
+ onKeyUp: S,
271
+ onMouseDown: x,
272
+ onPointerDown: te
273
+ }, ee, v));
274
+ }
275
+ //#endregion
276
+ //#region src/dialog/description/DialogDescription.tsx
277
+ var _e = /* @__PURE__ */ L("<p>");
278
+ function ve(t) {
279
+ let n = X(), r = t, i = t, s = `base-ui-${U()}`, c = V(() => r.id || s), l = {}, u = e(t, () => l, (e) => (() => {
280
+ var t = M(_e);
281
+ return I(t, e, !1), F(), t;
282
+ })()), d = V(() => a(t.class, l)), f = V(() => o(t.style, l)), p = W(i, "render", "class", "id", "ref", "style");
283
+ return B(() => c(), (e) => (n.setDescriptionId(e), () => n.setDescriptionId((t) => t === e ? void 0 : t))), j(u, P({
284
+ ref: [r.ref],
285
+ get id() {
286
+ return c();
287
+ },
288
+ get class() {
289
+ return d();
290
+ },
291
+ get style() {
292
+ return f();
293
+ }
294
+ }, p));
295
+ }
296
+ //#endregion
297
+ //#region src/dialog/portal/DialogPortalContext.ts
298
+ var ye = Symbol("DialogPortalContext"), be = z(ye);
299
+ function xe() {
300
+ let e = q(be);
301
+ if (e === ye) throw Error("Base UI: <Dialog.Portal> is missing.");
302
+ return e;
303
+ }
304
+ //#endregion
305
+ //#region src/dialog/portal/DialogPortal.tsx
306
+ function Se(e) {
307
+ let t = X(), n = e, r = e, i = V(() => n.keepMounted ?? !1), s = V(() => t.presence.mounted() || i()), c = {}, l = V(() => a(e.class, c)), u = V(() => o(e.style, c)), d = W(r, "render", "class", "container", "keepMounted", "ref", "style"), f = { keepMounted: i };
308
+ function p() {
309
+ let e = null;
310
+ return G(() => {
311
+ t.internalBackdropElement() === e && t.setInternalBackdropElement(null);
312
+ }), j(h, {
313
+ ref: (n) => {
314
+ e = n, t.setInternalBackdropElement(n);
315
+ },
316
+ get open() {
317
+ return t.store.open();
318
+ }
319
+ });
320
+ }
321
+ return j(R, {
322
+ get when() {
323
+ return s();
324
+ },
325
+ get children() {
326
+ return j(be, {
327
+ value: f,
328
+ get children() {
329
+ return j(re, P({
330
+ get render() {
331
+ return e.render;
332
+ },
333
+ get container() {
334
+ return n.container;
335
+ },
336
+ ref: (e) => {
337
+ n.ref && ie(n.ref, e);
338
+ },
339
+ get class() {
340
+ return l();
341
+ },
342
+ get style() {
343
+ return u();
344
+ }
345
+ }, d, { get children() {
346
+ return [j(R, {
347
+ get when() {
348
+ return N(() => !!t.presence.mounted())() ? t.modal() === !0 : t.presence.mounted();
349
+ },
350
+ get children() {
351
+ return j(p, {});
352
+ }
353
+ }), N(() => e.children)];
354
+ } }));
355
+ }
356
+ });
357
+ }
358
+ });
359
+ }
360
+ //#endregion
361
+ //#region src/dialog/title/DialogTitle.tsx
362
+ var Ce = /* @__PURE__ */ L("<h2>");
363
+ function we(t) {
364
+ let n = X(), r = t, i = t, s = `base-ui-${U()}`, c = V(() => r.id || s), l = {}, u = e(t, () => l, (e) => (() => {
365
+ var t = M(Ce);
366
+ return I(t, e, !1), F(), t;
367
+ })()), d = V(() => a(t.class, l)), f = V(() => o(t.style, l)), p = W(i, "render", "class", "id", "ref", "style");
368
+ return B(() => c(), (e) => (n.setTitleId(e), () => n.setTitleId((t) => t === e ? void 0 : t))), j(u, P({
369
+ ref: [r.ref],
370
+ get id() {
371
+ return c();
372
+ },
373
+ get class() {
374
+ return d();
375
+ },
376
+ get style() {
377
+ return f();
378
+ }
379
+ }, p));
380
+ }
381
+ //#endregion
382
+ //#region src/dialog/trigger/DialogTrigger.tsx
383
+ var Te = /* @__PURE__ */ L("<button>");
384
+ function Ee(r) {
385
+ let i = X(!0), c = r;
386
+ if (!i && !K(() => c.handle)) throw Error("Base UI: <Dialog.Trigger> must be used within <Dialog.Root> or provided with a handle.");
387
+ let d = r, f = `base-ui-${U()}`, p = V(() => c.id || f), m = V(() => c.disabled ?? !1), h = V(() => c.nativeButton ?? !0), [g, _] = H(null, { ownedWrite: !0 }), ee = w(() => c.handle), v = V(() => ee() ?? i?.store), y = V(() => {
388
+ let e = v();
389
+ return !!(e?.open() && e.activeTriggerId() === p());
390
+ }), b = V(() => ({
391
+ disabled: m(),
392
+ open: y()
393
+ })), te = e(r, () => b(), (e) => (() => {
394
+ var t = M(Te);
395
+ return I(t, e, !1), F(), t;
396
+ })()), ne = V(() => a(r.class, b())), S = V(() => o(r.style, b())), re = V(() => t(b(), C)), T = W(d, "render", "class", "disabled", "handle", "id", "nativeButton", "onClick", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "payload", "ref", "style"), E = "", D = "";
397
+ x(v, p, g, () => ({ payload: c.payload }));
398
+ function ie(e) {
399
+ let t = v(), r = g();
400
+ !t || !r || e.button !== 0 || (t.open() || t.setOpenMethod(D || (e.detail === 0 ? "keyboard" : De() ? "touch" : "mouse")), t.setOpen(!(t.open() && t.activeTriggerId() === p()), s(n, e, r)));
401
+ }
402
+ function L() {
403
+ D = E, E = "";
404
+ }
405
+ function se(e) {
406
+ E = e.pointerType;
407
+ }
408
+ function R(e) {
409
+ E = "keyboard";
410
+ let t = v(), n = t?.state.popupElement, r = t ? (t.activeTriggerId() === p() ? t.state.activeTriggerProps : t.state.inactiveTriggerProps).onKeyDown : void 0, i = e.currentTarget;
411
+ n && i && n.ownerDocument !== i.ownerDocument && typeof r == "function" && r(e);
412
+ }
413
+ let z = l(u(() => K(() => m() ? A : void 0)), L, u(() => c.onClick), ie), B = l(u(() => K(() => m() ? A : void 0)), u(() => c.onPointerDown), se), G = l(u(() => K(() => m() ? O : void 0)), u(() => c.onMouseDown)), q = l(u(() => K(() => m() ? ae : void 0)), u(() => c.onKeyDown), R, u(() => K(() => h() ? void 0 : oe))), ce = l(u(() => K(() => m() ? O : void 0)), u(() => c.onKeyUp), u(() => K(() => h() ? void 0 : k)));
414
+ return j(te, P({
415
+ ref: [((e) => _(e)), c.ref],
416
+ get id() {
417
+ return p();
418
+ },
419
+ get type() {
420
+ return h() ? "button" : void 0;
421
+ },
422
+ get role() {
423
+ return h() ? void 0 : "button";
424
+ },
425
+ get tabIndex() {
426
+ return !h() && m() ? -1 : 0;
427
+ },
428
+ get disabled() {
429
+ return (N(() => !!h())() ? m() : h()) || void 0;
430
+ },
431
+ get "aria-disabled"() {
432
+ return !h() && m() ? "true" : void 0;
433
+ },
434
+ "aria-haspopup": "dialog",
435
+ get "aria-expanded"() {
436
+ return y() ? "true" : "false";
437
+ },
438
+ get "aria-controls"() {
439
+ return v()?.triggerPopupId(p());
440
+ },
441
+ "data-base-ui-click-trigger": "",
442
+ get class() {
443
+ return ne();
444
+ },
445
+ get style() {
446
+ return S();
447
+ },
448
+ onClick: z,
449
+ onKeyDown: q,
450
+ onKeyUp: ce,
451
+ onMouseDown: G,
452
+ onPointerDown: B
453
+ }, re, T));
454
+ }
455
+ function De() {
456
+ if (typeof navigator > "u") return !1;
457
+ let e = navigator.platform.toLowerCase();
458
+ return /^i(os$|p)/.test(e) || e === "macintel" && navigator.maxTouchPoints > 1;
459
+ }
460
+ //#endregion
461
+ //#region src/dialog/viewport/DialogViewport.tsx
462
+ var Oe = /* @__PURE__ */ L("<div>");
463
+ function ke(n) {
464
+ let r = xe(), i = X(), s = n, c = W(n, "render", "class", "ref", "style"), l = V(() => ({
465
+ open: i.store.open(),
466
+ transitionStatus: i.store.track().transitionStatus,
467
+ nested: i.nested,
468
+ nestedDialogOpen: i.nestedOpenDialogCount() > 0
469
+ })), u = e(n, () => l(), (e) => (() => {
470
+ var t = M(Oe);
471
+ return I(t, e, !1), F(), t;
472
+ })()), d = V(() => a(n.class, l())), f = V(() => de({ "pointer-events": i.store.open() ? void 0 : "none" }, o(n.style, l()))), p = V(() => t(l(), $)), m = V(() => r.keepMounted() || i.presence.mounted()), h = null;
473
+ return G(() => {
474
+ i.viewportElement() === h && i.setViewportElement(null);
475
+ }), j(R, {
476
+ get when() {
477
+ return m();
478
+ },
479
+ get children() {
480
+ return j(u, P({
481
+ ref: [((e) => {
482
+ h = e, i.setViewportElement(e);
483
+ }), s.ref],
484
+ role: "presentation",
485
+ get hidden() {
486
+ return !i.presence.mounted();
487
+ },
488
+ get class() {
489
+ return d();
490
+ },
491
+ get style() {
492
+ return f();
493
+ }
494
+ }, p, c));
495
+ }
496
+ });
497
+ }
498
+ //#endregion
499
+ //#region src/dialog/store/DialogHandle.ts
500
+ var Ae = class extends D {
501
+ constructor() {
502
+ super("Dialog", !1, new J());
503
+ }
504
+ open(e) {
505
+ this.openByTrigger(e);
506
+ }
507
+ openWithPayload(e) {
508
+ this.attachedStore && (this.attachedStore.setPayload(e), this.attachedStore.setOpen(!0, s(r)));
509
+ }
510
+ close() {
511
+ this.closePopup();
512
+ }
513
+ get isOpen() {
514
+ return this.attachedStore?.open() ?? !1;
515
+ }
516
+ };
517
+ function je() {
518
+ return new Ae();
519
+ }
520
+ //#endregion
521
+ export { we as a, ve as c, Q as d, de as f, X as h, Ee as i, ge as l, Z as m, je as n, Se as o, ue as p, ke as r, xe as s, Ae as t, $ as u };