@ark-ui/solid 1.0.0-beta.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/cjs/index.js +659 -381
  3. package/cjs/index.js.map +1 -1
  4. package/esm/index.js +655 -383
  5. package/esm/index.js.map +1 -1
  6. package/package.json +45 -45
  7. package/source/accordion/accordion-item-content.jsx +7 -6
  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 +7 -2
  17. package/source/color-picker/color-picker-positioner.jsx +6 -1
  18. package/source/color-picker/color-picker-value-text.jsx +9 -0
  19. package/source/color-picker/color-picker-view.jsx +13 -0
  20. package/source/color-picker/color-picker.jsx +8 -3
  21. package/source/color-picker/index.js +5 -1
  22. package/source/combobox/combobox-content.jsx +6 -5
  23. package/source/combobox/combobox-item-group-label.jsx +2 -2
  24. package/source/combobox/combobox-positioner.jsx +8 -3
  25. package/source/combobox/combobox.jsx +8 -3
  26. package/source/date-picker/date-picker-content.jsx +7 -2
  27. package/source/date-picker/date-picker-positioner.jsx +6 -1
  28. package/source/date-picker/date-picker-view.jsx +4 -1
  29. package/source/date-picker/date-picker.jsx +9 -4
  30. package/source/dialog/dialog-backdrop.jsx +6 -5
  31. package/source/dialog/dialog-close-trigger.jsx +2 -2
  32. package/source/dialog/dialog-content.jsx +6 -5
  33. package/source/dialog/dialog-description.jsx +2 -2
  34. package/source/dialog/dialog-positioner.jsx +8 -3
  35. package/source/dialog/dialog-title.jsx +2 -2
  36. package/source/dialog/dialog-trigger.jsx +6 -3
  37. package/source/dialog/dialog.jsx +9 -3
  38. package/source/editable/editable-area.jsx +2 -2
  39. package/source/editable/editable-cancel-trigger.jsx +2 -2
  40. package/source/editable/editable-control.jsx +2 -2
  41. package/source/editable/editable-edit-trigger.jsx +2 -2
  42. package/source/editable/editable-input.jsx +2 -2
  43. package/source/editable/editable-label.jsx +2 -2
  44. package/source/editable/editable-preview.jsx +2 -2
  45. package/source/editable/editable-submit-trigger.jsx +2 -2
  46. package/source/editable/editable.jsx +2 -2
  47. package/source/hover-card/hover-card-arrow-tip.jsx +2 -2
  48. package/source/hover-card/hover-card-arrow.jsx +2 -2
  49. package/source/hover-card/hover-card-content.jsx +6 -5
  50. package/source/hover-card/hover-card-positioner.jsx +8 -3
  51. package/source/hover-card/hover-card-trigger.jsx +2 -2
  52. package/source/hover-card/hover-card.jsx +9 -3
  53. package/source/menu/menu-arrow-tip.jsx +2 -2
  54. package/source/menu/menu-arrow.jsx +2 -2
  55. package/source/menu/menu-content.jsx +6 -5
  56. package/source/menu/menu-context-trigger.jsx +2 -2
  57. package/source/menu/menu-item-group-label.jsx +3 -5
  58. package/source/menu/menu-item-group.jsx +2 -2
  59. package/source/menu/menu-item.jsx +2 -2
  60. package/source/menu/menu-option-item.jsx +2 -2
  61. package/source/menu/menu-positioner.jsx +8 -3
  62. package/source/menu/menu-separator.jsx +2 -2
  63. package/source/menu/menu-trigger-item.jsx +2 -2
  64. package/source/menu/menu-trigger.jsx +2 -2
  65. package/source/menu/menu.jsx +11 -12
  66. package/source/number-input/number-input-control.jsx +2 -2
  67. package/source/number-input/number-input-decrement-trigger.jsx +2 -2
  68. package/source/number-input/number-input-field.jsx +2 -2
  69. package/source/number-input/number-input-increment-trigger.jsx +2 -2
  70. package/source/number-input/number-input-label.jsx +2 -2
  71. package/source/number-input/number-input-scrubber.jsx +2 -2
  72. package/source/number-input/number-input.jsx +2 -2
  73. package/source/pagination/pagination.jsx +2 -2
  74. package/source/pin-input/pin-input-field.jsx +2 -2
  75. package/source/pin-input/pin-input-label.jsx +2 -2
  76. package/source/popover/popover-anchor.jsx +2 -2
  77. package/source/popover/popover-arrow-tip.jsx +2 -2
  78. package/source/popover/popover-arrow.jsx +2 -2
  79. package/source/popover/popover-close-trigger.jsx +2 -2
  80. package/source/popover/popover-content.jsx +6 -5
  81. package/source/popover/popover-description.jsx +2 -2
  82. package/source/popover/popover-positioner.jsx +7 -2
  83. package/source/popover/popover-title.jsx +2 -2
  84. package/source/popover/popover-trigger.jsx +5 -2
  85. package/source/popover/popover.jsx +10 -2
  86. package/source/presence/index.js +4 -1
  87. package/source/presence/presence-context.js +5 -0
  88. package/source/presence/presence-props-context.js +5 -0
  89. package/source/presence/presence.jsx +9 -28
  90. package/source/presence/use-presence.js +21 -4
  91. package/source/rating-group/rating-group-item.jsx +5 -4
  92. package/source/select/select-content.jsx +6 -5
  93. package/source/select/select-control.jsx +9 -1
  94. package/source/select/select-item-group-label.jsx +2 -2
  95. package/source/select/select-positioner.jsx +6 -1
  96. package/source/select/select.jsx +8 -3
  97. package/source/slider/index.js +3 -3
  98. package/source/slider/slider-thumb.jsx +2 -2
  99. package/source/slider/slider-value-text.jsx +10 -0
  100. package/source/splitter/splitter-panel.jsx +2 -2
  101. package/source/splitter/splitter-resize-trigger.jsx +2 -2
  102. package/source/splitter/splitter.jsx +2 -2
  103. package/source/switch/switch-label.jsx +2 -2
  104. package/source/switch/switch-thumb.jsx +2 -2
  105. package/source/tabs/tab-content.jsx +11 -8
  106. package/source/tabs/tab-indicator.jsx +2 -2
  107. package/source/tabs/tab-list.jsx +2 -2
  108. package/source/tabs/tab-trigger.jsx +2 -2
  109. package/source/tabs/tabs.jsx +7 -3
  110. package/source/toggle-group/toggle-group.jsx +2 -2
  111. package/source/tooltip/tooltip-arrow-tip.jsx +2 -2
  112. package/source/tooltip/tooltip-arrow.jsx +2 -2
  113. package/source/tooltip/tooltip-content.jsx +7 -6
  114. package/source/tooltip/tooltip-positioner.jsx +7 -2
  115. package/source/tooltip/tooltip-trigger.jsx +2 -2
  116. package/source/tooltip/tooltip.jsx +10 -2
  117. package/types/accordion/accordion-context.d.ts +3 -2
  118. package/types/accordion/accordion-item-content.d.ts +2 -2
  119. package/types/accordion/accordion-item-context.d.ts +3 -2
  120. package/types/accordion/accordion-item-indicator.d.ts +2 -1
  121. package/types/accordion/accordion-item-trigger.d.ts +2 -1
  122. package/types/accordion/accordion-item.d.ts +5 -4
  123. package/types/accordion/accordion.d.ts +3 -1
  124. package/types/accordion/use-accordion.d.ts +4 -2
  125. package/types/avatar/avatar-context.d.ts +3 -2
  126. package/types/avatar/avatar-fallback.d.ts +2 -1
  127. package/types/avatar/avatar-image.d.ts +2 -1
  128. package/types/avatar/avatar.d.ts +2 -1
  129. package/types/avatar/use-avatar.d.ts +4 -2
  130. package/types/carousel/carousel-context.d.ts +3 -2
  131. package/types/carousel/carousel-control.d.ts +2 -1
  132. package/types/carousel/carousel-indicator-group.d.ts +2 -1
  133. package/types/carousel/carousel-indicator.d.ts +2 -1
  134. package/types/carousel/carousel-next-trigger.d.ts +2 -1
  135. package/types/carousel/carousel-prev-trigger.d.ts +2 -1
  136. package/types/carousel/carousel-slide-group.d.ts +2 -1
  137. package/types/carousel/carousel-slide.d.ts +2 -1
  138. package/types/carousel/carousel-viewport.d.ts +2 -1
  139. package/types/carousel/carousel.d.ts +7 -3
  140. package/types/carousel/use-carousel.d.ts +4 -2
  141. package/types/checkbox/checkbox-context.d.ts +3 -2
  142. package/types/checkbox/checkbox-control.d.ts +2 -1
  143. package/types/checkbox/checkbox-indicator.d.ts +2 -1
  144. package/types/checkbox/checkbox-label.d.ts +2 -1
  145. package/types/checkbox/checkbox.d.ts +5 -5
  146. package/types/checkbox/use-checkbox.d.ts +4 -2
  147. package/types/color-picker/color-picker-transparency-grid.d.ts +2 -2
  148. package/types/color-picker/color-picker-value-text.d.ts +5 -0
  149. package/types/color-picker/color-picker-view.d.ts +7 -0
  150. package/types/color-picker/color-picker.d.ts +5 -3
  151. package/types/color-picker/index.d.ts +8 -4
  152. package/types/combobox/combobox-clear-trigger.d.ts +2 -1
  153. package/types/combobox/combobox-content.d.ts +2 -2
  154. package/types/combobox/combobox-context.d.ts +2 -1
  155. package/types/combobox/combobox-control.d.ts +2 -1
  156. package/types/combobox/combobox-input.d.ts +2 -1
  157. package/types/combobox/combobox-item-context.d.ts +3 -2
  158. package/types/combobox/combobox-item-group-label.d.ts +6 -2
  159. package/types/combobox/combobox-item-group.d.ts +2 -1
  160. package/types/combobox/combobox-item-indicator.d.ts +2 -1
  161. package/types/combobox/combobox-item-text.d.ts +2 -1
  162. package/types/combobox/combobox-item.d.ts +5 -4
  163. package/types/combobox/combobox-label.d.ts +2 -1
  164. package/types/combobox/combobox-positioner.d.ts +2 -1
  165. package/types/combobox/combobox-trigger.d.ts +2 -1
  166. package/types/combobox/combobox.d.ts +7 -6
  167. package/types/combobox/use-combobox.d.ts +2 -1
  168. package/types/date-picker/date-picker-context.d.ts +3 -2
  169. package/types/date-picker/date-picker-view.d.ts +4 -3
  170. package/types/date-picker/date-picker.d.ts +5 -3
  171. package/types/dialog/dialog-backdrop.d.ts +2 -2
  172. package/types/dialog/dialog-close-trigger.d.ts +2 -1
  173. package/types/dialog/dialog-content.d.ts +2 -2
  174. package/types/dialog/dialog-context.d.ts +3 -2
  175. package/types/dialog/dialog-description.d.ts +2 -1
  176. package/types/dialog/dialog-positioner.d.ts +2 -1
  177. package/types/dialog/dialog-title.d.ts +2 -1
  178. package/types/dialog/dialog-trigger.d.ts +2 -1
  179. package/types/dialog/dialog.d.ts +4 -3
  180. package/types/dialog/use-dialog.d.ts +4 -2
  181. package/types/editable/editable-area.d.ts +2 -1
  182. package/types/editable/editable-cancel-trigger.d.ts +2 -1
  183. package/types/editable/editable-context.d.ts +3 -2
  184. package/types/editable/editable-control.d.ts +2 -1
  185. package/types/editable/editable-edit-trigger.d.ts +2 -1
  186. package/types/editable/editable-input.d.ts +2 -1
  187. package/types/editable/editable-label.d.ts +2 -1
  188. package/types/editable/editable-preview.d.ts +2 -1
  189. package/types/editable/editable-submit-trigger.d.ts +2 -1
  190. package/types/editable/editable.d.ts +5 -5
  191. package/types/editable/use-editable.d.ts +4 -2
  192. package/types/environment/environment.d.ts +2 -2
  193. package/types/hover-card/hover-card-arrow-tip.d.ts +2 -1
  194. package/types/hover-card/hover-card-arrow.d.ts +2 -1
  195. package/types/hover-card/hover-card-content.d.ts +2 -2
  196. package/types/hover-card/hover-card-context.d.ts +3 -2
  197. package/types/hover-card/hover-card-positioner.d.ts +2 -1
  198. package/types/hover-card/hover-card-trigger.d.ts +2 -1
  199. package/types/hover-card/hover-card.d.ts +4 -3
  200. package/types/hover-card/use-hover-card.d.ts +4 -2
  201. package/types/menu/menu-arrow-tip.d.ts +2 -1
  202. package/types/menu/menu-arrow.d.ts +2 -1
  203. package/types/menu/menu-content.d.ts +2 -2
  204. package/types/menu/menu-context-trigger.d.ts +2 -1
  205. package/types/menu/menu-item-group-label.d.ts +5 -4
  206. package/types/menu/menu-item-group.d.ts +2 -1
  207. package/types/menu/menu-item.d.ts +2 -1
  208. package/types/menu/menu-option-item.d.ts +3 -2
  209. package/types/menu/menu-positioner.d.ts +2 -1
  210. package/types/menu/menu-separator.d.ts +2 -1
  211. package/types/menu/menu-trigger-item.d.ts +2 -1
  212. package/types/menu/menu-trigger.d.ts +2 -1
  213. package/types/menu/menu.d.ts +6 -9
  214. package/types/menu/use-menu.d.ts +2 -1
  215. package/types/number-input/number-input-context.d.ts +3 -2
  216. package/types/number-input/number-input-control.d.ts +2 -1
  217. package/types/number-input/number-input-decrement-trigger.d.ts +2 -1
  218. package/types/number-input/number-input-field.d.ts +2 -1
  219. package/types/number-input/number-input-increment-trigger.d.ts +2 -1
  220. package/types/number-input/number-input-label.d.ts +2 -1
  221. package/types/number-input/number-input-scrubber.d.ts +2 -1
  222. package/types/number-input/number-input.d.ts +2 -1
  223. package/types/number-input/use-number-input.d.ts +4 -2
  224. package/types/pagination/pagination-context.d.ts +3 -2
  225. package/types/pagination/pagination-ellipsis.d.ts +2 -1
  226. package/types/pagination/pagination-item.d.ts +2 -1
  227. package/types/pagination/pagination.d.ts +4 -3
  228. package/types/pagination/use-pagination.d.ts +4 -2
  229. package/types/pin-input/pin-input-context.d.ts +3 -2
  230. package/types/pin-input/pin-input-control.d.ts +2 -1
  231. package/types/pin-input/pin-input-field.d.ts +3 -2
  232. package/types/pin-input/pin-input-label.d.ts +2 -1
  233. package/types/pin-input/pin-input.d.ts +2 -1
  234. package/types/pin-input/use-pin-input.d.ts +4 -2
  235. package/types/popover/popover-anchor.d.ts +2 -1
  236. package/types/popover/popover-arrow-tip.d.ts +2 -1
  237. package/types/popover/popover-arrow.d.ts +2 -1
  238. package/types/popover/popover-close-trigger.d.ts +2 -1
  239. package/types/popover/popover-content.d.ts +2 -2
  240. package/types/popover/popover-context.d.ts +3 -2
  241. package/types/popover/popover-description.d.ts +2 -1
  242. package/types/popover/popover-indicator.d.ts +2 -1
  243. package/types/popover/popover-positioner.d.ts +2 -1
  244. package/types/popover/popover-title.d.ts +2 -1
  245. package/types/popover/popover-trigger.d.ts +2 -1
  246. package/types/popover/popover.d.ts +5 -4
  247. package/types/popover/use-popover.d.ts +4 -2
  248. package/types/presence/index.d.ts +5 -2
  249. package/types/presence/presence-context.d.ts +4 -0
  250. package/types/presence/presence-props-context.d.ts +4 -0
  251. package/types/presence/presence.d.ts +4 -15
  252. package/types/presence/split-presence-props.d.ts +2 -2
  253. package/types/presence/use-presence.d.ts +23 -2
  254. package/types/radio-group/radio-group-context.d.ts +3 -2
  255. package/types/radio-group/radio-group-indicator.d.ts +2 -1
  256. package/types/radio-group/radio-group-item-context.d.ts +3 -2
  257. package/types/radio-group/radio-group-item-control.d.ts +2 -1
  258. package/types/radio-group/radio-group-item-text.d.ts +2 -1
  259. package/types/radio-group/radio-group-item.d.ts +2 -1
  260. package/types/radio-group/radio-group-label.d.ts +2 -1
  261. package/types/radio-group/radio-group.d.ts +2 -1
  262. package/types/radio-group/use-radio-group.d.ts +4 -2
  263. package/types/rating-group/rating-group-context.d.ts +3 -2
  264. package/types/rating-group/rating-group-control.d.ts +6 -5
  265. package/types/rating-group/rating-group-item-context.d.ts +4 -2
  266. package/types/rating-group/rating-group-item.d.ts +6 -6
  267. package/types/rating-group/rating-group-label.d.ts +2 -1
  268. package/types/rating-group/rating-group.d.ts +2 -1
  269. package/types/rating-group/use-rating-group.d.ts +4 -2
  270. package/types/segment-group/segment-group-context.d.ts +3 -2
  271. package/types/segment-group/segment-group-indicator.d.ts +2 -1
  272. package/types/segment-group/segment-group-item-control.d.ts +2 -1
  273. package/types/segment-group/segment-group-item-text.d.ts +2 -1
  274. package/types/segment-group/segment-group-item.d.ts +2 -1
  275. package/types/segment-group/segment-group-label.d.ts +2 -1
  276. package/types/segment-group/segment-group.d.ts +2 -1
  277. package/types/segment-group/use-segment-group.d.ts +4 -2
  278. package/types/select/select-clear-trigger.d.ts +2 -1
  279. package/types/select/select-content.d.ts +2 -2
  280. package/types/select/select-context.d.ts +2 -1
  281. package/types/select/select-control.d.ts +2 -1
  282. package/types/select/select-indicator.d.ts +2 -1
  283. package/types/select/select-item-context.d.ts +2 -1
  284. package/types/select/select-item-group-label.d.ts +6 -2
  285. package/types/select/select-item-group.d.ts +2 -1
  286. package/types/select/select-item-indicator.d.ts +2 -1
  287. package/types/select/select-item-text.d.ts +2 -1
  288. package/types/select/select-item.d.ts +5 -4
  289. package/types/select/select-label.d.ts +2 -1
  290. package/types/select/select-positioner.d.ts +2 -1
  291. package/types/select/select-trigger.d.ts +2 -1
  292. package/types/select/select.d.ts +7 -6
  293. package/types/select/use-select.d.ts +2 -1
  294. package/types/slider/index.d.ts +4 -4
  295. package/types/slider/slider-context.d.ts +3 -2
  296. package/types/slider/slider-control.d.ts +2 -1
  297. package/types/slider/slider-label.d.ts +2 -1
  298. package/types/slider/slider-marker-group.d.ts +2 -1
  299. package/types/slider/slider-marker.d.ts +2 -1
  300. package/types/slider/slider-range.d.ts +2 -1
  301. package/types/slider/slider-thumb.d.ts +2 -1
  302. package/types/slider/slider-track.d.ts +2 -1
  303. package/types/slider/slider-value-text.d.ts +4 -0
  304. package/types/slider/slider.d.ts +4 -3
  305. package/types/slider/use-slider.d.ts +4 -2
  306. package/types/splitter/splitter-context.d.ts +3 -2
  307. package/types/splitter/splitter-panel.d.ts +2 -1
  308. package/types/splitter/splitter-resize-trigger.d.ts +2 -1
  309. package/types/splitter/splitter.d.ts +4 -3
  310. package/types/splitter/use-splitter.d.ts +4 -2
  311. package/types/switch/switch-context.d.ts +3 -2
  312. package/types/switch/switch-control.d.ts +2 -1
  313. package/types/switch/switch-label.d.ts +2 -1
  314. package/types/switch/switch-thumb.d.ts +2 -1
  315. package/types/switch/switch.d.ts +5 -5
  316. package/types/switch/use-switch.d.ts +4 -2
  317. package/types/tabs/tab-content.d.ts +2 -2
  318. package/types/tabs/tab-indicator.d.ts +2 -1
  319. package/types/tabs/tab-list.d.ts +2 -1
  320. package/types/tabs/tab-trigger.d.ts +2 -1
  321. package/types/tabs/tabs-context.d.ts +3 -2
  322. package/types/tabs/tabs.d.ts +3 -1
  323. package/types/tabs/use-tabs.d.ts +4 -2
  324. package/types/tags-input/tags-input-clear-trigger.d.ts +2 -1
  325. package/types/tags-input/tags-input-context.d.ts +3 -2
  326. package/types/tags-input/tags-input-control.d.ts +2 -1
  327. package/types/tags-input/tags-input-input.d.ts +2 -1
  328. package/types/tags-input/tags-input-item-context.d.ts +3 -2
  329. package/types/tags-input/tags-input-item-delete-trigger.d.ts +2 -1
  330. package/types/tags-input/tags-input-item-input.d.ts +2 -1
  331. package/types/tags-input/tags-input-item-text.d.ts +2 -1
  332. package/types/tags-input/tags-input-item.d.ts +5 -4
  333. package/types/tags-input/tags-input-label.d.ts +2 -1
  334. package/types/tags-input/tags-input.d.ts +5 -5
  335. package/types/tags-input/use-tags-input.d.ts +4 -2
  336. package/types/toast/toast-close-trigger.d.ts +2 -1
  337. package/types/toast/toast-description.d.ts +2 -1
  338. package/types/toast/toast-title.d.ts +2 -1
  339. package/types/toast/toast.d.ts +2 -1
  340. package/types/toggle-group/toggle-group-context.d.ts +3 -2
  341. package/types/toggle-group/toggle-group.d.ts +2 -1
  342. package/types/toggle-group/use-toggle-group.d.ts +4 -2
  343. package/types/tooltip/tooltip-arrow-tip.d.ts +2 -1
  344. package/types/tooltip/tooltip-arrow.d.ts +2 -1
  345. package/types/tooltip/tooltip-content.d.ts +2 -2
  346. package/types/tooltip/tooltip-context.d.ts +3 -2
  347. package/types/tooltip/tooltip-positioner.d.ts +2 -1
  348. package/types/tooltip/tooltip-trigger.d.ts +2 -1
  349. package/types/tooltip/tooltip.d.ts +6 -5
  350. package/types/tooltip/use-tooltip.d.ts +4 -2
  351. package/source/slider/slider-output.jsx +0 -10
  352. package/source/tabs/tab-presence.jsx +0 -6
  353. package/types/slider/slider-output.d.ts +0 -8
  354. package/types/tabs/tab-presence.d.ts +0 -4
  355. /package/source/date-picker/{use-date-picker.jsx → use-date-picker.js} +0 -0
  356. /package/source/radio-group/{use-radio-group.jsx → use-radio-group.js} +0 -0
  357. /package/source/rating-group/{use-rating-group.jsx → use-rating-group.js} +0 -0
  358. /package/source/segment-group/{use-segment-group.jsx → use-segment-group.js} +0 -0
