@wordpress/components 37.0.0 → 38.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +46 -0
  3. package/build/autocomplete/index.cjs +3 -1
  4. package/build/autocomplete/index.cjs.map +2 -2
  5. package/build/color-picker/component.cjs +14 -5
  6. package/build/color-picker/component.cjs.map +2 -2
  7. package/build/color-picker/picker.cjs +95 -23
  8. package/build/color-picker/picker.cjs.map +2 -2
  9. package/build/confirm-dialog/component.cjs +86 -4
  10. package/build/confirm-dialog/component.cjs.map +3 -3
  11. package/build/content-editable-control/index.cjs +19 -9
  12. package/build/content-editable-control/index.cjs.map +3 -3
  13. package/build/custom-select-control/index.cjs +1 -2
  14. package/build/custom-select-control/index.cjs.map +2 -2
  15. package/build/disabled/index.cjs +87 -4
  16. package/build/disabled/index.cjs.map +4 -4
  17. package/build/form-token-field/index.cjs +87 -2
  18. package/build/form-token-field/index.cjs.map +3 -3
  19. package/build/gradient-picker/index.cjs +26 -20
  20. package/build/gradient-picker/index.cjs.map +2 -2
  21. package/build/input-control/index.cjs +0 -1
  22. package/build/input-control/index.cjs.map +2 -2
  23. package/build/input-control/styles/input-control-styles.cjs +23 -31
  24. package/build/input-control/styles/input-control-styles.cjs.map +2 -2
  25. package/build/private-apis.cjs +0 -2
  26. package/build/private-apis.cjs.map +3 -3
  27. package/build/range-control/index.cjs +0 -1
  28. package/build/range-control/index.cjs.map +2 -2
  29. package/build/sandbox/index.cjs +23 -4
  30. package/build/sandbox/index.cjs.map +3 -3
  31. package/build/search-control/index.cjs +93 -10
  32. package/build/search-control/index.cjs.map +4 -4
  33. package/build/select-control/index.cjs +0 -1
  34. package/build/select-control/index.cjs.map +2 -2
  35. package/build/select-control/styles/select-control-styles.cjs +9 -16
  36. package/build/select-control/styles/select-control-styles.cjs.map +2 -2
  37. package/build/slot-fill/fill.cjs.map +2 -2
  38. package/build/toggle-group-control/toggle-group-control/component.cjs +91 -8
  39. package/build/toggle-group-control/toggle-group-control/component.cjs.map +4 -4
  40. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs +98 -17
  41. package/build/toggle-group-control/toggle-group-control-option-base/component.cjs.map +4 -4
  42. package/build/tools-panel/tools-panel/component.cjs +6 -0
  43. package/build/tools-panel/tools-panel/component.cjs.map +2 -2
  44. package/build/tools-panel/tools-panel/hook.cjs +87 -11
  45. package/build/tools-panel/tools-panel/hook.cjs.map +4 -4
  46. package/build/tools-panel/tools-panel-header/component.cjs +87 -2
  47. package/build/tools-panel/tools-panel-header/component.cjs.map +3 -3
  48. package/build/tools-panel/tools-panel-header/hook.cjs +90 -20
  49. package/build/tools-panel/tools-panel-header/hook.cjs.map +4 -4
  50. package/build/tools-panel/tools-panel-item/hook.cjs +88 -9
  51. package/build/tools-panel/tools-panel-item/hook.cjs.map +4 -4
  52. package/build/validated-form-controls/control-with-error.cjs +3 -0
  53. package/build/validated-form-controls/control-with-error.cjs.map +2 -2
  54. package/build-module/autocomplete/index.mjs +3 -1
  55. package/build-module/autocomplete/index.mjs.map +2 -2
  56. package/build-module/color-picker/component.mjs +14 -5
  57. package/build-module/color-picker/component.mjs.map +2 -2
  58. package/build-module/color-picker/picker.mjs +96 -24
  59. package/build-module/color-picker/picker.mjs.map +2 -2
  60. package/build-module/confirm-dialog/component.mjs +86 -4
  61. package/build-module/confirm-dialog/component.mjs.map +3 -3
  62. package/build-module/content-editable-control/index.mjs +21 -11
  63. package/build-module/content-editable-control/index.mjs.map +2 -2
  64. package/build-module/custom-select-control/index.mjs +1 -2
  65. package/build-module/custom-select-control/index.mjs.map +2 -2
  66. package/build-module/disabled/index.mjs +87 -4
  67. package/build-module/disabled/index.mjs.map +3 -3
  68. package/build-module/form-token-field/index.mjs +88 -3
  69. package/build-module/form-token-field/index.mjs.map +3 -3
  70. package/build-module/gradient-picker/index.mjs +26 -20
  71. package/build-module/gradient-picker/index.mjs.map +2 -2
  72. package/build-module/input-control/index.mjs +0 -1
  73. package/build-module/input-control/index.mjs.map +2 -2
  74. package/build-module/input-control/styles/input-control-styles.mjs +23 -31
  75. package/build-module/input-control/styles/input-control-styles.mjs.map +2 -2
  76. package/build-module/private-apis.mjs +0 -2
  77. package/build-module/private-apis.mjs.map +2 -2
  78. package/build-module/range-control/index.mjs +0 -1
  79. package/build-module/range-control/index.mjs.map +2 -2
  80. package/build-module/sandbox/index.mjs +13 -4
  81. package/build-module/sandbox/index.mjs.map +2 -2
  82. package/build-module/search-control/index.mjs +93 -10
  83. package/build-module/search-control/index.mjs.map +3 -3
  84. package/build-module/select-control/index.mjs +0 -1
  85. package/build-module/select-control/index.mjs.map +2 -2
  86. package/build-module/select-control/styles/select-control-styles.mjs +9 -16
  87. package/build-module/select-control/styles/select-control-styles.mjs.map +2 -2
  88. package/build-module/slot-fill/fill.mjs.map +2 -2
  89. package/build-module/toggle-group-control/toggle-group-control/component.mjs +92 -9
  90. package/build-module/toggle-group-control/toggle-group-control/component.mjs.map +3 -3
  91. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs +99 -18
  92. package/build-module/toggle-group-control/toggle-group-control-option-base/component.mjs.map +3 -3
  93. package/build-module/tools-panel/tools-panel/component.mjs +6 -0
  94. package/build-module/tools-panel/tools-panel/component.mjs.map +2 -2
  95. package/build-module/tools-panel/tools-panel/hook.mjs +87 -11
  96. package/build-module/tools-panel/tools-panel/hook.mjs.map +3 -3
  97. package/build-module/tools-panel/tools-panel-header/component.mjs +87 -2
  98. package/build-module/tools-panel/tools-panel-header/component.mjs.map +3 -3
  99. package/build-module/tools-panel/tools-panel-header/hook.mjs +90 -20
  100. package/build-module/tools-panel/tools-panel-header/hook.mjs.map +3 -3
  101. package/build-module/tools-panel/tools-panel-item/hook.mjs +89 -10
  102. package/build-module/tools-panel/tools-panel-item/hook.mjs.map +3 -3
  103. package/build-module/validated-form-controls/control-with-error.mjs +3 -0
  104. package/build-module/validated-form-controls/control-with-error.mjs.map +2 -2
  105. package/build-style/style-rtl.css +20 -24
  106. package/build-style/style.css +20 -24
  107. package/build-types/autocomplete/index.d.ts +7 -3
  108. package/build-types/autocomplete/index.d.ts.map +1 -1
  109. package/build-types/border-box-control/border-box-control/component.d.ts +1 -3
  110. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  111. package/build-types/border-box-control/stories/index.story.d.ts +1 -3
  112. package/build-types/border-box-control/stories/index.story.d.ts.map +1 -1
  113. package/build-types/border-box-control/types.d.ts +1 -15
  114. package/build-types/border-box-control/types.d.ts.map +1 -1
  115. package/build-types/box-control/input-control.d.ts +3 -0
  116. package/build-types/box-control/input-control.d.ts.map +1 -0
  117. package/build-types/box-control/styles/box-control-styles.d.ts +4 -8
  118. package/build-types/box-control/styles/box-control-styles.d.ts.map +1 -1
  119. package/build-types/box-control/types.d.ts +1 -8
  120. package/build-types/box-control/types.d.ts.map +1 -1
  121. package/build-types/card/context.d.ts +3 -0
  122. package/build-types/card/context.d.ts.map +1 -0
  123. package/build-types/color-picker/component.d.ts.map +1 -1
  124. package/build-types/color-picker/picker.d.ts +17 -1
  125. package/build-types/color-picker/picker.d.ts.map +1 -1
  126. package/build-types/color-picker/styles.d.ts +4 -8
  127. package/build-types/color-picker/styles.d.ts.map +1 -1
  128. package/build-types/color-picker/types.d.ts +2 -0
  129. package/build-types/color-picker/types.d.ts.map +1 -1
  130. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  131. package/build-types/content-editable-control/index.d.ts.map +1 -1
  132. package/build-types/context/wordpress-component.d.ts +2 -1
  133. package/build-types/context/wordpress-component.d.ts.map +1 -1
  134. package/build-types/custom-select-control/index.d.ts.map +1 -1
  135. package/build-types/custom-select-control/types.d.ts +1 -8
  136. package/build-types/custom-select-control/types.d.ts.map +1 -1
  137. package/build-types/date-time/date/index.d.ts +23 -0
  138. package/build-types/date-time/date/index.d.ts.map +1 -0
  139. package/build-types/date-time/date/styles.d.ts +45 -0
  140. package/build-types/date-time/date/styles.d.ts.map +1 -0
  141. package/build-types/date-time/date/test/index.d.ts +2 -0
  142. package/build-types/date-time/date/test/index.d.ts.map +1 -0
  143. package/build-types/date-time/date/test/use-lilius.d.ts +2 -0
  144. package/build-types/date-time/date/test/use-lilius.d.ts.map +1 -0
  145. package/build-types/date-time/date/use-lilius/index.d.ts +169 -0
  146. package/build-types/date-time/date/use-lilius/index.d.ts.map +1 -0
  147. package/build-types/date-time/time/index.d.ts +27 -0
  148. package/build-types/date-time/time/index.d.ts.map +1 -0
  149. package/build-types/date-time/time/styles.d.ts +93 -0
  150. package/build-types/date-time/time/styles.d.ts.map +1 -0
  151. package/build-types/date-time/time/test/index.d.ts +2 -0
  152. package/build-types/date-time/time/test/index.d.ts.map +1 -0
  153. package/build-types/date-time/time/time-input/index.d.ts +4 -0
  154. package/build-types/date-time/time/time-input/index.d.ts.map +1 -0
  155. package/build-types/date-time/time/time-input/test/index.d.ts +2 -0
  156. package/build-types/date-time/time/time-input/test/index.d.ts.map +1 -0
  157. package/build-types/date-time/time/timezone.d.ts +7 -0
  158. package/build-types/date-time/time/timezone.d.ts.map +1 -0
  159. package/build-types/date-time/time-picker/styles.d.ts +8 -16
  160. package/build-types/date-time/time-picker/styles.d.ts.map +1 -1
  161. package/build-types/disabled/index.d.ts.map +1 -1
  162. package/build-types/divider/styles.d.ts +10 -0
  163. package/build-types/divider/styles.d.ts.map +1 -0
  164. package/build-types/flex/styles.d.ts +17 -0
  165. package/build-types/flex/styles.d.ts.map +1 -0
  166. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -4
  167. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  168. package/build-types/font-size-picker/index.d.ts +12 -2
  169. package/build-types/font-size-picker/index.d.ts.map +1 -1
  170. package/build-types/font-size-picker/stories/e2e/index.story.d.ts +12 -1
  171. package/build-types/font-size-picker/stories/e2e/index.story.d.ts.map +1 -1
  172. package/build-types/font-size-picker/types.d.ts +2 -15
  173. package/build-types/font-size-picker/types.d.ts.map +1 -1
  174. package/build-types/form-token-field/index.d.ts.map +1 -1
  175. package/build-types/gradient-picker/index.d.ts.map +1 -1
  176. package/build-types/gradient-picker/stories/index.story.d.ts +1 -0
  177. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  178. package/build-types/gradient-picker/test/index.d.ts +2 -0
  179. package/build-types/gradient-picker/test/index.d.ts.map +1 -0
  180. package/build-types/gradient-picker/types.d.ts +19 -4
  181. package/build-types/gradient-picker/types.d.ts.map +1 -1
  182. package/build-types/input-control/index.d.ts.map +1 -1
  183. package/build-types/input-control/styles/input-control-styles.d.ts +0 -6
  184. package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
  185. package/build-types/input-control/types.d.ts +1 -8
  186. package/build-types/input-control/types.d.ts.map +1 -1
  187. package/build-types/mobile/image/constants.d.ts +5 -0
  188. package/build-types/mobile/image/constants.d.ts.map +1 -0
  189. package/build-types/navigation/back-button/index.d.ts +7 -0
  190. package/build-types/navigation/back-button/index.d.ts.map +1 -0
  191. package/build-types/navigation/constants.d.ts +3 -0
  192. package/build-types/navigation/constants.d.ts.map +1 -0
  193. package/build-types/navigation/context.d.ts +4 -0
  194. package/build-types/navigation/context.d.ts.map +1 -0
  195. package/build-types/navigation/group/context.d.ts +7 -0
  196. package/build-types/navigation/group/context.d.ts.map +1 -0
  197. package/build-types/navigation/group/index.d.ts +7 -0
  198. package/build-types/navigation/group/index.d.ts.map +1 -0
  199. package/build-types/navigation/index.d.ts +46 -0
  200. package/build-types/navigation/index.d.ts.map +1 -0
  201. package/build-types/navigation/item/base-content.d.ts +3 -0
  202. package/build-types/navigation/item/base-content.d.ts.map +1 -0
  203. package/build-types/navigation/item/base.d.ts +3 -0
  204. package/build-types/navigation/item/base.d.ts.map +1 -0
  205. package/build-types/navigation/item/index.d.ts +7 -0
  206. package/build-types/navigation/item/index.d.ts.map +1 -0
  207. package/build-types/navigation/item/use-navigation-tree-item.d.ts +3 -0
  208. package/build-types/navigation/item/use-navigation-tree-item.d.ts.map +1 -0
  209. package/build-types/navigation/menu/context.d.ts +7 -0
  210. package/build-types/navigation/menu/context.d.ts.map +1 -0
  211. package/build-types/navigation/menu/index.d.ts +7 -0
  212. package/build-types/navigation/menu/index.d.ts.map +1 -0
  213. package/build-types/navigation/menu/menu-title-search.d.ts +3 -0
  214. package/build-types/navigation/menu/menu-title-search.d.ts.map +1 -0
  215. package/build-types/navigation/menu/menu-title.d.ts +3 -0
  216. package/build-types/navigation/menu/menu-title.d.ts.map +1 -0
  217. package/build-types/navigation/menu/search-no-results-found.d.ts +3 -0
  218. package/build-types/navigation/menu/search-no-results-found.d.ts.map +1 -0
  219. package/build-types/navigation/menu/use-navigation-tree-menu.d.ts +3 -0
  220. package/build-types/navigation/menu/use-navigation-tree-menu.d.ts.map +1 -0
  221. package/build-types/navigation/stories/index.story.d.ts +23 -0
  222. package/build-types/navigation/stories/index.story.d.ts.map +1 -0
  223. package/build-types/navigation/stories/utils/controlled-state.d.ts +7 -0
  224. package/build-types/navigation/stories/utils/controlled-state.d.ts.map +1 -0
  225. package/build-types/navigation/stories/utils/default.d.ts +10 -0
  226. package/build-types/navigation/stories/utils/default.d.ts.map +1 -0
  227. package/build-types/navigation/stories/utils/group.d.ts +10 -0
  228. package/build-types/navigation/stories/utils/group.d.ts.map +1 -0
  229. package/build-types/navigation/stories/utils/hide-if-empty.d.ts +10 -0
  230. package/build-types/navigation/stories/utils/hide-if-empty.d.ts.map +1 -0
  231. package/build-types/navigation/stories/utils/more-examples.d.ts +10 -0
  232. package/build-types/navigation/stories/utils/more-examples.d.ts.map +1 -0
  233. package/build-types/navigation/stories/utils/search.d.ts +10 -0
  234. package/build-types/navigation/stories/utils/search.d.ts.map +1 -0
  235. package/build-types/navigation/styles/navigation-styles.d.ts +55 -0
  236. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -0
  237. package/build-types/navigation/test/index.d.ts +2 -0
  238. package/build-types/navigation/test/index.d.ts.map +1 -0
  239. package/build-types/navigation/types.d.ts +266 -0
  240. package/build-types/navigation/types.d.ts.map +1 -0
  241. package/build-types/navigation/use-create-navigation-tree.d.ts +15 -0
  242. package/build-types/navigation/use-create-navigation-tree.d.ts.map +1 -0
  243. package/build-types/navigation/use-navigation-tree-nodes.d.ts +10 -0
  244. package/build-types/navigation/use-navigation-tree-nodes.d.ts.map +1 -0
  245. package/build-types/navigation/utils.d.ts +3 -0
  246. package/build-types/navigation/utils.d.ts.map +1 -0
  247. package/build-types/number-control/index.d.ts +2 -4
  248. package/build-types/number-control/index.d.ts.map +1 -1
  249. package/build-types/number-control/stories/index.story.d.ts +2 -4
  250. package/build-types/number-control/stories/index.story.d.ts.map +1 -1
  251. package/build-types/number-control/types.d.ts +1 -15
  252. package/build-types/number-control/types.d.ts.map +1 -1
  253. package/build-types/private-apis.d.ts.map +1 -1
  254. package/build-types/range-control/index.d.ts +2 -4
  255. package/build-types/range-control/index.d.ts.map +1 -1
  256. package/build-types/range-control/styles/range-control-styles.d.ts +2 -4
  257. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  258. package/build-types/range-control/types.d.ts +2 -16
  259. package/build-types/range-control/types.d.ts.map +1 -1
  260. package/build-types/sandbox/index.d.ts.map +1 -1
  261. package/build-types/sandbox/types.d.ts +11 -0
  262. package/build-types/sandbox/types.d.ts.map +1 -1
  263. package/build-types/search-control/index.d.ts.map +1 -1
  264. package/build-types/search-control/types.d.ts +1 -1
  265. package/build-types/search-control/types.d.ts.map +1 -1
  266. package/build-types/select-control/index.d.ts.map +1 -1
  267. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  268. package/build-types/select-control/types.d.ts +0 -7
  269. package/build-types/select-control/types.d.ts.map +1 -1
  270. package/build-types/slot-fill/fill.d.ts.map +1 -1
  271. package/build-types/slot-fill/stories/index.story.d.ts +1 -6
  272. package/build-types/slot-fill/stories/index.story.d.ts.map +1 -1
  273. package/build-types/surface/styles.d.ts +11 -0
  274. package/build-types/surface/styles.d.ts.map +1 -0
  275. package/build-types/theme/styles.d.ts +10 -0
  276. package/build-types/theme/styles.d.ts.map +1 -0
  277. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +0 -1
  278. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  279. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  280. package/build-types/toggle-group-control/types.d.ts +0 -7
  281. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  282. package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
  283. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  284. package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
  285. package/build-types/tools-panel/tools-panel-header/hook.d.ts.map +1 -1
  286. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  287. package/build-types/tree-select/types.d.ts +1 -8
  288. package/build-types/tree-select/types.d.ts.map +1 -1
  289. package/build-types/truncate/styles.d.ts +2 -0
  290. package/build-types/truncate/styles.d.ts.map +1 -0
  291. package/build-types/unit-control/index.d.ts +2 -4
  292. package/build-types/unit-control/index.d.ts.map +1 -1
  293. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -4
  294. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  295. package/build-types/unit-control/types.d.ts +1 -15
  296. package/build-types/unit-control/types.d.ts.map +1 -1
  297. package/build-types/utils/deprecated-36px-size.d.ts +7 -0
  298. package/build-types/utils/deprecated-36px-size.d.ts.map +1 -0
  299. package/build-types/validated-form-controls/components/number-control.d.ts +2 -4
  300. package/build-types/validated-form-controls/components/number-control.d.ts.map +1 -1
  301. package/build-types/validated-form-controls/components/range-control.d.ts +2 -4
  302. package/build-types/validated-form-controls/components/range-control.d.ts.map +1 -1
  303. package/build-types/validated-form-controls/components/stories/overview.story.d.ts +5 -0
  304. package/build-types/validated-form-controls/components/stories/overview.story.d.ts.map +1 -1
  305. package/build-types/validated-form-controls/components/toggle-group-control.d.ts +1 -2
  306. package/build-types/validated-form-controls/components/toggle-group-control.d.ts.map +1 -1
  307. package/build-types/validated-form-controls/control-with-error.d.ts.map +1 -1
  308. package/build-types/visually-hidden/test/index.d.ts +2 -0
  309. package/build-types/visually-hidden/test/index.d.ts.map +1 -0
  310. package/package.json +27 -27
  311. package/src/autocomplete/index.tsx +16 -3
  312. package/src/base-control/README.md +2 -2
  313. package/src/border-box-control/types.ts +4 -15
  314. package/src/box-control/types.ts +4 -8
  315. package/src/card/test/__snapshots__/index.tsx.snap +1 -1
  316. package/src/checkbox-control/test/__snapshots__/index.tsx.snap +1 -1
  317. package/src/color-indicator/test/__snapshots__/index.tsx.snap +1 -1
  318. package/src/color-picker/component.tsx +23 -19
  319. package/src/color-picker/picker.tsx +144 -21
  320. package/src/color-picker/test/index.tsx +502 -0
  321. package/src/color-picker/types.ts +2 -0
  322. package/src/combobox-control/style.scss +2 -2
  323. package/src/confirm-dialog/component.tsx +2 -4
  324. package/src/confirm-dialog/style.module.scss +7 -0
  325. package/src/confirm-dialog/test/index.tsx +5 -0
  326. package/src/content-editable-control/index.tsx +24 -5
  327. package/src/content-editable-control/style.module.scss +1 -1
  328. package/src/content-editable-control/test/index.tsx +20 -8
  329. package/src/context/test/__snapshots__/context-system-provider.js.snap +1 -1
  330. package/src/context/wordpress-component.ts +7 -2
  331. package/src/custom-gradient-picker/test/index.tsx +111 -1
  332. package/src/custom-select-control/index.tsx +1 -2
  333. package/src/custom-select-control/test/__snapshots__/index.tsx.snap +6 -0
  334. package/src/custom-select-control/test/index.tsx +23 -0
  335. package/src/custom-select-control/types.ts +1 -8
  336. package/src/disabled/index.tsx +7 -5
  337. package/src/disabled/style.module.scss +15 -0
  338. package/src/disabled/test/index.tsx +6 -4
  339. package/src/elevation/test/__snapshots__/index.tsx.snap +1 -1
  340. package/src/external-link/style.scss +6 -12
  341. package/src/flex/test/__snapshots__/index.tsx.snap +1 -1
  342. package/src/font-size-picker/types.ts +6 -15
  343. package/src/form-toggle/test/__snapshots__/index.tsx.snap +1 -1
  344. package/src/form-token-field/index.tsx +5 -4
  345. package/src/form-token-field/style.module.scss +6 -0
  346. package/src/form-token-field/style.scss +2 -2
  347. package/src/gradient-picker/README.md +21 -3
  348. package/src/gradient-picker/index.tsx +43 -28
  349. package/src/gradient-picker/stories/index.story.tsx +41 -5
  350. package/src/gradient-picker/test/index.tsx +148 -0
  351. package/src/gradient-picker/types.ts +24 -4
  352. package/src/h-stack/test/__snapshots__/index.tsx.snap +1 -1
  353. package/src/heading/test/__snapshots__/index.tsx.snap +1 -1
  354. package/src/higher-order/with-filters/test/__snapshots__/index.tsx.snap +1 -1
  355. package/src/input-control/index.tsx +0 -1
  356. package/src/input-control/styles/input-control-styles.tsx +0 -8
  357. package/src/input-control/test/__snapshots__/index.js.snap +11 -0
  358. package/src/input-control/test/index.js +28 -0
  359. package/src/input-control/types.ts +1 -8
  360. package/src/item-group/test/__snapshots__/index.js.snap +1 -1
  361. package/src/menu/README.md +2 -2
  362. package/src/menu-item/test/__snapshots__/index.js.snap +1 -1
  363. package/src/modal/test/index.tsx +42 -0
  364. package/src/notice/test/__snapshots__/index.tsx.snap +1 -1
  365. package/src/number-control/types.ts +1 -22
  366. package/src/panel/test/__snapshots__/body.tsx.snap +1 -1
  367. package/src/panel/test/__snapshots__/header.tsx.snap +1 -1
  368. package/src/panel/test/__snapshots__/index.tsx.snap +1 -1
  369. package/src/panel/test/__snapshots__/row.tsx.snap +1 -1
  370. package/src/private-apis.ts +0 -2
  371. package/src/range-control/index.tsx +0 -1
  372. package/src/range-control/types.ts +2 -15
  373. package/src/sandbox/index.tsx +22 -2
  374. package/src/sandbox/test/index.tsx +21 -0
  375. package/src/sandbox/types.ts +11 -0
  376. package/src/scrollable/test/__snapshots__/index.tsx.snap +1 -1
  377. package/src/search-control/index.tsx +23 -20
  378. package/src/search-control/style.module.scss +16 -0
  379. package/src/search-control/test/index.tsx +8 -0
  380. package/src/search-control/types.ts +1 -1
  381. package/src/select-control/index.tsx +0 -1
  382. package/src/select-control/styles/select-control-styles.ts +0 -7
  383. package/src/select-control/test/__snapshots__/select-control.tsx.snap +11 -0
  384. package/src/select-control/test/select-control.tsx +37 -0
  385. package/src/select-control/types.ts +0 -7
  386. package/src/shortcut/test/__snapshots__/index.tsx.snap +1 -1
  387. package/src/slot-fill/fill.tsx +3 -9
  388. package/src/slot-fill/stories/index.story.tsx +52 -10
  389. package/src/slot-fill/test/__snapshots__/slot.js.snap +1 -1
  390. package/src/slot-fill/test/slot.js +53 -11
  391. package/src/spacer/test/__snapshots__/index.tsx.snap +1 -1
  392. package/src/text/test/__snapshots__/index.tsx.snap +1 -1
  393. package/src/text-control/style.scss +1 -1
  394. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +29 -707
  395. package/src/toggle-group-control/test/index.tsx +33 -3
  396. package/src/toggle-group-control/toggle-group-control/component.tsx +11 -16
  397. package/src/toggle-group-control/toggle-group-control/style.module.scss +63 -0
  398. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +22 -24
  399. package/src/toggle-group-control/toggle-group-control-option-base/style.module.scss +88 -0
  400. package/src/toggle-group-control/types.ts +0 -7
  401. package/src/tools-panel/style.module.scss +117 -0
  402. package/src/tools-panel/test/index.tsx +105 -39
  403. package/src/tools-panel/tools-panel/component.tsx +12 -1
  404. package/src/tools-panel/tools-panel/hook.ts +13 -15
  405. package/src/tools-panel/tools-panel-header/component.tsx +6 -2
  406. package/src/tools-panel/tools-panel-header/hook.ts +7 -25
  407. package/src/tools-panel/tools-panel-item/hook.ts +16 -34
  408. package/src/tooltip/test/index.tsx +1 -1
  409. package/src/tree-grid/test/__snapshots__/cell.tsx.snap +1 -1
  410. package/src/tree-grid/test/__snapshots__/index.tsx.snap +1 -1
  411. package/src/tree-grid/test/__snapshots__/roving-tab-index-item.tsx.snap +1 -1
  412. package/src/tree-grid/test/__snapshots__/roving-tab-index.tsx.snap +1 -1
  413. package/src/tree-grid/test/__snapshots__/row.tsx.snap +1 -1
  414. package/src/tree-select/README.md +1 -1
  415. package/src/tree-select/types.ts +1 -8
  416. package/src/unit-control/types.ts +1 -18
  417. package/src/utils/theme-variables.scss +1 -0
  418. package/src/v-stack/test/__snapshots__/index.tsx.snap +1 -1
  419. package/src/validated-form-controls/components/stories/overview.story.tsx +51 -0
  420. package/src/validated-form-controls/control-with-error.tsx +9 -0
  421. package/src/validated-form-controls/style.scss +3 -3
  422. package/src/validated-form-controls/test/control-with-error.tsx +42 -0
  423. package/src/view/test/__snapshots__/index.js.snap +1 -1
  424. package/build/confirm-dialog/styles.cjs +0 -42
  425. package/build/confirm-dialog/styles.cjs.map +0 -7
  426. package/build/disabled/styles/disabled-styles.cjs +0 -42
  427. package/build/disabled/styles/disabled-styles.cjs.map +0 -7
  428. package/build/form-token-field/styles.cjs +0 -49
  429. package/build/form-token-field/styles.cjs.map +0 -7
  430. package/build/search-control/styles.cjs +0 -74
  431. package/build/search-control/styles.cjs.map +0 -7
  432. package/build/theme/color-algorithms.cjs +0 -131
  433. package/build/theme/color-algorithms.cjs.map +0 -7
  434. package/build/theme/index.cjs +0 -160
  435. package/build/theme/index.cjs.map +0 -7
  436. package/build/theme/types.cjs +0 -19
  437. package/build/theme/types.cjs.map +0 -7
  438. package/build/toggle-group-control/toggle-group-control/styles.cjs +0 -53
  439. package/build/toggle-group-control/toggle-group-control/styles.cjs.map +0 -7
  440. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs +0 -94
  441. package/build/toggle-group-control/toggle-group-control-option-base/styles.cjs.map +0 -7
  442. package/build/tools-panel/styles.cjs +0 -129
  443. package/build/tools-panel/styles.cjs.map +0 -7
  444. package/build/utils/use-deprecated-props.cjs +0 -41
  445. package/build/utils/use-deprecated-props.cjs.map +0 -7
  446. package/build-module/confirm-dialog/styles.mjs +0 -17
  447. package/build-module/confirm-dialog/styles.mjs.map +0 -7
  448. package/build-module/disabled/styles/disabled-styles.mjs +0 -17
  449. package/build-module/disabled/styles/disabled-styles.mjs.map +0 -7
  450. package/build-module/form-token-field/styles.mjs +0 -14
  451. package/build-module/form-token-field/styles.mjs.map +0 -7
  452. package/build-module/search-control/styles.mjs +0 -38
  453. package/build-module/search-control/styles.mjs.map +0 -7
  454. package/build-module/theme/color-algorithms.mjs +0 -94
  455. package/build-module/theme/color-algorithms.mjs.map +0 -7
  456. package/build-module/theme/index.mjs +0 -129
  457. package/build-module/theme/index.mjs.map +0 -7
  458. package/build-module/theme/types.mjs +0 -1
  459. package/build-module/theme/types.mjs.map +0 -7
  460. package/build-module/toggle-group-control/toggle-group-control/styles.mjs +0 -27
  461. package/build-module/toggle-group-control/toggle-group-control/styles.mjs.map +0 -7
  462. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs +0 -56
  463. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.mjs.map +0 -7
  464. package/build-module/tools-panel/styles.mjs +0 -84
  465. package/build-module/tools-panel/styles.mjs.map +0 -7
  466. package/build-module/utils/use-deprecated-props.mjs +0 -16
  467. package/build-module/utils/use-deprecated-props.mjs.map +0 -7
  468. package/src/confirm-dialog/styles.ts +0 -18
  469. package/src/disabled/styles/disabled-styles.tsx +0 -23
  470. package/src/form-token-field/styles.ts +0 -15
  471. package/src/search-control/styles.ts +0 -27
  472. package/src/theme/README.md +0 -47
  473. package/src/theme/color-algorithms.ts +0 -142
  474. package/src/theme/index.tsx +0 -80
  475. package/src/theme/stories/index.story.tsx +0 -127
  476. package/src/theme/style.module.scss +0 -4
  477. package/src/theme/test/color-algorithms.ts +0 -100
  478. package/src/theme/test/index.tsx +0 -151
  479. package/src/theme/types.ts +0 -61
  480. package/src/toggle-group-control/toggle-group-control/styles.ts +0 -84
  481. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +0 -109
  482. package/src/tools-panel/styles.ts +0 -176
  483. package/src/utils/use-deprecated-props.ts +0 -14
