@wordpress/components 22.0.0 → 23.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (796) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/build/alignment-matrix-control/cell.js.map +1 -1
  3. package/build/alignment-matrix-control/icon.js +4 -2
  4. package/build/alignment-matrix-control/icon.js.map +1 -1
  5. package/build/alignment-matrix-control/index.js +25 -1
  6. package/build/alignment-matrix-control/index.js.map +1 -1
  7. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  8. package/build/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  9. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  10. package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  11. package/build/alignment-matrix-control/types.js +6 -0
  12. package/build/alignment-matrix-control/types.js.map +1 -0
  13. package/build/alignment-matrix-control/utils.js +9 -8
  14. package/build/alignment-matrix-control/utils.js.map +1 -1
  15. package/build/angle-picker-control/index.js +3 -1
  16. package/build/angle-picker-control/index.js.map +1 -1
  17. package/build/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  18. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  19. package/build/autocomplete/index.js +45 -12
  20. package/build/autocomplete/index.js.map +1 -1
  21. package/build/base-control/hooks.js +52 -0
  22. package/build/base-control/hooks.js.map +1 -0
  23. package/build/base-control/index.js +24 -7
  24. package/build/base-control/index.js.map +1 -1
  25. package/build/base-field/hook.js +0 -14
  26. package/build/base-field/hook.js.map +1 -1
  27. package/build/base-field/index.js.map +1 -1
  28. package/build/base-field/styles.js +5 -5
  29. package/build/base-field/styles.js.map +1 -1
  30. package/build/base-field/types.js +6 -0
  31. package/build/base-field/types.js.map +1 -0
  32. package/build/border-box-control/border-box-control/component.js +1 -1
  33. package/build/border-box-control/border-box-control/component.js.map +1 -1
  34. package/build/border-box-control/border-box-control/hook.js +13 -1
  35. package/build/border-box-control/border-box-control/hook.js.map +1 -1
  36. package/build/border-box-control/border-box-control-split-controls/hook.js +11 -1
  37. package/build/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  38. package/build/border-control/border-control/component.js +3 -2
  39. package/build/border-control/border-control/component.js.map +1 -1
  40. package/build/border-control/border-control/hook.js +11 -1
  41. package/build/border-control/border-control/hook.js.map +1 -1
  42. package/build/border-control/border-control-dropdown/component.js +1 -1
  43. package/build/border-control/border-control-dropdown/component.js.map +1 -1
  44. package/build/border-control/border-control-dropdown/hook.js +10 -2
  45. package/build/border-control/border-control-dropdown/hook.js.map +1 -1
  46. package/build/border-control/styles.js +16 -16
  47. package/build/border-control/styles.js.map +1 -1
  48. package/build/box-control/linked-button.js +3 -4
  49. package/build/box-control/linked-button.js.map +1 -1
  50. package/build/color-palette/index.js +3 -8
  51. package/build/color-palette/index.js.map +1 -1
  52. package/build/color-picker/input-with-slider.js +18 -3
  53. package/build/color-picker/input-with-slider.js.map +1 -1
  54. package/build/color-picker/styles.js +8 -8
  55. package/build/color-picker/styles.js.map +1 -1
  56. package/build/custom-select-control/index.js +19 -4
  57. package/build/custom-select-control/index.js.map +1 -1
  58. package/build/dashicon/index.js +18 -6
  59. package/build/dashicon/index.js.map +1 -1
  60. package/build/date-time/date-time/index.js +4 -4
  61. package/build/date-time/date-time/index.js.map +1 -1
  62. package/build/draggable/index.js +58 -38
  63. package/build/draggable/index.js.map +1 -1
  64. package/build/draggable/types.js +6 -0
  65. package/build/draggable/types.js.map +1 -0
  66. package/build/duotone-picker/duotone-picker.js +2 -2
  67. package/build/duotone-picker/duotone-picker.js.map +1 -1
  68. package/build/flex/flex/hook.js +2 -3
  69. package/build/flex/flex/hook.js.map +1 -1
  70. package/build/focal-point-picker/focal-point.js +2 -12
  71. package/build/focal-point-picker/focal-point.js.map +1 -1
  72. package/build/focal-point-picker/styles/focal-point-style.js +11 -51
  73. package/build/focal-point-picker/styles/focal-point-style.js.map +1 -1
  74. package/build/font-size-picker/constants.js +41 -0
  75. package/build/font-size-picker/constants.js.map +1 -0
  76. package/build/font-size-picker/font-size-picker-select.js +97 -0
  77. package/build/font-size-picker/font-size-picker-select.js.map +1 -0
  78. package/build/font-size-picker/font-size-picker-toggle-group.js +50 -0
  79. package/build/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  80. package/build/font-size-picker/index.js +39 -76
  81. package/build/font-size-picker/index.js.map +1 -1
  82. package/build/font-size-picker/utils.js +17 -89
  83. package/build/font-size-picker/utils.js.map +1 -1
  84. package/build/form-token-field/index.js +9 -6
  85. package/build/form-token-field/index.js.map +1 -1
  86. package/build/gradient-picker/index.js +3 -9
  87. package/build/gradient-picker/index.js.map +1 -1
  88. package/build/higher-order/navigate-regions/index.js +3 -0
  89. package/build/higher-order/navigate-regions/index.js.map +1 -1
  90. package/build/higher-order/with-fallback-styles/index.js +2 -2
  91. package/build/higher-order/with-fallback-styles/index.js.map +1 -1
  92. package/build/icon/index.js +3 -2
  93. package/build/icon/index.js.map +1 -1
  94. package/build/index.js +21 -1
  95. package/build/index.js.map +1 -1
  96. package/build/input-control/index.js +17 -5
  97. package/build/input-control/index.js.map +1 -1
  98. package/build/input-control/input-base.js +2 -0
  99. package/build/input-control/input-base.js.map +1 -1
  100. package/build/menu-group/index.js +17 -3
  101. package/build/menu-group/index.js.map +1 -1
  102. package/build/menu-group/types.js +6 -0
  103. package/build/menu-group/types.js.map +1 -0
  104. package/build/mobile/bottom-sheet/cell.native.js +1 -1
  105. package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
  106. package/build/mobile/bottom-sheet/switch-cell.native.js +1 -3
  107. package/build/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  108. package/build/mobile/global-styles-context/index.native.js +8 -8
  109. package/build/mobile/global-styles-context/index.native.js.map +1 -1
  110. package/build/mobile/keyboard-aware-flat-list/index.ios.js +4 -2
  111. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  112. package/build/modal/index.js +8 -0
  113. package/build/modal/index.js.map +1 -1
  114. package/build/navigator/navigator-provider/component.js +12 -8
  115. package/build/navigator/navigator-provider/component.js.map +1 -1
  116. package/build/navigator/navigator-screen/component.js +9 -5
  117. package/build/navigator/navigator-screen/component.js.map +1 -1
  118. package/build/number-control/styles/number-control-styles.js +8 -8
  119. package/build/number-control/styles/number-control-styles.js.map +1 -1
  120. package/build/palette-edit/index.js +75 -34
  121. package/build/palette-edit/index.js.map +1 -1
  122. package/build/popover/index.js +18 -6
  123. package/build/popover/index.js.map +1 -1
  124. package/build/query-controls/index.js +1 -0
  125. package/build/query-controls/index.js.map +1 -1
  126. package/build/range-control/styles/range-control-styles.js +47 -57
  127. package/build/range-control/styles/range-control-styles.js.map +1 -1
  128. package/build/snackbar/index.js +35 -24
  129. package/build/snackbar/index.js.map +1 -1
  130. package/build/snackbar/list.js +14 -19
  131. package/build/snackbar/list.js.map +1 -1
  132. package/build/snackbar/types.js +6 -0
  133. package/build/snackbar/types.js.map +1 -0
  134. package/build/spinner/styles.js +4 -4
  135. package/build/spinner/styles.js.map +1 -1
  136. package/build/tab-panel/index.js +12 -8
  137. package/build/tab-panel/index.js.map +1 -1
  138. package/build/theme/color-algorithms.js +118 -0
  139. package/build/theme/color-algorithms.js.map +1 -0
  140. package/build/theme/index.js +21 -18
  141. package/build/theme/index.js.map +1 -1
  142. package/build/theme/styles.js +10 -7
  143. package/build/theme/styles.js.map +1 -1
  144. package/build/toggle-control/index.js +5 -2
  145. package/build/toggle-control/index.js.map +1 -1
  146. package/build/toggle-group-control/toggle-group-control/component.js +1 -0
  147. package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
  148. package/build/toggle-group-control/toggle-group-control/styles.js +11 -6
  149. package/build/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  150. package/build/tools-panel/styles.js +14 -14
  151. package/build/tools-panel/styles.js.map +1 -1
  152. package/build/tools-panel/tools-panel-item/hook.js +9 -5
  153. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  154. package/build/ui/context/context-system-provider.js +3 -1
  155. package/build/ui/context/context-system-provider.js.map +1 -1
  156. package/build/unit-control/index.js +5 -2
  157. package/build/unit-control/index.js.map +1 -1
  158. package/build/utils/colors-values.js +4 -3
  159. package/build/utils/colors-values.js.map +1 -1
  160. package/build/utils/config-values.js +0 -2
  161. package/build/utils/config-values.js.map +1 -1
  162. package/build/utils/hooks/use-controlled-value.js.map +1 -1
  163. package/build/utils/input/base.js +2 -2
  164. package/build/utils/input/base.js.map +1 -1
  165. package/build/view/index.js.map +1 -1
  166. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  167. package/build-module/alignment-matrix-control/icon.js +4 -2
  168. package/build-module/alignment-matrix-control/icon.js.map +1 -1
  169. package/build-module/alignment-matrix-control/index.js +23 -1
  170. package/build-module/alignment-matrix-control/index.js.map +1 -1
  171. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js +13 -13
  172. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.js.map +1 -1
  173. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +16 -16
  174. package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
  175. package/build-module/alignment-matrix-control/types.js +2 -0
  176. package/build-module/alignment-matrix-control/types.js.map +1 -0
  177. package/build-module/alignment-matrix-control/utils.js +13 -8
  178. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  179. package/build-module/angle-picker-control/index.js +2 -1
  180. package/build-module/angle-picker-control/index.js.map +1 -1
  181. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +9 -9
  182. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  183. package/build-module/autocomplete/index.js +45 -12
  184. package/build-module/autocomplete/index.js.map +1 -1
  185. package/build-module/base-control/hooks.js +41 -0
  186. package/build-module/base-control/hooks.js.map +1 -0
  187. package/build-module/base-control/index.js +18 -8
  188. package/build-module/base-control/index.js.map +1 -1
  189. package/build-module/base-field/hook.js +0 -14
  190. package/build-module/base-field/hook.js.map +1 -1
  191. package/build-module/base-field/index.js.map +1 -1
  192. package/build-module/base-field/styles.js +5 -5
  193. package/build-module/base-field/styles.js.map +1 -1
  194. package/build-module/base-field/types.js +2 -0
  195. package/build-module/base-field/types.js.map +1 -0
  196. package/build-module/border-box-control/border-box-control/component.js +1 -1
  197. package/build-module/border-box-control/border-box-control/component.js.map +1 -1
  198. package/build-module/border-box-control/border-box-control/hook.js +13 -1
  199. package/build-module/border-box-control/border-box-control/hook.js.map +1 -1
  200. package/build-module/border-box-control/border-box-control-split-controls/hook.js +11 -1
  201. package/build-module/border-box-control/border-box-control-split-controls/hook.js.map +1 -1
  202. package/build-module/border-control/border-control/component.js +3 -2
  203. package/build-module/border-control/border-control/component.js.map +1 -1
  204. package/build-module/border-control/border-control/hook.js +11 -1
  205. package/build-module/border-control/border-control/hook.js.map +1 -1
  206. package/build-module/border-control/border-control-dropdown/component.js +1 -1
  207. package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
  208. package/build-module/border-control/border-control-dropdown/hook.js +10 -2
  209. package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
  210. package/build-module/border-control/styles.js +17 -17
  211. package/build-module/border-control/styles.js.map +1 -1
  212. package/build-module/box-control/linked-button.js +3 -4
  213. package/build-module/box-control/linked-button.js.map +1 -1
  214. package/build-module/color-palette/index.js +3 -8
  215. package/build-module/color-palette/index.js.map +1 -1
  216. package/build-module/color-picker/input-with-slider.js +18 -3
  217. package/build-module/color-picker/input-with-slider.js.map +1 -1
  218. package/build-module/color-picker/styles.js +8 -8
  219. package/build-module/color-picker/styles.js.map +1 -1
  220. package/build-module/custom-select-control/index.js +19 -4
  221. package/build-module/custom-select-control/index.js.map +1 -1
  222. package/build-module/dashicon/index.js +18 -6
  223. package/build-module/dashicon/index.js.map +1 -1
  224. package/build-module/date-time/date-time/index.js +4 -4
  225. package/build-module/date-time/date-time/index.js.map +1 -1
  226. package/build-module/draggable/index.js +59 -38
  227. package/build-module/draggable/index.js.map +1 -1
  228. package/build-module/draggable/types.js +2 -0
  229. package/build-module/draggable/types.js.map +1 -0
  230. package/build-module/duotone-picker/duotone-picker.js +2 -2
  231. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  232. package/build-module/flex/flex/hook.js +2 -3
  233. package/build-module/flex/flex/hook.js.map +1 -1
  234. package/build-module/focal-point-picker/focal-point.js +3 -13
  235. package/build-module/focal-point-picker/focal-point.js.map +1 -1
  236. package/build-module/focal-point-picker/styles/focal-point-style.js +6 -52
  237. package/build-module/focal-point-picker/styles/focal-point-style.js.map +1 -1
  238. package/build-module/font-size-picker/constants.js +31 -0
  239. package/build-module/font-size-picker/constants.js.map +1 -0
  240. package/build-module/font-size-picker/font-size-picker-select.js +83 -0
  241. package/build-module/font-size-picker/font-size-picker-select.js.map +1 -0
  242. package/build-module/font-size-picker/font-size-picker-toggle-group.js +40 -0
  243. package/build-module/font-size-picker/font-size-picker-toggle-group.js.map +1 -0
  244. package/build-module/font-size-picker/index.js +38 -76
  245. package/build-module/font-size-picker/index.js.map +1 -1
  246. package/build-module/font-size-picker/utils.js +15 -86
  247. package/build-module/font-size-picker/utils.js.map +1 -1
  248. package/build-module/form-token-field/index.js +9 -6
  249. package/build-module/form-token-field/index.js.map +1 -1
  250. package/build-module/gradient-picker/index.js +3 -8
  251. package/build-module/gradient-picker/index.js.map +1 -1
  252. package/build-module/higher-order/navigate-regions/index.js +3 -0
  253. package/build-module/higher-order/navigate-regions/index.js.map +1 -1
  254. package/build-module/higher-order/with-fallback-styles/index.js +2 -2
  255. package/build-module/higher-order/with-fallback-styles/index.js.map +1 -1
  256. package/build-module/icon/index.js +3 -2
  257. package/build-module/icon/index.js.map +1 -1
  258. package/build-module/index.js +3 -2
  259. package/build-module/index.js.map +1 -1
  260. package/build-module/input-control/index.js +16 -5
  261. package/build-module/input-control/index.js.map +1 -1
  262. package/build-module/input-control/input-base.js +2 -0
  263. package/build-module/input-control/input-base.js.map +1 -1
  264. package/build-module/menu-group/index.js +20 -2
  265. package/build-module/menu-group/index.js.map +1 -1
  266. package/build-module/menu-group/types.js +2 -0
  267. package/build-module/menu-group/types.js.map +1 -0
  268. package/build-module/mobile/bottom-sheet/cell.native.js +1 -1
  269. package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
  270. package/build-module/mobile/bottom-sheet/switch-cell.native.js +1 -2
  271. package/build-module/mobile/bottom-sheet/switch-cell.native.js.map +1 -1
  272. package/build-module/mobile/global-styles-context/index.native.js +8 -7
  273. package/build-module/mobile/global-styles-context/index.native.js.map +1 -1
  274. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  275. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  276. package/build-module/modal/index.js +8 -0
  277. package/build-module/modal/index.js.map +1 -1
  278. package/build-module/navigator/navigator-provider/component.js +12 -8
  279. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  280. package/build-module/navigator/navigator-screen/component.js +9 -5
  281. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  282. package/build-module/number-control/styles/number-control-styles.js +8 -10
  283. package/build-module/number-control/styles/number-control-styles.js.map +1 -1
  284. package/build-module/palette-edit/index.js +76 -35
  285. package/build-module/palette-edit/index.js.map +1 -1
  286. package/build-module/popover/index.js +18 -6
  287. package/build-module/popover/index.js.map +1 -1
  288. package/build-module/query-controls/index.js +1 -0
  289. package/build-module/query-controls/index.js.map +1 -1
  290. package/build-module/range-control/styles/range-control-styles.js +47 -57
  291. package/build-module/range-control/styles/range-control-styles.js.map +1 -1
  292. package/build-module/snackbar/index.js +33 -23
  293. package/build-module/snackbar/index.js.map +1 -1
  294. package/build-module/snackbar/list.js +14 -22
  295. package/build-module/snackbar/list.js.map +1 -1
  296. package/build-module/snackbar/types.js +2 -0
  297. package/build-module/snackbar/types.js.map +1 -0
  298. package/build-module/spinner/styles.js +4 -4
  299. package/build-module/spinner/styles.js.map +1 -1
  300. package/build-module/tab-panel/index.js +13 -9
  301. package/build-module/tab-panel/index.js.map +1 -1
  302. package/build-module/theme/color-algorithms.js +105 -0
  303. package/build-module/theme/color-algorithms.js.map +1 -0
  304. package/build-module/theme/index.js +21 -17
  305. package/build-module/theme/index.js.map +1 -1
  306. package/build-module/theme/styles.js +8 -6
  307. package/build-module/theme/styles.js.map +1 -1
  308. package/build-module/toggle-control/index.js +4 -2
  309. package/build-module/toggle-control/index.js.map +1 -1
  310. package/build-module/toggle-group-control/toggle-group-control/component.js +1 -0
  311. package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
  312. package/build-module/toggle-group-control/toggle-group-control/styles.js +12 -6
  313. package/build-module/toggle-group-control/toggle-group-control/styles.js.map +1 -1
  314. package/build-module/tools-panel/styles.js +14 -14
  315. package/build-module/tools-panel/styles.js.map +1 -1
  316. package/build-module/tools-panel/tools-panel-item/hook.js +9 -5
  317. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  318. package/build-module/ui/context/context-system-provider.js +3 -2
  319. package/build-module/ui/context/context-system-provider.js.map +1 -1
  320. package/build-module/unit-control/index.js +5 -2
  321. package/build-module/unit-control/index.js.map +1 -1
  322. package/build-module/utils/colors-values.js +4 -3
  323. package/build-module/utils/colors-values.js.map +1 -1
  324. package/build-module/utils/config-values.js +0 -2
  325. package/build-module/utils/config-values.js.map +1 -1
  326. package/build-module/utils/hooks/use-controlled-value.js.map +1 -1
  327. package/build-module/utils/input/base.js +2 -2
  328. package/build-module/utils/input/base.js.map +1 -1
  329. package/build-module/view/index.js.map +1 -1
  330. package/build-style/style-rtl.css +145 -100
  331. package/build-style/style.css +145 -100
  332. package/build-types/alignment-matrix-control/cell.d.ts +5 -0
  333. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -0
  334. package/build-types/alignment-matrix-control/icon.d.ts +6 -0
  335. package/build-types/alignment-matrix-control/icon.d.ts.map +1 -0
  336. package/build-types/alignment-matrix-control/index.d.ts +30 -0
  337. package/build-types/alignment-matrix-control/index.d.ts.map +1 -0
  338. package/build-types/alignment-matrix-control/stories/index.d.ts +14 -0
  339. package/build-types/alignment-matrix-control/stories/index.d.ts.map +1 -0
  340. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts +19 -0
  341. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-icon-styles.d.ts.map +1 -0
  342. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts +23 -0
  343. package/build-types/alignment-matrix-control/styles/alignment-matrix-control-styles.d.ts.map +1 -0
  344. package/build-types/alignment-matrix-control/test/index.d.ts +2 -0
  345. package/build-types/alignment-matrix-control/test/index.d.ts.map +1 -0
  346. package/build-types/alignment-matrix-control/types.d.ts +39 -0
  347. package/build-types/alignment-matrix-control/types.d.ts.map +1 -0
  348. package/build-types/alignment-matrix-control/utils.d.ts +33 -0
  349. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -0
  350. package/build-types/base-control/hooks.d.ts +23 -0
  351. package/build-types/base-control/hooks.d.ts.map +1 -0
  352. package/build-types/base-control/index.d.ts +17 -7
  353. package/build-types/base-control/index.d.ts.map +1 -1
  354. package/build-types/base-control/stories/index.d.ts.map +1 -1
  355. package/build-types/base-control/test/index.d.ts +2 -0
  356. package/build-types/base-control/test/index.d.ts.map +1 -0
  357. package/build-types/base-control/types.d.ts +8 -2
  358. package/build-types/base-control/types.d.ts.map +1 -1
  359. package/build-types/base-field/hook.d.ts +7 -31
  360. package/build-types/base-field/hook.d.ts.map +1 -1
  361. package/build-types/base-field/index.d.ts +1 -1
  362. package/build-types/base-field/index.d.ts.map +1 -1
  363. package/build-types/base-field/styles.d.ts +5 -5
  364. package/build-types/base-field/styles.d.ts.map +1 -1
  365. package/build-types/base-field/test/index.d.ts +2 -0
  366. package/build-types/base-field/test/index.d.ts.map +1 -0
  367. package/build-types/base-field/types.d.ts +29 -0
  368. package/build-types/base-field/types.d.ts.map +1 -0
  369. package/build-types/border-box-control/border-box-control/component.d.ts +4 -4
  370. package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
  371. package/build-types/border-box-control/border-box-control/hook.d.ts +8 -8
  372. package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
  373. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts +4 -2
  374. package/build-types/border-box-control/border-box-control-linked-button/component.d.ts.map +1 -1
  375. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  376. package/build-types/border-box-control/border-box-control-split-controls/component.d.ts +3 -3
  377. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +7 -7
  378. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
  379. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts +3 -2
  380. package/build-types/border-box-control/border-box-control-visualizer/component.d.ts.map +1 -1
  381. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  382. package/build-types/border-box-control/stories/index.d.ts +3 -3
  383. package/build-types/border-box-control/types.d.ts +5 -38
  384. package/build-types/border-box-control/types.d.ts.map +1 -1
  385. package/build-types/border-control/border-control/component.d.ts +4 -2
  386. package/build-types/border-control/border-control/component.d.ts.map +1 -1
  387. package/build-types/border-control/border-control/hook.d.ts +7 -7
  388. package/build-types/border-control/border-control/hook.d.ts.map +1 -1
  389. package/build-types/border-control/border-control-dropdown/component.d.ts +3 -3
  390. package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
  391. package/build-types/border-control/border-control-dropdown/hook.d.ts +7 -7
  392. package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
  393. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  394. package/build-types/border-control/stories/index.d.ts +24 -12
  395. package/build-types/border-control/stories/index.d.ts.map +1 -1
  396. package/build-types/border-control/styles.d.ts.map +1 -1
  397. package/build-types/border-control/types.d.ts +10 -51
  398. package/build-types/border-control/types.d.ts.map +1 -1
  399. package/build-types/card/card/hook.d.ts +2 -2
  400. package/build-types/card/card-body/hook.d.ts +2 -2
  401. package/build-types/card/card-divider/hook.d.ts +2 -2
  402. package/build-types/card/card-footer/hook.d.ts +2 -2
  403. package/build-types/card/card-header/hook.d.ts +2 -2
  404. package/build-types/card/card-media/hook.d.ts +2 -2
  405. package/build-types/color-palette/index.d.ts +16 -2
  406. package/build-types/color-palette/index.d.ts.map +1 -1
  407. package/build-types/color-palette/stories/index.d.ts +30 -2
  408. package/build-types/color-palette/stories/index.d.ts.map +1 -1
  409. package/build-types/color-palette/styles.d.ts +1 -1
  410. package/build-types/color-palette/types.d.ts +14 -10
  411. package/build-types/color-palette/types.d.ts.map +1 -1
  412. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  413. package/build-types/color-picker/styles.d.ts +5 -5
  414. package/build-types/color-picker/styles.d.ts.map +1 -1
  415. package/build-types/custom-select-control/index.d.ts.map +1 -1
  416. package/build-types/dashicon/index.d.ts +7 -16
  417. package/build-types/dashicon/index.d.ts.map +1 -1
  418. package/build-types/dashicon/types.d.ts +14 -0
  419. package/build-types/dashicon/types.d.ts.map +1 -1
  420. package/build-types/date-time/date/styles.d.ts +3 -3
  421. package/build-types/date-time/date-time/styles.d.ts +3 -3
  422. package/build-types/date-time/time/styles.d.ts +8 -8
  423. package/build-types/date-time/types.d.ts +0 -16
  424. package/build-types/date-time/types.d.ts.map +1 -1
  425. package/build-types/draggable/index.d.ts +42 -66
  426. package/build-types/draggable/index.d.ts.map +1 -1
  427. package/build-types/draggable/stories/index.d.ts +12 -0
  428. package/build-types/draggable/stories/index.d.ts.map +1 -0
  429. package/build-types/draggable/types.d.ts +58 -0
  430. package/build-types/draggable/types.d.ts.map +1 -0
  431. package/build-types/elevation/hook.d.ts +2 -2
  432. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  433. package/build-types/flex/flex/hook.d.ts +2 -2
  434. package/build-types/flex/flex/hook.d.ts.map +1 -1
  435. package/build-types/flex/flex-block/hook.d.ts +2 -2
  436. package/build-types/flex/flex-item/hook.d.ts +2 -2
  437. package/build-types/focal-point-picker/focal-point.d.ts.map +1 -1
  438. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -5
  439. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts.map +1 -1
  440. package/build-types/focal-point-picker/styles/focal-point-style.d.ts +1 -12
  441. package/build-types/focal-point-picker/styles/focal-point-style.d.ts.map +1 -1
  442. package/build-types/font-size-picker/constants.d.ts +15 -0
  443. package/build-types/font-size-picker/constants.d.ts.map +1 -0
  444. package/build-types/font-size-picker/font-size-picker-select.d.ts +5 -0
  445. package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -0
  446. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts +5 -0
  447. package/build-types/font-size-picker/font-size-picker-toggle-group.d.ts.map +1 -0
  448. package/build-types/font-size-picker/index.d.ts.map +1 -1
  449. package/build-types/font-size-picker/types.d.ts +13 -13
  450. package/build-types/font-size-picker/types.d.ts.map +1 -1
  451. package/build-types/font-size-picker/utils.d.ts +6 -18
  452. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  453. package/build-types/form-token-field/index.d.ts.map +1 -1
  454. package/build-types/grid/hook.d.ts +2 -2
  455. package/build-types/h-stack/component.d.ts +1 -1
  456. package/build-types/h-stack/hook.d.ts +2 -2
  457. package/build-types/heading/hook.d.ts +2 -2
  458. package/build-types/icon/index.d.ts +1 -1
  459. package/build-types/icon/index.d.ts.map +1 -1
  460. package/build-types/input-control/index.d.ts +1 -1
  461. package/build-types/input-control/index.d.ts.map +1 -1
  462. package/build-types/input-control/input-base.d.ts.map +1 -1
  463. package/build-types/input-control/stories/index.d.ts +1 -0
  464. package/build-types/input-control/stories/index.d.ts.map +1 -1
  465. package/build-types/input-control/types.d.ts +2 -1
  466. package/build-types/input-control/types.d.ts.map +1 -1
  467. package/build-types/item-group/item/hook.d.ts +2 -2
  468. package/build-types/item-group/item-group/hook.d.ts +2 -2
  469. package/build-types/menu-group/index.d.ts +21 -1
  470. package/build-types/menu-group/index.d.ts.map +1 -1
  471. package/build-types/menu-group/test/index.d.ts +2 -0
  472. package/build-types/menu-group/test/index.d.ts.map +1 -0
  473. package/build-types/menu-group/types.d.ts +23 -0
  474. package/build-types/menu-group/types.d.ts.map +1 -0
  475. package/build-types/modal/index.d.ts.map +1 -1
  476. package/build-types/modal/stories/index.d.ts.map +1 -1
  477. package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
  478. package/build-types/navigator/navigator-button/hook.d.ts +3 -3
  479. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  480. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  481. package/build-types/number-control/index.d.ts +2 -2
  482. package/build-types/number-control/index.d.ts.map +1 -1
  483. package/build-types/number-control/stories/index.d.ts +25 -0
  484. package/build-types/number-control/stories/index.d.ts.map +1 -0
  485. package/build-types/number-control/styles/number-control-styles.d.ts +6 -6
  486. package/build-types/number-control/styles/number-control-styles.d.ts.map +1 -1
  487. package/build-types/number-control/test/index.d.ts +2 -0
  488. package/build-types/number-control/test/index.d.ts.map +1 -0
  489. package/build-types/popover/index.d.ts +1 -1
  490. package/build-types/popover/index.d.ts.map +1 -1
  491. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  492. package/build-types/range-control/index.d.ts +1 -1
  493. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  494. package/build-types/resizable-box/resize-tooltip/index.d.ts +15 -19
  495. package/build-types/resizable-box/resize-tooltip/index.d.ts.map +1 -1
  496. package/build-types/resizable-box/resize-tooltip/label.d.ts +4 -3
  497. package/build-types/resizable-box/resize-tooltip/label.d.ts.map +1 -1
  498. package/build-types/scrollable/hook.d.ts +2 -2
  499. package/build-types/search-control/index.d.ts +1 -1
  500. package/build-types/search-control/stories/index.d.ts +2 -2
  501. package/build-types/snackbar/index.d.ts +19 -0
  502. package/build-types/snackbar/index.d.ts.map +1 -0
  503. package/build-types/snackbar/list.d.ts +18 -0
  504. package/build-types/snackbar/list.d.ts.map +1 -0
  505. package/build-types/snackbar/stories/index.d.ts +16 -0
  506. package/build-types/snackbar/stories/index.d.ts.map +1 -0
  507. package/build-types/snackbar/stories/list.d.ts +12 -0
  508. package/build-types/snackbar/stories/list.d.ts.map +1 -0
  509. package/build-types/snackbar/types.d.ts +111 -0
  510. package/build-types/snackbar/types.d.ts.map +1 -0
  511. package/build-types/spacer/hook.d.ts +2 -2
  512. package/build-types/spinner/index.d.ts +1 -1
  513. package/build-types/surface/hook.d.ts +2 -2
  514. package/build-types/tab-panel/index.d.ts +1 -1
  515. package/build-types/tab-panel/index.d.ts.map +1 -1
  516. package/build-types/tab-panel/types.d.ts +19 -1
  517. package/build-types/tab-panel/types.d.ts.map +1 -1
  518. package/build-types/text/hook.d.ts +2 -2
  519. package/build-types/text-control/index.d.ts +2 -2
  520. package/build-types/text-control/stories/index.d.ts.map +1 -1
  521. package/build-types/text-control/types.d.ts +1 -5
  522. package/build-types/text-control/types.d.ts.map +1 -1
  523. package/build-types/theme/color-algorithms.d.ts +20 -0
  524. package/build-types/theme/color-algorithms.d.ts.map +1 -0
  525. package/build-types/theme/index.d.ts +1 -1
  526. package/build-types/theme/index.d.ts.map +1 -1
  527. package/build-types/theme/stories/index.d.ts +4 -0
  528. package/build-types/theme/stories/index.d.ts.map +1 -1
  529. package/build-types/theme/styles.d.ts +3 -2
  530. package/build-types/theme/styles.d.ts.map +1 -1
  531. package/build-types/theme/test/color-algorithms.d.ts +2 -0
  532. package/build-types/theme/test/color-algorithms.d.ts.map +1 -0
  533. package/build-types/theme/types.d.ts +41 -3
  534. package/build-types/theme/types.d.ts.map +1 -1
  535. package/build-types/toggle-control/index.d.ts.map +1 -1
  536. package/build-types/toggle-group-control/stories/index.d.ts.map +1 -1
  537. package/build-types/toggle-group-control/toggle-group-control/as-button-group.d.ts +2 -2
  538. package/build-types/toggle-group-control/toggle-group-control/as-radio-group.d.ts +2 -2
  539. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts +1 -2
  540. package/build-types/toggle-group-control/toggle-group-control/styles.d.ts.map +1 -1
  541. package/build-types/toggle-group-control/toggle-group-control-option/component.d.ts +1 -1
  542. package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts +1 -1
  543. package/build-types/toggle-group-control/types.d.ts +2 -1
  544. package/build-types/toggle-group-control/types.d.ts.map +1 -1
  545. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  546. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  547. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  548. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  549. package/build-types/truncate/hook.d.ts +2 -2
  550. package/build-types/ui/context/context-system-provider.d.ts.map +1 -1
  551. package/build-types/ui/control-group/hook.d.ts +2 -2
  552. package/build-types/ui/control-label/hook.d.ts +2 -2
  553. package/build-types/ui/form-group/form-group.d.ts +2 -2
  554. package/build-types/ui/form-group/use-form-group.d.ts +5 -5
  555. package/build-types/unit-control/index.d.ts +2 -1
  556. package/build-types/unit-control/index.d.ts.map +1 -1
  557. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  558. package/build-types/unit-control/types.d.ts +4 -0
  559. package/build-types/unit-control/types.d.ts.map +1 -1
  560. package/build-types/utils/colors-values.d.ts +1 -0
  561. package/build-types/utils/colors-values.d.ts.map +1 -1
  562. package/build-types/utils/config-values.d.ts +0 -2
  563. package/build-types/utils/hooks/use-controlled-value.d.ts +2 -1
  564. package/build-types/utils/hooks/use-controlled-value.d.ts.map +1 -1
  565. package/build-types/v-stack/component.d.ts +2 -2
  566. package/build-types/v-stack/hook.d.ts +2 -2
  567. package/build-types/v-stack/stories/index.d.ts +2 -2
  568. package/build-types/view/index.d.ts +1 -1
  569. package/build-types/view/index.d.ts.map +1 -1
  570. package/package.json +21 -20
  571. package/src/alignment-matrix-control/README.md +7 -7
  572. package/src/alignment-matrix-control/{cell.js → cell.tsx} +7 -1
  573. package/src/alignment-matrix-control/{icon.js → icon.tsx} +6 -3
  574. package/src/alignment-matrix-control/{index.js → index.tsx} +31 -4
  575. package/src/alignment-matrix-control/stories/{index.js → index.tsx} +17 -9
  576. package/src/alignment-matrix-control/styles/{alignment-matrix-control-icon-styles.js → alignment-matrix-control-icon-styles.ts} +11 -3
  577. package/src/alignment-matrix-control/styles/{alignment-matrix-control-styles.js → alignment-matrix-control-styles.ts} +13 -3
  578. package/src/alignment-matrix-control/test/{index.js → index.tsx} +5 -5
  579. package/src/alignment-matrix-control/types.ts +54 -0
  580. package/src/alignment-matrix-control/{utils.js → utils.tsx} +24 -14
  581. package/src/angle-picker-control/index.js +2 -1
  582. package/src/angle-picker-control/styles/angle-picker-control-styles.js +4 -0
  583. package/src/autocomplete/index.js +55 -15
  584. package/src/autocomplete/style.scss +1 -1
  585. package/src/base-control/README.md +21 -12
  586. package/src/base-control/hooks.ts +45 -0
  587. package/src/base-control/index.tsx +18 -7
  588. package/src/base-control/stories/index.tsx +8 -10
  589. package/src/base-control/test/index.tsx +52 -0
  590. package/src/base-control/types.ts +8 -2
  591. package/src/base-field/README.md +21 -22
  592. package/src/base-field/{hook.js → hook.ts} +5 -15
  593. package/src/base-field/{index.js → index.ts} +0 -0
  594. package/src/base-field/{styles.js → styles.ts} +2 -2
  595. package/src/base-field/test/__snapshots__/{index.js.snap → index.tsx.snap} +13 -11
  596. package/src/base-field/test/index.tsx +84 -0
  597. package/src/base-field/types.ts +29 -0
  598. package/src/border-box-control/border-box-control/README.md +6 -17
  599. package/src/border-box-control/border-box-control/component.tsx +1 -1
  600. package/src/border-box-control/border-box-control/hook.ts +18 -4
  601. package/src/border-box-control/border-box-control-split-controls/hook.ts +10 -0
  602. package/src/border-box-control/test/index.js +3 -1
  603. package/src/border-box-control/types.ts +32 -58
  604. package/src/border-control/border-control/README.md +4 -17
  605. package/src/border-control/border-control/component.tsx +3 -2
  606. package/src/border-control/border-control/hook.ts +10 -0
  607. package/src/border-control/border-control-dropdown/component.tsx +7 -6
  608. package/src/border-control/border-control-dropdown/hook.ts +9 -1
  609. package/src/border-control/styles.ts +1 -10
  610. package/src/border-control/types.ts +43 -80
  611. package/src/box-control/linked-button.js +8 -11
  612. package/src/box-control/test/index.js +206 -135
  613. package/src/button/stories/index.js +30 -0
  614. package/src/button/style.scss +17 -14
  615. package/src/button/test/index.js +32 -15
  616. package/src/card/test/__snapshots__/index.tsx.snap +64 -368
  617. package/src/card/test/index.tsx +34 -22
  618. package/src/checkbox-control/style.scss +3 -3
  619. package/src/circular-option-picker/style.scss +1 -0
  620. package/src/color-palette/README.md +12 -16
  621. package/src/color-palette/index.tsx +5 -7
  622. package/src/color-palette/stories/index.tsx +1 -5
  623. package/src/color-palette/style.scss +1 -1
  624. package/src/color-palette/test/__snapshots__/index.tsx.snap +4 -4
  625. package/src/color-palette/test/index.tsx +84 -36
  626. package/src/color-palette/types.ts +14 -10
  627. package/src/color-picker/README.md +1 -0
  628. package/src/color-picker/input-with-slider.tsx +14 -2
  629. package/src/color-picker/styles.ts +0 -4
  630. package/src/confirm-dialog/README.md +3 -2
  631. package/src/custom-select-control/README.md +14 -0
  632. package/src/custom-select-control/index.js +21 -2
  633. package/src/custom-select-control/stories/index.js +1 -0
  634. package/src/custom-select-control/style.scss +6 -1
  635. package/src/custom-select-control/test/index.js +39 -0
  636. package/src/dashicon/index.tsx +51 -0
  637. package/src/dashicon/types.ts +17 -0
  638. package/src/date-time/date/test/index.tsx +2 -2
  639. package/src/date-time/date-time/index.tsx +2 -2
  640. package/src/date-time/types.ts +0 -19
  641. package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -8
  642. package/src/disabled/test/index.tsx +21 -11
  643. package/src/divider/test/index.tsx +4 -4
  644. package/src/draggable/README.md +13 -18
  645. package/src/draggable/{index.js → index.tsx} +71 -47
  646. package/src/draggable/stories/index.tsx +83 -0
  647. package/src/draggable/types.ts +58 -0
  648. package/src/drop-zone/style.scss +1 -1
  649. package/src/dropdown/test/index.js +39 -49
  650. package/src/dropdown-menu/test/index.js +18 -12
  651. package/src/duotone-picker/duotone-picker.js +2 -2
  652. package/src/flex/flex/hook.ts +0 -3
  653. package/src/flex/test/index.tsx +29 -3
  654. package/src/focal-point-picker/focal-point.tsx +2 -24
  655. package/src/focal-point-picker/styles/focal-point-style.ts +8 -32
  656. package/src/focal-point-picker/test/media.js +26 -21
  657. package/src/font-size-picker/constants.ts +37 -0
  658. package/src/font-size-picker/font-size-picker-select.tsx +98 -0
  659. package/src/font-size-picker/font-size-picker-toggle-group.tsx +41 -0
  660. package/src/font-size-picker/index.tsx +55 -118
  661. package/src/font-size-picker/test/index.tsx +253 -44
  662. package/src/font-size-picker/test/utils.ts +58 -98
  663. package/src/font-size-picker/types.ts +25 -16
  664. package/src/font-size-picker/utils.ts +16 -102
  665. package/src/form-toggle/style.scss +3 -3
  666. package/src/form-token-field/index.tsx +13 -5
  667. package/src/form-token-field/style.scss +3 -3
  668. package/src/form-token-field/test/index.tsx +6 -6
  669. package/src/gradient-picker/index.js +5 -8
  670. package/src/grid/test/grid.tsx +31 -31
  671. package/src/higher-order/navigate-regions/index.js +4 -0
  672. package/src/higher-order/navigate-regions/style.scss +52 -20
  673. package/src/higher-order/with-fallback-styles/index.js +4 -2
  674. package/src/higher-order/with-filters/test/index.js +94 -101
  675. package/src/higher-order/with-focus-return/test/index.js +1 -4
  676. package/src/higher-order/with-notices/test/index.js +1 -1
  677. package/src/icon/index.tsx +3 -2
  678. package/src/icon/test/index.js +10 -0
  679. package/src/index.js +3 -2
  680. package/src/input-control/index.tsx +42 -28
  681. package/src/input-control/input-base.tsx +8 -1
  682. package/src/input-control/stories/index.tsx +6 -0
  683. package/src/input-control/test/index.js +18 -0
  684. package/src/input-control/types.ts +2 -0
  685. package/src/item-group/stories/index.js +1 -1
  686. package/src/menu-group/{index.js → index.tsx} +22 -3
  687. package/src/menu-group/test/{index.js → index.tsx} +0 -0
  688. package/src/menu-group/types.ts +23 -0
  689. package/src/menu-item/style.scss +1 -1
  690. package/src/mobile/bottom-sheet/cell.native.js +1 -1
  691. package/src/mobile/bottom-sheet/switch-cell.native.js +2 -2
  692. package/src/mobile/bottom-sheet/test/range-cell.native.js +4 -4
  693. package/src/mobile/global-styles-context/index.native.js +9 -11
  694. package/src/mobile/html-text-input/test/index.native.js +2 -2
  695. package/src/mobile/keyboard-aware-flat-list/index.ios.js +2 -2
  696. package/src/mobile/link-settings/test/edit.native.js +70 -126
  697. package/src/mobile/link-settings/test/link-settings-navigation.native.js +5 -5
  698. package/src/modal/index.tsx +11 -0
  699. package/src/modal/stories/index.tsx +3 -0
  700. package/src/modal/test/index.tsx +15 -0
  701. package/src/navigation/stories/index.js +6 -6
  702. package/src/navigation/stories/{controlled-state.js → utils/controlled-state.js} +3 -3
  703. package/src/navigation/stories/{default.js → utils/default.js} +3 -3
  704. package/src/navigation/stories/{group.js → utils/group.js} +4 -4
  705. package/src/navigation/stories/{hide-if-empty.js → utils/hide-if-empty.js} +3 -3
  706. package/src/navigation/stories/{more-examples.js → utils/more-examples.js} +4 -4
  707. package/src/navigation/stories/{search.js → utils/search.js} +5 -5
  708. package/src/navigator/navigator-provider/component.tsx +13 -10
  709. package/src/navigator/navigator-screen/component.tsx +8 -3
  710. package/src/notice/README.md +2 -1
  711. package/src/notice/style.scss +1 -1
  712. package/src/notice/test/list.js +8 -5
  713. package/src/number-control/stories/{index.js → index.tsx} +24 -7
  714. package/src/number-control/styles/{number-control-styles.js → number-control-styles.ts} +5 -3
  715. package/src/number-control/test/index.tsx +600 -0
  716. package/src/palette-edit/index.js +91 -39
  717. package/src/palette-edit/test/index.js +25 -1
  718. package/src/panel/style.scss +1 -1
  719. package/src/popover/index.tsx +28 -9
  720. package/src/popover/style.scss +12 -11
  721. package/src/popover/test/index.tsx +25 -15
  722. package/src/query-controls/index.js +1 -0
  723. package/src/range-control/styles/range-control-styles.ts +2 -2
  724. package/src/range-control/test/index.tsx +57 -60
  725. package/src/resizable-box/style.scss +3 -2
  726. package/src/sandbox/test/index.js +13 -11
  727. package/src/scrollable/test/index.tsx +7 -3
  728. package/src/search-control/style.scss +5 -1
  729. package/src/snackbar/README.md +63 -8
  730. package/src/snackbar/{index.js → index.tsx} +46 -28
  731. package/src/snackbar/{list.js → list.tsx} +20 -21
  732. package/src/snackbar/stories/index.tsx +96 -0
  733. package/src/snackbar/stories/list.tsx +98 -0
  734. package/src/snackbar/style.scss +2 -2
  735. package/src/snackbar/types.ts +116 -0
  736. package/src/spacer/test/index.tsx +33 -3
  737. package/src/spinner/styles.ts +1 -1
  738. package/src/surface/test/index.tsx +12 -12
  739. package/src/tab-panel/README.md +9 -0
  740. package/src/tab-panel/index.tsx +23 -9
  741. package/src/tab-panel/style.scss +46 -35
  742. package/src/tab-panel/test/index.tsx +111 -0
  743. package/src/tab-panel/types.ts +20 -1
  744. package/src/text/test/__snapshots__/index.tsx.snap +1 -0
  745. package/src/text/test/index.tsx +100 -48
  746. package/src/text-control/stories/index.tsx +0 -1
  747. package/src/text-control/types.ts +1 -6
  748. package/src/theme/README.md +32 -2
  749. package/src/theme/color-algorithms.ts +138 -0
  750. package/src/theme/index.tsx +23 -16
  751. package/src/theme/stories/index.tsx +67 -0
  752. package/src/theme/styles.ts +22 -17
  753. package/src/theme/test/color-algorithms.ts +100 -0
  754. package/src/theme/test/index.tsx +68 -35
  755. package/src/theme/types.ts +43 -3
  756. package/src/toggle-control/index.tsx +4 -2
  757. package/src/toggle-group-control/stories/index.tsx +2 -0
  758. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +6 -8
  759. package/src/toggle-group-control/test/index.tsx +40 -17
  760. package/src/toggle-group-control/toggle-group-control/README.md +8 -1
  761. package/src/toggle-group-control/toggle-group-control/component.tsx +1 -1
  762. package/src/toggle-group-control/toggle-group-control/styles.ts +22 -16
  763. package/src/toggle-group-control/types.ts +2 -1
  764. package/src/toolbar-group/test/index.js +8 -6
  765. package/src/tools-panel/stories/index.js +1 -1
  766. package/src/tools-panel/stories/{tools-panel-with-item-group-slot.js → utils/tools-panel-with-item-group-slot.js} +14 -11
  767. package/src/tools-panel/styles.ts +1 -1
  768. package/src/tools-panel/test/index.js +20 -14
  769. package/src/tools-panel/tools-panel-item/hook.ts +6 -1
  770. package/src/tooltip/README.md +7 -0
  771. package/src/tooltip/style.scss +2 -2
  772. package/src/tooltip/test/index.js +109 -18
  773. package/src/tree-grid/test/index.js +12 -12
  774. package/src/truncate/test/index.tsx +9 -9
  775. package/src/ui/context/context-system-provider.js +3 -2
  776. package/src/ui/context/test/context-system-provider.js +5 -4
  777. package/src/ui/control-label/test/index.js +3 -5
  778. package/src/ui/form-group/test/index.js +16 -17
  779. package/src/unit-control/README.md +9 -1
  780. package/src/unit-control/index.tsx +3 -0
  781. package/src/unit-control/test/index.tsx +1 -0
  782. package/src/unit-control/types.ts +4 -0
  783. package/src/utils/colors-values.js +5 -3
  784. package/src/utils/config-values.js +0 -2
  785. package/src/utils/hooks/stories/use-cx.js +1 -1
  786. package/src/utils/hooks/use-controlled-value.ts +2 -2
  787. package/src/utils/input/base.js +2 -2
  788. package/src/utils/theme-variables.scss +20 -0
  789. package/src/view/{index.js → index.ts} +0 -0
  790. package/tsconfig.json +2 -4
  791. package/tsconfig.tsbuildinfo +1 -1
  792. package/src/base-field/test/index.js +0 -67
  793. package/src/dashicon/index.js +0 -26
  794. package/src/draggable/stories/index.js +0 -72
  795. package/src/number-control/test/index.js +0 -478
  796. package/src/snackbar/stories/index.js +0 -89
