@wordpress/components 28.2.0 → 28.3.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 (424) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/build/animation/index.js.map +1 -1
  3. package/build/autocomplete/autocompleter-ui.js +1 -0
  4. package/build/autocomplete/autocompleter-ui.js.map +1 -1
  5. package/build/autocomplete/index.js.map +1 -1
  6. package/build/base-control/index.js +14 -7
  7. package/build/base-control/index.js.map +1 -1
  8. package/build/border-box-control/border-box-control-visualizer/component.js +0 -4
  9. package/build/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  10. package/build/button/index.js +5 -3
  11. package/build/button/index.js.map +1 -1
  12. package/build/button/types.js.map +1 -1
  13. package/build/combobox-control/index.js +4 -1
  14. package/build/combobox-control/index.js.map +1 -1
  15. package/build/composite/current/index.js.map +1 -1
  16. package/build/custom-select-control-v2/custom-select.js +57 -33
  17. package/build/custom-select-control-v2/custom-select.js.map +1 -1
  18. package/build/custom-select-control-v2/default-component/index.js +0 -1
  19. package/build/custom-select-control-v2/default-component/index.js.map +1 -1
  20. package/build/custom-select-control-v2/item.js +2 -0
  21. package/build/custom-select-control-v2/item.js.map +1 -1
  22. package/build/custom-select-control-v2/legacy-component/index.js +18 -6
  23. package/build/custom-select-control-v2/legacy-component/index.js.map +1 -1
  24. package/build/custom-select-control-v2/styles.js +90 -78
  25. package/build/custom-select-control-v2/styles.js.map +1 -1
  26. package/build/custom-select-control-v2/types.js.map +1 -1
  27. package/build/date-time/date-time/index.js +3 -1
  28. package/build/date-time/date-time/index.js.map +1 -1
  29. package/build/date-time/index.js +7 -0
  30. package/build/date-time/index.js.map +1 -1
  31. package/build/date-time/time/index.js +62 -145
  32. package/build/date-time/time/index.js.map +1 -1
  33. package/build/date-time/time-input/index.js +159 -0
  34. package/build/date-time/time-input/index.js.map +1 -0
  35. package/build/date-time/types.js.map +1 -1
  36. package/build/date-time/utils.js +64 -0
  37. package/build/date-time/utils.js.map +1 -1
  38. package/build/disclosure/index.js +0 -1
  39. package/build/disclosure/index.js.map +1 -1
  40. package/build/divider/component.js +0 -1
  41. package/build/divider/component.js.map +1 -1
  42. package/build/divider/types.js.map +1 -1
  43. package/build/dropdown-menu/index.js +1 -0
  44. package/build/dropdown-menu/index.js.map +1 -1
  45. package/build/dropdown-menu-v2/index.js +0 -1
  46. package/build/dropdown-menu-v2/index.js.map +1 -1
  47. package/build/dropdown-menu-v2/styles.js +15 -16
  48. package/build/dropdown-menu-v2/styles.js.map +1 -1
  49. package/build/dropdown-menu-v2/types.js.map +1 -1
  50. package/build/font-size-picker/font-size-picker-select.js +2 -2
  51. package/build/font-size-picker/font-size-picker-select.js.map +1 -1
  52. package/build/font-size-picker/index.js +1 -1
  53. package/build/font-size-picker/index.js.map +1 -1
  54. package/build/font-size-picker/utils.js +0 -4
  55. package/build/font-size-picker/utils.js.map +1 -1
  56. package/build/form-token-field/token.js +4 -1
  57. package/build/form-token-field/token.js.map +1 -1
  58. package/build/higher-order/with-spoken-messages/index.js +1 -2
  59. package/build/higher-order/with-spoken-messages/index.js.map +1 -1
  60. package/build/menu-items-choice/types.js.map +1 -1
  61. package/build/popover/index.js +0 -4
  62. package/build/popover/index.js.map +1 -1
  63. package/build/popover/utils.js +0 -1
  64. package/build/popover/utils.js.map +1 -1
  65. package/build/private-apis.js +2 -4
  66. package/build/private-apis.js.map +1 -1
  67. package/build/progress-bar/styles.js +19 -13
  68. package/build/progress-bar/styles.js.map +1 -1
  69. package/build/radio-group/context.js +0 -1
  70. package/build/radio-group/context.js.map +1 -1
  71. package/build/radio-group/index.js +0 -1
  72. package/build/radio-group/index.js.map +1 -1
  73. package/build/radio-group/radio.js +0 -1
  74. package/build/radio-group/radio.js.map +1 -1
  75. package/build/range-control/index.js +4 -1
  76. package/build/range-control/index.js.map +1 -1
  77. package/build/range-control/styles/range-control-styles.js +34 -28
  78. package/build/range-control/styles/range-control-styles.js.map +1 -1
  79. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  80. package/build/select-control/index.js +1 -2
  81. package/build/select-control/index.js.map +1 -1
  82. package/build/select-control/styles/select-control-styles.js +13 -8
  83. package/build/select-control/styles/select-control-styles.js.map +1 -1
  84. package/build/tab-panel/index.js +0 -1
  85. package/build/tab-panel/index.js.map +1 -1
  86. package/build/tabs/index.js +0 -1
  87. package/build/tabs/index.js.map +1 -1
  88. package/build/tabs/styles.js +3 -5
  89. package/build/tabs/styles.js.map +1 -1
  90. package/build/tabs/tablist.js +148 -37
  91. package/build/tabs/tablist.js.map +1 -1
  92. package/build/tabs/types.js.map +1 -1
  93. package/build/toggle-group-control/toggle-group-control/as-radio-group.js +0 -2
  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 +0 -2
  96. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  97. package/build/toggle-group-control/toggle-group-control-option-base/component.js +0 -4
  98. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  99. package/build/toolbar/toolbar/toolbar-container.js +0 -1
  100. package/build/toolbar/toolbar/toolbar-container.js.map +1 -1
  101. package/build/toolbar/toolbar/types.js.map +1 -1
  102. package/build/toolbar/toolbar-button/index.js +27 -19
  103. package/build/toolbar/toolbar-button/index.js.map +1 -1
  104. package/build/toolbar/toolbar-button/types.js.map +1 -1
  105. package/build/toolbar/toolbar-context/index.js +0 -1
  106. package/build/toolbar/toolbar-context/index.js.map +1 -1
  107. package/build/toolbar/toolbar-item/index.js +1 -1
  108. package/build/toolbar/toolbar-item/index.js.map +1 -1
  109. package/build/tooltip/index.js +3 -2
  110. package/build/tooltip/index.js.map +1 -1
  111. package/build/tooltip/types.js.map +1 -1
  112. package/build/unit-control/index.js +3 -3
  113. package/build/unit-control/index.js.map +1 -1
  114. package/build/unit-control/styles/unit-control-styles.js +7 -7
  115. package/build/unit-control/styles/unit-control-styles.js.map +1 -1
  116. package/build/utils/hooks/use-update-effect.js +4 -1
  117. package/build/utils/hooks/use-update-effect.js.map +1 -1
  118. package/build-module/animation/index.js +0 -1
  119. package/build-module/animation/index.js.map +1 -1
  120. package/build-module/autocomplete/autocompleter-ui.js +1 -0
  121. package/build-module/autocomplete/autocompleter-ui.js.map +1 -1
  122. package/build-module/autocomplete/index.js.map +1 -1
  123. package/build-module/base-control/index.js +13 -6
  124. package/build-module/base-control/index.js.map +1 -1
  125. package/build-module/border-box-control/border-box-control-visualizer/component.js +0 -4
  126. package/build-module/border-box-control/border-box-control-visualizer/component.js.map +1 -1
  127. package/build-module/button/index.js +5 -3
  128. package/build-module/button/index.js.map +1 -1
  129. package/build-module/button/types.js.map +1 -1
  130. package/build-module/combobox-control/index.js +4 -1
  131. package/build-module/combobox-control/index.js.map +1 -1
  132. package/build-module/composite/current/index.js +0 -3
  133. package/build-module/composite/current/index.js.map +1 -1
  134. package/build-module/custom-select-control-v2/custom-select.js +58 -35
  135. package/build-module/custom-select-control-v2/custom-select.js.map +1 -1
  136. package/build-module/custom-select-control-v2/default-component/index.js +0 -1
  137. package/build-module/custom-select-control-v2/default-component/index.js.map +1 -1
  138. package/build-module/custom-select-control-v2/item.js +2 -0
  139. package/build-module/custom-select-control-v2/item.js.map +1 -1
  140. package/build-module/custom-select-control-v2/legacy-component/index.js +18 -6
  141. package/build-module/custom-select-control-v2/legacy-component/index.js.map +1 -1
  142. package/build-module/custom-select-control-v2/styles.js +88 -76
  143. package/build-module/custom-select-control-v2/styles.js.map +1 -1
  144. package/build-module/custom-select-control-v2/types.js.map +1 -1
  145. package/build-module/date-time/date-time/index.js +4 -1
  146. package/build-module/date-time/date-time/index.js.map +1 -1
  147. package/build-module/date-time/index.js +2 -1
  148. package/build-module/date-time/index.js.map +1 -1
  149. package/build-module/date-time/time/index.js +65 -149
  150. package/build-module/date-time/time/index.js.map +1 -1
  151. package/build-module/date-time/time-input/index.js +151 -0
  152. package/build-module/date-time/time-input/index.js.map +1 -0
  153. package/build-module/date-time/types.js.map +1 -1
  154. package/build-module/date-time/utils.js +61 -0
  155. package/build-module/date-time/utils.js.map +1 -1
  156. package/build-module/disclosure/index.js +0 -1
  157. package/build-module/disclosure/index.js.map +1 -1
  158. package/build-module/divider/component.js +0 -1
  159. package/build-module/divider/component.js.map +1 -1
  160. package/build-module/divider/types.js.map +1 -1
  161. package/build-module/dropdown-menu/index.js +1 -0
  162. package/build-module/dropdown-menu/index.js.map +1 -1
  163. package/build-module/dropdown-menu-v2/index.js +0 -1
  164. package/build-module/dropdown-menu-v2/index.js.map +1 -1
  165. package/build-module/dropdown-menu-v2/styles.js +14 -15
  166. package/build-module/dropdown-menu-v2/styles.js.map +1 -1
  167. package/build-module/dropdown-menu-v2/types.js.map +1 -1
  168. package/build-module/font-size-picker/font-size-picker-select.js +1 -1
  169. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
  170. package/build-module/font-size-picker/index.js +1 -1
  171. package/build-module/font-size-picker/index.js.map +1 -1
  172. package/build-module/font-size-picker/utils.js +0 -4
  173. package/build-module/font-size-picker/utils.js.map +1 -1
  174. package/build-module/form-token-field/token.js +4 -1
  175. package/build-module/form-token-field/token.js.map +1 -1
  176. package/build-module/higher-order/with-spoken-messages/index.js +1 -2
  177. package/build-module/higher-order/with-spoken-messages/index.js.map +1 -1
  178. package/build-module/menu-items-choice/types.js.map +1 -1
  179. package/build-module/popover/index.js +0 -3
  180. package/build-module/popover/index.js.map +1 -1
  181. package/build-module/popover/utils.js +0 -1
  182. package/build-module/popover/utils.js.map +1 -1
  183. package/build-module/private-apis.js +2 -4
  184. package/build-module/private-apis.js.map +1 -1
  185. package/build-module/progress-bar/styles.js +21 -13
  186. package/build-module/progress-bar/styles.js.map +1 -1
  187. package/build-module/radio-group/context.js +0 -1
  188. package/build-module/radio-group/context.js.map +1 -1
  189. package/build-module/radio-group/index.js +0 -1
  190. package/build-module/radio-group/index.js.map +1 -1
  191. package/build-module/radio-group/radio.js +0 -1
  192. package/build-module/radio-group/radio.js.map +1 -1
  193. package/build-module/range-control/index.js +4 -1
  194. package/build-module/range-control/index.js.map +1 -1
  195. package/build-module/range-control/styles/range-control-styles.js +34 -28
  196. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  197. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  198. package/build-module/select-control/index.js +2 -3
  199. package/build-module/select-control/index.js.map +1 -1
  200. package/build-module/select-control/styles/select-control-styles.js +12 -7
  201. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  202. package/build-module/tab-panel/index.js +0 -1
  203. package/build-module/tab-panel/index.js.map +1 -1
  204. package/build-module/tabs/index.js +0 -1
  205. package/build-module/tabs/index.js.map +1 -1
  206. package/build-module/tabs/styles.js +3 -4
  207. package/build-module/tabs/styles.js.map +1 -1
  208. package/build-module/tabs/tablist.js +149 -38
  209. package/build-module/tabs/tablist.js.map +1 -1
  210. package/build-module/tabs/types.js.map +1 -1
  211. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js +0 -1
  212. package/build-module/toggle-group-control/toggle-group-control/as-radio-group.js.map +1 -1
  213. package/build-module/toggle-group-control/toggle-group-control/component.js +0 -1
  214. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  215. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +0 -2
  216. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  217. package/build-module/toolbar/toolbar/toolbar-container.js +0 -1
  218. package/build-module/toolbar/toolbar/toolbar-container.js.map +1 -1
  219. package/build-module/toolbar/toolbar/types.js.map +1 -1
  220. package/build-module/toolbar/toolbar-button/index.js +27 -19
  221. package/build-module/toolbar/toolbar-button/index.js.map +1 -1
  222. package/build-module/toolbar/toolbar-button/types.js.map +1 -1
  223. package/build-module/toolbar/toolbar-context/index.js +0 -1
  224. package/build-module/toolbar/toolbar-context/index.js.map +1 -1
  225. package/build-module/toolbar/toolbar-item/index.js +1 -1
  226. package/build-module/toolbar/toolbar-item/index.js.map +1 -1
  227. package/build-module/tooltip/index.js +3 -2
  228. package/build-module/tooltip/index.js.map +1 -1
  229. package/build-module/tooltip/types.js.map +1 -1
  230. package/build-module/unit-control/index.js +3 -3
  231. package/build-module/unit-control/index.js.map +1 -1
  232. package/build-module/unit-control/styles/unit-control-styles.js +7 -7
  233. package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
  234. package/build-module/utils/hooks/use-update-effect.js +4 -1
  235. package/build-module/utils/hooks/use-update-effect.js.map +1 -1
  236. package/build-style/style-rtl.css +18 -0
  237. package/build-style/style.css +18 -0
  238. package/build-types/animation/index.d.ts.map +1 -1
  239. package/build-types/autocomplete/autocompleter-ui.d.ts.map +1 -1
  240. package/build-types/autocomplete/index.d.ts.map +1 -1
  241. package/build-types/base-control/index.d.ts +6 -20
  242. package/build-types/base-control/index.d.ts.map +1 -1
  243. package/build-types/base-control/stories/index.story.d.ts.map +1 -1
  244. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  245. package/build-types/button/deprecated.d.ts +4 -4
  246. package/build-types/button/index.d.ts.map +1 -1
  247. package/build-types/button/stories/e2e/index.story.d.ts.map +1 -1
  248. package/build-types/button/types.d.ts +27 -10
  249. package/build-types/button/types.d.ts.map +1 -1
  250. package/build-types/combobox-control/index.d.ts.map +1 -1
  251. package/build-types/composite/current/index.d.ts.map +1 -1
  252. package/build-types/custom-select-control-v2/custom-select.d.ts +2 -2
  253. package/build-types/custom-select-control-v2/custom-select.d.ts.map +1 -1
  254. package/build-types/custom-select-control-v2/default-component/index.d.ts.map +1 -1
  255. package/build-types/custom-select-control-v2/item.d.ts.map +1 -1
  256. package/build-types/custom-select-control-v2/legacy-component/index.d.ts.map +1 -1
  257. package/build-types/custom-select-control-v2/stories/default.story.d.ts +6 -3
  258. package/build-types/custom-select-control-v2/stories/default.story.d.ts.map +1 -1
  259. package/build-types/custom-select-control-v2/styles.d.ts +18 -26
  260. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
  261. package/build-types/custom-select-control-v2/types.d.ts +12 -2
  262. package/build-types/custom-select-control-v2/types.d.ts.map +1 -1
  263. package/build-types/date-time/date-time/index.d.ts.map +1 -1
  264. package/build-types/date-time/index.d.ts +2 -1
  265. package/build-types/date-time/index.d.ts.map +1 -1
  266. package/build-types/date-time/stories/time-input.story.d.ts +12 -0
  267. package/build-types/date-time/stories/time-input.story.d.ts.map +1 -0
  268. package/build-types/date-time/time/index.d.ts +1 -1
  269. package/build-types/date-time/time/index.d.ts.map +1 -1
  270. package/build-types/date-time/time-input/index.d.ts +5 -0
  271. package/build-types/date-time/time-input/index.d.ts.map +1 -0
  272. package/build-types/date-time/time-input/test/index.d.ts +2 -0
  273. package/build-types/date-time/time-input/test/index.d.ts.map +1 -0
  274. package/build-types/date-time/types.d.ts +54 -0
  275. package/build-types/date-time/types.d.ts.map +1 -1
  276. package/build-types/date-time/utils.d.ts +40 -0
  277. package/build-types/date-time/utils.d.ts.map +1 -1
  278. package/build-types/disclosure/index.d.ts.map +1 -1
  279. package/build-types/divider/component.d.ts.map +1 -1
  280. package/build-types/divider/types.d.ts.map +1 -1
  281. package/build-types/dropdown-menu/index.d.ts.map +1 -1
  282. package/build-types/dropdown-menu-v2/index.d.ts.map +1 -1
  283. package/build-types/dropdown-menu-v2/styles.d.ts.map +1 -1
  284. package/build-types/dropdown-menu-v2/types.d.ts.map +1 -1
  285. package/build-types/font-size-picker/styles.d.ts +1 -1
  286. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  287. package/build-types/form-token-field/token.d.ts.map +1 -1
  288. package/build-types/higher-order/with-spoken-messages/index.d.ts +1 -2
  289. package/build-types/higher-order/with-spoken-messages/index.d.ts.map +1 -1
  290. package/build-types/menu-items-choice/types.d.ts +1 -1
  291. package/build-types/menu-items-choice/types.d.ts.map +1 -1
  292. package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
  293. package/build-types/navigator/navigator-back-button/hook.d.ts +1 -1
  294. package/build-types/navigator/navigator-button/component.d.ts +1 -1
  295. package/build-types/navigator/navigator-button/hook.d.ts +1 -1
  296. package/build-types/navigator/navigator-to-parent-button/component.d.ts +1 -1
  297. package/build-types/popover/index.d.ts.map +1 -1
  298. package/build-types/popover/utils.d.ts.map +1 -1
  299. package/build-types/private-apis.d.ts.map +1 -1
  300. package/build-types/progress-bar/styles.d.ts.map +1 -1
  301. package/build-types/radio-group/context.d.ts.map +1 -1
  302. package/build-types/radio-group/index.d.ts.map +1 -1
  303. package/build-types/radio-group/radio.d.ts.map +1 -1
  304. package/build-types/range-control/index.d.ts.map +1 -1
  305. package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
  306. package/build-types/resizable-box/resize-tooltip/utils.d.ts +2 -2
  307. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  308. package/build-types/select-control/index.d.ts.map +1 -1
  309. package/build-types/select-control/styles/select-control-styles.d.ts +5 -0
  310. package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
  311. package/build-types/tab-panel/index.d.ts.map +1 -1
  312. package/build-types/tabs/index.d.ts.map +1 -1
  313. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  314. package/build-types/tabs/styles.d.ts.map +1 -1
  315. package/build-types/tabs/tablist.d.ts.map +1 -1
  316. package/build-types/tabs/types.d.ts.map +1 -1
  317. package/build-types/theme/stories/index.story.d.ts.map +1 -1
  318. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts.map +1 -1
  319. package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
  320. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  321. package/build-types/toolbar/toolbar/toolbar-container.d.ts.map +1 -1
  322. package/build-types/toolbar/toolbar/types.d.ts +6 -0
  323. package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
  324. package/build-types/toolbar/toolbar-button/index.d.ts +3 -96
  325. package/build-types/toolbar/toolbar-button/index.d.ts.map +1 -1
  326. package/build-types/toolbar/toolbar-button/types.d.ts +18 -0
  327. package/build-types/toolbar/toolbar-button/types.d.ts.map +1 -1
  328. package/build-types/toolbar/toolbar-context/index.d.ts.map +1 -1
  329. package/build-types/toolbar/toolbar-item/index.d.ts +1 -3
  330. package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
  331. package/build-types/tooltip/index.d.ts.map +1 -1
  332. package/build-types/tooltip/types.d.ts +4 -0
  333. package/build-types/tooltip/types.d.ts.map +1 -1
  334. package/build-types/unit-control/index.d.ts.map +1 -1
  335. package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
  336. package/build-types/utils/hooks/use-update-effect.d.ts +1 -1
  337. package/build-types/utils/hooks/use-update-effect.d.ts.map +1 -1
  338. package/package.json +19 -19
  339. package/src/animation/index.tsx +0 -1
  340. package/src/autocomplete/autocompleter-ui.tsx +1 -0
  341. package/src/autocomplete/index.tsx +0 -1
  342. package/src/base-control/index.tsx +16 -6
  343. package/src/base-control/stories/index.story.tsx +0 -1
  344. package/src/border-box-control/border-box-control-visualizer/component.tsx +0 -5
  345. package/src/button/README.md +13 -0
  346. package/src/button/index.tsx +6 -4
  347. package/src/button/stories/e2e/index.story.tsx +2 -1
  348. package/src/button/test/index.tsx +17 -2
  349. package/src/button/types.ts +27 -10
  350. package/src/combobox-control/index.tsx +2 -0
  351. package/src/composite/current/index.ts +0 -2
  352. package/src/custom-select-control/test/index.js +42 -6
  353. package/src/custom-select-control-v2/custom-select.tsx +57 -22
  354. package/src/custom-select-control-v2/default-component/index.tsx +0 -1
  355. package/src/custom-select-control-v2/item.tsx +5 -1
  356. package/src/custom-select-control-v2/legacy-component/index.tsx +28 -7
  357. package/src/custom-select-control-v2/legacy-component/test/index.tsx +44 -8
  358. package/src/custom-select-control-v2/styles.ts +153 -83
  359. package/src/custom-select-control-v2/test/index.tsx +35 -5
  360. package/src/custom-select-control-v2/types.ts +18 -6
  361. package/src/date-time/README.md +8 -0
  362. package/src/date-time/date-time/index.tsx +2 -1
  363. package/src/date-time/index.ts +2 -1
  364. package/src/date-time/stories/time-input.story.tsx +36 -0
  365. package/src/date-time/time/index.tsx +77 -194
  366. package/src/date-time/time/test/index.tsx +61 -0
  367. package/src/date-time/time-input/index.tsx +196 -0
  368. package/src/date-time/time-input/test/index.tsx +171 -0
  369. package/src/date-time/types.ts +63 -0
  370. package/src/date-time/utils.ts +69 -0
  371. package/src/dimension-control/test/__snapshots__/index.test.js.snap +116 -96
  372. package/src/disclosure/index.tsx +0 -1
  373. package/src/divider/component.tsx +0 -1
  374. package/src/divider/types.ts +0 -1
  375. package/src/dropdown-menu/index.tsx +1 -0
  376. package/src/dropdown-menu-v2/index.tsx +0 -1
  377. package/src/dropdown-menu-v2/styles.ts +0 -1
  378. package/src/dropdown-menu-v2/types.ts +0 -1
  379. package/src/font-size-picker/font-size-picker-select.tsx +1 -1
  380. package/src/font-size-picker/index.tsx +1 -1
  381. package/src/font-size-picker/test/index.tsx +6 -6
  382. package/src/font-size-picker/utils.ts +0 -5
  383. package/src/form-token-field/token.tsx +2 -0
  384. package/src/higher-order/navigate-regions/style.scss +25 -13
  385. package/src/higher-order/with-spoken-messages/index.tsx +1 -2
  386. package/src/menu-items-choice/types.ts +2 -1
  387. package/src/palette-edit/test/index.tsx +1 -0
  388. package/src/popover/index.tsx +0 -2
  389. package/src/popover/utils.ts +0 -1
  390. package/src/private-apis.ts +2 -5
  391. package/src/progress-bar/styles.ts +18 -9
  392. package/src/radio-group/context.tsx +0 -1
  393. package/src/radio-group/index.tsx +0 -1
  394. package/src/radio-group/radio.tsx +0 -1
  395. package/src/range-control/index.tsx +2 -0
  396. package/src/range-control/styles/range-control-styles.ts +6 -2
  397. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  398. package/src/select-control/index.tsx +3 -4
  399. package/src/select-control/styles/select-control-styles.ts +17 -6
  400. package/src/tab-panel/index.tsx +0 -1
  401. package/src/tabs/index.tsx +0 -1
  402. package/src/tabs/stories/index.story.tsx +25 -18
  403. package/src/tabs/styles.ts +18 -14
  404. package/src/tabs/tablist.tsx +187 -43
  405. package/src/tabs/types.ts +0 -1
  406. package/src/theme/stories/index.story.tsx +2 -0
  407. package/src/toggle-group-control/toggle-group-control/as-radio-group.tsx +0 -1
  408. package/src/toggle-group-control/toggle-group-control/component.tsx +0 -2
  409. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +0 -2
  410. package/src/toolbar/toolbar/README.md +9 -0
  411. package/src/toolbar/toolbar/style.scss +7 -0
  412. package/src/toolbar/toolbar/toolbar-container.tsx +0 -1
  413. package/src/toolbar/toolbar/types.ts +6 -0
  414. package/src/toolbar/toolbar-button/index.tsx +30 -17
  415. package/src/toolbar/toolbar-button/types.ts +19 -0
  416. package/src/toolbar/toolbar-context/index.ts +0 -1
  417. package/src/toolbar/toolbar-item/index.tsx +1 -1
  418. package/src/tooltip/index.tsx +3 -2
  419. package/src/tooltip/test/index.tsx +18 -0
  420. package/src/tooltip/types.ts +4 -0
  421. package/src/unit-control/index.tsx +3 -2
  422. package/src/unit-control/styles/unit-control-styles.ts +10 -4
  423. package/src/utils/hooks/use-update-effect.js +8 -1
  424. package/tsconfig.tsbuildinfo +1 -1
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
 