@@ -33,7 +33,7 @@ input.components-combobox-control__input[type="text"] {
33
33
  }
34
34
 
35
35
  .components-combobox-control__suggestions-container {
36
- @include input-control($components-color-accent);
36
+ @include input-control;
37
37
  display: flex;
38
38
  flex-wrap: wrap;
39
39
  align-items: flex-start;
@@ -41,7 +41,7 @@ input.components-combobox-control__input[type="text"] {
41
41
  padding: 0;
42
42
 
43
43
  &:focus-within {
44
- @include input-style__focus($components-color-accent);
44
+ @include input-style__focus;
45
45
  }
46
46
 
47
47
  .components-spinner {
@@ -15,8 +15,7 @@ import { Flex } from '../flex';
15
15
  import Button from '../button';
16
16
  import { Text } from '../text';
17
17
  import { VStack } from '../v-stack';
18
- import * as styles from './styles';
19
- import { useCx } from '../utils/hooks/use-cx';
18
+ import styles from './style.module.scss';
20
19
 
21
20
  const UnconnectedConfirmDialog = (
22
21
  props: WordPressComponentProps< ConfirmDialogProps, 'div', false >,
@@ -33,8 +32,7 @@ const UnconnectedConfirmDialog = (
33
32
  ...otherProps
34
33
  } = useContextSystem( props, 'ConfirmDialog' );
35
34
 
36
- const cx = useCx();
37
- const wrapperClassName = cx( styles.wrapper );
35
+ const wrapperClassName = styles.wrapper;
38
36
  const cancelButtonRef = useRef< HTMLButtonElement >( null );
39
37
  const confirmButtonRef = useRef< HTMLButtonElement >( null );
40
38
 
@@ -0,0 +1,7 @@
1
+ @use "@wordpress/base-styles/z-index" as *;
2
+
3
+ // Match the previous Emotion `&&` specificity so this rule continues to
4
+ // override the Modal overlay's default z-index regardless of source order.
5
+ .wrapper.wrapper {
6
+ z-index: z-index(".components-confirm-dialog");
7
+ }
@@ -8,6 +8,7 @@ import userEvent from '@testing-library/user-event';
8
8
  * Internal dependencies
9
9
  */
10
10
  import { ConfirmDialog } from '..';
11
+ import styles from '../style.module.scss';
11
12
 
12
13
  const noop = () => {};
13
14
 
@@ -25,6 +26,10 @@ describe( 'Confirm', () => {
25
26
  const elementsTexts = [ 'Are you sure?', 'OK', 'Cancel' ];
26
27
 
27
28
  expect( dialog ).toBeInTheDocument();
29
+ expect( dialog ).toHaveClass( 'components-confirm-dialog' );
30
+ // Disable reason: Semantic queries can't reach the overlay.
31
+ // eslint-disable-next-line testing-library/no-node-access
32
+ expect( dialog.parentElement ).toHaveClass( styles.wrapper );
28
33
 
29
34
  elementsTexts.forEach( ( txt ) => {
30
35
  const el = screen.getByText( txt );
@@ -6,7 +6,8 @@ import type { ForwardedRef } from 'react';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { forwardRef } from '@wordpress/element';
9
+ import { useMergeRefs } from '@wordpress/compose';
10
+ import { forwardRef, useRef } from '@wordpress/element';
10
11
 
11
12
  /**
12
13
  * Internal dependencies
@@ -14,6 +15,7 @@ import { forwardRef } from '@wordpress/element';
14
15
  import BaseControl from '../base-control';
15
16
  import { useBaseControlProps } from '../base-control/hooks';
16
17
  import type { WordPressComponentProps } from '../context';
18
+ import { VisuallyHidden } from '../visually-hidden';
17
19
  import type { ContentEditableControlProps } from './types';
18
20
  import styles from './style.module.scss';
19
21
 
@@ -31,25 +33,42 @@ function UnforwardedContentEditableControl(
31
33
  }: WordPressComponentProps< ContentEditableControlProps, 'div', false >,
32
34
  forwardedRef: ForwardedRef< HTMLDivElement >
33
35
  ) {
36
+ // The label is not passed through to `BaseControl`: it would render a
37
+ // `<label for>` pointing at the `contentEditable` `div`, which is not a
38
+ // labelable element, making the association invalid. The label is instead
39
+ // rendered here without `for` and wired up via `aria-labelledby`.
34
40
  const { baseControlProps, controlProps } = useBaseControlProps( {
35
41
  id,
36
42
  className,
37
43
  help,
38
- hideLabelFromVision,
39
- label,
40
44
  } );
41
45
 
46
+ const labelId = `${ controlProps.id }__label`;
47
+ const editableRef = useRef< HTMLDivElement >( null );
48
+ const mergedRefs = useMergeRefs( [ editableRef, forwardedRef ] );
49
+
42
50
  return (
43
51
  <BaseControl { ...baseControlProps }>
52
+ { hideLabelFromVision ? (
53
+ <VisuallyHidden id={ labelId }>{ label }</VisuallyHidden>
54
+ ) : (
55
+ <BaseControl.VisualLabel
56
+ id={ labelId }
57
+ // Focus the field on label click, like `<label for>` would.
58
+ onClick={ () => editableRef.current?.focus() }
59
+ >
60
+ { label }
61
+ </BaseControl.VisualLabel>
62
+ ) }
44
63
  <div
45
64
  className={ styles.editable }
46
65
  role="textbox"
47
66
  aria-multiline
48
- aria-label={ label }
67
+ aria-labelledby={ labelId }
49
68
  aria-placeholder={ placeholder || undefined }
50
69
  aria-disabled={ disabled || undefined }
51
70
  aria-required={ required || undefined }
52
- ref={ forwardedRef }
71
+ ref={ mergedRefs }
53
72
  // A disabled field is not `contentEditable`, which also
54
73
  // removes it from the tab order.
55
74
  contentEditable={ ! disabled }
@@ -6,7 +6,7 @@
6
6
  width: 100%;
7
7
  background: $components-color-background;
8
8
  color: $components-color-foreground;
9
- @include input-control( $components-color-accent );
9
+ @include input-control;
10
10
  border-color: $components-color-border;
11
11
 
12
12
  // `::placeholder` only applies to native form fields, so draw the text
@@ -21,12 +21,20 @@ describe( 'ContentEditableControl', () => {
21
21
  const label = screen.getByText( 'Description' );
22
22
 
23
23
  expect( textbox ).toHaveAttribute( 'contenteditable', 'true' );
24
- // `BaseControl` wires the label's `for` to the control's `id`.
25
- expect( label ).toHaveAttribute( 'for', textbox.id );
26
- // `<label for>` does not contribute an accessible name to a non-form
27
- // element (a `<div role="textbox">`), so the label is also mirrored
28
- // onto `aria-label` for assistive tech and test locators.
29
- expect( textbox ).toHaveAttribute( 'aria-label', 'Description' );
24
+ // A `<div contenteditable>` is not a labelable element, so the label
25
+ // must not use `for` (Chrome logs a console error for the invalid
26
+ // association). The name is wired through `aria-labelledby` instead.
27
+ expect( label ).not.toHaveAttribute( 'for' );
28
+ expect( textbox ).toHaveAttribute( 'aria-labelledby', label.id );
29
+ expect( textbox ).toHaveAccessibleName( 'Description' );
30
+ } );
31
+
32
+ it( 'focuses the textbox when the label is clicked', () => {
33
+ render( <ContentEditableControl label="Description" /> );
34
+
35
+ fireEvent.click( screen.getByText( 'Description' ) );
36
+
37
+ expect( screen.getByRole( 'textbox' ) ).toHaveFocus();
30
38
  } );
31
39
 
32
40
  it( 'visually hides the label when `hideLabelFromVision` is set', () => {
@@ -95,9 +103,13 @@ describe( 'ContentEditableControl', () => {
95
103
  'id',
96
104
  'my-custom-id'
97
105
  );
106
+ expect( screen.getByRole( 'textbox' ) ).toHaveAttribute(
107
+ 'aria-labelledby',
108
+ 'my-custom-id__label'
109
+ );
98
110
  expect( screen.getByText( 'Custom id' ) ).toHaveAttribute(
99
- 'for',
100
- 'my-custom-id'
111
+ 'id',
112
+ 'my-custom-id__label'
101
113
  );
102
114
  } );
103
115
 
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`props should render _override props 1`] = `
4
4
  <div>
@@ -34,8 +34,13 @@ export type WordPressComponent<
34
34
  IsPolymorphic extends boolean,
35
35
  > = {
36
36
  < TT extends React.ElementType >(
37
- props: WordPressComponentProps< O, TT, IsPolymorphic > &
38
- ( IsPolymorphic extends true ? { as: TT } : {} )
37
+ props: WordPressComponentProps< O, TT, false > &
38
+ ( IsPolymorphic extends true
39
+ ? {
40
+ /** The HTML element or React component to render the component as. */
41
+ as: TT;
42
+ }
43
+ : {} )
39
44
  ): React.ReactNode;
40
45
  ( props: WordPressComponentProps< O, T, IsPolymorphic > ): React.ReactNode;
41
46
  displayName?: string;
@@ -1,15 +1,125 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { render, screen } from '@testing-library/react';
4
+ import { fireEvent, render, screen, waitFor } from '@testing-library/react';
5
5
  import userEvent from '@testing-library/user-event';
6
6
 
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { useState } from '@wordpress/element';
11
+
7
12
  /**
8
13
  * Internal dependencies
9
14
  */
10
15
  import CustomGradientPicker from '../';
11
16
 
17
+ function ControlledCustomGradientPicker( {
18
+ initialValue = 'linear-gradient(90deg,rgb(0,0,0) 0%,rgb(255,255,255) 100%)',
19
+ }: {
20
+ initialValue?: string;
21
+ } ) {
22
+ const [ value, setValue ] = useState( initialValue );
23
+ return <CustomGradientPicker value={ value } onChange={ setValue } />;
24
+ }
25
+
12
26
  describe( 'CustomGradientPicker', () => {
27
+ describe( 'new gradient stop color picker', () => {
28
+ it( 'preserves visual saturation when setting a new stop color through black', async () => {
29
+ const { container } = render( <ControlledCustomGradientPicker /> );
30
+
31
+ // Presentational gradient bar markup; no accessible roles.
32
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
33
+ const markers = container.querySelector(
34
+ '.components-custom-gradient-picker__markers-container'
35
+ ) as HTMLElement;
36
+ markers.getBoundingClientRect = () =>
37
+ ( {
38
+ left: 0,
39
+ x: 0,
40
+ width: 200,
41
+ top: 0,
42
+ height: 20,
43
+ right: 200,
44
+ bottom: 20,
45
+ y: 0,
46
+ toJSON: () => ( {} ),
47
+ } ) as DOMRect;
48
+
49
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
50
+ const bar = container.querySelector(
51
+ '.components-custom-gradient-picker__gradient-bar'
52
+ ) as HTMLElement;
53
+ // Hover mid-bar so the insert-point control appears (away from 0%/100%).
54
+ fireEvent.mouseMove( bar, { clientX: 100 } );
55
+
56
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
57
+ const insertButton = container.querySelector(
58
+ '.components-custom-gradient-picker__insert-point-dropdown'
59
+ ) as HTMLElement;
60
+ expect( insertButton ).toBeTruthy();
61
+ fireEvent.click( insertButton );
62
+
63
+ const colorSlider = screen.getByRole( 'slider', { name: 'Color' } );
64
+ colorSlider.getBoundingClientRect = () =>
65
+ ( {
66
+ left: 0,
67
+ top: 0,
68
+ width: 100,
69
+ height: 100,
70
+ right: 100,
71
+ bottom: 100,
72
+ x: 0,
73
+ y: 0,
74
+ toJSON: () => ( {} ),
75
+ } ) as DOMRect;
76
+
77
+ // Choose a saturated mid-brightness color — creates the new stop and
78
+ // exercises parent gradient updates while picking.
79
+ fireEvent.mouseDown( colorSlider, {
80
+ buttons: 1,
81
+ pageX: 80,
82
+ pageY: 20,
83
+ clientX: 80,
84
+ clientY: 20,
85
+ } );
86
+
87
+ // ColorPicker content is portaled; pointer has no accessible role.
88
+ // eslint-disable-next-line testing-library/no-node-access
89
+ const pointer = document.querySelector(
90
+ '.react-colorful__saturation-pointer'
91
+ ) as HTMLElement;
92
+ expect( pointer ).toBeTruthy();
93
+ const leftBefore = pointer.style.left;
94
+ expect( parseFloat( leftBefore ) ).toBeGreaterThan( 50 );
95
+
96
+ // Keyboard to black — must not reset saturation via HSVA↔HSLA echo
97
+ // while the gradient parent keeps updating (#80110 / #80205).
98
+ colorSlider.focus();
99
+ for ( let i = 0; i < 20; i++ ) {
100
+ fireEvent.keyDown( colorSlider, {
101
+ key: 'ArrowDown',
102
+ keyCode: 40,
103
+ which: 40,
104
+ } );
105
+ }
106
+
107
+ expect( pointer ).toHaveStyle( {
108
+ top: '100%',
109
+ left: leftBefore,
110
+ } );
111
+
112
+ // Close the portaled popover so later tests are not affected by
113
+ // asynchronous Popover position updates.
114
+ fireEvent.click( insertButton );
115
+ await waitFor( () => {
116
+ expect(
117
+ screen.queryByRole( 'slider', { name: 'Color' } )
118
+ ).not.toBeInTheDocument();
119
+ } );
120
+ } );
121
+ } );
122
+
13
123
  describe( 'GradientTypePicker angle persistence', () => {
14
124
  it( 'should restore the previous linear angle when switching from radial back to linear', async () => {
15
125
  const user = userEvent.setup();
@@ -62,7 +62,6 @@ function CustomSelectControl< T extends CustomSelectOption >(
62
62
  const {
63
63
  // Prevent passing legacy props to internal component.
64
64
  __next40pxDefaultSize: _next40pxDefaultSize,
65
- __shouldNotWarnDeprecated36pxSize: _shouldNotWarnDeprecated36pxSize,
66
65
  describedBy,
67
66
  options,
68
67
  onChange,
@@ -177,7 +176,7 @@ function CustomSelectControl< T extends CustomSelectOption >(
177
176
  <CustomSelect
178
177
  aria-describedby={ descriptionId }
179
178
  renderSelectedValue={ renderSelectedValue }
180
- size={ size === '__unstable-large' ? 'default' : size }
179
+ size={ size }
181
180
  store={ store }
182
181
  className={ clsx(
183
182
  // Keeping the classname for legacy reasons
@@ -0,0 +1,6 @@
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
+
3
+ exports[`Legacy size support treats __unstable-large the same as default 1`] = `
4
+ Snapshot Diff:
5
+ Compared values have no visual difference.
6
+ `;
@@ -694,6 +694,29 @@ describe.each( [
694
694
  } );
695
695
  } );
696
696
 
697
+ describe( 'Legacy size support', () => {
698
+ it( 'treats __unstable-large the same as default', async () => {
699
+ const options = [ { key: 'one', name: 'One' } ];
700
+
701
+ await render(
702
+ <UncontrolledCustomSelectControl label="Test" options={ options } />
703
+ );
704
+ await render(
705
+ <UncontrolledCustomSelectControl
706
+ label="Test"
707
+ options={ options }
708
+ // @ts-expect-error testing legacy runtime support for removed size type
709
+ size="__unstable-large"
710
+ />
711
+ );
712
+
713
+ const comboboxes = screen.getAllByRole( 'combobox' );
714
+ const [ defaultCombobox, legacyCombobox ] = comboboxes;
715
+
716
+ expect( legacyCombobox ).toMatchStyleDiffSnapshot( defaultCombobox );
717
+ } );
718
+ } );
719
+
697
720
  describe( 'Type checking', () => {
698
721
  // eslint-disable-next-line jest/expect-expect
699
722
  it( 'should infer the value type from available `options`, but not the `value` or `onChange` prop', () => {
@@ -89,7 +89,7 @@ export type CustomSelectProps< T extends CustomSelectOption > = {
89
89
  *
90
90
  * @default 'default'
91
91
  */
92
- size?: 'default' | 'small' | '__unstable-large';
92
+ size?: 'default' | 'small';
93
93
  /**
94
94
  * Can be used to externally control the value of the control.
95
95
  */
@@ -121,11 +121,4 @@ export type CustomSelectProps< T extends CustomSelectOption > = {
121
121
  * @ignore
122
122
  */
123
123
  __next40pxDefaultSize?: boolean;
124
- /**
125
- * Do not throw a warning for the deprecated 36px default size.
126
- * For internal components of other components that already throw the warning.
127
- *
128
- * @ignore
129
- */
130
- __shouldNotWarnDeprecated36pxSize?: boolean;
131
124
  };
@@ -1,8 +1,8 @@
1
- import { disabledStyles } from './styles/disabled-styles';
1
+ import clsx from 'clsx';
2
2
  import type { DisabledProps } from './types';
3
3
  import type { WordPressComponentProps } from '../context';
4
- import { useCx } from '../utils';
5
4
  import Context from './context';
5
+ import styles from './style.module.scss';
6
6
 
7
7
  const { Consumer, Provider } = Context;
8
8
 
@@ -54,8 +54,6 @@ function Disabled( {
54
54
  isDisabled = true,
55
55
  ...props
56
56
  }: WordPressComponentProps< DisabledProps, 'div' > ) {
57
- const cx = useCx();
58
-
59
57
  return (
60
58
  <Provider value={ isDisabled }>
61
59
  <div
@@ -63,7 +61,11 @@ function Disabled( {
63
61
  inert={ isDisabled ? 'true' : undefined }
64
62
  className={
65
63
  isDisabled
66
- ? cx( disabledStyles, className, 'components-disabled' )
64
+ ? clsx(
65
+ styles.disabled,
66
+ className,
67
+ 'components-disabled'
68
+ )
67
69
  : undefined
68
70
  }
69
71
  { ...props }
@@ -0,0 +1,15 @@
1
+ .disabled {
2
+ position: relative;
3
+ pointer-events: none;
4
+
5
+ &::after {
6
+ content: "";
7
+ position: absolute;
8
+ inset: 0;
9
+ }
10
+
11
+ // Also make nested blocks unselectable.
12
+ * {
13
+ pointer-events: none;
14
+ }
15
+ }
@@ -2,12 +2,13 @@
2
2
  * External dependencies
3
3
  */
4
4
  import { render, screen } from '@testing-library/react';
5
+ import userEvent from '@testing-library/user-event';
5
6
 
6
7
  /**
7
8
  * Internal dependencies
8
9
  */
9
10
  import Disabled from '../';
10
- import userEvent from '@testing-library/user-event';
11
+ import styles from '../style.module.scss';
11
12
 
12
13
  describe( 'Disabled', () => {
13
14
  const Form = () => (
@@ -24,9 +25,10 @@ describe( 'Disabled', () => {
24
25
  </Disabled>
25
26
  );
26
27
 
27
- expect( screen.getByTestId( 'disabled-wrapper' ) ).toHaveAttribute(
28
- 'inert'
29
- );
28
+ const wrapper = screen.getByTestId( 'disabled-wrapper' );
29
+ expect( wrapper ).toHaveAttribute( 'inert' );
30
+ expect( wrapper ).toHaveClass( 'components-disabled' );
31
+ expect( wrapper ).toHaveClass( styles.disabled );
30
32
  } );
31
33
 
32
34
  it( 'should cleanly un-disable via reconciliation', () => {
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`props should render active 1`] = `
4
4
  .emotion-0 {
@@ -1,16 +1,9 @@
1
+ @use "@wordpress/base-styles/mixins";
2
+
1
3
  .components-external-link {
2
4
  color: var(--wpds-color-foreground-interactive-brand);
3
5
  text-decoration: none;
4
6
 
5
- // Match the `outset-ring--focus` utility used by `Link` in `@wordpress/ui`.
6
- @media not ( prefers-reduced-motion ) {
7
- transition: outline 0.1s ease-out;
8
- }
9
- // Outline width must be kept at 0 even with a transparent color,
10
- // or else the outline will be visible in forced-colors mode.
11
- outline: 0 solid transparent;
12
- outline-offset: 1px;
13
-
14
7
  &:visited {
15
8
  color: var(--wpds-color-foreground-interactive-brand);
16
9
  }
@@ -21,12 +14,13 @@
21
14
  }
22
15
 
23
16
  &:focus {
24
- outline:
25
- var(--wpds-border-width-focus) solid
26
- var(--wpds-color-stroke-focus);
27
17
  // Override style from wp-admin common.css.
28
18
  box-shadow: none;
29
19
  border-radius: 0;
20
+
21
+ &:not(:active) {
22
+ @include mixins.outset-ring__focus();
23
+ }
30
24
  }
31
25
  }
32
26
 
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`props should render correctly 1`] = `
4
4
  <div
@@ -1,4 +1,9 @@
1
- export type FontSizePickerProps = {
1
+ import type { ToggleGroupControlProps } from '../toggle-group-control/types';
2
+
3
+ export type FontSizePickerProps = Pick<
4
+ ToggleGroupControlProps,
5
+ '__next40pxDefaultSize' | 'size'
6
+ > & {
2
7
  /**
3
8
  * If `true`, it will not be possible to choose a custom fontSize. The user
4
9
  * will be forced to pick one of the pre-defined sizes passed in fontSizes.
@@ -74,20 +79,6 @@ export type FontSizePickerProps = {
74
79
  * @ignore
75
80
  */
76
81
  __nextHasNoMarginBottom?: boolean;
77
- /**
78
- * Start opting into the larger default height that will become the default size in a future version.
79
- *
80
- * @deprecated Default behavior since WordPress 7.1. Prop can be safely removed.
81
- * @ignore
82
- */
83
- __next40pxDefaultSize?: boolean;
84
- /**
85
- * Size of the control.
86
- *
87
- * @deprecated This prop no longer has any effect.
88
- * @ignore
89
- */
90
- size?: 'default' | '__unstable-large';
91
82
  };
92
83
 
93
84
  export type FontSize = {
@@ -1,4 +1,4 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
1
+ // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
2
2
 
3
3
  exports[`FormToggle basic rendering should render a span element with an unchecked checkbox 1`] = `
4
4
  <div>
@@ -25,10 +25,10 @@ import deprecated from '@wordpress/deprecated';
25
25
  */
26
26
  import Token from './token';
27
27
  import TokenInput from './token-input';
28
- import { TokensAndInputWrapperFlex } from './styles';
29
28
  import SuggestionsList from './suggestions-list';
30
29
  import type { FormTokenFieldProps, TokenItem } from './types';
31
- import { FlexItem } from '../flex';
30
+ import { Flex, FlexItem } from '../flex';
31
+ import styles from './style.module.scss';
32
32
  import {
33
33
  StyledHelp,
34
34
  StyledLabel,
@@ -826,14 +826,15 @@ export function FormTokenField( props: FormTokenFieldProps ) {
826
826
  onMouseDown={ onContainerTouched }
827
827
  onTouchStart={ onContainerTouched }
828
828
  >
829
- <TokensAndInputWrapperFlex
829
+ <Flex
830
+ className={ styles[ 'tokens-and-input' ] }
830
831
  justify="flex-start"
831
832
  align="center"
832
833
  gap={ 1 }
833
834
  wrap
834
835
  >
835
836
  { renderTokensAndInput() }
836
- </TokensAndInputWrapperFlex>
837
+ </Flex>
837
838
  { isExpanded && (
838
839
  <SuggestionsList
839
840
  instanceId={ instanceId }
@@ -0,0 +1,6 @@
1
+ @use "@wordpress/base-styles/mixins" as mixins;
2
+
3
+ .tokens-and-input {
4
+ padding: 7px;
5
+ @include mixins.reset;
6
+ }
@@ -5,7 +5,7 @@
5
5
  @use "../utils/theme-variables" as *;
6
6
 
7
7
  .components-form-token-field__input-container {
8
- @include input-control($components-color-accent);
8
+ @include input-control;
9
9
  width: 100%;
10
10
  padding: 0;
11
11
  cursor: text;
@@ -17,7 +17,7 @@
17
17
  }
18
18
 
19
19
  &.is-active {
20
- @include input-style__focus($components-color-accent);
20
+ @include input-style__focus;
21
21
  }
22
22
 
23
23
  // Token input