@wordpress/components 25.9.1 → 25.11.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 (369) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/build/alignment-matrix-control/cell.js +8 -5
  3. package/build/alignment-matrix-control/cell.js.map +1 -1
  4. package/build/alignment-matrix-control/index.js +27 -43
  5. package/build/alignment-matrix-control/index.js.map +1 -1
  6. package/build/alignment-matrix-control/utils.js +29 -9
  7. package/build/alignment-matrix-control/utils.js.map +1 -1
  8. package/build/autocomplete/index.js +104 -52
  9. package/build/autocomplete/index.js.map +1 -1
  10. package/build/circular-option-picker/circular-option-picker-option.js +20 -39
  11. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
  12. package/build/circular-option-picker/circular-option-picker.js +11 -32
  13. package/build/circular-option-picker/circular-option-picker.js.map +1 -1
  14. package/build/circular-option-picker/types.js.map +1 -1
  15. package/build/color-palette/index.js +7 -2
  16. package/build/color-palette/index.js.map +1 -1
  17. package/build/color-picker/component.js +12 -2
  18. package/build/color-picker/component.js.map +1 -1
  19. package/build/color-picker/picker.js +77 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/styles.js +8 -8
  22. package/build/color-picker/styles.js.map +1 -1
  23. package/build/color-picker/types.js.map +1 -1
  24. package/build/composite/v2.js +43 -0
  25. package/build/composite/v2.js.map +1 -0
  26. package/build/confirm-dialog/component.js +74 -8
  27. package/build/confirm-dialog/component.js.map +1 -1
  28. package/build/confirm-dialog/types.js.map +1 -1
  29. package/build/custom-gradient-picker/gradient-bar/control-points.js +13 -4
  30. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  31. package/build/dropdown-menu-v2-ariakit/index.js +217 -0
  32. package/build/dropdown-menu-v2-ariakit/index.js.map +1 -0
  33. package/build/dropdown-menu-v2-ariakit/styles.js +157 -0
  34. package/build/dropdown-menu-v2-ariakit/styles.js.map +1 -0
  35. package/build/dropdown-menu-v2-ariakit/types.js +6 -0
  36. package/build/dropdown-menu-v2-ariakit/types.js.map +1 -0
  37. package/build/font-size-picker/utils.js +1 -1
  38. package/build/font-size-picker/utils.js.map +1 -1
  39. package/build/input-control/styles/input-control-styles.js +23 -23
  40. package/build/input-control/styles/input-control-styles.js.map +1 -1
  41. package/build/mobile/global-styles-context/utils.native.js +1 -1
  42. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  43. package/build/modal/index.js +45 -16
  44. package/build/modal/index.js.map +1 -1
  45. package/build/palette-edit/index.js +4 -0
  46. package/build/palette-edit/index.js.map +1 -1
  47. package/build/popover/index.js +34 -6
  48. package/build/popover/index.js.map +1 -1
  49. package/build/private-apis.js +18 -2
  50. package/build/private-apis.js.map +1 -1
  51. package/build/progress-bar/styles.js +5 -5
  52. package/build/progress-bar/styles.js.map +1 -1
  53. package/build/sandbox/index.js +1 -1
  54. package/build/sandbox/index.js.map +1 -1
  55. package/build/sandbox/index.native.js +1 -1
  56. package/build/sandbox/index.native.js.map +1 -1
  57. package/build/select-control/styles/select-control-styles.js +8 -8
  58. package/build/select-control/styles/select-control-styles.js.map +1 -1
  59. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  60. package/build/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  61. package/build/tabs/context.js +16 -0
  62. package/build/tabs/context.js.map +1 -0
  63. package/build/tabs/index.js +147 -0
  64. package/build/tabs/index.js.map +1 -0
  65. package/build/tabs/styles.js +38 -0
  66. package/build/tabs/styles.js.map +1 -0
  67. package/build/tabs/tab.js +46 -0
  68. package/build/tabs/tab.js.map +1 -0
  69. package/build/tabs/tablist.js +47 -0
  70. package/build/tabs/tablist.js.map +1 -0
  71. package/build/tabs/tabpanel.js +48 -0
  72. package/build/tabs/tabpanel.js.map +1 -0
  73. package/build/tabs/types.js +6 -0
  74. package/build/tabs/types.js.map +1 -0
  75. package/build/text/component.js +7 -6
  76. package/build/text/component.js.map +1 -1
  77. package/build/text/hook.js +6 -15
  78. package/build/text/hook.js.map +1 -1
  79. package/build/text/index.js.map +1 -1
  80. package/build/text/styles.js +7 -7
  81. package/build/text/styles.js.map +1 -1
  82. package/build/text/types.js.map +1 -1
  83. package/build/text/utils.js +17 -33
  84. package/build/text/utils.js.map +1 -1
  85. package/build/toggle-group-control/toggle-group-control-option-base/component.js +1 -0
  86. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  87. package/build/toolbar/toolbar/index.js +17 -10
  88. package/build/toolbar/toolbar/index.js.map +1 -1
  89. package/build/toolbar/toolbar/types.js.map +1 -1
  90. package/build/tools-panel/tools-panel-item/hook.js +2 -2
  91. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  92. package/build/tools-panel/types.js.map +1 -1
  93. package/build/tooltip/index.js +2 -2
  94. package/build/tooltip/index.js.map +1 -1
  95. package/build/unit-control/utils.js +108 -0
  96. package/build/unit-control/utils.js.map +1 -1
  97. package/build/utils/unit-values.js +1 -1
  98. package/build/utils/unit-values.js.map +1 -1
  99. package/build-module/alignment-matrix-control/cell.js +7 -4
  100. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  101. package/build-module/alignment-matrix-control/index.js +27 -43
  102. package/build-module/alignment-matrix-control/index.js.map +1 -1
  103. package/build-module/alignment-matrix-control/utils.js +29 -8
  104. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  105. package/build-module/autocomplete/index.js +104 -52
  106. package/build-module/autocomplete/index.js.map +1 -1
  107. package/build-module/circular-option-picker/circular-option-picker-option.js +20 -39
  108. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
  109. package/build-module/circular-option-picker/circular-option-picker.js +10 -31
  110. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
  111. package/build-module/circular-option-picker/types.js.map +1 -1
  112. package/build-module/color-palette/index.js +7 -2
  113. package/build-module/color-palette/index.js.map +1 -1
  114. package/build-module/color-picker/component.js +13 -3
  115. package/build-module/color-picker/component.js.map +1 -1
  116. package/build-module/color-picker/picker.js +78 -2
  117. package/build-module/color-picker/picker.js.map +1 -1
  118. package/build-module/color-picker/styles.js +8 -8
  119. package/build-module/color-picker/styles.js.map +1 -1
  120. package/build-module/color-picker/types.js.map +1 -1
  121. package/build-module/composite/v2.js +15 -0
  122. package/build-module/composite/v2.js.map +1 -0
  123. package/build-module/confirm-dialog/component.js +72 -7
  124. package/build-module/confirm-dialog/component.js.map +1 -1
  125. package/build-module/confirm-dialog/types.js.map +1 -1
  126. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +13 -4
  127. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  128. package/build-module/dropdown-menu-v2-ariakit/index.js +199 -0
  129. package/build-module/dropdown-menu-v2-ariakit/index.js.map +1 -0
  130. package/build-module/dropdown-menu-v2-ariakit/styles.js +136 -0
  131. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +1 -0
  132. package/build-module/dropdown-menu-v2-ariakit/types.js +2 -0
  133. package/build-module/dropdown-menu-v2-ariakit/types.js.map +1 -0
  134. package/build-module/font-size-picker/utils.js +1 -1
  135. package/build-module/font-size-picker/utils.js.map +1 -1
  136. package/build-module/input-control/styles/input-control-styles.js +23 -23
  137. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  138. package/build-module/mobile/global-styles-context/utils.native.js +2 -2
  139. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  140. package/build-module/modal/index.js +47 -18
  141. package/build-module/modal/index.js.map +1 -1
  142. package/build-module/palette-edit/index.js +4 -0
  143. package/build-module/palette-edit/index.js.map +1 -1
  144. package/build-module/popover/index.js +34 -6
  145. package/build-module/popover/index.js.map +1 -1
  146. package/build-module/private-apis.js +18 -2
  147. package/build-module/private-apis.js.map +1 -1
  148. package/build-module/progress-bar/styles.js +5 -5
  149. package/build-module/progress-bar/styles.js.map +1 -1
  150. package/build-module/sandbox/index.js +1 -1
  151. package/build-module/sandbox/index.js.map +1 -1
  152. package/build-module/sandbox/index.native.js +1 -1
  153. package/build-module/sandbox/index.native.js.map +1 -1
  154. package/build-module/select-control/styles/select-control-styles.js +8 -8
  155. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  156. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js +1 -1
  157. package/build-module/slot-fill/bubbles-virtually/slot-fill-provider.js.map +1 -1
  158. package/build-module/tabs/context.js +12 -0
  159. package/build-module/tabs/context.js.map +1 -0
  160. package/build-module/tabs/index.js +142 -0
  161. package/build-module/tabs/index.js.map +1 -0
  162. package/build-module/tabs/styles.js +36 -0
  163. package/build-module/tabs/styles.js.map +1 -0
  164. package/build-module/tabs/tab.js +43 -0
  165. package/build-module/tabs/tab.js.map +1 -0
  166. package/build-module/tabs/tablist.js +41 -0
  167. package/build-module/tabs/tablist.js.map +1 -0
  168. package/build-module/tabs/tabpanel.js +43 -0
  169. package/build-module/tabs/tabpanel.js.map +1 -0
  170. package/build-module/tabs/types.js +2 -0
  171. package/build-module/tabs/types.js.map +1 -0
  172. package/build-module/text/component.js +6 -6
  173. package/build-module/text/component.js.map +1 -1
  174. package/build-module/text/hook.js +11 -19
  175. package/build-module/text/hook.js.map +1 -1
  176. package/build-module/text/index.js.map +1 -1
  177. package/build-module/text/styles.js +7 -7
  178. package/build-module/text/styles.js.map +1 -1
  179. package/build-module/text/types.js.map +1 -1
  180. package/build-module/text/utils.js +17 -10
  181. package/build-module/text/utils.js.map +1 -1
  182. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +1 -0
  183. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  184. package/build-module/toolbar/toolbar/index.js +18 -11
  185. package/build-module/toolbar/toolbar/index.js.map +1 -1
  186. package/build-module/toolbar/toolbar/types.js.map +1 -1
  187. package/build-module/tools-panel/tools-panel-item/hook.js +2 -2
  188. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  189. package/build-module/tools-panel/types.js.map +1 -1
  190. package/build-module/tooltip/index.js +2 -2
  191. package/build-module/tooltip/index.js.map +1 -1
  192. package/build-module/unit-control/utils.js +108 -0
  193. package/build-module/unit-control/utils.js.map +1 -1
  194. package/build-module/utils/unit-values.js +1 -1
  195. package/build-module/utils/unit-values.js.map +1 -1
  196. package/build-style/style-rtl.css +17 -5
  197. package/build-style/style.css +17 -5
  198. package/build-types/alignment-matrix-control/cell.d.ts +1 -1
  199. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -1
  200. package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
  201. package/build-types/alignment-matrix-control/stories/index.story.d.ts.map +1 -1
  202. package/build-types/alignment-matrix-control/utils.d.ts +9 -9
  203. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -1
  204. package/build-types/autocomplete/index.d.ts.map +1 -1
  205. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
  206. package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -1
  207. package/build-types/circular-option-picker/types.d.ts +4 -6
  208. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  209. package/build-types/color-palette/index.d.ts.map +1 -1
  210. package/build-types/color-picker/component.d.ts.map +1 -1
  211. package/build-types/color-picker/picker.d.ts +1 -1
  212. package/build-types/color-picker/picker.d.ts.map +1 -1
  213. package/build-types/color-picker/styles.d.ts.map +1 -1
  214. package/build-types/color-picker/types.d.ts +3 -0
  215. package/build-types/color-picker/types.d.ts.map +1 -1
  216. package/build-types/composite/v2.d.ts +12 -0
  217. package/build-types/composite/v2.d.ts.map +1 -0
  218. package/build-types/confirm-dialog/component.d.ts +70 -29
  219. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  220. package/build-types/confirm-dialog/stories/index.story.d.ts +11 -0
  221. package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -0
  222. package/build-types/confirm-dialog/test/index.d.ts +2 -0
  223. package/build-types/confirm-dialog/test/index.d.ts.map +1 -0
  224. package/build-types/confirm-dialog/types.d.ts +32 -10
  225. package/build-types/confirm-dialog/types.d.ts.map +1 -1
  226. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  227. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +11 -0
  228. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +1 -0
  229. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +16 -0
  230. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +1 -0
  231. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +88 -0
  232. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +1 -0
  233. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts +2 -0
  234. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +1 -0
  235. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +174 -0
  236. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +1 -0
  237. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  238. package/build-types/heading/stories/index.story.d.ts.map +1 -1
  239. package/build-types/modal/index.d.ts.map +1 -1
  240. package/build-types/palette-edit/index.d.ts.map +1 -1
  241. package/build-types/popover/index.d.ts +1 -1
  242. package/build-types/popover/index.d.ts.map +1 -1
  243. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  244. package/build-types/private-apis.d.ts.map +1 -1
  245. package/build-types/progress-bar/styles.d.ts.map +1 -1
  246. package/build-types/sandbox/index.d.ts.map +1 -1
  247. package/build-types/tabs/context.d.ts +8 -0
  248. package/build-types/tabs/context.d.ts.map +1 -0
  249. package/build-types/tabs/index.d.ts +13 -0
  250. package/build-types/tabs/index.d.ts.map +1 -0
  251. package/build-types/tabs/stories/index.story.d.ts +20 -0
  252. package/build-types/tabs/stories/index.story.d.ts.map +1 -0
  253. package/build-types/tabs/styles.d.ts +17 -0
  254. package/build-types/tabs/styles.d.ts.map +1 -0
  255. package/build-types/tabs/tab.d.ts +10 -0
  256. package/build-types/tabs/tab.d.ts.map +1 -0
  257. package/build-types/tabs/tablist.d.ts +7 -0
  258. package/build-types/tabs/tablist.d.ts.map +1 -0
  259. package/build-types/tabs/tabpanel.d.ts +7 -0
  260. package/build-types/tabs/tabpanel.d.ts.map +1 -0
  261. package/build-types/tabs/test/index.d.ts +2 -0
  262. package/build-types/tabs/test/index.d.ts.map +1 -0
  263. package/build-types/tabs/types.d.ts +134 -0
  264. package/build-types/tabs/types.d.ts.map +1 -0
  265. package/build-types/text/component.d.ts +4 -2
  266. package/build-types/text/component.d.ts.map +1 -1
  267. package/build-types/text/hook.d.ts +171 -165
  268. package/build-types/text/hook.d.ts.map +1 -1
  269. package/build-types/text/index.d.ts +2 -2
  270. package/build-types/text/index.d.ts.map +1 -1
  271. package/build-types/text/stories/index.story.d.ts +21 -0
  272. package/build-types/text/stories/index.story.d.ts.map +1 -0
  273. package/build-types/text/styles.d.ts +7 -7
  274. package/build-types/text/styles.d.ts.map +1 -1
  275. package/build-types/text/types.d.ts +1 -1
  276. package/build-types/text/types.d.ts.map +1 -1
  277. package/build-types/text/utils.d.ts +56 -61
  278. package/build-types/text/utils.d.ts.map +1 -1
  279. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  280. package/build-types/toolbar/stories/index.story.d.ts +5 -0
  281. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  282. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  283. package/build-types/toolbar/toolbar/types.d.ts +10 -0
  284. package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
  285. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  286. package/build-types/tools-panel/types.d.ts +2 -0
  287. package/build-types/tools-panel/types.d.ts.map +1 -1
  288. package/build-types/tooltip/index.d.ts.map +1 -1
  289. package/build-types/unit-control/utils.d.ts.map +1 -1
  290. package/package.json +21 -20
  291. package/src/alignment-matrix-control/cell.tsx +6 -2
  292. package/src/alignment-matrix-control/index.tsx +31 -54
  293. package/src/alignment-matrix-control/stories/index.story.tsx +3 -7
  294. package/src/alignment-matrix-control/test/index.tsx +117 -18
  295. package/src/alignment-matrix-control/utils.tsx +33 -9
  296. package/src/autocomplete/index.tsx +136 -77
  297. package/src/button/style.scss +1 -2
  298. package/src/circular-option-picker/circular-option-picker-option.tsx +24 -38
  299. package/src/circular-option-picker/circular-option-picker.tsx +11 -28
  300. package/src/circular-option-picker/types.ts +6 -5
  301. package/src/color-palette/index.tsx +6 -1
  302. package/src/color-picker/component.tsx +25 -3
  303. package/src/color-picker/picker.tsx +96 -2
  304. package/src/color-picker/styles.ts +0 -1
  305. package/src/color-picker/types.ts +3 -0
  306. package/src/composite/v2.ts +22 -0
  307. package/src/confirm-dialog/README.md +1 -1
  308. package/src/confirm-dialog/component.tsx +79 -13
  309. package/src/confirm-dialog/stories/{index.story.js → index.story.tsx} +26 -24
  310. package/src/confirm-dialog/test/{index.js → index.tsx} +3 -3
  311. package/src/confirm-dialog/types.ts +32 -12
  312. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +32 -25
  313. package/src/dimension-control/test/__snapshots__/index.test.js.snap +8 -8
  314. package/src/dropdown-menu-v2-ariakit/README.md +324 -0
  315. package/src/dropdown-menu-v2-ariakit/index.tsx +318 -0
  316. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +506 -0
  317. package/src/dropdown-menu-v2-ariakit/styles.ts +297 -0
  318. package/src/dropdown-menu-v2-ariakit/test/index.tsx +1139 -0
  319. package/src/dropdown-menu-v2-ariakit/types.ts +186 -0
  320. package/src/font-size-picker/utils.ts +2 -1
  321. package/src/heading/stories/index.story.tsx +2 -4
  322. package/src/input-control/styles/input-control-styles.tsx +2 -2
  323. package/src/mobile/global-styles-context/utils.native.js +2 -2
  324. package/src/modal/index.tsx +58 -22
  325. package/src/modal/test/index.tsx +29 -0
  326. package/src/notice/style.scss +0 -1
  327. package/src/palette-edit/index.tsx +4 -0
  328. package/src/popover/index.tsx +99 -57
  329. package/src/popover/style.scss +9 -0
  330. package/src/private-apis.ts +31 -1
  331. package/src/progress-bar/styles.ts +19 -4
  332. package/src/sandbox/index.native.js +1 -1
  333. package/src/sandbox/index.tsx +3 -1
  334. package/src/select-control/styles/select-control-styles.ts +2 -2
  335. package/src/slot-fill/bubbles-virtually/slot-fill-provider.tsx +1 -1
  336. package/src/tabs/README.md +242 -0
  337. package/src/tabs/context.ts +13 -0
  338. package/src/tabs/index.tsx +167 -0
  339. package/src/tabs/stories/index.story.tsx +352 -0
  340. package/src/tabs/styles.ts +103 -0
  341. package/src/tabs/tab.tsx +39 -0
  342. package/src/tabs/tablist.tsx +40 -0
  343. package/src/tabs/tabpanel.tsx +42 -0
  344. package/src/tabs/test/index.tsx +1133 -0
  345. package/src/tabs/types.ts +142 -0
  346. package/src/text/README.md +2 -2
  347. package/src/text/{component.js → component.tsx} +10 -6
  348. package/src/text/{hook.js → hook.ts} +12 -15
  349. package/src/text/stories/index.story.tsx +80 -0
  350. package/src/text/types.ts +1 -6
  351. package/src/text/{utils.js → utils.ts} +40 -14
  352. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +16 -0
  353. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +1 -0
  354. package/src/toolbar/stories/index.story.tsx +15 -0
  355. package/src/toolbar/test/index.tsx +8 -0
  356. package/src/toolbar/toolbar/README.md +9 -0
  357. package/src/toolbar/toolbar/index.tsx +21 -12
  358. package/src/toolbar/toolbar/style.scss +9 -0
  359. package/src/toolbar/toolbar/types.ts +10 -0
  360. package/src/tools-panel/tools-panel/README.md +3 -0
  361. package/src/tools-panel/tools-panel-item/hook.ts +4 -6
  362. package/src/tools-panel/types.ts +2 -0
  363. package/src/tooltip/index.tsx +2 -3
  364. package/src/unit-control/utils.ts +124 -0
  365. package/src/utils/unit-values.ts +1 -1
  366. package/tsconfig.tsbuildinfo +1 -1
  367. package/src/text/stories/index.story.js +0 -53
  368. /package/src/text/{index.js → index.ts} +0 -0
  369. /package/src/text/{styles.js → styles.ts} +0 -0