7
6
  /**
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
  import type { ForwardedRef } from 'react';
7
6
 
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import type { SeparatorProps } from '@ariakit/react';
6
5
 
7
6
  /**
@@ -199,6 +199,7 @@ function UnconnectedDropdownMenu( dropdownMenuProps: DropdownMenuProps ) {
199
199
  ? control.role
200
200
  : 'menuitem'
201
201
  }
202
+ accessibleWhenDisabled
202
203
  disabled={ control.isDisabled }
203
204
  >
204
205
  { control.title }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
 
7
6
  /**
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
  import { css, keyframes } from '@emotion/react';
7
6
  import styled from '@emotion/styled';
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import type * as Ariakit from '@ariakit/react';
6
5
  import type { Placement } from '@floating-ui/react-dom';
7
6
 
@@ -6,7 +6,7 @@ import { __, sprintf } from '@wordpress/i18n';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import CustomSelectControl from '../custom-select-control';
9
+ import CustomSelectControl from '../custom-select-control-v2/legacy-component';
10
10
  import { parseQuantityAndUnitFromRawValue } from '../unit-control';
11
11
  import type {
12
12
  FontSizePickerSelectProps,
@@ -262,7 +262,7 @@ const UnforwardedFontSizePicker = (
262
262
  <FlexItem>
263
263
  <Button
264
264
  disabled={ isDisabled }
265
- __experimentalIsFocusable
265
+ accessibleWhenDisabled
266
266
  onClick={ () => {
267
267
  onChange?.( undefined );
268
268
  } }
@@ -94,7 +94,7 @@ describe( 'FontSizePicker', () => {
94
94
  const user = userEvent.setup();
95
95
  render( <FontSizePicker fontSizes={ fontSizes } /> );
96
96
  await user.click(
97
- screen.getByRole( 'button', { name: 'Font size' } )
97
+ screen.getByRole( 'combobox', { name: 'Font size' } )
98
98
  );
99
99
  const options = screen.getAllByRole( 'option' );
100
100
  expect( options ).toHaveLength( 8 );
@@ -148,7 +148,7 @@ describe( 'FontSizePicker', () => {
148
148
  />
149
149
  );
150
150
  await user.click(
151
- screen.getByRole( 'button', { name: 'Font size' } )
151
+ screen.getByRole( 'combobox', { name: 'Font size' } )
152
152
  );
153
153
  await user.click(
154
154
  screen.getByRole( 'option', { name: option } )
@@ -200,7 +200,7 @@ describe( 'FontSizePicker', () => {
200
200
  const user = userEvent.setup();
201
201
  render( <FontSizePicker fontSizes={ fontSizes } /> );
202
202
  await user.click(
203
- screen.getByRole( 'button', { name: 'Font size' } )
203
+ screen.getByRole( 'combobox', { name: 'Font size' } )
204
204
  );
205
205
  const options = screen.getAllByRole( 'option' );
206
206
  expect( options ).toHaveLength( 8 );
@@ -225,7 +225,7 @@ describe( 'FontSizePicker', () => {
225
225
  <FontSizePicker fontSizes={ fontSizes } value={ value } />
226
226
  );
227
227
  expect(
228
- screen.getByRole( 'button', { name: 'Font size' } )
228
+ screen.getByRole( 'combobox', { name: 'Font size' } )
229
229
  ).toHaveTextContent( option );
230
230
  }
231
231
  );
@@ -291,7 +291,7 @@ describe( 'FontSizePicker', () => {
291
291
  />
292
292
  );
293
293
  await user.click(
294
- screen.getByRole( 'button', { name: 'Font size' } )
294
+ screen.getByRole( 'combobox', { name: 'Font size' } )
295
295
  );
296
296
  await user.click(
297
297
  screen.getByRole( 'option', { name: option } )
@@ -509,7 +509,7 @@ describe( 'FontSizePicker', () => {
509
509
  <FontSizePicker fontSizes={ fontSizes } onChange={ onChange } />
510
510
  );
511
511
  await user.click(
512
- screen.getByRole( 'button', { name: 'Font size' } )
512
+ screen.getByRole( 'combobox', { name: 'Font size' } )
513
513
  );
514
514
  await user.click(
515
515
  screen.getByRole( 'option', { name: 'Custom' } )
@@ -1,8 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __ } from '@wordpress/i18n';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -74,6 +74,8 @@ export default function Token( {
74
74
  className="components-form-token-field__remove-token"
75
75
  icon={ closeSmall }
76
76
  onClick={ ! disabled ? onClick : undefined }
77
+ // Disable reason: Even when FormTokenField itself is accessibly disabled, token reset buttons shouldn't be in the tab sequence.
78
+ // eslint-disable-next-line no-restricted-syntax
77
79
  disabled={ disabled }
78
80
  label={ messages.remove }
79
81
  aria-describedby={ `components-form-token-field__token-text-${ instanceId }` }
@@ -1,22 +1,35 @@
1
1
  // Allow the position to be easily overridden to e.g. fixed.
2
+
3
+ @mixin region-selection-outline {
4
+ outline: 4px solid $components-color-accent;
5
+ outline-offset: -4px;
6
+ }
7
+
8
+ @mixin region-selection-focus {
9
+ position: absolute;
10
+ top: 0;
11
+ left: 0;
12
+ right: 0;
13
+ bottom: 0;
14
+ content: "";
15
+ pointer-events: none;
16
+ @include region-selection-outline;
17
+ z-index: z-index(".is-focusing-regions {region} :focus::after");
18
+ }
19
+
2
20
  [role="region"] {
3
21
  position: relative;
22
+
23
+ // Handles the focus when we programatically send focus to this region
24
+ &.interface-interface-skeleton__content:focus-visible::after {
25
+ @include region-selection-focus;
26
+ }
4
27
  }
5
28
 
6
29
  .is-focusing-regions {
7
30
  [role="region"]:focus::after {
8
- position: absolute;
9
- top: 0;
10
- left: 0;
11
- right: 0;
12
- bottom: 0;
13
- content: "";
14
- pointer-events: none;
15
- outline: 4px solid $components-color-accent;
16
- outline-offset: -4px;
17
- z-index: z-index(".is-focusing-regions {region} :focus::after");
31
+ @include region-selection-focus;
18
32
  }
19
-
20
33
  // Fixes for edge cases.
21
34
  // Some of the regions are currently used for layout purposes as 'interface skeleton'
22
35
  // items. When they're absolutely positioned or when they contain absolutely
@@ -33,7 +46,6 @@
33
46
  .interface-interface-skeleton__actions .editor-layout__toggle-publish-panel,
34
47
  .interface-interface-skeleton__actions .editor-layout__toggle-entities-saved-states-panel,
35
48
  .editor-post-publish-panel {
36
- outline: 4px solid $components-color-accent;
37
- outline-offset: -4px;
49
+ @include region-selection-outline;
38
50
  }
39
51
  }
@@ -7,8 +7,7 @@ import { speak } from '@wordpress/a11y';
7
7
  /** @typedef {import('react').ComponentType} ComponentType */
