@wordpress/ui 0.12.1-next.v.202604201441.0 → 0.13.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 (857) hide show
  1. package/CHANGELOG.md +59 -2
  2. package/CONTRIBUTING.md +34 -0
  3. package/build/alert-dialog/index.cjs +3 -0
  4. package/build/alert-dialog/index.cjs.map +2 -2
  5. package/build/alert-dialog/popup.cjs +194 -59
  6. package/build/alert-dialog/popup.cjs.map +3 -3
  7. package/build/alert-dialog/portal.cjs +38 -0
  8. package/build/alert-dialog/portal.cjs.map +7 -0
  9. package/build/alert-dialog/types.cjs.map +1 -1
  10. package/build/badge/badge.cjs +84 -5
  11. package/build/badge/badge.cjs.map +3 -3
  12. package/build/button/button.cjs +90 -20
  13. package/build/button/button.cjs.map +3 -3
  14. package/build/button/icon.cjs.map +2 -2
  15. package/build/button/index.cjs +1 -0
  16. package/build/button/index.cjs.map +3 -3
  17. package/build/button/types.cjs.map +1 -1
  18. package/build/card/content.cjs +84 -5
  19. package/build/card/content.cjs.map +3 -3
  20. package/build/card/full-bleed.cjs +84 -5
  21. package/build/card/full-bleed.cjs.map +3 -3
  22. package/build/card/header.cjs +84 -5
  23. package/build/card/header.cjs.map +3 -3
  24. package/build/card/root.cjs +86 -10
  25. package/build/card/root.cjs.map +3 -3
  26. package/build/collapsible-card/content.cjs +90 -7
  27. package/build/collapsible-card/content.cjs.map +3 -3
  28. package/build/collapsible-card/header.cjs +131 -52
  29. package/build/collapsible-card/header.cjs.map +3 -3
  30. package/build/dialog/content.cjs +161 -0
  31. package/build/dialog/content.cjs.map +7 -0
  32. package/build/dialog/context.cjs +12 -56
  33. package/build/dialog/context.cjs.map +2 -2
  34. package/build/dialog/description.cjs +138 -0
  35. package/build/dialog/description.cjs.map +7 -0
  36. package/build/dialog/footer.cjs +86 -6
  37. package/build/dialog/footer.cjs.map +3 -3
  38. package/build/dialog/header.cjs +86 -6
  39. package/build/dialog/header.cjs.map +3 -3
  40. package/build/dialog/index.cjs +9 -0
  41. package/build/dialog/index.cjs.map +2 -2
  42. package/build/dialog/popup.cjs +102 -11
  43. package/build/dialog/popup.cjs.map +3 -3
  44. package/build/dialog/portal.cjs +38 -0
  45. package/build/dialog/portal.cjs.map +7 -0
  46. package/build/dialog/root.cjs +3 -2
  47. package/build/dialog/root.cjs.map +2 -2
  48. package/build/dialog/title.cjs +85 -6
  49. package/build/dialog/title.cjs.map +3 -3
  50. package/build/dialog/types.cjs.map +1 -1
  51. package/build/drawer/action.cjs +48 -0
  52. package/build/drawer/action.cjs.map +7 -0
  53. package/build/drawer/close-icon.cjs +58 -0
  54. package/build/drawer/close-icon.cjs.map +7 -0
  55. package/build/drawer/content.cjs +170 -0
  56. package/build/drawer/content.cjs.map +7 -0
  57. package/build/drawer/context.cjs +44 -0
  58. package/build/drawer/context.cjs.map +7 -0
  59. package/build/drawer/description.cjs +47 -0
  60. package/build/drawer/description.cjs.map +7 -0
  61. package/build/drawer/footer.cjs +144 -0
  62. package/build/drawer/footer.cjs.map +7 -0
  63. package/build/drawer/header.cjs +144 -0
  64. package/build/drawer/header.cjs.map +7 -0
  65. package/build/drawer/index.cjs +61 -0
  66. package/build/drawer/index.cjs.map +7 -0
  67. package/build/drawer/popup.cjs +182 -0
  68. package/build/drawer/popup.cjs.map +7 -0
  69. package/build/drawer/portal.cjs +38 -0
  70. package/build/drawer/portal.cjs.map +7 -0
  71. package/build/drawer/root.cjs +49 -0
  72. package/build/drawer/root.cjs.map +7 -0
  73. package/build/drawer/title.cjs +149 -0
  74. package/build/drawer/title.cjs.map +7 -0
  75. package/build/drawer/trigger.cjs +38 -0
  76. package/build/drawer/trigger.cjs.map +7 -0
  77. package/build/drawer/types.cjs +19 -0
  78. package/build/drawer/types.cjs.map +7 -0
  79. package/build/empty-state/actions.cjs +84 -5
  80. package/build/empty-state/actions.cjs.map +3 -3
  81. package/build/empty-state/description.cjs +84 -5
  82. package/build/empty-state/description.cjs.map +3 -3
  83. package/build/empty-state/icon.cjs +84 -5
  84. package/build/empty-state/icon.cjs.map +3 -3
  85. package/build/empty-state/root.cjs +84 -5
  86. package/build/empty-state/root.cjs.map +3 -3
  87. package/build/empty-state/title.cjs +84 -5
  88. package/build/empty-state/title.cjs.map +3 -3
  89. package/build/empty-state/visual.cjs +84 -5
  90. package/build/empty-state/visual.cjs.map +3 -3
  91. package/build/form/index.cjs +3 -1
  92. package/build/form/index.cjs.map +2 -2
  93. package/build/form/primitives/autocomplete/clear.cjs +62 -0
  94. package/build/form/primitives/autocomplete/clear.cjs.map +7 -0
  95. package/build/form/primitives/autocomplete/collection.cjs +38 -0
  96. package/build/form/primitives/autocomplete/collection.cjs.map +7 -0
  97. package/build/form/primitives/autocomplete/empty.cjs +146 -0
  98. package/build/form/primitives/autocomplete/empty.cjs.map +7 -0
  99. package/build/form/primitives/autocomplete/index.cjs +64 -0
  100. package/build/form/primitives/autocomplete/index.cjs.map +7 -0
  101. package/build/form/primitives/autocomplete/input-group.cjs +36 -0
  102. package/build/form/primitives/autocomplete/input-group.cjs.map +7 -0
  103. package/build/form/primitives/autocomplete/input.cjs +47 -0
  104. package/build/form/primitives/autocomplete/input.cjs.map +7 -0
  105. package/build/form/primitives/autocomplete/item.cjs +157 -0
  106. package/build/form/primitives/autocomplete/item.cjs.map +7 -0
  107. package/build/form/primitives/autocomplete/list-body.cjs +136 -0
  108. package/build/form/primitives/autocomplete/list-body.cjs.map +7 -0
  109. package/build/form/primitives/autocomplete/list.cjs +146 -0
  110. package/build/form/primitives/autocomplete/list.cjs.map +7 -0
  111. package/build/form/primitives/autocomplete/popup.cjs +175 -0
  112. package/build/form/primitives/autocomplete/popup.cjs.map +7 -0
  113. package/build/form/primitives/autocomplete/portal.cjs +38 -0
  114. package/build/form/primitives/autocomplete/portal.cjs.map +7 -0
  115. package/build/form/primitives/autocomplete/root.cjs +35 -0
  116. package/build/form/primitives/autocomplete/root.cjs.map +7 -0
  117. package/build/form/primitives/autocomplete/types.cjs +19 -0
  118. package/build/form/primitives/autocomplete/types.cjs.map +7 -0
  119. package/build/form/primitives/autocomplete/value.cjs +35 -0
  120. package/build/form/primitives/autocomplete/value.cjs.map +7 -0
  121. package/build/form/primitives/field/description.cjs +86 -10
  122. package/build/form/primitives/field/description.cjs.map +3 -3
  123. package/build/form/primitives/field/details.cjs +84 -5
  124. package/build/form/primitives/field/details.cjs.map +3 -3
  125. package/build/form/primitives/field/label.cjs +84 -5
  126. package/build/form/primitives/field/label.cjs.map +3 -3
  127. package/build/form/primitives/field/root.cjs +84 -5
  128. package/build/form/primitives/field/root.cjs.map +3 -3
  129. package/build/form/primitives/fieldset/description.cjs +86 -10
  130. package/build/form/primitives/fieldset/description.cjs.map +3 -3
  131. package/build/form/primitives/fieldset/details.cjs +84 -5
  132. package/build/form/primitives/fieldset/details.cjs.map +3 -3
  133. package/build/form/primitives/fieldset/legend.cjs +84 -5
  134. package/build/form/primitives/fieldset/legend.cjs.map +3 -3
  135. package/build/form/primitives/fieldset/root.cjs +84 -5
  136. package/build/form/primitives/fieldset/root.cjs.map +3 -3
  137. package/build/form/primitives/index.cjs +3 -0
  138. package/build/form/primitives/index.cjs.map +2 -2
  139. package/build/form/primitives/input/input.cjs +88 -15
  140. package/build/form/primitives/input/input.cjs.map +3 -3
  141. package/build/form/primitives/input-layout/input-layout.cjs +88 -15
  142. package/build/form/primitives/input-layout/input-layout.cjs.map +3 -3
  143. package/build/form/primitives/input-layout/slot.cjs +84 -5
  144. package/build/form/primitives/input-layout/slot.cjs.map +3 -3
  145. package/build/form/primitives/select/index.cjs +3 -0
  146. package/build/form/primitives/select/index.cjs.map +2 -2
  147. package/build/form/primitives/select/item.cjs +88 -13
  148. package/build/form/primitives/select/item.cjs.map +3 -3
  149. package/build/form/primitives/select/popup.cjs +97 -23
  150. package/build/form/primitives/select/popup.cjs.map +3 -3
  151. package/build/form/primitives/select/portal.cjs +38 -0
  152. package/build/form/primitives/select/portal.cjs.map +7 -0
  153. package/build/form/primitives/select/root.cjs.map +2 -2
  154. package/build/form/primitives/select/trigger.cjs +98 -16
  155. package/build/form/primitives/select/trigger.cjs.map +3 -3
  156. package/build/form/primitives/select/types.cjs.map +1 -1
  157. package/build/form/primitives/textarea/textarea.cjs +86 -10
  158. package/build/form/primitives/textarea/textarea.cjs.map +3 -3
  159. package/build/form/select-control/context.cjs +37 -0
  160. package/build/form/select-control/context.cjs.map +7 -0
  161. package/build/form/select-control/index.cjs +39 -0
  162. package/build/form/select-control/index.cjs.map +7 -0
  163. package/build/form/select-control/item.cjs +41 -0
  164. package/build/form/select-control/item.cjs.map +7 -0
  165. package/build/form/select-control/select-control.cjs +75 -0
  166. package/build/form/select-control/select-control.cjs.map +7 -0
  167. package/build/form/select-control/types.cjs +19 -0
  168. package/build/form/select-control/types.cjs.map +7 -0
  169. package/build/form/types.cjs.map +1 -1
  170. package/build/icon-button/icon-button.cjs +86 -6
  171. package/build/icon-button/icon-button.cjs.map +3 -3
  172. package/build/icon-button/types.cjs.map +1 -1
  173. package/build/index.cjs +3 -0
  174. package/build/index.cjs.map +2 -2
  175. package/build/link/link.cjs +90 -20
  176. package/build/link/link.cjs.map +3 -3
  177. package/build/notice/action-button.cjs +84 -5
  178. package/build/notice/action-button.cjs.map +3 -3
  179. package/build/notice/action-link.cjs +84 -5
  180. package/build/notice/action-link.cjs.map +3 -3
  181. package/build/notice/actions.cjs +84 -5
  182. package/build/notice/actions.cjs.map +3 -3
  183. package/build/notice/close-icon.cjs +84 -5
  184. package/build/notice/close-icon.cjs.map +3 -3
  185. package/build/notice/description.cjs +84 -5
  186. package/build/notice/description.cjs.map +3 -3
  187. package/build/notice/root.cjs +86 -10
  188. package/build/notice/root.cjs.map +3 -3
  189. package/build/notice/title.cjs +84 -5
  190. package/build/notice/title.cjs.map +3 -3
  191. package/build/popover/arrow.cjs +85 -6
  192. package/build/popover/arrow.cjs.map +3 -3
  193. package/build/popover/context.cjs +4 -56
  194. package/build/popover/context.cjs.map +2 -2
  195. package/build/popover/description.cjs +1 -24
  196. package/build/popover/description.cjs.map +4 -4
  197. package/build/popover/index.cjs +3 -0
  198. package/build/popover/index.cjs.map +2 -2
  199. package/build/popover/popup.cjs +96 -23
  200. package/build/popover/popup.cjs.map +3 -3
  201. package/build/popover/portal.cjs +38 -0
  202. package/build/popover/portal.cjs.map +7 -0
  203. package/build/popover/root.cjs.map +1 -1
  204. package/build/popover/title.cjs +92 -2
  205. package/build/popover/title.cjs.map +3 -3
  206. package/build/popover/types.cjs.map +1 -1
  207. package/build/stack/stack.cjs +84 -5
  208. package/build/stack/stack.cjs.map +3 -3
  209. package/build/tabs/list.cjs +84 -5
  210. package/build/tabs/list.cjs.map +3 -3
  211. package/build/tabs/panel.cjs +86 -10
  212. package/build/tabs/panel.cjs.map +3 -3
  213. package/build/tabs/tab.cjs +84 -5
  214. package/build/tabs/tab.cjs.map +3 -3
  215. package/build/text/text.cjs +88 -12
  216. package/build/text/text.cjs.map +3 -3
  217. package/build/tooltip/index.cjs +6 -0
  218. package/build/tooltip/index.cjs.map +2 -2
  219. package/build/tooltip/popup.cjs +114 -46
  220. package/build/tooltip/popup.cjs.map +4 -4
  221. package/build/tooltip/portal.cjs +38 -0
  222. package/build/tooltip/portal.cjs.map +7 -0
  223. package/build/tooltip/positioner.cjs +159 -0
  224. package/build/tooltip/positioner.cjs.map +7 -0
  225. package/build/tooltip/provider.cjs +2 -2
  226. package/build/tooltip/provider.cjs.map +3 -3
  227. package/build/tooltip/root.cjs.map +3 -3
  228. package/build/tooltip/trigger.cjs +2 -2
  229. package/build/tooltip/trigger.cjs.map +3 -3
  230. package/build/tooltip/types.cjs.map +1 -1
  231. package/build/utils/create-overlay-modal-context.cjs +48 -0
  232. package/build/utils/create-overlay-modal-context.cjs.map +7 -0
  233. package/build/utils/create-overlay-title-validation.cjs +93 -0
  234. package/build/utils/create-overlay-title-validation.cjs.map +7 -0
  235. package/build/utils/render-slot-with-children.cjs +34 -0
  236. package/build/utils/render-slot-with-children.cjs.map +7 -0
  237. package/build/utils/use-deprioritized-initial-focus.cjs +8 -8
  238. package/build/utils/use-deprioritized-initial-focus.cjs.map +2 -2
  239. package/build/utils/use-overlay-scroll-state-attributes.cjs +140 -0
  240. package/build/utils/use-overlay-scroll-state-attributes.cjs.map +7 -0
  241. package/build/visually-hidden/visually-hidden.cjs +89 -6
  242. package/build/visually-hidden/visually-hidden.cjs.map +3 -3
  243. package/build-module/alert-dialog/index.mjs +2 -0
  244. package/build-module/alert-dialog/index.mjs.map +2 -2
  245. package/build-module/alert-dialog/popup.mjs +198 -60
  246. package/build-module/alert-dialog/popup.mjs.map +3 -3
  247. package/build-module/alert-dialog/portal.mjs +13 -0
  248. package/build-module/alert-dialog/portal.mjs.map +7 -0
  249. package/build-module/badge/badge.mjs +84 -5
  250. package/build-module/badge/badge.mjs.map +3 -3
  251. package/build-module/button/button.mjs +90 -20
  252. package/build-module/button/button.mjs.map +3 -3
  253. package/build-module/button/icon.mjs.map +2 -2
  254. package/build-module/button/index.mjs +3 -2
  255. package/build-module/button/index.mjs.map +2 -2
  256. package/build-module/card/content.mjs +84 -5
  257. package/build-module/card/content.mjs.map +3 -3
  258. package/build-module/card/full-bleed.mjs +84 -5
  259. package/build-module/card/full-bleed.mjs.map +3 -3
  260. package/build-module/card/header.mjs +84 -5
  261. package/build-module/card/header.mjs.map +3 -3
  262. package/build-module/card/root.mjs +86 -10
  263. package/build-module/card/root.mjs.map +3 -3
  264. package/build-module/collapsible-card/content.mjs +90 -7
  265. package/build-module/collapsible-card/content.mjs.map +3 -3
  266. package/build-module/collapsible-card/header.mjs +131 -52
  267. package/build-module/collapsible-card/header.mjs.map +3 -3
  268. package/build-module/dialog/content.mjs +126 -0
  269. package/build-module/dialog/content.mjs.map +7 -0
  270. package/build-module/dialog/context.mjs +10 -63
  271. package/build-module/dialog/context.mjs.map +2 -2
  272. package/build-module/dialog/description.mjs +113 -0
  273. package/build-module/dialog/description.mjs.map +7 -0
  274. package/build-module/dialog/footer.mjs +86 -6
  275. package/build-module/dialog/footer.mjs.map +3 -3
  276. package/build-module/dialog/header.mjs +86 -6
  277. package/build-module/dialog/header.mjs.map +3 -3
  278. package/build-module/dialog/index.mjs +6 -0
  279. package/build-module/dialog/index.mjs.map +2 -2
  280. package/build-module/dialog/popup.mjs +104 -13
  281. package/build-module/dialog/popup.mjs.map +3 -3
  282. package/build-module/dialog/portal.mjs +13 -0
  283. package/build-module/dialog/portal.mjs.map +7 -0
  284. package/build-module/dialog/root.mjs +3 -2
  285. package/build-module/dialog/root.mjs.map +2 -2
  286. package/build-module/dialog/title.mjs +85 -6
  287. package/build-module/dialog/title.mjs.map +3 -3
  288. package/build-module/drawer/action.mjs +23 -0
  289. package/build-module/drawer/action.mjs.map +7 -0
  290. package/build-module/drawer/close-icon.mjs +33 -0
  291. package/build-module/drawer/close-icon.mjs.map +7 -0
  292. package/build-module/drawer/content.mjs +135 -0
  293. package/build-module/drawer/content.mjs.map +7 -0
  294. package/build-module/drawer/context.mjs +16 -0
  295. package/build-module/drawer/context.mjs.map +7 -0
  296. package/build-module/drawer/description.mjs +22 -0
  297. package/build-module/drawer/description.mjs.map +7 -0
  298. package/build-module/drawer/footer.mjs +109 -0
  299. package/build-module/drawer/footer.mjs.map +7 -0
  300. package/build-module/drawer/header.mjs +109 -0
  301. package/build-module/drawer/header.mjs.map +7 -0
  302. package/build-module/drawer/index.mjs +26 -0
  303. package/build-module/drawer/index.mjs.map +7 -0
  304. package/build-module/drawer/popup.mjs +149 -0
  305. package/build-module/drawer/popup.mjs.map +7 -0
  306. package/build-module/drawer/portal.mjs +13 -0
  307. package/build-module/drawer/portal.mjs.map +7 -0
  308. package/build-module/drawer/root.mjs +24 -0
  309. package/build-module/drawer/root.mjs.map +7 -0
  310. package/build-module/drawer/title.mjs +124 -0
  311. package/build-module/drawer/title.mjs.map +7 -0
  312. package/build-module/drawer/trigger.mjs +13 -0
  313. package/build-module/drawer/trigger.mjs.map +7 -0
  314. package/build-module/drawer/types.mjs +1 -0
  315. package/build-module/drawer/types.mjs.map +7 -0
  316. package/build-module/empty-state/actions.mjs +84 -5
  317. package/build-module/empty-state/actions.mjs.map +3 -3
  318. package/build-module/empty-state/description.mjs +84 -5
  319. package/build-module/empty-state/description.mjs.map +3 -3
  320. package/build-module/empty-state/icon.mjs +84 -5
  321. package/build-module/empty-state/icon.mjs.map +3 -3
  322. package/build-module/empty-state/root.mjs +84 -5
  323. package/build-module/empty-state/root.mjs.map +3 -3
  324. package/build-module/empty-state/title.mjs +84 -5
  325. package/build-module/empty-state/title.mjs.map +3 -3
  326. package/build-module/empty-state/visual.mjs +84 -5
  327. package/build-module/empty-state/visual.mjs.map +3 -3
  328. package/build-module/form/index.mjs +1 -0
  329. package/build-module/form/index.mjs.map +2 -2
  330. package/build-module/form/primitives/autocomplete/clear.mjs +37 -0
  331. package/build-module/form/primitives/autocomplete/clear.mjs.map +7 -0
  332. package/build-module/form/primitives/autocomplete/collection.mjs +13 -0
  333. package/build-module/form/primitives/autocomplete/collection.mjs.map +7 -0
  334. package/build-module/form/primitives/autocomplete/empty.mjs +111 -0
  335. package/build-module/form/primitives/autocomplete/empty.mjs.map +7 -0
  336. package/build-module/form/primitives/autocomplete/index.mjs +28 -0
  337. package/build-module/form/primitives/autocomplete/index.mjs.map +7 -0
  338. package/build-module/form/primitives/autocomplete/input-group.mjs +11 -0
  339. package/build-module/form/primitives/autocomplete/input-group.mjs.map +7 -0
  340. package/build-module/form/primitives/autocomplete/input.mjs +22 -0
  341. package/build-module/form/primitives/autocomplete/input.mjs.map +7 -0
  342. package/build-module/form/primitives/autocomplete/item.mjs +122 -0
  343. package/build-module/form/primitives/autocomplete/item.mjs.map +7 -0
  344. package/build-module/form/primitives/autocomplete/list-body.mjs +111 -0
  345. package/build-module/form/primitives/autocomplete/list-body.mjs.map +7 -0
  346. package/build-module/form/primitives/autocomplete/list.mjs +111 -0
  347. package/build-module/form/primitives/autocomplete/list.mjs.map +7 -0
  348. package/build-module/form/primitives/autocomplete/popup.mjs +142 -0
  349. package/build-module/form/primitives/autocomplete/popup.mjs.map +7 -0
  350. package/build-module/form/primitives/autocomplete/portal.mjs +13 -0
  351. package/build-module/form/primitives/autocomplete/portal.mjs.map +7 -0
  352. package/build-module/form/primitives/autocomplete/root.mjs +10 -0
  353. package/build-module/form/primitives/autocomplete/root.mjs.map +7 -0
  354. package/build-module/form/primitives/autocomplete/types.mjs +1 -0
  355. package/build-module/form/primitives/autocomplete/types.mjs.map +7 -0
  356. package/build-module/form/primitives/autocomplete/value.mjs +10 -0
  357. package/build-module/form/primitives/autocomplete/value.mjs.map +7 -0
  358. package/build-module/form/primitives/field/description.mjs +86 -10
  359. package/build-module/form/primitives/field/description.mjs.map +3 -3
  360. package/build-module/form/primitives/field/details.mjs +84 -5
  361. package/build-module/form/primitives/field/details.mjs.map +3 -3
  362. package/build-module/form/primitives/field/label.mjs +84 -5
  363. package/build-module/form/primitives/field/label.mjs.map +3 -3
  364. package/build-module/form/primitives/field/root.mjs +84 -5
  365. package/build-module/form/primitives/field/root.mjs.map +3 -3
  366. package/build-module/form/primitives/fieldset/description.mjs +86 -10
  367. package/build-module/form/primitives/fieldset/description.mjs.map +3 -3
  368. package/build-module/form/primitives/fieldset/details.mjs +84 -5
  369. package/build-module/form/primitives/fieldset/details.mjs.map +3 -3
  370. package/build-module/form/primitives/fieldset/legend.mjs +84 -5
  371. package/build-module/form/primitives/fieldset/legend.mjs.map +3 -3
  372. package/build-module/form/primitives/fieldset/root.mjs +84 -5
  373. package/build-module/form/primitives/fieldset/root.mjs.map +3 -3
  374. package/build-module/form/primitives/index.mjs +2 -0
  375. package/build-module/form/primitives/index.mjs.map +2 -2
  376. package/build-module/form/primitives/input/input.mjs +88 -15
  377. package/build-module/form/primitives/input/input.mjs.map +3 -3
  378. package/build-module/form/primitives/input-layout/input-layout.mjs +88 -15
  379. package/build-module/form/primitives/input-layout/input-layout.mjs.map +3 -3
  380. package/build-module/form/primitives/input-layout/slot.mjs +84 -5
  381. package/build-module/form/primitives/input-layout/slot.mjs.map +3 -3
  382. package/build-module/form/primitives/select/index.mjs +2 -0
  383. package/build-module/form/primitives/select/index.mjs.map +2 -2
  384. package/build-module/form/primitives/select/item.mjs +88 -13
  385. package/build-module/form/primitives/select/item.mjs.map +3 -3
  386. package/build-module/form/primitives/select/popup.mjs +97 -23
  387. package/build-module/form/primitives/select/popup.mjs.map +3 -3
  388. package/build-module/form/primitives/select/portal.mjs +13 -0
  389. package/build-module/form/primitives/select/portal.mjs.map +7 -0
  390. package/build-module/form/primitives/select/root.mjs.map +2 -2
  391. package/build-module/form/primitives/select/trigger.mjs +98 -16
  392. package/build-module/form/primitives/select/trigger.mjs.map +3 -3
  393. package/build-module/form/primitives/textarea/textarea.mjs +86 -10
  394. package/build-module/form/primitives/textarea/textarea.mjs.map +3 -3
  395. package/build-module/form/select-control/context.mjs +11 -0
  396. package/build-module/form/select-control/context.mjs.map +7 -0
  397. package/build-module/form/select-control/index.mjs +14 -0
  398. package/build-module/form/select-control/index.mjs.map +7 -0
  399. package/build-module/form/select-control/item.mjs +16 -0
  400. package/build-module/form/select-control/item.mjs.map +7 -0
  401. package/build-module/form/select-control/select-control.mjs +50 -0
  402. package/build-module/form/select-control/select-control.mjs.map +7 -0
  403. package/build-module/form/select-control/types.mjs +1 -0
  404. package/build-module/form/select-control/types.mjs.map +7 -0
  405. package/build-module/icon-button/icon-button.mjs +86 -6
  406. package/build-module/icon-button/icon-button.mjs.map +3 -3
  407. package/build-module/index.mjs +2 -0
  408. package/build-module/index.mjs.map +2 -2
  409. package/build-module/link/link.mjs +90 -20
  410. package/build-module/link/link.mjs.map +3 -3
  411. package/build-module/notice/action-button.mjs +84 -5
  412. package/build-module/notice/action-button.mjs.map +3 -3
  413. package/build-module/notice/action-link.mjs +84 -5
  414. package/build-module/notice/action-link.mjs.map +3 -3
  415. package/build-module/notice/actions.mjs +84 -5
  416. package/build-module/notice/actions.mjs.map +3 -3
  417. package/build-module/notice/close-icon.mjs +84 -5
  418. package/build-module/notice/close-icon.mjs.map +3 -3
  419. package/build-module/notice/description.mjs +84 -5
  420. package/build-module/notice/description.mjs.map +3 -3
  421. package/build-module/notice/root.mjs +86 -10
  422. package/build-module/notice/root.mjs.map +3 -3
  423. package/build-module/notice/title.mjs +84 -5
  424. package/build-module/notice/title.mjs.map +3 -3
  425. package/build-module/popover/arrow.mjs +85 -6
  426. package/build-module/popover/arrow.mjs.map +3 -3
  427. package/build-module/popover/context.mjs +4 -63
  428. package/build-module/popover/context.mjs.map +2 -2
  429. package/build-module/popover/description.mjs +1 -14
  430. package/build-module/popover/description.mjs.map +3 -3
  431. package/build-module/popover/index.mjs +2 -0
  432. package/build-module/popover/index.mjs.map +2 -2
  433. package/build-module/popover/popup.mjs +97 -24
  434. package/build-module/popover/popup.mjs.map +3 -3
  435. package/build-module/popover/portal.mjs +13 -0
  436. package/build-module/popover/portal.mjs.map +7 -0
  437. package/build-module/popover/root.mjs.map +1 -1
  438. package/build-module/popover/title.mjs +92 -2
  439. package/build-module/popover/title.mjs.map +3 -3
  440. package/build-module/stack/stack.mjs +84 -5
  441. package/build-module/stack/stack.mjs.map +3 -3
  442. package/build-module/tabs/list.mjs +84 -5
  443. package/build-module/tabs/list.mjs.map +3 -3
  444. package/build-module/tabs/panel.mjs +86 -10
  445. package/build-module/tabs/panel.mjs.map +3 -3
  446. package/build-module/tabs/tab.mjs +84 -5
  447. package/build-module/tabs/tab.mjs.map +3 -3
  448. package/build-module/text/text.mjs +88 -12
  449. package/build-module/text/text.mjs.map +3 -3
  450. package/build-module/tooltip/index.mjs +4 -0
  451. package/build-module/tooltip/index.mjs.map +2 -2
  452. package/build-module/tooltip/popup.mjs +115 -47
  453. package/build-module/tooltip/popup.mjs.map +3 -3
  454. package/build-module/tooltip/portal.mjs +13 -0
  455. package/build-module/tooltip/portal.mjs.map +7 -0
  456. package/build-module/tooltip/positioner.mjs +124 -0
  457. package/build-module/tooltip/positioner.mjs.map +7 -0
  458. package/build-module/tooltip/provider.mjs +3 -3
  459. package/build-module/tooltip/provider.mjs.map +2 -2
  460. package/build-module/tooltip/root.mjs +2 -2
  461. package/build-module/tooltip/root.mjs.map +2 -2
  462. package/build-module/tooltip/trigger.mjs +3 -3
  463. package/build-module/tooltip/trigger.mjs.map +2 -2
  464. package/build-module/utils/create-overlay-modal-context.mjs +23 -0
  465. package/build-module/utils/create-overlay-modal-context.mjs.map +7 -0
  466. package/build-module/utils/create-overlay-title-validation.mjs +75 -0
  467. package/build-module/utils/create-overlay-title-validation.mjs.map +7 -0
  468. package/build-module/utils/render-slot-with-children.mjs +9 -0
  469. package/build-module/utils/render-slot-with-children.mjs.map +7 -0
  470. package/build-module/utils/use-deprioritized-initial-focus.mjs +9 -9
  471. package/build-module/utils/use-deprioritized-initial-focus.mjs.map +2 -2
  472. package/build-module/utils/use-overlay-scroll-state-attributes.mjs +114 -0
  473. package/build-module/utils/use-overlay-scroll-state-attributes.mjs.map +7 -0
  474. package/build-module/visually-hidden/visually-hidden.mjs +89 -6
  475. package/build-module/visually-hidden/visually-hidden.mjs.map +3 -3
  476. package/build-types/alert-dialog/index.d.ts +1 -0
  477. package/build-types/alert-dialog/index.d.ts.map +1 -1
  478. package/build-types/alert-dialog/popup.d.ts.map +1 -1
  479. package/build-types/alert-dialog/portal.d.ts +9 -0
  480. package/build-types/alert-dialog/portal.d.ts.map +1 -0
  481. package/build-types/alert-dialog/root.d.ts +1 -1
  482. package/build-types/alert-dialog/root.d.ts.map +1 -1
  483. package/build-types/alert-dialog/stories/index.story.d.ts +28 -0
  484. package/build-types/alert-dialog/stories/index.story.d.ts.map +1 -1
  485. package/build-types/alert-dialog/types.d.ts +25 -3
  486. package/build-types/alert-dialog/types.d.ts.map +1 -1
  487. package/build-types/badge/stories/choosing-intent.story.d.ts.map +1 -1
  488. package/build-types/badge/stories/index.story.d.ts.map +1 -1
  489. package/build-types/button/button.d.ts +3 -0
  490. package/build-types/button/button.d.ts.map +1 -1
  491. package/build-types/button/icon.d.ts +1 -8
  492. package/build-types/button/icon.d.ts.map +1 -1
  493. package/build-types/button/index.d.ts +6 -5
  494. package/build-types/button/index.d.ts.map +1 -1
  495. package/build-types/button/stories/index.story.d.ts.map +1 -1
  496. package/build-types/button/types.d.ts +7 -0
  497. package/build-types/button/types.d.ts.map +1 -1
  498. package/build-types/card/stories/index.story.d.ts.map +1 -1
  499. package/build-types/collapsible/panel.d.ts +1 -1
  500. package/build-types/collapsible/root.d.ts +1 -1
  501. package/build-types/collapsible/stories/index.story.d.ts.map +1 -1
  502. package/build-types/collapsible/trigger.d.ts +1 -1
  503. package/build-types/collapsible-card/content.d.ts.map +1 -1
  504. package/build-types/collapsible-card/header.d.ts +6 -0
  505. package/build-types/collapsible-card/header.d.ts.map +1 -1
  506. package/build-types/collapsible-card/stories/index.story.d.ts +8 -0
  507. package/build-types/collapsible-card/stories/index.story.d.ts.map +1 -1
  508. package/build-types/dialog/content.d.ts +17 -0
  509. package/build-types/dialog/content.d.ts.map +1 -0
  510. package/build-types/dialog/context.d.ts +11 -16
  511. package/build-types/dialog/context.d.ts.map +1 -1
  512. package/build-types/dialog/description.d.ts +9 -0
  513. package/build-types/dialog/description.d.ts.map +1 -0
  514. package/build-types/dialog/footer.d.ts +8 -1
  515. package/build-types/dialog/footer.d.ts.map +1 -1
  516. package/build-types/dialog/header.d.ts +8 -1
  517. package/build-types/dialog/header.d.ts.map +1 -1
  518. package/build-types/dialog/index.d.ts +4 -1
  519. package/build-types/dialog/index.d.ts.map +1 -1
  520. package/build-types/dialog/popup.d.ts +2 -0
  521. package/build-types/dialog/popup.d.ts.map +1 -1
  522. package/build-types/dialog/portal.d.ts +10 -0
  523. package/build-types/dialog/portal.d.ts.map +1 -0
  524. package/build-types/dialog/root.d.ts +14 -4
  525. package/build-types/dialog/root.d.ts.map +1 -1
  526. package/build-types/dialog/stories/index.story.d.ts +29 -6
  527. package/build-types/dialog/stories/index.story.d.ts.map +1 -1
  528. package/build-types/dialog/types.d.ts +60 -7
  529. package/build-types/dialog/types.d.ts.map +1 -1
  530. package/build-types/drawer/action.d.ts +8 -0
  531. package/build-types/drawer/action.d.ts.map +1 -0
  532. package/build-types/drawer/close-icon.d.ts +8 -0
  533. package/build-types/drawer/close-icon.d.ts.map +1 -0
  534. package/build-types/drawer/content.d.ts +24 -0
  535. package/build-types/drawer/content.d.ts.map +1 -0
  536. package/build-types/drawer/context.d.ts +20 -0
  537. package/build-types/drawer/context.d.ts.map +1 -0
  538. package/build-types/drawer/description.d.ts +9 -0
  539. package/build-types/drawer/description.d.ts.map +1 -0
  540. package/build-types/drawer/footer.d.ts +15 -0
  541. package/build-types/drawer/footer.d.ts.map +1 -0
  542. package/build-types/drawer/header.d.ts +15 -0
  543. package/build-types/drawer/header.d.ts.map +1 -0
  544. package/build-types/drawer/index.d.ts +13 -0
  545. package/build-types/drawer/index.d.ts.map +1 -0
  546. package/build-types/drawer/popup.d.ts +15 -0
  547. package/build-types/drawer/popup.d.ts.map +1 -0
  548. package/build-types/drawer/portal.d.ts +10 -0
  549. package/build-types/drawer/portal.d.ts.map +1 -0
  550. package/build-types/drawer/root.d.ts +21 -0
  551. package/build-types/drawer/root.d.ts.map +1 -0
  552. package/build-types/drawer/stories/index.story.d.ts +63 -0
  553. package/build-types/drawer/stories/index.story.d.ts.map +1 -0
  554. package/build-types/drawer/test/index.test.d.ts +2 -0
  555. package/build-types/drawer/test/index.test.d.ts.map +1 -0
  556. package/build-types/drawer/title.d.ts +22 -0
  557. package/build-types/drawer/title.d.ts.map +1 -0
  558. package/build-types/drawer/trigger.d.ts +7 -0
  559. package/build-types/drawer/trigger.d.ts.map +1 -0
  560. package/build-types/drawer/types.d.ts +146 -0
  561. package/build-types/drawer/types.d.ts.map +1 -0
  562. package/build-types/empty-state/stories/index.story.d.ts.map +1 -1
  563. package/build-types/form/index.d.ts +1 -0
  564. package/build-types/form/index.d.ts.map +1 -1
  565. package/build-types/form/input-control/stories/index.story.d.ts.map +1 -1
  566. package/build-types/form/primitives/autocomplete/clear.d.ts +13 -0
  567. package/build-types/form/primitives/autocomplete/clear.d.ts.map +1 -0
  568. package/build-types/form/primitives/autocomplete/collection.d.ts +3 -0
  569. package/build-types/form/primitives/autocomplete/collection.d.ts.map +1 -0
  570. package/build-types/form/primitives/autocomplete/empty.d.ts +10 -0
  571. package/build-types/form/primitives/autocomplete/empty.d.ts.map +1 -0
  572. package/build-types/form/primitives/autocomplete/index.d.ts +13 -0
  573. package/build-types/form/primitives/autocomplete/index.d.ts.map +1 -0
  574. package/build-types/form/primitives/autocomplete/input-group.d.ts +16 -0
  575. package/build-types/form/primitives/autocomplete/input-group.d.ts.map +1 -0
  576. package/build-types/form/primitives/autocomplete/input.d.ts +3 -0
  577. package/build-types/form/primitives/autocomplete/input.d.ts.map +1 -0
  578. package/build-types/form/primitives/autocomplete/item.d.ts +10 -0
  579. package/build-types/form/primitives/autocomplete/item.d.ts.map +1 -0
  580. package/build-types/form/primitives/autocomplete/list-body.d.ts +13 -0
  581. package/build-types/form/primitives/autocomplete/list-body.d.ts.map +1 -0
  582. package/build-types/form/primitives/autocomplete/list.d.ts +11 -0
  583. package/build-types/form/primitives/autocomplete/list.d.ts.map +1 -0
  584. package/build-types/form/primitives/autocomplete/popup.d.ts +11 -0
  585. package/build-types/form/primitives/autocomplete/popup.d.ts.map +1 -0
  586. package/build-types/form/primitives/autocomplete/portal.d.ts +8 -0
  587. package/build-types/form/primitives/autocomplete/portal.d.ts.map +1 -0
  588. package/build-types/form/primitives/autocomplete/root.d.ts +8 -0
  589. package/build-types/form/primitives/autocomplete/root.d.ts.map +1 -0
  590. package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts +8 -0
  591. package/build-types/form/primitives/autocomplete/stories/fixtures.d.ts.map +1 -0
  592. package/build-types/form/primitives/autocomplete/stories/index.story.d.ts +41 -0
  593. package/build-types/form/primitives/autocomplete/stories/index.story.d.ts.map +1 -0
  594. package/build-types/form/primitives/autocomplete/test/index.test.d.ts +2 -0
  595. package/build-types/form/primitives/autocomplete/test/index.test.d.ts.map +1 -0
  596. package/build-types/form/primitives/autocomplete/types.d.ts +44 -0
  597. package/build-types/form/primitives/autocomplete/types.d.ts.map +1 -0
  598. package/build-types/form/primitives/autocomplete/value.d.ts +3 -0
  599. package/build-types/form/primitives/autocomplete/value.d.ts.map +1 -0
  600. package/build-types/form/primitives/field/control.d.ts +2 -2
  601. package/build-types/form/primitives/field/description.d.ts +1 -1
  602. package/build-types/form/primitives/field/details.d.ts +1 -1
  603. package/build-types/form/primitives/field/label.d.ts +3 -3
  604. package/build-types/form/primitives/field/root.d.ts +3 -3
  605. package/build-types/form/primitives/field/stories/index.story.d.ts.map +1 -1
  606. package/build-types/form/primitives/fieldset/description.d.ts +1 -1
  607. package/build-types/form/primitives/fieldset/details.d.ts +1 -1
  608. package/build-types/form/primitives/fieldset/legend.d.ts +1 -1
  609. package/build-types/form/primitives/fieldset/root.d.ts +1 -1
  610. package/build-types/form/primitives/fieldset/stories/index.story.d.ts.map +1 -1
  611. package/build-types/form/primitives/index.d.ts +1 -0
  612. package/build-types/form/primitives/index.d.ts.map +1 -1
  613. package/build-types/form/primitives/input/input.d.ts +5 -5
  614. package/build-types/form/primitives/input/stories/index.story.d.ts.map +1 -1
  615. package/build-types/form/primitives/input-layout/stories/index.story.d.ts.map +1 -1
  616. package/build-types/form/primitives/select/index.d.ts +1 -0
  617. package/build-types/form/primitives/select/index.d.ts.map +1 -1
  618. package/build-types/form/primitives/select/item.d.ts +3 -3
  619. package/build-types/form/primitives/select/item.d.ts.map +1 -1
  620. package/build-types/form/primitives/select/popup.d.ts +2 -3
  621. package/build-types/form/primitives/select/popup.d.ts.map +1 -1
  622. package/build-types/form/primitives/select/portal.d.ts +8 -0
  623. package/build-types/form/primitives/select/portal.d.ts.map +1 -0
  624. package/build-types/form/primitives/select/root.d.ts +12 -1
  625. package/build-types/form/primitives/select/root.d.ts.map +1 -1
  626. package/build-types/form/primitives/select/stories/index.story.d.ts +22 -11
  627. package/build-types/form/primitives/select/stories/index.story.d.ts.map +1 -1
  628. package/build-types/form/primitives/select/trigger.d.ts +5 -4
  629. package/build-types/form/primitives/select/trigger.d.ts.map +1 -1
  630. package/build-types/form/primitives/select/types.d.ts +19 -6
  631. package/build-types/form/primitives/select/types.d.ts.map +1 -1
  632. package/build-types/form/primitives/textarea/stories/index.story.d.ts.map +1 -1
  633. package/build-types/form/primitives/textarea/textarea.d.ts +2 -2
  634. package/build-types/form/select-control/context.d.ts +3 -0
  635. package/build-types/form/select-control/context.d.ts.map +1 -0
  636. package/build-types/form/select-control/index.d.ts +20 -0
  637. package/build-types/form/select-control/index.d.ts.map +1 -0
  638. package/build-types/form/select-control/item.d.ts +6 -0
  639. package/build-types/form/select-control/item.d.ts.map +1 -0
  640. package/build-types/form/select-control/select-control.d.ts +11 -0
  641. package/build-types/form/select-control/select-control.d.ts.map +1 -0
  642. package/build-types/form/select-control/stories/index.story.d.ts +40 -0
  643. package/build-types/form/select-control/stories/index.story.d.ts.map +1 -0
  644. package/build-types/form/select-control/test/index.test.d.ts +2 -0
  645. package/build-types/form/select-control/test/index.test.d.ts.map +1 -0
  646. package/build-types/form/select-control/types.d.ts +40 -0
  647. package/build-types/form/select-control/types.d.ts.map +1 -0
  648. package/build-types/form/types.d.ts +1 -1
  649. package/build-types/form/types.d.ts.map +1 -1
  650. package/build-types/icon/stories/index.story.d.ts.map +1 -1
  651. package/build-types/icon-button/icon-button.d.ts +2 -1
  652. package/build-types/icon-button/icon-button.d.ts.map +1 -1
  653. package/build-types/icon-button/stories/index.story.d.ts +5 -0
  654. package/build-types/icon-button/stories/index.story.d.ts.map +1 -1
  655. package/build-types/icon-button/types.d.ts +8 -0
  656. package/build-types/icon-button/types.d.ts.map +1 -1
  657. package/build-types/index.d.ts +1 -0
  658. package/build-types/index.d.ts.map +1 -1
  659. package/build-types/link/stories/index.story.d.ts +2 -3
  660. package/build-types/link/stories/index.story.d.ts.map +1 -1
  661. package/build-types/notice/stories/index.story.d.ts.map +1 -1
  662. package/build-types/popover/context.d.ts +6 -13
  663. package/build-types/popover/context.d.ts.map +1 -1
  664. package/build-types/popover/description.d.ts +0 -1
  665. package/build-types/popover/description.d.ts.map +1 -1
  666. package/build-types/popover/index.d.ts +2 -1
  667. package/build-types/popover/index.d.ts.map +1 -1
  668. package/build-types/popover/popup.d.ts +3 -2
  669. package/build-types/popover/popup.d.ts.map +1 -1
  670. package/build-types/popover/portal.d.ts +9 -0
  671. package/build-types/popover/portal.d.ts.map +1 -0
  672. package/build-types/popover/root.d.ts +2 -2
  673. package/build-types/popover/stories/index.story.d.ts +22 -14
  674. package/build-types/popover/stories/index.story.d.ts.map +1 -1
  675. package/build-types/popover/title.d.ts.map +1 -1
  676. package/build-types/popover/types.d.ts +8 -15
  677. package/build-types/popover/types.d.ts.map +1 -1
  678. package/build-types/stack/stories/index.story.d.ts.map +1 -1
  679. package/build-types/tabs/context.d.ts +1 -1
  680. package/build-types/tabs/context.d.ts.map +1 -1
  681. package/build-types/tabs/list.d.ts +2 -2
  682. package/build-types/tabs/panel.d.ts +1 -1
  683. package/build-types/tabs/root.d.ts +1 -1
  684. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  685. package/build-types/tabs/tab.d.ts +1 -1
  686. package/build-types/text/stories/index.story.d.ts.map +1 -1
  687. package/build-types/tooltip/index.d.ts +3 -1
  688. package/build-types/tooltip/index.d.ts.map +1 -1
  689. package/build-types/tooltip/popup.d.ts.map +1 -1
  690. package/build-types/tooltip/portal.d.ts +8 -0
  691. package/build-types/tooltip/portal.d.ts.map +1 -0
  692. package/build-types/tooltip/positioner.d.ts +9 -0
  693. package/build-types/tooltip/positioner.d.ts.map +1 -0
  694. package/build-types/tooltip/provider.d.ts +1 -1
  695. package/build-types/tooltip/provider.d.ts.map +1 -1
  696. package/build-types/tooltip/stories/index.story.d.ts +28 -2
  697. package/build-types/tooltip/stories/index.story.d.ts.map +1 -1
  698. package/build-types/tooltip/stories/usage-guidelines.story.d.ts.map +1 -1
  699. package/build-types/tooltip/trigger.d.ts.map +1 -1
  700. package/build-types/tooltip/types.d.ts +20 -7
  701. package/build-types/tooltip/types.d.ts.map +1 -1
  702. package/build-types/utils/create-overlay-modal-context.d.ts +14 -0
  703. package/build-types/utils/create-overlay-modal-context.d.ts.map +1 -0
  704. package/build-types/utils/create-overlay-title-validation.d.ts +15 -0
  705. package/build-types/utils/create-overlay-title-validation.d.ts.map +1 -0
  706. package/build-types/utils/render-slot-with-children.d.ts +24 -0
  707. package/build-types/utils/render-slot-with-children.d.ts.map +1 -0
  708. package/build-types/utils/use-deprioritized-initial-focus.d.ts +9 -8
  709. package/build-types/utils/use-deprioritized-initial-focus.d.ts.map +1 -1
  710. package/build-types/utils/use-overlay-scroll-state-attributes.d.ts +85 -0
  711. package/build-types/utils/use-overlay-scroll-state-attributes.d.ts.map +1 -0
  712. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -1
  713. package/build-types/visually-hidden/visually-hidden.d.ts +4 -20
  714. package/build-types/visually-hidden/visually-hidden.d.ts.map +1 -1
  715. package/package.json +14 -13
  716. package/src/alert-dialog/index.ts +1 -0
  717. package/src/alert-dialog/popup.tsx +114 -45
  718. package/src/alert-dialog/portal.tsx +17 -0
  719. package/src/alert-dialog/stories/index.story.tsx +129 -1
  720. package/src/alert-dialog/style.module.css +13 -4
  721. package/src/alert-dialog/test/index.test.tsx +329 -3
  722. package/src/alert-dialog/types.ts +30 -3
  723. package/src/badge/stories/index.story.tsx +6 -0
  724. package/src/button/button.tsx +3 -0
  725. package/src/button/icon.tsx +1 -8
  726. package/src/button/index.ts +5 -6
  727. package/src/button/stories/index.story.tsx +10 -0
  728. package/src/button/types.ts +8 -0
  729. package/src/card/stories/index.story.tsx +7 -0
  730. package/src/collapsible/stories/index.story.tsx +7 -0
  731. package/src/collapsible-card/content.tsx +12 -1
  732. package/src/collapsible-card/header.tsx +55 -42
  733. package/src/collapsible-card/stories/index.story.tsx +62 -0
  734. package/src/collapsible-card/style.module.css +36 -4
  735. package/src/collapsible-card/test/index.test.tsx +60 -1
  736. package/src/dialog/content.tsx +47 -0
  737. package/src/dialog/context.tsx +14 -111
  738. package/src/dialog/description.tsx +27 -0
  739. package/src/dialog/footer.tsx +10 -2
  740. package/src/dialog/header.tsx +10 -2
  741. package/src/dialog/index.ts +16 -1
  742. package/src/dialog/popup.tsx +27 -8
  743. package/src/dialog/portal.tsx +18 -0
  744. package/src/dialog/root.tsx +22 -5
  745. package/src/dialog/stories/index.story.tsx +200 -48
  746. package/src/dialog/style.module.css +76 -44
  747. package/src/dialog/test/index.test.tsx +632 -12
  748. package/src/dialog/types.ts +64 -6
  749. package/src/drawer/action.tsx +28 -0
  750. package/src/drawer/close-icon.tsx +33 -0
  751. package/src/drawer/content.tsx +65 -0
  752. package/src/drawer/context.tsx +29 -0
  753. package/src/drawer/description.tsx +25 -0
  754. package/src/drawer/footer.tsx +34 -0
  755. package/src/drawer/header.tsx +34 -0
  756. package/src/drawer/index.ts +25 -0
  757. package/src/drawer/popup.tsx +99 -0
  758. package/src/drawer/portal.tsx +18 -0
  759. package/src/drawer/root.tsx +41 -0
  760. package/src/drawer/stories/index.story.tsx +550 -0
  761. package/src/drawer/style.module.css +356 -0
  762. package/src/drawer/test/index.test.tsx +1153 -0
  763. package/src/drawer/title.tsx +53 -0
  764. package/src/drawer/trigger.tsx +14 -0
  765. package/src/drawer/types.ts +174 -0
  766. package/src/empty-state/stories/index.story.tsx +7 -0
  767. package/src/form/index.ts +1 -0
  768. package/src/form/input-control/stories/index.story.tsx +7 -0
  769. package/src/form/primitives/autocomplete/clear.tsx +35 -0
  770. package/src/form/primitives/autocomplete/collection.tsx +13 -0
  771. package/src/form/primitives/autocomplete/empty.tsx +17 -0
  772. package/src/form/primitives/autocomplete/index.ts +12 -0
  773. package/src/form/primitives/autocomplete/input-group.tsx +16 -0
  774. package/src/form/primitives/autocomplete/input.tsx +20 -0
  775. package/src/form/primitives/autocomplete/item.tsx +24 -0
  776. package/src/form/primitives/autocomplete/list-body.tsx +23 -0
  777. package/src/form/primitives/autocomplete/list.tsx +17 -0
  778. package/src/form/primitives/autocomplete/popup.tsx +42 -0
  779. package/src/form/primitives/autocomplete/portal.tsx +16 -0
  780. package/src/form/primitives/autocomplete/root.tsx +11 -0
  781. package/src/form/primitives/autocomplete/stories/fixtures.ts +35 -0
  782. package/src/form/primitives/autocomplete/stories/index.story.tsx +445 -0
  783. package/src/form/primitives/autocomplete/style.module.css +7 -0
  784. package/src/form/primitives/autocomplete/test/index.test.tsx +162 -0
  785. package/src/form/primitives/autocomplete/types.ts +74 -0
  786. package/src/form/primitives/autocomplete/value.tsx +6 -0
  787. package/src/form/primitives/field/stories/index.story.tsx +12 -5
  788. package/src/form/primitives/fieldset/stories/index.story.tsx +10 -3
  789. package/src/form/primitives/index.ts +1 -0
  790. package/src/form/primitives/input/stories/index.story.tsx +7 -0
  791. package/src/form/primitives/input-layout/stories/index.story.tsx +8 -1
  792. package/src/form/primitives/select/index.ts +1 -0
  793. package/src/form/primitives/select/item.tsx +1 -2
  794. package/src/form/primitives/select/popup.tsx +34 -37
  795. package/src/form/primitives/select/portal.tsx +16 -0
  796. package/src/form/primitives/select/root.tsx +13 -2
  797. package/src/form/primitives/select/stories/index.story.tsx +152 -67
  798. package/src/form/primitives/select/test/index.test.tsx +130 -8
  799. package/src/form/primitives/select/trigger.tsx +11 -8
  800. package/src/form/primitives/select/types.ts +22 -7
  801. package/src/form/primitives/textarea/stories/index.story.tsx +7 -0
  802. package/src/form/select-control/context.tsx +9 -0
  803. package/src/form/select-control/index.ts +14 -0
  804. package/src/form/select-control/item.tsx +13 -0
  805. package/src/form/select-control/select-control.tsx +65 -0
  806. package/src/form/select-control/stories/index.story.tsx +220 -0
  807. package/src/form/select-control/test/index.test.tsx +196 -0
  808. package/src/form/select-control/types.ts +50 -0
  809. package/src/form/types.ts +1 -1
  810. package/src/icon/stories/index.story.tsx +7 -0
  811. package/src/icon-button/icon-button.tsx +2 -1
  812. package/src/icon-button/stories/index.story.tsx +20 -0
  813. package/src/icon-button/types.ts +9 -0
  814. package/src/index.ts +1 -0
  815. package/src/link/stories/index.story.tsx +12 -11
  816. package/src/link/style.module.css +2 -1
  817. package/src/notice/stories/index.story.tsx +7 -0
  818. package/src/popover/context.tsx +6 -105
  819. package/src/popover/description.tsx +1 -5
  820. package/src/popover/index.ts +2 -1
  821. package/src/popover/popup.tsx +15 -16
  822. package/src/popover/portal.tsx +17 -0
  823. package/src/popover/root.tsx +2 -2
  824. package/src/popover/stories/index.story.tsx +61 -24
  825. package/src/popover/style.module.css +34 -27
  826. package/src/popover/test/index.test.tsx +46 -7
  827. package/src/popover/title.tsx +3 -2
  828. package/src/popover/types.ts +10 -15
  829. package/src/stack/stories/index.story.tsx +6 -0
  830. package/src/tabs/stories/index.story.tsx +15 -1
  831. package/src/text/stories/index.story.tsx +6 -0
  832. package/src/text/style.module.css +25 -0
  833. package/src/text/text.tsx +2 -2
  834. package/src/tooltip/index.ts +3 -1
  835. package/src/tooltip/popup.tsx +32 -44
  836. package/src/tooltip/portal.tsx +16 -0
  837. package/src/tooltip/positioner.tsx +36 -0
  838. package/src/tooltip/provider.tsx +3 -3
  839. package/src/tooltip/root.tsx +2 -2
  840. package/src/tooltip/stories/index.story.tsx +97 -9
  841. package/src/tooltip/stories/usage-guidelines.story.tsx +5 -0
  842. package/src/tooltip/style.module.css +12 -12
  843. package/src/tooltip/test/index.test.tsx +9 -3
  844. package/src/tooltip/trigger.tsx +3 -7
  845. package/src/tooltip/types.ts +26 -9
  846. package/src/utils/create-overlay-modal-context.tsx +34 -0
  847. package/src/utils/create-overlay-title-validation.tsx +116 -0
  848. package/src/utils/css/dropdown-motion.module.css +3 -3
  849. package/src/utils/css/item-popup.module.css +14 -24
  850. package/src/utils/css/overlay-chrome.module.css +239 -0
  851. package/src/utils/css/select-trigger.module.css +5 -2
  852. package/src/utils/render-slot-with-children.ts +31 -0
  853. package/src/utils/test/use-deprioritized-initial-focus.test.tsx +3 -3
  854. package/src/utils/use-deprioritized-initial-focus.ts +23 -17
  855. package/src/utils/use-overlay-scroll-state-attributes.ts +272 -0
  856. package/src/visually-hidden/stories/index.story.tsx +7 -0
  857. package/src/visually-hidden/visually-hidden.tsx +9 -21
