@wordpress/components 32.2.1-next.v.202602111440.0 → 32.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (588) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/CLAUDE.md +1 -0
  3. package/build/alignment-matrix-control/cell.cjs +2 -2
  4. package/build/alignment-matrix-control/cell.cjs.map +1 -1
  5. package/build/alignment-matrix-control/index.cjs +2 -2
  6. package/build/alignment-matrix-control/index.cjs.map +1 -1
  7. package/build/angle-picker-control/angle-circle.cjs +4 -4
  8. package/build/angle-picker-control/angle-circle.cjs.map +2 -2
  9. package/build/autocomplete/index.cjs +16 -8
  10. package/build/autocomplete/index.cjs.map +2 -2
  11. package/build/clipboard-button/index.cjs +1 -1
  12. package/build/clipboard-button/index.cjs.map +2 -2
  13. package/build/color-picker/color-copy-button.cjs +1 -1
  14. package/build/color-picker/color-copy-button.cjs.map +2 -2
  15. package/build/confirm-dialog/component.cjs +2 -2
  16. package/build/confirm-dialog/component.cjs.map +2 -2
  17. package/build/context/context-system-provider.cjs.map +1 -1
  18. package/build/custom-gradient-picker/gradient-bar/control-points.cjs +2 -2
  19. package/build/custom-gradient-picker/gradient-bar/control-points.cjs.map +2 -2
  20. package/build/date-time/date/index.cjs +1 -1
  21. package/build/date-time/date/index.cjs.map +2 -2
  22. package/build/date-time/time/index.cjs +1 -1
  23. package/build/date-time/time/index.cjs.map +2 -2
  24. package/build/date-time/utils.cjs +9 -0
  25. package/build/date-time/utils.cjs.map +2 -2
  26. package/build/dropdown/index.cjs +1 -1
  27. package/build/dropdown/index.cjs.map +2 -2
  28. package/build/external-link/index.cjs +5 -1
  29. package/build/external-link/index.cjs.map +2 -2
  30. package/build/higher-order/with-spoken-messages/index.cjs.map +2 -2
  31. package/build/modal/index.cjs +2 -2
  32. package/build/modal/index.cjs.map +2 -2
  33. package/build/modal/use-modal-exit-animation.cjs +2 -2
  34. package/build/modal/use-modal-exit-animation.cjs.map +2 -2
  35. package/build/number-control/index.cjs +1 -1
  36. package/build/number-control/index.cjs.map +2 -2
  37. package/build/palette-edit/index.cjs +1 -1
  38. package/build/palette-edit/index.cjs.map +2 -2
  39. package/build/panel/body.cjs +1 -1
  40. package/build/panel/body.cjs.map +2 -2
  41. package/build/private-apis.cjs +0 -2
  42. package/build/private-apis.cjs.map +2 -2
  43. package/build/range-control/index.cjs +1 -1
  44. package/build/range-control/index.cjs.map +2 -2
  45. package/build/resizable-box/resize-tooltip/utils.cjs +1 -1
  46. package/build/resizable-box/resize-tooltip/utils.cjs.map +2 -2
  47. package/build/sandbox/index.cjs +126 -2
  48. package/build/sandbox/index.cjs.map +2 -2
  49. package/build/select-control/styles/select-control-styles.cjs +8 -8
  50. package/build/select-control/styles/select-control-styles.cjs.map +2 -2
  51. package/build/snackbar/list.cjs +4 -1
  52. package/build/snackbar/list.cjs.map +2 -2
  53. package/build/tabs/styles.cjs +5 -5
  54. package/build/tabs/styles.cjs.map +2 -2
  55. package/build/text/utils.cjs.map +1 -1
  56. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs +8 -8
  57. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs.map +2 -2
  58. package/build/tree-grid/roving-tab-index-item.cjs +1 -1
  59. package/build/tree-grid/roving-tab-index-item.cjs.map +2 -2
  60. package/build/utils/element-rect.cjs +1 -1
  61. package/build/utils/element-rect.cjs.map +2 -2
  62. package/build/utils/hooks/use-update-effect.cjs.map +1 -1
  63. package/build/utils/rtl.cjs +2 -2
  64. package/build/utils/rtl.cjs.map +2 -2
  65. package/build/utils/use-responsive-value.cjs +1 -7
  66. package/build/utils/use-responsive-value.cjs.map +2 -2
  67. package/build/validated-form-controls/control-with-error.cjs +26 -3
  68. package/build/validated-form-controls/control-with-error.cjs.map +2 -2
  69. package/build/validated-form-controls/validity-indicator.cjs +2 -0
  70. package/build/validated-form-controls/validity-indicator.cjs.map +2 -2
  71. package/build-module/alignment-matrix-control/cell.mjs +2 -2
  72. package/build-module/alignment-matrix-control/cell.mjs.map +1 -1
  73. package/build-module/alignment-matrix-control/index.mjs +2 -2
  74. package/build-module/alignment-matrix-control/index.mjs.map +1 -1
  75. package/build-module/angle-picker-control/angle-circle.mjs +4 -4
  76. package/build-module/angle-picker-control/angle-circle.mjs.map +2 -2
  77. package/build-module/autocomplete/index.mjs +14 -7
  78. package/build-module/autocomplete/index.mjs.map +2 -2
  79. package/build-module/clipboard-button/index.mjs +1 -1
  80. package/build-module/clipboard-button/index.mjs.map +2 -2
  81. package/build-module/color-picker/color-copy-button.mjs +1 -1
  82. package/build-module/color-picker/color-copy-button.mjs.map +2 -2
  83. package/build-module/confirm-dialog/component.mjs +2 -2
  84. package/build-module/confirm-dialog/component.mjs.map +2 -2
  85. package/build-module/context/context-system-provider.mjs.map +1 -1
  86. package/build-module/custom-gradient-picker/gradient-bar/control-points.mjs +2 -2
  87. package/build-module/custom-gradient-picker/gradient-bar/control-points.mjs.map +2 -2
  88. package/build-module/date-time/date/index.mjs +1 -1
  89. package/build-module/date-time/date/index.mjs.map +2 -2
  90. package/build-module/date-time/time/index.mjs +2 -2
  91. package/build-module/date-time/time/index.mjs.map +2 -2
  92. package/build-module/date-time/utils.mjs +8 -0
  93. package/build-module/date-time/utils.mjs.map +2 -2
  94. package/build-module/dropdown/index.mjs +1 -1
  95. package/build-module/dropdown/index.mjs.map +2 -2
  96. package/build-module/external-link/index.mjs +5 -1
  97. package/build-module/external-link/index.mjs.map +2 -2
  98. package/build-module/higher-order/with-spoken-messages/index.mjs.map +2 -2
  99. package/build-module/modal/index.mjs +2 -2
  100. package/build-module/modal/index.mjs.map +2 -2
  101. package/build-module/modal/use-modal-exit-animation.mjs +2 -2
  102. package/build-module/modal/use-modal-exit-animation.mjs.map +2 -2
  103. package/build-module/number-control/index.mjs +1 -1
  104. package/build-module/number-control/index.mjs.map +2 -2
  105. package/build-module/palette-edit/index.mjs +1 -1
  106. package/build-module/palette-edit/index.mjs.map +2 -2
  107. package/build-module/panel/body.mjs +1 -1
  108. package/build-module/panel/body.mjs.map +2 -2
  109. package/build-module/private-apis.mjs +0 -2
  110. package/build-module/private-apis.mjs.map +2 -2
  111. package/build-module/range-control/index.mjs +1 -1
  112. package/build-module/range-control/index.mjs.map +2 -2
  113. package/build-module/resizable-box/resize-tooltip/utils.mjs +1 -1
  114. package/build-module/resizable-box/resize-tooltip/utils.mjs.map +2 -2
  115. package/build-module/sandbox/index.mjs +127 -3
  116. package/build-module/sandbox/index.mjs.map +2 -2
  117. package/build-module/select-control/styles/select-control-styles.mjs +8 -8
  118. package/build-module/select-control/styles/select-control-styles.mjs.map +2 -2
  119. package/build-module/snackbar/list.mjs +4 -1
  120. package/build-module/snackbar/list.mjs.map +2 -2
  121. package/build-module/tabs/styles.mjs +5 -5
  122. package/build-module/tabs/styles.mjs.map +2 -2
  123. package/build-module/text/utils.mjs.map +1 -1
  124. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs +8 -8
  125. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs.map +2 -2
  126. package/build-module/tree-grid/roving-tab-index-item.mjs +1 -1
  127. package/build-module/tree-grid/roving-tab-index-item.mjs.map +2 -2
  128. package/build-module/utils/element-rect.mjs +1 -1
  129. package/build-module/utils/element-rect.mjs.map +2 -2
  130. package/build-module/utils/hooks/use-update-effect.mjs.map +1 -1
  131. package/build-module/utils/rtl.mjs +2 -2
  132. package/build-module/utils/rtl.mjs.map +2 -2
  133. package/build-module/utils/use-responsive-value.mjs +1 -7
  134. package/build-module/utils/use-responsive-value.mjs.map +2 -2
  135. package/build-module/validated-form-controls/control-with-error.mjs +27 -4
  136. package/build-module/validated-form-controls/control-with-error.mjs.map +2 -2
  137. package/build-module/validated-form-controls/validity-indicator.mjs +2 -0
  138. package/build-module/validated-form-controls/validity-indicator.mjs.map +2 -2
  139. package/build-style/style-rtl.css +8 -4
  140. package/build-style/style.css +8 -4
  141. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
  142. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
  143. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
  144. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
  145. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  146. package/build-types/angle-picker-control/index.d.ts +1 -1
  147. package/build-types/angle-picker-control/stories/index.story.d.ts +1 -1
  148. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +25 -0
  149. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -0
  150. package/build-types/animate/index.d.ts +1 -1
  151. package/build-types/animate/index.d.ts.map +1 -1
  152. package/build-types/animate/types.d.ts +1 -1
  153. package/build-types/animate/types.d.ts.map +1 -1
  154. package/build-types/autocomplete/get-autocomplete-match.d.ts +20 -0
  155. package/build-types/autocomplete/get-autocomplete-match.d.ts.map +1 -0
  156. package/build-types/autocomplete/index.d.ts +10 -2
  157. package/build-types/autocomplete/index.d.ts.map +1 -1
  158. package/build-types/autocomplete/test/get-autocomplete-match.d.ts +2 -0
  159. package/build-types/autocomplete/test/get-autocomplete-match.d.ts.map +1 -0
  160. package/build-types/autocomplete/types.d.ts +1 -1
  161. package/build-types/autocomplete/types.d.ts.map +1 -1
  162. package/build-types/badge/stories/e2e/index.story.d.ts +7 -0
  163. package/build-types/badge/stories/e2e/index.story.d.ts.map +1 -0
  164. package/build-types/base-control/index.d.ts +2 -2
  165. package/build-types/base-control/stories/index.story.d.ts +1 -1
  166. package/build-types/border-box-control/border-box-control/hook.d.ts +1 -1
  167. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +1 -1
  168. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +1 -1
  169. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +1 -1
  170. package/build-types/border-control/border-control/hook.d.ts +1 -1
  171. package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -1
  172. package/build-types/border-control/border-control-style-picker/hook.d.ts +267 -0
  173. package/build-types/border-control/border-control-style-picker/hook.d.ts.map +1 -0
  174. package/build-types/box-control/all-input-control.d.ts +4 -0
  175. package/build-types/box-control/all-input-control.d.ts.map +1 -0
  176. package/build-types/box-control/axial-input-controls.d.ts +4 -0
  177. package/build-types/box-control/axial-input-controls.d.ts.map +1 -0
  178. package/build-types/box-control/input-controls.d.ts +4 -0
  179. package/build-types/box-control/input-controls.d.ts.map +1 -0
  180. package/build-types/box-control/styles/box-control-styles.d.ts +2 -2
  181. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  182. package/build-types/box-control/styles/box-control-visualizer-styles.d.ts +46 -0
  183. package/build-types/box-control/styles/box-control-visualizer-styles.d.ts.map +1 -0
  184. package/build-types/box-control/unit-control.d.ts +4 -0
  185. package/build-types/box-control/unit-control.d.ts.map +1 -0
  186. package/build-types/card/card/hook.d.ts +1 -1
  187. package/build-types/card/card-body/hook.d.ts +1 -1
  188. package/build-types/card/card-footer/hook.d.ts +1 -1
  189. package/build-types/card/card-header/hook.d.ts +1 -1
  190. package/build-types/card/card-media/hook.d.ts +1 -1
  191. package/build-types/color-palette/stories/index.story.d.ts +6 -5
  192. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  193. package/build-types/color-palette/styles.d.ts +1 -1
  194. package/build-types/color-picker/color-copy-button.d.ts.map +1 -1
  195. package/build-types/color-picker/styles.d.ts +2 -2
  196. package/build-types/color-picker/styles.d.ts.map +1 -1
  197. package/build-types/combobox-control/styles.d.ts +1 -1
  198. package/build-types/context/context-connect.d.ts +2 -2
  199. package/build-types/context/context-connect.d.ts.map +1 -1
  200. package/build-types/context/context-system-provider.d.ts +2 -2
  201. package/build-types/context/context-system-provider.d.ts.map +1 -1
  202. package/build-types/context/wordpress-component.d.ts +3 -3
  203. package/build-types/context/wordpress-component.d.ts.map +1 -1
  204. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  205. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +2 -2
  206. package/build-types/custom-gradient-picker/test/index.d.ts +2 -0
  207. package/build-types/custom-gradient-picker/test/index.d.ts.map +1 -0
  208. package/build-types/custom-gradient-picker/types.d.ts +1 -1
  209. package/build-types/custom-gradient-picker/types.d.ts.map +1 -1
  210. package/build-types/custom-select-control/styles.d.ts +11 -0
  211. package/build-types/custom-select-control/styles.d.ts.map +1 -0
  212. package/build-types/custom-select-control-v2/types.d.ts +4 -4
  213. package/build-types/custom-select-control-v2/types.d.ts.map +1 -1
  214. package/build-types/date-time/date/styles.d.ts +2 -2
  215. package/build-types/date-time/date-picker/index.d.ts +23 -0
  216. package/build-types/date-time/date-picker/index.d.ts.map +1 -0
  217. package/build-types/date-time/date-picker/styles.d.ts +45 -0
  218. package/build-types/date-time/date-picker/styles.d.ts.map +1 -0
  219. package/build-types/date-time/date-picker/test/index.d.ts +2 -0
  220. package/build-types/date-time/date-picker/test/index.d.ts.map +1 -0
  221. package/build-types/date-time/date-picker/test/use-lilius.d.ts +2 -0
  222. package/build-types/date-time/date-picker/test/use-lilius.d.ts.map +1 -0
  223. package/build-types/date-time/date-picker/use-lilius/index.d.ts +169 -0
  224. package/build-types/date-time/date-picker/use-lilius/index.d.ts.map +1 -0
  225. package/build-types/date-time/date-time/styles.d.ts +1 -1
  226. package/build-types/date-time/time/index.d.ts.map +1 -1
  227. package/build-types/date-time/time-picker/index.d.ts +27 -0
  228. package/build-types/date-time/time-picker/index.d.ts.map +1 -0
  229. package/build-types/date-time/time-picker/styles.d.ts +93 -0
  230. package/build-types/date-time/time-picker/styles.d.ts.map +1 -0
  231. package/build-types/date-time/time-picker/test/index.d.ts +2 -0
  232. package/build-types/date-time/time-picker/test/index.d.ts.map +1 -0
  233. package/build-types/date-time/time-picker/time-input/index.d.ts +4 -0
  234. package/build-types/date-time/time-picker/time-input/index.d.ts.map +1 -0
  235. package/build-types/date-time/time-picker/time-input/test/index.d.ts +2 -0
  236. package/build-types/date-time/time-picker/time-input/test/index.d.ts.map +1 -0
  237. package/build-types/date-time/time-picker/timezone.d.ts +7 -0
  238. package/build-types/date-time/time-picker/timezone.d.ts.map +1 -0
  239. package/build-types/date-time/utils.d.ts +9 -0
  240. package/build-types/date-time/utils.d.ts.map +1 -1
  241. package/build-types/dimension-control/index.d.ts +28 -0
  242. package/build-types/dimension-control/index.d.ts.map +1 -0
  243. package/build-types/dimension-control/sizes.d.ts +26 -0
  244. package/build-types/dimension-control/sizes.d.ts.map +1 -0
  245. package/build-types/dimension-control/stories/index.story.d.ts +4 -0
  246. package/build-types/dimension-control/stories/index.story.d.ts.map +1 -0
  247. package/build-types/dimension-control/types.d.ts +47 -0
  248. package/build-types/dimension-control/types.d.ts.map +1 -0
  249. package/build-types/draggable/types.d.ts +1 -1
  250. package/build-types/draggable/types.d.ts.map +1 -1
  251. package/build-types/drop-zone/types.d.ts +1 -1
  252. package/build-types/drop-zone/types.d.ts.map +1 -1
  253. package/build-types/dropdown-menu/types.d.ts +1 -1
  254. package/build-types/dropdown-menu/types.d.ts.map +1 -1
  255. package/build-types/dropdown-menu-v2/index.d.ts +17 -0
  256. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -0
  257. package/build-types/dropdown-menu-v2/stories/index.story.d.ts +11 -0
  258. package/build-types/dropdown-menu-v2/stories/index.story.d.ts.map +1 -0
  259. package/build-types/dropdown-menu-v2/styles.d.ts +42 -0
  260. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -0
  261. package/build-types/dropdown-menu-v2/test/index.d.ts +2 -0
  262. package/build-types/dropdown-menu-v2/test/index.d.ts.map +1 -0
  263. package/build-types/dropdown-menu-v2/types.d.ts +252 -0
  264. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -0
  265. package/build-types/elevation/hook.d.ts +1 -1
  266. package/build-types/external-link/index.d.ts.map +1 -1
  267. package/build-types/external-link/styles/external-link-styles.d.ts +10 -0
  268. package/build-types/external-link/styles/external-link-styles.d.ts.map +1 -0
  269. package/build-types/flex/flex/hook.d.ts +1 -1
  270. package/build-types/flex/flex-block/hook.d.ts +1 -1
  271. package/build-types/flex/flex-item/hook.d.ts +1 -1
  272. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  273. package/build-types/font-size-picker/stories/index.story.d.ts +8 -7
  274. package/build-types/font-size-picker/stories/index.story.d.ts.map +1 -1
  275. package/build-types/font-size-picker/styles.d.ts +2 -2
  276. package/build-types/form-token-field/styles.d.ts +1 -1
  277. package/build-types/gradient-picker/stories/index.story.d.ts +6 -5
  278. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  279. package/build-types/grid/hook.d.ts +1 -1
  280. package/build-types/h-stack/hook.d.ts +1 -1
  281. package/build-types/heading/hook.d.ts +1 -1
  282. package/build-types/higher-order/navigate-regions/index.d.ts +1 -1
  283. package/build-types/higher-order/with-notices/types.d.ts +1 -1
  284. package/build-types/higher-order/with-notices/types.d.ts.map +1 -1
  285. package/build-types/higher-order/with-spoken-messages/index.d.ts +2 -3
  286. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  287. package/build-types/icon/index.d.ts +2 -2
  288. package/build-types/icon/index.d.ts.map +1 -1
  289. package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
  290. package/build-types/item-group/item/hook.d.ts +1 -1
  291. package/build-types/item-group/item-group/hook.d.ts +1 -1
  292. package/build-types/menu/index.d.ts +2 -2
  293. package/build-types/menu/item-help-text.d.ts +1 -1
  294. package/build-types/menu/item-label.d.ts +1 -1
  295. package/build-types/menu/styles.d.ts +2 -2
  296. package/build-types/menu-item/index.d.ts +1 -1
  297. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  298. package/build-types/menu-item/types.d.ts +1 -1
  299. package/build-types/menu-item/types.d.ts.map +1 -1
  300. package/build-types/mobile/inserter-button/sparkles.d.ts +3 -0
  301. package/build-types/mobile/inserter-button/sparkles.d.ts.map +1 -0
  302. package/build-types/modal/index.d.ts.map +1 -1
  303. package/build-types/modal/types.d.ts +1 -1
  304. package/build-types/modal/types.d.ts.map +1 -1
  305. package/build-types/modal/use-modal-exit-animation.d.ts +1 -1
  306. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  307. package/build-types/navigation/types.d.ts +1 -1
  308. package/build-types/navigation/types.d.ts.map +1 -1
  309. package/build-types/navigator/navigator-back-button/hook.d.ts +1 -1
  310. package/build-types/navigator/navigator-back-button/index.d.ts +2 -0
  311. package/build-types/navigator/navigator-back-button/index.d.ts.map +1 -0
  312. package/build-types/navigator/navigator-button/hook.d.ts +1 -1
  313. package/build-types/navigator/navigator-button/index.d.ts +2 -0
  314. package/build-types/navigator/navigator-button/index.d.ts.map +1 -0
  315. package/build-types/navigator/navigator-provider/component.d.ts +38 -0
  316. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -0
  317. package/build-types/navigator/navigator-provider/index.d.ts +2 -0
  318. package/build-types/navigator/navigator-provider/index.d.ts.map +1 -0
  319. package/build-types/navigator/navigator-screen/index.d.ts +2 -0
  320. package/build-types/navigator/navigator-screen/index.d.ts.map +1 -0
  321. package/build-types/navigator/navigator-to-parent-button/index.d.ts +2 -0
  322. package/build-types/navigator/navigator-to-parent-button/index.d.ts.map +1 -0
  323. package/build-types/palette-edit/styles.d.ts +1 -1
  324. package/build-types/palette-edit/types.d.ts +1 -1
  325. package/build-types/palette-edit/types.d.ts.map +1 -1
  326. package/build-types/panel/types.d.ts +2 -2
  327. package/build-types/panel/types.d.ts.map +1 -1
  328. package/build-types/private-apis.d.ts.map +1 -1
  329. package/build-types/radio-group/radio/index.d.ts +7 -0
  330. package/build-types/radio-group/radio/index.d.ts.map +1 -0
  331. package/build-types/radio-group/radio-context/index.d.ts +6 -0
  332. package/build-types/radio-group/radio-context/index.d.ts.map +1 -0
  333. package/build-types/range-control/index.d.ts.map +1 -1
  334. package/build-types/range-control/input-range.d.ts +1 -1
  335. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  336. package/build-types/range-control/types.d.ts +2 -2
  337. package/build-types/range-control/types.d.ts.map +1 -1
  338. package/build-types/resizable-box/resize-tooltip/styles/resize-tooltip.styles.d.ts +1 -1
  339. package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
  340. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  341. package/build-types/sandbox/index.d.ts +1 -1
  342. package/build-types/sandbox/index.d.ts.map +1 -1
  343. package/build-types/sandbox/types.d.ts +11 -0
  344. package/build-types/sandbox/types.d.ts.map +1 -1
  345. package/build-types/scrollable/hook.d.ts +1 -1
  346. package/build-types/search-control/types.d.ts +1 -1
  347. package/build-types/search-control/types.d.ts.map +1 -1
  348. package/build-types/select-control/styles/select-control-styles.d.ts +2 -2
  349. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  350. package/build-types/slot-fill/bubbles-virtually/fill.d.ts +5 -0
  351. package/build-types/slot-fill/bubbles-virtually/fill.d.ts.map +1 -0
  352. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts +12 -0
  353. package/build-types/slot-fill/bubbles-virtually/slot-fill-context.d.ts.map +1 -0
  354. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts +4 -0
  355. package/build-types/slot-fill/bubbles-virtually/slot-fill-provider.d.ts.map +1 -0
  356. package/build-types/slot-fill/bubbles-virtually/slot.d.ts +1 -1
  357. package/build-types/slot-fill/types.d.ts +1 -1
  358. package/build-types/slot-fill/types.d.ts.map +1 -1
  359. package/build-types/slot-fill/use-slot.d.ts +9 -0
  360. package/build-types/slot-fill/use-slot.d.ts.map +1 -0
  361. package/build-types/snackbar/index.d.ts +1 -1
  362. package/build-types/snackbar/list.d.ts.map +1 -1
  363. package/build-types/spacer/hook.d.ts +1 -1
  364. package/build-types/style-provider/test/index.d.ts +2 -0
  365. package/build-types/style-provider/test/index.d.ts.map +1 -0
  366. package/build-types/surface/hook.d.ts +1 -1
  367. package/build-types/tabs/styles.d.ts.map +1 -1
  368. package/build-types/text/hook.d.ts +1 -1
  369. package/build-types/text/stories/index.story.d.ts +3 -3
  370. package/build-types/text/utils.d.ts +18 -18
  371. package/build-types/text/utils.d.ts.map +1 -1
  372. package/build-types/theme/stories/index.story.d.ts +1 -1
  373. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  374. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  375. package/build-types/toggle-group-control/types.d.ts +1 -1
  376. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  377. package/build-types/tools-panel/tools-panel/hook.d.ts +1 -1
  378. package/build-types/tools-panel/tools-panel-header/hook.d.ts +1 -1
  379. package/build-types/tools-panel/tools-panel-item/hook.d.ts +1 -1
  380. package/build-types/tree-grid/types.d.ts +1 -1
  381. package/build-types/tree-grid/types.d.ts.map +1 -1
  382. package/build-types/truncate/hook.d.ts +1 -1
  383. package/build-types/ui/context/constants.d.ts +8 -0
  384. package/build-types/ui/context/constants.d.ts.map +1 -0
  385. package/build-types/ui/context/context-connect.d.ts +40 -0
  386. package/build-types/ui/context/context-connect.d.ts.map +1 -0
  387. package/build-types/ui/context/context-system-provider.d.ts +7 -0
  388. package/build-types/ui/context/context-system-provider.d.ts.map +1 -0
  389. package/build-types/ui/context/get-styled-class-name-from-key.d.ts +2 -0
  390. package/build-types/ui/context/get-styled-class-name-from-key.d.ts.map +1 -0
  391. package/build-types/ui/context/index.d.ts +5 -0
  392. package/build-types/ui/context/index.d.ts.map +1 -0
  393. package/build-types/ui/context/test/context-connect.d.ts +2 -0
  394. package/build-types/ui/context/test/context-connect.d.ts.map +1 -0
  395. package/build-types/ui/context/test/wordpress-component.d.ts +2 -0
  396. package/build-types/ui/context/test/wordpress-component.d.ts.map +1 -0
  397. package/build-types/ui/context/use-context-system.d.ts +20 -0
  398. package/build-types/ui/context/use-context-system.d.ts.map +1 -0
  399. package/build-types/ui/context/utils.d.ts +26 -0
  400. package/build-types/ui/context/utils.d.ts.map +1 -0
  401. package/build-types/ui/context/wordpress-component.d.ts +32 -0
  402. package/build-types/ui/context/wordpress-component.d.ts.map +1 -0
  403. package/build-types/ui/shortcut/component.d.ts +12 -0
  404. package/build-types/ui/shortcut/component.d.ts.map +1 -0
  405. package/build-types/ui/shortcut/index.d.ts +3 -0
  406. package/build-types/ui/shortcut/index.d.ts.map +1 -0
  407. package/build-types/ui/tooltip/component.d.ts +29 -0
  408. package/build-types/ui/tooltip/component.d.ts.map +1 -0
  409. package/build-types/ui/tooltip/content.d.ts +9 -0
  410. package/build-types/ui/tooltip/content.d.ts.map +1 -0
  411. package/build-types/ui/tooltip/context.d.ts +10 -0
  412. package/build-types/ui/tooltip/context.d.ts.map +1 -0
  413. package/build-types/ui/tooltip/index.d.ts +3 -0
  414. package/build-types/ui/tooltip/index.d.ts.map +1 -0
  415. package/build-types/ui/tooltip/styles.d.ts +12 -0
  416. package/build-types/ui/tooltip/styles.d.ts.map +1 -0
  417. package/build-types/ui/tooltip/types.d.ts +62 -0
  418. package/build-types/ui/tooltip/types.d.ts.map +1 -0
  419. package/build-types/ui/utils/colors.d.ts +17 -0
  420. package/build-types/ui/utils/colors.d.ts.map +1 -0
  421. package/build-types/ui/utils/font-size.d.ts +18 -0
  422. package/build-types/ui/utils/font-size.d.ts.map +1 -0
  423. package/build-types/ui/utils/get-valid-children.d.ts +13 -0
  424. package/build-types/ui/utils/get-valid-children.d.ts.map +1 -0
  425. package/build-types/ui/utils/index.d.ts +2 -0
  426. package/build-types/ui/utils/index.d.ts.map +1 -0
  427. package/build-types/ui/utils/space.d.ts +23 -0
  428. package/build-types/ui/utils/space.d.ts.map +1 -0
  429. package/build-types/ui/utils/types.d.ts +14 -0
  430. package/build-types/ui/utils/types.d.ts.map +1 -0
  431. package/build-types/ui/utils/use-responsive-value.d.ts +5 -0
  432. package/build-types/ui/utils/use-responsive-value.d.ts.map +1 -0
  433. package/build-types/utils/hooks/use-latest-ref.d.ts +15 -0
  434. package/build-types/utils/hooks/use-latest-ref.d.ts.map +1 -0
  435. package/build-types/utils/hooks/use-update-effect.d.ts +3 -3
  436. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  437. package/build-types/utils/input/base.d.ts +3 -0
  438. package/build-types/utils/input/base.d.ts.map +1 -0
  439. package/build-types/utils/input/index.d.ts +2 -0
  440. package/build-types/utils/input/index.d.ts.map +1 -0
  441. package/build-types/utils/input/input-control.d.ts +2 -0
  442. package/build-types/utils/input/input-control.d.ts.map +1 -0
  443. package/build-types/utils/reduce-motion.d.ts +8 -0
  444. package/build-types/utils/reduce-motion.d.ts.map +1 -0
  445. package/build-types/utils/rtl.d.ts +4 -4
  446. package/build-types/utils/rtl.d.ts.map +1 -1
  447. package/build-types/utils/use-responsive-value.d.ts.map +1 -1
  448. package/build-types/utils/z-index.d.ts +3 -0
  449. package/build-types/utils/z-index.d.ts.map +1 -0
  450. package/build-types/v-stack/hook.d.ts +1 -1
  451. package/build-types/v-stack/stories/index.story.d.ts +1 -1
  452. package/build-types/validated-form-controls/components/range-control.d.ts.map +1 -1
  453. package/build-types/validated-form-controls/components/stories/overview.story.d.ts.map +1 -1
  454. package/build-types/validated-form-controls/control-with-error.d.ts.map +1 -1
  455. package/build-types/validated-form-controls/test/checkbox-control.d.ts +2 -0
  456. package/build-types/validated-form-controls/test/checkbox-control.d.ts.map +1 -0
  457. package/build-types/validated-form-controls/test/combobox-control.d.ts +2 -0
  458. package/build-types/validated-form-controls/test/combobox-control.d.ts.map +1 -0
  459. package/build-types/validated-form-controls/test/custom-select-control.d.ts +2 -0
  460. package/build-types/validated-form-controls/test/custom-select-control.d.ts.map +1 -0
  461. package/build-types/validated-form-controls/test/form-token-field.d.ts +2 -0
  462. package/build-types/validated-form-controls/test/form-token-field.d.ts.map +1 -0
  463. package/build-types/validated-form-controls/test/input-control.d.ts +2 -0
  464. package/build-types/validated-form-controls/test/input-control.d.ts.map +1 -0
  465. package/build-types/validated-form-controls/test/number-control.d.ts +2 -0
  466. package/build-types/validated-form-controls/test/number-control.d.ts.map +1 -0
  467. package/build-types/validated-form-controls/test/radio-control.d.ts +2 -0
  468. package/build-types/validated-form-controls/test/radio-control.d.ts.map +1 -0
  469. package/build-types/validated-form-controls/test/range-control.d.ts +2 -0
  470. package/build-types/validated-form-controls/test/range-control.d.ts.map +1 -0
  471. package/build-types/validated-form-controls/test/select-control.d.ts +2 -0
  472. package/build-types/validated-form-controls/test/select-control.d.ts.map +1 -0
  473. package/build-types/validated-form-controls/test/text-control.d.ts +2 -0
  474. package/build-types/validated-form-controls/test/text-control.d.ts.map +1 -0
  475. package/build-types/validated-form-controls/test/textarea-control.d.ts +2 -0
  476. package/build-types/validated-form-controls/test/textarea-control.d.ts.map +1 -0
  477. package/build-types/validated-form-controls/test/toggle-control.d.ts +2 -0
  478. package/build-types/validated-form-controls/test/toggle-control.d.ts.map +1 -0
  479. package/build-types/validated-form-controls/test/toggle-group-control.d.ts +2 -0
  480. package/build-types/validated-form-controls/test/toggle-group-control.d.ts.map +1 -0
  481. package/build-types/validated-form-controls/validity-indicator.d.ts +2 -1
  482. package/build-types/validated-form-controls/validity-indicator.d.ts.map +1 -1
  483. package/build-types/view/types.d.ts +8 -0
  484. package/build-types/view/types.d.ts.map +1 -0
  485. package/package.json +24 -24
  486. package/src/alignment-matrix-control/test/index.tsx +1 -1
  487. package/src/angle-picker-control/angle-circle.tsx +6 -5
  488. package/src/animate/types.ts +1 -1
  489. package/src/autocomplete/autocompleter-ui.tsx +1 -1
  490. package/src/autocomplete/index.tsx +33 -8
  491. package/src/autocomplete/test/index.tsx +110 -1
  492. package/src/autocomplete/types.ts +1 -1
  493. package/src/button/style.scss +8 -5
  494. package/src/calendar/style.scss +4 -2
  495. package/src/clipboard-button/index.tsx +1 -1
  496. package/src/color-palette/stories/index.story.tsx +56 -48
  497. package/src/color-picker/color-copy-button.tsx +1 -3
  498. package/src/composite/stories/index.story.tsx +1 -1
  499. package/src/confirm-dialog/component.tsx +2 -2
  500. package/src/context/context-connect.ts +3 -3
  501. package/src/context/context-system-provider.js +4 -4
  502. package/src/context/wordpress-component.ts +3 -5
  503. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +3 -2
  504. package/src/custom-gradient-picker/types.ts +1 -1
  505. package/src/custom-select-control-v2/custom-select.tsx +1 -1
  506. package/src/custom-select-control-v2/stories/index.story.tsx +3 -3
  507. package/src/custom-select-control-v2/test/index.tsx +3 -3
  508. package/src/custom-select-control-v2/types.ts +4 -4
  509. package/src/date-time/date/index.tsx +1 -1
  510. package/src/date-time/test/utils.test.ts +8 -11
  511. package/src/date-time/time/index.tsx +2 -12
  512. package/src/date-time/time/test/index.tsx +69 -0
  513. package/src/date-time/utils.ts +18 -0
  514. package/src/draggable/index.native.js +17 -17
  515. package/src/draggable/types.ts +1 -1
  516. package/src/drop-zone/types.ts +1 -1
  517. package/src/dropdown/index.tsx +1 -1
  518. package/src/dropdown-menu/types.ts +1 -1
  519. package/src/external-link/index.tsx +5 -1
  520. package/src/font-size-picker/stories/index.story.tsx +133 -125
  521. package/src/form-token-field/style.scss +1 -0
  522. package/src/gradient-picker/stories/index.story.tsx +48 -42
  523. package/src/h-stack/test/index.tsx +1 -1
  524. package/src/heading/hook.ts +2 -2
  525. package/src/higher-order/with-notices/test/index.tsx +2 -2
  526. package/src/higher-order/with-notices/types.ts +1 -1
  527. package/src/higher-order/with-spoken-messages/index.tsx +2 -4
  528. package/src/icon/index.tsx +2 -2
  529. package/src/keyboard-shortcuts/index.tsx +1 -1
  530. package/src/menu/stories/index.story.tsx +1 -1
  531. package/src/menu-item/types.ts +1 -1
  532. package/src/modal/index.tsx +4 -3
  533. package/src/modal/types.ts +1 -1
  534. package/src/modal/use-modal-exit-animation.ts +2 -2
  535. package/src/navigation/README.md +1 -1
  536. package/src/navigation/types.ts +1 -1
  537. package/src/number-control/index.tsx +1 -1
  538. package/src/palette-edit/index.tsx +2 -2
  539. package/src/palette-edit/types.ts +1 -1
  540. package/src/panel/README.md +1 -1
  541. package/src/panel/body.tsx +1 -1
  542. package/src/panel/types.ts +2 -2
  543. package/src/popover/stories/index.story.tsx +1 -1
  544. package/src/private-apis.ts +0 -2
  545. package/src/radio-control/test/index.tsx +5 -4
  546. package/src/range-control/index.tsx +1 -1
  547. package/src/range-control/types.ts +2 -2
  548. package/src/resizable-box/index.tsx +1 -1
  549. package/src/resizable-box/resize-tooltip/index.tsx +1 -1
  550. package/src/resizable-box/resize-tooltip/label.tsx +1 -1
  551. package/src/resizable-box/resize-tooltip/utils.ts +2 -2
  552. package/src/sandbox/index.tsx +190 -10
  553. package/src/sandbox/test/index.tsx +65 -24
  554. package/src/sandbox/types.ts +11 -0
  555. package/src/search-control/types.ts +1 -1
  556. package/src/select-control/styles/select-control-styles.ts +1 -0
  557. package/src/slot-fill/types.ts +1 -1
  558. package/src/snackbar/list.tsx +7 -2
  559. package/src/tabs/styles.ts +1 -0
  560. package/src/text/utils.ts +18 -18
  561. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +18 -16
  562. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +1 -1
  563. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +4 -6
  564. package/src/toggle-group-control/types.ts +1 -1
  565. package/src/tree-grid/roving-tab-index-item.tsx +1 -1
  566. package/src/tree-grid/types.ts +1 -1
  567. package/src/utils/element-rect.ts +1 -1
  568. package/src/utils/hooks/use-update-effect.js +2 -2
  569. package/src/utils/rtl.js +4 -4
  570. package/src/utils/use-responsive-value.ts +1 -5
  571. package/src/v-stack/test/index.tsx +1 -1
  572. package/src/validated-form-controls/components/stories/overview.story.tsx +2 -1
  573. package/src/validated-form-controls/control-with-error.tsx +44 -4
  574. package/src/validated-form-controls/test/checkbox-control.tsx +49 -0
  575. package/src/validated-form-controls/test/combobox-control.tsx +61 -0
  576. package/src/validated-form-controls/test/control-with-error.tsx +182 -1
  577. package/src/validated-form-controls/test/custom-select-control.tsx +60 -0
  578. package/src/validated-form-controls/test/form-token-field.tsx +52 -0
  579. package/src/validated-form-controls/test/input-control.tsx +42 -0
  580. package/src/validated-form-controls/test/number-control.tsx +44 -0
  581. package/src/validated-form-controls/test/radio-control.tsx +61 -0
  582. package/src/validated-form-controls/test/range-control.tsx +73 -0
  583. package/src/validated-form-controls/test/select-control.tsx +57 -0
  584. package/src/validated-form-controls/test/text-control.tsx +49 -0
  585. package/src/validated-form-controls/test/textarea-control.tsx +51 -0
  586. package/src/validated-form-controls/test/toggle-control.tsx +49 -0
  587. package/src/validated-form-controls/test/toggle-group-control.tsx +28 -0
  588. package/src/validated-form-controls/validity-indicator.tsx +3 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/components",