8
8
 
9
9
  /**
10
- * A Higher Order Component used to be provide speak and debounced speak
11
- * functions.
10
+ * A Higher Order Component used to provide speak and debounced speak functions.
12
11
  *
13
12
  * @see https://developer.wordpress.org/block-editor/packages/packages-a11y/#speak
14
13
  *
@@ -20,7 +20,8 @@ export type MenuItemsChoiceProps = {
20
20
  * Callback function to be called with the selected choice when user
21
21
  * selects a new choice.
22
22
  */
23
- onSelect( value: string ): void;
23
+ onSelect: ( value: string ) => void;
24
+
24
25
  /**
25
26
  * Callback function to be called with a choice when user
26
27
  * hovers over a new choice (will be empty on mouse leave).
@@ -16,6 +16,7 @@ async function clearInput( input: HTMLInputElement ) {
16
16
  await click( input );
17
17
 
18
18
  // Press backspace as many times as the input's current value
19
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
20
  for ( const _ of Array( input.value.length ) ) {
20
21
  await press.Backspace();
21
22
  }
@@ -13,9 +13,7 @@ import {
13
13
  offset as offsetMiddleware,
14
14
  size,
15
15
  } from '@floating-ui/react-dom';
16
- // eslint-disable-next-line no-restricted-imports
17
16
  import type { HTMLMotionProps, MotionProps } from 'framer-motion';
18
- // eslint-disable-next-line no-restricted-imports
19
17
  import { motion } from 'framer-motion';
20
18
 
21
19
  /**
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import type { MotionProps } from 'framer-motion';
6
5
  import type { Placement, ReferenceType } from '@floating-ui/react-dom';
7
6
 
@@ -1,8 +1,3 @@
1
- /**
2
- * WordPress dependencies
3
- */
4
- import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';
5
-
6
1
  /**
7
2
  * Internal dependencies
8
3
  */