@@ -0,0 +1,17 @@
1
+ import { Popover as _Popover } from '@base-ui/react/popover';
2
+ import { forwardRef } from '@wordpress/element';
3
+ import type { PortalProps } from './types';
4
+
5
+ /**
6
+ * Root element that portals `Popover` floating content. Pass to
7
+ * `Popover.Popup`'s `portal` prop (for example `container` for
8
+ * cross-document rendering). When `portal` is omitted, `Popover.Popup` uses
9
+ * this component with default props.
10
+ */
11
+ const Portal = forwardRef< HTMLDivElement, PortalProps >(
12
+ function PopoverPortal( props, ref ) {
13
+ return <_Popover.Portal ref={ ref } { ...props } />;
14
+ }
15
+ );
16
+
17
+ export { Portal };
@@ -12,8 +12,8 @@ import type { RootProps } from './types';
12
12
  *
13
13
  * - `Popover.Root` — provides open state and context to all sub-components.
14
14
  * - `Popover.Trigger` — the button that toggles the popup.
15
- * - `Popover.Popup` — the floating container (portal, positioning, collision
16
- * avoidance).
15
+ * - `Popover.Popup` — the floating container (positioning, collision
16
+ * avoidance); portals by default or via `portal={ <Popover.Portal /> }`.
17
17
  * - `Popover.Arrow` — an optional arrow pointing toward the anchor.
