@wordpress/components 25.7.0 → 25.8.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 (630) hide show
  1. package/CHANGELOG.md +66 -1
  2. package/build/animation/index.js +6 -0
  3. package/build/animation/index.js.map +1 -1
  4. package/build/border-control/border-control-dropdown/component.js +1 -1
  5. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  6. package/build/border-control/styles.js +20 -20
  7. package/build/border-control/styles.js.map +1 -1
  8. package/build/box-control/unit-control.js +1 -1
  9. package/build/box-control/unit-control.js.map +1 -1
  10. package/build/button/index.js +9 -1
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/types.js.map +1 -1
  13. package/build/circular-option-picker/circular-option-picker-actions.js +53 -0
  14. package/build/circular-option-picker/circular-option-picker-actions.js.map +1 -0
  15. package/build/circular-option-picker/circular-option-picker-context.js +14 -0
  16. package/build/circular-option-picker/circular-option-picker-context.js.map +1 -0
  17. package/build/circular-option-picker/circular-option-picker-option-group.js +26 -0
  18. package/build/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
  19. package/build/circular-option-picker/circular-option-picker-option.js +122 -0
  20. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -0
  21. package/build/circular-option-picker/circular-option-picker.js +172 -0
  22. package/build/circular-option-picker/circular-option-picker.js.map +1 -0
  23. package/build/circular-option-picker/index.js +29 -137
  24. package/build/circular-option-picker/index.js.map +1 -1
  25. package/build/circular-option-picker/types.js.map +1 -1
  26. package/build/color-palette/index.js +58 -19
  27. package/build/color-palette/index.js.map +1 -1
  28. package/build/color-palette/types.js.map +1 -1
  29. package/build/combobox-control/index.js +0 -3
  30. package/build/combobox-control/index.js.map +1 -1
  31. package/build/composite/index.js.map +1 -1
  32. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  33. package/build/date-time/time/index.js +6 -1
  34. package/build/date-time/time/index.js.map +1 -1
  35. package/build/date-time/time/timezone.js +1 -1
  36. package/build/date-time/time/timezone.js.map +1 -1
  37. package/build/dropdown/index.js +11 -23
  38. package/build/dropdown/index.js.map +1 -1
  39. package/build/dropdown/types.js.map +1 -1
  40. package/build/dropdown-menu/index.js +7 -1
  41. package/build/dropdown-menu/index.js.map +1 -1
  42. package/build/dropdown-menu/types.js.map +1 -1
  43. package/build/dropdown-menu-v2/styles.js +16 -16
  44. package/build/dropdown-menu-v2/styles.js.map +1 -1
  45. package/build/duotone-picker/color-list-picker/index.js +18 -3
  46. package/build/duotone-picker/color-list-picker/index.js.map +1 -1
  47. package/build/duotone-picker/duotone-picker.js +33 -1
  48. package/build/duotone-picker/duotone-picker.js.map +1 -1
  49. package/build/duotone-picker/types.js.map +1 -1
  50. package/build/focusable-iframe/index.js +0 -4
  51. package/build/focusable-iframe/index.js.map +1 -1
  52. package/build/focusable-iframe/types.js +6 -0
  53. package/build/focusable-iframe/types.js.map +1 -0
  54. package/build/form-token-field/index.js +6 -2
  55. package/build/form-token-field/index.js.map +1 -1
  56. package/build/form-token-field/types.js.map +1 -1
  57. package/build/gradient-picker/index.js +57 -15
  58. package/build/gradient-picker/index.js.map +1 -1
  59. package/build/gradient-picker/types.js.map +1 -1
  60. package/build/higher-order/navigate-regions/index.js.map +1 -1
  61. package/build/higher-order/with-focus-outside/index.js +1 -2
  62. package/build/higher-order/with-focus-outside/index.js.map +1 -1
  63. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  64. package/build/index.js +6 -0
  65. package/build/index.js.map +1 -1
  66. package/build/input-control/styles/input-control-styles.js +22 -22
  67. package/build/input-control/styles/input-control-styles.js.map +1 -1
  68. package/build/mobile/bottom-sheet/index.native.js +1 -0
  69. package/build/mobile/bottom-sheet/index.native.js.map +1 -1
  70. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  71. package/build/modal/index.js +12 -3
  72. package/build/modal/index.js.map +1 -1
  73. package/build/modal/types.js.map +1 -1
  74. package/build/navigation/use-navigation-tree-nodes.js.map +1 -1
  75. package/build/notice/index.js +19 -7
  76. package/build/notice/index.js.map +1 -1
  77. package/build/palette-edit/styles.js +10 -10
  78. package/build/palette-edit/styles.js.map +1 -1
  79. package/build/placeholder/index.js +10 -4
  80. package/build/placeholder/index.js.map +1 -1
  81. package/build/popover/index.js +37 -83
  82. package/build/popover/index.js.map +1 -1
  83. package/build/popover/types.js.map +1 -1
  84. package/build/popover/utils.js +9 -41
  85. package/build/popover/utils.js.map +1 -1
  86. package/build/search-control/index.js +12 -3
  87. package/build/search-control/index.js.map +1 -1
  88. package/build/search-control/types.js.map +1 -1
  89. package/build/text/styles.js +7 -7
  90. package/build/text/styles.js.map +1 -1
  91. package/build/toggle-group-control/toggle-group-control/as-button-group.js +30 -45
  92. package/build/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
  93. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +40 -41
  94. package/build/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  95. package/build/toggle-group-control/toggle-group-control/component.js +10 -5
  96. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  97. package/build/toggle-group-control/toggle-group-control/styles.js +9 -16
  98. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  99. package/build/toggle-group-control/toggle-group-control/utils.js +44 -0
  100. package/build/toggle-group-control/toggle-group-control/utils.js.map +1 -0
  101. package/build/toggle-group-control/toggle-group-control-option-base/component.js +36 -17
  102. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  103. package/build/toggle-group-control/toggle-group-control-option-base/styles.js +10 -8
  104. package/build/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  105. package/build/toggle-group-control/types.js.map +1 -1
  106. package/build/toolbar/toolbar/index.js +7 -1
  107. package/build/toolbar/toolbar/index.js.map +1 -1
  108. package/build/toolbar/toolbar-dropdown-menu/index.js +1 -3
  109. package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
  110. package/build/toolbar/toolbar-group/index.js +16 -12
  111. package/build/toolbar/toolbar-group/index.js.map +1 -1
  112. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
  113. package/build/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
  114. package/build/toolbar/toolbar-group/toolbar-group-container.js +3 -1
  115. package/build/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
  116. package/build/toolbar/toolbar-group/types.js +6 -0
  117. package/build/toolbar/toolbar-group/types.js.map +1 -0
  118. package/build/toolbar/toolbar-item/index.js +1 -1
  119. package/build/toolbar/toolbar-item/index.js.map +1 -1
  120. package/build/tooltip/index.js +51 -225
  121. package/build/tooltip/index.js.map +1 -1
  122. package/build/tooltip/types.js +6 -0
  123. package/build/tooltip/types.js.map +1 -0
  124. package/build/ui/context/context-connect.js.map +1 -1
  125. package/build/ui/context/wordpress-component.js.map +1 -1
  126. package/build/unit-control/index.js.map +1 -1
  127. package/build/unit-control/styles/unit-control-styles.js +7 -7
  128. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  129. package/build/utils/colors-values.js +1 -1
  130. package/build/utils/colors-values.js.map +1 -1
  131. package/build/utils/use-deprecated-props.js.map +1 -1
  132. package/build-module/animation/index.js +1 -1
  133. package/build-module/animation/index.js.map +1 -1
  134. package/build-module/border-control/border-control-dropdown/component.js +1 -1
  135. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  136. package/build-module/border-control/styles.js +20 -20
  137. package/build-module/border-control/styles.js.map +1 -1
  138. package/build-module/box-control/unit-control.js +1 -1
  139. package/build-module/box-control/unit-control.js.map +1 -1
  140. package/build-module/button/index.js +9 -1
  141. package/build-module/button/index.js.map +1 -1
  142. package/build-module/button/types.js.map +1 -1
  143. package/build-module/circular-option-picker/circular-option-picker-actions.js +44 -0
  144. package/build-module/circular-option-picker/circular-option-picker-actions.js.map +1 -0
  145. package/build-module/circular-option-picker/circular-option-picker-context.js +11 -0
  146. package/build-module/circular-option-picker/circular-option-picker-context.js.map +1 -0
  147. package/build-module/circular-option-picker/circular-option-picker-option-group.js +23 -0
  148. package/build-module/circular-option-picker/circular-option-picker-option-group.js.map +1 -0
  149. package/build-module/circular-option-picker/circular-option-picker-option.js +114 -0
  150. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -0
  151. package/build-module/circular-option-picker/circular-option-picker.js +165 -0
  152. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -0
  153. package/build-module/circular-option-picker/index.js +4 -132
  154. package/build-module/circular-option-picker/index.js.map +1 -1
  155. package/build-module/circular-option-picker/types.js.map +1 -1
  156. package/build-module/color-palette/index.js +58 -19
  157. package/build-module/color-palette/index.js.map +1 -1
  158. package/build-module/color-palette/types.js.map +1 -1
  159. package/build-module/combobox-control/index.js +0 -3
  160. package/build-module/combobox-control/index.js.map +1 -1
  161. package/build-module/composite/index.js +2 -0
  162. package/build-module/composite/index.js.map +1 -1
  163. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  164. package/build-module/date-time/time/index.js +6 -1
  165. package/build-module/date-time/time/index.js.map +1 -1
  166. package/build-module/date-time/time/timezone.js +1 -1
  167. package/build-module/date-time/time/timezone.js.map +1 -1
  168. package/build-module/dropdown/index.js +12 -24
  169. package/build-module/dropdown/index.js.map +1 -1
  170. package/build-module/dropdown/types.js.map +1 -1
  171. package/build-module/dropdown-menu/index.js +7 -1
  172. package/build-module/dropdown-menu/index.js.map +1 -1
  173. package/build-module/dropdown-menu/types.js.map +1 -1
  174. package/build-module/dropdown-menu-v2/styles.js +16 -16
  175. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  176. package/build-module/duotone-picker/color-list-picker/index.js +18 -3
  177. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -1
  178. package/build-module/duotone-picker/duotone-picker.js +33 -1
  179. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  180. package/build-module/duotone-picker/types.js.map +1 -1
  181. package/build-module/focusable-iframe/index.js +2 -3
  182. package/build-module/focusable-iframe/index.js.map +1 -1
  183. package/build-module/focusable-iframe/types.js +2 -0
  184. package/build-module/focusable-iframe/types.js.map +1 -0
  185. package/build-module/form-token-field/index.js +6 -2
  186. package/build-module/form-token-field/index.js.map +1 -1
  187. package/build-module/form-token-field/types.js.map +1 -1
  188. package/build-module/gradient-picker/index.js +57 -15
  189. package/build-module/gradient-picker/index.js.map +1 -1
  190. package/build-module/gradient-picker/types.js.map +1 -1
  191. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  192. package/build-module/higher-order/with-focus-outside/index.js +1 -3
  193. package/build-module/higher-order/with-focus-outside/index.js.map +1 -1
  194. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  195. package/build-module/index.js +1 -1
  196. package/build-module/index.js.map +1 -1
  197. package/build-module/input-control/styles/input-control-styles.js +23 -23
  198. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  199. package/build-module/mobile/bottom-sheet/index.native.js +1 -0
  200. package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
  201. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  202. package/build-module/modal/index.js +12 -3
  203. package/build-module/modal/index.js.map +1 -1
  204. package/build-module/modal/types.js.map +1 -1
  205. package/build-module/navigation/use-navigation-tree-nodes.js.map +1 -1
  206. package/build-module/notice/index.js +19 -7
  207. package/build-module/notice/index.js.map +1 -1
  208. package/build-module/palette-edit/styles.js +10 -10
  209. package/build-module/palette-edit/styles.js.map +1 -1
  210. package/build-module/placeholder/index.js +11 -4
  211. package/build-module/placeholder/index.js.map +1 -1
  212. package/build-module/popover/index.js +38 -84
  213. package/build-module/popover/index.js.map +1 -1
  214. package/build-module/popover/types.js.map +1 -1
  215. package/build-module/popover/utils.js +8 -39
  216. package/build-module/popover/utils.js.map +1 -1
  217. package/build-module/search-control/index.js +12 -3
  218. package/build-module/search-control/index.js.map +1 -1
  219. package/build-module/search-control/types.js.map +1 -1
  220. package/build-module/text/styles.js +7 -7
  221. package/build-module/text/styles.js.map +1 -1
  222. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js +32 -47
  223. package/build-module/toggle-group-control/toggle-group-control/as-button-group.js.map +1 -1
  224. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +41 -42
  225. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  226. package/build-module/toggle-group-control/toggle-group-control/component.js +10 -6
  227. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  228. package/build-module/toggle-group-control/toggle-group-control/styles.js +8 -14
  229. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  230. package/build-module/toggle-group-control/toggle-group-control/utils.js +42 -0
  231. package/build-module/toggle-group-control/toggle-group-control/utils.js.map +1 -0
  232. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +35 -16
  233. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  234. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js +8 -7
  235. package/build-module/toggle-group-control/toggle-group-control-option-base/styles.js.map +1 -1
  236. package/build-module/toggle-group-control/types.js.map +1 -1
  237. package/build-module/toolbar/toolbar/index.js +7 -1
  238. package/build-module/toolbar/toolbar/index.js.map +1 -1
  239. package/build-module/toolbar/toolbar-dropdown-menu/index.js +5 -3
  240. package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
  241. package/build-module/toolbar/toolbar-group/index.js +15 -12
  242. package/build-module/toolbar/toolbar-group/index.js.map +1 -1
  243. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js +0 -2
  244. package/build-module/toolbar/toolbar-group/toolbar-group-collapsed.js.map +1 -1
  245. package/build-module/toolbar/toolbar-group/toolbar-group-container.js +3 -1
  246. package/build-module/toolbar/toolbar-group/toolbar-group-container.js.map +1 -1
  247. package/build-module/toolbar/toolbar-group/types.js +2 -0
  248. package/build-module/toolbar/toolbar-group/types.js.map +1 -0
  249. package/build-module/toolbar/toolbar-item/index.js +1 -1
  250. package/build-module/toolbar/toolbar-item/index.js.map +1 -1
  251. package/build-module/tooltip/index.js +53 -224
  252. package/build-module/tooltip/index.js.map +1 -1
  253. package/build-module/tooltip/types.js +2 -0
  254. package/build-module/tooltip/types.js.map +1 -0
  255. package/build-module/ui/context/context-connect.js.map +1 -1
  256. package/build-module/ui/context/wordpress-component.js.map +1 -1
  257. package/build-module/unit-control/index.js.map +1 -1
  258. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  259. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  260. package/build-module/utils/colors-values.js +1 -1
  261. package/build-module/utils/colors-values.js.map +1 -1
  262. package/build-module/utils/use-deprecated-props.js.map +1 -1
  263. package/build-style/style-rtl.css +35 -73
  264. package/build-style/style.css +35 -73
  265. package/build-types/animation/index.d.ts +1 -1
  266. package/build-types/animation/index.d.ts.map +1 -1
  267. package/build-types/base-control/hooks.d.ts +1 -1
  268. package/build-types/border-box-control/border-box-control/component.d.ts +1 -1
  269. package/build-types/border-box-control/border-box-control/hook.d.ts +46 -46
  270. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +51 -51
  271. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +1 -1
  272. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +46 -46
  273. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +46 -46
  274. package/build-types/border-box-control/stories/index.story.d.ts +2 -2
  275. package/build-types/border-control/border-control/hook.d.ts +45 -45
  276. package/build-types/border-control/border-control-dropdown/hook.d.ts +45 -45
  277. package/build-types/border-control/border-control-style-picker/hook.d.ts +45 -45
  278. package/build-types/border-control/stories/index.story.d.ts +6 -6
  279. package/build-types/box-control/styles/box-control-styles.d.ts +1 -1
  280. package/build-types/button/deprecated.d.ts +16 -22
  281. package/build-types/button/deprecated.d.ts.map +1 -1
  282. package/build-types/button/index.d.ts.map +1 -1
  283. package/build-types/button/types.d.ts +0 -4
  284. package/build-types/button/types.d.ts.map +1 -1
  285. package/build-types/card/card/hook.d.ts +46 -46
  286. package/build-types/card/card-body/hook.d.ts +46 -46
  287. package/build-types/card/card-divider/hook.d.ts +47 -47
  288. package/build-types/card/card-footer/hook.d.ts +46 -46
  289. package/build-types/card/card-header/hook.d.ts +46 -46
  290. package/build-types/card/card-media/hook.d.ts +46 -46
  291. package/build-types/card/stories/index.story.d.ts +2 -2
  292. package/build-types/circular-option-picker/circular-option-picker-actions.d.ts +7 -0
  293. package/build-types/circular-option-picker/circular-option-picker-actions.d.ts.map +1 -0
  294. package/build-types/circular-option-picker/circular-option-picker-context.d.ts +7 -0
  295. package/build-types/circular-option-picker/circular-option-picker-context.d.ts.map +1 -0
  296. package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts +7 -0
  297. package/build-types/circular-option-picker/circular-option-picker-option-group.d.ts.map +1 -0
  298. package/build-types/circular-option-picker/circular-option-picker-option.d.ts +4 -0
  299. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -0
  300. package/build-types/circular-option-picker/circular-option-picker.d.ts +11 -0
  301. package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -0
  302. package/build-types/circular-option-picker/index.d.ts +5 -56
  303. package/build-types/circular-option-picker/index.d.ts.map +1 -1
  304. package/build-types/circular-option-picker/stories/index.story.d.ts +3 -1
  305. package/build-types/circular-option-picker/stories/index.story.d.ts.map +1 -1
  306. package/build-types/circular-option-picker/test/index.d.ts +2 -0
  307. package/build-types/circular-option-picker/test/index.d.ts.map +1 -0
  308. package/build-types/circular-option-picker/types.d.ts +53 -1
  309. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  310. package/build-types/color-palette/index.d.ts +3 -19
  311. package/build-types/color-palette/index.d.ts.map +1 -1
  312. package/build-types/color-palette/stories/index.story.d.ts +3 -36
  313. package/build-types/color-palette/stories/index.story.d.ts.map +1 -1
  314. package/build-types/color-palette/styles.d.ts +1 -1
  315. package/build-types/color-palette/types.d.ts +31 -1
  316. package/build-types/color-palette/types.d.ts.map +1 -1
  317. package/build-types/color-picker/component.d.ts +1 -1
  318. package/build-types/color-picker/stories/index.story.d.ts +1 -1
  319. package/build-types/color-picker/styles.d.ts +6 -6
  320. package/build-types/combobox-control/index.d.ts.map +1 -1
  321. package/build-types/combobox-control/stories/index.story.d.ts +2 -2
  322. package/build-types/composite/index.d.ts +14 -1
  323. package/build-types/composite/index.d.ts.map +1 -1
  324. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +2 -2
  325. package/build-types/date-time/date/styles.d.ts +3 -3
  326. package/build-types/date-time/date-time/styles.d.ts +2 -2
  327. package/build-types/date-time/time/index.d.ts.map +1 -1
  328. package/build-types/date-time/time/styles.d.ts +12 -12
  329. package/build-types/dropdown/index.d.ts.map +1 -1
  330. package/build-types/dropdown/stories/index.story.d.ts.map +1 -1
  331. package/build-types/dropdown/types.d.ts +12 -4
  332. package/build-types/dropdown/types.d.ts.map +1 -1
  333. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  334. package/build-types/dropdown-menu/stories/index.story.d.ts.map +1 -1
  335. package/build-types/dropdown-menu/types.d.ts +22 -5
  336. package/build-types/dropdown-menu/types.d.ts.map +1 -1
  337. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -1
  338. package/build-types/duotone-picker/duotone-picker.d.ts +1 -1
  339. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -1
  340. package/build-types/duotone-picker/types.d.ts +31 -1
  341. package/build-types/duotone-picker/types.d.ts.map +1 -1
  342. package/build-types/elevation/hook.d.ts +46 -46
  343. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  344. package/build-types/flex/flex/hook.d.ts +46 -46
  345. package/build-types/flex/flex-block/hook.d.ts +46 -46
  346. package/build-types/flex/flex-item/hook.d.ts +46 -46
  347. package/build-types/focal-point-picker/stories/index.story.d.ts +8 -8
  348. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +1 -1
  349. package/build-types/focusable-iframe/index.d.ts +4 -5
  350. package/build-types/focusable-iframe/index.d.ts.map +1 -1
  351. package/build-types/focusable-iframe/types.d.ts +8 -0
  352. package/build-types/focusable-iframe/types.d.ts.map +1 -0
  353. package/build-types/font-size-picker/styles.d.ts +2 -2
  354. package/build-types/form-token-field/index.d.ts.map +1 -1
  355. package/build-types/form-token-field/types.d.ts +6 -0
  356. package/build-types/form-token-field/types.d.ts.map +1 -1
  357. package/build-types/gradient-picker/index.d.ts +1 -1
  358. package/build-types/gradient-picker/index.d.ts.map +1 -1
  359. package/build-types/gradient-picker/stories/index.story.d.ts +3 -36
  360. package/build-types/gradient-picker/stories/index.story.d.ts.map +1 -1
  361. package/build-types/gradient-picker/types.d.ts +31 -1
  362. package/build-types/gradient-picker/types.d.ts.map +1 -1
  363. package/build-types/grid/hook.d.ts +46 -46
  364. package/build-types/h-stack/component.d.ts +1 -1
  365. package/build-types/h-stack/hook.d.ts +46 -46
  366. package/build-types/heading/hook.d.ts +45 -45
  367. package/build-types/higher-order/navigate-regions/index.d.ts.map +1 -1
  368. package/build-types/higher-order/with-focus-outside/index.d.ts +1 -0
  369. package/build-types/higher-order/with-focus-outside/index.d.ts.map +1 -1
  370. package/build-types/higher-order/with-focus-outside/test/index.d.ts +2 -0
  371. package/build-types/higher-order/with-focus-outside/test/index.d.ts.map +1 -0
  372. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  373. package/build-types/index.d.ts +1 -1
  374. package/build-types/index.d.ts.map +1 -1
  375. package/build-types/isolated-event-container/test/index.d.ts +2 -0
  376. package/build-types/isolated-event-container/test/index.d.ts.map +1 -0
  377. package/build-types/item-group/item/hook.d.ts +46 -46
  378. package/build-types/item-group/item-group/hook.d.ts +46 -46
  379. package/build-types/menu-item/index.d.ts +1 -1
  380. package/build-types/menu-item/stories/index.story.d.ts +4 -4
  381. package/build-types/modal/index.d.ts.map +1 -1
  382. package/build-types/modal/stories/index.story.d.ts.map +1 -1
  383. package/build-types/modal/types.d.ts +1 -1
  384. package/build-types/modal/types.d.ts.map +1 -1
  385. package/build-types/navigable-container/menu.d.ts +1 -1
  386. package/build-types/navigation/back-button/index.d.ts +1 -1
  387. package/build-types/navigation/styles/navigation-styles.d.ts +5 -3
  388. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
  389. package/build-types/navigator/navigator-back-button/component.d.ts +2 -3
  390. package/build-types/navigator/navigator-back-button/component.d.ts.map +1 -1
  391. package/build-types/navigator/navigator-back-button/hook.d.ts +53 -54
  392. package/build-types/navigator/navigator-back-button/hook.d.ts.map +1 -1
  393. package/build-types/navigator/navigator-button/component.d.ts +2 -3
  394. package/build-types/navigator/navigator-button/component.d.ts.map +1 -1
  395. package/build-types/navigator/navigator-button/hook.d.ts +53 -54
  396. package/build-types/navigator/navigator-button/hook.d.ts.map +1 -1
  397. package/build-types/navigator/navigator-to-parent-button/component.d.ts +2 -3
  398. package/build-types/navigator/navigator-to-parent-button/component.d.ts.map +1 -1
  399. package/build-types/notice/index.d.ts.map +1 -1
  400. package/build-types/number-control/index.d.ts +3 -3
  401. package/build-types/number-control/stories/index.story.d.ts +3 -3
  402. package/build-types/palette-edit/styles.d.ts +4 -4
  403. package/build-types/palette-edit/styles.d.ts.map +1 -1
  404. package/build-types/placeholder/index.d.ts.map +1 -1
  405. package/build-types/popover/index.d.ts +1 -1
  406. package/build-types/popover/index.d.ts.map +1 -1
  407. package/build-types/popover/overlay-middlewares.d.ts +1 -1
  408. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  409. package/build-types/popover/types.d.ts +0 -4
  410. package/build-types/popover/types.d.ts.map +1 -1
  411. package/build-types/popover/utils.d.ts +2 -6
  412. package/build-types/popover/utils.d.ts.map +1 -1
  413. package/build-types/range-control/index.d.ts +1 -1
  414. package/build-types/range-control/styles/range-control-styles.d.ts +3 -3
  415. package/build-types/resizable-box/index.d.ts +1 -1
  416. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  417. package/build-types/resizable-box/resize-tooltip/label.d.ts +1 -1
  418. package/build-types/resizable-box/stories/index.story.d.ts +2 -2
  419. package/build-types/scrollable/hook.d.ts +46 -46
  420. package/build-types/search-control/index.d.ts +4 -2
  421. package/build-types/search-control/index.d.ts.map +1 -1
  422. package/build-types/search-control/stories/index.story.d.ts +8 -4
  423. package/build-types/search-control/stories/index.story.d.ts.map +1 -1
  424. package/build-types/search-control/types.d.ts +12 -0
  425. package/build-types/search-control/types.d.ts.map +1 -1
  426. package/build-types/spacer/hook.d.ts +46 -46
  427. package/build-types/spinner/index.d.ts +1 -1
  428. package/build-types/surface/hook.d.ts +46 -46
  429. package/build-types/text/hook.d.ts +46 -46
  430. package/build-types/text/styles.d.ts.map +1 -1
  431. package/build-types/text-control/index.d.ts +3 -3
  432. package/build-types/toggle-control/stories/index.story.d.ts +2 -2
  433. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -4
  434. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts.map +1 -1
  435. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -4
  436. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  437. package/build-types/toggle-group-control/toggle-group-control/component.d.ts +2 -2
  438. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  439. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -5
  440. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  441. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts +18 -0
  442. package/build-types/toggle-group-control/toggle-group-control/utils.d.ts.map +1 -0
  443. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  444. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts +5 -1
  445. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  446. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts +1 -0
  447. package/build-types/toggle-group-control/toggle-group-control-option-base/styles.d.ts.map +1 -1
  448. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  449. package/build-types/toggle-group-control/types.d.ts +13 -24
  450. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  451. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  452. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  453. package/build-types/toolbar/toolbar-button/index.d.ts +16 -22
  454. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  455. package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts +3 -1
  456. package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts.map +1 -1
  457. package/build-types/toolbar/toolbar-group/index.d.ts +10 -14
  458. package/build-types/toolbar/toolbar-group/index.d.ts.map +1 -1
  459. package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts +3 -5
  460. package/build-types/toolbar/toolbar-group/toolbar-group-collapsed.d.ts.map +1 -1
  461. package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts +7 -5
  462. package/build-types/toolbar/toolbar-group/toolbar-group-container.d.ts.map +1 -1
  463. package/build-types/toolbar/toolbar-group/types.d.ts +77 -0
  464. package/build-types/toolbar/toolbar-group/types.d.ts.map +1 -0
  465. package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
  466. package/build-types/tools-panel/tools-panel/hook.d.ts +46 -46
  467. package/build-types/tools-panel/tools-panel-header/hook.d.ts +46 -46
  468. package/build-types/tools-panel/tools-panel-item/hook.d.ts +46 -46
  469. package/build-types/tooltip/index.d.ts +8 -5
  470. package/build-types/tooltip/index.d.ts.map +1 -1
  471. package/build-types/tooltip/stories/index.story.d.ts +13 -0
  472. package/build-types/tooltip/stories/index.story.d.ts.map +1 -0
  473. package/build-types/tooltip/test/index.d.ts +2 -0
  474. package/build-types/tooltip/test/index.d.ts.map +1 -0
  475. package/build-types/tooltip/test/utils/index.d.ts +11 -0
  476. package/build-types/tooltip/test/utils/index.d.ts.map +1 -0
  477. package/build-types/tooltip/types.d.ts +61 -0
  478. package/build-types/tooltip/types.d.ts.map +1 -0
  479. package/build-types/truncate/hook.d.ts +46 -46
  480. package/build-types/ui/tooltip/content.d.ts +1 -1
  481. package/build-types/unit-control/index.d.ts +1 -1
  482. package/build-types/unit-control/index.d.ts.map +1 -1
  483. package/build-types/unit-control/styles/unit-control-styles.d.ts +3 -3
  484. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  485. package/build-types/unit-control/unit-select-control.d.ts +1 -1
  486. package/build-types/utils/use-deprecated-props.d.ts +1 -1
  487. package/build-types/v-stack/component.d.ts +1 -1
  488. package/build-types/v-stack/hook.d.ts +46 -46
  489. package/build-types/v-stack/stories/index.story.d.ts +2 -2
  490. package/package.json +20 -20
  491. package/src/animation/index.tsx +1 -0
  492. package/src/border-control/border-control/README.md +2 -2
  493. package/src/border-control/border-control-dropdown/component.tsx +1 -1
  494. package/src/border-control/styles.ts +7 -7
  495. package/src/border-control/test/index.js +79 -69
  496. package/src/box-control/unit-control.tsx +1 -1
  497. package/src/button/README.md +0 -6
  498. package/src/button/index.tsx +9 -1
  499. package/src/button/test/index.tsx +19 -0
  500. package/src/button/types.ts +0 -4
  501. package/src/circular-option-picker/README.md +14 -0
  502. package/src/circular-option-picker/circular-option-picker-actions.tsx +60 -0
  503. package/src/circular-option-picker/circular-option-picker-context.tsx +12 -0
  504. package/src/circular-option-picker/circular-option-picker-option-group.tsx +34 -0
  505. package/src/circular-option-picker/circular-option-picker-option.tsx +139 -0
  506. package/src/circular-option-picker/circular-option-picker.tsx +202 -0
  507. package/src/circular-option-picker/index.tsx +7 -174
  508. package/src/circular-option-picker/stories/index.story.tsx +34 -9
  509. package/src/circular-option-picker/style.scss +11 -7
  510. package/src/circular-option-picker/test/index.tsx +133 -0
  511. package/src/circular-option-picker/types.ts +64 -1
  512. package/src/color-palette/README.md +14 -0
  513. package/src/color-palette/index.tsx +69 -28
  514. package/src/color-palette/stories/index.story.tsx +16 -2
  515. package/src/color-palette/test/index.tsx +32 -30
  516. package/src/color-palette/types.ts +34 -1
  517. package/src/combobox-control/index.tsx +7 -5
  518. package/src/composite/{index.js → index.ts} +3 -0
  519. package/src/confirm-dialog/stories/index.story.js +13 -14
  520. package/src/confirm-dialog/test/index.js +10 -18
  521. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +1 -1
  522. package/src/custom-gradient-picker/gradient-bar/test/utils.ts +5 -5
  523. package/src/date-time/time/index.tsx +8 -1
  524. package/src/date-time/time/timezone.tsx +1 -1
  525. package/src/dropdown/README.md +13 -3
  526. package/src/dropdown/index.tsx +16 -34
  527. package/src/dropdown/stories/index.story.tsx +10 -7
  528. package/src/dropdown/types.ts +12 -4
  529. package/src/dropdown-menu/README.md +18 -0
  530. package/src/dropdown-menu/index.tsx +8 -1
  531. package/src/dropdown-menu/stories/index.story.tsx +5 -0
  532. package/src/dropdown-menu/types.ts +23 -6
  533. package/src/dropdown-menu-v2/styles.ts +1 -1
  534. package/src/duotone-picker/README.md +14 -0
  535. package/src/duotone-picker/color-list-picker/index.tsx +28 -12
  536. package/src/duotone-picker/duotone-picker.tsx +33 -0
  537. package/src/duotone-picker/types.ts +34 -1
  538. package/src/focusable-iframe/{index.js → index.tsx} +7 -4
  539. package/src/focusable-iframe/types.ts +9 -0
  540. package/src/form-token-field/README.md +1 -0
  541. package/src/form-token-field/index.tsx +5 -1
  542. package/src/form-token-field/style.scss +5 -9
  543. package/src/form-token-field/test/index.tsx +36 -1
  544. package/src/form-token-field/types.ts +7 -1
  545. package/src/gradient-picker/README.md +14 -0
  546. package/src/gradient-picker/index.tsx +60 -11
  547. package/src/gradient-picker/types.ts +34 -1
  548. package/src/higher-order/navigate-regions/index.tsx +5 -6
  549. package/src/higher-order/with-filters/test/index.tsx +36 -43
  550. package/src/higher-order/with-focus-outside/{index.js → index.tsx} +8 -5
  551. package/src/higher-order/with-focus-outside/test/{index.js → index.tsx} +13 -11
  552. package/src/higher-order/with-notices/test/index.tsx +1 -1
  553. package/src/higher-order/with-spoken-messages/index.tsx +7 -8
  554. package/src/index.ts +5 -1
  555. package/src/input-control/styles/input-control-styles.tsx +2 -2
  556. package/src/isolated-event-container/test/{index.js → index.tsx} +1 -1
  557. package/src/mobile/bottom-sheet/index.native.js +1 -0
  558. package/src/mobile/global-styles-context/index.native.js +7 -8
  559. package/src/modal/README.md +7 -1
  560. package/src/modal/index.tsx +27 -3
  561. package/src/modal/stories/index.story.tsx +2 -1
  562. package/src/modal/test/index.tsx +231 -0
  563. package/src/modal/types.ts +3 -1
  564. package/src/navigation/use-navigation-tree-nodes.tsx +1 -1
  565. package/src/notice/index.tsx +18 -6
  566. package/src/notice/style.scss +0 -1
  567. package/src/notice/test/__snapshots__/index.tsx.snap +9 -1
  568. package/src/palette-edit/styles.js +2 -1
  569. package/src/placeholder/index.tsx +16 -8
  570. package/src/placeholder/style.scss +2 -16
  571. package/src/placeholder/test/index.tsx +34 -15
  572. package/src/popover/index.tsx +47 -110
  573. package/src/popover/test/index.tsx +3 -3
  574. package/src/popover/types.ts +0 -5
  575. package/src/popover/utils.ts +19 -67
  576. package/src/search-control/README.md +7 -0
  577. package/src/search-control/index.tsx +10 -1
  578. package/src/search-control/style.scss +14 -7
  579. package/src/search-control/types.ts +12 -0
  580. package/src/tab-panel/test/index.tsx +5 -0
  581. package/src/text/styles.js +2 -1
  582. package/src/theme/README.md +5 -5
  583. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +567 -59
  584. package/src/toggle-group-control/test/index.tsx +110 -56
  585. package/src/toggle-group-control/toggle-group-control/README.md +0 -1
  586. package/src/toggle-group-control/toggle-group-control/as-button-group.tsx +39 -57
  587. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +52 -48
  588. package/src/toggle-group-control/toggle-group-control/component.tsx +12 -6
  589. package/src/toggle-group-control/toggle-group-control/styles.ts +2 -19
  590. package/src/toggle-group-control/toggle-group-control/utils.ts +50 -0
  591. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +70 -20
  592. package/src/toggle-group-control/toggle-group-control-option-base/styles.ts +17 -3
  593. package/src/toggle-group-control/types.ts +14 -32
  594. package/src/toolbar/stories/index.story.tsx +3 -5
  595. package/src/toolbar/test/toolbar-group.tsx +13 -7
  596. package/src/toolbar/toolbar/index.tsx +9 -1
  597. package/src/toolbar/toolbar-dropdown-menu/{index.js → index.tsx} +11 -4
  598. package/src/toolbar/toolbar-group/README.md +2 -2
  599. package/src/toolbar/toolbar-group/{index.js → index.tsx} +19 -14
  600. package/src/toolbar/toolbar-group/{toolbar-group-collapsed.js → toolbar-group-collapsed.tsx} +10 -4
  601. package/src/toolbar/toolbar-group/toolbar-group-container.tsx +16 -0
  602. package/src/toolbar/toolbar-group/types.ts +92 -0
  603. package/src/toolbar/toolbar-item/index.tsx +3 -1
  604. package/src/tooltip/README.md +31 -28
  605. package/src/tooltip/index.tsx +106 -0
  606. package/src/tooltip/stories/index.story.tsx +59 -0
  607. package/src/tooltip/style.scss +2 -27
  608. package/src/tooltip/test/index.tsx +335 -0
  609. package/src/tooltip/test/utils/index.tsx +20 -0
  610. package/src/tooltip/types.ts +61 -0
  611. package/src/ui/context/context-connect.ts +3 -3
  612. package/src/ui/context/wordpress-component.ts +4 -4
  613. package/src/unit-control/index.tsx +9 -4
  614. package/src/unit-control/styles/unit-control-styles.ts +3 -1
  615. package/src/unit-control/test/utils.ts +1 -1
  616. package/src/utils/colors-values.js +1 -1
  617. package/src/utils/use-deprecated-props.ts +1 -1
  618. package/tsconfig.tsbuildinfo +1 -1
  619. package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -78
  620. package/build/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
  621. package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js +0 -76
  622. package/build-module/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.js.map +0 -1
  623. package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts +0 -9
  624. package/build-types/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.d.ts.map +0 -1
  625. package/src/color-palette/test/__snapshots__/index.tsx.snap +0 -288
  626. package/src/toggle-group-control/toggle-group-control/toggle-group-control-backdrop.tsx +0 -84
  627. package/src/toolbar/toolbar-group/toolbar-group-container.js +0 -8
  628. package/src/tooltip/index.js +0 -293
  629. package/src/tooltip/stories/index.story.js +0 -85
  630. package/src/tooltip/test/index.js +0 -323