@@ -14,6 +9,7 @@ import {
14
9
  useCompositeStore as useCompositeStoreV2,
15
10
  } from './composite/v2';
16
11
  import { default as CustomSelectControl } from './custom-select-control';
12
+ import { default as CustomSelectControlV2Legacy } from './custom-select-control-v2/legacy-component';
17
13
  import { positionToPlacement as __experimentalPopoverLegacyPositionToPlacement } from './popover/utils';
18
14
  import { createPrivateSlotFill } from './slot-fill';
19
15
  import {
@@ -39,6 +35,7 @@ lock( privateApis, {
39
35
  CompositeItemV2,
40
36
  CompositeRowV2,
41
37
  useCompositeStoreV2,
38
+ CustomSelectControlV2Legacy,
42
39
  CustomSelectControl,
43
40
  __experimentalPopoverLegacyPositionToPlacement,
44
41
  createPrivateSlotFill,
@@ -4,19 +4,28 @@
4
4
  import styled from '@emotion/styled';
5
5
  import { css, keyframes } from '@emotion/react';
6
6
 
7
+ /**
8
+ * WordPress dependencies
9
+ */
10
+ import { isRTL } from '@wordpress/i18n';
11
+
7
12
  /**
8
13
  * Internal dependencies
9
14
  */
10
15
  import { COLORS, CONFIG } from '../utils';
11
16
 
12
- const animateProgressBar = keyframes( {
13
- '0%': {
14
- left: '-50%',
15
- },
16
- '100%': {
17
- left: '100%',
18
- },
19
- } );
17
+ function animateProgressBar( isRtl = false ) {
18
+ const animationDirection = isRtl ? 'right' : 'left';
19
+
20
+ return keyframes( {
21
+ '0%': {
22
+ [ animationDirection ]: '-50%',
23
+ },
24
+ '100%': {
25
+ [ animationDirection ]: '100%',
26
+ },
27
+ } );
28
+ }
20
29
 
21
30
  // Width of the indicator for the indeterminate progress bar
22
31
  export const INDETERMINATE_TRACK_WIDTH = 50;
@@ -67,7 +76,7 @@ export const Indicator = styled.div< {
67
76
  animationDuration: '1.5s',
68
77
  animationTimingFunction: 'ease-in-out',
69
78
  animationIterationCount: 'infinite',
70
- animationName: animateProgressBar,
79
+ animationName: animateProgressBar( isRTL() ),
71
80
  width: `${ INDETERMINATE_TRACK_WIDTH }%`,
72
81
  } )
73
82
  : css( {
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import type * as Ariakit from '@ariakit/react';
6
5
 
7
6
  /**
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
 
7
6
  /**
@@ -6,7 +6,6 @@ import { forwardRef, useContext } from '@wordpress/element';
6
6
  /**
7
7
  * External dependencies
8
8
  */
9
- // eslint-disable-next-line no-restricted-imports
10
9
  import * as Ariakit from '@ariakit/react';
11
10
 
12
11
  /**
@@ -326,6 +326,8 @@ function UnforwardedRangeControl(
326
326
  <ActionRightWrapper>
327
327
  <Button
328
328
  className="components-range-control__reset"
329
+ // If the RangeControl itself is disabled, the reset button shouldn't be in the tab sequence.
330
+ accessibleWhenDisabled={ ! disabled }
329
331
  disabled={ disabled || value === undefined }
330
332
  variant="secondary"
331
333
  size="small"
@@ -168,13 +168,17 @@ const markLabelFill = ( { isFilled }: RangeMarkProps ) => {
168
168
 
169
169
  export const MarkLabel = styled.span`
170
170
  color: ${ COLORS.gray[ 300 ] };
171
- left: 0;
172
171
  font-size: 11px;
173
172
  position: absolute;
174
173
  top: 12px;
175
- transform: translateX( -50% );
176
174
  white-space: nowrap;
177
175
 
176
+ ${ rtl( { left: 0 } ) };
177
+ ${ rtl(
178
+ { transform: 'translateX( -50% )' },
179
+ { transform: 'translateX( 50% )' }
180
+ ) };
181
+
178
182
  ${ markLabelFill };
179
183
  `;
180
184
 
@@ -25,7 +25,7 @@ interface UseResizeLabelProps {
25
25
  interface UseResizeLabelArgs {
26
26
  axis?: Axis;
27
27
  fadeTimeout: number;
28
- onResize( data: { width: number | null; height: number | null } ): void;
28
+ onResize: ( data: { width: number | null; height: number | null } ) => void;
29
29
  position: Position;
30
30
  showPx: boolean;
31
31
  }
@@ -13,8 +13,7 @@ import { forwardRef } from '@wordpress/element';
13
13
  * Internal dependencies
14
14
  */
15
15
  import BaseControl from '../base-control';
16
- import InputBase from '../input-control/input-base';
17
- import { Select } from './styles/select-control-styles';
16
+ import { Select, StyledInputBase } from './styles/select-control-styles';
18
17
  import type { WordPressComponentProps } from '../context';
19
18
  import type { SelectControlProps } from './types';
20
19
  import SelectControlChevronDown from './chevron-down';
@@ -82,7 +81,7 @@ function UnforwardedSelectControl(
82
81
  id={ id }
83
82
  __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
84
83
  >
85
- <InputBase
84
+ <StyledInputBase
86
85
  className={ classes }
87
86
  disabled={ disabled }
88
87
  hideLabelFromVision={ hideLabelFromVision }
@@ -127,7 +126,7 @@ function UnforwardedSelectControl(
127
126
  );
128
127
  } ) }
129
128
  </Select>
130
- </InputBase>
129
+ </StyledInputBase>
131
130
  </BaseControl>
132
131
  );
133
132
  }