18
18
  * - `Popover.Title` — **required** heading that labels the popover for
19
19
  * accessibility (can be visually hidden).
@@ -13,6 +13,7 @@ const meta: Meta< typeof Popover.Root > = {
13
13
  component: Popover.Root,
14
14
  subcomponents: {
15
15
  'Popover.Trigger': Popover.Trigger,
16
+ 'Popover.Portal': Popover.Portal,
16
17
  'Popover.Popup': Popover.Popup,
17
18
  'Popover.Arrow': Popover.Arrow,
18
19
  'Popover.Title': Popover.Title,
@@ -22,6 +23,13 @@ const meta: Meta< typeof Popover.Root > = {
22
23
  argTypes: {
23
24
  children: { control: false },
24
25
  },
26
+ parameters: {
27
+ componentStatus: {
28
+ status: 'use-with-caution',
29
+ whereUsed: 'global',
30
+ notes: 'Not yet recommended for use alongside components from `@wordpress/components`, pending review of overlays compatibility. See [WordPress/gutenberg#76135](https://github.com/WordPress/gutenberg/issues/76135).',
31
+ },
32
+ },
25
33
  };
26
34
  export default meta;
27
35
 
@@ -443,10 +451,11 @@ export const OverlayPlacement: Story = {
443
451
  };
444
452
 
445
453
  /**
446
- * To render the popup inline (without a portal), create a local ref to a
447
- * `<span>` with `display: contents` and pass it as the `container` prop.
448
- * The popup will render inside the span rather than being portaled to
449
- * `document.body`, while retaining all positioning behavior.
454
+ * To keep the floating layer **in page flow** next to surrounding layout,
455
+ * create a local ref to a `<span>` with `display: contents` and pass
456
+ * `portal={ <Popover.Portal container={ ref } /> }`. The popup still uses a
457
+ * portal, but the portal **mounts** into that subtree instead of
458
+ * `document.body`, while retaining positioning behavior.
450
459
  *
451
460
  * **Note:** `backdrop` will not cover the full viewport in this mode.
452
461
  */
@@ -463,7 +472,11 @@ export const Inline: Story = {
463
472
  ref={ inlineContainerRef }
464
473
  style={ { display: 'contents' } }
465
474
  />
466
- <Popover.Popup container={ inlineContainerRef }>
475
+ <Popover.Popup
476
+ portal={
477
+ <Popover.Portal container={ inlineContainerRef } />
478
+ }
479
+ >
467
480
  <Popover.Arrow />
468
481
  <Popover.Title
469
482
  style={ {
@@ -473,8 +486,10 @@ export const Inline: Story = {
473
486
  Inline Popover
474
487
  </Popover.Title>
475
488
  <Popover.Description>
476
- This popup is rendered in place — no portal is used.
477
- Inspect the DOM to see it lives inside its parent.
489
+ This example still uses `Popover.Portal`, but the
490
+ portal `container` is the in-tree span above, so the
491
+ portal node mounts inside the wrapper instead of
492
+ `document.body`.
478
493
  </Popover.Description>
479
494
  </Popover.Popup>
480
495
  </Popover.Root>
@@ -572,8 +587,8 @@ export const CollisionAvoidance: Story = {
572
587
 
573
588
  /**
574
589
  * When the popover's trigger lives inside an iframe but the popover should
575
- * render in the parent document, pass a parent-document element to the
576
- * `container` prop on `Popover.Popup`.
590
+ * render in the parent document, pass a parent-document element through
591
+ * `portal={ <Popover.Portal container={ ... } /> }` on `Popover.Popup`.
577
592
  *
578
593
  * This technique is used in Gutenberg where the block editor canvas is an
579
594
  * iframe but toolbars and menus must appear outside it.
@@ -624,8 +639,12 @@ export const CrossIframe: Story = {
624
639
  Popover&apos;s anchor (inside iframe)
625
640
  </Popover.Trigger>
626
641
  <Popover.Popup
627
- container={
628
- portalContainerRef as React.RefObject< HTMLElement >
642
+ portal={
643
+ <Popover.Portal
644
+ container={
645
+ portalContainerRef as React.RefObject< HTMLElement >
646
+ }
647
+ />
629
648
  }
630
649
  collisionBoundary={
631
650
  iframeBoundary ?? undefined
@@ -661,9 +680,9 @@ export const CrossIframe: Story = {
661
680
  * `@wordpress/components` as the render target.
662
681
  *
663
682
  * The `Slot` renders a `div` in the parent document, and its forwarded ref
664
- * is passed to `Popover.Popup`'s `container` prop so the popup portals into
665
- * the slot element. This mirrors the legacy Popover's `WithSlotOutsideIframe`
666
- * pattern.
683
+ * is passed to `Popover.Portal`'s `container` prop (via `Popover.Popup`'s
684
+ * `portal` prop) so the popup portals into the slot element. This mirrors the
685
+ * legacy Popover's `WithSlotOutsideIframe` pattern.
667
686
  */
668
687
  export const CrossIframeWithSlotFill: Story = {
669
688
  name: 'Cross-Iframe (SlotFill)',
@@ -713,8 +732,12 @@ export const CrossIframeWithSlotFill: Story = {
713
732
  Popover&apos;s anchor (inside iframe)
714
733
  </Popover.Trigger>
715
734
  <Popover.Popup
716
- container={
717
- slotRef as React.RefObject< HTMLElement >
735
+ portal={
736
+ <Popover.Portal
737
+ container={
738
+ slotRef as React.RefObject< HTMLElement >
739
+ }
740
+ />
718
741
  }
719
742
  collisionBoundary={
720
743
  iframeBoundary ?? undefined
@@ -746,12 +769,19 @@ export const CrossIframeWithSlotFill: Story = {
746
769
 
747
770
  /**
748
771
  * Popovers in Gutenberg are managed with explicit z-index values, which can
749
- * create situations where a popover renders below another popover, when you
750
- * want it to be rendered above.
772
+ * create situations where a popover renders below another popover when you
773
+ * want it above.
774
+ *
775
+ * The `--wp-ui-popover-z-index` CSS variable controls the z-index of the
776
+ * popover's positioner (and its optional backdrop). Override it either:
751
777
  *
752
- * The `--wp-ui-popover-z-index` CSS variable, available on the
753
- * `Popover.Popup` component, is an escape hatch that can be used to override
754
- * the z-index of a given popover on a case-by-case basis.
778
+ * - **Globally**, by setting the variable on `:root` or `body` (raises every
779
+ * popover in the page), or
780
+ * - **Per instance**, by passing a `Popover.Portal` with a `style` (or
781
+ * `className`) to `Popover.Popup`'s `portal` prop. The variable cascades
782
+ * from the portal wrapper to everything rendered inside it.
783
+ *
784
+ * This story demonstrates the per-instance approach.
755
785
  */
756
786
  export const WithCustomZIndex: Story = {
757
787
  name: 'With Custom z-index',
@@ -759,7 +789,13 @@ export const WithCustomZIndex: Story = {
759
789
  children: (
760
790
  <>
761
791
  <Popover.Trigger>Open Popover</Popover.Trigger>
762
- <Popover.Popup style={ { '--wp-ui-popover-z-index': '9999' } }>
792
+ <Popover.Popup
793
+ portal={
794
+ <Popover.Portal
795
+ style={ { '--wp-ui-popover-z-index': '9999' } }
796
+ />
797
+ }
798
+ >
763
799
  <Popover.Arrow />
764
800
  <Popover.Title
765
801
  style={ {
@@ -769,8 +805,9 @@ export const WithCustomZIndex: Story = {
769
805
  Custom z-index
770
806
  </Popover.Title>
771
807
  <Popover.Description>
772
- This popover&apos;s positioner has z-index: 9999 via the
773
- `--wp-ui-popover-z-index` CSS custom property.
808
+ This popover renders at `z-index: 9999` via the
809
+ `--wp-ui-popover-z-index` CSS custom property, set on
810
+ `Popover.Portal` through the `portal` prop.
774
811
  </Popover.Description>
775
812
  </Popover.Popup>
776
813
  </>
@@ -1,37 +1,15 @@
1
1
  @layer wp-ui-utilities, wp-ui-components, wp-ui-compositions, wp-ui-overrides;
2
2
 
3
- /*
4
- * Temporary workaround for a Base UI tabbability regression with
5
- * checkVisibility() and display: contents.
6
- * See: https://github.com/mui/base-ui/issues/4622
7
- *
8
- * This must stay outside the CSS layers to override ThemeProvider's
9
- * unlayered display: contents.
10
- */
11
- [data-wpds-theme-provider-id]:has(> .popup) {
12
- display: block;
13
- }
14
-
15
3
  @layer wp-ui-components {
16
4
  .positioner {
17
5
  z-index: var(--wp-ui-popover-z-index, initial);
18
6
  }
19
7
 
20
- /*
21
- * Structural marker; no visual styles. Always applied to the popup so
22
- * the ThemeProvider display workaround above matches regardless of
23
- * `variant`. Visuals live in `.default`.
24
- */
25
- /* stylelint-disable-next-line block-no-empty -- structural marker for the
26
- * ThemeProvider display workaround above; kept class-based (not a data
27
- * attribute) so it is defined alongside the other component classes. */
28
- .popup {}
29
-
30
- .default {
8
+ .popup {
31
9
  background-color: var(--wpds-color-bg-surface-neutral-strong);
32
10
  padding: var(--wpds-dimension-padding-lg);
33
11
  border-radius: var(--wpds-border-radius-md);
34
- border: var(--wpds-border-width-xs) solid var(--wpds-color-stroke-surface-neutral-weak);
12
+ border: var(--wpds-border-width-xs) solid var(--wpds-color-stroke-surface-neutral);
35
13
  box-shadow: var(--wpds-elevation-md);
36
14
  font-family: var(--wpds-typography-font-family-body);
37
15
  font-size: var(--wpds-typography-font-size-md);
@@ -40,6 +18,34 @@
40
18
  outline: 0;
41
19
  }
42
20
 
21
+ /*
22
+ * When a backdrop is rendered alongside the popup, hide the
23
+ * regular-mode border. The backdrop already provides visual
24
+ * containment, so the border becomes redundant noise.
25
+ * `transparent` (not `none`) keeps popup geometry identical
26
+ * regardless of the `backdrop` prop — `box-sizing: border-box`
27
+ * absorbs the 1px into the existing box.
28
+ */
29
+ .backdrop ~ * .popup {
30
+ border-color: transparent;
31
+ }
32
+
33
+ /*
34
+ * Forced-colors mode strips `box-shadow` and substitutes
35
+ * `background-color` with `Canvas` (the page background), so the
36
+ * boundary depends entirely on the border. Set `CanvasText`
37
+ * explicitly for both backdrop and non-backdrop popups:
38
+ * `transparent` is not substituted by the UA, and being
39
+ * explicit also removes any reliance on UA color-substitution
40
+ * behavior for the non-backdrop case.
41
+ */
42
+ @media (forced-colors: active) {
43
+ .popup,
44
+ .backdrop ~ * .popup {
45
+ border-color: CanvasText;
46
+ }
47
+ }
48
+
43
49
  .arrow {
44
50
  display: flex;
45
51
 
@@ -69,11 +75,12 @@
69
75
  }
70
76
 
71
77
  .arrow-stroke {
72
- fill: var(--wpds-color-stroke-surface-neutral-weak);
78
+ fill: var(--wpds-color-stroke-surface-neutral);
73
79
  }
74
80
 
75
- .description {
76
- color: var(--wpds-color-fg-content-neutral-weak);
81
+ .title {
82
+ color: var(--wpds-color-fg-content-neutral);
83
+ --_gcd-heading-color: var(--wpds-color-fg-content-neutral);
77
84
  }
78
85
 
79
86
  .backdrop {
@@ -1,4 +1,4 @@
1
- import { render, screen, waitFor } from '@testing-library/react';
1
+ import { act, render, screen, waitFor } from '@testing-library/react';
2
2
  import userEvent from '@testing-library/user-event';
3
3
  import { createRef, useState } from '@wordpress/element';
4
4
  import * as Popover from '../index';
@@ -389,6 +389,35 @@ describe( 'Popover', () => {
389
389
  );
390
390
  } );
391
391
  } );
392
+
393
+ it( 'merges user `className` on Popover.Title with the internal one', async () => {
394
+ // Regression test for the shared `useRender` class-name merge
395
+ // that also covers Popover.Description and its Dialog/Drawer
396
+ // counterparts.
397
+ const user = userEvent.setup();
398
+
399
+ render(
400
+ <Popover.Root>
401
+ <Popover.Trigger>Open</Popover.Trigger>
402
+ <Popover.Popup>
403
+ <Popover.Title className="custom-title">
404
+ Title
405
+ </Popover.Title>
406
+ </Popover.Popup>
407
+ </Popover.Root>
408
+ );
409
+
410
+ await user.click( screen.getByRole( 'button', { name: 'Open' } ) );
411
+
412
+ const heading = await screen.findByRole( 'heading', {
413
+ name: 'Title',
414
+ } );
415
+ // The regression this guards against: `useRender` must still
416
+ // forward the user-supplied className to the underlying DOM node.
417
+ // CSS module classes are stubbed in the Jest environment, so we
418
+ // can only assert the user class end-to-end.
419
+ expect( heading ).toHaveClass( 'custom-title' );
420
+ } );
392
421
  } );
393
422
 
394
423
  describe( 'variant', () => {
@@ -434,7 +463,7 @@ describe( 'Popover', () => {
434
463
  } );
435
464
  } );
436
465
 
437
- describe( 'inline (via container)', () => {
466
+ describe( 'inline via portal (custom container)', () => {
438
467
  function InlinePopover() {
439
468
  const containerRef = createRef< HTMLSpanElement >();
440
469
  return (
@@ -445,7 +474,11 @@ describe( 'Popover', () => {
445
474
  ref={ containerRef }
446
475
  style={ { display: 'contents' } }
447
476
  />
448
- <Popover.Popup container={ containerRef }>
477
+ <Popover.Popup
478
+ portal={
479
+ <Popover.Portal container={ containerRef } />
480
+ }
481
+ >
449
482
  <Popover.Title>Title</Popover.Title>
450
483
  Inline content
451
484
  </Popover.Popup>
@@ -454,7 +487,7 @@ describe( 'Popover', () => {
454
487
  );
455
488
  }
456
489
 
457
- it( 'should render inside the container when a local ref is used', async () => {
490
+ it( 'should render inside the portal container when a local ref is used', async () => {
458
491
  const user = userEvent.setup();
459
492
 
460
493
  render( <InlinePopover /> );
@@ -715,7 +748,9 @@ describe( 'Popover', () => {
715
748
  expect( screen.getByText( 'Valid Title' ) ).toBeVisible();
716
749
  } );
717
750
 
718
- await new Promise( ( resolve ) => setTimeout( resolve, 50 ) );
751
+ await act(
752
+ () => new Promise( ( resolve ) => setTimeout( resolve, 50 ) )
753
+ );
719
754
  expect( errors ).toHaveLength( 0 );
720
755
 
721
756
  cleanup();
@@ -742,7 +777,9 @@ describe( 'Popover', () => {
742
777
  } );
743
778
 
744
779
  // Let initial validation settle — no errors expected.
745
- await new Promise( ( resolve ) => setTimeout( resolve, 50 ) );
780
+ await act(
781
+ () => new Promise( ( resolve ) => setTimeout( resolve, 50 ) )
782
+ );
746
783
  expect( errors ).toHaveLength( 0 );
747
784
 
748
785
  // Remove the title via rerender.
@@ -792,7 +829,9 @@ describe( 'Popover', () => {
792
829
  rerender( ui( true ) );
793
830
 
794
831
  // Wait for deferred validation to settle.
795
- await new Promise( ( resolve ) => setTimeout( resolve, 50 ) );
832
+ await act(
833
+ () => new Promise( ( resolve ) => setTimeout( resolve, 50 ) )
834
+ );
796
835
 
797
836
  // No new errors should have been thrown.
798
837
  expect( errors ).toHaveLength( errorCountAfterInitial );
@@ -3,6 +3,7 @@ import { useMergeRefs } from '@wordpress/compose';
3
3
  import { forwardRef, useEffect, useRef } from '@wordpress/element';
4
4
  import { Text } from '../text';
5
5
  import { usePopoverValidationContext } from './context';
6
+ import styles from './style.module.css';
6
7
  import type { TitleProps } from './types';
7
8
 
8
9
  /**
@@ -22,7 +23,7 @@ import type { TitleProps } from './types';
22
23
  * ```
23
24
  */
24
25
  const Title = forwardRef< HTMLHeadingElement, TitleProps >(
25
- function PopoverTitle( { className, children, ...props }, forwardedRef ) {
26
+ function PopoverTitle( { children, ...props }, forwardedRef ) {
26
27
  const validationContext = usePopoverValidationContext();
27
28
  const internalRef = useRef< HTMLHeadingElement >( null );
28
29
  const mergedRef = useMergeRefs( [ internalRef, forwardedRef ] );
@@ -39,7 +40,7 @@ const Title = forwardRef< HTMLHeadingElement, TitleProps >(
39
40
  ref={ mergedRef }
40
41
  variant="heading-xl"
41
42
  render={ <_Popover.Title { ...props } /> }
42
- className={ className }
43
+ className={ styles.title }
43
44
  >
44
45
  { children }
45
46
  </Text>
@@ -1,7 +1,10 @@
1
- import type { ReactNode } from 'react';
1
+ import type { ComponentPropsWithoutRef, ReactElement, ReactNode } from 'react';
2
2
  import type { Popover as _Popover } from '@base-ui/react/popover';
3
+
3
4
  import type { ComponentProps } from '../utils/types';
4
5
 
6
+ export type PortalProps = ComponentPropsWithoutRef< typeof _Popover.Portal >;
7
+
5
8
  export interface RootProps
6
9
  extends Pick<
7
10
  _Popover.Root.Props,
@@ -22,16 +25,6 @@ export interface TriggerProps
22
25
  children?: ReactNode;
23
26
  }
24
27
 
25
- /**
26
- * `Popover.Popup` maps to two Base UI elements internally: the
27
- * **Positioner** (outer, handles fixed positioning and z-index) and the
28
- * **Popup** (inner, holds content and visual styles).
29
- *
30
- * `style` and `className` are forwarded to the **Positioner** so that
31
- * z-index overrides (`--wp-ui-popover-z-index`) and Base UI CSS variables
32
- * (`--available-height`, `--available-width`) work correctly. All other
33
- * HTML attributes are forwarded to the inner **Popup** element.
34
- */
35
28
  export interface PopupProps
36
29
  extends ComponentProps< 'div' >,
37
30
  Pick<
@@ -64,12 +57,14 @@ export interface PopupProps
64
57
  children?: ReactNode;
65
58
 
66
59
  /**
67
- * A parent element to render the portal into.
60
+ * Optional portal element, typically `<Popover.Portal />` with custom
61
+ * `container` for cross-document rendering. Floating content is rendered
62
+ * as this portal's children (do not pass `children` on the portal element;
63
+ * they would be ignored).
68
64
  *
69
- * Useful for cross-document rendering, such as rendering a popover
70
- * in a parent document when the trigger is inside an iframe.
65
+ * When omitted, `Popover.Popup` uses `Popover.Portal` with default props.
71
66
  */
72
- container?: _Popover.Portal.Props[ 'container' ];
67
+ portal?: ReactElement< Omit< PortalProps, 'children' > >;
73
68
 
74
69
  /**
75
70
  * The visual style variant of the popup.
@@ -5,6 +5,12 @@ const meta: Meta< typeof Stack > = {
5
5
  tags: [ 'manifest' ],
6
6
  title: 'Design System/Components/Stack',
7
7
  component: Stack,
8
+ parameters: {
9
+ componentStatus: {
10
+ status: 'recommended',
11
+ whereUsed: 'global',
12
+ },
13
+ },
8
14
  };
9
15
  export default meta;
10
16
 
@@ -12,6 +12,13 @@ const meta: Meta< typeof Tabs.Root > = {
12
12
  'Tabs.Tab': Tabs.Tab,
13
13
  'Tabs.Panel': Tabs.Panel,
14
14
  },
15
+ parameters: {
16
+ componentStatus: {
17
+ status: 'use-with-caution',
18
+ whereUsed: 'global',
19
+ notes: 'Not yet recommended for use alongside components from `@wordpress/components`, pending review of color consistency with `@wordpress/components`. See [WordPress/gutenberg#76135](https://github.com/WordPress/gutenberg/issues/76135).',
20
+ },
21
+ },
15
22
  };
16
23
  export default meta;
17
24
 
@@ -281,7 +288,14 @@ export const WithTabIconsAndTooltips: StoryObj< typeof Tabs.Root > = {
281
288
  } }
282
289
  />
283
290
  </Tooltip.Trigger>
284
- <Tooltip.Popup align="center" side="top">
291
+ <Tooltip.Popup
292
+ positioner={
293
+ <Tooltip.Positioner
294
+ align="center"
295
+ side="top"
296
+ />
297
+ }
298
+ >
285
299
  { label }
286
300
  </Tooltip.Popup>
287
301
  </Tooltip.Root>
@@ -6,6 +6,12 @@ const meta: Meta< typeof Text > = {
6
6
  tags: [ 'manifest' ],
7
7
  title: 'Design System/Components/Text',
8
8
  component: Text,
9
+ parameters: {
10
+ componentStatus: {
11
+ status: 'recommended',
12
+ whereUsed: 'global',
13
+ },
14
+ },
9
15
  };
10
16
  export default meta;
11
17
 
@@ -5,8 +5,13 @@
5
5
  margin: 0;
6
6
  }
7
7
 
8
+ /* Text variants can render as either paragraphs or headings, so each variant
9
+ provides values for both element-specific CSS defenses. */
8
10
  .heading-2xl {
9
11
  --_gcd-heading-font-size: var(--wpds-typography-font-size-2xl);
12
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-medium);
13
+ --_gcd-p-font-size: var(--wpds-typography-font-size-2xl);
14
+ --_gcd-p-line-height: var(--wpds-typography-line-height-2xl);
10
15
 
11
16
  font-family: var(--wpds-typography-font-family-heading);
12
17
  font-size: var(--wpds-typography-font-size-2xl);
@@ -16,6 +21,9 @@
16
21
 
17
22
  .heading-xl {
18
23
  --_gcd-heading-font-size: var(--wpds-typography-font-size-xl);
24
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-medium);
25
+ --_gcd-p-font-size: var(--wpds-typography-font-size-xl);
26
+ --_gcd-p-line-height: var(--wpds-typography-line-height-md);
19
27
 
20
28
  font-family: var(--wpds-typography-font-family-heading);
21
29
  font-size: var(--wpds-typography-font-size-xl);
@@ -25,6 +33,9 @@
25
33
 
26
34
  .heading-lg {
27
35
  --_gcd-heading-font-size: var(--wpds-typography-font-size-lg);
36
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-medium);
37
+ --_gcd-p-font-size: var(--wpds-typography-font-size-lg);
38
+ --_gcd-p-line-height: var(--wpds-typography-line-height-sm);
28
39
 
29
40
  font-family: var(--wpds-typography-font-family-heading);
30
41
  font-size: var(--wpds-typography-font-size-lg);
@@ -34,6 +45,9 @@
34
45
 
35
46
  .heading-md {
36
47
  --_gcd-heading-font-size: var(--wpds-typography-font-size-md);
48
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-medium);
49
+ --_gcd-p-font-size: var(--wpds-typography-font-size-md);
50
+ --_gcd-p-line-height: var(--wpds-typography-line-height-sm);
37
51
 
38
52
  font-family: var(--wpds-typography-font-family-heading);
39
53
  font-size: var(--wpds-typography-font-size-md);
@@ -43,6 +57,9 @@
43
57
 
44
58
  .heading-sm {
45
59
  --_gcd-heading-font-size: var(--wpds-typography-font-size-xs);
60
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-medium);
61
+ --_gcd-p-font-size: var(--wpds-typography-font-size-xs);
62
+ --_gcd-p-line-height: var(--wpds-typography-line-height-xs);
46
63
 
47
64
  font-family: var(--wpds-typography-font-family-heading);
48
65
  font-size: var(--wpds-typography-font-size-xs);
@@ -52,6 +69,8 @@
52
69
  }
53
70
 
54
71
  .body-xl {
72
+ --_gcd-heading-font-size: var(--wpds-typography-font-size-xl);
73
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-regular);
55
74
  --_gcd-p-font-size: var(--wpds-typography-font-size-xl);
56
75
  --_gcd-p-line-height: var(--wpds-typography-line-height-xl);
57
76
 
@@ -62,6 +81,8 @@
62
81
  }
63
82
 
64
83
  .body-lg {
84
+ --_gcd-heading-font-size: var(--wpds-typography-font-size-lg);
85
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-regular);
65
86
  --_gcd-p-font-size: var(--wpds-typography-font-size-lg);
66
87
  --_gcd-p-line-height: var(--wpds-typography-line-height-md);
67
88
 
@@ -72,6 +93,8 @@
72
93
  }
73
94
 
74
95
  .body-md {
96
+ --_gcd-heading-font-size: var(--wpds-typography-font-size-md);
97
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-regular);
75
98
  --_gcd-p-font-size: var(--wpds-typography-font-size-md);
76
99
  --_gcd-p-line-height: var(--wpds-typography-line-height-sm);
77
100
 
@@ -82,6 +105,8 @@
82
105
  }
83
106
 
84
107
  .body-sm {
108
+ --_gcd-heading-font-size: var(--wpds-typography-font-size-sm);
109
+ --_gcd-heading-font-weight: var(--wpds-typography-font-weight-regular);
85
110
  --_gcd-p-font-size: var(--wpds-typography-font-size-sm);
86
111
  --_gcd-p-line-height: var(--wpds-typography-line-height-xs);
87
112
 
package/src/text/text.tsx CHANGED
@@ -20,8 +20,8 @@ export const Text = forwardRef< HTMLSpanElement, TextProps >( function Text(
20
20
  props: mergeProps< 'span' >( props, {
21
21
  className: clsx(
22
22
  styles.text,
23
- variant.startsWith( 'heading-' ) && defenseStyles.heading,
24
- variant.startsWith( 'body-' ) && defenseStyles.p,
23
+ defenseStyles.heading,
24
+ defenseStyles.p,
25
25
  styles[ variant ],
26
26
  className
27
27
  ),
@@ -1,6 +1,8 @@
1
1
  import { Popup } from './popup';
2
+ import { Portal } from './portal';
3
+ import { Positioner } from './positioner';
2
4
  import { Trigger } from './trigger';
3
5
  import { Root } from './root';
4
6
  import { Provider } from './provider';
5
7
 
6
- export { Provider, Root, Trigger, Popup };
8
+ export { Provider, Root, Trigger, Popup, Portal, Positioner };