@ark-ui/solid 1.0.0-beta.3 → 1.0.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 (346) hide show
  1. package/CHANGELOG.md +14 -51
  2. package/cjs/index.js +604 -453
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +601 -455
  5. package/esm/index.js.map +1 -1
  6. package/package.json +42 -42
  7. package/source/accordion/accordion-item-content.jsx +6 -5
  8. package/source/accordion/accordion-item-trigger.jsx +4 -1
  9. package/source/accordion/accordion-item.jsx +10 -6
  10. package/source/accordion/accordion.jsx +8 -4
  11. package/source/avatar/avatar-fallback.jsx +2 -2
  12. package/source/avatar/avatar-image.jsx +2 -2
  13. package/source/avatar/avatar.jsx +2 -2
  14. package/source/carousel/carousel.jsx +6 -4
  15. package/source/checkbox/checkbox-label.jsx +2 -2
  16. package/source/color-picker/color-picker-content.jsx +6 -5
  17. package/source/color-picker/color-picker-positioner.jsx +6 -1
  18. package/source/color-picker/color-picker-view.jsx +13 -0
  19. package/source/color-picker/color-picker.jsx +8 -3
  20. package/source/color-picker/index.js +2 -0
  21. package/source/combobox/combobox-content.jsx +6 -5
  22. package/source/combobox/combobox-positioner.jsx +8 -3
  23. package/source/combobox/combobox.jsx +8 -3
  24. package/source/date-picker/date-picker-content.jsx +6 -5
  25. package/source/date-picker/date-picker-positioner.jsx +6 -1
  26. package/source/date-picker/date-picker.jsx +8 -3
  27. package/source/dialog/dialog-backdrop.jsx +7 -5
  28. package/source/dialog/dialog-close-trigger.jsx +2 -2
  29. package/source/dialog/dialog-content.jsx +6 -5
  30. package/source/dialog/dialog-description.jsx +2 -2
  31. package/source/dialog/dialog-positioner.jsx +8 -3
  32. package/source/dialog/dialog-title.jsx +2 -2
  33. package/source/dialog/dialog-trigger.jsx +6 -3
  34. package/source/dialog/dialog.jsx +11 -3
  35. package/source/editable/editable-area.jsx +2 -2
  36. package/source/editable/editable-cancel-trigger.jsx +2 -2
  37. package/source/editable/editable-control.jsx +2 -2
  38. package/source/editable/editable-edit-trigger.jsx +2 -2
  39. package/source/editable/editable-input.jsx +2 -2
  40. package/source/editable/editable-label.jsx +2 -2
  41. package/source/editable/editable-preview.jsx +2 -2
  42. package/source/editable/editable-submit-trigger.jsx +2 -2
  43. package/source/editable/editable.jsx +2 -2
  44. package/source/hover-card/hover-card-arrow-tip.jsx +2 -2
  45. package/source/hover-card/hover-card-arrow.jsx +2 -2
  46. package/source/hover-card/hover-card-content.jsx +6 -5
  47. package/source/hover-card/hover-card-positioner.jsx +8 -3
  48. package/source/hover-card/hover-card-trigger.jsx +2 -2
  49. package/source/hover-card/hover-card.jsx +9 -3
  50. package/source/menu/menu-arrow-tip.jsx +2 -2
  51. package/source/menu/menu-arrow.jsx +2 -2
  52. package/source/menu/menu-content.jsx +6 -5
  53. package/source/menu/menu-context-trigger.jsx +2 -2
  54. package/source/menu/menu-item-group.jsx +2 -2
  55. package/source/menu/menu-item.jsx +2 -2
  56. package/source/menu/menu-option-item.jsx +2 -2
  57. package/source/menu/menu-positioner.jsx +8 -3
  58. package/source/menu/menu-separator.jsx +2 -2
  59. package/source/menu/menu-trigger-item.jsx +2 -2
  60. package/source/menu/menu-trigger.jsx +6 -3
  61. package/source/menu/menu.jsx +11 -12
  62. package/source/number-input/number-input-control.jsx +2 -2
  63. package/source/number-input/number-input-decrement-trigger.jsx +2 -2
  64. package/source/number-input/number-input-field.jsx +2 -2
  65. package/source/number-input/number-input-increment-trigger.jsx +2 -2
  66. package/source/number-input/number-input-label.jsx +2 -2
  67. package/source/number-input/number-input-scrubber.jsx +2 -2
  68. package/source/number-input/number-input.jsx +2 -2
  69. package/source/pagination/pagination.jsx +2 -2
  70. package/source/pin-input/pin-input-field.jsx +2 -2
  71. package/source/pin-input/pin-input-label.jsx +2 -2
  72. package/source/popover/popover-anchor.jsx +2 -2
  73. package/source/popover/popover-arrow-tip.jsx +2 -2
  74. package/source/popover/popover-arrow.jsx +2 -2
  75. package/source/popover/popover-close-trigger.jsx +2 -2
  76. package/source/popover/popover-content.jsx +6 -5
  77. package/source/popover/popover-description.jsx +2 -2
  78. package/source/popover/popover-positioner.jsx +7 -2
  79. package/source/popover/popover-title.jsx +2 -2
  80. package/source/popover/popover-trigger.jsx +5 -2
  81. package/source/popover/popover.jsx +10 -2
  82. package/source/presence/index.js +4 -1
  83. package/source/presence/presence-context.js +5 -0
  84. package/source/presence/presence-props-context.js +5 -0
  85. package/source/presence/presence.jsx +9 -28
  86. package/source/presence/split-presence-props.js +0 -1
  87. package/source/presence/use-presence.js +21 -4
  88. package/source/rating-group/rating-group-item.jsx +5 -4
  89. package/source/select/select-content.jsx +6 -5
  90. package/source/select/select-positioner.jsx +6 -1
  91. package/source/select/select.jsx +8 -3
  92. package/source/slider/slider-thumb.jsx +2 -2
  93. package/source/slider/slider-value-text.jsx +3 -3
  94. package/source/splitter/splitter-panel.jsx +2 -2
  95. package/source/splitter/splitter-resize-trigger.jsx +2 -2
  96. package/source/splitter/splitter.jsx +2 -2
  97. package/source/switch/switch-label.jsx +2 -2
  98. package/source/switch/switch-thumb.jsx +2 -2
  99. package/source/tabs/tab-content.jsx +11 -8
  100. package/source/tabs/tab-indicator.jsx +2 -2
  101. package/source/tabs/tab-list.jsx +2 -2
  102. package/source/tabs/tab-trigger.jsx +2 -2
  103. package/source/tabs/tabs.jsx +7 -3
  104. package/source/toggle-group/toggle-group.jsx +2 -2
  105. package/source/tooltip/tooltip-arrow-tip.jsx +2 -2
  106. package/source/tooltip/tooltip-arrow.jsx +2 -2
  107. package/source/tooltip/tooltip-content.jsx +7 -6
  108. package/source/tooltip/tooltip-positioner.jsx +7 -2
  109. package/source/tooltip/tooltip-trigger.jsx +2 -2
  110. package/source/tooltip/tooltip.jsx +10 -2
  111. package/types/accordion/accordion-context.d.ts +3 -2
  112. package/types/accordion/accordion-item-content.d.ts +1 -3
  113. package/types/accordion/accordion-item-context.d.ts +3 -2
  114. package/types/accordion/accordion-item-indicator.d.ts +2 -1
  115. package/types/accordion/accordion-item-trigger.d.ts +2 -1
  116. package/types/accordion/accordion-item.d.ts +5 -4
  117. package/types/accordion/accordion.d.ts +3 -1
  118. package/types/accordion/use-accordion.d.ts +4 -2
  119. package/types/avatar/avatar-context.d.ts +3 -2
  120. package/types/avatar/avatar-fallback.d.ts +2 -1
  121. package/types/avatar/avatar-image.d.ts +2 -1
  122. package/types/avatar/avatar.d.ts +2 -1
  123. package/types/avatar/use-avatar.d.ts +4 -2
  124. package/types/carousel/carousel-context.d.ts +3 -2
  125. package/types/carousel/carousel-control.d.ts +2 -1
  126. package/types/carousel/carousel-indicator-group.d.ts +2 -1
  127. package/types/carousel/carousel-indicator.d.ts +2 -1
  128. package/types/carousel/carousel-next-trigger.d.ts +2 -1
  129. package/types/carousel/carousel-prev-trigger.d.ts +2 -1
  130. package/types/carousel/carousel-slide-group.d.ts +2 -1
  131. package/types/carousel/carousel-slide.d.ts +2 -1
  132. package/types/carousel/carousel-viewport.d.ts +2 -1
  133. package/types/carousel/carousel.d.ts +7 -3
  134. package/types/carousel/use-carousel.d.ts +4 -2
  135. package/types/checkbox/checkbox-context.d.ts +3 -2
  136. package/types/checkbox/checkbox-control.d.ts +2 -1
  137. package/types/checkbox/checkbox-indicator.d.ts +2 -1
  138. package/types/checkbox/checkbox-label.d.ts +2 -1
  139. package/types/checkbox/checkbox.d.ts +5 -5
  140. package/types/checkbox/use-checkbox.d.ts +4 -2
  141. package/types/color-picker/color-picker-content.d.ts +1 -3
  142. package/types/color-picker/color-picker-view.d.ts +7 -0
  143. package/types/color-picker/color-picker.d.ts +5 -3
  144. package/types/color-picker/index.d.ts +3 -1
  145. package/types/combobox/combobox-clear-trigger.d.ts +2 -1
  146. package/types/combobox/combobox-content.d.ts +1 -3
  147. package/types/combobox/combobox-context.d.ts +2 -1
  148. package/types/combobox/combobox-control.d.ts +2 -1
  149. package/types/combobox/combobox-input.d.ts +2 -1
  150. package/types/combobox/combobox-item-context.d.ts +3 -2
  151. package/types/combobox/combobox-item-group.d.ts +2 -1
  152. package/types/combobox/combobox-item-indicator.d.ts +2 -1
  153. package/types/combobox/combobox-item-text.d.ts +2 -1
  154. package/types/combobox/combobox-item.d.ts +5 -4
  155. package/types/combobox/combobox-label.d.ts +2 -1
  156. package/types/combobox/combobox-positioner.d.ts +2 -1
  157. package/types/combobox/combobox-trigger.d.ts +2 -1
  158. package/types/combobox/combobox.d.ts +7 -6
  159. package/types/combobox/use-combobox.d.ts +2 -1
  160. package/types/date-picker/date-picker-content.d.ts +1 -3
  161. package/types/date-picker/date-picker-context.d.ts +3 -2
  162. package/types/date-picker/date-picker-view.d.ts +4 -3
  163. package/types/date-picker/date-picker.d.ts +5 -3
  164. package/types/dialog/dialog-backdrop.d.ts +1 -3
  165. package/types/dialog/dialog-close-trigger.d.ts +2 -1
  166. package/types/dialog/dialog-content.d.ts +1 -3
  167. package/types/dialog/dialog-context.d.ts +3 -2
  168. package/types/dialog/dialog-description.d.ts +2 -1
  169. package/types/dialog/dialog-positioner.d.ts +2 -1
  170. package/types/dialog/dialog-title.d.ts +2 -1
  171. package/types/dialog/dialog-trigger.d.ts +2 -1
  172. package/types/dialog/dialog.d.ts +4 -3
  173. package/types/dialog/use-dialog.d.ts +4 -2
  174. package/types/editable/editable-area.d.ts +2 -1
  175. package/types/editable/editable-cancel-trigger.d.ts +2 -1
  176. package/types/editable/editable-context.d.ts +3 -2
  177. package/types/editable/editable-control.d.ts +2 -1
  178. package/types/editable/editable-edit-trigger.d.ts +2 -1
  179. package/types/editable/editable-input.d.ts +2 -1
  180. package/types/editable/editable-label.d.ts +2 -1
  181. package/types/editable/editable-preview.d.ts +2 -1
  182. package/types/editable/editable-submit-trigger.d.ts +2 -1
  183. package/types/editable/editable.d.ts +5 -5
  184. package/types/editable/use-editable.d.ts +4 -2
  185. package/types/environment/environment.d.ts +2 -2
  186. package/types/hover-card/hover-card-arrow-tip.d.ts +2 -1
  187. package/types/hover-card/hover-card-arrow.d.ts +2 -1
  188. package/types/hover-card/hover-card-content.d.ts +1 -3
  189. package/types/hover-card/hover-card-context.d.ts +3 -2
  190. package/types/hover-card/hover-card-positioner.d.ts +2 -1
  191. package/types/hover-card/hover-card-trigger.d.ts +2 -1
  192. package/types/hover-card/hover-card.d.ts +4 -3
  193. package/types/hover-card/use-hover-card.d.ts +4 -2
  194. package/types/menu/menu-arrow-tip.d.ts +2 -1
  195. package/types/menu/menu-arrow.d.ts +2 -1
  196. package/types/menu/menu-content.d.ts +1 -3
  197. package/types/menu/menu-context-trigger.d.ts +2 -1
  198. package/types/menu/menu-item-group.d.ts +2 -1
  199. package/types/menu/menu-item.d.ts +2 -1
  200. package/types/menu/menu-option-item.d.ts +3 -2
  201. package/types/menu/menu-positioner.d.ts +2 -1
  202. package/types/menu/menu-separator.d.ts +2 -1
  203. package/types/menu/menu-trigger-item.d.ts +2 -1
  204. package/types/menu/menu-trigger.d.ts +2 -1
  205. package/types/menu/menu.d.ts +6 -9
  206. package/types/menu/use-menu.d.ts +2 -1
  207. package/types/number-input/number-input-context.d.ts +3 -2
  208. package/types/number-input/number-input-control.d.ts +2 -1
  209. package/types/number-input/number-input-decrement-trigger.d.ts +2 -1
  210. package/types/number-input/number-input-field.d.ts +2 -1
  211. package/types/number-input/number-input-increment-trigger.d.ts +2 -1
  212. package/types/number-input/number-input-label.d.ts +2 -1
  213. package/types/number-input/number-input-scrubber.d.ts +2 -1
  214. package/types/number-input/number-input.d.ts +2 -1
  215. package/types/number-input/use-number-input.d.ts +4 -2
  216. package/types/pagination/pagination-context.d.ts +3 -2
  217. package/types/pagination/pagination-ellipsis.d.ts +2 -1
  218. package/types/pagination/pagination-item.d.ts +2 -1
  219. package/types/pagination/pagination.d.ts +4 -3
  220. package/types/pagination/use-pagination.d.ts +4 -2
  221. package/types/pin-input/pin-input-context.d.ts +3 -2
  222. package/types/pin-input/pin-input-control.d.ts +2 -1
  223. package/types/pin-input/pin-input-field.d.ts +3 -2
  224. package/types/pin-input/pin-input-label.d.ts +2 -1
  225. package/types/pin-input/pin-input.d.ts +2 -1
  226. package/types/pin-input/use-pin-input.d.ts +4 -2
  227. package/types/popover/popover-anchor.d.ts +2 -1
  228. package/types/popover/popover-arrow-tip.d.ts +2 -1
  229. package/types/popover/popover-arrow.d.ts +2 -1
  230. package/types/popover/popover-close-trigger.d.ts +2 -1
  231. package/types/popover/popover-content.d.ts +1 -3
  232. package/types/popover/popover-context.d.ts +3 -2
  233. package/types/popover/popover-description.d.ts +2 -1
  234. package/types/popover/popover-indicator.d.ts +2 -1
  235. package/types/popover/popover-positioner.d.ts +2 -1
  236. package/types/popover/popover-title.d.ts +2 -1
  237. package/types/popover/popover-trigger.d.ts +2 -1
  238. package/types/popover/popover.d.ts +5 -4
  239. package/types/popover/use-popover.d.ts +4 -2
  240. package/types/presence/index.d.ts +5 -2
  241. package/types/presence/presence-context.d.ts +4 -0
  242. package/types/presence/presence-props-context.d.ts +4 -0
  243. package/types/presence/presence.d.ts +3 -18
  244. package/types/presence/split-presence-props.d.ts +2 -2
  245. package/types/presence/use-presence.d.ts +23 -2
  246. package/types/radio-group/radio-group-context.d.ts +3 -2
  247. package/types/radio-group/radio-group-indicator.d.ts +2 -1
  248. package/types/radio-group/radio-group-item-context.d.ts +3 -2
  249. package/types/radio-group/radio-group-item-control.d.ts +2 -1
  250. package/types/radio-group/radio-group-item-text.d.ts +2 -1
  251. package/types/radio-group/radio-group-item.d.ts +2 -1
  252. package/types/radio-group/radio-group-label.d.ts +2 -1
  253. package/types/radio-group/radio-group.d.ts +2 -1
  254. package/types/radio-group/use-radio-group.d.ts +4 -2
  255. package/types/rating-group/rating-group-context.d.ts +3 -2
  256. package/types/rating-group/rating-group-control.d.ts +6 -5
  257. package/types/rating-group/rating-group-item-context.d.ts +4 -2
  258. package/types/rating-group/rating-group-item.d.ts +6 -6
  259. package/types/rating-group/rating-group-label.d.ts +2 -1
  260. package/types/rating-group/rating-group.d.ts +2 -1
  261. package/types/rating-group/use-rating-group.d.ts +4 -2
  262. package/types/segment-group/segment-group-context.d.ts +3 -2
  263. package/types/segment-group/segment-group-indicator.d.ts +2 -1
  264. package/types/segment-group/segment-group-item-control.d.ts +2 -1
  265. package/types/segment-group/segment-group-item-text.d.ts +2 -1
  266. package/types/segment-group/segment-group-item.d.ts +2 -1
  267. package/types/segment-group/segment-group-label.d.ts +2 -1
  268. package/types/segment-group/segment-group.d.ts +2 -1
  269. package/types/segment-group/use-segment-group.d.ts +4 -2
  270. package/types/select/select-clear-trigger.d.ts +2 -1
  271. package/types/select/select-content.d.ts +1 -3
  272. package/types/select/select-context.d.ts +2 -1
  273. package/types/select/select-control.d.ts +2 -1
  274. package/types/select/select-indicator.d.ts +2 -1
  275. package/types/select/select-item-context.d.ts +2 -1
  276. package/types/select/select-item-group.d.ts +2 -1
  277. package/types/select/select-item-indicator.d.ts +2 -1
  278. package/types/select/select-item-text.d.ts +2 -1
  279. package/types/select/select-item.d.ts +5 -4
  280. package/types/select/select-label.d.ts +2 -1
  281. package/types/select/select-positioner.d.ts +2 -1
  282. package/types/select/select-trigger.d.ts +2 -1
  283. package/types/select/select.d.ts +7 -6
  284. package/types/select/use-select.d.ts +2 -1
  285. package/types/slider/slider-context.d.ts +3 -2
  286. package/types/slider/slider-control.d.ts +2 -1
  287. package/types/slider/slider-label.d.ts +2 -1
  288. package/types/slider/slider-marker-group.d.ts +2 -1
  289. package/types/slider/slider-marker.d.ts +2 -1
  290. package/types/slider/slider-range.d.ts +2 -1
  291. package/types/slider/slider-thumb.d.ts +2 -1
  292. package/types/slider/slider-track.d.ts +2 -1
  293. package/types/slider/slider-value-text.d.ts +3 -7
  294. package/types/slider/slider.d.ts +4 -3
  295. package/types/slider/use-slider.d.ts +4 -2
  296. package/types/splitter/splitter-context.d.ts +3 -2
  297. package/types/splitter/splitter-panel.d.ts +2 -1
  298. package/types/splitter/splitter-resize-trigger.d.ts +2 -1
  299. package/types/splitter/splitter.d.ts +4 -3
  300. package/types/splitter/use-splitter.d.ts +4 -2
  301. package/types/switch/switch-context.d.ts +3 -2
  302. package/types/switch/switch-control.d.ts +2 -1
  303. package/types/switch/switch-label.d.ts +2 -1
  304. package/types/switch/switch-thumb.d.ts +2 -1
  305. package/types/switch/switch.d.ts +5 -5
  306. package/types/switch/use-switch.d.ts +4 -2
  307. package/types/tabs/tab-content.d.ts +2 -2
  308. package/types/tabs/tab-indicator.d.ts +2 -1
  309. package/types/tabs/tab-list.d.ts +2 -1
  310. package/types/tabs/tab-trigger.d.ts +2 -1
  311. package/types/tabs/tabs-context.d.ts +3 -2
  312. package/types/tabs/tabs.d.ts +3 -1
  313. package/types/tabs/use-tabs.d.ts +4 -2
  314. package/types/tags-input/tags-input-clear-trigger.d.ts +2 -1
  315. package/types/tags-input/tags-input-context.d.ts +3 -2
  316. package/types/tags-input/tags-input-control.d.ts +2 -1
  317. package/types/tags-input/tags-input-input.d.ts +2 -1
  318. package/types/tags-input/tags-input-item-context.d.ts +3 -2
  319. package/types/tags-input/tags-input-item-delete-trigger.d.ts +2 -1
  320. package/types/tags-input/tags-input-item-input.d.ts +2 -1
  321. package/types/tags-input/tags-input-item-text.d.ts +2 -1
  322. package/types/tags-input/tags-input-item.d.ts +5 -4
  323. package/types/tags-input/tags-input-label.d.ts +2 -1
  324. package/types/tags-input/tags-input.d.ts +5 -5
  325. package/types/tags-input/use-tags-input.d.ts +4 -2
  326. package/types/toast/toast-close-trigger.d.ts +2 -1
  327. package/types/toast/toast-description.d.ts +2 -1
  328. package/types/toast/toast-title.d.ts +2 -1
  329. package/types/toast/toast.d.ts +2 -1
  330. package/types/toggle-group/toggle-group-context.d.ts +3 -2
  331. package/types/toggle-group/toggle-group.d.ts +2 -1
  332. package/types/toggle-group/use-toggle-group.d.ts +4 -2
  333. package/types/tooltip/tooltip-arrow-tip.d.ts +2 -1
  334. package/types/tooltip/tooltip-arrow.d.ts +2 -1
  335. package/types/tooltip/tooltip-content.d.ts +1 -3
  336. package/types/tooltip/tooltip-context.d.ts +3 -2
  337. package/types/tooltip/tooltip-positioner.d.ts +2 -1
  338. package/types/tooltip/tooltip-trigger.d.ts +2 -1
  339. package/types/tooltip/tooltip.d.ts +6 -5
  340. package/types/tooltip/use-tooltip.d.ts +4 -2
  341. package/source/tabs/tab-presence.jsx +0 -6
  342. package/types/tabs/tab-presence.d.ts +0 -4
  343. /package/source/date-picker/{use-date-picker.jsx → use-date-picker.js} +0 -0
  344. /package/source/radio-group/{use-radio-group.jsx → use-radio-group.js} +0 -0
  345. /package/source/rating-group/{use-rating-group.jsx → use-rating-group.js} +0 -0
  346. /package/source/segment-group/{use-segment-group.jsx → use-segment-group.js} +0 -0