3
- "version": "32.2.1-next.v.202602111440.0+a307a2e35",
3
+ "version": "32.2.1",
4
4
  "description": "UI components for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -51,7 +51,7 @@
51
51
  "src/**/*.scss"
52
52
  ],
53
53
  "dependencies": {
54
- "@ariakit/react": "^0.4.15",
54
+ "@ariakit/react": "^0.4.21",
55
55
  "@date-fns/utc": "^2.1.1",
56
56
  "@emotion/cache": "^11.14.0",
57
57
  "@emotion/css": "^11.13.5",
@@ -64,24 +64,24 @@
64
64
  "@types/highlight-words-core": "1.2.1",
65
65
  "@types/react": "^18.3.27",
66
66
  "@use-gesture/react": "^10.3.1",
67
- "@wordpress/a11y": "^4.39.1-next.v.202602111440.0+a307a2e35",
68
- "@wordpress/base-styles": "^6.15.1-next.v.202602111440.0+a307a2e35",
69
- "@wordpress/compose": "^7.39.1-next.v.202602111440.0+a307a2e35",
70
- "@wordpress/date": "^5.39.1-next.v.202602111440.0+a307a2e35",
71
- "@wordpress/deprecated": "^4.39.1-next.v.202602111440.0+a307a2e35",
72
- "@wordpress/dom": "^4.39.1-next.v.202602111440.0+a307a2e35",
73
- "@wordpress/element": "^6.39.1-next.v.202602111440.0+a307a2e35",
74
- "@wordpress/escape-html": "^3.39.1-next.v.202602111440.0+a307a2e35",
75
- "@wordpress/hooks": "^4.39.1-next.v.202602111440.0+a307a2e35",
76
- "@wordpress/html-entities": "^4.39.1-next.v.202602111440.0+a307a2e35",
77
- "@wordpress/i18n": "^6.12.1-next.v.202602111440.0+a307a2e35",
78
- "@wordpress/icons": "^11.6.1-next.v.202602111440.0+a307a2e35",
79
- "@wordpress/is-shallow-equal": "^5.39.1-next.v.202602111440.0+a307a2e35",
80
- "@wordpress/keycodes": "^4.39.1-next.v.202602111440.0+a307a2e35",
81
- "@wordpress/primitives": "^4.39.1-next.v.202602111440.0+a307a2e35",
82
- "@wordpress/private-apis": "^1.39.1-next.v.202602111440.0+a307a2e35",
83
- "@wordpress/rich-text": "^7.39.1-next.v.202602111440.0+a307a2e35",
84
- "@wordpress/warning": "^3.39.1-next.v.202602111440.0+a307a2e35",
67
+ "@wordpress/a11y": "^4.40.1",
68
+ "@wordpress/base-styles": "^6.16.1",
69
+ "@wordpress/compose": "^7.40.1",
70
+ "@wordpress/date": "^5.40.1",
71
+ "@wordpress/deprecated": "^4.40.1",
72
+ "@wordpress/dom": "^4.40.1",
73
+ "@wordpress/element": "^6.40.1",
74
+ "@wordpress/escape-html": "^3.40.1",
75
+ "@wordpress/hooks": "^4.40.1",
76
+ "@wordpress/html-entities": "^4.40.1",
77
+ "@wordpress/i18n": "^6.13.1",
78
+ "@wordpress/icons": "^11.7.1",
79
+ "@wordpress/is-shallow-equal": "^5.40.1",
80
+ "@wordpress/keycodes": "^4.40.1",
81
+ "@wordpress/primitives": "^4.40.1",
82
+ "@wordpress/private-apis": "^1.40.1",
83
+ "@wordpress/rich-text": "^7.40.1",
84
+ "@wordpress/warning": "^3.40.1",
85
85
  "change-case": "^4.1.2",
86
86
  "clsx": "^2.1.1",
87
87
  "colord": "^2.7.0",
@@ -102,12 +102,12 @@
102
102
  "uuid": "^9.0.1"
103
103
  },