@@ -1,24 +1,19 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { fireEvent, render, screen } from '@testing-library/react';
4
+ import { act, fireEvent, render, screen } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
9
  import RangeControl from '../';
10
10
 
11
- const getRangeInput = (): HTMLInputElement | null =>
12
- screen.getByRole( 'slider' ) as HTMLInputElement;
13
- const getNumberInput = (): HTMLInputElement | null =>
14
- screen.getByRole( 'spinbutton' ) as HTMLInputElement;
15
- const getResetButton = (): HTMLButtonElement | null =>
16
- screen.getByRole( 'button' ) as HTMLButtonElement;
11
+ const getRangeInput = (): HTMLInputElement => screen.getByRole( 'slider' );
12
+ const getNumberInput = (): HTMLInputElement => screen.getByRole( 'spinbutton' );
13
+ const getResetButton = (): HTMLButtonElement => screen.getByRole( 'button' );
17
14
 
18
- const fireChangeEvent = (
19
- input: HTMLInputElement | null,
20
- value?: number | string
21
- ) => fireEvent.change( input as Element, { target: { value } } );
15
+ const fireChangeEvent = ( input: HTMLInputElement, value?: number | string ) =>
16
+ fireEvent.change( input, { target: { value } } );
22
17
 
23
18
  describe( 'RangeControl', () => {
24
19
  describe( '#render()', () => {
@@ -30,10 +25,10 @@ describe( 'RangeControl', () => {
30
25
  const rangeInput = getRangeInput();
31
26
  const numberInput = getNumberInput();
32
27
 
33
- rangeInput?.focus();
28
+ act( () => rangeInput.focus() );
34
29
  fireChangeEvent( rangeInput, '5' );
35
30
 
36
- numberInput?.focus();
31
+ act( () => numberInput.focus() );
37
32
  fireChangeEvent( numberInput, '10' );
38
33
 
39
34
  expect( onChange ).toHaveBeenCalledWith( 5 );
@@ -48,9 +43,11 @@ describe( 'RangeControl', () => {
48
43
  />
49
44
  );
50
45
 
46
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
51
47
  const beforeIcon = container.querySelector(
52
48
  '.dashicons-format-image'
53
49
  );
50
+ // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
54
51
  const afterIcon = container.querySelector(
55
52
  '.dashicons-format-video'
56
53
  );
@@ -68,9 +65,9 @@ describe( 'RangeControl', () => {
68
65
  const numberInput = getNumberInput();
69
66
 
70
67
  fireChangeEvent( numberInput, '10' );
71
- fireEvent.blur( numberInput as Element );
68
+ fireEvent.blur( numberInput );
72
69
 
73
- expect( rangeInput?.value ).not.toBe( '10' );
70
+ expect( rangeInput.value ).not.toBe( '10' );
74
71
  } );
75
72
 
76
73
  it( 'should not apply if new value is greater than maximum', () => {
@@ -80,9 +77,9 @@ describe( 'RangeControl', () => {
80
77
  const numberInput = getNumberInput();
81
78
 
82
79
  fireChangeEvent( numberInput, '21' );
83
- fireEvent.blur( numberInput as Element );
80
+ fireEvent.blur( numberInput );
84
81
 
85
- expect( rangeInput?.value ).not.toBe( '21' );
82
+ expect( rangeInput.value ).not.toBe( '21' );
86
83
  } );
87
84
 
88
85
  it( 'should not call onChange if new value is invalid', () => {
@@ -93,7 +90,7 @@ describe( 'RangeControl', () => {
93
90
 
94
91
  const numberInput = getNumberInput();
95
92
 
96
- numberInput?.focus();
93
+ act( () => numberInput.focus() );
97
94
  fireChangeEvent( numberInput, '25e' );
98
95
 
99
96
  expect( onChange ).not.toHaveBeenCalled();
@@ -108,15 +105,15 @@ describe( 'RangeControl', () => {
108
105
  const rangeInput = getRangeInput();
109
106
  const numberInput = getNumberInput();
110
107
 
111
- numberInput?.focus();
108
+ act( () => numberInput.focus() );
112
109
  fireChangeEvent( numberInput, '-1.1' );
113
110
 
114
- expect( numberInput?.value ).toBe( '-1.1' );
115
- expect( rangeInput?.value ).toBe( '-1' );
111
+ expect( numberInput.value ).toBe( '-1.1' );
112
+ expect( rangeInput.value ).toBe( '-1' );
116
113
 
117
- fireEvent.blur( numberInput as Element );
114
+ fireEvent.blur( numberInput );
118
115
  expect( onChange ).toHaveBeenCalledWith( -1 );
119
- expect( numberInput?.value ).toBe( '-1' );
116
+ expect( numberInput.value ).toBe( '-1' );
120
117
  } );
121
118
 
122
119
  it( 'should validate when provided a max or min of zero', () => {
@@ -125,11 +122,11 @@ describe( 'RangeControl', () => {
125
122
  const rangeInput = getRangeInput();
126
123
  const numberInput = getNumberInput();
127
124
 
128
- numberInput?.focus();
125
+ act( () => numberInput.focus() );
129
126
  fireChangeEvent( numberInput, '1' );
130
- fireEvent.blur( numberInput as Element );
127
+ fireEvent.blur( numberInput );
131
128
 
132
- expect( rangeInput?.value ).toBe( '0' );
129
+ expect( rangeInput.value ).toBe( '0' );
133
130
  } );
134
131
 
135
132
  it( 'should validate when min and max are negative', () => {
@@ -138,16 +135,16 @@ describe( 'RangeControl', () => {
138
135
  const rangeInput = getRangeInput();
139
136
  const numberInput = getNumberInput();
140
137
 
141
- numberInput?.focus();
138
+ act( () => numberInput.focus() );
142
139
 
143
140
  fireChangeEvent( numberInput, '-101' );
144
- expect( rangeInput?.value ).toBe( '-100' );
141
+ expect( rangeInput.value ).toBe( '-100' );
145
142
 
146
143
  fireChangeEvent( numberInput, '-49' );
147
- expect( rangeInput?.value ).toBe( '-50' );
144
+ expect( rangeInput.value ).toBe( '-50' );
148
145
 
149
146
  fireChangeEvent( numberInput, '-50' );
150
- expect( rangeInput?.value ).toBe( '-50' );
147
+ expect( rangeInput.value ).toBe( '-50' );
151
148
  } );
152
149
 
153
150
  it( 'should take into account the step starting from min', () => {
@@ -163,16 +160,16 @@ describe( 'RangeControl', () => {
163
160
  const rangeInput = getRangeInput();
164
161
  const numberInput = getNumberInput();
165
162
 
166
- numberInput?.focus();
163
+ act( () => numberInput.focus() );
167
164
  fireChangeEvent( numberInput, '0.125' );
168
165
 
169
166
  expect( onChange ).toHaveBeenCalledWith( 0.125 );
170
- expect( rangeInput?.value ).toBe( '0.125' );
167
+ expect( rangeInput.value ).toBe( '0.125' );
171
168
 
172
169
  fireChangeEvent( numberInput, '0.225' );
173
170
 
174
171
  expect( onChange ).toHaveBeenCalledWith( 0.225 );
175
- expect( rangeInput?.value ).toBe( '0.225' );
172
+ expect( rangeInput.value ).toBe( '0.225' );
176
173
  } );
177
174
  } );
178
175
 
@@ -182,7 +179,7 @@ describe( 'RangeControl', () => {
182
179
 
183
180
  const rangeInput = getRangeInput();
184
181
 
185
- expect( rangeInput?.value ).toBe( '5' );
182
+ expect( rangeInput.value ).toBe( '5' );
186
183
  } );
187
184
 
188
185
  it( 'should render initialPosition if no value is provided', () => {
@@ -190,7 +187,7 @@ describe( 'RangeControl', () => {
190
187
 
191
188
  const rangeInput = getRangeInput();
192
189
 
193
- expect( rangeInput?.value ).toBe( '50' );
190
+ expect( rangeInput.value ).toBe( '50' );
194
191
  } );
195
192
 
196
193
  it( 'should render value instead of initialPosition is provided', () => {
@@ -198,7 +195,7 @@ describe( 'RangeControl', () => {
198
195
 
199
196
  const rangeInput = getRangeInput();
200
197
 
201
- expect( rangeInput?.value ).toBe( '10' );
198
+ expect( rangeInput.value ).toBe( '10' );
202
199
  } );
203
200
 
204
201
  it( 'should clamp initialPosition between min and max on first render, and on reset', () => {
@@ -216,19 +213,19 @@ describe( 'RangeControl', () => {
216
213
  const resetButton = getResetButton();
217
214
 
218
215
  // Value should be clamped on initial load
219
- expect( numberInput?.value ).toBe( '100' );
220
- expect( rangeInput?.value ).toBe( '100' );
216
+ expect( numberInput.value ).toBe( '100' );
217
+ expect( rangeInput.value ).toBe( '100' );
221
218
 
222
219
  fireChangeEvent( numberInput, '50' );
223
220
 
224
- expect( numberInput?.value ).toBe( '50' );
225
- expect( rangeInput?.value ).toBe( '50' );
221
+ expect( numberInput.value ).toBe( '50' );
222
+ expect( rangeInput.value ).toBe( '50' );
226
223
 
227
224
  // Value should be clamped after resetting
228
- fireEvent.click( resetButton as Element );
225
+ fireEvent.click( resetButton );
229
226
 
230
- expect( numberInput?.value ).toBe( '100' );
231
- expect( rangeInput?.value ).toBe( '100' );
227
+ expect( numberInput.value ).toBe( '100' );
228
+ expect( rangeInput.value ).toBe( '100' );
232
229
  } );
233
230
  } );
234
231
 
@@ -255,8 +252,8 @@ describe( 'RangeControl', () => {
255
252
  const rangeInput = getRangeInput();
256
253
  const numberInput = getNumberInput();
257
254
 
258
- expect( rangeInput?.value ).toBe( '0' );
259
- expect( numberInput?.value ).toBe( '0' );
255
+ expect( rangeInput.value ).toBe( '0' );
256
+ expect( numberInput.value ).toBe( '0' );
260
257
  } );
261
258
 
262
259
  it( 'should update both field and range on change', () => {
@@ -265,17 +262,17 @@ describe( 'RangeControl', () => {
265
262
  const rangeInput = getRangeInput();
266
263
  const numberInput = getNumberInput();
267
264
 
268
- rangeInput?.focus();
265
+ act( () => rangeInput.focus() );
269
266
  fireChangeEvent( rangeInput, 13 );
270
267
 
271
- expect( rangeInput?.value ).toBe( '13' );
272
- expect( numberInput?.value ).toBe( '13' );
268
+ expect( rangeInput.value ).toBe( '13' );
269
+ expect( numberInput.value ).toBe( '13' );
273
270
 
274
- numberInput?.focus();
271
+ act( () => numberInput.focus() );
275
272
  fireChangeEvent( numberInput, 7 );
276
273
 
277
- expect( rangeInput?.value ).toBe( '7' );
278
- expect( numberInput?.value ).toBe( '7' );
274
+ expect( rangeInput.value ).toBe( '7' );
275
+ expect( numberInput.value ).toBe( '7' );
279
276
  } );
280
277
 
281
278
  it( 'should reset input values if next value is removed', () => {
@@ -285,12 +282,12 @@ describe( 'RangeControl', () => {
285
282
  const numberInput = getNumberInput();
286
283
 
287
284
  fireChangeEvent( numberInput, '' );
288
- fireEvent.blur( numberInput as Element );
285
+ fireEvent.blur( numberInput );
289
286
 
290
287
  // Reset to 50. Median value of min: 0, max: 100.
291
- expect( rangeInput?.value ).toBe( '50' );
288
+ expect( rangeInput.value ).toBe( '50' );
292
289
  // Input field should be blank.
293
- expect( numberInput?.value ).toBe( '' );
290
+ expect( numberInput.value ).toBe( '' );
294
291
  } );
295
292
  } );
296
293
 
@@ -310,10 +307,10 @@ describe( 'RangeControl', () => {
310
307
  const rangeInput = getRangeInput();
311
308
  const numberInput = getNumberInput();
312
309
 
313
- fireEvent.click( resetButton as Element );
310
+ fireEvent.click( resetButton );
314
311
 
315
- expect( rangeInput?.value ).toBe( '33' );
316
- expect( numberInput?.value ).toBe( '33' );
312
+ expect( rangeInput.value ).toBe( '33' );
313
+ expect( numberInput.value ).toBe( '33' );
317
314
  expect( spy ).toHaveBeenCalledWith( 33 );
318
315
  } );
319
316
 
@@ -332,10 +329,10 @@ describe( 'RangeControl', () => {
332
329
  const rangeInput = getRangeInput();
333
330
  const numberInput = getNumberInput();
334
331
 
335
- fireEvent.click( resetButton as Element );
332
+ fireEvent.click( resetButton );
336
333
 
337
- expect( rangeInput?.value ).toBe( '50' );
338
- expect( numberInput?.value ).toBe( '' );
334
+ expect( rangeInput.value ).toBe( '50' );
335
+ expect( numberInput.value ).toBe( '' );
339
336
  } );
340
337
  } );
341
338
  } );
@@ -35,7 +35,7 @@ $resize-handler-container-size: $resize-handler-size + ($grid-unit-05 * 2); // M
35
35
  top: calc(50% - #{ceil($resize-handler-size * 0.5)});
36
36
  right: calc(50% - #{ceil($resize-handler-size * 0.5)});
37
37
 
38
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
38
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
39
39
  // Only visible in Windows High Contrast mode.
40
40
  outline: 2px solid transparent;
41
41
  }
@@ -47,13 +47,14 @@ $resize-handler-container-size: $resize-handler-size + ($grid-unit-05 * 2); // M
47
47
  content: "";
48
48
  width: 3px;
49
49
  height: 3px;
50
- background: var(--wp-admin-theme-color);
50
+ background: $components-color-accent;
51
51
  cursor: inherit;
52
52
  position: absolute;
53
53
  top: calc(50% - 1px);
54
54
  right: calc(50% - 1px);
55
55
  transition: transform 0.1s ease-in;
56
56
  @include reduce-motion("transition");
57
+ will-change: transform;
57
58
  opacity: 0;
58
59
  }
59
60
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { fireEvent, render, screen } from '@testing-library/react';
4
+ import { fireEvent, render, screen, within } from '@testing-library/react';
5
5
 
6
6
  /**
7
7
  * WordPress dependencies
@@ -16,15 +16,15 @@ import Sandbox from '../';
16
16
  describe( 'Sandbox', () => {
17
17
  const TestWrapper = () => {
18
18
  const [ html, setHtml ] = useState(
19
- // MuatationObserver implementation from JSDom does not work as intended
19
+ // MutationObserver implementation from JSDom does not work as intended
20
20
  // with iframes so we need to ignore it for the time being.
21
21
  '<script type="text/javascript">window.MutationObserver = null;</script>' +
22
- '<iframe class="mock-iframe" src="https://super.embed"></iframe>'
22
+ '<iframe title="Mock Iframe" src="https://super.embed"></iframe>'
23
23
  );
24
24
 
25
25
  const updateHtml = () => {
26
26
  setHtml(
27
- '<iframe class="mock-iframe" src="https://another.super.embed"></iframe>'
27
+ '<iframe title="Mock Iframe" src="https://another.super.embed"></iframe>'
28
28
  );
29
29
  };
30
30
 
@@ -33,18 +33,19 @@ describe( 'Sandbox', () => {
33
33
  <button onClick={ updateHtml } className="mock-button">
34
34
  Mock Button
35
35
  </button>
36
- <Sandbox html={ html } />
36
+ <Sandbox html={ html } title="Sandbox Title" />
37
37
  </div>
38
38
  );
39
39
  };
40
40
 
41
41
  it( 'should rerender with new emdeded content if html prop changes', () => {
42
- const { container } = render( <TestWrapper /> );
42
+ render( <TestWrapper /> );
43
43
 
44
- const iframe = container.querySelector( '.components-sandbox' );
44
+ const iframe = screen.getByTitle( 'Sandbox Title' );
45
45
 
46
- let sandboxedIframe =
47
- iframe.contentWindow.document.body.querySelector( '.mock-iframe' );
46
+ let sandboxedIframe = within(
47
+ iframe.contentWindow.document.body
48
+ ).getByTitle( 'Mock Iframe' );
48
49
 
49
50
  expect( sandboxedIframe ).toHaveAttribute(
50
51
  'src',
@@ -53,8 +54,9 @@ describe( 'Sandbox', () => {
53
54
 
54
55
  fireEvent.click( screen.getByRole( 'button' ) );
55
56
 
56
- sandboxedIframe =
57
- iframe.contentWindow.document.body.querySelector( '.mock-iframe' );
57
+ sandboxedIframe = within(
58
+ iframe.contentWindow.document.body
59
+ ).getByTitle( 'Mock Iframe' );
58
60
 
59
61
  expect( sandboxedIframe ).toHaveAttribute(
60
62
  'src',
@@ -9,24 +9,28 @@ import { render, screen } from '@testing-library/react';
9
9
  import { Scrollable } from '../index';
10
10
 
11
11
  describe( 'props', () => {
12
- beforeEach( () => {
12
+ test( 'should render correctly', () => {
13
13
  render(
14
14
  <Scrollable data-testid="scrollable">
15
15
  WordPress.org - Code is Poetry
16
16
  </Scrollable>
17
17
  );
18
- } );
19
18
 
20
- test( 'should render correctly', () => {
21
19
  expect( screen.getByTestId( 'scrollable' ) ).toMatchSnapshot();
22
20
  } );
23
21
 
24
22
  test( 'should render smoothScroll', () => {
23
+ render(
24
+ <Scrollable data-testid="scrollable">
25
+ WordPress.org - Code is Poetry
26
+ </Scrollable>
27
+ );
25
28
  render(
26
29
  <Scrollable smoothScroll data-testid="smooth-scrollable">
27
30
  WordPress.org - Code is Poetry
28
31
  </Scrollable>
29
32
  );
33
+
30
34
  expect(
31
35
  screen.getByTestId( 'smooth-scrollable' )
32
36
  ).toMatchStyleDiffSnapshot( screen.getByTestId( 'scrollable' ) );
@@ -10,6 +10,10 @@
10
10
  width: 100%;
11
11
  height: $grid-unit-60;
12
12
 
13
+ // Unset inherited values.
14
+ margin-left: 0;
15
+ margin-right: 0;
16
+
13
17
  /* Fonts smaller than 16px causes mobile safari to zoom. */
14
18
  font-size: $mobile-text-min-font-size;
15
19
  @include break-small {
@@ -18,7 +22,7 @@
18
22
 
19
23
  &:focus {
20
24
  background: $white;
21
- box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
25
+ box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) $components-color-accent;
22
26
  }
23
27
 
24
28
  &::placeholder {
@@ -36,17 +36,72 @@ const MySnackbarNotice = () => (
36
36
  );
37
37
  ```
38
38
 
39
- #### Props
39
+ ### Props
40
40
 
41
41
  The following props are used to control the display of the component.
42
42
 
43
- - `children`: (string) The displayed message of a notice. Also used as the spoken message for assistive technology, unless `spokenMessage` is provided as an alternative message.
44
- - `spokenMessage`: (string) Used to provide a custom spoken message in place of the `children` default.
45
- - `politeness`: (string) A politeness level for the notice's spoken message. Should be provided as one of the valid options for [an `aria-live` attribute value](https://www.w3.org/TR/wai-aria-1.1/#aria-live). Defaults to `"polite"`. Note that this value should be considered a suggestion; assistive technologies may override it based on internal heuristics.
46
- - A value of `'assertive'` is to be used for important, and usually time-sensitive, information. It will interrupt anything else the screen reader is announcing in that moment.
47
- - A value of `'polite'` is to be used for advisory information. It should not interrupt what the screen reader is announcing in that moment (the "speech queue") or interrupt the current task.
48
- - `onRemove`: function called when dismissing the notice.
49
- - `actions`: (array) an array of action objects. Each member object should contain a `label` and either a `url` link string or `onClick` callback function.
43
+ #### `actions`: `NoticeAction[]`
44
+
45
+ An array of action objects. Each member object should contain a `label` and either a `url` link string or `onClick` callback function.
46
+
47
+ - Required: No
48
+ - Default: `[]`
49
+
50
+ #### `children`: `string`
51
+
52
+ The displayed message of a notice. Also used as the spoken message for assistive technology, unless `spokenMessage` is provided as an alternative message.
53
+
54
+ - Required: Yes
55
+
56
+ #### `explicitDismiss`: `boolean`
57
+
58
+ Whether to require user action to dismiss the snackbar. By default, this is dismissed on a timeout, without user interaction.
59
+
60
+ - Required: No
61
+ - Default: `false`
62
+
63
+ #### `icon`: `ReactNode`
64
+
65
+ The icon to render in the snackbar.
66
+
67
+ - Required: No
68
+ - Default: `null`
69
+
70
+ #### `listRef`: `MutableRefObject< HTMLDivElement | null >`
71
+
72
+ A ref to the list that contains the snackbar.
73
+
74
+ - Required: No
75
+
76
+ #### `onDismiss`: `() => void`
77
+
78
+ A callback executed when the snackbar is dismissed. It is distinct from onRemove, which _looks_ like a callback but is actually the function to call to remove the snackbar from the UI.
79
+
80
+ - Required: No
81
+
82
+ #### `onRemove`: `() => void`
83
+
84
+ Function called when dismissing the notice.
85
+
86
+ - Required: No
87
+
88
+ #### `politeness`: `'polite' | 'assertive'`
89
+
90
+ A politeness level for the notice's spoken message. Should be provided as one of the valid options for [an `aria-live` attribute value](https://www.w3.org/TR/wai-aria-1.1/#aria-live). Note that this value should be considered a suggestion; assistive technologies may override it based on internal heuristics.
91
+
92
+ A value of `'assertive'` is to be used for important, and usually time-sensitive, information. It will interrupt anything else the screen reader is announcing in that moment.
93
+
94
+ A value of `'polite'` is to be used for advisory information. It should not interrupt what the screen reader is announcing in that moment (the "speech queue") or interrupt the current task.
95
+
96
+ - Required: No
97
+ - Default: `'polite'`
98
+
99
+ #### `spokenMessage`: `string`
100
+
101
+ Used to provide a custom spoken message.
102
+
103
+ - Required: No
104
+ - Default: `children`
50
105
 
51
106
  ## Related components
52
107
 
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
+ import type { ForwardedRef, KeyboardEvent, MouseEvent } from 'react';
4
5
  import classnames from 'classnames';
5
6
 
6
7
  /**
@@ -14,21 +15,23 @@ import warning from '@wordpress/warning';
14
15
  /**
15
16
  * Internal dependencies
16
17
  */
17
- import { Button } from '../';
18
+ import Button from '../button';
19
+ import type { NoticeAction, SnackbarProps } from './types';
20
+ import type { WordPressComponentProps } from '../ui/context';
18
21
 
19
- const noop = () => {};
20
22
  const NOTICE_TIMEOUT = 10000;
21
23
 
22
- /** @typedef {import('@wordpress/element').WPElement} WPElement */
23
-
24
24
  /**
25
25
  * Custom hook which announces the message with the given politeness, if a
26
26
  * valid message is provided.
27
27
  *
28
- * @param {string|WPElement} [message] Message to announce.
29
- * @param {'polite'|'assertive'} politeness Politeness to announce.
28
+ * @param message Message to announce.
29
+ * @param politeness Politeness to announce.
30
30
  */
31
- function useSpokenMessage( message, politeness ) {
31
+ function useSpokenMessage(
32
+ message: SnackbarProps[ 'spokenMessage' ],
33
+ politeness: NonNullable< SnackbarProps[ 'politeness' ] >
34
+ ) {
32
35
  const spokenMessage =
33
36
  typeof message === 'string' ? message : renderToString( message );
34
37
 
@@ -39,42 +42,43 @@ function useSpokenMessage( message, politeness ) {
39
42
  }, [ spokenMessage, politeness ] );
40
43
  }
41
44
 
42
- function Snackbar(
45
+ function UnforwardedSnackbar(
43
46
  {
44
47
  className,
45
48
  children,
46
49
  spokenMessage = children,
47
50
  politeness = 'polite',
48
51
  actions = [],
49
- onRemove = noop,
52
+ onRemove,
50
53
  icon = null,
51
54
  explicitDismiss = false,
52
55
  // onDismiss is a callback executed when the snackbar is dismissed.
53
56
  // It is distinct from onRemove, which _looks_ like a callback but is
54
57
  // actually the function to call to remove the snackbar from the UI.
55
- onDismiss = noop,
58
+ onDismiss,
56
59
  listRef,
57
- },
58
- ref
60
+ }: WordPressComponentProps< SnackbarProps, 'div' >,
61
+ ref: ForwardedRef< any >
59
62
  ) {
60
- onDismiss = onDismiss || noop;
61
-
62
- function dismissMe( event ) {
63
+ function dismissMe( event: KeyboardEvent | MouseEvent ) {
63
64
  if ( event && event.preventDefault ) {
64
65
  event.preventDefault();
65
66
  }
66
67
 
67
68
  // Prevent focus loss by moving it to the list element.
68
- listRef.current.focus();
69
+ listRef?.current?.focus();
69
70
 
70
- onDismiss();
71
- onRemove();
71
+ onDismiss?.();
72
+ onRemove?.();
72
73
  }
73
74
 
74
- function onActionClick( event, onClick ) {
75
+ function onActionClick(
76
+ event: MouseEvent,
77
+ onClick: NoticeAction[ 'onClick' ]
78
+ ) {
75
79
  event.stopPropagation();
76
80
 
77
- onRemove();
81
+ onRemove?.();
78
82
 
79
83
  if ( onClick ) {
80
84
  onClick( event );
@@ -87,8 +91,8 @@ function Snackbar(
87
91
  useEffect( () => {
88
92
  const timeoutHandle = setTimeout( () => {
89
93
  if ( ! explicitDismiss ) {
90
- onDismiss();
91
- onRemove();
94
+ onDismiss?.();
95
+ onRemove?.();
92
96
  }
93
97
  }, NOTICE_TIMEOUT );
94
98
 
@@ -118,10 +122,10 @@ function Snackbar(
118
122
  <div
119
123
  ref={ ref }
120
124
  className={ classes }
121
- onClick={ ! explicitDismiss ? dismissMe : noop }
122
- tabIndex="0"
125
+ onClick={ ! explicitDismiss ? dismissMe : undefined }
126
+ tabIndex={ 0 }
123
127
  role={ ! explicitDismiss ? 'button' : '' }
124
- onKeyPress={ ! explicitDismiss ? dismissMe : noop }
128
+ onKeyPress={ ! explicitDismiss ? dismissMe : undefined }
125
129
  aria-label={ ! explicitDismiss ? __( 'Dismiss this notice' ) : '' }
126
130
  >
127
131
  <div className={ snackbarContentClassnames }>
@@ -135,7 +139,7 @@ function Snackbar(
135
139
  key={ index }
136
140
  href={ url }
137
141
  variant="tertiary"
138
- onClick={ ( event ) =>
142
+ onClick={ ( event: MouseEvent ) =>
139
143
  onActionClick( event, onClick )
140
144
  }
141
145
  className="components-snackbar__action"
@@ -148,7 +152,7 @@ function Snackbar(
148
152
  <span
149
153
  role="button"
150
154
  aria-label="Dismiss this notice"
151
- tabIndex="0"
155
+ tabIndex={ 0 }
152
156
  className="components-snackbar__dismiss-button"
153
157
  onClick={ dismissMe }
154
158
  onKeyPress={ dismissMe }
@@ -161,4 +165,18 @@ function Snackbar(
161
165
  );
162
166
  }
163
167
 
164
- export default forwardRef( Snackbar );
168
+ /**
169
+ * A Snackbar displays a succinct message that is cleared out after a small delay.
170
+ *
171
+ * It can also offer the user options, like viewing a published post.
172
+ * But these options should also be available elsewhere in the UI.
173
+ *
174
+ * ```jsx
175
+ * const MySnackbarNotice = () => (
176
+ * <Snackbar>Post published successfully.</Snackbar>
177
+ * );
178
+ * ```
179
+ */
180
+ export const Snackbar = forwardRef( UnforwardedSnackbar );
181
+
182
+ export default Snackbar;