@@ -0,0 +1,186 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ // eslint-disable-next-line no-restricted-imports
5
+ import type * as Ariakit from '@ariakit/react';
6
+ import type { Placement } from '@floating-ui/react-dom';
7
+
8
+ export interface DropdownMenuContext {
9
+ /**
10
+ * The ariakit store shared across all DropdownMenu subcomponents.
11
+ */
12
+ store: Ariakit.MenuStore;
13
+ /**
14
+ * The variant used by the underlying menu popover.
15
+ */
16
+ variant?: 'toolbar';
17
+ }
18
+
19
+ export interface DropdownMenuProps {
20
+ /**
21
+ * The trigger button.
22
+ */
23
+ trigger: React.ReactElement;
24
+ /**
25
+ * The contents of the dropdown.
26
+ */
27
+ children?: React.ReactNode;
28
+ /**
29
+ * The open state of the dropdown menu when it is initially rendered. Use when
30
+ * not wanting to control its open state.
31
+ *
32
+ * @default false
33
+ */
34
+ defaultOpen?: boolean;
35
+ /**
36
+ * The controlled open state of the dropdown menu. Must be used in conjunction
37
+ * with `onOpenChange`.
38
+ */
39
+ open?: boolean;
40
+ /**
41
+ * Event handler called when the open state of the dropdown menu changes.
42
+ */
43
+ onOpenChange?: ( open: boolean ) => void;
44
+ /**
45
+ * The modality of the dropdown menu. When set to true, interaction with
46
+ * outside elements will be disabled and only menu content will be visible to
47
+ * screen readers.
48
+ *
49
+ * @default true
50
+ */
51
+ modal?: boolean;
52
+ /**
53
+ * The placement of the dropdown menu popover.
54
+ *
55
+ * @default 'bottom-start' for root-level menus, 'right-start' for nested menus
56
+ */
57
+ placement?: Placement;
58
+ /**
59
+ * The distance between the popover and the anchor element.
60
+ *
61
+ * @default 8 for root-level menus, 16 for nested menus
62
+ */
63
+ gutter?: number;
64
+ /**
65
+ * The skidding of the popover along the anchor element. Can be set to
66
+ * negative values to make the popover shift to the opposite side.
67
+ *
68
+ * @default 0 for root-level menus, -8 for nested menus
69
+ */
70
+ shift?: number;
71
+ /**
72
+ * Determines whether the menu popover will be hidden when the user presses
73
+ * the Escape key.
74
+ *
75
+ * @default true
76
+ */
77
+ hideOnEscape?:
78
+ | boolean
79
+ | ( (
80
+ event: KeyboardEvent | React.KeyboardEvent< Element >
81
+ ) => boolean );
82
+ }
83
+
84
+ export interface DropdownMenuGroupProps {
85
+ /**
86
+ * The contents of the dropdown menu group.
87
+ */
88
+ children: React.ReactNode;
89
+ }
90
+
91
+ export interface DropdownMenuGroupLabelProps {
92
+ /**
93
+ * The contents of the dropdown menu group label.
94
+ */
95
+ children: React.ReactNode;
96
+ }
97
+
98
+ export interface DropdownMenuItemProps {
99
+ /**
100
+ * The contents of the menu item.
101
+ */
102
+ children: React.ReactNode;
103
+ /**
104
+ * The contents of the menu item's prefix.
105
+ */
106
+ prefix?: React.ReactNode;
107
+ /**
108
+ * The contents of the menu item's suffix.
109
+ */
110
+ suffix?: React.ReactNode;
111
+ /**
112
+ * Whether to hide the parent menu when the item is clicked.
113
+ *
114
+ * @default true
115
+ */
116
+ hideOnClick?: boolean;
117
+ /**
118
+ * Determines if the element is disabled.
119
+ */
120
+ disabled?: boolean;
121
+ }
122
+
123
+ export interface DropdownMenuCheckboxItemProps
124
+ extends Omit< DropdownMenuItemProps, 'prefix' | 'hideOnClick' > {
125
+ /**
126
+ * Whether to hide the dropdown menu when the item is clicked.
127
+ *
128
+ * @default false
129
+ */
130
+ hideOnClick?: boolean;
131
+ /**
132
+ * The checkbox menu item's name.
133
+ */
134
+ name: string;
135
+ /**
136
+ * The checkbox item's value, useful when using multiple checkbox menu items
137
+ * associated to the same `name`.
138
+ */
139
+ value?: string;
140
+ /**
141
+ * The controlled checked state of the checkbox menu item.
142
+ */
143
+ checked?: boolean;
144
+ /**
145
+ * The checked state of the checkbox menu item when it is initially rendered.
146
+ * Use when not wanting to control its checked state.
147
+ */
148
+ defaultChecked?: boolean;
149
+ /**
150
+ * Event handler called when the checked state of the checkbox menu item changes.
151
+ */
152
+ onChange?: ( event: React.ChangeEvent< HTMLInputElement > ) => void;
153
+ }
154
+
155
+ export interface DropdownMenuRadioItemProps
156
+ extends Omit< DropdownMenuItemProps, 'prefix' | 'hideOnClick' > {
157
+ /**
158
+ * Whether to hide the dropdown menu when the item is clicked.
159
+ *
160
+ * @default false
161
+ */
162
+ hideOnClick?: boolean;
163
+ /**
164
+ * The radio item's name.
165
+ */
166
+ name: string;
167
+ /**
168
+ * The radio item's value.
169
+ */
170
+ value: string | number;
171
+ /**
172
+ * The controlled checked state of the radio menu item.
173
+ */
174
+ checked?: boolean;
175
+ /**
176
+ * The checked state of the radio menu item when it is initially rendered.
177
+ * Use when not wanting to control its checked state.
178
+ */
179
+ defaultChecked?: boolean;
180
+ /**
181
+ * Event handler called when the checked radio menu item changes.
182
+ */
183
+ onChange?: ( event: React.ChangeEvent< HTMLInputElement > ) => void;
184
+ }
185
+
186
+ export interface DropdownMenuSeparatorProps {}
@@ -19,7 +19,8 @@ import { parseQuantityAndUnitFromRawValue } from '../unit-control';
19
19
  export function isSimpleCssValue(
20
20
  value: NonNullable< FontSizePickerProps[ 'value' ] >
21
21
  ) {
22
- const sizeRegex = /^[\d\.]+(px|em|rem|vw|vh|%)?$/i;
22
+ const sizeRegex =
23
+ /^[\d\.]+(px|em|rem|vw|vh|%|svw|lvw|dvw|svh|lvh|dvh|vi|svi|lvi|dvi|vb|svb|lvb|dvb|vmin|svmin|lvmin|dvmin|vmax|svmax|lvmax|dvmax)?$/i;
23
24
  return sizeRegex.test( String( value ) );
24
25
  }
