@wordpress/components 23.6.0 → 23.8.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 (484) hide show
  1. package/CHANGELOG.md +43 -4
  2. package/build/angle-picker-control/angle-circle.js +1 -4
  3. package/build/angle-picker-control/angle-circle.js.map +1 -1
  4. package/build/angle-picker-control/index.js +10 -22
  5. package/build/angle-picker-control/index.js.map +1 -1
  6. package/build/angle-picker-control/styles/angle-picker-control-styles.js +24 -15
  7. package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  8. package/build/animate/index.js +27 -19
  9. package/build/animate/index.js.map +1 -1
  10. package/build/animate/types.js.map +1 -0
  11. package/build/box-control/axial-input-controls.js.map +1 -1
  12. package/build/color-picker/color-input.js +0 -4
  13. package/build/color-picker/color-input.js.map +1 -1
  14. package/build/color-picker/component.js +5 -4
  15. package/build/color-picker/component.js.map +1 -1
  16. package/build/color-picker/hex-input.js.map +1 -1
  17. package/build/color-picker/hsl-input.js.map +1 -1
  18. package/build/color-picker/input-with-slider.js.map +1 -1
  19. package/build/color-picker/legacy-adapter.js.map +1 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/rgb-input.js.map +1 -1
  22. package/build/color-picker/use-deprecated-props.js.map +1 -1
  23. package/build/custom-gradient-picker/constants.js +1 -1
  24. package/build/custom-gradient-picker/constants.js.map +1 -1
  25. package/build/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  26. package/build/custom-gradient-picker/gradient-bar/control-points.js +9 -5
  27. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  28. package/build/custom-gradient-picker/gradient-bar/index.js +14 -9
  29. package/build/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  30. package/build/custom-gradient-picker/gradient-bar/utils.js +34 -54
  31. package/build/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  32. package/build/custom-gradient-picker/index.js +45 -16
  33. package/build/custom-gradient-picker/index.js.map +1 -1
  34. package/build/custom-gradient-picker/serializer.js +10 -4
  35. package/build/custom-gradient-picker/serializer.js.map +1 -1
  36. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  37. package/build/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  38. package/build/custom-gradient-picker/types.js +6 -0
  39. package/build/custom-gradient-picker/types.js.map +1 -0
  40. package/build/custom-gradient-picker/utils.js +17 -12
  41. package/build/custom-gradient-picker/utils.js.map +1 -1
  42. package/build/drop-zone/index.js +8 -8
  43. package/build/drop-zone/index.js.map +1 -1
  44. package/build/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  45. package/build/duotone-picker/color-list-picker/index.js.map +1 -0
  46. package/build/duotone-picker/color-list-picker/types.js +6 -0
  47. package/build/duotone-picker/color-list-picker/types.js.map +1 -0
  48. package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
  49. package/build/duotone-picker/duotone-picker.js +39 -2
  50. package/build/duotone-picker/duotone-picker.js.map +1 -1
  51. package/build/duotone-picker/duotone-swatch.js.map +1 -1
  52. package/build/duotone-picker/index.js.map +1 -1
  53. package/build/duotone-picker/types.js +6 -0
  54. package/build/duotone-picker/types.js.map +1 -0
  55. package/build/duotone-picker/utils.js +13 -11
  56. package/build/duotone-picker/utils.js.map +1 -1
  57. package/build/form-token-field/index.js +9 -3
  58. package/build/form-token-field/index.js.map +1 -1
  59. package/build/gradient-picker/index.js +61 -9
  60. package/build/gradient-picker/index.js.map +1 -1
  61. package/build/gradient-picker/types.js +6 -0
  62. package/build/gradient-picker/types.js.map +1 -0
  63. package/build/index.js.map +1 -1
  64. package/build/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  65. package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  66. package/build/mobile/keyboard-aware-flat-list/index.ios.js +100 -55
  67. package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  68. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +82 -0
  69. package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  70. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +85 -0
  71. package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  72. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +44 -0
  73. package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  74. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +53 -0
  75. package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  76. package/build/navigator/navigator-provider/component.js +4 -2
  77. package/build/navigator/navigator-provider/component.js.map +1 -1
  78. package/build/navigator/navigator-screen/component.js +4 -3
  79. package/build/navigator/navigator-screen/component.js.map +1 -1
  80. package/build/palette-edit/index.js +1 -2
  81. package/build/palette-edit/index.js.map +1 -1
  82. package/build/private-apis.js.map +1 -1
  83. package/build/query-controls/author-select.js +2 -1
  84. package/build/query-controls/author-select.js.map +1 -1
  85. package/build/query-controls/category-select.js +3 -1
  86. package/build/query-controls/category-select.js.map +1 -1
  87. package/build/query-controls/index.js +7 -1
  88. package/build/query-controls/index.js.map +1 -1
  89. package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
  90. package/build/sandbox/index.native.js +129 -93
  91. package/build/sandbox/index.native.js.map +1 -1
  92. package/build/tab-panel/index.js +1 -1
  93. package/build/tab-panel/index.js.map +1 -1
  94. package/build/tools-panel/tools-panel/hook.js +45 -6
  95. package/build/tools-panel/tools-panel/hook.js.map +1 -1
  96. package/build/utils/input/input-control.js +1 -1
  97. package/build/utils/input/input-control.js.map +1 -1
  98. package/build-module/angle-picker-control/angle-circle.js +1 -4
  99. package/build-module/angle-picker-control/angle-circle.js.map +1 -1
  100. package/build-module/angle-picker-control/index.js +12 -21
  101. package/build-module/angle-picker-control/index.js.map +1 -1
  102. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +20 -13
  103. package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
  104. package/build-module/animate/index.js +25 -17
  105. package/build-module/animate/index.js.map +1 -1
  106. package/build-module/box-control/axial-input-controls.js.map +1 -1
  107. package/build-module/color-picker/color-input.js +0 -4
  108. package/build-module/color-picker/color-input.js.map +1 -1
  109. package/build-module/color-picker/component.js +3 -3
  110. package/build-module/color-picker/component.js.map +1 -1
  111. package/build-module/color-picker/hex-input.js.map +1 -1
  112. package/build-module/color-picker/hsl-input.js.map +1 -1
  113. package/build-module/color-picker/input-with-slider.js.map +1 -1
  114. package/build-module/color-picker/legacy-adapter.js.map +1 -1
  115. package/build-module/color-picker/picker.js +4 -0
  116. package/build-module/color-picker/picker.js.map +1 -1
  117. package/build-module/color-picker/rgb-input.js.map +1 -1
  118. package/build-module/color-picker/use-deprecated-props.js.map +1 -1
  119. package/build-module/custom-gradient-picker/constants.js +1 -1
  120. package/build-module/custom-gradient-picker/constants.js.map +1 -1
  121. package/build-module/custom-gradient-picker/gradient-bar/constants.js.map +1 -1
  122. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +9 -4
  123. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  124. package/build-module/custom-gradient-picker/gradient-bar/index.js +14 -8
  125. package/build-module/custom-gradient-picker/gradient-bar/index.js.map +1 -1
  126. package/build-module/custom-gradient-picker/gradient-bar/utils.js +34 -54
  127. package/build-module/custom-gradient-picker/gradient-bar/utils.js.map +1 -1
  128. package/build-module/custom-gradient-picker/index.js +44 -17
  129. package/build-module/custom-gradient-picker/index.js.map +1 -1
  130. package/build-module/custom-gradient-picker/serializer.js +10 -4
  131. package/build-module/custom-gradient-picker/serializer.js.map +1 -1
  132. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js +6 -6
  133. package/build-module/custom-gradient-picker/styles/custom-gradient-picker-styles.js.map +1 -1
  134. package/build-module/custom-gradient-picker/types.js +2 -0
  135. package/build-module/custom-gradient-picker/utils.js +17 -12
  136. package/build-module/custom-gradient-picker/utils.js.map +1 -1
  137. package/build-module/drop-zone/index.js +8 -8
  138. package/build-module/drop-zone/index.js.map +1 -1
  139. package/build-module/{color-list-picker → duotone-picker/color-list-picker}/index.js +5 -5
  140. package/build-module/duotone-picker/color-list-picker/index.js.map +1 -0
  141. package/build-module/duotone-picker/color-list-picker/types.js +2 -0
  142. package/build-module/duotone-picker/color-list-picker/types.js.map +1 -0
  143. package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
  144. package/build-module/duotone-picker/duotone-picker.js +38 -2
  145. package/build-module/duotone-picker/duotone-picker.js.map +1 -1
  146. package/build-module/duotone-picker/duotone-swatch.js.map +1 -1
  147. package/build-module/duotone-picker/index.js.map +1 -1
  148. package/build-module/duotone-picker/types.js +2 -0
  149. package/build-module/duotone-picker/types.js.map +1 -0
  150. package/build-module/duotone-picker/utils.js +17 -11
  151. package/build-module/duotone-picker/utils.js.map +1 -1
  152. package/build-module/form-token-field/index.js +9 -4
  153. package/build-module/form-token-field/index.js.map +1 -1
  154. package/build-module/gradient-picker/index.js +61 -10
  155. package/build-module/gradient-picker/index.js.map +1 -1
  156. package/build-module/gradient-picker/types.js +2 -0
  157. package/build-module/gradient-picker/types.js.map +1 -0
  158. package/build-module/index.js.map +1 -1
  159. package/build-module/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  160. package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
  161. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +97 -54
  162. package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
  163. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +73 -0
  164. package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
  165. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +76 -0
  166. package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
  167. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +33 -0
  168. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
  169. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +40 -0
  170. package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
  171. package/build-module/navigator/navigator-provider/component.js +4 -2
  172. package/build-module/navigator/navigator-provider/component.js.map +1 -1
  173. package/build-module/navigator/navigator-screen/component.js +4 -3
  174. package/build-module/navigator/navigator-screen/component.js.map +1 -1
  175. package/build-module/palette-edit/index.js +1 -2
  176. package/build-module/palette-edit/index.js.map +1 -1
  177. package/build-module/private-apis.js.map +1 -1
  178. package/build-module/query-controls/author-select.js +2 -1
  179. package/build-module/query-controls/author-select.js.map +1 -1
  180. package/build-module/query-controls/category-select.js +3 -1
  181. package/build-module/query-controls/category-select.js.map +1 -1
  182. package/build-module/query-controls/index.js +7 -2
  183. package/build-module/query-controls/index.js.map +1 -1
  184. package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
  185. package/build-module/sandbox/index.native.js +121 -87
  186. package/build-module/sandbox/index.native.js.map +1 -1
  187. package/build-module/tab-panel/index.js +2 -2
  188. package/build-module/tab-panel/index.js.map +1 -1
  189. package/build-module/tools-panel/tools-panel/hook.js +45 -6
  190. package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
  191. package/build-module/utils/input/input-control.js +1 -1
  192. package/build-module/utils/input/input-control.js.map +1 -1
  193. package/build-style/style-rtl.css +41 -29
  194. package/build-style/style.css +43 -29
  195. package/build-types/angle-picker-control/angle-circle.d.ts.map +1 -1
  196. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  197. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +6 -1
  198. package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts.map +1 -1
  199. package/build-types/animate/index.d.ts +27 -22
  200. package/build-types/animate/index.d.ts.map +1 -1
  201. package/build-types/animate/stories/index.d.ts +18 -0
  202. package/build-types/animate/stories/index.d.ts.map +1 -0
  203. package/build-types/animate/types.d.ts +30 -0
  204. package/build-types/animate/types.d.ts.map +1 -0
  205. package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
  206. package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
  207. package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
  208. package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
  209. package/build-types/border-control/border-control/hook.d.ts +2 -2
  210. package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
  211. package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
  212. package/build-types/box-control/styles/box-control-styles.d.ts +5 -5
  213. package/build-types/button/deprecated.d.ts +2 -2
  214. package/build-types/card/card/hook.d.ts +2 -2
  215. package/build-types/card/card-body/hook.d.ts +2 -2
  216. package/build-types/card/card-divider/hook.d.ts +2 -2
  217. package/build-types/card/card-footer/hook.d.ts +2 -2
  218. package/build-types/card/card-header/hook.d.ts +2 -2
  219. package/build-types/card/card-media/hook.d.ts +2 -2
  220. package/build-types/color-palette/styles.d.ts +1 -1
  221. package/build-types/color-picker/color-input.d.ts +1 -11
  222. package/build-types/color-picker/color-input.d.ts.map +1 -1
  223. package/build-types/color-picker/component.d.ts +8 -9
  224. package/build-types/color-picker/component.d.ts.map +1 -1
  225. package/build-types/color-picker/hex-input.d.ts +1 -10
  226. package/build-types/color-picker/hex-input.d.ts.map +1 -1
  227. package/build-types/color-picker/hsl-input.d.ts +1 -10
  228. package/build-types/color-picker/hsl-input.d.ts.map +1 -1
  229. package/build-types/color-picker/input-with-slider.d.ts +1 -9
  230. package/build-types/color-picker/input-with-slider.d.ts.map +1 -1
  231. package/build-types/color-picker/legacy-adapter.d.ts +1 -3
  232. package/build-types/color-picker/legacy-adapter.d.ts.map +1 -1
  233. package/build-types/color-picker/picker.d.ts +4 -7
  234. package/build-types/color-picker/picker.d.ts.map +1 -1
  235. package/build-types/color-picker/rgb-input.d.ts +1 -10
  236. package/build-types/color-picker/rgb-input.d.ts.map +1 -1
  237. package/build-types/color-picker/stories/index.d.ts +19 -0
  238. package/build-types/color-picker/stories/index.d.ts.map +1 -0
  239. package/build-types/color-picker/styles.d.ts +5 -5
  240. package/build-types/color-picker/test/index.d.ts +2 -0
  241. package/build-types/color-picker/test/index.d.ts.map +1 -0
  242. package/build-types/color-picker/types.d.ts +105 -1
  243. package/build-types/color-picker/types.d.ts.map +1 -1
  244. package/build-types/color-picker/use-deprecated-props.d.ts +1 -44
  245. package/build-types/color-picker/use-deprecated-props.d.ts.map +1 -1
  246. package/build-types/combobox-control/styles.d.ts +1 -1
  247. package/build-types/custom-gradient-picker/constants.d.ts +8 -8
  248. package/build-types/custom-gradient-picker/constants.d.ts.map +1 -1
  249. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts +7 -7
  250. package/build-types/custom-gradient-picker/gradient-bar/constants.d.ts.map +1 -1
  251. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts +5 -22
  252. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  253. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts +3 -9
  254. package/build-types/custom-gradient-picker/gradient-bar/index.d.ts.map +1 -1
  255. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts +2 -0
  256. package/build-types/custom-gradient-picker/gradient-bar/test/utils.d.ts.map +1 -0
  257. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts +44 -92
  258. package/build-types/custom-gradient-picker/gradient-bar/utils.d.ts.map +1 -1
  259. package/build-types/custom-gradient-picker/index.d.ts +27 -6
  260. package/build-types/custom-gradient-picker/index.d.ts.map +1 -1
  261. package/build-types/custom-gradient-picker/serializer.d.ts +9 -16
  262. package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
  263. package/build-types/custom-gradient-picker/stories/index.d.ts +12 -0
  264. package/build-types/custom-gradient-picker/stories/index.d.ts.map +1 -0
  265. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts +3 -2
  266. package/build-types/custom-gradient-picker/styles/custom-gradient-picker-styles.d.ts.map +1 -1
  267. package/build-types/custom-gradient-picker/test/serializer.d.ts +2 -0
  268. package/build-types/custom-gradient-picker/test/serializer.d.ts.map +1 -0
  269. package/build-types/custom-gradient-picker/types.d.ts +118 -0
  270. package/build-types/custom-gradient-picker/types.d.ts.map +1 -0
  271. package/build-types/custom-gradient-picker/utils.d.ts +12 -4
  272. package/build-types/custom-gradient-picker/utils.d.ts.map +1 -1
  273. package/build-types/date-time/date/styles.d.ts +2 -2
  274. package/build-types/date-time/date-time/styles.d.ts +1 -1
  275. package/build-types/date-time/time/styles.d.ts +8 -8
  276. package/build-types/drop-zone/index.d.ts.map +1 -1
  277. package/build-types/duotone-picker/color-list-picker/index.d.ts.map +1 -0
  278. package/build-types/{color-list-picker → duotone-picker/color-list-picker}/types.d.ts +2 -2
  279. package/build-types/duotone-picker/color-list-picker/types.d.ts.map +1 -0
  280. package/build-types/duotone-picker/custom-duotone-bar.d.ts +6 -0
  281. package/build-types/duotone-picker/custom-duotone-bar.d.ts.map +1 -0
  282. package/build-types/duotone-picker/duotone-picker.d.ts +38 -0
  283. package/build-types/duotone-picker/duotone-picker.d.ts.map +1 -0
  284. package/build-types/duotone-picker/duotone-swatch.d.ts +5 -0
  285. package/build-types/duotone-picker/duotone-swatch.d.ts.map +1 -0
  286. package/build-types/duotone-picker/index.d.ts +3 -0
  287. package/build-types/duotone-picker/index.d.ts.map +1 -0
  288. package/build-types/duotone-picker/stories/duotone-picker.d.ts +12 -0
  289. package/build-types/duotone-picker/stories/duotone-picker.d.ts.map +1 -0
  290. package/build-types/duotone-picker/stories/duotone-swatch.d.ts +14 -0
  291. package/build-types/duotone-picker/stories/duotone-swatch.d.ts.map +1 -0
  292. package/build-types/duotone-picker/types.d.ts +60 -0
  293. package/build-types/duotone-picker/types.d.ts.map +1 -0
  294. package/build-types/duotone-picker/utils.d.ts +52 -0
  295. package/build-types/duotone-picker/utils.d.ts.map +1 -0
  296. package/build-types/elevation/hook.d.ts +2 -2
  297. package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
  298. package/build-types/flex/flex/hook.d.ts +2 -2
  299. package/build-types/flex/flex-block/hook.d.ts +2 -2
  300. package/build-types/flex/flex-item/hook.d.ts +2 -2
  301. package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
  302. package/build-types/form-token-field/index.d.ts.map +1 -1
  303. package/build-types/form-token-field/styles.d.ts +1 -1
  304. package/build-types/form-token-field/types.d.ts +6 -0
  305. package/build-types/form-token-field/types.d.ts.map +1 -1
  306. package/build-types/gradient-picker/index.d.ts +49 -11
  307. package/build-types/gradient-picker/index.d.ts.map +1 -1
  308. package/build-types/gradient-picker/stories/index.d.ts +14 -0
  309. package/build-types/gradient-picker/stories/index.d.ts.map +1 -0
  310. package/build-types/gradient-picker/types.d.ts +87 -0
  311. package/build-types/gradient-picker/types.d.ts.map +1 -0
  312. package/build-types/grid/hook.d.ts +2 -2
  313. package/build-types/h-stack/hook.d.ts +2 -2
  314. package/build-types/heading/hook.d.ts +2 -2
  315. package/build-types/index.d.ts +128 -0
  316. package/build-types/index.d.ts.map +1 -0
  317. package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
  318. package/build-types/item-group/item/hook.d.ts +2 -2
  319. package/build-types/item-group/item-group/hook.d.ts +2 -2
  320. package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
  321. package/build-types/navigator/navigator-back-button/hook.d.ts +2 -2
  322. package/build-types/navigator/navigator-button/hook.d.ts +2 -2
  323. package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
  324. package/build-types/navigator/navigator-screen/component.d.ts +1 -1
  325. package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
  326. package/build-types/navigator/stories/index.d.ts +1 -0
  327. package/build-types/navigator/stories/index.d.ts.map +1 -1
  328. package/build-types/navigator/types.d.ts +2 -2
  329. package/build-types/navigator/types.d.ts.map +1 -1
  330. package/build-types/number-control/index.d.ts +2 -2
  331. package/build-types/number-control/stories/index.d.ts +2 -2
  332. package/build-types/palette-edit/index.d.ts.map +1 -1
  333. package/build-types/palette-edit/styles.d.ts +3 -3
  334. package/build-types/popover/index.d.ts +1 -1
  335. package/build-types/popover/stories/e2e/index.d.ts +1 -1
  336. package/build-types/private-apis.d.ts +2 -3
  337. package/build-types/private-apis.d.ts.map +1 -1
  338. package/build-types/query-controls/author-select.d.ts.map +1 -1
  339. package/build-types/query-controls/category-select.d.ts.map +1 -1
  340. package/build-types/query-controls/index.d.ts.map +1 -1
  341. package/build-types/range-control/index.d.ts +1 -1
  342. package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
  343. package/build-types/resizable-box/index.d.ts +1 -1
  344. package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
  345. package/build-types/resizable-box/resize-tooltip/utils.d.ts +1 -1
  346. package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
  347. package/build-types/resizable-box/stories/index.d.ts +2 -2
  348. package/build-types/scrollable/hook.d.ts +2 -2
  349. package/build-types/search-control/index.d.ts +1 -1
  350. package/build-types/search-control/stories/index.d.ts +2 -2
  351. package/build-types/spacer/hook.d.ts +2 -2
  352. package/build-types/spinner/index.d.ts +1 -1
  353. package/build-types/surface/hook.d.ts +2 -2
  354. package/build-types/tab-panel/index.d.ts.map +1 -1
  355. package/build-types/text/hook.d.ts +2 -2
  356. package/build-types/text-control/index.d.ts +1 -1
  357. package/build-types/toolbar/toolbar-button/index.d.ts +2 -2
  358. package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
  359. package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
  360. package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
  361. package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
  362. package/build-types/tools-panel/types.d.ts +1 -0
  363. package/build-types/tools-panel/types.d.ts.map +1 -1
  364. package/build-types/truncate/hook.d.ts +2 -2
  365. package/build-types/ui/control-group/hook.d.ts +2 -2
  366. package/build-types/ui/control-label/hook.d.ts +2 -2
  367. package/build-types/ui/form-group/form-group.d.ts +2 -2
  368. package/build-types/ui/form-group/use-form-group.d.ts +2 -2
  369. package/build-types/unit-control/index.d.ts +1 -1
  370. package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
  371. package/build-types/utils/input/input-control.d.ts.map +1 -1
  372. package/build-types/v-stack/hook.d.ts +2 -2
  373. package/package.json +20 -19
  374. package/src/angle-picker-control/angle-circle.tsx +0 -1
  375. package/src/angle-picker-control/index.tsx +14 -27
  376. package/src/angle-picker-control/styles/angle-picker-control-styles.tsx +16 -9
  377. package/src/animate/index.tsx +75 -0
  378. package/src/animate/stories/index.tsx +102 -0
  379. package/src/animate/types.ts +32 -0
  380. package/src/border-box-control/stories/index.tsx +1 -1
  381. package/src/box-control/axial-input-controls.tsx +1 -1
  382. package/src/circular-option-picker/style.scss +10 -0
  383. package/src/color-indicator/style.scss +1 -0
  384. package/src/color-picker/README.md +2 -2
  385. package/src/color-picker/color-input.tsx +1 -12
  386. package/src/color-picker/component.tsx +9 -18
  387. package/src/color-picker/hex-input.tsx +2 -7
  388. package/src/color-picker/hsl-input.tsx +2 -7
  389. package/src/color-picker/input-with-slider.tsx +1 -9
  390. package/src/color-picker/legacy-adapter.tsx +1 -2
  391. package/src/color-picker/picker.tsx +5 -6
  392. package/src/color-picker/rgb-input.tsx +2 -7
  393. package/src/color-picker/stories/index.tsx +51 -0
  394. package/src/color-picker/test/{index.js → index.tsx} +36 -18
  395. package/src/color-picker/types.ts +128 -1
  396. package/src/color-picker/use-deprecated-props.ts +2 -53
  397. package/src/combobox-control/stories/index.tsx +1 -1
  398. package/src/custom-gradient-picker/{constants.js → constants.ts} +2 -2
  399. package/src/custom-gradient-picker/gradient-bar/{control-points.js → control-points.tsx} +171 -134
  400. package/src/custom-gradient-picker/gradient-bar/{index.js → index.tsx} +32 -10
  401. package/src/custom-gradient-picker/gradient-bar/test/{utils.js → utils.ts} +58 -31
  402. package/src/custom-gradient-picker/gradient-bar/utils.ts +193 -0
  403. package/src/custom-gradient-picker/{index.js → index.tsx} +63 -22
  404. package/src/custom-gradient-picker/serializer.ts +78 -0
  405. package/src/custom-gradient-picker/stories/index.tsx +45 -0
  406. package/src/custom-gradient-picker/style.scss +25 -4
  407. package/src/custom-gradient-picker/test/{serializer.js → serializer.ts} +39 -33
  408. package/src/custom-gradient-picker/types.ts +119 -0
  409. package/src/custom-gradient-picker/{utils.js → utils.ts} +37 -22
  410. package/src/custom-select-control/test/index.js +6 -4
  411. package/src/drop-zone/index.tsx +12 -8
  412. package/src/drop-zone/style.scss +1 -1
  413. package/src/{color-list-picker → duotone-picker/color-list-picker}/index.tsx +7 -6
  414. package/src/{color-list-picker → duotone-picker/color-list-picker}/types.ts +2 -2
  415. package/src/duotone-picker/{custom-duotone-bar.js → custom-duotone-bar.tsx} +7 -1
  416. package/src/duotone-picker/{duotone-picker.js → duotone-picker.tsx} +39 -2
  417. package/src/duotone-picker/{duotone-swatch.js → duotone-swatch.tsx} +2 -1
  418. package/src/duotone-picker/stories/{duotone-picker.js → duotone-picker.tsx} +15 -8
  419. package/src/duotone-picker/stories/{duotone-swatch.js → duotone-swatch.tsx} +9 -3
  420. package/src/duotone-picker/types.ts +61 -0
  421. package/src/duotone-picker/{utils.js → utils.ts} +29 -14
  422. package/src/flex/flex-item/README.md +1 -1
  423. package/src/form-token-field/README.md +1 -0
  424. package/src/form-token-field/index.tsx +10 -3
  425. package/src/form-token-field/style.scss +0 -7
  426. package/src/form-token-field/test/index.tsx +1 -0
  427. package/src/form-token-field/types.ts +6 -0
  428. package/src/gradient-picker/README.md +16 -23
  429. package/src/gradient-picker/{index.js → index.tsx} +70 -16
  430. package/src/gradient-picker/stories/{index.js → index.tsx} +19 -8
  431. package/src/gradient-picker/types.ts +89 -0
  432. package/src/item-group/test/index.js +5 -3
  433. package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -4
  434. package/src/mobile/keyboard-aware-flat-list/index.ios.js +118 -67
  435. package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +203 -0
  436. package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-text-input.native.js +140 -0
  437. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +82 -0
  438. package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +147 -0
  439. package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +87 -0
  440. package/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +105 -0
  441. package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +36 -0
  442. package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +54 -0
  443. package/src/navigator/navigator-provider/component.tsx +2 -0
  444. package/src/navigator/navigator-screen/component.tsx +5 -2
  445. package/src/navigator/stories/index.tsx +68 -0
  446. package/src/navigator/test/index.tsx +52 -0
  447. package/src/navigator/types.ts +2 -1
  448. package/src/palette-edit/index.tsx +4 -5
  449. package/src/query-controls/author-select.tsx +1 -0
  450. package/src/query-controls/category-select.tsx +1 -0
  451. package/src/query-controls/index.tsx +4 -2
  452. package/src/resizable-box/resize-tooltip/utils.ts +1 -1
  453. package/src/sandbox/index.native.js +139 -112
  454. package/src/slot-fill/test/slot.js +8 -6
  455. package/src/style.scss +1 -1
  456. package/src/tab-panel/index.tsx +7 -2
  457. package/src/tools-panel/test/index.tsx +86 -0
  458. package/src/tools-panel/tools-panel/hook.ts +44 -4
  459. package/src/tools-panel/types.ts +1 -0
  460. package/src/tooltip/test/index.js +251 -301
  461. package/src/utils/input/input-control.js +1 -0
  462. package/tsconfig.json +1 -3
  463. package/tsconfig.tsbuildinfo +1 -1
  464. package/build/color-list-picker/index.js.map +0 -1
  465. package/build-module/color-list-picker/index.js.map +0 -1
  466. package/build-types/color-list-picker/index.d.ts.map +0 -1
  467. package/build-types/color-list-picker/types.d.ts.map +0 -1
  468. package/src/animate/index.js +0 -60
  469. package/src/animate/stories/index.js +0 -53
  470. package/src/color-picker/stories/index.js +0 -41
  471. package/src/custom-gradient-picker/gradient-bar/utils.js +0 -189
  472. package/src/custom-gradient-picker/serializer.js +0 -48
  473. package/src/custom-gradient-picker/stories/index.js +0 -33
  474. /package/build/{color-list-picker → animate}/types.js +0 -0
  475. /package/build-module/{color-list-picker → animate}/types.js +0 -0
  476. /package/build-module/{color-list-picker → animate}/types.js.map +0 -0
  477. /package/{build/color-list-picker → build-module/custom-gradient-picker}/types.js.map +0 -0
  478. /package/build-types/{color-list-picker → duotone-picker/color-list-picker}/index.d.ts +0 -0
  479. /package/src/custom-gradient-picker/gradient-bar/{constants.js → constants.ts} +0 -0
  480. /package/src/custom-gradient-picker/styles/{custom-gradient-picker-styles.js → custom-gradient-picker-styles.tsx} +0 -0
  481. /package/src/{color-list-picker → duotone-picker/color-list-picker}/style.scss +0 -0
  482. /package/src/duotone-picker/{index.js → index.ts} +0 -0
  483. /package/src/{index.js → index.ts} +0 -0
  484. /package/src/{private-apis.js → private-apis.ts} +0 -0