@@ -12,6 +12,7 @@ import { space } from '../../utils/space';
12
12
  import type { SelectControlProps } from '../types';
13
13
  import InputControlSuffixWrapper from '../../input-control/input-suffix-wrapper';
14
14
  import { fontSizeStyles } from '../../input-control/styles/input-control-styles';
15
+ import InputBase from '../../input-control/input-base';
15
16
 
16
17
  interface SelectProps
17
18
  extends Pick<
@@ -28,11 +29,19 @@ const disabledStyles = ( { disabled }: SelectProps ) => {
28
29
  return '';
29
30
  }
30
31
 
31
- return css( {
32
- color: COLORS.ui.textDisabled,
33
- } );
32
+ return css`
33
+ color: ${ COLORS.ui.textDisabled };
34
+ cursor: default;
35
+ `;
34
36
  };
35
37
 
38
+ export const StyledInputBase = styled( InputBase )`
39
+ color: ${ COLORS.theme.foreground };
40
+ cursor: pointer;
41
+
42
+ ${ disabledStyles }
43
+ `;
44
+
36
45
  const sizeStyles = ( {
37
46
  __next40pxDefaultSize,
38
47
  multiple,
@@ -128,17 +137,15 @@ export const Select = styled.select< SelectProps >`
128
137
  box-sizing: border-box;
129
138
  border: none;
130
139
  box-shadow: none !important;
131
- color: ${ COLORS.gray[ 900 ] };
140
+ cursor: inherit;
132
141
  display: block;
133
142
  font-family: inherit;
134
143
  margin: 0;
135
144
  width: 100%;
136
145
  max-width: none;
137
- cursor: pointer;
138
146
  white-space: nowrap;
139
147
  text-overflow: ellipsis;
140
148
 
141
- ${ disabledStyles };
142
149
  ${ fontSizeStyles };
143
150
  ${ sizeStyles };
144
151
  ${ sizePaddings };
@@ -149,6 +156,10 @@ export const Select = styled.select< SelectProps >`
149
156
  export const DownArrowWrapper = styled.div`
150
157
  margin-inline-end: ${ space( -1 ) }; // optically adjust the icon
151
158
  line-height: 0;
159
+
160
+ path {
161
+ fill: currentColor;
162
+ }
152
163
  `;
153
164
 
154
165
  export const InputControlSuffixWrapperWithClickThrough = styled(
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
  import clsx from 'clsx';
7
6
  import type { ForwardedRef } from 'react';
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- // eslint-disable-next-line no-restricted-imports
5
4
  import * as Ariakit from '@ariakit/react';
6
5
 
7
6
  /**
@@ -16,6 +16,8 @@ import Tabs from '..';
16
16
  import { Slot, Fill, Provider as SlotFillProvider } from '../../slot-fill';
17
17
  import DropdownMenu from '../../dropdown-menu';
18
18
  import Button from '../../button';
19
+ import Tooltip from '../../tooltip';
20
+ import Icon from '../../icon';
19
21
 
20
22
  const meta: Meta< typeof Tabs > = {
21
23
  title: 'Components (Experimental)/Tabs',
@@ -110,24 +112,29 @@ const WithTabIconsAndTooltipsTemplate: StoryFn< typeof Tabs > = ( props ) => {
110
112
  return (
111
113
  <Tabs { ...props }>
112
114
  <Tabs.TabList>
113
- <Tabs.Tab
114
- tabId="tab1"
115
- render={
116
- <Button icon={ wordpress } label="Tab 1" showTooltip />
117
- }
118
- />
119
- <Tabs.Tab
120
- tabId="tab2"
121
- render={
122
- <Button icon={ link } label="Tab 2" showTooltip />
123
- }
124
- />
125
- <Tabs.Tab
126
- tabId="tab3"
127
- render={
128
- <Button icon={ more } label="Tab 3" showTooltip />
129
- }
130
- />
115
+ { [
116
+ {
117
+ id: 'tab1',
118
+ label: 'Tab one',
119
+ icon: wordpress,
120
+ },
121
+ {
122
+ id: 'tab2',
123
+ label: 'Tab two',
124
+ icon: link,
125
+ },
126
+ {
127
+ id: 'tab3',
128
+ label: 'Tab three',
129
+ icon: more,
130
+ },
131
+ ].map( ( { id, label, icon } ) => (
132
+ <Tooltip text={ label } key={ id }>
133
+ <Tabs.Tab tabId={ id } aria-label={ label }>
134
+ <Icon icon={ icon } />
135
+ </Tabs.Tab>
136
+ </Tooltip>
137
+ ) ) }
131
138
  </Tabs.TabList>
132
139
  <Tabs.TabPanel tabId="tab1">
133
140
  <p>Selected tab: Tab 1</p>
@@ -2,7 +2,6 @@
2
2
  * External dependencies
3
3
  */
4
4
  import styled from '@emotion/styled';
5
- // eslint-disable-next-line no-restricted-imports
6
5
  import * as Ariakit from '@ariakit/react';
7
6
 
8
7
  /**
@@ -16,9 +15,13 @@ export const TabListWrapper = styled.div`
16
15
  display: flex;
17
16
  align-items: stretch;
18
17
  flex-direction: row;
18
+ text-align: center;
19
+
19
20
  &[aria-orientation='vertical'] {
20
21
  flex-direction: column;
22
+ text-align: start;
21
23
  }
24
+
22
25
  @media not ( prefers-reduced-motion: reduce ) {
23
26
  &.is-animation-enabled::after {
24
27
  transition-property: left, top, width, height;
@@ -36,22 +39,20 @@ export const TabListWrapper = styled.div`
36
39
  outline-offset: -1px;
37
40
  }
38
41
  &:not( [aria-orientation='vertical'] )::after {
39
- left: var( --indicator-left );
40
42
  bottom: 0;
43
+ left: var( --indicator-left );
41
44
  width: var( --indicator-width );
42
45
  height: 0;
43
46
  border-bottom: var( --wp-admin-border-width-focus ) solid
44
47
  ${ COLORS.theme.accent };
45
48
  }
46
49
  &[aria-orientation='vertical']::after {
47
- /* Temporarily hidden, context: https://github.com/WordPress/gutenberg/pull/60560#issuecomment-2126670072 */
48
- opacity: 0;
49
-
50
- right: 0;
50
+ z-index: -1;
51
+ left: 0;
52
+ width: 100%;
51
53
  top: var( --indicator-top );
52
54
  height: var( --indicator-height );
53
- border-right: var( --wp-admin-border-width-focus ) solid
54
- ${ COLORS.theme.accent };
55
+ background-color: ${ COLORS.theme.gray[ 100 ] };
55
56
  }
56
57
  `;
57
58
 
@@ -61,14 +62,19 @@ export const Tab = styled( Ariakit.Tab )`
61
62
  align-items: center;
62
63
  position: relative;
63
64
  border-radius: 0;
64
- height: ${ space( 12 ) };
65
+ min-height: ${ space(
66
+ 12
67
+ ) }; // Avoid fixed height to allow for long strings that go in multiple lines.
68
+ height: auto;
65
69
  background: transparent;
66
70
  border: none;
67
71
  box-shadow: none;
68
72
  cursor: pointer;
69
- padding: 3px ${ space( 4 ) }; // Use padding to offset the [aria-selected="true"] border, this benefits Windows High Contrast mode
73
+ line-height: 1.2; // Some languages characters e.g. Japanese may have a native higher line-height.
74
+ padding: ${ space( 4 ) };
70
75
  margin-left: 0;
71
76
  font-weight: 500;
77
+ text-align: inherit;
72
78
 
73
79
  &[aria-disabled='true'] {
74
80
  cursor: default;
@@ -96,7 +102,8 @@ export const Tab = styled( Ariakit.Tab )`
96
102
  pointer-events: none;
97
103
 
98
104
  // Draw the indicator.
99
- box-shadow: 0 0 0 var( --wp-admin-border-width-focus )
105
+ // Outline works for Windows high contrast mode as well.
106
+ outline: var( --wp-admin-border-width-focus ) solid
100
107
  ${ COLORS.theme.accent };
101
108
  border-radius: 2px;
102
109
 
@@ -110,9 +117,6 @@ export const Tab = styled( Ariakit.Tab )`
110
117
 
111
118
  &:focus-visible::before {
112
119
  opacity: 1;
113
-
114
- // Windows high contrast mode.
115
- outline: 2px solid transparent;
116
120
  }
117
121
  }
118
122
  `;