25
26
 
@@ -12,7 +12,6 @@ const meta: Meta< typeof Heading > = {
12
12
  component: Heading,
13
13
  title: 'Components (Experimental)/Heading',
14
14
  argTypes: {
15
- adjustLineHeightForInnerControls: { control: { type: 'text' } },
16
15
  as: { control: { type: 'text' } },
17
16
  color: { control: { type: 'color' } },
18
17
  display: { control: { type: 'text' } },
@@ -20,9 +19,8 @@ const meta: Meta< typeof Heading > = {
20
19
  lineHeight: { control: { type: 'text' } },
21
20
  optimizeReadabilityFor: { control: { type: 'color' } },
22
21
  variant: {
23
- control: { type: 'radio' },
24
- options: [ 'undefined', 'muted' ],
25
- mapping: { undefined, muted: 'muted' },
22
+ control: { type: 'select' },
23
+ options: [ undefined, 'muted' ],
26
24
  },
27
25
  weight: { control: { type: 'text' } },
28
26
  },
@@ -149,9 +149,9 @@ export const getSizeConfig = ( {
149
149
 
150
150
  if ( ! __next40pxDefaultSize ) {
151
151
  sizes.default = {
152
- height: 30,
152
+ height: 32,
153
153
  lineHeight: 1,
154
- minHeight: 30,
154
+ minHeight: 32,
155
155
  paddingLeft: space( 2 ),
156
156
  paddingRight: space( 2 ),
157
157
  };
@@ -9,7 +9,7 @@ import { Dimensions } from 'react-native';
9
9
  */
10
10
  import {
11
11
  getPxFromCssUnit,
12
- useSetting,
12
+ useSettings,
13
13
  useMultipleOriginColorsAndGradients,
14
14
  } from '@wordpress/block-editor';
15
15
 
@@ -357,7 +357,7 @@ export function useMobileGlobalStylesColors( type = 'colors' ) {
357
357
  // Default editor colors/gradients if it's not a block-based theme.
358
358
  const colorPalette =
359
359
  type === 'colors' ? 'color.palette' : 'color.gradients';
360
- const editorDefaultPalette = useSetting( colorPalette );
360
+ const [ editorDefaultPalette ] = useSettings( colorPalette );
361
361
 
362
362
  return availableThemeColors.length >= 1
363
363
  ? availableThemeColors
@@ -2,7 +2,12 @@
2
2
  * External dependencies
3
3
  */
4
4
  import classnames from 'classnames';
5
- import type { ForwardedRef, KeyboardEvent, UIEvent } from 'react';
5
+ import type {
6
+ ForwardedRef,
7
+ KeyboardEvent,
8
+ MutableRefObject,
9
+ UIEvent,
10
+ } from 'react';
6
11
 
7
12
  /**
8
13
  * WordPress dependencies
@@ -15,12 +20,13 @@ import {
15
20
  useState,
16
21
  forwardRef,
17
22
  useLayoutEffect,
23
+ createContext,
24
+ useContext,
18
25
  } from '@wordpress/element';
19
26
  import {
20
27
  useInstanceId,
21
28
  useFocusReturn,
22
29
  useFocusOnMount,
23
- __experimentalUseFocusOutside as useFocusOutside,
24
30
  useConstrainedTabbing,
25
31
  useMergeRefs,
26
32
  } from '@wordpress/compose';
@@ -36,8 +42,13 @@ import Button from '../button';
36
42
  import StyleProvider from '../style-provider';
37
43
  import type { ModalProps } from './types';
38
44
 
39
- // Used to count the number of open modals.
40
- let openModalCount = 0;
45
+ // Used to track and dismiss the prior modal when another opens unless nested.
46
+ const level0Dismissers: MutableRefObject<
47
+ ModalProps[ 'onRequestClose' ] | undefined
48
+ >[] = [];
49
+ const ModalContext = createContext( level0Dismissers );
50
+
51
+ let isBodyOpenClassActive = false;
41
52
 
42
53
  function UnforwardedModal(
43
54
  props: ModalProps,
@@ -91,7 +102,6 @@ function UnforwardedModal(
91
102
  );
92
103
  const constrainedTabbingRef = useConstrainedTabbing();
93
104
  const focusReturnRef = useFocusReturn();
94
- const focusOutsideProps = useFocusOutside( onRequestClose );
95
105
  const contentRef = useRef< HTMLDivElement >( null );
96
106
  const childrenContainerRef = useRef< HTMLDivElement >( null );
97
107
 
@@ -120,26 +130,52 @@ function UnforwardedModal(
120
130
  }
121
131
  }, [ contentRef ] );
122
132
 
133
+ // Accessibly isolates/unisolates the modal.
123
134
  useEffect( () => {
124
135
  ariaHelper.modalize( ref.current );
125
136
  return () => ariaHelper.unmodalize();
126
137
  }, [] );
127
138
 
139
+ // Keeps a fresh ref for the subsequent effect.
140
+ const refOnRequestClose = useRef< ModalProps[ 'onRequestClose' ] >();
128
141
  useEffect( () => {
129
- openModalCount++;
142
+ refOnRequestClose.current = onRequestClose;
143
+ }, [ onRequestClose ] );
130
144
 
131
- if ( openModalCount === 1 ) {
132
- document.body.classList.add( bodyOpenClassName );
133
- }
145
+ // The list of `onRequestClose` callbacks of open (non-nested) Modals. Only
146
+ // one should remain open at a time and the list enables closing prior ones.
147
+ const dismissers = useContext( ModalContext );
148
+ // Used for the tracking and dismissing any nested modals.
149
+ const nestedDismissers = useRef< typeof level0Dismissers >( [] );
134
150
 
151
+ // Updates the stack tracking open modals at this level and calls
152
+ // onRequestClose for any prior and/or nested modals as applicable.
153
+ useEffect( () => {
154
+ dismissers.push( refOnRequestClose );
155
+ const [ first, second ] = dismissers;
156
+ if ( second ) first?.current?.();
157
+
158
+ const nested = nestedDismissers.current;
135
159
  return () => {
136
- openModalCount--;
160
+ nested[ 0 ]?.current?.();
161
+ dismissers.shift();
162
+ };
163
+ }, [ dismissers ] );
137
164
 
138
- if ( openModalCount === 0 ) {
165
+ const isLevel0 = dismissers === level0Dismissers;
166
+ // Adds/removes the value of bodyOpenClassName to body element.
167
+ useEffect( () => {
168
+ if ( ! isBodyOpenClassActive ) {
169
+ isBodyOpenClassActive = true;
170
+ document.body.classList.add( bodyOpenClassName );
171
+ }
172
+ return () => {
173
+ if ( isLevel0 && dismissers.length === 0 ) {
139
174
  document.body.classList.remove( bodyOpenClassName );
175
+ isBodyOpenClassActive = false;
140
176
  }
141
177
  };
142
- }, [ bodyOpenClassName ] );
178
+ }, [ bodyOpenClassName, dismissers, isLevel0 ] );
143
179
 
144
180
  // Calls the isContentScrollable callback when the Modal children container resizes.
145
181
  useLayoutEffect( () => {
@@ -200,12 +236,9 @@ function UnforwardedModal(
200
236
  onPointerUp: React.PointerEventHandler< HTMLDivElement >;
201
237
  } = {
202
238
  onPointerDown: ( event ) => {
203
- if ( event.isPrimary && event.target === event.currentTarget ) {
239
+ if ( event.target === event.currentTarget ) {
204
240
  pressTarget = event.target;
205
- // Avoids loss of focus yet also leaves `useFocusOutside`
206
- // practically useless with its only potential trigger being
207
- // programmatic focus movement. TODO opt for either removing
208
- // the hook or enhancing it such that this isn't needed.
241
+ // Avoids focus changing so that focus return works as expected.
209
242
  event.preventDefault();
210
243
  }
211
244
  },
@@ -222,7 +255,7 @@ function UnforwardedModal(
222
255
  },
223
256
  };
224
257
 
225
- return createPortal(
258
+ const modal = (
226
259
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
227
260
  <div
228
261
  ref={ useMergeRefs( [ ref, forwardedRef ] ) }
@@ -253,9 +286,6 @@ function UnforwardedModal(
253
286
  aria-labelledby={ contentLabel ? undefined : headingId }
254
287
  aria-describedby={ aria.describedby }
255
288
  tabIndex={ -1 }
256
- { ...( shouldCloseOnClickOutside
257
- ? focusOutsideProps
258
- : {} ) }
259
289
  onKeyDown={ onKeyDown }
260
290
  >
261
291
  <div
@@ -320,7 +350,13 @@ function UnforwardedModal(
320
350
  </div>
321
351
  </div>
322
352
  </StyleProvider>
323
- </div>,
353
+ </div>
354
+ );
355
+
356
+ return createPortal(
357
+ <ModalContext.Provider value={ nestedDismissers.current }>
358
+ { modal }
359
+ </ModalContext.Provider>,
324
360
  document.body
325
361
  );
326
362
  }
@@ -167,6 +167,35 @@ describe( 'Modal', () => {
167
167
  expect( onRequestClose ).not.toHaveBeenCalled();
168
168
  } );
169
169
 
170
+ it( 'should request closing of nested modal when outer modal unmounts', async () => {
171
+ const user = userEvent.setup();
172
+ const onRequestClose = jest.fn();
173
+
174
+ const RequestCloseOfNested = () => {
175
+ const [ isShown, setIsShown ] = useState( true );
176
+ return (
177
+ <>
178
+ { isShown && (
179
+ <Modal
180
+ onKeyDown={ ( { key } ) => {
181
+ if ( key === 'o' ) setIsShown( false );
182
+ } }
183
+ onRequestClose={ noop }
184
+ >
185
+ <Modal onRequestClose={ onRequestClose }>
186
+ <p>Nested modal content</p>
187
+ </Modal>
188
+ </Modal>
189
+ ) }
190
+ </>
191
+ );
192
+ };
193
+ render( <RequestCloseOfNested /> );
194
+
195
+ await user.keyboard( 'o' );
196
+ expect( onRequestClose ).toHaveBeenCalled();
197
+ } );
198
+
170
199
  it( 'should accessibly hide and show siblings including outer modals', async () => {
171
200
  const user = userEvent.setup();
172
201
 
@@ -4,7 +4,6 @@
4
4
  font-size: $default-font-size;
5
5
  background-color: $white;
6
6
  border-left: 4px solid $components-color-accent;
7
- margin: 5px 15px 2px;
8
7
  padding: 8px 12px;
9
8
  align-items: center;
10
9
 
@@ -121,6 +121,10 @@ function ColorPickerPopover< T extends Color | Gradient >( {
121
121
  () => ( {
122
122
  shift: true,
123
123
  offset: 20,
124
+ // Disabling resize as it would otherwise cause the popover to show
125
+ // scrollbars while dragging the color picker's handle close to the
126
+ // popover edge.
127
+ resize: false,
124
128
  placement: 'left-start',
125
129
  ...receivedPopoverProps,
126
130
  className: classnames(
@@ -53,6 +53,11 @@ import {
53
53
  placementToMotionAnimationProps,
54
54
  getReferenceElement,
55
55
  } from './utils';
56
+ import {
57
+ contextConnect,
58
+ useContextSystem,
59
+ ContextSystemProvider,
60
+ } from '../context';
56
61
  import type { WordPressComponentProps } from '../context';
57
62
  import type {
58
63
  PopoverProps,
@@ -108,7 +113,7 @@ const getPopoverFallbackContainer = () => {
108
113
  return container;
109
114
  };
110
115
 
111
- const UnforwardedPopover = (
116
+ const UnconnectedPopover = (
112
117
  props: Omit<
113
118
  WordPressComponentProps< PopoverProps, 'div', false >,
114
119
  // To avoid overlaps between the standard HTML attributes and the props
@@ -148,7 +153,7 @@ const UnforwardedPopover = (
148
153
 
149
154
  // Rest
150
155
  ...contentProps
151
- } = props;
156
+ } = useContextSystem( props, 'Popover' );
152
157
 
153
158
  let computedFlipProp = flip;
154
159
  let computedResizeProp = resize;
@@ -383,63 +388,100 @@ const UnforwardedPopover = (
383
388
  const isPositioned =
384
389
  ( ! shouldAnimate || animationFinished ) && x !== null && y !== null;
385
390
 
391
+ // In case a `ColorPicker` component is rendered as a child of `Popover`,
392
+ // the `Popover` component can be notified of when the user is dragging
393
+ // parts of the `ColorPicker` UI (this is possible because the `ColorPicker`
394
+ // component exposes the `onPickerDragStart` and `onPickerDragEnd` props
395
+ // via internal context).
396
+ // While the user is performing a pointer drag, the `Popover` will render
397
+ // a transparent backdrop element that will serve as a "pointer events trap",
398
+ // making sure that no pointer events reach any potential `iframe` element
399
+ // underneath (like, for example, the editor canvas in the WordPress editor).
400
+ const [ showBackdrop, setShowBackdrop ] = useState( false );
401
+ const contextValue = useMemo(
402
+ () => ( {
403
+ ColorPicker: {
404
+ onPickerDragStart() {
405
+ setShowBackdrop( true );
406
+ },
407
+ onPickerDragEnd() {
408
+ setShowBackdrop( false );
409
+ },
410
+ },
411
+ } ),
412
+ []
413
+ );
414
+
386
415
  let content = (
387
- <motion.div
388
- className={ classnames( 'components-popover', className, {
389
- 'is-expanded': isExpanded,
390
- 'is-positioned': isPositioned,
391
- // Use the 'alternate' classname for 'toolbar' variant for back compat.
392
- [ `is-${
393
- computedVariant === 'toolbar'
394
- ? 'alternate'
395
- : computedVariant
396
- }` ]: computedVariant,
397
- } ) }
398
- { ...animationProps }
399
- { ...contentProps }
400
- ref={ mergedFloatingRef }
401
- { ...dialogProps }
402
- tabIndex={ -1 }
403
- >
404
- { /* Prevents scroll on the document */ }
405
- { isExpanded && <ScrollLock /> }
406
- { isExpanded && (
407
- <div className="components-popover__header">
408
- <span className="components-popover__header-title">
409
- { headerTitle }
410
- </span>
411
- <Button
412
- className="components-popover__close"
413
- icon={ close }
414
- onClick={ onClose }
415
- />
416
- </div>
417
- ) }
418
- <div className="components-popover__content">{ children }</div>
419
- { hasArrow && (
416
+ <>
417
+ { showBackdrop && (
420
418
  <div
421
- ref={ arrowCallbackRef }
422
- className={ [
423
- 'components-popover__arrow',
424
- `is-${ computedPlacement.split( '-' )[ 0 ] }`,
425
- ].join( ' ' ) }
426
- style={ {
427
- left:
428
- typeof arrowData?.x !== 'undefined' &&
429
- Number.isFinite( arrowData.x )
430
- ? `${ arrowData.x }px`
431
- : '',
432
- top:
433
- typeof arrowData?.y !== 'undefined' &&
434
- Number.isFinite( arrowData.y )
435
- ? `${ arrowData.y }px`
436
- : '',
437
- } }
438
- >
439
- <ArrowTriangle />
440
- </div>
419
+ className="components-popover-pointer-events-trap"
420
+ aria-hidden="true"
421
+ onClick={ () => setShowBackdrop( false ) }
422
+ />
441
423
  ) }
442
- </motion.div>
424
+ <motion.div
425
+ className={ classnames( 'components-popover', className, {
426
+ 'is-expanded': isExpanded,
427
+ 'is-positioned': isPositioned,
428
+ // Use the 'alternate' classname for 'toolbar' variant for back compat.
429
+ [ `is-${
430
+ computedVariant === 'toolbar'
431
+ ? 'alternate'
432
+ : computedVariant
433
+ }` ]: computedVariant,
434
+ } ) }
435
+ { ...animationProps }
436
+ { ...contentProps }
437
+ ref={ mergedFloatingRef }
438
+ { ...dialogProps }
439
+ tabIndex={ -1 }
440
+ >
441
+ { /* Prevents scroll on the document */ }
442
+ { isExpanded && <ScrollLock /> }
443
+ { isExpanded && (
444
+ <div className="components-popover__header">
445
+ <span className="components-popover__header-title">
446
+ { headerTitle }
447
+ </span>
448
+ <Button
449
+ className="components-popover__close"
450
+ icon={ close }
451
+ onClick={ onClose }
452
+ />
453
+ </div>
454
+ ) }
455
+ <div className="components-popover__content">
456
+ <ContextSystemProvider value={ contextValue }>
457
+ { children }
458
+ </ContextSystemProvider>
459
+ </div>
460
+ { hasArrow && (
461
+ <div
462
+ ref={ arrowCallbackRef }
463
+ className={ [
464
+ 'components-popover__arrow',
465
+ `is-${ computedPlacement.split( '-' )[ 0 ] }`,
466
+ ].join( ' ' ) }
467
+ style={ {
468
+ left:
469
+ typeof arrowData?.x !== 'undefined' &&
470
+ Number.isFinite( arrowData.x )
471
+ ? `${ arrowData.x }px`
472
+ : '',
473
+ top:
474
+ typeof arrowData?.y !== 'undefined' &&
475
+ Number.isFinite( arrowData.y )
476
+ ? `${ arrowData.y }px`
477
+ : '',
478
+ } }
479
+ >
480
+ <ArrowTriangle />
481
+ </div>
482
+ ) }
483
+ </motion.div>
484
+ </>
443
485
  );
444
486
 
445
487
  const shouldRenderWithinSlot = slot.ref && ! inline;
@@ -489,7 +531,7 @@ const UnforwardedPopover = (
489
531
  * ```
490
532
  *
491
533
  */
492
- export const Popover = forwardRef( UnforwardedPopover );
534
+ export const Popover = contextConnect( UnconnectedPopover, 'Popover' );
493
535
 
494
536
  function PopoverSlot(
495
537
  { name = SLOT_NAME }: { name?: string },
@@ -133,3 +133,12 @@ $shadow-popover-border-top-only-alternate: 0 #{-$border-width} 0 $gray-900;
133
133
  stroke: $gray-900;
134
134
  }
135
135
  }
136
+
137
+ .components-popover-pointer-events-trap {
138
+ // Same z-index as popover, but rendered before the popover element
139
+ // in DOM order = it will display just under the popover
140
+ z-index: z-index(".components-popover");
141
+ position: fixed;
142
+ inset: 0;
143
+ background-color: transparent;
144
+ }