@@ -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}>
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
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { usePopoverContext } from './popover-context';
4
4
  export const PopoverTitle = (props) => {
5
5
  const api = usePopoverContext();
6
- const titleProps = mergeProps(() => api().titleProps, props);
7
- return <ark.div {...titleProps}/>;
6
+ const mergedProps = mergeProps(() => api().titleProps, 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 { usePopoverContext } from './popover-context';
4
5
  export const PopoverTrigger = (props) => {
5
6
  const api = usePopoverContext();
6
- const triggerProps = mergeProps(() => api().triggerProps, props);
7
- return <ark.button {...triggerProps}/>;
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,8 +1,12 @@
1
+ import { mergeProps } from '@zag-js/solid';
1
2
  import { createSplitProps } from '../create-split-props';
3
+ import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
4
+ import { runIfFn } from '../run-if-fn';
2
5
  import { PopoverProvider } from './popover-context';
3
6
  import { usePopover } from './use-popover';
4
7
  export const Popover = (props) => {
5
- const [usePopoverProps, restProps] = createSplitProps()(props, [
8
+ const [presenceProps, popoverProps] = splitPresenceProps(props);
9
+ const [usePopoverProps, localProps] = createSplitProps()(popoverProps, [
6
10
  'autoFocus',
7
11
  'closeOnEsc',
8
12
  'closeOnInteractOutside',
@@ -22,5 +26,9 @@ export const Popover = (props) => {
22
26
  'positioning',
23
27
  ]);
24
28
  const api = usePopover(usePopoverProps);
25
- return <PopoverProvider value={api}>{restProps.children}</PopoverProvider>;
29
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
30
+ const getChildren = () => runIfFn(localProps.children, api);
31
+ return (<PopoverProvider value={api}>
32
+ <PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
33
+ </PopoverProvider>);
26
34
  };
@@ -1,6 +1,9 @@
1
1
  import { Presence as PresenceRoot } from './presence';
2
+ import { PresenceProvider, usePresenceContext } from './presence-context';
3
+ import { PresencePropsProvider, usePresencePropsContext, } from './presence-props-context';
2
4
  import { splitPresenceProps } from './split-presence-props';
5
+ import { usePresence } from './use-presence';
3
6
  const Presence = Object.assign(PresenceRoot, {
4
7
  Root: PresenceRoot,
5
8
  });
6
- export { Presence, splitPresenceProps };
9
+ export { Presence, PresencePropsProvider, PresenceProvider, splitPresenceProps, usePresence, usePresenceContext, usePresencePropsContext, };
@@ -0,0 +1,5 @@
1
+ import { createContext } from '../create-context';
2
+ export const [PresenceProvider, usePresenceContext] = createContext({
3
+ hookName: 'usePresenceContext',
4
+ providerName: '<PresenceProvider />',
5
+ });
@@ -0,0 +1,5 @@
1
+ import { createContext } from '../create-context';
2
+ export const [PresencePropsProvider, usePresencePropsContext] = createContext({
3
+ hookName: 'usePresencePropsContext',
4
+ providerName: '<PresencePropsProvider />',
5
+ });
@@ -1,32 +1,13 @@
1
- import { children, createEffect, createSignal } from 'solid-js';
2
- import { spread } from 'solid-js/web';
3
- import { createSplitProps } from '../create-split-props';
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
3
+ import { ark } from '../factory';
4
+ import { splitPresenceProps } from './split-presence-props';
4
5
  import { usePresence } from './use-presence';
5
6
  export const Presence = (props) => {
6
- const [presenceProps, localProps] = createSplitProps()(props, [
7
- 'onExitComplete',
8
- 'present',
9
- ]);
7
+ const [presenceProps, localProps] = splitPresenceProps(props);
10
8
  const api = usePresence(presenceProps);
11
- const [wasEverPresent, setWasEverPresent] = createSignal(false);
12
- const getChildren = children(() => props.children);
13
- createEffect(() => {
14
- const isPresent = api().isPresent;
15
- if (isPresent)
16
- setWasEverPresent(true);
17
- const children = getChildren();
18
- if (children instanceof HTMLElement) {
19
- api().setNode(children);
20
- spread(children, {
21
- ['data-state']: presenceProps.present ? 'open' : 'closed',
22
- hidden: !api().isPresent,
23
- });
24
- }
25
- });
26
- return (<>
27
- {(!api().isPresent && !wasEverPresent() && localProps.lazyMount) ||
28
- (localProps.unmountOnExit && !api().isPresent && wasEverPresent())
29
- ? null
30
- : getChildren()}
31
- </>);
9
+ const mergedProps = mergeProps(() => api().presenceProps, localProps);
10
+ return (<Show when={!api().isUnmounted}>
11
+ <ark.div {...mergedProps} data-scope="presence" data-part="root"/>
12
+ </Show>);
32
13
  };
@@ -1,9 +1,26 @@
1
1
  import * as presence from '@zag-js/presence';
2
2
  import { normalizeProps, useMachine } from '@zag-js/solid';
3
- import { createMemo } from 'solid-js';
3
+ import { createEffect, createMemo, createSignal, splitProps } from 'solid-js';
4
4
  export const usePresence = (props) => {
5
- const [state, send] = useMachine(presence.machine(props), {
6
- context: props,
5
+ const [localProps, machineProps] = splitProps(props, ['lazyMount', 'unmountOnExit']);
6
+ const [wasEverPresent, setWasEverPresent] = createSignal(false);
7
+ const [state, send] = useMachine(presence.machine(machineProps), {
8
+ context: machineProps,
7
9
  });
8
- return createMemo(() => presence.connect(state, send, normalizeProps));
10
+ const api = createMemo(() => presence.connect(state, send, normalizeProps));
11
+ createEffect(() => {
12
+ const isPresent = api().isPresent;
13
+ if (isPresent)
14
+ setWasEverPresent(true);
15
+ });
16
+ return createMemo(() => ({
17
+ isUnmounted: (!api().isPresent && !wasEverPresent() && localProps.lazyMount) ||
18
+ (localProps.unmountOnExit && !api().isPresent && wasEverPresent()),
19
+ isPresent: api().isPresent,
20
+ presenceProps: {
21
+ ref: api().setNode,
22
+ hidden: !api().isPresent,
23
+ 'data-state': machineProps.present ? 'open' : 'closed',
24
+ },
25
+ }));
9
26
  };
@@ -1,15 +1,16 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { createMemo } from 'solid-js';
2
3
  import { createSplitProps } from '../create-split-props';
3
4
  import { ark } from '../factory';
4
5
  import { runIfFn } from '../run-if-fn';
5
6
  import { useRatingGroupContext } from './rating-group-context';
6
7
  import { RatingGroupItemProvider } from './rating-group-item-context';
7
8
  export const RatingGroupItem = (props) => {
8
- const [ratingParams, restProps] = createSplitProps()(props, ['index']);
9
+ const [itemProps, localProps] = createSplitProps()(props, ['index']);
9
10
  const api = useRatingGroupContext();
10
- const itemState = api().getItemState(ratingParams);
11
- const mergedProps = mergeProps(() => api().getItemProps(ratingParams), restProps);
12
- const getChildren = () => runIfFn(restProps.children, itemState);
11
+ const itemState = createMemo(() => api().getItemState(itemProps));
12
+ const getChildren = () => runIfFn(localProps.children, itemState);
13
+ const mergedProps = mergeProps(() => api().getItemProps(itemProps), localProps);
13
14
  return (<RatingGroupItemProvider value={itemState}>
14
15
  <ark.span {...mergedProps}>{getChildren()}</ark.span>
15
16
  </RatingGroupItemProvider>);
@@ -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 { useSelectContext } from './select-context';
5
6
  export const SelectContent = (props) => {
6
- const [presenceProps, localProps] = splitPresenceProps(props);
7
7
  const api = useSelectContext();
8
- const mergedProps = mergeProps(() => api().contentProps, localProps);
9
- return (<Presence present={api().isOpen} {...presenceProps}>
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,16 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Index } from 'solid-js';
2
3
  import { ark } from '../factory';
3
4
  import { useSelectContext } from './select-context';
4
5
  export const SelectControl = (props) => {
5
6
  const api = useSelectContext();
6
7
  const mergedProps = mergeProps(() => api().controlProps, props);
7
- return <ark.div {...mergedProps}/>;
8
+ return (<>
9
+ <ark.div {...mergedProps}/>
10
+ <select {...api().hiddenSelectProps}>
11
+ <Index each={api().collection.toArray()}>
12
+ {(option) => <option value={option().value}>{option().label}</option>}
13
+ </Index>
14
+ </select>
15
+ </>);
8
16
  };
@@ -3,8 +3,8 @@ import { createSplitProps } from '../create-split-props';
3
3
  import { ark } from '../factory';
4
4
  import { useSelectContext } from './select-context';
5
5
  export const SelectItemGroupLabel = (props) => {
6
- const [labelProps, localProps] = createSplitProps()(props, ['htmlFor']);
6
+ const [labelProps, localProps] = createSplitProps()(props, ['for']);
7
7
  const api = useSelectContext();
8
- const mergedProps = mergeProps(() => api().getItemGroupLabelProps(labelProps), localProps);
8
+ const mergedProps = mergeProps(() => api().getItemGroupLabelProps({ htmlFor: labelProps.for }), localProps);
9
9
  return <ark.div {...mergedProps}/>;
10
10
  };
@@ -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 { useSelectContext } from './select-context';
4
6
  export const SelectPositioner = (props) => {
5
7
  const api = useSelectContext();
8
+ const presenceApi = usePresenceContext();
6
9
  const mergedProps = mergeProps(() => api().positionerProps, props);
7
- return <ark.div {...mergedProps}/>;
10
+ return (<Show when={!presenceApi().isUnmounted}>
11
+ <ark.div {...mergedProps}/>
12
+ </Show>);
8
13
  };
@@ -1,11 +1,13 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
2
  import { createSplitProps } from '../create-split-props';
3
3
  import { ark } from '../factory';
4
+ import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
4
5
  import { runIfFn } from '../run-if-fn';
5
6
  import { SelectProvider } from './select-context';
6
7
  import { useSelect } from './use-select';
7
8
  export const Select = (props) => {
8
- const [selectProps, localProps] = createSplitProps()(props, [
9
+ const [presenceProps, selectProps] = splitPresenceProps(props);
10
+ const [useSelectProps, localProps] = createSplitProps()(selectProps, [
9
11
  'closeOnSelect',
10
12
  'dir',
11
13
  'disabled',
@@ -34,10 +36,13 @@ export const Select = (props) => {
34
36
  'selectOnBlur',
35
37
  'value',
36
38
  ]);
37
- const api = useSelect(selectProps);
39
+ const api = useSelect(useSelectProps);
40
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
38
41
  const mergedProps = mergeProps(() => api().rootProps, localProps);
39
42
  const getChildren = () => runIfFn(localProps.children, api);
40
43
  return (<SelectProvider value={api}>
41
- <ark.div {...mergedProps}>{getChildren()}</ark.div>
44
+ <PresenceProvider value={apiPresence}>
45
+ <ark.div {...mergedProps}>{getChildren()}</ark.div>
46
+ </PresenceProvider>
42
47
  </SelectProvider>);
43
48
  };
@@ -4,19 +4,19 @@ import { SliderControl } from './slider-control';
4
4
  import { SliderLabel } from './slider-label';
5
5
  import { SliderMarker } from './slider-marker';
6
6
  import { SliderMarkerGroup } from './slider-marker-group';
7
- import { SliderOutput } from './slider-output';
8
7
  import { SliderRange } from './slider-range';
9
8
  import { SliderThumb } from './slider-thumb';
10
9
  import { SliderTrack } from './slider-track';
10
+ import { SliderValueText } from './slider-value-text';
11
11
  const Slider = Object.assign(SliderRoot, {
12
12
  Root: SliderRoot,
13
13
  Control: SliderControl,
14
14
  Label: SliderLabel,
15
15
  Marker: SliderMarker,
16
16
  MarkerGroup: SliderMarkerGroup,
17
- Output: SliderOutput,
18
17
  Range: SliderRange,
19
18
  Thumb: SliderThumb,
20
19
  Track: SliderTrack,
20
+ ValueText: SliderValueText,
21
21
  });
22
- export { Slider, SliderControl, SliderLabel, SliderMarker, SliderMarkerGroup, SliderOutput, SliderRange, SliderThumb, SliderTrack, useSliderContext, };
22
+ export { Slider, SliderControl, SliderLabel, SliderMarker, SliderMarkerGroup, SliderRange, SliderThumb, SliderTrack, SliderValueText, useSliderContext, };
@@ -5,6 +5,6 @@ import { useSliderContext } from './slider-context';
5
5
  export const SliderThumb = (props) => {
6
6
  const [thumbProps, localProps] = createSplitProps()(props, ['index']);
7
7
  const api = useSliderContext();
8
- const mergePdrops = mergeProps(() => api().getThumbProps(thumbProps), localProps);
9
- return <ark.div {...mergePdrops}/>;
8
+ const mergedProps = mergeProps(() => api().getThumbProps(thumbProps), localProps);
9
+ return <ark.div {...mergedProps}/>;
10
10
  };
@@ -0,0 +1,10 @@
1
+ import { mergeProps } from '@zag-js/solid';
2
+ import { children } from 'solid-js';
3
+ import { ark } from '../factory';
4
+ import { useSliderContext } from './slider-context';
5
+ export const SliderValueText = (props) => {
6
+ const api = useSliderContext();
7
+ const mergedProps = mergeProps(() => api().valueTextProps, props);
8
+ const getChildren = children(() => props.children);
9
+ return <ark.div {...mergedProps}>{getChildren() || api().value.join(',')}</ark.div>;
10
+ };
@@ -5,6 +5,6 @@ import { useSplitterContext } from './splitter-context';
5
5
  export const SplitterPanel = (props) => {
6
6
  const [panelParams, restProps] = createSplitProps()(props, ['id', 'snapSize']);
7
7
  const api = useSplitterContext();
8
- const panelProps = mergeProps(() => api().getPanelProps(panelParams), restProps);
9
- return <ark.div {...panelProps}/>;
8
+ const mergedProps = mergeProps(() => api().getPanelProps(panelParams), restProps);
9
+ return <ark.div {...mergedProps}/>;
10
10
  };
@@ -9,6 +9,6 @@ export const SplitterResizeTrigger = (props) => {
9
9
  'id',
10
10
  'step',
11
11
  ]);
12
- const triggerProps = mergeProps(() => api().getResizeTriggerProps(triggerParams), restProps);
13
- return <ark.button {...triggerProps}/>;
12
+ const mergedProps = mergeProps(() => api().getResizeTriggerProps(triggerParams), restProps);
13
+ return <ark.button {...mergedProps}/>;
14
14
  };
@@ -18,8 +18,8 @@ export const Splitter = (props) => {
18
18
  ]);
19
19
  const api = useSplitter(splitterParams);
20
20
  const getChildren = () => runIfFn(localProps.children, api);
21
- const rootProps = mergeProps(() => api().rootProps, localProps);
21
+ const mergedProps = mergeProps(() => api().rootProps, localProps);
22
22
  return (<SplitterProvider value={api}>
23
- <ark.div {...rootProps}>{getChildren()}</ark.div>
23
+ <ark.div {...mergedProps}>{getChildren()}</ark.div>
24
24
  </SplitterProvider>);
25
25
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useSwitchContext } from './switch-context';
4
4
  export const SwitchLabel = (props) => {
5
5
  const checkbox = useSwitchContext();
6
- const labelProps = mergeProps(() => checkbox().labelProps, props);
7
- return <ark.span {...labelProps}/>;
6
+ const mergedProps = mergeProps(() => checkbox().labelProps, props);
7
+ return <ark.span {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useSwitchContext } from './switch-context';
4
4
  export const SwitchThumb = (props) => {
5
5
  const checkbox = useSwitchContext();
6
- const thumbProps = mergeProps(() => checkbox().thumbProps, props);
7
- return <ark.span {...thumbProps}/>;
6
+ const mergedProps = mergeProps(() => checkbox().thumbProps, props);
7
+ return <ark.span {...mergedProps}/>;
8
8
  };
@@ -1,15 +1,18 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
+ import { Show } from 'solid-js';
2
3
  import { createSplitProps } from '../create-split-props';
3
4
  import { ark } from '../factory';
4
- import { splitPresenceProps } from '../presence';
5
- import { TabPresence } from './tab-presence';
5
+ import { PresenceProvider, usePresence, usePresencePropsContext } from '../presence';
6
6
  import { useTabsContext } from './tabs-context';
7
7
  export const TabContent = (props) => {
8
- const [presenceProps, localProps] = splitPresenceProps(props);
9
- const [getContentProps, restProps] = createSplitProps()(localProps, ['value']);
8
+ const [contentProps, localProps] = createSplitProps()(props, ['value']);
10
9
  const api = useTabsContext();
11
- const contentProps = mergeProps(() => api().getContentProps(getContentProps), restProps);
12
- return (<TabPresence {...presenceProps} {...getContentProps}>
13
- <ark.div {...contentProps}/>
14
- </TabPresence>);
10
+ const presenceProps = usePresencePropsContext();
11
+ const presenceApi = usePresence(mergeProps(presenceProps, () => ({ present: api().value === contentProps.value })));
12
+ const mergedProps = mergeProps(() => api().getContentProps(contentProps), () => presenceApi().presenceProps, localProps);
13
+ return (<PresenceProvider value={presenceApi}>
14
+ <Show when={!presenceApi().isUnmounted}>
15
+ <ark.div {...mergedProps}/>
16
+ </Show>
17
+ </PresenceProvider>);
15
18
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useTabsContext } from './tabs-context';
4
4
  export const TabIndicator = (props) => {
5
5
  const api = useTabsContext();
6
- const indicatorProps = mergeProps(() => api().indicatorProps, props);
7
- return <ark.div {...indicatorProps}/>;
6
+ const mergedProps = mergeProps(() => api().indicatorProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useTabsContext } from './tabs-context';
4
4
  export const TabList = (props) => {
5
5
  const api = useTabsContext();
6
- const tablistProps = mergeProps(() => api().tablistProps, props);
7
- return <ark.div {...tablistProps}/>;
6
+ const mergedProps = mergeProps(() => api().tablistProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -5,6 +5,6 @@ import { useTabsContext } from './tabs-context';
5
5
  export const TabTrigger = (props) => {
6
6
  const [tabParams, restProps] = createSplitProps()(props, ['disabled', 'value']);
7
7
  const api = useTabsContext();
8
- const triggerProps = mergeProps(() => api().getTriggerProps(tabParams), restProps);
9
- return <ark.button {...triggerProps}/>;
8
+ const mergedProps = mergeProps(() => api().getTriggerProps(tabParams), restProps);
9
+ return <ark.button {...mergedProps}/>;
10
10
  };
@@ -1,10 +1,12 @@
1
1
  import { mergeProps } from '@zag-js/solid';
2
2
  import { createSplitProps } from '../create-split-props';
3
3
  import { ark } from '../factory';
4
+ import { PresencePropsProvider, splitPresenceProps } from '../presence';
4
5
  import { TabsProvider } from './tabs-context';
5
6
  import { useTabs } from './use-tabs';
6
7
  export const Tabs = (props) => {
7
- const [tabsParams, restProps] = createSplitProps()(props, [
8
+ const [presenceProps, tabsProps] = splitPresenceProps(props);
9
+ const [tabsParams, restProps] = createSplitProps()(tabsProps, [
8
10
  'activationMode',
9
11
  'dir',
10
12
  'getRootNode',
@@ -18,8 +20,10 @@ export const Tabs = (props) => {
18
20
  'value',
19
21
  ]);
20
22
  const api = useTabs(tabsParams);
21
- const rootProps = mergeProps(() => api().rootProps, restProps);
23
+ const mergedProps = mergeProps(() => api().rootProps, restProps);
22
24
  return (<TabsProvider value={api}>
23
- <ark.div {...rootProps}/>
25
+ <PresencePropsProvider value={presenceProps}>
26
+ <ark.div {...mergedProps}/>
27
+ </PresencePropsProvider>
24
28
  </TabsProvider>);
25
29
  };
@@ -18,8 +18,8 @@ export const ToggleGroup = (props) => {
18
18
  'value',
19
19
  ]);
20
20
  const api = useToggleGroup(groupParams);
21
- const rootProps = mergeProps(() => api().rootProps, restProps);
21
+ const mergedProps = mergeProps(() => api().rootProps, restProps);
22
22
  return (<ToggleGroupProvider value={api}>
23
- <ark.div {...rootProps}/>
23
+ <ark.div {...mergedProps}/>
24
24
  </ToggleGroupProvider>);
25
25
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useTooltipContext } from './tooltip-context';
4
4
  export const TooltipArrowTip = (props) => {
5
5
  const api = useTooltipContext();
6
- const arrowTipProps = mergeProps(() => api().arrowTipProps, props);
7
- return <ark.div {...arrowTipProps}/>;
6
+ const mergedProps = mergeProps(() => api().arrowTipProps, props);
7
+ return <ark.div {...mergedProps}/>;
8
8
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useTooltipContext } from './tooltip-context';
4
4
  export const TooltipArrow = (props) => {
5
5
  const tooltip = useTooltipContext();
6
- const arrowProps = mergeProps(() => tooltip().arrowProps, props);
7
- return <ark.div {...arrowProps}/>;
6
+ const mergedProps = mergeProps(() => tooltip().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 { useTooltipContext } from './tooltip-context';
5
6
  export const TooltipContent = (props) => {
6
- const [presenceProps, localProps] = splitPresenceProps(props);
7
7
  const api = useTooltipContext();
8
- const contentProps = mergeProps(() => api().contentProps, localProps);
9
- return (<Presence present={api().isOpen} {...presenceProps}>
10
- <ark.div {...contentProps}/>
11
- </Presence>);
8
+ const presenceApi = usePresenceContext();
9
+ const mergedProps = mergeProps(() => api().contentProps, () => presenceApi().presenceProps, props);
10
+ return (<Show when={!presenceApi().isUnmounted}>
11
+ <ark.div {...mergedProps}/>
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 { useTooltipContext } from './tooltip-context';
4
6
  export const TooltipPositioner = (props) => {
5
7
  const api = useTooltipContext();
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
  };
@@ -3,6 +3,6 @@ import { ark } from '../factory';
3
3
  import { useTooltipContext } from './tooltip-context';
4
4
  export const TooltipTrigger = (props) => {
5
5
  const api = useTooltipContext();
6
- const triggerProps = mergeProps(() => api().triggerProps, props);
7
- return <ark.button {...triggerProps}/>;
6
+ const mergedProps = mergeProps(() => api().triggerProps, props);
7
+ return <ark.button {...mergedProps}/>;
8
8
  };
@@ -1,8 +1,12 @@
1
+ import { mergeProps } from '@zag-js/solid';
1
2
  import { createSplitProps } from '../create-split-props';
3
+ import { PresenceProvider, splitPresenceProps, usePresence, } from '../presence';
4
+ import { runIfFn } from '../run-if-fn';
2
5
  import { TooltipProvider } from './tooltip-context';
3
6
  import { useTooltip } from './use-tooltip';
4
7
  export const Tooltip = (props) => {
5
- const [useTooltipProps, restProps] = createSplitProps()(props, [
8
+ const [presenceProps, tooltipProps] = splitPresenceProps(props);
9
+ const [useTooltipProps, localProps] = createSplitProps()(tooltipProps, [
6
10
  'aria-label',
7
11
  'closeDelay',
8
12
  'closeOnEsc',
@@ -19,5 +23,9 @@ export const Tooltip = (props) => {
19
23
  'positioning',
20
24
  ]);
21
25
  const api = useTooltip(useTooltipProps);
22
- return <TooltipProvider value={api} {...restProps}/>;
26
+ const apiPresence = usePresence(mergeProps(presenceProps, () => ({ present: api().isOpen })));
27
+ const getChildren = () => runIfFn(localProps.children, api);
28
+ return (<TooltipProvider value={api}>
29
+ <PresenceProvider value={apiPresence}>{getChildren()}</PresenceProvider>
30
+ </TooltipProvider>);
23
31
  };