@wordpress/components 28.6.0 → 28.8.1-next.1f6eadc42.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 (652) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/CONTRIBUTING.md +42 -19
  3. package/build/alignment-matrix-control/cell.js +4 -7
  4. package/build/alignment-matrix-control/cell.js.map +1 -1
  5. package/build/alignment-matrix-control/icon.js +31 -19
  6. package/build/alignment-matrix-control/icon.js.map +1 -1
  7. package/build/alignment-matrix-control/index.js +55 -51
  8. package/build/alignment-matrix-control/index.js.map +1 -1
  9. package/build/alignment-matrix-control/styles.js +73 -0
  10. package/build/alignment-matrix-control/styles.js.map +1 -0
  11. package/build/alignment-matrix-control/types.js.map +1 -1
  12. package/build/angle-picker-control/angle-circle.js +9 -9
  13. package/build/angle-picker-control/angle-circle.js.map +1 -1
  14. package/build/border-control/border-control/component.js +18 -13
  15. package/build/border-control/border-control/component.js.map +1 -1
  16. package/build/box-control/utils.js +1 -1
  17. package/build/box-control/utils.js.map +1 -1
  18. package/build/circular-option-picker/circular-option-picker-option.js +15 -9
  19. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
  20. package/build/circular-option-picker/circular-option-picker.js +15 -12
  21. package/build/circular-option-picker/circular-option-picker.js.map +1 -1
  22. package/build/circular-option-picker/types.js.map +1 -1
  23. package/build/clipboard-button/index.js +6 -6
  24. package/build/clipboard-button/index.js.map +1 -1
  25. package/build/color-palette/utils.js +1 -2
  26. package/build/color-palette/utils.js.map +1 -1
  27. package/build/color-picker/color-copy-button.js +8 -8
  28. package/build/color-picker/color-copy-button.js.map +1 -1
  29. package/build/color-picker/hex-input.js +8 -8
  30. package/build/color-picker/hex-input.js.map +1 -1
  31. package/build/color-picker/input-with-slider.js +8 -8
  32. package/build/color-picker/input-with-slider.js.map +1 -1
  33. package/build/color-picker/styles.js +8 -8
  34. package/build/color-picker/styles.js.map +1 -1
  35. package/build/combobox-control/types.js.map +1 -1
  36. package/build/composite/context.js +1 -1
  37. package/build/composite/context.js.map +1 -1
  38. package/build/composite/group-label.js +33 -0
  39. package/build/composite/group-label.js.map +1 -0
  40. package/build/composite/group.js +33 -0
  41. package/build/composite/group.js.map +1 -0
  42. package/build/composite/hover.js +33 -0
  43. package/build/composite/hover.js.map +1 -0
  44. package/build/composite/index.js +63 -118
  45. package/build/composite/index.js.map +1 -1
  46. package/build/composite/item.js +33 -0
  47. package/build/composite/item.js.map +1 -0
  48. package/build/composite/legacy/index.js +59 -7
  49. package/build/composite/legacy/index.js.map +1 -1
  50. package/build/composite/row.js +33 -0
  51. package/build/composite/row.js.map +1 -0
  52. package/build/composite/typeahead.js +33 -0
  53. package/build/composite/typeahead.js.map +1 -0
  54. package/build/composite/types.js.map +1 -1
  55. package/build/custom-gradient-picker/gradient-bar/control-points.js +8 -8
  56. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  57. package/build/custom-select-control-v2/styles.js +12 -14
  58. package/build/custom-select-control-v2/styles.js.map +1 -1
  59. package/build/date-time/date/index.js +1 -1
  60. package/build/date-time/date/index.js.map +1 -1
  61. package/build/date-time/date/styles.js +37 -26
  62. package/build/date-time/date/styles.js.map +1 -1
  63. package/build/date-time/date/use-lilius/index.js +163 -0
  64. package/build/date-time/date/use-lilius/index.js.map +1 -0
  65. package/build/date-time/time/time-input/index.js +17 -19
  66. package/build/date-time/time/time-input/index.js.map +1 -1
  67. package/build/dimension-control/index.js +6 -1
  68. package/build/dimension-control/index.js.map +1 -1
  69. package/build/draggable/index.js +4 -4
  70. package/build/draggable/index.js.map +1 -1
  71. package/build/dropdown-menu-v2/checkbox-item.js +69 -0
  72. package/build/dropdown-menu-v2/checkbox-item.js.map +1 -0
  73. package/build/dropdown-menu-v2/context.js +17 -0
  74. package/build/dropdown-menu-v2/context.js.map +1 -0
  75. package/build/dropdown-menu-v2/group-label.js +40 -0
  76. package/build/dropdown-menu-v2/group-label.js.map +1 -0
  77. package/build/dropdown-menu-v2/group.js +29 -0
  78. package/build/dropdown-menu-v2/group.js.map +1 -0
  79. package/build/dropdown-menu-v2/index.js +58 -146
  80. package/build/dropdown-menu-v2/index.js.map +1 -1
  81. package/build/dropdown-menu-v2/item-help-text.js +27 -0
  82. package/build/dropdown-menu-v2/item-help-text.js.map +1 -0
  83. package/build/dropdown-menu-v2/item-label.js +27 -0
  84. package/build/dropdown-menu-v2/item-label.js.map +1 -0
  85. package/build/dropdown-menu-v2/item.js +53 -0
  86. package/build/dropdown-menu-v2/item.js.map +1 -0
  87. package/build/dropdown-menu-v2/radio-item.js +79 -0
  88. package/build/dropdown-menu-v2/radio-item.js.map +1 -0
  89. package/build/dropdown-menu-v2/separator.js +30 -0
  90. package/build/dropdown-menu-v2/separator.js.map +1 -0
  91. package/build/dropdown-menu-v2/styles.js +54 -78
  92. package/build/dropdown-menu-v2/styles.js.map +1 -1
  93. package/build/dropdown-menu-v2/types.js.map +1 -1
  94. package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js +27 -0
  95. package/build/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +1 -0
  96. package/build/focal-point-picker/styles/focal-point-style.js +7 -2
  97. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  98. package/build/form-token-field/types.js.map +1 -1
  99. package/build/index.js +13 -0
  100. package/build/index.js.map +1 -1
  101. package/build/input-control/index.js +2 -2
  102. package/build/input-control/index.js.map +1 -1
  103. package/build/input-control/input-base.js +5 -10
  104. package/build/input-control/input-base.js.map +1 -1
  105. package/build/input-control/input-prefix-wrapper.js +3 -3
  106. package/build/input-control/input-prefix-wrapper.js.map +1 -1
  107. package/build/input-control/input-suffix-wrapper.js +2 -3
  108. package/build/input-control/input-suffix-wrapper.js.map +1 -1
  109. package/build/input-control/reducer/reducer.js +8 -8
  110. package/build/input-control/reducer/reducer.js.map +1 -1
  111. package/build/input-control/styles/input-control-styles.js +75 -45
  112. package/build/input-control/styles/input-control-styles.js.map +1 -1
  113. package/build/input-control/types.js.map +1 -1
  114. package/build/input-control/utils.js +3 -3
  115. package/build/input-control/utils.js.map +1 -1
  116. package/build/item-group/styles.js +10 -10
  117. package/build/item-group/styles.js.map +1 -1
  118. package/build/modal/index.js +16 -9
  119. package/build/modal/index.js.map +1 -1
  120. package/build/navigation/index.js +4 -4
  121. package/build/navigation/index.js.map +1 -1
  122. package/build/navigation/styles/navigation-styles.js +13 -13
  123. package/build/navigation/styles/navigation-styles.js.map +1 -1
  124. package/build/navigator/index.js +12 -13
  125. package/build/navigator/index.js.map +1 -1
  126. package/build/navigator/navigator-back-button/hook.js +2 -2
  127. package/build/navigator/navigator-back-button/hook.js.map +1 -1
  128. package/build/navigator/navigator-button/hook.js +2 -2
  129. package/build/navigator/navigator-button/hook.js.map +1 -1
  130. package/build/navigator/navigator-provider/component.js +99 -67
  131. package/build/navigator/navigator-provider/component.js.map +1 -1
  132. package/build/navigator/navigator-screen/component.js +5 -0
  133. package/build/navigator/navigator-screen/component.js.map +1 -1
  134. package/build/navigator/navigator-to-parent-button/component.js +2 -2
  135. package/build/navigator/navigator-to-parent-button/component.js.map +1 -1
  136. package/build/navigator/types.js.map +1 -1
  137. package/build/navigator/use-navigator.js +1 -2
  138. package/build/navigator/use-navigator.js.map +1 -1
  139. package/build/palette-edit/index.js +2 -2
  140. package/build/palette-edit/index.js.map +1 -1
  141. package/build/private-apis.js +1 -14
  142. package/build/private-apis.js.map +1 -1
  143. package/build/range-control/styles/range-control-styles.js +30 -30
  144. package/build/range-control/styles/range-control-styles.js.map +1 -1
  145. package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +4 -4
  146. package/build/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
  147. package/build/select-control/styles/select-control-styles.js +12 -12
  148. package/build/select-control/styles/select-control-styles.js.map +1 -1
  149. package/build/slot-fill/bubbles-virtually/fill.js +4 -4
  150. package/build/slot-fill/bubbles-virtually/fill.js.map +1 -1
  151. package/build/slot-fill/index.js +1 -0
  152. package/build/slot-fill/index.js.map +1 -1
  153. package/build/snackbar/index.js +4 -4
  154. package/build/snackbar/index.js.map +1 -1
  155. package/build/tabs/index.js +4 -4
  156. package/build/tabs/index.js.map +1 -1
  157. package/build/tabs/styles.js +3 -3
  158. package/build/tabs/styles.js.map +1 -1
  159. package/build/tabs/tablist.js +5 -4
  160. package/build/tabs/tablist.js.map +1 -1
  161. package/build/toggle-group-control/toggle-group-control/utils.js +6 -6
  162. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  163. package/build/tools-panel/tools-panel/hook.js +6 -6
  164. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  165. package/build/unit-control/styles/unit-control-styles.js +7 -7
  166. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  167. package/build/utils/config-values.js +6 -4
  168. package/build/utils/config-values.js.map +1 -1
  169. package/build/utils/element-rect.js +73 -105
  170. package/build/utils/element-rect.js.map +1 -1
  171. package/build/utils/hooks/use-update-effect.js +4 -4
  172. package/build/utils/hooks/use-update-effect.js.map +1 -1
  173. package/build-module/alignment-matrix-control/cell.js +2 -5
  174. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  175. package/build-module/alignment-matrix-control/icon.js +31 -19
  176. package/build-module/alignment-matrix-control/icon.js.map +1 -1
  177. package/build-module/alignment-matrix-control/index.js +55 -50
  178. package/build-module/alignment-matrix-control/index.js.map +1 -1
  179. package/build-module/alignment-matrix-control/styles.js +70 -0
  180. package/build-module/alignment-matrix-control/styles.js.map +1 -0
  181. package/build-module/alignment-matrix-control/types.js.map +1 -1
  182. package/build-module/angle-picker-control/angle-circle.js +9 -9
  183. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  184. package/build-module/border-control/border-control/component.js +18 -13
  185. package/build-module/border-control/border-control/component.js.map +1 -1
  186. package/build-module/box-control/utils.js +1 -1
  187. package/build-module/box-control/utils.js.map +1 -1
  188. package/build-module/circular-option-picker/circular-option-picker-option.js +16 -10
  189. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
  190. package/build-module/circular-option-picker/circular-option-picker.js +16 -13
  191. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
  192. package/build-module/circular-option-picker/types.js.map +1 -1
  193. package/build-module/clipboard-button/index.js +6 -6
  194. package/build-module/clipboard-button/index.js.map +1 -1
  195. package/build-module/color-palette/utils.js +1 -2
  196. package/build-module/color-palette/utils.js.map +1 -1
  197. package/build-module/color-picker/color-copy-button.js +8 -8
  198. package/build-module/color-picker/color-copy-button.js.map +1 -1
  199. package/build-module/color-picker/hex-input.js +7 -8
  200. package/build-module/color-picker/hex-input.js.map +1 -1
  201. package/build-module/color-picker/input-with-slider.js +7 -8
  202. package/build-module/color-picker/input-with-slider.js.map +1 -1
  203. package/build-module/color-picker/styles.js +8 -8
  204. package/build-module/color-picker/styles.js.map +1 -1
  205. package/build-module/combobox-control/types.js.map +1 -1
  206. package/build-module/composite/context.js +1 -1
  207. package/build-module/composite/context.js.map +1 -1
  208. package/build-module/composite/group-label.js +25 -0
  209. package/build-module/composite/group-label.js.map +1 -0
  210. package/build-module/composite/group.js +25 -0
  211. package/build-module/composite/group.js.map +1 -0
  212. package/build-module/composite/hover.js +25 -0
  213. package/build-module/composite/hover.js.map +1 -0
  214. package/build-module/composite/index.js +64 -118
  215. package/build-module/composite/index.js.map +1 -1
  216. package/build-module/composite/item.js +25 -0
  217. package/build-module/composite/item.js.map +1 -0
  218. package/build-module/composite/legacy/index.js +57 -8
  219. package/build-module/composite/legacy/index.js.map +1 -1
  220. package/build-module/composite/row.js +25 -0
  221. package/build-module/composite/row.js.map +1 -0
  222. package/build-module/composite/typeahead.js +25 -0
  223. package/build-module/composite/typeahead.js.map +1 -0
  224. package/build-module/composite/types.js.map +1 -1
  225. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +8 -8
  226. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  227. package/build-module/custom-select-control-v2/styles.js +12 -14
  228. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  229. package/build-module/date-time/date/index.js +1 -2
  230. package/build-module/date-time/date/index.js.map +1 -1
  231. package/build-module/date-time/date/styles.js +33 -26
  232. package/build-module/date-time/date/styles.js.map +1 -1
  233. package/build-module/date-time/date/use-lilius/index.js +158 -0
  234. package/build-module/date-time/date/use-lilius/index.js.map +1 -0
  235. package/build-module/date-time/time/time-input/index.js +17 -19
  236. package/build-module/date-time/time/time-input/index.js.map +1 -1
  237. package/build-module/dimension-control/index.js +6 -1
  238. package/build-module/dimension-control/index.js.map +1 -1
  239. package/build-module/draggable/index.js +4 -4
  240. package/build-module/draggable/index.js.map +1 -1
  241. package/build-module/dropdown-menu-v2/checkbox-item.js +62 -0
  242. package/build-module/dropdown-menu-v2/checkbox-item.js.map +1 -0
  243. package/build-module/dropdown-menu-v2/context.js +11 -0
  244. package/build-module/dropdown-menu-v2/context.js.map +1 -0
  245. package/build-module/dropdown-menu-v2/group-label.js +32 -0
  246. package/build-module/dropdown-menu-v2/group-label.js.map +1 -0
  247. package/build-module/dropdown-menu-v2/group.js +21 -0
  248. package/build-module/dropdown-menu-v2/group.js.map +1 -0
  249. package/build-module/dropdown-menu-v2/index.js +57 -144
  250. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  251. package/build-module/dropdown-menu-v2/item-help-text.js +19 -0
  252. package/build-module/dropdown-menu-v2/item-help-text.js.map +1 -0
  253. package/build-module/dropdown-menu-v2/item-label.js +19 -0
  254. package/build-module/dropdown-menu-v2/item-label.js.map +1 -0
  255. package/build-module/dropdown-menu-v2/item.js +46 -0
  256. package/build-module/dropdown-menu-v2/item.js.map +1 -0
  257. package/build-module/dropdown-menu-v2/radio-item.js +72 -0
  258. package/build-module/dropdown-menu-v2/radio-item.js.map +1 -0
  259. package/build-module/dropdown-menu-v2/separator.js +22 -0
  260. package/build-module/dropdown-menu-v2/separator.js.map +1 -0
  261. package/build-module/dropdown-menu-v2/styles.js +54 -78
  262. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  263. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  264. package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js +20 -0
  265. package/build-module/dropdown-menu-v2/use-temporary-focus-visible-fix.js.map +1 -0
  266. package/build-module/focal-point-picker/styles/focal-point-style.js +6 -2
  267. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  268. package/build-module/form-token-field/types.js.map +1 -1
  269. package/build-module/index.js +3 -1
  270. package/build-module/index.js.map +1 -1
  271. package/build-module/input-control/index.js +2 -2
  272. package/build-module/input-control/index.js.map +1 -1
  273. package/build-module/input-control/input-base.js +6 -11
  274. package/build-module/input-control/input-base.js.map +1 -1
  275. package/build-module/input-control/input-prefix-wrapper.js +4 -3
  276. package/build-module/input-control/input-prefix-wrapper.js.map +1 -1
  277. package/build-module/input-control/input-suffix-wrapper.js +3 -3
  278. package/build-module/input-control/input-suffix-wrapper.js.map +1 -1
  279. package/build-module/input-control/reducer/reducer.js +8 -8
  280. package/build-module/input-control/reducer/reducer.js.map +1 -1
  281. package/build-module/input-control/styles/input-control-styles.js +74 -44
  282. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  283. package/build-module/input-control/types.js.map +1 -1
  284. package/build-module/input-control/utils.js +3 -3
  285. package/build-module/input-control/utils.js.map +1 -1
  286. package/build-module/item-group/styles.js +10 -10
  287. package/build-module/item-group/styles.js.map +1 -1
  288. package/build-module/modal/index.js +17 -9
  289. package/build-module/modal/index.js.map +1 -1
  290. package/build-module/navigation/index.js +4 -4
  291. package/build-module/navigation/index.js.map +1 -1
  292. package/build-module/navigation/styles/navigation-styles.js +14 -14
  293. package/build-module/navigation/styles/navigation-styles.js.map +1 -1
  294. package/build-module/navigator/index.js +6 -6
  295. package/build-module/navigator/index.js.map +1 -1
  296. package/build-module/navigator/navigator-back-button/hook.js +1 -1
  297. package/build-module/navigator/navigator-back-button/hook.js.map +1 -1
  298. package/build-module/navigator/navigator-button/hook.js +1 -1
  299. package/build-module/navigator/navigator-button/hook.js.map +1 -1
  300. package/build-module/navigator/navigator-provider/component.js +99 -67
  301. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  302. package/build-module/navigator/navigator-screen/component.js +4 -0
  303. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  304. package/build-module/navigator/navigator-to-parent-button/component.js +1 -1
  305. package/build-module/navigator/navigator-to-parent-button/component.js.map +1 -1
  306. package/build-module/navigator/types.js.map +1 -1
  307. package/build-module/navigator/use-navigator.js +1 -2
  308. package/build-module/navigator/use-navigator.js.map +1 -1
  309. package/build-module/palette-edit/index.js +2 -2
  310. package/build-module/palette-edit/index.js.map +1 -1
  311. package/build-module/private-apis.js +1 -14
  312. package/build-module/private-apis.js.map +1 -1
  313. package/build-module/range-control/styles/range-control-styles.js +31 -31
  314. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  315. package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js +5 -5
  316. package/build-module/resizable-box/resize-tooltip/styles/resize-tooltip.styles.js.map +1 -1
  317. package/build-module/select-control/styles/select-control-styles.js +13 -13
  318. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  319. package/build-module/slot-fill/bubbles-virtually/fill.js +4 -4
  320. package/build-module/slot-fill/bubbles-virtually/fill.js.map +1 -1
  321. package/build-module/slot-fill/index.js +1 -0
  322. package/build-module/slot-fill/index.js.map +1 -1
  323. package/build-module/snackbar/index.js +4 -4
  324. package/build-module/snackbar/index.js.map +1 -1
  325. package/build-module/tabs/index.js +4 -4
  326. package/build-module/tabs/index.js.map +1 -1
  327. package/build-module/tabs/styles.js +4 -4
  328. package/build-module/tabs/styles.js.map +1 -1
  329. package/build-module/tabs/tablist.js +5 -4
  330. package/build-module/tabs/tablist.js.map +1 -1
  331. package/build-module/toggle-group-control/toggle-group-control/utils.js +6 -6
  332. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -1
  333. package/build-module/tools-panel/tools-panel/hook.js +6 -6
  334. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  335. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  336. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  337. package/build-module/utils/config-values.js +6 -4
  338. package/build-module/utils/config-values.js.map +1 -1
  339. package/build-module/utils/element-rect.js +74 -105
  340. package/build-module/utils/element-rect.js.map +1 -1
  341. package/build-module/utils/hooks/use-update-effect.js +4 -4
  342. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  343. package/build-style/style-rtl.css +12 -27
  344. package/build-style/style.css +12 -27
  345. package/build-types/alignment-matrix-control/cell.d.ts +1 -1
  346. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -1
  347. package/build-types/alignment-matrix-control/icon.d.ts +1 -1
  348. package/build-types/alignment-matrix-control/icon.d.ts.map +1 -1
  349. package/build-types/alignment-matrix-control/index.d.ts +16 -6
  350. package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
  351. package/build-types/alignment-matrix-control/stories/index.story.d.ts.map +1 -1
  352. package/build-types/alignment-matrix-control/{styles/alignment-matrix-control-styles.d.ts → styles.d.ts} +9 -10
  353. package/build-types/alignment-matrix-control/styles.d.ts.map +1 -0
  354. package/build-types/alignment-matrix-control/types.d.ts +12 -1
  355. package/build-types/alignment-matrix-control/types.d.ts.map +1 -1
  356. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  357. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  358. package/build-types/box-control/stories/index.story.d.ts.map +1 -1
  359. package/build-types/box-control/utils.d.ts +1 -1
  360. package/build-types/box-control/utils.d.ts.map +1 -1
  361. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
  362. package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -1
  363. package/build-types/circular-option-picker/types.d.ts +2 -2
  364. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  365. package/build-types/color-palette/utils.d.ts.map +1 -1
  366. package/build-types/color-picker/color-copy-button.d.ts.map +1 -1
  367. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  368. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  369. package/build-types/color-picker/styles.d.ts.map +1 -1
  370. package/build-types/combobox-control/types.d.ts +1 -0
  371. package/build-types/combobox-control/types.d.ts.map +1 -1
  372. package/build-types/composite/context.d.ts.map +1 -1
  373. package/build-types/composite/group-label.d.ts +3 -0
  374. package/build-types/composite/group-label.d.ts.map +1 -0
  375. package/build-types/composite/group.d.ts +3 -0
  376. package/build-types/composite/group.d.ts.map +1 -0
  377. package/build-types/composite/hover.d.ts +3 -0
  378. package/build-types/composite/hover.d.ts.map +1 -0
  379. package/build-types/composite/index.d.ts +63 -47
  380. package/build-types/composite/index.d.ts.map +1 -1
  381. package/build-types/composite/item.d.ts +3 -0
  382. package/build-types/composite/item.d.ts.map +1 -0
  383. package/build-types/composite/legacy/index.d.ts +23 -3
  384. package/build-types/composite/legacy/index.d.ts.map +1 -1
  385. package/build-types/composite/legacy/stories/index.story.d.ts.map +1 -1
  386. package/build-types/composite/row.d.ts +3 -0
  387. package/build-types/composite/row.d.ts.map +1 -0
  388. package/build-types/composite/stories/index.story.d.ts +9 -8
  389. package/build-types/composite/stories/index.story.d.ts.map +1 -1
  390. package/build-types/composite/typeahead.d.ts +3 -0
  391. package/build-types/composite/typeahead.d.ts.map +1 -0
  392. package/build-types/composite/types.d.ts +12 -11
  393. package/build-types/composite/types.d.ts.map +1 -1
  394. package/build-types/date-time/date/index.d.ts +0 -3
  395. package/build-types/date-time/date/index.d.ts.map +1 -1
  396. package/build-types/date-time/date/styles.d.ts.map +1 -1
  397. package/build-types/date-time/date/test/use-lilius.d.ts +2 -0
  398. package/build-types/date-time/date/test/use-lilius.d.ts.map +1 -0
  399. package/build-types/date-time/date/use-lilius/index.d.ts +169 -0
  400. package/build-types/date-time/date/use-lilius/index.d.ts.map +1 -0
  401. package/build-types/date-time/time/time-input/index.d.ts.map +1 -1
  402. package/build-types/dimension-control/index.d.ts +1 -1
  403. package/build-types/dimension-control/index.d.ts.map +1 -1
  404. package/build-types/dimension-control/stories/index.story.d.ts +5 -0
  405. package/build-types/dimension-control/stories/index.story.d.ts.map +1 -1
  406. package/build-types/dropdown-menu-v2/checkbox-item.d.ts +3 -0
  407. package/build-types/dropdown-menu-v2/checkbox-item.d.ts.map +1 -0
  408. package/build-types/dropdown-menu-v2/context.d.ts +6 -0
  409. package/build-types/dropdown-menu-v2/context.d.ts.map +1 -0
  410. package/build-types/dropdown-menu-v2/group-label.d.ts +3 -0
  411. package/build-types/dropdown-menu-v2/group-label.d.ts.map +1 -0
  412. package/build-types/dropdown-menu-v2/group.d.ts +3 -0
  413. package/build-types/dropdown-menu-v2/group.d.ts.map +1 -0
  414. package/build-types/dropdown-menu-v2/index.d.ts +39 -18
  415. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  416. package/build-types/dropdown-menu-v2/item-help-text.d.ts +6 -0
  417. package/build-types/dropdown-menu-v2/item-help-text.d.ts.map +1 -0
  418. package/build-types/dropdown-menu-v2/item-label.d.ts +6 -0
  419. package/build-types/dropdown-menu-v2/item-label.d.ts.map +1 -0
  420. package/build-types/dropdown-menu-v2/item.d.ts +3 -0
  421. package/build-types/dropdown-menu-v2/item.d.ts.map +1 -0
  422. package/build-types/dropdown-menu-v2/radio-item.d.ts +3 -0
  423. package/build-types/dropdown-menu-v2/radio-item.d.ts.map +1 -0
  424. package/build-types/dropdown-menu-v2/separator.d.ts +3 -0
  425. package/build-types/dropdown-menu-v2/separator.d.ts.map +1 -0
  426. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +10 -10
  427. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -1
  428. package/build-types/dropdown-menu-v2/styles.d.ts +14 -6
  429. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  430. package/build-types/dropdown-menu-v2/types.d.ts +6 -0
  431. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  432. package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts +8 -0
  433. package/build-types/dropdown-menu-v2/use-temporary-focus-visible-fix.d.ts.map +1 -0
  434. package/build-types/focal-point-picker/styles/focal-point-style.d.ts.map +1 -1
  435. package/build-types/form-token-field/types.d.ts +1 -0
  436. package/build-types/form-token-field/types.d.ts.map +1 -1
  437. package/build-types/index.d.ts +4 -1
  438. package/build-types/index.d.ts.map +1 -1
  439. package/build-types/input-control/input-base.d.ts.map +1 -1
  440. package/build-types/input-control/input-prefix-wrapper.d.ts +2 -2
  441. package/build-types/input-control/input-prefix-wrapper.d.ts.map +1 -1
  442. package/build-types/input-control/input-suffix-wrapper.d.ts +2 -2
  443. package/build-types/input-control/input-suffix-wrapper.d.ts.map +1 -1
  444. package/build-types/input-control/reducer/reducer.d.ts.map +1 -1
  445. package/build-types/input-control/stories/index.story.d.ts +9 -0
  446. package/build-types/input-control/stories/index.story.d.ts.map +1 -1
  447. package/build-types/input-control/styles/input-control-styles.d.ts +15 -9
  448. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  449. package/build-types/input-control/types.d.ts +23 -6
  450. package/build-types/input-control/types.d.ts.map +1 -1
  451. package/build-types/modal/index.d.ts.map +1 -1
  452. package/build-types/modal/stories/index.story.d.ts +3 -0
  453. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  454. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
  455. package/build-types/navigator/index.d.ts +6 -6
  456. package/build-types/navigator/index.d.ts.map +1 -1
  457. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  458. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  459. package/build-types/navigator/stories/index.story.d.ts +1 -1
  460. package/build-types/navigator/stories/index.story.d.ts.map +1 -1
  461. package/build-types/navigator/types.d.ts +3 -1
  462. package/build-types/navigator/types.d.ts.map +1 -1
  463. package/build-types/navigator/use-navigator.d.ts +1 -2
  464. package/build-types/navigator/use-navigator.d.ts.map +1 -1
  465. package/build-types/private-apis.d.ts.map +1 -1
  466. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  467. package/build-types/resizable-box/resize-tooltip/styles/resize-tooltip.styles.d.ts.map +1 -1
  468. package/build-types/select-control/styles/select-control-styles.d.ts +1 -1
  469. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  470. package/build-types/slot-fill/index.d.ts +3 -0
  471. package/build-types/slot-fill/index.d.ts.map +1 -1
  472. package/build-types/tabs/index.d.ts.map +1 -1
  473. package/build-types/tabs/styles.d.ts.map +1 -1
  474. package/build-types/tabs/tablist.d.ts.map +1 -1
  475. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  476. package/build-types/utils/config-values.d.ts +3 -3
  477. package/build-types/utils/element-rect.d.ts +32 -74
  478. package/build-types/utils/element-rect.d.ts.map +1 -1
  479. package/package.json +19 -20
  480. package/src/alignment-matrix-control/README.md +1 -5
  481. package/src/alignment-matrix-control/cell.tsx +3 -9
  482. package/src/alignment-matrix-control/icon.tsx +48 -30
  483. package/src/alignment-matrix-control/index.tsx +60 -50
  484. package/src/alignment-matrix-control/stories/index.story.tsx +3 -12
  485. package/src/alignment-matrix-control/styles.ts +113 -0
  486. package/src/alignment-matrix-control/types.ts +12 -1
  487. package/src/angle-picker-control/angle-circle.tsx +11 -9
  488. package/src/border-control/border-control/component.tsx +23 -16
  489. package/src/box-control/utils.ts +1 -1
  490. package/src/circular-option-picker/circular-option-picker-option.tsx +16 -19
  491. package/src/circular-option-picker/circular-option-picker.tsx +26 -12
  492. package/src/circular-option-picker/types.ts +2 -2
  493. package/src/clipboard-button/index.tsx +6 -6
  494. package/src/color-palette/test/utils.ts +21 -2
  495. package/src/color-palette/utils.ts +1 -3
  496. package/src/color-picker/color-copy-button.tsx +10 -8
  497. package/src/color-picker/hex-input.tsx +6 -10
  498. package/src/color-picker/input-with-slider.tsx +6 -10
  499. package/src/color-picker/styles.ts +1 -1
  500. package/src/combobox-control/types.ts +1 -0
  501. package/src/composite/README.md +5 -24
  502. package/src/composite/{context.ts → context.tsx} +1 -2
  503. package/src/composite/group-label.tsx +30 -0
  504. package/src/composite/group.tsx +30 -0
  505. package/src/composite/hover.tsx +30 -0
  506. package/src/composite/index.tsx +71 -166
  507. package/src/composite/item.tsx +30 -0
  508. package/src/composite/legacy/index.tsx +73 -11
  509. package/src/composite/legacy/stories/index.story.tsx +2 -1
  510. package/src/composite/legacy/test/index.tsx +57 -1
  511. package/src/composite/row.tsx +30 -0
  512. package/src/composite/stories/index.story.tsx +254 -365
  513. package/src/composite/typeahead.tsx +30 -0
  514. package/src/composite/types.ts +14 -16
  515. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +10 -10
  516. package/src/custom-gradient-picker/style.scss +2 -21
  517. package/src/custom-select-control-v2/styles.ts +4 -4
  518. package/src/date-time/date/index.tsx +1 -1
  519. package/src/date-time/date/styles.ts +33 -13
  520. package/src/date-time/date/test/use-lilius.ts +417 -0
  521. package/src/date-time/date/use-lilius/index.ts +394 -0
  522. package/src/date-time/time/test/index.tsx +3 -6
  523. package/src/date-time/time/time-input/index.tsx +25 -25
  524. package/src/date-time/time/time-input/test/index.tsx +6 -7
  525. package/src/dimension-control/README.md +4 -0
  526. package/src/dimension-control/index.tsx +7 -1
  527. package/src/dimension-control/stories/index.story.tsx +7 -2
  528. package/src/dimension-control/test/__snapshots__/index.test.js.snap +16 -16
  529. package/src/dimension-control/test/index.test.js +1 -0
  530. package/src/draggable/index.tsx +4 -4
  531. package/src/dropdown-menu-v2/README.md +73 -60
  532. package/src/dropdown-menu-v2/checkbox-item.tsx +63 -0
  533. package/src/dropdown-menu-v2/context.tsx +13 -0
  534. package/src/dropdown-menu-v2/group-label.tsx +37 -0
  535. package/src/dropdown-menu-v2/group.tsx +26 -0
  536. package/src/dropdown-menu-v2/index.tsx +57 -197
  537. package/src/dropdown-menu-v2/item-help-text.tsx +23 -0
  538. package/src/dropdown-menu-v2/item-label.tsx +23 -0
  539. package/src/dropdown-menu-v2/item.tsx +50 -0
  540. package/src/dropdown-menu-v2/radio-item.tsx +70 -0
  541. package/src/dropdown-menu-v2/separator.tsx +27 -0
  542. package/src/dropdown-menu-v2/stories/index.story.tsx +295 -262
  543. package/src/dropdown-menu-v2/styles.ts +102 -66
  544. package/src/dropdown-menu-v2/test/index.tsx +159 -132
  545. package/src/dropdown-menu-v2/types.ts +7 -0
  546. package/src/dropdown-menu-v2/use-temporary-focus-visible-fix.ts +22 -0
  547. package/src/focal-point-picker/styles/focal-point-style.ts +6 -1
  548. package/src/form-toggle/style.scss +1 -1
  549. package/src/form-token-field/style.scss +2 -3
  550. package/src/form-token-field/types.ts +1 -0
  551. package/src/index.ts +6 -1
  552. package/src/input-control/index.tsx +2 -2
  553. package/src/input-control/input-base.tsx +4 -14
  554. package/src/input-control/input-prefix-wrapper.tsx +8 -4
  555. package/src/input-control/input-suffix-wrapper.tsx +4 -6
  556. package/src/input-control/reducer/reducer.ts +13 -10
  557. package/src/input-control/stories/index.story.tsx +31 -12
  558. package/src/input-control/styles/input-control-styles.tsx +42 -11
  559. package/src/input-control/types.ts +23 -7
  560. package/src/input-control/utils.ts +3 -3
  561. package/src/item-group/styles.ts +3 -3
  562. package/src/item-group/test/__snapshots__/index.js.snap +3 -3
  563. package/src/modal/index.tsx +21 -12
  564. package/src/modal/stories/index.story.tsx +8 -14
  565. package/src/modal/style.scss +5 -9
  566. package/src/navigation/index.tsx +4 -4
  567. package/src/navigation/styles/navigation-styles.tsx +3 -3
  568. package/src/navigator/index.ts +6 -6
  569. package/src/navigator/navigator-back-button/hook.ts +1 -1
  570. package/src/navigator/navigator-button/hook.ts +1 -1
  571. package/src/navigator/navigator-provider/README.md +2 -3
  572. package/src/navigator/navigator-provider/component.tsx +97 -82
  573. package/src/navigator/navigator-screen/component.tsx +7 -0
  574. package/src/navigator/navigator-to-parent-button/component.tsx +1 -1
  575. package/src/navigator/stories/index.story.tsx +82 -253
  576. package/src/navigator/test/index.tsx +8 -0
  577. package/src/navigator/types.ts +3 -1
  578. package/src/navigator/use-navigator.ts +1 -3
  579. package/src/palette-edit/index.tsx +2 -2
  580. package/src/popover/style.scss +2 -1
  581. package/src/private-apis.ts +1 -23
  582. package/src/range-control/styles/range-control-styles.ts +7 -7
  583. package/src/resizable-box/resize-tooltip/styles/resize-tooltip.styles.ts +2 -2
  584. package/src/resizable-box/style.scss +2 -2
  585. package/src/select-control/README.md +2 -2
  586. package/src/select-control/styles/select-control-styles.ts +5 -5
  587. package/src/slot-fill/bubbles-virtually/fill.tsx +4 -4
  588. package/src/slot-fill/index.tsx +1 -0
  589. package/src/snackbar/index.tsx +4 -4
  590. package/src/tab-panel/style.scss +0 -1
  591. package/src/tabs/index.tsx +8 -4
  592. package/src/tabs/styles.ts +42 -14
  593. package/src/tabs/tablist.tsx +5 -4
  594. package/src/text-control/style.scss +3 -2
  595. package/src/toggle-group-control/toggle-group-control/utils.ts +7 -7
  596. package/src/tools-panel/tools-panel/hook.ts +6 -6
  597. package/src/unit-control/styles/unit-control-styles.ts +2 -1
  598. package/src/utils/config-values.js +6 -4
  599. package/src/utils/element-rect.ts +93 -130
  600. package/src/utils/hooks/use-update-effect.js +4 -4
  601. package/tsconfig.tsbuildinfo +1 -1
  602. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +0 -66
  603. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +0 -1
  604. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +0 -77
  605. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +0 -1
  606. package/build/navigator/navigator-back-button/index.js +0 -14
  607. package/build/navigator/navigator-back-button/index.js.map +0 -1
  608. package/build/navigator/navigator-button/index.js +0 -14
  609. package/build/navigator/navigator-button/index.js.map +0 -1
  610. package/build/navigator/navigator-provider/index.js +0 -14
  611. package/build/navigator/navigator-provider/index.js.map +0 -1
  612. package/build/navigator/navigator-screen/index.js +0 -14
  613. package/build/navigator/navigator-screen/index.js.map +0 -1
  614. package/build/navigator/navigator-to-parent-button/index.js +0 -14
  615. package/build/navigator/navigator-to-parent-button/index.js.map +0 -1
  616. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +0 -63
  617. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +0 -1
  618. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +0 -72
  619. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +0 -1
  620. package/build-module/navigator/navigator-back-button/index.js +0 -2
  621. package/build-module/navigator/navigator-back-button/index.js.map +0 -1
  622. package/build-module/navigator/navigator-button/index.js +0 -2
  623. package/build-module/navigator/navigator-button/index.js.map +0 -1
  624. package/build-module/navigator/navigator-provider/index.js +0 -2
  625. package/build-module/navigator/navigator-provider/index.js.map +0 -1
  626. package/build-module/navigator/navigator-screen/index.js +0 -2
  627. package/build-module/navigator/navigator-screen/index.js.map +0 -1
  628. package/build-module/navigator/navigator-to-parent-button/index.js +0 -2
  629. package/build-module/navigator/navigator-to-parent-button/index.js.map +0 -1
  630. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +0 -18
  631. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +0 -1
  632. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +0 -1
  633. package/build-types/composite/stories/utils.d.ts +0 -29
  634. package/build-types/composite/stories/utils.d.ts.map +0 -1
  635. package/build-types/navigator/navigator-back-button/index.d.ts +0 -2
  636. package/build-types/navigator/navigator-back-button/index.d.ts.map +0 -1
  637. package/build-types/navigator/navigator-button/index.d.ts +0 -2
  638. package/build-types/navigator/navigator-button/index.d.ts.map +0 -1
  639. package/build-types/navigator/navigator-provider/index.d.ts +0 -2
  640. package/build-types/navigator/navigator-provider/index.d.ts.map +0 -1
  641. package/build-types/navigator/navigator-screen/index.d.ts +0 -2
  642. package/build-types/navigator/navigator-screen/index.d.ts.map +0 -1
  643. package/build-types/navigator/navigator-to-parent-button/index.d.ts +0 -2
  644. package/build-types/navigator/navigator-to-parent-button/index.d.ts.map +0 -1
  645. package/src/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.ts +0 -77
  646. package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.ts +0 -102
  647. package/src/composite/stories/utils.tsx +0 -76
  648. package/src/navigator/navigator-back-button/index.ts +0 -1
  649. package/src/navigator/navigator-button/index.ts +0 -1
  650. package/src/navigator/navigator-provider/index.ts +0 -1
  651. package/src/navigator/navigator-screen/index.ts +0 -1
  652. package/src/navigator/navigator-to-parent-button/index.ts +0 -1