104
104
  "devDependencies": {
105
- "@ariakit/test": "^0.4.7",
105
+ "@ariakit/test": "^0.4.13",
106
106
  "@storybook/addon-docs": "^10.1.11",
107
107
  "@storybook/react-vite": "^10.1.11",
108
- "@testing-library/jest-dom": "^6.6.3",
108
+ "@testing-library/jest-dom": "^6.9.1",
109
109
  "@types/jest": "^29.5.14",
110
- "@wordpress/jest-console": "^8.39.1-next.v.202602111440.0+a307a2e35",
110
+ "@wordpress/jest-console": "^8.40.1",
111
111
  "snapshot-diff": "^0.10.0",
112
112
  "storybook": "^10.1.11",
113
113
  "timezone-mock": "^1.3.6"
@@ -119,5 +119,5 @@
119
119
  "publishConfig": {
120
120
  "access": "public"
121
121
  },
122
- "gitHead": "e0a2324a9690e55f4101d61113f4bbbf240b55ed"
122
+ "gitHead": "adb6623c9f32490cfc73c7ac7f122578c1f10c65"
123
123
  }
@@ -18,7 +18,7 @@ const getCell = ( name: string ) => {
18
18
  };
19
19
 
20
20
  const renderAndInitCompositeStore = async (
21
- jsx: JSX.Element,
21
+ jsx: React.JSX.Element,
22
22
  focusedCell = 'center center'
23
23
  ) => {
24
24
  const view = render( jsx );
@@ -29,11 +29,12 @@ function AngleCircle( {
29
29
  className,
30
30
  ...props
31
31
  }: WordPressComponentProps< AngleCircleProps, 'div' > ) {
32
- const angleCircleRef = useRef< HTMLDivElement | null >( null );
33
- const angleCircleCenterRef = useRef<
34
- { x: number; y: number } | undefined
35
- >();
36
- const previousCursorValueRef = useRef< CSSStyleDeclaration[ 'cursor' ] >();
32
+ const angleCircleRef = useRef< HTMLDivElement >( null );
33
+ const angleCircleCenterRef = useRef< { x: number; y: number } >(
34
+ undefined
35
+ );
36
+ const previousCursorValueRef =
37
+ useRef< CSSStyleDeclaration[ 'cursor' ] >( undefined );
37
38
 
38
39
  const setAngleCircleCenter = () => {
39
40
  if ( angleCircleRef.current === null ) {
@@ -28,5 +28,5 @@ type DistributiveTypeAndOptions< T extends { type?: any } > = T extends any
28
28
  : never;
29
29
 
30
30
  export type AnimateProps = DistributiveTypeAndOptions< GetAnimateOptions > & {
31
- children: ( props: { className?: string } ) => JSX.Element;
31
+ children: ( props: { className?: string } ) => React.JSX.Element;
32
32
  };
@@ -216,7 +216,7 @@ export function getAutoCompleterUI( autocompleter: WPCompleter ) {
216
216
  }
217
217
 
218
218
  function useOnClickOutside(
219
- ref: React.RefObject< HTMLElement >,
219
+ ref: React.RefObject< HTMLElement | null >,
220
220
  handler: AutocompleterUIProps[ 'reset' ]
221
221
  ) {
222
222
  useEffect( () => {
@@ -66,7 +66,7 @@ export function useAutocomplete( {
66
66
  null
67
67
  );
68
68
  const [ AutocompleterUI, setAutocompleterUI ] = useState<
69
- ( ( props: AutocompleterUIProps ) => JSX.Element | null ) | null
69
+ ( ( props: AutocompleterUIProps ) => React.JSX.Element | null ) | null
70
70
  >( null );
71
71
 
72
72
  const backspacingRef = useRef( false );
@@ -393,22 +393,47 @@ export function useAutocomplete( {
393
393
  };
394
394
  }
395
395
 
396
- function useLastDifferentValue( value: UseAutocompleteProps[ 'record' ] ) {
397
- const history = useRef< Set< typeof value > >( new Set() );
396
+ /**
397
+ * Checks whether two records represent the same user-visible state
398
+ * (same text content and cursor position).
399
+ */
400
+ function recordValuesMatch(
401
+ a: UseAutocompleteProps[ 'record' ],
402
+ b: UseAutocompleteProps[ 'record' ]
403
+ ) {
404
+ return a.text === b.text && a.start === b.start && a.end === b.end;
405
+ }
398
406
 
399
- history.current.add( value );
407
+ /**
408
+ * Tracks the last record whose value differed from the current one.
409
+ * Used to determine whether the user has actually typed something
410
+ */
411
+ export function useLastDifferentValue(
412
+ value: UseAutocompleteProps[ 'record' ]
413
+ ) {
414
+ const history = useRef< Array< typeof value > >( [] );
415
+
416
+ const lastEntry = history.current[ history.current.length - 1 ];
417
+
418
+ // Only add to history if the value is meaningfully different from
419
+ // the most recent entry (analogous to Set.add being a no-op for
420
+ // duplicate references in the original implementation).
421
+ if ( ! lastEntry || ! recordValuesMatch( value, lastEntry ) ) {
422
+ history.current.push( value );
423
+ }
400
424
 
401
425
  // Keep the history size to 2.
402
- if ( history.current.size > 2 ) {
403
- history.current.delete( Array.from( history.current )[ 0 ] );
426
+ if ( history.current.length > 2 ) {
427
+ history.current.shift();
404
428
  }
405
429
 
406
- return Array.from( history.current )[ 0 ];
430
+ return history.current[ 0 ];
407
431
  }
408
432
 
409
433
  export function useAutocompleteProps( options: UseAutocompleteProps ) {
410
434
  const ref = useRef< HTMLElement >( null );
411
- const onKeyDownRef = useRef< ( event: KeyboardEvent ) => void >();
435
+ const onKeyDownRef =
436
+ useRef< ( event: KeyboardEvent ) => void >( undefined );
412
437
  const { record } = options;
413
438
  const previousRecord = useLastDifferentValue( record );
414
439
  const { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen } from '@testing-library/react';
4
+ import { render, screen, renderHook } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
7
  /**
@@ -13,9 +13,118 @@ import { useRef } from '@wordpress/element';
13
13
  * Internal dependencies
14
14
  */
15
15
  import { getAutoCompleterUI } from '../autocompleter-ui';
16
+ import { useLastDifferentValue } from '..';
16
17
 
17
18
  type FruitOption = { visual: string; name: string; id: number };
18
19
 
20
+ function makeRecord( text: string ) {
21
+ return {
22
+ text,
23
+ formats: [],
24
+ replacements: [],
25
+ start: text.length,
26
+ end: text.length,
27
+ };
28
+ }
29
+
30
+ describe( 'useLastDifferentValue', () => {
31
+ it( 'should return the current record on first render', () => {
32
+ const record = makeRecord( 'Hello' );
33
+ const { result } = renderHook(
34
+ ( { value } ) => useLastDifferentValue( value ),
35
+ { initialProps: { value: record } }
36
+ );
37
+
38
+ expect( result.current.text ).toBe( 'Hello' );
39
+ } );
40
+
41
+ it( 'should return the previous record when text changes', () => {
42
+ const record1 = makeRecord( 'Hello' );
43
+ const { result, rerender } = renderHook(
44
+ ( { value } ) => useLastDifferentValue( value ),
45
+ { initialProps: { value: record1 } }
46
+ );
47
+
48
+ const record2 = makeRecord( 'Hello/' );
49
+ rerender( { value: record2 } );
50
+
51
+ expect( result.current.text ).toBe( 'Hello' );
52
+ } );
53
+
54
+ it( 'should not update when re-rendered with a new reference but same text', () => {
55
+ const record1 = makeRecord( 'Hello' );
56
+ const { result, rerender } = renderHook(
57
+ ( { value } ) => useLastDifferentValue( value ),
58
+ { initialProps: { value: record1 } }
59
+ );
60
+
61
+ // User types "/"
62
+ const record2 = makeRecord( 'Hello/' );
63
+ rerender( { value: record2 } );
64
+ expect( result.current.text ).toBe( 'Hello' );
65
+
66
+ // RESET_BLOCKS creates a new record object with the same text.
67
+ const record3 = makeRecord( 'Hello/' );
68
+ rerender( { value: record3 } );
69
+ expect( result.current.text ).toBe( 'Hello' );
70
+ } );
71
+
72
+ it( 'should survive multiple same-text re-renders', () => {
73
+ const record1 = makeRecord( 'Hello' );
74
+ const { result, rerender } = renderHook(
75
+ ( { value } ) => useLastDifferentValue( value ),
76
+ { initialProps: { value: record1 } }
77
+ );
78
+
79
+ // User types "/"
80
+ const record2 = makeRecord( 'Hello/' );
81
+ rerender( { value: record2 } );
82
+
83
+ // Multiple syncs, each producing new references with the same text.
84
+ for ( let i = 0; i < 5; i++ ) {
85
+ rerender( { value: makeRecord( 'Hello/' ) } );
86
+ }
87
+
88
+ expect( result.current.text ).toBe( 'Hello' );
89
+ } );
90
+
91
+ it( 'should track consecutive text changes correctly', () => {
92
+ const { result, rerender } = renderHook(
93
+ ( { value } ) => useLastDifferentValue( value ),
94
+ { initialProps: { value: makeRecord( 'A' ) } }
95
+ );
96
+
97
+ rerender( { value: makeRecord( 'AB' ) } );
98
+ expect( result.current.text ).toBe( 'A' );
99
+
100
+ rerender( { value: makeRecord( 'ABC' ) } );
101
+ expect( result.current.text ).toBe( 'AB' );
102
+
103
+ rerender( { value: makeRecord( 'ABCD' ) } );
104
+ expect( result.current.text ).toBe( 'ABC' );
105
+ } );
106
+
107
+ it( 'should update when cursor position changes without text change', () => {
108
+ const { result, rerender } = renderHook(
109
+ ( { value } ) => useLastDifferentValue( value ),
110
+ { initialProps: { value: makeRecord( 'Hello' ) } }
111
+ );
112
+
113
+ // User types "/"
114
+ rerender( { value: makeRecord( 'Hello/' ) } );
115
+ expect( result.current.text ).toBe( 'Hello' );
116
+
117
+ // User moves cursor left (same text, different position).
118
+ rerender( {
119
+ value: { ...makeRecord( 'Hello/' ), start: 0, end: 0 },
120
+ } );
121
+
122
+ // The returned record should now match the current text,
123
+ // so that didUserInput evaluates to false.
124
+ expect( result.current.text ).toBe( 'Hello/' );
125
+ } );
126
+ } );
127
+
19
128
  describe( 'AutocompleterUI', () => {
20
129
  describe( 'click outside behavior', () => {
21
130
  it( 'should call reset function when a click on another element occurs', async () => {
@@ -106,7 +106,7 @@ export type WPCompleter< TCompleterOption = any > = {
106
106
  className?: string;
107
107
  };
108
108
 
109
- type ContentRef = React.RefObject< HTMLElement >;
109
+ type ContentRef = React.RefObject< HTMLElement | null >;
110
110
 
111
111
  export type AutocompleterUIProps = {
112
112
  /**
@@ -48,11 +48,6 @@
48
48
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
49
49
  }
50
50
 
51
- // Windows High Contrast mode will show this outline, but not the box-shadow.
52
- &:focus {
53
- outline: 3px solid transparent;
54
- }
55
-
56
51
  /**
57
52
  * Primary button style.
58
53
  */
@@ -276,6 +271,14 @@
276
271
  }
277
272
  }
278
273
 
274
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
275
+ // This rule is placed after variant outline declarations (e.g. is-primary,
276
+ // is-secondary, is-tertiary) to ensure it wins by source order at the same
277
+ // specificity, while not using `:not(:active)` to avoid outline flicker.
278
+ &:focus {
279
+ outline: 3px solid transparent;
280
+ }
281
+
279
282
  &:not(:disabled, [aria-disabled="true"]):active {
280
283
  color: $components-color-foreground;
281
284
  }
@@ -4,7 +4,8 @@
4
4
 
5
5
  /* Root of the component. */
6
6
  // Internal variables
7
- $wp-components-calendar-outline-focus: var(--wp-admin-border-width-focus) solid $components-color-accent;
7
+ $wp-components-calendar-outline-focus: var(--wp-admin-border-width-focus)
8
+ solid $components-color-accent;
8
9
  $wp-components-calendar-button-height: $grid-unit-40;
9
10
  $wp-components-calendar-button-width: $grid-unit-40;
10
11
  $wp-components-calendar-nav-height: $grid-unit-40;
@@ -39,7 +40,8 @@ $wp-components-calendar-preview-border-color: color-mix(in srgb, $components-col
39
40
  // date follows the same color as the button's text, since the button
40
41
  // inherits its text color.
41
42
  &:has(.components-calendar__day-button:disabled) {
42
- color: $components-color-disabled;
43
+ // Use a lighter shade of gray for less visual prominence.
44
+ color: $components-color-gray-400;
43
45
  }
44
46
  &:has(.components-calendar__day-button:hover:not(:disabled)),
45
47
  &:has(.components-calendar__day-button:focus-visible) {
@@ -32,7 +32,7 @@ export default function ClipboardButton( {
32
32
  alternative: 'wp.compose.useCopyToClipboard',
33
33
  } );
34
34
 
35
- const timeoutIdRef = useRef< NodeJS.Timeout >();
35
+ const timeoutIdRef = useRef< NodeJS.Timeout >( undefined );
36
36
  const ref = useCopyToClipboard( text, () => {
37
37
  onCopy();
38
38
  if ( timeoutIdRef.current ) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { Meta, StoryFn } from '@storybook/react-vite';
4
+ import type { Meta, StoryObj } from '@storybook/react-vite';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -33,11 +33,13 @@ const meta: Meta< typeof ColorPalette > = {
33
33
  };
34
34
  export default meta;
35
35
 
36
- const Template: StoryFn< typeof ColorPalette > = ( {
36
+ type ColorPaletteStory = StoryObj< typeof ColorPalette >;
37
+
38
+ const Template = ( {
37
39
  onChange,
38
40
  value,
39
41
  ...args
40
- } ) => {
42
+ }: React.ComponentProps< typeof ColorPalette > ) => {
41
43
  const [ color, setColor ] = useState< string | undefined >( value );
42
44
 
43
45
  return (
@@ -52,49 +54,55 @@ const Template: StoryFn< typeof ColorPalette > = ( {
52
54
  );
53
55
  };
54
56
 
55
- export const Default = Template.bind( {} );
56
- Default.args = {
57
- colors: [
58
- { name: 'Red', color: '#f00' },
59
- { name: 'White', color: '#fff' },
60
- { name: 'Blue', color: '#00f' },
61
- ],
57
+ export const Default: ColorPaletteStory = {
58
+ render: Template,
59
+ args: {
60
+ colors: [
61
+ { name: 'Red', color: '#f00' },
62
+ { name: 'White', color: '#fff' },
63
+ { name: 'Blue', color: '#00f' },
64
+ ],
65
+ },
62
66
  };
63
67
 
64
- export const InitialValue = Template.bind( {} );
65
- InitialValue.args = {
66
- colors: [
67
- { name: 'Red', color: '#f00' },
68
- { name: 'White', color: '#fff' },
69
- { name: 'Blue', color: '#00f' },
70
- ],
71
- value: '#00f',
68
+ export const InitialValue: ColorPaletteStory = {
69
+ render: Template,
70
+ args: {
71
+ colors: [
72
+ { name: 'Red', color: '#f00' },
73
+ { name: 'White', color: '#fff' },
74
+ { name: 'Blue', color: '#00f' },
75
+ ],
76
+ value: '#00f',
77
+ },
72
78
  };
73
79
 
74
- export const MultipleOrigins = Template.bind( {} );
75
- MultipleOrigins.args = {
76
- colors: [
77
- {
78
- name: 'Primary colors',
79
- colors: [
80
- { name: 'Red', color: '#f00' },
81
- { name: 'Yellow', color: '#ff0' },
82
- { name: 'Blue', color: '#00f' },
83
- ],
84
- },
85
- {
86
- name: 'Secondary colors',
87
- colors: [
88
- { name: 'Orange', color: '#f60' },
89
- { name: 'Green', color: '#0f0' },
90
- { name: 'Purple', color: '#60f' },
91
- ],
92
- },
93
- ],
80
+ export const MultipleOrigins: ColorPaletteStory = {
81
+ render: Template,
82
+ args: {
83
+ colors: [
84
+ {
85
+ name: 'Primary colors',
86
+ colors: [
87
+ { name: 'Red', color: '#f00' },
88
+ { name: 'Yellow', color: '#ff0' },
89
+ { name: 'Blue', color: '#00f' },
90
+ ],
91
+ },
92
+ {
93
+ name: 'Secondary colors',
94
+ colors: [
95
+ { name: 'Orange', color: '#f60' },
96
+ { name: 'Green', color: '#0f0' },
97
+ { name: 'Purple', color: '#60f' },
98
+ ],
99
+ },
100
+ ],
101
+ },
94
102
  };
95
103
 
96
- export const CSSVariables: StoryFn< typeof ColorPalette > = ( args ) => {
97
- return (
104
+ export const CSSVariables: ColorPaletteStory = {
105
+ render: ( args ) => (
98
106
  <div
99
107
  style={ {
100
108
  '--red': '#f00',
@@ -104,12 +112,12 @@ export const CSSVariables: StoryFn< typeof ColorPalette > = ( args ) => {
104
112
  >
105
113
  <Template { ...args } />
106
114
  </div>
107
- );
108
- };
109
- CSSVariables.args = {
110
- colors: [
111
- { name: 'Red', color: 'var(--red)' },
112
- { name: 'Yellow', color: 'var(--yellow)' },
113
- { name: 'Blue', color: 'var(--blue)' },
114
- ],
115
+ ),
116
+ args: {
117
+ colors: [
118
+ { name: 'Red', color: 'var(--red)' },
119
+ { name: 'Yellow', color: 'var(--yellow)' },
120
+ { name: 'Blue', color: 'var(--blue)' },
121
+ ],
122
+ },
115
123
  };
@@ -17,9 +17,7 @@ import type { ColorCopyButtonProps } from './types';
17
17
  export const ColorCopyButton = ( props: ColorCopyButtonProps ) => {
18
18
  const { color, colorType } = props;
19
19
  const [ copiedColor, setCopiedColor ] = useState< string | null >( null );
20
- const copyTimerRef = useRef<
21
- ReturnType< typeof setTimeout > | undefined
22
- >();
20
+ const copyTimerRef = useRef< ReturnType< typeof setTimeout > >( undefined );
23
21
  const copyRef = useCopyToClipboard< HTMLDivElement >(
24
22
  () => {
25
23
  switch ( colorType ) {
@@ -239,7 +239,7 @@ const Fill = ( { children }: { children: React.ReactNode } ) => {
239
239
 
240
240
  // Render all context providers forwarded by the Slot via fillProps.
241
241
  return forwardedContext.reduce(
242
- ( inner: JSX.Element, [ Provider, props ] ) => (
242
+ ( inner: React.JSX.Element, [ Provider, props ] ) => (
243
243
  <Provider { ...props }>{ inner }</Provider>
244
244
  ),
245
245
  innerMarkup
@@ -35,8 +35,8 @@ const UnconnectedConfirmDialog = (
35
35
 
36
36
  const cx = useCx();
37
37
  const wrapperClassName = cx( styles.wrapper );
38
- const cancelButtonRef = useRef();
39
- const confirmButtonRef = useRef();
38
+ const cancelButtonRef = useRef< HTMLButtonElement >( null );
39
+ const confirmButtonRef = useRef< HTMLButtonElement >( null );
40
40
 
41
41
  const [ isOpen, setIsOpen ] = useState< boolean >();
42
42
  const [ shouldSelfClose, setShouldSelfClose ] = useState< boolean >();
@@ -34,7 +34,7 @@ type ContextConnectOptions = {
34
34
  * @return The connected WordPressComponent
35
35
  */
36
36
  export function contextConnect<
37
- C extends ( props: any, ref: ForwardedRef< any > ) => JSX.Element | null,
37
+ C extends ( props: any, ref: ForwardedRef< any > ) => ReactNode,
38
38
  >(
39
39
  Component: C &
40
40
  AcceptsTwoArgs<
@@ -55,7 +55,7 @@ export function contextConnect<
55
55
  * @return The connected WordPressComponent
56
56
  */
57
57
  export function contextConnectWithoutRef< P >(
58
- Component: ( props: P ) => JSX.Element | null,
58
+ Component: ( props: P ) => ReactNode,
59
59
  namespace: string
60
60
  ) {
61
61
  return _contextConnect( Component, namespace );
@@ -65,7 +65,7 @@ export function contextConnectWithoutRef< P >(
65
65
  // The hope is that we can improve render performance by removing functional
66
66
  // component wrappers.
67
67
  function _contextConnect<
68
- C extends ( props: any, ref: ForwardedRef< any > ) => JSX.Element | null,
68
+ C extends ( props: any, ref: ForwardedRef< any > ) => ReactNode,
69
69
  O extends ContextConnectOptions,
70
70
  >(
71
71
  Component: C,
@@ -89,10 +89,10 @@ function useContextSystemBridge( { value } ) {
89
89
  * ```
90
90
  *
91
91
  * @template {Record<string, any>} T
92
- * @param {Object} options
93
- * @param {import('react').ReactNode} options.children Children to render.
94
- * @param {T} options.value Props to render into connected components.
95
- * @return {JSX.Element} A Provider wrapped component.
92
+ * @param {Object} options
93
+ * @param {React.ReactNode} options.children Children to render.
94
+ * @param {T} options.value Props to render into connected components.
95
+ * @return {React.JSX.Element} A Provider wrapped component.
96
96
  */
97
97
  const BaseContextSystemProvider = ( { children, value } ) => {
98
98
  const contextValue = useContextSystemBridge( { value } );
@@ -24,7 +24,7 @@ export type WordPressComponentProps<
24
24
  ( IsPolymorphic extends true
25
25
  ? {
26
26
  /** The HTML element or React component to render the component as. */
27
- as?: T | keyof JSX.IntrinsicElements;
27
+ as?: T | keyof React.JSX.IntrinsicElements;
28
28
  }
29
29
  : {} );
30
30
 
@@ -36,10 +36,8 @@ export type WordPressComponent<
36
36
  < TT extends React.ElementType >(
37
37
  props: WordPressComponentProps< O, TT, IsPolymorphic > &
38
38
  ( IsPolymorphic extends true ? { as: TT } : {} )
39
- ): JSX.Element | null;
40
- (
41
- props: WordPressComponentProps< O, T, IsPolymorphic >
42
- ): JSX.Element | null;
39
+ ): React.ReactNode;
40
+ ( props: WordPressComponentProps< O, T, IsPolymorphic > ): React.ReactNode;
43
41
  displayName?: string;
44
42
  /**
45
43
  * A CSS selector used to fake component interpolation in styled components
@@ -129,7 +129,8 @@ function ControlPoints( {
129
129
  onStopControlPointChange,
130
130
  __experimentalIsRenderedInSidebar,
131
131
  }: ControlPointsProps ) {
132
- const controlPointMoveStateRef = useRef< ControlPointMoveState >();
132
+ const controlPointMoveStateRef =
133
+ useRef< ControlPointMoveState >( undefined );
133
134
 
134
135
  const onMouseMove = ( event: MouseEvent ) => {
135
136
  if (
@@ -177,7 +178,7 @@ function ControlPoints( {
177
178
  // Adding `cleanEventListeners` to the dependency array below requires the function itself to be wrapped in a `useCallback`
178
179
  // This memoization would prevent the event listeners from being properly cleaned.
179
180
  // Instead, we'll pass a ref to the function in our `useEffect` so `cleanEventListeners` itself is no longer a dependency.
180
- const cleanEventListenersRef = useRef< () => void >();
181
+ const cleanEventListenersRef = useRef< () => void >( undefined );
181
182
  cleanEventListenersRef.current = cleanEventListeners;
182
183
 
183
184
  useEffect( () => {
@@ -100,7 +100,7 @@ export type ControlPointButtonProps = {
100
100
  export type ControlPointsProps = {
101
101
  disableRemove: boolean;
102
102
  disableAlpha: boolean;
103
- gradientPickerDomRef: React.RefObject< HTMLDivElement >;
103
+ gradientPickerDomRef: React.RefObject< HTMLDivElement | null >;
104
104
  ignoreMarkerPosition?: number;
105
105
  value: ControlPoint[];
106
106
  onChange: ( controlPoints: ControlPoint[] ) => void;