@@ -1,9 +1,12 @@
1
+ import { mergeProps } from '@zag-js/solid';
1
2
  import { createSplitProps } from '../create-split-props';
3
+ import { PresencePropsProvider, PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
2
4
  import { runIfFn } from '../run-if-fn';
3
5
  import { DialogProvider } from './dialog-context';
4
6
  import { useDialog } from './use-dialog';
5
7
  export const Dialog = (props) => {
6
- const [dialogParams, localProps] = createSplitProps()(props, [
8
+ const [presenceProps, dialogProps] = splitPresenceProps(props);
9
+ const [useDialogProps, localProps] = createSplitProps()(dialogProps, [
7
10
  'aria-label',
8
11
  'closeOnEscapeKeyDown',
9
12
  'closeOnInteractOutside',
@@ -25,7 +28,12 @@ export const Dialog = (props) => {
25
28
  'role',
26
29
  'trapFocus',
27
30
  ]);
28
- const api = useDialog(dialogParams);
31
+ const api = useDialog(useDialogProps);
32
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
29
33
  const getChildren = () => runIfFn(localProps.children, api);
30
- return <DialogProvider value={api}>{getChildren()}</DialogProvider>;
34
+ return (<DialogProvider value={api}>
35
+ <PresencePropsProvider value={presenceProps}>
36
+ <PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
37
+ </PresencePropsProvider>
38
+ </DialogProvider>);
31
39
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableArea = (props) => {
5
5
  const editable = useEditableContext();
6
- const areaProps = mergeProps(() => editable().areaProps, props);
7
- return <ark.div {...areaProps}/>;
6
+ const mergedProps = mergeProps(() => editable().areaProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableCancelTrigger = (props) => {
5
5
  const editable = useEditableContext();
6
- const triggerProps = mergeProps(() => editable().cancelTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => editable().cancelTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableControl = (props) => {
5
5
  const editable = useEditableContext();
6
- const controlProps = mergeProps(() => editable().controlProps, props);
7
- return <ark.div {...controlProps}/>;
6
+ const mergedProps = mergeProps(() => editable().controlProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableEditTrigger = (props) => {
5
5
  const editable = useEditableContext();
6
- const triggerProps = mergeProps(() => editable().editTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => editable().editTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableInput = (props) => {
5
5
  const editable = useEditableContext();
6
- const inputProps = mergeProps(() => editable().inputProps, props);
7
- return <ark.input {...inputProps}/>;
6
+ const mergedProps = mergeProps(() => editable().inputProps, props);
7
+ return <ark.input {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableLabel = (props) => {
5
5
  const editable = useEditableContext();
6
- const labelProps = mergeProps(() => editable().labelProps, props);
7
- return <ark.label {...labelProps}/>;
6
+ const mergedProps = mergeProps(() => editable().labelProps, props);
7
+ return <ark.label {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditablePreview = (props) => {
5
5
  const editable = useEditableContext();
6
- const previewProps = mergeProps(() => editable().previewProps, props);
7
- return <ark.span {...previewProps}/>;
6
+ const mergedProps = mergeProps(() => editable().previewProps, props);
7
+ return <ark.span {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useEditableContext } from './editable-context';
4
4
  export const EditableSubmitTrigger = (props) => {
5
5
  const dialog = useEditableContext();
6
- const triggerProps = mergeProps(() => dialog().submitTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => dialog().submitTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -36,9 +36,9 @@ export const Editable = (props) => {
36
36
  ]);
37
37
  const editable = useEditable(useEditableProps);
38
38
  const [childrenProps, localProps] = splitProps(restProps, ['children']);
39
- const rootProps = mergeProps(() => editable().rootProps, localProps);
39
+ const mergedProps = mergeProps(() => editable().rootProps, localProps);
40
40
  const getChildren = () => runIfFn(childrenProps.children, editable);
41
41
  return (<EditableProvider value={editable}>
42
- <ark.div {...rootProps}>{getChildren()}</ark.div>
42
+ <ark.div {...mergedProps}>{getChildren()}</ark.div>
43
43
  </EditableProvider>);
44
44
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useHoverCardContext } from './hover-card-context';
4
4
  export const HoverCardArrowTip = (props) => {
5
5
  const hoverCard = useHoverCardContext();
6
- const tipProps = mergeProps(() => hoverCard().arrowTipProps, props);
7
- return <ark.div {...tipProps}/>;
6
+ const mergedProps = mergeProps(() => hoverCard().arrowTipProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useHoverCardContext } from './hover-card-context';
4
4
  export const HoverCardArrow = (props) => {
5
5
  const hoverCard = useHoverCardContext();
6
- const arrowProps = mergeProps(() => hoverCard().arrowProps, props);
7
- return <ark.div {...arrowProps}/>;
6
+ const mergedProps = mergeProps(() => hoverCard().arrowProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -1,12 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
3
- import { Presence, splitPresenceProps } from '../presence';
4
+ import { usePresenceContext } from '../presence';
4
5
  import { useHoverCardContext } from './hover-card-context';
5
6
  export const HoverCardContent = (props) => {
6
- const [presenceProps, localProps] = splitPresenceProps(props);
7
7
  const api = useHoverCardContext();
8
- const mergedProps = mergeProps(() => api().contentProps, localProps);
9
- return (<Presence present={api().isOpen} {...presenceProps} fallback={<div {...api().contentProps}/>}>
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
10
11
  <ark.div {...mergedProps}/>
11
- </Presence>);
12
+ </Show>);
12
13
  };
@@ -1,8 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
4
+ import { usePresenceContext } from '../presence';
3
5
  import { useHoverCardContext } from './hover-card-context';
4
6
  export const HoverCardPositioner = (props) => {
5
- const hoverCard = useHoverCardContext();
6
- const positionerProps = mergeProps(() => hoverCard().positionerProps, props);
7
- return <ark.div {...positionerProps}/>;
7
+ const api = useHoverCardContext();
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().positionerProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
11
+ <ark.div {...mergedProps}/>
12
+ </Show>);
8
13
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useHoverCardContext } from './hover-card-context';
4
4
  export const HoverCardTrigger = (props) => {
5
5
  const hoverCard = useHoverCardContext();
6
- const triggerProps = mergeProps(() => hoverCard().triggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => hoverCard().triggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -1,9 +1,12 @@
1
+ import { mergeProps } from '@zag-js/solid';
1
2
  import { createSplitProps } from '../create-split-props';
3
+ import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
2
4
  import { runIfFn } from '../run-if-fn';
3
5
  import { HoverCardProvider } from './hover-card-context';
4
6
  import { useHoverCard } from './use-hover-card';
5
7
  export const HoverCard = (props) => {
6
- const [hoverCardProps, localProps] = createSplitProps()(props, [
8
+ const [presenceProps, hoverCardProps] = splitPresenceProps(props);
9
+ const [useHoverCardProps, localProps] = createSplitProps()(hoverCardProps, [
7
10
  'closeDelay',
8
11
  'dir',
9
12
  'getRootNode',
@@ -14,7 +17,10 @@ export const HoverCard = (props) => {
14
17
  'openDelay',
15
18
  'positioning',
16
19
  ]);
17
- const api = useHoverCard(hoverCardProps);
20
+ const api = useHoverCard(useHoverCardProps);
21
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
18
22
  const getChildren = () => runIfFn(localProps.children, api);
19
- return <HoverCardProvider value={api}>{getChildren()}</HoverCardProvider>;
23
+ return (<HoverCardProvider value={api}>
24
+ <PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
25
+ </HoverCardProvider>);
20
26
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useMenuContext } from './menu-context';
4
4
  export const MenuArrowTip = (props) => {
5
5
  const menu = useMenuContext();
6
- const arrowTipProps = mergeProps(() => menu?.().arrowTipProps, props);
7
- return <ark.div {...arrowTipProps}/>;
6
+ const mergedProps = mergeProps(() => menu?.().arrowTipProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useMenuContext } from './menu-context';
4
4
  export const MenuArrow = (props) => {
5
5
  const menu = useMenuContext();
6
- const arrowProps = mergeProps(() => menu?.().arrowProps, props);
7
- return <ark.div {...arrowProps}/>;
6
+ const mergedProps = mergeProps(() => menu?.().arrowProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -1,12 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
3
- import { Presence, splitPresenceProps } from '../presence';
4
+ import { usePresenceContext } from '../presence';
4
5
  import { useMenuContext } from './menu-context';
5
6
  export const MenuContent = (props) => {
6
- const [presenceProps, localProps] = splitPresenceProps(props);
7
7
  const api = useMenuContext();
8
- const mergedProps = mergeProps(() => api?.().contentProps, localProps);
9
- return (<Presence present={api?.().isOpen} {...presenceProps} fallback={<div {...api().contentProps}/>}>
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
10
11
  <ark.div {...mergedProps}/>
11
- </Presence>);
12
+ </Show>);
12
13
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useMenuContext } from './menu-context';
4
4
  export const MenuContextTrigger = (props) => {
5
5
  const menu = useMenuContext();
6
- const triggerProps = mergeProps(() => menu?.().contextTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => menu?.().contextTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -5,6 +5,6 @@ import { useMenuContext } from './menu-context';
5
5
  export const MenuItemGroup = (props) => {
6
6
  const menu = useMenuContext();
7
7
  const [itemGroupProps, localProps] = createSplitProps()(props, ['id']);
8
- const groupProps = mergeProps(() => menu?.().getItemGroupProps(itemGroupProps), localProps);
9
- return <ark.div {...groupProps}/>;
8
+ const mergedProps = mergeProps(() => menu?.().getItemGroupProps(itemGroupProps), localProps);
9
+ return <ark.div {...mergedProps}/>;
10
10
  };
@@ -10,6 +10,6 @@ export const MenuItem = (props) => {
10
10
  'valueText',
11
11
  'closeOnSelect',
12
12
  ]);
13
- const itemProps = mergeProps(() => menu?.().getItemProps(itemParams), restProps);
14
- return <ark.div {...itemProps}/>;
13
+ const mergedProps = mergeProps(() => menu?.().getItemProps(itemParams), restProps);
14
+ return <ark.div {...mergedProps}/>;
15
15
  };
@@ -16,8 +16,8 @@ export const MenuOptionItem = (props) => {
16
16
  'value',
17
17
  'onCheckedChange',
18
18
  ]);
19
- const itemProps = mergeProps(() => menu().getOptionItemProps(optionProps), localProps);
19
+ const mergedProps = mergeProps(() => menu().getOptionItemProps(optionProps), localProps);
20
20
  const itemState = createMemo(() => menu().getOptionItemState(optionProps));
21
21
  const getChildren = () => runIfFn(localProps.children, itemState);
22
- return <ark.div {...itemProps}>{getChildren()}</ark.div>;
22
+ return <ark.div {...mergedProps}>{getChildren()}</ark.div>;
23
23
  };
@@ -1,8 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
4
+ import { usePresenceContext } from '../presence';
3
5
  import { useMenuContext } from './menu-context';
4
6
  export const MenuPositioner = (props) => {
5
- const menu = useMenuContext();
6
- const positionerProps = mergeProps(() => menu?.().positionerProps, props);
7
- return <ark.div {...positionerProps}/>;
7
+ const api = useMenuContext();
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().positionerProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
11
+ <ark.div {...mergedProps}/>
12
+ </Show>);
8
13
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useMenuContext } from './menu-context';
4
4
  export const MenuSeparator = (props) => {
5
5
  const menu = useMenuContext();
6
- const separatorProps = mergeProps(() => menu?.().separatorProps, props);
7
- return <ark.hr {...separatorProps}/>;
6
+ const mergedProps = mergeProps(() => menu?.().separatorProps, props);
7
+ return <ark.hr {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useMenuTriggerItemContext } from './menu-context';
4
4
  export const MenuTriggerItem = (props) => {
5
5
  const getTriggerItemProps = useMenuTriggerItemContext();
6
- const triggerProps = mergeProps(() => getTriggerItemProps?.(), props);
7
- return <ark.div {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => getTriggerItemProps?.(), props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -1,8 +1,11 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
2
  import { ark } from '../factory';
3
+ import { usePresenceContext } from '../presence';
3
4
  import { useMenuContext } from './menu-context';
4
5
  export const MenuTrigger = (props) => {
5
- const menu = useMenuContext();
6
- const triggerProps = mergeProps(() => menu?.().triggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const api = useMenuContext();
7
+ const presenceApi = usePresenceContext();
8
+ const mergedProps = mergeProps(() => api().triggerProps, () => ({ 'aria-controls': presenceApi().isUnmounted && null }), props);
9
+ // @ts-expect-error we want aria-controls to be null to remove them if the popover if lazy mounted
10
+ return <ark.button {...mergedProps}/>;
8
11
  };
@@ -1,10 +1,13 @@
1
+ import { mergeProps } from '@zag-js/solid';
1
2
  import { createEffect, createMemo } from 'solid-js';
2
3
  import { createSplitProps } from '../create-split-props';
4
+ import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
3
5
  import { runIfFn } from '../run-if-fn';
4
6
  import { MenuMachineProvider, MenuProvider, MenuTriggerItemProvider, useMenuContext, useMenuMachineContext, } from './menu-context';
5
7
  import { useMenu } from './use-menu';
6
8
  export const Menu = (props) => {
7
- const [menuParams, restProps] = createSplitProps()(props, [
9
+ const [presenceProps, menuProps] = splitPresenceProps(props);
10
+ const [useMenuProps, localProps] = createSplitProps()(menuProps, [
8
11
  'anchorPoint',
9
12
  'aria-label',
10
13
  'closeOnSelect',
@@ -20,32 +23,28 @@ export const Menu = (props) => {
20
23
  'onPointerDownOutside',
21
24
  'onSelect',
22
25
  'onValueChange',
26
+ 'open',
23
27
  'positioning',
24
28
  'value',
25
29
  ]);
26
30
  const parentMenu = useMenuContext();
27
31
  const parentMachine = useMenuMachineContext();
28
- const menu = useMenu(menuParams);
32
+ const menu = useMenu(useMenuProps);
33
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: menu().api().isOpen })));
29
34
  createEffect(() => {
30
35
  if (!parentMachine)
31
36
  return;
32
37
  parentMenu?.().setChild(menu().machine);
33
38
  menu().api().setParent(parentMachine());
34
39
  });
35
- createEffect(() => {
36
- if (!restProps.isOpen)
37
- return;
38
- restProps.isOpen?.() ? menu().api().open() : menu().api().close();
39
- });
40
40
  const triggerItemContext = createMemo(() => parentMenu?.().getTriggerItemProps(menu().api()));
41
41
  const machineContext = () => menu().machine;
42
- const getChildren = () => runIfFn(restProps.children, () => ({
43
- isOpen: menu?.().api().isOpen,
44
- onClose: menu?.().api().close,
45
- }));
42
+ const getChildren = () => runIfFn(localProps.children, menu().api);
46
43
  return (<MenuTriggerItemProvider value={triggerItemContext}>
47
44
  <MenuMachineProvider value={machineContext}>
48
- <MenuProvider value={menu().api}>{getChildren()}</MenuProvider>
45
+ <MenuProvider value={menu().api}>
46
+ <PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
47
+ </MenuProvider>
49
48
  </MenuMachineProvider>
50
49
  </MenuTriggerItemProvider>);
51
50
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputControl = (props) => {
5
5
  const api = useNumberInputContext();
6
- const controlProps = mergeProps(() => api().controlProps, props);
7
- return <ark.div {...controlProps}/>;
6
+ const mergedProps = mergeProps(() => api().controlProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputDecrementTrigger = (props) => {
5
5
  const api = useNumberInputContext();
6
- const triggerProps = mergeProps(() => api().decrementTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => api().decrementTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputInput = (props) => {
5
5
  const api = useNumberInputContext();
6
- const inputProps = mergeProps(() => api().inputProps, props);
7
- return <ark.input {...inputProps}/>;
6
+ const mergedProps = mergeProps(() => api().inputProps, props);
7
+ return <ark.input {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputIncrementTrigger = (props) => {
5
5
  const api = useNumberInputContext();
6
- const triggerProps = mergeProps(() => api().incrementTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => api().incrementTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputLabel = (props) => {
5
5
  const api = useNumberInputContext();
6
- const labelProps = mergeProps(() => api().labelProps, props);
7
- return <ark.label {...labelProps}/>;
6
+ const mergedProps = mergeProps(() => api().labelProps, props);
7
+ return <ark.label {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useNumberInputContext } from './number-input-context';
4
4
  export const NumberInputScrubber = (props) => {
5
5
  const api = useNumberInputContext();
6
- const scrubberProps = mergeProps(() => api().scrubberProps, props);
7
- return <ark.div {...scrubberProps}/>;
6
+ const mergedProps = mergeProps(() => api().scrubberProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -33,8 +33,8 @@ export const NumberInput = (props) => {
33
33
  'value',
34
34
  ]);
35
35
  const api = useNumberInput(useNumberInputProps);
36
- const rootProps = mergeProps(() => api().rootProps, localProps);
36
+ const mergedProps = mergeProps(() => api().rootProps, localProps);
37
37
  return (<NumberInputProvider value={api}>
38
- <ark.div {...rootProps}/>
38
+ <ark.div {...mergedProps}/>
39
39
  </NumberInputProvider>);
40
40
  };
@@ -22,8 +22,8 @@ export const Pagination = (props) => {
22
22
  const [childrenProps, localProps] = splitProps(restProps, ['children']);
23
23
  const api = usePagination(paginationParams);
24
24
  const getChildren = () => runIfFn(childrenProps.children, api);
25
- const rootProps = mergeProps(() => api().rootProps, localProps);
25
+ const mergedProps = mergeProps(() => api().rootProps, localProps);
26
26
  return (<PaginationProvider value={api}>
27
- <ark.nav {...rootProps}>{getChildren()}</ark.nav>
27
+ <ark.nav {...mergedProps}>{getChildren()}</ark.nav>
28
28
  </PaginationProvider>);
29
29
  };
@@ -5,6 +5,6 @@ import { usePinInputContext } from './pin-input-context';
5
5
  export const PinInputInput = (props) => {
6
6
  const [inputParams, localProps] = splitProps(props, ['index']);
7
7
  const api = usePinInputContext();
8
- const inputProps = mergeProps(() => api().getInputProps(inputParams), localProps);
9
- return <ark.input {...inputProps}/>;
8
+ const mergedProps = mergeProps(() => api().getInputProps(inputParams), localProps);
9
+ return <ark.input {...mergedProps}/>;
10
10
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePinInputContext } from './pin-input-context';
4
4
  export const PinInputLabel = (props) => {
5
5
  const api = usePinInputContext();
6
- const labelProps = mergeProps(() => api().labelProps, props);
7
- return <ark.label {...labelProps}/>;
6
+ const mergedProps = mergeProps(() => api().labelProps, props);
7
+ return <ark.label {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverAnchor = (props) => {
5
5
  const api = usePopoverContext();
6
- const anchorProps = mergeProps(() => api().anchorProps, props);
7
- return <ark.div {...anchorProps}/>;
6
+ const mergedProps = mergeProps(() => api().anchorProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverArrowTip = (props) => {
5
5
  const popover = usePopoverContext();
6
- const arrowTipProps = mergeProps(() => popover().arrowTipProps, props);
7
- return <ark.div {...arrowTipProps}/>;
6
+ const mergedProps = mergeProps(() => popover().arrowTipProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverArrow = (props) => {
5
5
  const popover = usePopoverContext();
6
- const arrowProps = mergeProps(() => popover().arrowProps, props);
7
- return <ark.div {...arrowProps}/>;
6
+ const mergedProps = mergeProps(() => popover().arrowProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverCloseTrigger = (props) => {
5
5
  const api = usePopoverContext();
6
- const triggerProps = mergeProps(() => api().closeTriggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => api().closeTriggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -1,12 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
3
- import { Presence, splitPresenceProps } from '../presence';
4
+ import { usePresenceContext } from '../presence';
4
5
  import { usePopoverContext } from './popover-context';
5
6
  export const PopoverContent = (props) => {
6
- const [presenceProps, localProps] = splitPresenceProps(props);
7
7
  const api = usePopoverContext();
8
- const mergedProps = mergeProps(() => api().contentProps, localProps);
9
- return (<Presence present={api().isOpen} {...presenceProps} fallback={<div {...api().contentProps}/>}>
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
10
11
  <ark.div {...mergedProps}/>
11
- </Presence>);
12
+ </Show>);
12
13
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverDescription = (props) => {
5
5
  const api = usePopoverContext();
6
- const descriptionProps = mergeProps(() => api().descriptionProps, props);
7
- return <ark.div {...descriptionProps}/>;
6
+ const mergedProps = mergeProps(() => api().descriptionProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -1,8 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { ark } from '../factory';
4
+ import { usePresenceContext } from '../presence';
3
5
  import { usePopoverContext } from './popover-context';
4
6
  export const PopoverPositioner = (props) => {
5
7
  const api = usePopoverContext();
6
- const positionerProps = mergeProps(() => api().positionerProps, props);
7
- return <ark.div {...positionerProps}/>;
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().positionerProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
11
+ <ark.div {...mergedProps}/>
12
+ </Show>);
8
13
  };