@@ -7,10 +7,10 @@ import styled from '@emotion/styled';
7
7
  /**
8
8
  * Internal dependencies
9
9
  */
10
- import { CONFIG, COLORS, reduceMotion } from '../../utils';
10
+ import { CONFIG, COLORS } from '../../utils';
11
11
  import type { ToggleGroupControlProps } from '../types';
12
12
 
13
- export const ToggleGroupControl = ( {
13
+ export const toggleGroupControl = ( {
14
14
  isBlock,
15
15
  isDeselectable,
16
16
  size,
@@ -24,8 +24,6 @@ export const ToggleGroupControl = ( {
24
24
  min-width: 0;
25
25
  padding: 2px;
26
26
  position: relative;
27
- transition: transform ${ CONFIG.transitionDurationFastest } linear;
28
- ${ reduceMotion( 'transition' ) }
29
27
 
30
28
  ${ toggleGroupControlSize( size ) }
31
29
  ${ ! isDeselectable && enclosingBorders( isBlock ) }
@@ -72,21 +70,6 @@ export const block = css`
72
70
  width: 100%;
73
71
  `;
74
72
 
75
- export const BackdropView = styled.div`
76
- background: ${ COLORS.gray[ 900 ] };
77
- border-radius: ${ CONFIG.controlBorderRadius };
78
- left: 0;
79
- position: absolute;
80
- top: 2px;
81
- bottom: 2px;
82
- transition: transform ${ CONFIG.transitionDurationFast } ease;
83
- ${ reduceMotion( 'transition' ) }
84
- z-index: 1;
85
- // Windows High Contrast mode will show this outline, but not the box-shadow.
86
- outline: 2px solid transparent;
87
- outline-offset: -3px;
88
- `;
89
-
90
73
  export const VisualLabelWrapper = styled.div`
91
74
  // Makes the inline label be the correct height, equivalent to setting line-height: 0
92
75
  display: flex;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import { usePrevious } from '@wordpress/compose';
5
+ import { useEffect, useRef } from '@wordpress/element';
6
+
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import type { ToggleGroupControlProps } from '../types';
11
+
12
+ type ValueProp = ToggleGroupControlProps[ 'value' ];
13
+
14
+ /**
15
+ * Used to determine, via an internal heuristics, whether an `undefined` value
16
+ * received for the `value` prop should be interpreted as the component being
17
+ * used in uncontrolled mode, or as an "empty" value for controlled mode.
18
+ *
19
+ * @param valueProp The received `value`
20
+ */
21
+ export function useComputeControlledOrUncontrolledValue(
22
+ valueProp: ValueProp
23
+ ): { value: ValueProp; defaultValue: ValueProp } {
24
+ const hasEverBeenUsedInControlledMode = useRef( false );
25
+ const previousValueProp = usePrevious( valueProp );
26
+
27
+ useEffect( () => {
28
+ if ( ! hasEverBeenUsedInControlledMode.current ) {
29
+ // Assume the component is being used in controlled mode if:
30
+ // - the `value` prop is not `undefined`
31
+ // - the `value` prop was not previously `undefined` and was given a new value
32
+ hasEverBeenUsedInControlledMode.current =
33
+ valueProp !== undefined &&
34
+ previousValueProp !== undefined &&
35
+ valueProp !== previousValueProp;
36
+ }
37
+ }, [ valueProp, previousValueProp ] );
38
+
39
+ let value, defaultValue;
40
+
41
+ if ( hasEverBeenUsedInControlledMode.current ) {
42
+ // When in controlled mode, use `''` instead of `undefined`
43
+ value = valueProp ?? '';
44
+ } else {
45
+ // When in uncontrolled mode, the `value` should be intended as the initial value
46
+ defaultValue = valueProp;
47
+ }
48
+
49
+ return { value, defaultValue };
50
+ }
@@ -3,12 +3,15 @@
3
3
  */
4
4
  import type { ForwardedRef } from 'react';
5
5
  // eslint-disable-next-line no-restricted-imports
6
- import { Radio } from 'reakit';
6
+ import { Radio } from '@ariakit/react/radio';
7
+ // eslint-disable-next-line no-restricted-imports
8
+ import { motion, useReducedMotion } from 'framer-motion';
7
9
 
8
10
  /**
9
11
  * WordPress dependencies
10
12
  */
11
13
  import { useInstanceId } from '@wordpress/compose';
14
+ import { useMemo } from '@wordpress/element';
12
15
 
13
16
  /**
14
17
  * Internal dependencies
@@ -26,10 +29,16 @@ import Tooltip from '../../tooltip';
26
29
 
27
30
  const { ButtonContentView, LabelView } = styles;
28
31
 
32
+ const REDUCED_MOTION_TRANSITION_CONFIG = {
33
+ duration: 0,
34
+ };
35
+
36
+ const LAYOUT_ID = 'toggle-group-backdrop-shared-layout-id';
37
+
29
38
  const WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {
30
39
  if ( showTooltip && text ) {
31
40
  return (
32
- <Tooltip text={ text } position="top center">
41
+ <Tooltip text={ text } placement="top">
33
42
  { children }
34
43
  </Tooltip>
35
44
  );
@@ -38,56 +47,78 @@ const WithToolTip = ( { showTooltip, text, children }: WithToolTipProps ) => {
38
47
  };
39
48
 
40
49
  function ToggleGroupControlOptionBase(
41
- props: WordPressComponentProps<
42
- ToggleGroupControlOptionBaseProps,
43
- 'button',
44
- false
50
+ props: Omit<
51
+ WordPressComponentProps<
52
+ ToggleGroupControlOptionBaseProps,
53
+ 'button',
54
+ false
55
+ >,
56
+ // the element's id is generated internally
57
+ 'id'
45
58
  >,
46
59
  forwardedRef: ForwardedRef< any >
47
60
  ) {
61
+ const shouldReduceMotion = useReducedMotion();
48
62
  const toggleGroupControlContext = useToggleGroupControlContext();
63
+
49
64
  const id = useInstanceId(
50
65
  ToggleGroupControlOptionBase,
51
66
  toggleGroupControlContext.baseId || 'toggle-group-control-option-base'
52
- ) as string;
67
+ );
68
+
53
69
  const buttonProps = useContextSystem(
54
70
  { ...props, id },
55
71
  'ToggleGroupControlOptionBase'
56
72
  );
73
+
57
74
  const {
58
75
  isBlock = false,
59
76
  isDeselectable = false,
60
77
  size = 'default',
61
- ...otherContextProps /* context props for Ariakit Radio */
62
78
  } = toggleGroupControlContext;
79
+
63
80
  const {
64
81
  className,
65
82
  isIcon = false,
66
83
  value,
67
84
  children,
68
85
  showTooltip = false,
86
+ onFocus: onFocusProp,
69
87
  ...otherButtonProps
70
88
  } = buttonProps;
71
89
 
72
- const isPressed = otherContextProps.state === value;
90
+ const isPressed = toggleGroupControlContext.value === value;
73
91
  const cx = useCx();
74
- const labelViewClasses = cx( isBlock && styles.labelBlock );
75
- const classes = cx(
76
- styles.buttonView( { isDeselectable, isIcon, isPressed, size } ),
77
- className
92
+ const labelViewClasses = useMemo(
93
+ () => cx( isBlock && styles.labelBlock ),
94
+ [ cx, isBlock ]
78
95
  );
96
+ const itemClasses = useMemo(
97
+ () =>
98
+ cx(
99
+ styles.buttonView( {
100
+ isDeselectable,
101
+ isIcon,
102
+ isPressed,
103
+ size,
104
+ } ),
105
+ className
106
+ ),
107
+ [ cx, isDeselectable, isIcon, isPressed, size, className ]
108
+ );
109
+ const backdropClasses = useMemo( () => cx( styles.backdropView ), [ cx ] );
79
110
 
80
111
  const buttonOnClick = () => {
81
112
  if ( isDeselectable && isPressed ) {
82
- otherContextProps.setState( undefined );
113
+ toggleGroupControlContext.setValue( undefined );
83
114
  } else {
84
- otherContextProps.setState( value );
115
+ toggleGroupControlContext.setValue( value );
85
116
  }
86
117
  };
87
118
 
88
119
  const commonProps = {
89
120
  ...otherButtonProps,
90
- className: classes,
121
+ className: itemClasses,
91
122
  'data-value': value,
92
123
  ref: forwardedRef,
93
124
  };
@@ -101,6 +132,7 @@ function ToggleGroupControlOptionBase(
101
132
  { isDeselectable ? (
102
133
  <button
103
134
  { ...commonProps }
135
+ onFocus={ onFocusProp }
104
136
  aria-pressed={ isPressed }
105
137
  type="button"
106
138
  onClick={ buttonOnClick }
@@ -109,17 +141,35 @@ function ToggleGroupControlOptionBase(
109
141
  </button>
110
142
  ) : (
111
143
  <Radio
112
- { ...commonProps }
113
- {
114
- ...otherContextProps /* these are only for Ariakit Radio */
144
+ render={
145
+ <button
146
+ { ...commonProps }
147
+ onFocus={ ( event ) => {
148
+ onFocusProp?.( event );
149
+ if ( event.defaultPrevented ) return;
150
+ toggleGroupControlContext.setValue( value );
151
+ } }
152
+ />
115
153
  }
116
- as="button"
117
154
  value={ value }
118
155
  >
119
156
  <ButtonContentView>{ children }</ButtonContentView>
120
157
  </Radio>
121
158
  ) }
122
159
  </WithToolTip>
160
+ { /* Animated backdrop using framer motion's shared layout animation */ }
161
+ { isPressed ? (
162
+ <motion.div
163
+ className={ backdropClasses }
164
+ transition={
165
+ shouldReduceMotion
166
+ ? REDUCED_MOTION_TRANSITION_CONFIG
167
+ : undefined
168
+ }
169
+ role="presentation"
170
+ layoutId={ LAYOUT_ID }
171
+ />
172
+ ) : null }
123
173
  </LabelView>
124
174
  );
125
175
  }
@@ -50,8 +50,10 @@ export const buttonView = ( {
50
50
  padding: 0 12px;
51
51
  position: relative;
52
52
  text-align: center;
53
- transition: background ${ CONFIG.transitionDurationFast } linear,
54
- color ${ CONFIG.transitionDurationFast } linear, font-weight 60ms linear;
53
+ transition:
54
+ background ${ CONFIG.transitionDurationFast } linear,
55
+ color ${ CONFIG.transitionDurationFast } linear,
56
+ font-weight 60ms linear;
55
57
  ${ reduceMotion( 'transition' ) }
56
58
  user-select: none;
57
59
  width: 100%;
@@ -82,7 +84,8 @@ const deselectable = css`
82
84
  color: ${ COLORS.gray[ 900 ] };
83
85
 
84
86
  &:focus {
85
- box-shadow: inset 0 0 0 1px ${ COLORS.white },
87
+ box-shadow:
88
+ inset 0 0 0 1px ${ COLORS.white },
86
89
  0 0 0 ${ CONFIG.borderWidthFocus } ${ COLORS.theme.accent };
87
90
  outline: 2px solid transparent;
88
91
  }
@@ -109,3 +112,14 @@ const isIconStyles = ( {
109
112
  padding-right: 0;
110
113
  `;
111
114
  };
115
+
116
+ export const backdropView = css`
117
+ background: ${ COLORS.gray[ 900 ] };
118
+ border-radius: ${ CONFIG.controlBorderRadius };
119
+ position: absolute;
120
+ inset: 0;
121
+ z-index: 1;
122
+ // Windows High Contrast mode will show this outline, but not the box-shadow.
123
+ outline: 2px solid transparent;
124
+ outline-offset: -3px;
125
+ `;
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import type { MutableRefObject, ReactNode, ReactText } from 'react';
5
- // eslint-disable-next-line no-restricted-imports
6
- import type { RadioStateReturn } from 'reakit';
4
+ import type { ReactNode } from 'react';
7
5
 
8
6
  /**
9
7
  * Internal dependencies
10
8
  */
11
9
  import type { BaseControlProps } from '../base-control/types';
10
+ import type { TooltipProps } from '../tooltip/types';
12
11
 
13
12
  export type ToggleGroupControlOptionBaseProps = {
14
13
  children: ReactNode;
@@ -18,7 +17,7 @@ export type ToggleGroupControlOptionBaseProps = {
18
17
  * @default false
19
18
  */
20
19
  isIcon?: boolean;
21
- value: ReactText;
20
+ value: string | number;
22
21
  /**
23
22
  * Whether to display a Tooltip for the control option. If set to `true`, the tooltip will
24
23
  * show the aria-label or the label prop text.
@@ -58,7 +57,7 @@ export type WithToolTipProps = {
58
57
  /**
59
58
  * React children
60
59
  */
61
- children: ReactNode;
60
+ children: TooltipProps[ 'children' ];
62
61
  /**
63
62
  * Label for the Tooltip component.
64
63
  */
@@ -107,11 +106,11 @@ export type ToggleGroupControlProps = Pick<
107
106
  /**
108
107
  * Callback when a segment is selected.
109
108
  */
110
- onChange?: ( value: ReactText | undefined ) => void;
109
+ onChange?: ( value: string | number | undefined ) => void;
111
110
  /**
112
111
  * The selected value.
113
112
  */
114
- value?: ReactText;
113
+ value?: string | number;
115
114
  /**
116
115
  * The options to render in the `ToggleGroupControl`, using either the `ToggleGroupControlOption` or
117
116
  * `ToggleGroupControlOptionIcon` components.
@@ -125,33 +124,16 @@ export type ToggleGroupControlProps = Pick<
125
124
  size?: 'default' | '__unstable-large';
126
125
  };
127
126
 
128
- type ToggleGroupControlAsRadioContext = {
129
- isDeselectable?: false;
130
- } & RadioStateReturn;
131
-
132
- type ToggleGroupControlAsButtonContext = { isDeselectable: true } & Pick<
133
- RadioStateReturn,
134
- 'state' | 'setState'
135
- >;
136
-
137
- export type ToggleGroupControlContextProps = Pick<
138
- ToggleGroupControlProps,
139
- 'isBlock' | 'size'
140
- > & {
127
+ export type ToggleGroupControlContextProps = {
128
+ isDeselectable?: boolean;
141
129
  baseId: string;
142
- } & ( ToggleGroupControlAsRadioContext | ToggleGroupControlAsButtonContext );
143
-
144
- export type ToggleGroupControlBackdropProps = {
145
- containerRef: MutableRefObject< HTMLElement | undefined >;
146
- containerWidth?: number | null;
147
- isAdaptiveWidth?: boolean;
148
- state?: any;
130
+ isBlock: ToggleGroupControlProps[ 'isBlock' ];
131
+ size: ToggleGroupControlProps[ 'size' ];
132
+ value: ToggleGroupControlProps[ 'value' ];
133
+ setValue: ( newValue: string | number | undefined ) => void;
149
134
  };
150
135
 
151
136
  export type ToggleGroupControlMainControlProps = Pick<
152
137
  ToggleGroupControlProps,
153
- 'children' | 'isAdaptiveWidth' | 'label' | 'size'
154
- > & {
155
- onChange: ( value: ReactText | undefined ) => void;
156
- value?: ReactText;
157
- };
138
+ 'children' | 'isAdaptiveWidth' | 'label' | 'size' | 'onChange' | 'value'
139
+ >;
@@ -117,9 +117,8 @@ Default.args = {
117
117
  <ToolbarButton icon={ link } label="Link" />
118
118
  <ToolbarGroup
119
119
  isCollapsed
120
- // @ts-expect-error TODO: Remove when ToolbarGroup is typed
121
- icon={ false }
122
- label="More rich text controls"
120
+ icon={ null }
121
+ title="More rich text controls"
123
122
  controls={ [
124
123
  { icon: code, title: 'Inline code' },
125
124
  { icon: <InlineImageIcon />, title: 'Inline image' },
@@ -131,9 +130,8 @@ Default.args = {
131
130
  />
132
131
  </ToolbarGroup>
133
132
  <ToolbarGroup
134
- // @ts-expect-error TODO: Remove when ToolbarGroup is typed
135
133
  icon={ more }
136
- label="Align"
134
+ title="Align"
137
135
  isCollapsed
138
136
  controls={ [
139
137
  {
@@ -8,6 +8,11 @@ import { fireEvent, render, screen } from '@testing-library/react';
8
8
  */
9
9
  import { ToolbarGroup } from '..';
10
10
 
11
+ /**
12
+ * WordPress dependencies
13
+ */
14
+ import { wordpress } from '@wordpress/icons';
15
+
11
16
  describe( 'ToolbarGroup', () => {
12
17
  describe( 'basic rendering', () => {
13
18
  it( 'should render an empty node, when controls are not passed', () => {
@@ -23,10 +28,11 @@ describe( 'ToolbarGroup', () => {
23
28
  } );
24
29
 
25
30
  it( 'should render a list of controls with buttons', () => {
26
- const clickHandler = ( event: Event ) => event;
31
+ const clickHandler = ( event?: React.MouseEvent ) => event;
32
+
27
33
  const controls = [
28
34
  {
29
- icon: 'wordpress',
35
+ icon: wordpress,
30
36
  title: 'WordPress',
31
37
  onClick: clickHandler,
32
38
  isActive: false,
@@ -41,10 +47,10 @@ describe( 'ToolbarGroup', () => {
41
47
  } );
42
48
 
43
49
  it( 'should render a list of controls with buttons and active control', () => {
44
- const clickHandler = ( event: Event ) => event;
50
+ const clickHandler = ( event?: React.MouseEvent ) => event;
45
51
  const controls = [
46
52
  {
47
- icon: 'wordpress',
53
+ icon: wordpress,
48
54
  title: 'WordPress',
49
55
  onClick: clickHandler,
50
56
  isActive: true,
@@ -63,14 +69,14 @@ describe( 'ToolbarGroup', () => {
63
69
  [
64
70
  // First set.
65
71
  {
66
- icon: 'wordpress',
72
+ icon: wordpress,
67
73
  title: 'WordPress',
68
74
  },
69
75
  ],
70
76
  [
71
77
  // Second set.
72
78
  {
73
- icon: 'wordpress',
79
+ icon: wordpress,
74
80
  title: 'WordPress',
75
81
  },
76
82
  ],
@@ -95,7 +101,7 @@ describe( 'ToolbarGroup', () => {
95
101
  const clickHandler = jest.fn();
96
102
  const controls = [
97
103
  {
98
- icon: 'wordpress',
104
+ icon: wordpress,
99
105
  title: 'WordPress',
100
106
  onClick: clickHandler,
101
107
  isActive: true,
@@ -42,7 +42,15 @@ function UnforwardedToolbar(
42
42
  alternative: 'ToolbarGroup component',
43
43
  link: 'https://developer.wordpress.org/block-editor/components/toolbar/',
44
44
  } );
45
- return <ToolbarGroup { ...props } className={ className } />;
45
+ // Extracting title from `props` because `ToolbarGroup` doesn't accept it.
46
+ const { title: _title, ...restProps } = props;
47
+ return (
48
+ <ToolbarGroup
49
+ isCollapsed={ false }
50
+ { ...restProps }
51
+ className={ className }
52
+ />
53
+ );
46
54
  }
47
55
  // `ToolbarGroup` already uses components-toolbar for compatibility reasons.
48
56
  const finalClassName = classnames(
@@ -1,25 +1,32 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * WordPress dependencies
5
3
  */
6
4
  import { forwardRef, useContext } from '@wordpress/element';
7
5
 
6
+ /**
7
+ * External dependencies
8
+ */
9
+ import type { ForwardedRef } from 'react';
10
+
8
11
  /**
9
12
  * Internal dependencies
10
13
  */
11
14
  import ToolbarItem from '../toolbar-item';
12
15
  import ToolbarContext from '../toolbar-context';
13
16
  import DropdownMenu from '../../dropdown-menu';
17
+ import type { DropdownMenuProps } from '../../dropdown-menu/types';
14
18
 
15
- function ToolbarDropdownMenu( props, ref ) {
19
+ function ToolbarDropdownMenu(
20
+ props: DropdownMenuProps,
21
+ ref: ForwardedRef< any >
22
+ ) {
16
23
  const accessibleToolbarState = useContext( ToolbarContext );
17
24
 
18
25
  if ( ! accessibleToolbarState ) {
19
26
  return <DropdownMenu { ...props } />;
20
27
  }
21
28
 
22
- // ToobarItem will pass all props to the render prop child, which will pass
29
+ // ToolbarItem will pass all props to the render prop child, which will pass
23
30
  // all props to the toggle of DropdownMenu. This means that ToolbarDropdownMenu
24
31
  // has the same API as DropdownMenu.
25
32
  return (
@@ -1,6 +1,6 @@
1
1
  # ToolbarGroup
2
2
 
3
- A ToolbarGroup can be used to create subgroups of controls inside a [Toolbar](/packages/components/src/toolbar/README.md).
3
+ A ToolbarGroup can be used to create subgroups of controls inside a [Toolbar](/packages/components/src/toolbar/toolbar/README.md).
4
4
 
5
5
  ## Usage
6
6
 
@@ -30,4 +30,4 @@ ToolbarGroup will pass all HTML props to the underlying element.
30
30
 
31
31
  ## Related components
32
32
 
33
- - ToolbarGroup may contain [ToolbarButton](/packages/components/src/toolbar-button/README.md) and [ToolbarItem](/packages/components/src/toolbar-Item/README.md) as children.
33
+ - ToolbarGroup may contain [ToolbarButton](/packages/components/src/toolbar/toolbar-button/README.md) and [ToolbarItem](/packages/components/src/toolbar/toolbar-item/README.md) as children.
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * External dependencies
5
3
  */
@@ -17,6 +15,11 @@ import ToolbarButton from '../toolbar-button';
17
15
  import ToolbarGroupContainer from './toolbar-group-container';
18
16
  import ToolbarGroupCollapsed from './toolbar-group-collapsed';
19
17
  import ToolbarContext from '../toolbar-context';
18
+ import type { ToolbarGroupProps, ToolbarGroupControls } from './types';
19
+
20
+ function isNestedArray< T = any >( arr: T[] | T[][] ): arr is T[][] {
21
+ return Array.isArray( arr ) && Array.isArray( arr[ 0 ] );
22
+ }
20
23
 
21
24
  /**
22
25
  * Renders a collapsible group of controls
@@ -41,12 +44,12 @@ import ToolbarContext from '../toolbar-context';
41
44
  * Either `controls` or `children` is required, otherwise this components
42
45
  * renders nothing.
43
46
  *
44
- * @param {Object} props Component props.
45
- * @param {Array} [props.controls] The controls to render in this toolbar.
46
- * @param {WPElement} [props.children] Any other things to render inside the toolbar besides the controls.
47
- * @param {string} [props.className] Class to set on the container div.
48
- * @param {boolean} [props.isCollapsed] Turns ToolbarGroup into a dropdown menu.
49
- * @param {string} [props.title] ARIA label for dropdown menu if is collapsed.
47
+ * @param props Component props.
48
+ * @param [props.controls] The controls to render in this toolbar.
49
+ * @param [props.children] Any other things to render inside the toolbar besides the controls.
50
+ * @param [props.className] Class to set on the container div.
51
+ * @param [props.isCollapsed] Turns ToolbarGroup into a dropdown menu.
52
+ * @param [props.title] ARIA label for dropdown menu if is collapsed.
50
53
  */
51
54
  function ToolbarGroup( {
52
55
  controls = [],
@@ -55,7 +58,7 @@ function ToolbarGroup( {
55
58
  isCollapsed,
56
59
  title,
57
60
  ...props
58
- } ) {
61
+ }: ToolbarGroupProps ) {
59
62
  // It'll contain state if `ToolbarGroup` is being used within
60
63
  // `<Toolbar label="label" />`
61
64
  const accessibleToolbarState = useContext( ToolbarContext );
@@ -74,9 +77,11 @@ function ToolbarGroup( {
74
77
  );
75
78
 
76
79
  // Normalize controls to nested array of objects (sets of controls)
77
- let controlSets = controls;
78
- if ( ! Array.isArray( controlSets[ 0 ] ) ) {
79
- controlSets = [ controlSets ];
80
+ let controlSets: ToolbarGroupControls[][];
81
+ if ( isNestedArray( controls ) ) {
82
+ controlSets = controls;
83
+ } else {
84
+ controlSets = [ controls ];
80
85
  }
81
86
 
82
87
  if ( isCollapsed ) {
@@ -94,13 +99,13 @@ function ToolbarGroup( {
94
99
  return (
95
100
  <ToolbarGroupContainer className={ finalClassName } { ...props }>
96
101
  { controlSets?.flatMap( ( controlSet, indexOfSet ) =>
97
- controlSet.map( ( control, indexOfControl ) => (
102
+ controlSet.map( ( control, indexOfControl: number ) => (
98
103
  <ToolbarButton
99
104
  key={ [ indexOfSet, indexOfControl ].join() }
100
105
  containerClassName={
101
106
  indexOfSet > 0 && indexOfControl === 0
102
107
  ? 'has-left-divider'
103
- : null
108
+ : undefined
104
109
  }
105
110
  { ...control }
106
111
  />
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * WordPress dependencies
5
3
  */
@@ -11,13 +9,21 @@ import { useContext } from '@wordpress/element';
11
9
  import DropdownMenu from '../../dropdown-menu';
12
10
  import ToolbarContext from '../toolbar-context';
13
11
  import ToolbarItem from '../toolbar-item';
12
+ import type { ToolbarGroupCollapsedProps } from './types';
13
+ import type { DropdownMenuProps } from '../../dropdown-menu/types';
14
14
 
15
- function ToolbarGroupCollapsed( { controls = [], toggleProps, ...props } ) {
15
+ function ToolbarGroupCollapsed( {
16
+ controls = [],
17
+ toggleProps,
18
+ ...props
19
+ }: ToolbarGroupCollapsedProps ) {
16
20
  // It'll contain state if `ToolbarGroup` is being used within
17
21
  // `<Toolbar label="label" />`
18
22
  const accessibleToolbarState = useContext( ToolbarContext );
19
23
 
20
- const renderDropdownMenu = ( internalToggleProps ) => (
24
+ const renderDropdownMenu = (
25
+ internalToggleProps?: DropdownMenuProps[ 'toggleProps' ]
26
+ ) => (
21
27
  <DropdownMenu
22
28
  controls={ controls }
23
29
  toggleProps={ {
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import type { WordPressComponentProps } from '../../ui/context';
5
+ import type { ToolbarGroupContainerProps } from './types';
6
+
7
+ const ToolbarGroupContainer = ( {
8
+ className,
9
+ children,
10
+ ...props
11
+ }: WordPressComponentProps< ToolbarGroupContainerProps, 'div', false > ) => (
12
+ <div className={ className } { ...props }>
13
+ { children }
14
+ </div>
15
+ );
16
+ export default ToolbarGroupContainer;