@@ -12,17 +12,17 @@ import type { FillComponentProps } from '../types';
12
12
 
13
13
  function useForceUpdate() {
14
14
  const [ , setState ] = useState( {} );
15
- const mounted = useRef( true );
15
+ const mountedRef = useRef( true );
16
16
 
17
17
  useEffect( () => {
18
- mounted.current = true;
18
+ mountedRef.current = true;
19
19
  return () => {
20
- mounted.current = false;
20
+ mountedRef.current = false;
21
21
  };
22
22
  }, [] );
23
23
 
24
24
  return () => {
25
- if ( mounted.current ) {
25
+ if ( mountedRef.current ) {
26
26
  setState( {} );
27
27
  }
28
28
  };
@@ -71,6 +71,7 @@ export function Provider( {
71
71
  </SlotFillProvider>
72
72
  );
73
73
  }
74
+ Provider.displayName = 'SlotFillProvider';
74
75
 
75
76
  export function createSlotFill( key: SlotKey ) {
76
77
  const baseName = typeof key === 'symbol' ? key.description : key;
@@ -96,17 +96,17 @@ function UnforwardedSnackbar(
96
96
 
97
97
  // The `onDismiss/onRemove` can have unstable references,
98
98
  // trigger side-effect cleanup, and reset timers.
99
- const callbackRefs = useRef( { onDismiss, onRemove } );
99
+ const callbacksRef = useRef( { onDismiss, onRemove } );
100
100
  useLayoutEffect( () => {
101
- callbackRefs.current = { onDismiss, onRemove };
101
+ callbacksRef.current = { onDismiss, onRemove };
102
102
  } );
103
103
 
104
104
  useEffect( () => {
105
105
  // Only set up the timeout dismiss if we're not explicitly dismissing.
106
106
  const timeoutHandle = setTimeout( () => {
107
107
  if ( ! explicitDismiss ) {
108
- callbackRefs.current.onDismiss?.();
109
- callbackRefs.current.onRemove?.();
108
+ callbacksRef.current.onDismiss?.();
109
+ callbacksRef.current.onRemove?.();
110
110
  }
111
111
  }, NOTICE_TIMEOUT );
112
112
 
@@ -89,7 +89,6 @@
89
89
  }
90
90
 
91
91
  &:focus-visible {
92
- border-radius: 2px;
93
92
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
94
93
 
95
94
  // Windows high contrast mode.
@@ -55,9 +55,9 @@ function Tabs( {
55
55
  // Keep track of whether tabs have been populated. This is used to prevent
56
56
  // certain effects from firing too early while tab data and relevant
57
57
  // variables are undefined during the initial render.
58
- const tabsHavePopulated = useRef( false );
58
+ const tabsHavePopulatedRef = useRef( false );
59
59
  if ( items.length > 0 ) {
60
- tabsHavePopulated.current = true;
60
+ tabsHavePopulatedRef.current = true;
61
61
  }
62
62
 
63
63
  const selectedTab = items.find( ( item ) => item.id === selectedId );
@@ -94,7 +94,7 @@ function Tabs( {
94
94
 
95
95
  if ( firstEnabledTab ) {
96
96
  setSelectedId( firstEnabledTab.id );
97
- } else if ( tabsHavePopulated.current ) {
97
+ } else if ( tabsHavePopulatedRef.current ) {
98
98
  setSelectedId( null );
99
99
  }
100
100
  }
@@ -148,7 +148,11 @@ function Tabs( {
148
148
 
149
149
  // Once the tabs have populated, if the `selectedTabId` still can't be
150
150
  // found, clear the selection.
151
- if ( tabsHavePopulated.current && !! selectedTabId && ! selectedTab ) {
151
+ if (
152
+ tabsHavePopulatedRef.current &&
153
+ !! selectedTabId &&
154
+ ! selectedTab
155
+ ) {
152
156
  setSelectedId( null );
153
157
  }
154
158
  }, [ isControlled, selectedTab, selectedTabId, setSelectedId ] );
@@ -7,7 +7,7 @@ import * as Ariakit from '@ariakit/react';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { COLORS } from '../utils';
10
+ import { COLORS, CONFIG } from '../utils';
11
11
  import { space } from '../utils/space';
12
12
 
13
13
  export const TabListWrapper = styled.div`
@@ -22,36 +22,65 @@ export const TabListWrapper = styled.div`
22
22
  text-align: start;
23
23
  }
24
24
 
25
- @media not ( prefers-reduced-motion: reduce ) {
25
+ @media not ( prefers-reduced-motion ) {
26
26
  &.is-animation-enabled::after {
27
- transition-property: left, top, width, height;
27
+ transition-property: transform;
28
28
  transition-duration: 0.2s;
29
29
  transition-timing-function: ease-out;
30
30
  }
31
31
  }
32
+ --direction-factor: 1;
33
+ --direction-origin-x: left;
34
+ --indicator-start: var( --indicator-left );
35
+ &:dir( rtl ) {
36
+ --direction-factor: -1;
37
+ --direction-origin-x: right;
38
+ --indicator-start: var( --indicator-right );
39
+ }
32
40
  &::after {
33
41
  content: '';
34
42
  position: absolute;
35
43
  pointer-events: none;
44
+ transform-origin: var( --direction-origin-x ) top;
36
45
 
37
46
  // Windows high contrast mode.
38
47
  outline: 2px solid transparent;
39
48
  outline-offset: -1px;
40
49
  }
41
- &:not( [aria-orientation='vertical'] )::after {
42
- bottom: 0;
43
- left: var( --indicator-left );
44
- width: var( --indicator-width );
45
- height: 0;
46
- border-bottom: var( --wp-admin-border-width-focus ) solid
47
- ${ COLORS.theme.accent };
50
+
51
+ /* Using a large value to avoid antialiasing rounding issues
52
+ when scaling in the transform, see: https://stackoverflow.com/a/52159123 */
53
+ --antialiasing-factor: 100;
54
+ &:not( [aria-orientation='vertical'] ) {
55
+ &::after {
56
+ bottom: 0;
57
+ height: 0;
58
+ width: calc( var( --antialiasing-factor ) * 1px );
59
+ transform: translateX(
60
+ calc(
61
+ var( --indicator-start ) * var( --direction-factor ) *
62
+ 1px
63
+ )
64
+ )
65
+ scaleX(
66
+ calc(
67
+ var( --indicator-width ) / var( --antialiasing-factor )
68
+ )
69
+ );
70
+ border-bottom: var( --wp-admin-border-width-focus ) solid
71
+ ${ COLORS.theme.accent };
72
+ }
48
73
  }
49
74
  &[aria-orientation='vertical']::after {
50
75
  z-index: -1;
76
+ top: 0;
51
77
  left: 0;
52
78
  width: 100%;
53
- top: var( --indicator-top );
54
- height: var( --indicator-height );
79
+ width: calc( var( --antialiasing-factor ) * 1px );
80
+ transform: translateY( calc( var( --indicator-top ) * 1px ) )
81
+ scaleY(
82
+ calc( var( --indicator-height ) / var( --antialiasing-factor ) )
83
+ );
55
84
  background-color: ${ COLORS.theme.gray[ 100 ] };
56
85
  }
57
86
  `;
@@ -107,7 +136,7 @@ export const Tab = styled( Ariakit.Tab )`
107
136
  // Outline works for Windows high contrast mode as well.
108
137
  outline: var( --wp-admin-border-width-focus ) solid
109
138
  ${ COLORS.theme.accent };
110
- border-radius: 2px;
139
+ border-radius: ${ CONFIG.radiusSmall };
111
140
 
112
141
  // Animation
113
142
  opacity: 0;
@@ -136,7 +165,6 @@ export const TabPanel = styled( Ariakit.TabPanel )`
136
165
  }
137
166
 
138
167
  &:focus-visible {
139
- border-radius: 2px;
140
168
  box-shadow: 0 0 0 var( --wp-admin-border-width-focus )
141
169
  ${ COLORS.theme.accent };
142
170
  // Windows high contrast mode.
@@ -78,10 +78,11 @@ export const TabList = forwardRef<
78
78
  onBlur={ onBlur }
79
79
  { ...otherProps }
80
80
  style={ {
81
- '--indicator-left': `${ indicatorPosition.left }px`,
82
- '--indicator-top': `${ indicatorPosition.top }px`,
83
- '--indicator-width': `${ indicatorPosition.width }px`,
84
- '--indicator-height': `${ indicatorPosition.height }px`,
81
+ '--indicator-top': indicatorPosition.top,
82
+ '--indicator-right': indicatorPosition.right,
83
+ '--indicator-left': indicatorPosition.left,
84
+ '--indicator-width': indicatorPosition.width,
85
+ '--indicator-height': indicatorPosition.height,
85
86
  ...otherProps.style,
86
87
  } }
87
88
  className={ clsx(
@@ -23,7 +23,8 @@
23
23
 
24
24
  // Subtract 1px to account for the border, which isn't included on the element
25
25
  // on newer components like InputControl, SelectControl, etc.
26
- padding-left: $grid-unit-20;
27
- padding-right: $grid-unit-20;
26
+ // These values should be shared with the `controlPaddingX` in ./utils/config-values.js
27
+ padding-left: $grid-unit-15;
28
+ padding-right: $grid-unit-15;
28
29
  }
29
30
  }
@@ -21,23 +21,23 @@ type ValueProp = ToggleGroupControlProps[ 'value' ];
21
21
  export function useComputeControlledOrUncontrolledValue(
22
22
  valueProp: ValueProp
23
23
  ): { value: ValueProp; defaultValue: ValueProp } {
24
- const isInitialRender = useRef( true );
24
+ const isInitialRenderRef = useRef( true );
25
25
  const prevValueProp = usePrevious( valueProp );
26
- const prevIsControlled = useRef( false );
26
+ const prevIsControlledRef = useRef( false );
27
27
 
28
28
  useEffect( () => {
29
- if ( isInitialRender.current ) {
30
- isInitialRender.current = false;
29
+ if ( isInitialRenderRef.current ) {
30
+ isInitialRenderRef.current = false;
31
31
  }
32
32
  }, [] );
33
33
 
34
34
  // Assume the component is being used in controlled mode on the first re-render
35
35
  // that has a different `valueProp` from the previous render.
36
36
  const isControlled =
37
- prevIsControlled.current ||
38
- ( ! isInitialRender.current && prevValueProp !== valueProp );
37
+ prevIsControlledRef.current ||
38
+ ( ! isInitialRenderRef.current && prevValueProp !== valueProp );
39
39
  useEffect( () => {
40
- prevIsControlled.current = isControlled;
40
+ prevIsControlledRef.current = isControlled;
41
41
  }, [ isControlled ] );
42
42
 
43
43
  if ( isControlled ) {
@@ -94,16 +94,16 @@ export function useToolsPanel(
94
94
  ...otherProps
95
95
  } = useContextSystem( props, 'ToolsPanel' );
96
96
 
97
- const isResetting = useRef( false );
98
- const wasResetting = isResetting.current;
97
+ const isResettingRef = useRef( false );
98
+ const wasResetting = isResettingRef.current;
99
99
 
100
- // `isResetting` is cleared via this hook to effectively batch together
100
+ // `isResettingRef` is cleared via this hook to effectively batch together
101
101
  // the resetAll task. Without this, the flag is cleared after the first
102
102
  // control updates and forces a rerender with subsequent controls then
103
103
  // believing they need to reset, unfortunately using stale data.
104
104
  useEffect( () => {
105
105
  if ( wasResetting ) {
106
- isResetting.current = false;
106
+ isResettingRef.current = false;
107
107
  }
108
108
  }, [ wasResetting ] );
109
109
 
@@ -303,7 +303,7 @@ export function useToolsPanel(
303
303
  // Resets display of children and executes resetAll callback if available.
304
304
  const resetAllItems = useCallback( () => {
305
305
  if ( typeof resetAll === 'function' ) {
306
- isResetting.current = true;
306
+ isResettingRef.current = true;
307
307
  resetAll( resetAllFilters );
308
308
  }
309
309
 
@@ -340,7 +340,7 @@ export function useToolsPanel(
340
340
  firstDisplayedItem,
341
341
  flagItemCustomization,
342
342
  hasMenuItems: !! panelItems.length,
343
- isResetting: isResetting.current,
343
+ isResetting: isResettingRef.current,
344
344
  lastDisplayedItem,
345
345
  menuItems,
346
346
  panelId,
@@ -64,6 +64,7 @@ const baseUnitLabelStyles = ( { selectSize }: SelectProps ) => {
64
64
  white-space: nowrap;
65
65
  overflow: hidden;
66
66
  text-overflow: ellipsis;
67
+ field-sizing: content;
67
68
 
68
69
  &:not( :disabled ) {
69
70
  color: ${ COLORS.theme.accent };
@@ -114,7 +115,7 @@ const unitSelectSizes = ( { selectSize = 'default' }: SelectProps ) => {
114
115
  align-items: center;
115
116
 
116
117
  &:where( :not( :disabled ) ):hover {
117
- box-shadow: inset 0 0 0
118
+ box-shadow: 0 0 0
118
119
  ${ CONFIG.borderWidth + ' ' + COLORS.ui.borderFocus };
119
120
  outline: ${ CONFIG.borderWidth } solid transparent; // For High Contrast Mode
120
121
  }
@@ -5,14 +5,16 @@ import { space } from './space';
5
5
  import { COLORS } from './colors-values';
6
6
 
7
7
  const CONTROL_HEIGHT = '36px';
8
- const CONTROL_PADDING_X = '12px';
9
8
 
10
9
  const CONTROL_PROPS = {
11
10
  controlSurfaceColor: COLORS.white,
12
11
  controlTextActiveColor: COLORS.theme.accent,
13
- controlPaddingX: CONTROL_PADDING_X,
14
- controlPaddingXLarge: `calc(${ CONTROL_PADDING_X } * 1.3334)`,
15
- controlPaddingXSmall: `calc(${ CONTROL_PADDING_X } / 1.3334)`,
12
+
13
+ // These values should be shared with TextControl.
14
+ controlPaddingX: 12,
15
+ controlPaddingXSmall: 8,
16
+ controlPaddingXLarge: 12 * 1.3334, // TODO: Deprecate
17
+
16
18
  controlBackgroundColor: COLORS.white,
17
19
  controlBoxShadow: 'transparent',
18
20
  controlBoxShadowFocus: `0 0 0 0.5px ${ COLORS.theme.accent }`,
@@ -2,134 +2,37 @@
2
2
  /**
3
3
  * WordPress dependencies
4
4
  */
5
- import { useRef, useEffect, useState } from '@wordpress/element';
5
+ import { useLayoutEffect, useRef, useState } from '@wordpress/element';
6
+ import { useResizeObserver } from '@wordpress/compose';
6
7
  /**
7
8
  * Internal dependencies
8
9
  */
9
10
  import { useEvent } from './hooks/use-event';
10
11
 
11
12
  /**
12
- * `useTrackElementRectUpdates` options.
13
+ * The position and dimensions of an element, relative to its offset parent.
13
14
  */
14
- export type UseTrackElementRectUpdatesOptions = {
15
+ export type ElementOffsetRect = {
15
16
  /**
16
- * Whether to trigger the callback when an element's ResizeObserver is
17
- * first set up, including when the target element changes.
18
- *
19
- * @default true
17
+ * The distance from the top edge of the offset parent to the top edge of
18
+ * the element.
20
19
  */
21
- fireOnElementInit?: boolean;
22
- };
23
-
24
- /**
25
- * Tracks an element's "rect" (size and position) and fires `onRect` for all
26
- * of its discrete values. The element can be changed dynamically and **it
27
- * must not be stored in a ref**. Instead, it should be stored in a React
28
- * state or equivalent.
29
- *
30
- * By default, `onRect` is called initially for the target element (including
31
- * when the target element changes), not only on size or position updates.
32
- * This allows consumers of the hook to always be in sync with all rect values
33
- * of the target element throughout its lifetime. This behavior can be
34
- * disabled by setting the `fireOnElementInit` option to `false`.
35
- *
36
- * Under the hood, it sets up a `ResizeObserver` that tracks the element. The
37
- * target element can be changed dynamically, and the observer will be
38
- * updated accordingly.
39
- *
40
- * @example
41
- *
42
- * ```tsx
43
- * const [ targetElement, setTargetElement ] = useState< HTMLElement | null >();
44
- *
45
- * useTrackElementRectUpdates( targetElement, ( element ) => {
46
- * console.log( 'Element resized:', element );
47
- * } );
48
- *
49
- * <div ref={ setTargetElement } />;
50
- * ```
51
- */
52
- export function useTrackElementRectUpdates(
20
+ top: number;
53
21
  /**
54
- * The target element to observe. It can be changed dynamically.
22
+ * The distance from the right edge of the offset parent to the right edge
23
+ * of the element.
55
24
  */
56
- targetElement: HTMLElement | undefined | null,
25
+ right: number;
57
26
  /**
58
- * Callback to fire when the element is resized. It will also be
59
- * called when the observer is set up, unless `fireOnElementInit` is
60
- * set to `false`.
27
+ * The distance from the bottom edge of the offset parent to the bottom edge
28
+ * of the element.
61
29
  */
62
- onRect: (
63
- /**
64
- * The element being tracked at the time of this update.
65
- */
66
- element: HTMLElement,
67
- /**
68
- * The list of
69
- * [`ResizeObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry)
70
- * objects passed to the `ResizeObserver.observe` callback. This list
71
- * won't be available when the observer is set up, and only on updates.
72
- */
73
- resizeObserverEntries?: ResizeObserverEntry[]
74
- ) => void,
75
- { fireOnElementInit = true }: UseTrackElementRectUpdatesOptions = {}
76
- ) {
77
- const onRectEvent = useEvent( onRect );
78
-
79
- const observedElementRef = useRef< HTMLElement | null >();
80
- const resizeObserverRef = useRef< ResizeObserver >();
81
-
82
- // TODO: could this be a layout effect?
83
- useEffect( () => {
84
- if ( targetElement === observedElementRef.current ) {
85
- return;
86
- }
87
-
88
- observedElementRef.current = targetElement;
89
-
90
- // Set up a ResizeObserver.
91
- if ( ! resizeObserverRef.current ) {
92
- resizeObserverRef.current = new ResizeObserver( ( entries ) => {
93
- if ( observedElementRef.current ) {
94
- onRectEvent( observedElementRef.current, entries );
95
- }
96
- } );
97
- }
98
- const { current: resizeObserver } = resizeObserverRef;
99
-
100
- // Observe new element.
101
- if ( targetElement ) {
102
- if ( fireOnElementInit ) {
103
- // TODO: investigate if this can be removed,
104
- // see: https://stackoverflow.com/a/60026394
105
- onRectEvent( targetElement );
106
- }
107
- resizeObserver.observe( targetElement );
108
- }
109
-
110
- return () => {
111
- // Unobserve previous element.
112
- if ( observedElementRef.current ) {
113
- resizeObserver.unobserve( observedElementRef.current );
114
- }
115
- };
116
- }, [ fireOnElementInit, onRectEvent, targetElement ] );
117
- }
118
-
119
- /**
120
- * The position and dimensions of an element, relative to its offset parent.
121
- */
122
- export type ElementOffsetRect = {
30
+ bottom: number;
123
31
  /**
124
32
  * The distance from the left edge of the offset parent to the left edge of
125
33
  * the element.
126
34
  */
127
35
  left: number;
128
- /**
129
- * The distance from the top edge of the offset parent to the top edge of
130
- * the element.
131
- */
132
- top: number;
133
36
  /**
134
37
  * The width of the element.
135
38
  */
@@ -144,51 +47,111 @@ export type ElementOffsetRect = {
144
47
  * An `ElementOffsetRect` object with all values set to zero.
145
48
  */
146
49
  export const NULL_ELEMENT_OFFSET_RECT = {
147
- left: 0,
148
50
  top: 0,
51
+ right: 0,
52
+ bottom: 0,
53
+ left: 0,
149
54
  width: 0,
150
55
  height: 0,
151
56
  } satisfies ElementOffsetRect;
152
57
 
153
58
  /**
154
59
  * Returns the position and dimensions of an element, relative to its offset
155
- * parent. This is useful in contexts where `getBoundingClientRect` is not
156
- * suitable, such as when the element is transformed.
60
+ * parent, with subpixel precision. Values reflect the real measures before any
61
+ * potential scaling distortions along the X and Y axes.
157
62
  *
158
- * **Note:** the `left` and `right` values are adjusted due to a limitation
159
- * in the way the browser calculates the offset position of the element,
160
- * which can cause unwanted scrollbars to appear. This adjustment makes the
161
- * values potentially inaccurate within a range of 1 pixel.
63
+ * Useful in contexts where plain `getBoundingClientRect` calls or `ResizeObserver`
64
+ * entries are not suitable, such as when the element is transformed, and when
65
+ * `element.offset<Top|Left|Width|Height>` methods are not precise enough.
66
+ *
67
+ * **Note:** in some contexts, like when the scale is 0, this method will fail
68
+ * because it's impossible to calculate a scaling ratio. When that happens, it
69
+ * will return `undefined`.
162
70
  */
163
71
  export function getElementOffsetRect(
164
72
  element: HTMLElement
165
- ): ElementOffsetRect {
73
+ ): ElementOffsetRect | undefined {
74
+ // Position and dimension values computed with `getBoundingClientRect` have
75
+ // subpixel precision, but are affected by distortions since they represent
76
+ // the "real" measures, or in other words, the actual final values as rendered
77
+ // by the browser.
78
+ const rect = element.getBoundingClientRect();
79
+ if ( rect.width === 0 || rect.height === 0 ) {
80
+ return;
81
+ }
82
+ const offsetParentRect =
83
+ element.offsetParent?.getBoundingClientRect() ??
84
+ NULL_ELEMENT_OFFSET_RECT;
85
+
86
+ // Computed widths and heights have subpixel precision, and are not affected
87
+ // by distortions.
88
+ const computedWidth = parseFloat( getComputedStyle( element ).width );
89
+ const computedHeight = parseFloat( getComputedStyle( element ).height );
90
+
91
+ // We can obtain the current scale factor for the element by comparing "computed"
92
+ // dimensions with the "real" ones.
93
+ const scaleX = computedWidth / rect.width;
94
+ const scaleY = computedHeight / rect.height;
95
+
166
96
  return {
167
- // The adjustments mentioned in the documentation above are necessary
168
- // because `offsetLeft` and `offsetTop` are rounded to the nearest pixel,
169
- // which can result in a position mismatch that causes unwanted overflow.
170
- // For context, see: https://github.com/WordPress/gutenberg/pull/61979
171
- left: Math.max( element.offsetLeft - 1, 0 ),
172
- top: Math.max( element.offsetTop - 1, 0 ),
173
- // This is a workaround to obtain these values with a sub-pixel precision,
174
- // since `offsetWidth` and `offsetHeight` are rounded to the nearest pixel.
175
- width: parseFloat( getComputedStyle( element ).width ),
176
- height: parseFloat( getComputedStyle( element ).height ),
97
+ // To obtain the adjusted values for the position:
98
+ // 1. Compute the element's position relative to the offset parent.
99
+ // 2. Correct for the scale factor.
100
+ top: ( rect.top - offsetParentRect?.top ) * scaleY,
101
+ right: ( offsetParentRect?.right - rect.right ) * scaleX,
102
+ bottom: ( offsetParentRect?.bottom - rect.bottom ) * scaleY,
103
+ left: ( rect.left - offsetParentRect?.left ) * scaleX,
104
+ // Computed dimensions don't need any adjustments.
105
+ width: computedWidth,
106
+ height: computedHeight,
177
107
  };
178
108
  }
179
109
 
110
+ const POLL_RATE = 100;
111
+
180
112
  /**
181
113
  * Tracks the position and dimensions of an element, relative to its offset
182
114
  * parent. The element can be changed dynamically.
115
+ *
116
+ * **Note:** sometimes, the measurement will fail (see `getElementOffsetRect`'s
117
+ * documentation for more details). When that happens, this hook will attempt
118
+ * to measure again after a frame, and if that fails, it will poll every 100
119
+ * milliseconds until it succeeds.
183
120
  */
184
121
  export function useTrackElementOffsetRect(
185
122
  targetElement: HTMLElement | undefined | null
186
123
  ) {
187
124
  const [ indicatorPosition, setIndicatorPosition ] =
188
125
  useState< ElementOffsetRect >( NULL_ELEMENT_OFFSET_RECT );
126
+ const intervalRef = useRef< ReturnType< typeof setInterval > >();
127
+
128
+ const measure = useEvent( () => {
129
+ if ( targetElement ) {
130
+ const elementOffsetRect = getElementOffsetRect( targetElement );
131
+ if ( elementOffsetRect ) {
132
+ setIndicatorPosition( elementOffsetRect );
133
+ clearInterval( intervalRef.current );
134
+ return true;
135
+ }
136
+ } else {
137
+ clearInterval( intervalRef.current );
138
+ }
139
+ return false;
140
+ } );
141
+
142
+ const setElement = useResizeObserver( () => {
143
+ if ( ! measure() ) {
144
+ requestAnimationFrame( () => {
145
+ if ( ! measure() ) {
146
+ intervalRef.current = setInterval( measure, POLL_RATE );
147
+ }
148
+ } );
149
+ }
150
+ } );
189
151
 
190
- useTrackElementRectUpdates( targetElement, ( element ) =>
191
- setIndicatorPosition( getElementOffsetRect( element ) )
152
+ useLayoutEffect(
153
+ () => setElement( targetElement ),
154
+ [ setElement, targetElement ]
192
155
  );
193
156
 
194
157
  return indicatorPosition;
@@ -12,12 +12,12 @@ import { useRef, useEffect } from '@wordpress/element';
12
12
  * @param {import('react').DependencyList} deps
13
13
  */
14
14
  function useUpdateEffect( effect, deps ) {
15
- const mounted = useRef( false );
15
+ const mountedRef = useRef( false );
16
16
  useEffect( () => {
17
- if ( mounted.current ) {
17
+ if ( mountedRef.current ) {
18
18
  return effect();
19
19
  }
20
- mounted.current = true;
20
+ mountedRef.current = true;
21
21
  return undefined;
22
22
  // Disable reasons:
23
23
  // 1. This hook needs to pass a dep list that isn't an array literal
@@ -28,7 +28,7 @@ function useUpdateEffect( effect, deps ) {
28
28
 
29
29
  useEffect(
30
30
  () => () => {
31
- mounted.current = false;
31
+ mountedRef.current = false;
32
32
  },
33
33
  []
34
34
  );