@@ -1,3 +1,8 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -6,23 +11,22 @@ import { useState } from '@wordpress/element';
6
11
  /**
7
12
  * Internal dependencies
8
13
  */
9
- import { DuotonePicker } from '../';
14
+ import { DuotonePicker } from '..';
15
+ import type { DuotonePickerProps } from '../types';
10
16
 
11
- export default {
17
+ const meta: ComponentMeta< typeof DuotonePicker > = {
12
18
  title: 'Components/DuotonePicker',
13
19
  component: DuotonePicker,
14
20
  argTypes: {
15
- clearable: { control: { type: 'boolean' } },
16
- disableCustomColors: { control: { type: 'boolean' } },
17
- disableCustomDuotone: { control: { type: 'boolean' } },
18
21
  onChange: { action: 'onChange' },
19
- unsetable: { control: { type: 'boolean' } },
22
+ value: { control: { type: null } },
20
23
  },
21
24
  parameters: {
22
25
  controls: { expanded: true },
23
26
  docs: { source: { state: 'open' } },
24
27
  },
25
28
  };
29
+ export default meta;
26
30
 
27
31
  const DUOTONE_PALETTE = [
28
32
  {
@@ -44,8 +48,11 @@ const COLOR_PALETTE = [
44
48
  { color: '#8c00b7', name: 'Purple', slug: 'purple' },
45
49
  ];
46
50
 
47
- const Template = ( { onChange, ...args } ) => {
48
- const [ value, setValue ] = useState();
51
+ const Template: ComponentStory< typeof DuotonePicker > = ( {
52
+ onChange,
53
+ ...args
54
+ } ) => {
55
+ const [ value, setValue ] = useState< DuotonePickerProps[ 'value' ] >();
49
56
 
50
57
  return (
51
58
  <DuotonePicker
@@ -1,9 +1,14 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
5
+
1
6
  /**
2
7
  * Internal dependencies
3
8
  */
4
- import { DuotoneSwatch } from '../';
9
+ import { DuotoneSwatch } from '..';
5
10
 
6
- export default {
11
+ const meta: ComponentMeta< typeof DuotoneSwatch > = {
7
12
  title: 'Components/DuotoneSwatch',
8
13
  component: DuotoneSwatch,
9
14
  parameters: {
@@ -11,8 +16,9 @@ export default {
11
16
  docs: { source: { state: 'open' } },
12
17
  },
13
18
  };
19
+ export default meta;
14
20
 
15
- const Template = ( args ) => {
21
+ const Template: ComponentStory< typeof DuotoneSwatch > = ( args ) => {
16
22
  return <DuotoneSwatch { ...args } />;
17
23
  };
18
24
 
@@ -0,0 +1,61 @@
1
+ export type DuotonePickerProps = {
2
+ /**
3
+ * Whether there should be a button to clear the duotone value.
4
+ *
5
+ * @default true
6
+ */
7
+ clearable?: boolean;
8
+ /**
9
+ * Whether there should be an `unset` option.
10
+ *
11
+ * @default true
12
+ */
13
+ unsetable?: boolean;
14
+ /**
15
+ * Array of color presets of the form `{ color: '#000000', name: 'Black', slug: 'black' }`.
16
+ */
17
+ colorPalette: Color[];
18
+ /**
19
+ * Array of duotone presets of the form `{ colors: [ '#000000', '#ffffff' ], name: 'Grayscale', slug: 'grayscale' }`.
20
+ */
21
+ duotonePalette: DuotoneColor[];
22
+ /**
23
+ * Whether custom colors should be disabled.
24
+ *
25
+ * @default false
26
+ */
27
+ disableCustomColors?: boolean;
28
+ /**
29
+ * Whether custom duotone values should be disabled.
30
+ *
31
+ * @default false
32
+ */
33
+ disableCustomDuotone?: boolean;
34
+ /**
35
+ * An array of colors for the duotone effect.
36
+ */
37
+ value?: string[] | 'unset';
38
+ /**
39
+ * Callback which is called when the duotone colors change.
40
+ */
41
+ onChange: ( value: DuotonePickerProps[ 'value' ] | undefined ) => void;
42
+ };
43
+
44
+ type Color = {
45
+ color: string;
46
+ name: string;
47
+ slug: string;
48
+ };
49
+
50
+ type DuotoneColor = {
51
+ colors: string[];
52
+ name: string;
53
+ slug: string;
54
+ };
55
+
56
+ export type DuotoneSwatchProps = {
57
+ /**
58
+ * An array of colors to show or `null` to show the placeholder swatch icon.
59
+ */
60
+ values?: string[] | null;
61
+ };
@@ -4,6 +4,11 @@
4
4
  import { colord, extend } from 'colord';
5
5
  import namesPlugin from 'colord/plugins/names';
6
6
 
7
+ /**
8
+ * Internal dependencies
9
+ */
10
+ import type { DuotonePickerProps } from './types';
11
+
7
12
  extend( [ namesPlugin ] );
8
13
 
9
14
  /**
@@ -18,11 +23,13 @@ extend( [ namesPlugin ] );
18
23
  /**
19
24
  * Calculate the brightest and darkest values from a color palette.
20
25
  *
21
- * @param {Object[]} palette Color palette for the theme.
26
+ * @param palette Color palette for the theme.
22
27
  *
23
- * @return {string[]} Tuple of the darkest color and brightest color.
28
+ * @return Tuple of the darkest color and brightest color.
24
29
  */
25
- export function getDefaultColors( palette ) {
30
+ export function getDefaultColors(
31
+ palette: DuotonePickerProps[ 'colorPalette' ]
32
+ ) {
26
33
  // A default dark and light color are required.
27
34
  if ( ! palette || palette.length < 2 ) return [ '#000', '#fff' ];
28
35
 
@@ -38,7 +45,10 @@ export function getDefaultColors( palette ) {
38
45
  current.brightness >= max.brightness ? current : max,
39
46
  ];
40
47
  },
41
- [ { brightness: 1 }, { brightness: 0 } ]
48
+ [
49
+ { brightness: 1, color: '' },
50
+ { brightness: 0, color: '' },
51
+ ]
42
52
  )
43
53
  .map( ( { color } ) => color );
44
54
  }
@@ -46,12 +56,15 @@ export function getDefaultColors( palette ) {
46
56
  /**
47
57
  * Generate a duotone gradient from a list of colors.
48
58
  *
49
- * @param {string[]} colors CSS color strings.
50
- * @param {string} angle CSS gradient angle.
59
+ * @param colors CSS color strings.
60
+ * @param angle CSS gradient angle.
51
61
  *
52
- * @return {string} CSS gradient string for the duotone swatch.
62
+ * @return CSS gradient string for the duotone swatch.
53
63
  */
54
- export function getGradientFromCSSColors( colors = [], angle = '90deg' ) {
64
+ export function getGradientFromCSSColors(
65
+ colors: string[] = [],
66
+ angle = '90deg'
67
+ ) {
55
68
  const l = 100 / colors.length;
56
69
 
57
70
  const stops = colors
@@ -64,11 +77,11 @@ export function getGradientFromCSSColors( colors = [], angle = '90deg' ) {
64
77
  /**
65
78
  * Convert a color array to an array of color stops.
66
79
  *
67
- * @param {string[]} colors CSS colors array
80
+ * @param colors CSS colors array
68
81
  *
69
- * @return {Object[]} Color stop information.
82
+ * @return Color stop information.
70
83
  */
71
- export function getColorStopsFromColors( colors ) {
84
+ export function getColorStopsFromColors( colors: string[] ) {
72
85
  return colors.map( ( color, i ) => ( {
73
86
  position: ( i * 100 ) / ( colors.length - 1 ),
74
87
  color,
@@ -78,10 +91,12 @@ export function getColorStopsFromColors( colors ) {
78
91
  /**
79
92
  * Convert a color stop array to an array colors.
80
93
  *
81
- * @param {Object[]} colorStops Color stop information.
94
+ * @param colorStops Color stop information.
82
95
  *
83
- * @return {string[]} CSS colors array.
96
+ * @return CSS colors array.
84
97
  */
85
- export function getColorsFromColorStops( colorStops = [] ) {
98
+ export function getColorsFromColorStops(
99
+ colorStops: { position: number; color: string }[] = []
100
+ ) {
86
101
  return colorStops.map( ( { color } ) => color );
87
102
  }
@@ -16,7 +16,7 @@ The CSS display property of `FlexItem`.
16
16
 
17
17
  ### `isBlock`: `boolean`
18
18
 
19
- Determins if `FlexItem` should render as an adaptive full-width block.
19
+ Determines if `FlexItem` should render as an adaptive full-width block.
20
20
 
21
21
  - Required: No
22
22
  - Default: `false`
@@ -61,6 +61,7 @@ The `value` property is handled in a manner similar to controlled form component
61
61
  - `__experimentalShowHowTo` - If false, the text on how to use the select (ie: _Separate with commas or the Enter key._) will be hidden.
62
62
  - `__experimentalValidateInput` - If passed, all introduced values will be validated before being added as tokens.
63
63
  - `__experimentalAutoSelectFirstMatch` - If true, the select the first matching suggestion when the user presses the Enter key (or space when tokenizeOnSpace is true).
64
+ - `__nextHasNoMarginBottom` - Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.5. (The prop can be safely removed once this happens.)
64
65
 
65
66
  ## Usage
66
67
 
@@ -22,7 +22,11 @@ import { TokensAndInputWrapperFlex } from './styles';
22
22
  import SuggestionsList from './suggestions-list';
23
23
  import type { FormTokenFieldProps, TokenItem } from './types';
24
24
  import { FlexItem } from '../flex';
25
- import { StyledLabel } from '../base-control/styles/base-control-styles';
25
+ import {
26
+ StyledHelp,
27
+ StyledLabel,
28
+ } from '../base-control/styles/base-control-styles';
29
+ import { Spacer } from '../spacer';
26
30
 
27
31
  const identity = ( value: string ) => value;
28
32
 
@@ -67,6 +71,7 @@ export function FormTokenField( props: FormTokenFieldProps ) {
67
71
  __experimentalShowHowTo = true,
68
72
  __next36pxDefaultSize = false,
69
73
  __experimentalAutoSelectFirstMatch = false,
74
+ __nextHasNoMarginBottom = false,
70
75
  } = props;
71
76
 
72
77
  const instanceId = useInstanceId( FormTokenField );
@@ -716,17 +721,19 @@ export function FormTokenField( props: FormTokenFieldProps ) {
716
721
  />
717
722
  ) }
718
723
  </div>
724
+ { ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }
719
725
  { __experimentalShowHowTo && (
720
- <p
726
+ <StyledHelp
721
727
  id={ `components-form-token-suggestions-howto-${ instanceId }` }
722
728
  className="components-form-token-field__help"
729
+ __nextHasNoMarginBottom={ __nextHasNoMarginBottom }
723
730
  >
724
731
  { tokenizeOnSpace
725
732
  ? __(
726
733
  'Separate with commas, spaces, or the Enter key.'
727
734
  )
728
735
  : __( 'Separate with commas or the Enter key.' ) }
729
- </p>
736
+ </StyledHelp>
730
737
  ) }
731
738
  </div>
732
739
  );
@@ -1,7 +1,6 @@
1
1
  .components-form-token-field__input-container {
2
2
  @include input-control();
3
3
  width: 100%;
4
- margin: 0 0 $grid-unit-10 0;
5
4
  padding: 0;
6
5
  cursor: text;
7
6
 
@@ -48,12 +47,6 @@
48
47
  }
49
48
  }
50
49
 
51
- .components-form-token-field__help {
52
- font-size: $helptext-font-size;
53
- font-style: normal;
54
- color: $gray-700;
55
- }
56
-
57
50
  // Tokens
58
51
  .components-form-token-field__token {
59
52
  font-size: $default-font-size;
@@ -44,6 +44,7 @@ const FormTokenFieldWithState = ( {
44
44
  setSelectedValue( tokens );
45
45
  onChange?.( tokens );
46
46
  } }
47
+ __nextHasNoMarginBottom
47
48
  />
48
49
  );
49
50
  };
@@ -169,6 +169,12 @@ export interface FormTokenFieldProps
169
169
  * Custom renderer for suggestions.
170
170
  */
171
171
  __experimentalRenderItem?: ( args: { item: string } ) => ReactNode;
172
+ /**
173
+ * Start opting into the new margin-free styles that will become the default in a future version.
174
+ *
175
+ * @default false
176
+ */
177
+ __nextHasNoMarginBottom?: boolean;
172
178
  }
173
179
 
174
180
  /**
@@ -49,63 +49,56 @@ const myGradientPicker = () => {
49
49
 
50
50
  The component accepts the following props:
51
51
 
52
- ### value
52
+ ### `className`: `string`
53
+
54
+ The class name added to the wrapper.
55
+
56
+ - Required: No
57
+
58
+ ### `value`: `string`
53
59
 
54
60
  The current value of the gradient. Pass a css gradient like `linear-gradient(90deg, rgb(6, 147, 227) 0%, rgb(155, 81, 224) 100%)`. Optionally pass in a `null` value to specify no gradient is currently selected.
55
61
 
56
- - Type: `string`
57
62
  - Required: No
58
63
  - Default: `linear-gradient(90deg, rgb(6, 147, 227) 0%, rgb(155, 81, 224) 100%)`
59
64
 
60
- ### onChange
65
+ ### `onChange`: `( currentGradient: string | undefined ) => void`
61
66
 
62
67
  The function called when a new gradient has been defined. It is passed the `currentGradient` as an argument.
63
68
 
64
- - Type: `Function`
65
69
  - Required: Yes
66
70
 
67
- ### gradients
71
+ ### `gradients`: `GradientsProp[]`
68
72
 
69
- An array of objects of predefined gradients which show up as `CircularOptionPicker` above the gradient selector.
73
+ An array of objects of predefined gradients displayed above the gradient selector.
70
74
 
71
- - Type: `array`
72
75
  - Required: No
76
+ - Default: `[]`
73
77
 
74
- ### clearable
78
+ ### `clearable`: `boolean`
75
79
 
76
80
  Whether the palette should have a clearing button or not.
77
81
 
78
- - Type: `Boolean`
79
82
  - Required: No
80
83
  - Default: true
81
84
 
82
- ### clearGradient
83
-
84
- Called when a new gradient has been defined. It is passed the `currentGradient` as an argument.
85
-
86
- - Type: `Function`
87
- - Required: No
88
-
89
- ### disableCustomGradients
85
+ ### `disableCustomGradients`: `boolean`
90
86
 
91
87
  If true, the gradient picker will not be displayed and only defined gradients from `gradients` are available.
92
88
 
93
- - Type: `Boolean`
94
89
  - Required: No
95
90
  - Default: false
96
91
 
97
- ### __nextHasNoMargin
92
+ ### `__nextHasNoMargin`: `boolean`
98
93
 
99
94
  Start opting into the new margin-free styles that will become the default in a future version, currently scheduled to be WordPress 6.4. (The prop can be safely removed once this happens.)
100
95
 
101
- - Type: `Boolean`
102
96
  - Required: No
103
97
  - Default: `false`
104
98
 
105
- ### headingLevel
99
+ ### `headingLevel`: `1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6'`
106
100
 
107
- The heading level.
101
+ The heading level. Only applies in cases where gradients are provided from multiple origins (ie. when the array passed as the `gradients` prop contains two or more items).
108
102
 
109
- - Type: `1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6'`
110
103
  - Required: No
111
104
  - Default: `2`
@@ -1,5 +1,3 @@
1
- // @ts-nocheck
2
-
3
1
  /**
4
2
  * WordPress dependencies
5
3
  */
@@ -15,13 +13,21 @@ import CustomGradientPicker from '../custom-gradient-picker';
15
13
  import { VStack } from '../v-stack';
16
14
  import { ColorHeading } from '../color-palette/styles';
17
15
  import { Spacer } from '../spacer';
16
+ import type {
17
+ GradientPickerComponentProps,
18
+ PickerProps,
19
+ OriginObject,
20
+ GradientObject,
21
+ } from './types';
18
22
 
19
23
  // The Multiple Origin Gradients have a `gradients` property (an array of
20
24
  // gradient objects), while Single Origin ones have a `gradient` property.
21
- const isMultipleOriginObject = ( obj ) =>
25
+ const isMultipleOriginObject = (
26
+ obj: Record< string, any >
27
+ ): obj is OriginObject =>
22
28
  Array.isArray( obj.gradients ) && ! ( 'gradient' in obj );
23
29
 
24
- const isMultipleOriginArray = ( arr ) => {
30
+ const isMultipleOriginArray = ( arr: any[] ): arr is OriginObject[] => {
25
31
  return (
26
32
  arr.length > 0 &&
27
33
  arr.every( ( gradientObj ) => isMultipleOriginObject( gradientObj ) )
@@ -35,7 +41,7 @@ function SingleOrigin( {
35
41
  onChange,
36
42
  value,
37
43
  actions,
38
- } ) {
44
+ }: PickerProps< GradientObject > ) {
39
45
  const gradientOptions = useMemo( () => {
40
46
  return gradients.map( ( { gradient, name }, index ) => (
41
47
  <CircularOptionPicker.Option
@@ -80,7 +86,7 @@ function MultipleOrigin( {
80
86
  value,
81
87
  actions,
82
88
  headingLevel,
83
- } ) {
89
+ }: PickerProps< OriginObject > ) {
84
90
  return (
85
91
  <VStack spacing={ 3 } className={ className }>
86
92
  { gradients.map( ( { name, gradients: gradientSet }, index ) => {
@@ -107,25 +113,72 @@ function MultipleOrigin( {
107
113
  );
108
114
  }
109
115
 
110
- export default function GradientPicker( {
116
+ function Component( props: PickerProps< any > ) {
117
+ if ( isMultipleOriginArray( props.gradients ) ) {
118
+ return <MultipleOrigin { ...props } />;
119
+ }
120
+ return <SingleOrigin { ...props } />;
121
+ }
122
+
123
+ /**
124
+ * GradientPicker is a React component that renders a color gradient picker to
125
+ * define a multi step gradient. There's either a _linear_ or a _radial_ type
126
+ * available.
127
+ *
128
+ * ```jsx
129
+ *import { GradientPicker } from '@wordpress/components';
130
+ *import { useState } from '@wordpress/element';
131
+ *
132
+ *const myGradientPicker = () => {
133
+ * const [ gradient, setGradient ] = useState( null );
134
+ *
135
+ * return (
136
+ * <GradientPicker
137
+ * __nextHasNoMargin
138
+ * value={ gradient }
139
+ * onChange={ ( currentGradient ) => setGradient( currentGradient ) }
140
+ * gradients={ [
141
+ * {
142
+ * name: 'JShine',
143
+ * gradient:
144
+ * 'linear-gradient(135deg,#12c2e9 0%,#c471ed 50%,#f64f59 100%)',
145
+ * slug: 'jshine',
146
+ * },
147
+ * {
148
+ * name: 'Moonlit Asteroid',
149
+ * gradient:
150
+ * 'linear-gradient(135deg,#0F2027 0%, #203A43 0%, #2c5364 100%)',
151
+ * slug: 'moonlit-asteroid',
152
+ * },
153
+ * {
154
+ * name: 'Rastafarie',
155
+ * gradient:
156
+ * 'linear-gradient(135deg,#1E9600 0%, #FFF200 0%, #FF0000 100%)',
157
+ * slug: 'rastafari',
158
+ * },
159
+ * ] }
160
+ * />
161
+ * );
162
+ *};
163
+ *```
164
+ *
165
+ */
166
+ export function GradientPicker( {
111
167
  /** Start opting into the new margin-free styles that will become the default in a future version. */
112
168
  __nextHasNoMargin = false,
113
169
  className,
114
- gradients,
170
+ gradients = [],
115
171
  onChange,
116
172
  value,
117
173
  clearable = true,
118
174
  disableCustomGradients = false,
119
175
  __experimentalIsRenderedInSidebar,
120
176
  headingLevel = 2,
121
- } ) {
177
+ }: GradientPickerComponentProps ) {
122
178
  const clearGradient = useCallback(
123
179
  () => onChange( undefined ),
124
180
  [ onChange ]
125
181
  );
126
- const Component = isMultipleOriginArray( gradients )
127
- ? MultipleOrigin
128
- : SingleOrigin;
129
182
 
130
183
  if ( ! __nextHasNoMargin ) {
131
184
  deprecated( 'Outer margin styles for wp.components.GradientPicker', {
@@ -137,7 +190,7 @@ export default function GradientPicker( {
137
190
 
138
191
  const deprecatedMarginSpacerProps = ! __nextHasNoMargin
139
192
  ? {
140
- marginTop: ! gradients?.length ? 3 : undefined,
193
+ marginTop: ! gradients.length ? 3 : undefined,
141
194
  marginBottom: ! clearable ? 6 : 0,
142
195
  }
143
196
  : {};
@@ -145,7 +198,7 @@ export default function GradientPicker( {
145
198
  return (
146
199
  // Outmost Spacer wrapper can be removed when deprecation period is over
147
200
  <Spacer marginBottom={ 0 } { ...deprecatedMarginSpacerProps }>
148
- <VStack spacing={ gradients?.length ? 4 : 0 }>
201
+ <VStack spacing={ gradients.length ? 4 : 0 }>
149
202
  { ! disableCustomGradients && (
150
203
  <CustomGradientPicker
151
204
  __nextHasNoMargin
@@ -156,10 +209,9 @@ export default function GradientPicker( {
156
209
  onChange={ onChange }
157
210
  />
158
211
  ) }
159
- { ( gradients?.length || clearable ) && (
212
+ { ( gradients.length || clearable ) && (
160
213
  <Component
161
214
  className={ className }
162
- clearable={ clearable }
163
215
  clearGradient={ clearGradient }
164
216
  gradients={ gradients }
165
217
  onChange={ onChange }
@@ -181,3 +233,5 @@ export default function GradientPicker( {
181
233
  </Spacer>
182
234
  );
183
235
  }
236
+
237
+ export default GradientPicker;
@@ -1,3 +1,7 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { ComponentMeta, ComponentStory } from '@storybook/react';
1
5
  /**
2
6
  * WordPress dependencies
3
7
  */
@@ -6,18 +10,21 @@ import { useState } from '@wordpress/element';
6
10
  /**
7
11
  * Internal dependencies
8
12
  */
9
- import GradientPicker from '../';
13
+ import GradientPicker from '..';
10
14
 
11
- export default {
15
+ const meta: ComponentMeta< typeof GradientPicker > = {
12
16
  title: 'Components/GradientPicker',
13
17
  component: GradientPicker,
18
+ parameters: {
19
+ controls: { expanded: true },
20
+ docs: { source: { state: 'open' } },
21
+ actions: { argTypesRegex: '^on.*' },
22
+ },
14
23
  argTypes: {
15
- __nextHasNoMargin: { control: { type: 'boolean' } },
16
- clearable: { control: { type: 'boolean' } },
17
- disableCustomGradients: { control: { type: 'boolean' } },
18
- onChange: { action: 'onChange' },
24
+ value: { control: { type: null } },
19
25
  },
20
26
  };
27
+ export default meta;
21
28
 
22
29
  const GRADIENTS = [
23
30
  {
@@ -58,8 +65,12 @@ const GRADIENTS = [
58
65
  },
59
66
  ];
60
67
 
61
- const Template = ( { onChange, ...props } ) => {
62
- const [ gradient, setGradient ] = useState();
68
+ const Template: ComponentStory< typeof GradientPicker > = ( {
69
+ onChange,
70
+ ...props
71
+ } ) => {
72
+ const [ gradient, setGradient ] =
73
+ useState< ( typeof props )[ 'value' ] >( null );
63
74
  return (
64
75
  <GradientPicker
65
76
  { ...props }