@wordpress/components 25.9.1 → 25.11.1-next.f8d8eceb.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 (364) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/build/alignment-matrix-control/cell.js +8 -5
  3. package/build/alignment-matrix-control/cell.js.map +1 -1
  4. package/build/alignment-matrix-control/index.js +27 -43
  5. package/build/alignment-matrix-control/index.js.map +1 -1
  6. package/build/alignment-matrix-control/utils.js +29 -9
  7. package/build/alignment-matrix-control/utils.js.map +1 -1
  8. package/build/autocomplete/index.js +104 -52
  9. package/build/autocomplete/index.js.map +1 -1
  10. package/build/circular-option-picker/circular-option-picker-option.js +20 -39
  11. package/build/circular-option-picker/circular-option-picker-option.js.map +1 -1
  12. package/build/circular-option-picker/circular-option-picker.js +11 -32
  13. package/build/circular-option-picker/circular-option-picker.js.map +1 -1
  14. package/build/circular-option-picker/types.js.map +1 -1
  15. package/build/color-palette/index.js +7 -2
  16. package/build/color-palette/index.js.map +1 -1
  17. package/build/color-picker/component.js +12 -2
  18. package/build/color-picker/component.js.map +1 -1
  19. package/build/color-picker/picker.js +77 -1
  20. package/build/color-picker/picker.js.map +1 -1
  21. package/build/color-picker/styles.js +8 -8
  22. package/build/color-picker/styles.js.map +1 -1
  23. package/build/color-picker/types.js.map +1 -1
  24. package/build/composite/v2.js +43 -0
  25. package/build/composite/v2.js.map +1 -0
  26. package/build/confirm-dialog/component.js +74 -8
  27. package/build/confirm-dialog/component.js.map +1 -1
  28. package/build/confirm-dialog/types.js.map +1 -1
  29. package/build/custom-gradient-picker/gradient-bar/control-points.js +13 -4
  30. package/build/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  31. package/build/dropdown-menu-v2-ariakit/index.js +217 -0
  32. package/build/dropdown-menu-v2-ariakit/index.js.map +1 -0
  33. package/build/dropdown-menu-v2-ariakit/styles.js +157 -0
  34. package/build/dropdown-menu-v2-ariakit/styles.js.map +1 -0
  35. package/build/dropdown-menu-v2-ariakit/types.js +6 -0
  36. package/build/dropdown-menu-v2-ariakit/types.js.map +1 -0
  37. package/build/font-size-picker/utils.js +1 -1
  38. package/build/font-size-picker/utils.js.map +1 -1
  39. package/build/input-control/styles/input-control-styles.js +23 -23
  40. package/build/input-control/styles/input-control-styles.js.map +1 -1
  41. package/build/mobile/global-styles-context/utils.native.js +1 -1
  42. package/build/mobile/global-styles-context/utils.native.js.map +1 -1
  43. package/build/modal/index.js +45 -16
  44. package/build/modal/index.js.map +1 -1
  45. package/build/palette-edit/index.js +4 -0
  46. package/build/palette-edit/index.js.map +1 -1
  47. package/build/popover/index.js +34 -6
  48. package/build/popover/index.js.map +1 -1
  49. package/build/private-apis.js +18 -2
  50. package/build/private-apis.js.map +1 -1
  51. package/build/progress-bar/styles.js +5 -5
  52. package/build/progress-bar/styles.js.map +1 -1
  53. package/build/sandbox/index.js +1 -1
  54. package/build/sandbox/index.js.map +1 -1
  55. package/build/sandbox/index.native.js +1 -1
  56. package/build/sandbox/index.native.js.map +1 -1
  57. package/build/select-control/styles/select-control-styles.js +8 -8
  58. package/build/select-control/styles/select-control-styles.js.map +1 -1
  59. package/build/tabs/context.js +16 -0
  60. package/build/tabs/context.js.map +1 -0
  61. package/build/tabs/index.js +147 -0
  62. package/build/tabs/index.js.map +1 -0
  63. package/build/tabs/styles.js +38 -0
  64. package/build/tabs/styles.js.map +1 -0
  65. package/build/tabs/tab.js +46 -0
  66. package/build/tabs/tab.js.map +1 -0
  67. package/build/tabs/tablist.js +47 -0
  68. package/build/tabs/tablist.js.map +1 -0
  69. package/build/tabs/tabpanel.js +48 -0
  70. package/build/tabs/tabpanel.js.map +1 -0
  71. package/build/tabs/types.js +6 -0
  72. package/build/tabs/types.js.map +1 -0
  73. package/build/text/component.js +7 -6
  74. package/build/text/component.js.map +1 -1
  75. package/build/text/hook.js +6 -15
  76. package/build/text/hook.js.map +1 -1
  77. package/build/text/index.js.map +1 -1
  78. package/build/text/styles.js +7 -7
  79. package/build/text/styles.js.map +1 -1
  80. package/build/text/types.js.map +1 -1
  81. package/build/text/utils.js +17 -33
  82. package/build/text/utils.js.map +1 -1
  83. package/build/toggle-group-control/toggle-group-control-option-base/component.js +1 -0
  84. package/build/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  85. package/build/toolbar/toolbar/index.js +17 -10
  86. package/build/toolbar/toolbar/index.js.map +1 -1
  87. package/build/toolbar/toolbar/types.js.map +1 -1
  88. package/build/tools-panel/tools-panel-item/hook.js +2 -2
  89. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  90. package/build/tools-panel/types.js.map +1 -1
  91. package/build/tooltip/index.js +2 -2
  92. package/build/tooltip/index.js.map +1 -1
  93. package/build/unit-control/utils.js +108 -0
  94. package/build/unit-control/utils.js.map +1 -1
  95. package/build/utils/unit-values.js +1 -1
  96. package/build/utils/unit-values.js.map +1 -1
  97. package/build-module/alignment-matrix-control/cell.js +7 -4
  98. package/build-module/alignment-matrix-control/cell.js.map +1 -1
  99. package/build-module/alignment-matrix-control/index.js +27 -43
  100. package/build-module/alignment-matrix-control/index.js.map +1 -1
  101. package/build-module/alignment-matrix-control/utils.js +29 -8
  102. package/build-module/alignment-matrix-control/utils.js.map +1 -1
  103. package/build-module/autocomplete/index.js +104 -52
  104. package/build-module/autocomplete/index.js.map +1 -1
  105. package/build-module/circular-option-picker/circular-option-picker-option.js +20 -39
  106. package/build-module/circular-option-picker/circular-option-picker-option.js.map +1 -1
  107. package/build-module/circular-option-picker/circular-option-picker.js +10 -31
  108. package/build-module/circular-option-picker/circular-option-picker.js.map +1 -1
  109. package/build-module/circular-option-picker/types.js.map +1 -1
  110. package/build-module/color-palette/index.js +7 -2
  111. package/build-module/color-palette/index.js.map +1 -1
  112. package/build-module/color-picker/component.js +13 -3
  113. package/build-module/color-picker/component.js.map +1 -1
  114. package/build-module/color-picker/picker.js +78 -2
  115. package/build-module/color-picker/picker.js.map +1 -1
  116. package/build-module/color-picker/styles.js +8 -8
  117. package/build-module/color-picker/styles.js.map +1 -1
  118. package/build-module/color-picker/types.js.map +1 -1
  119. package/build-module/composite/v2.js +15 -0
  120. package/build-module/composite/v2.js.map +1 -0
  121. package/build-module/confirm-dialog/component.js +72 -7
  122. package/build-module/confirm-dialog/component.js.map +1 -1
  123. package/build-module/confirm-dialog/types.js.map +1 -1
  124. package/build-module/custom-gradient-picker/gradient-bar/control-points.js +13 -4
  125. package/build-module/custom-gradient-picker/gradient-bar/control-points.js.map +1 -1
  126. package/build-module/dropdown-menu-v2-ariakit/index.js +199 -0
  127. package/build-module/dropdown-menu-v2-ariakit/index.js.map +1 -0
  128. package/build-module/dropdown-menu-v2-ariakit/styles.js +136 -0
  129. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +1 -0
  130. package/build-module/dropdown-menu-v2-ariakit/types.js +2 -0
  131. package/build-module/dropdown-menu-v2-ariakit/types.js.map +1 -0
  132. package/build-module/font-size-picker/utils.js +1 -1
  133. package/build-module/font-size-picker/utils.js.map +1 -1
  134. package/build-module/input-control/styles/input-control-styles.js +23 -23
  135. package/build-module/input-control/styles/input-control-styles.js.map +1 -1
  136. package/build-module/mobile/global-styles-context/utils.native.js +2 -2
  137. package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
  138. package/build-module/modal/index.js +47 -18
  139. package/build-module/modal/index.js.map +1 -1
  140. package/build-module/palette-edit/index.js +4 -0
  141. package/build-module/palette-edit/index.js.map +1 -1
  142. package/build-module/popover/index.js +34 -6
  143. package/build-module/popover/index.js.map +1 -1
  144. package/build-module/private-apis.js +18 -2
  145. package/build-module/private-apis.js.map +1 -1
  146. package/build-module/progress-bar/styles.js +5 -5
  147. package/build-module/progress-bar/styles.js.map +1 -1
  148. package/build-module/sandbox/index.js +1 -1
  149. package/build-module/sandbox/index.js.map +1 -1
  150. package/build-module/sandbox/index.native.js +1 -1
  151. package/build-module/sandbox/index.native.js.map +1 -1
  152. package/build-module/select-control/styles/select-control-styles.js +8 -8
  153. package/build-module/select-control/styles/select-control-styles.js.map +1 -1
  154. package/build-module/tabs/context.js +12 -0
  155. package/build-module/tabs/context.js.map +1 -0
  156. package/build-module/tabs/index.js +142 -0
  157. package/build-module/tabs/index.js.map +1 -0
  158. package/build-module/tabs/styles.js +36 -0
  159. package/build-module/tabs/styles.js.map +1 -0
  160. package/build-module/tabs/tab.js +43 -0
  161. package/build-module/tabs/tab.js.map +1 -0
  162. package/build-module/tabs/tablist.js +41 -0
  163. package/build-module/tabs/tablist.js.map +1 -0
  164. package/build-module/tabs/tabpanel.js +43 -0
  165. package/build-module/tabs/tabpanel.js.map +1 -0
  166. package/build-module/tabs/types.js +2 -0
  167. package/build-module/tabs/types.js.map +1 -0
  168. package/build-module/text/component.js +6 -6
  169. package/build-module/text/component.js.map +1 -1
  170. package/build-module/text/hook.js +11 -19
  171. package/build-module/text/hook.js.map +1 -1
  172. package/build-module/text/index.js.map +1 -1
  173. package/build-module/text/styles.js +7 -7
  174. package/build-module/text/styles.js.map +1 -1
  175. package/build-module/text/types.js.map +1 -1
  176. package/build-module/text/utils.js +17 -10
  177. package/build-module/text/utils.js.map +1 -1
  178. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js +1 -0
  179. package/build-module/toggle-group-control/toggle-group-control-option-base/component.js.map +1 -1
  180. package/build-module/toolbar/toolbar/index.js +18 -11
  181. package/build-module/toolbar/toolbar/index.js.map +1 -1
  182. package/build-module/toolbar/toolbar/types.js.map +1 -1
  183. package/build-module/tools-panel/tools-panel-item/hook.js +2 -2
  184. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  185. package/build-module/tools-panel/types.js.map +1 -1
  186. package/build-module/tooltip/index.js +2 -2
  187. package/build-module/tooltip/index.js.map +1 -1
  188. package/build-module/unit-control/utils.js +108 -0
  189. package/build-module/unit-control/utils.js.map +1 -1
  190. package/build-module/utils/unit-values.js +1 -1
  191. package/build-module/utils/unit-values.js.map +1 -1
  192. package/build-style/style-rtl.css +17 -5
  193. package/build-style/style.css +17 -5
  194. package/build-types/alignment-matrix-control/cell.d.ts +1 -1
  195. package/build-types/alignment-matrix-control/cell.d.ts.map +1 -1
  196. package/build-types/alignment-matrix-control/index.d.ts.map +1 -1
  197. package/build-types/alignment-matrix-control/stories/index.story.d.ts.map +1 -1
  198. package/build-types/alignment-matrix-control/utils.d.ts +9 -9
  199. package/build-types/alignment-matrix-control/utils.d.ts.map +1 -1
  200. package/build-types/autocomplete/index.d.ts.map +1 -1
  201. package/build-types/circular-option-picker/circular-option-picker-option.d.ts.map +1 -1
  202. package/build-types/circular-option-picker/circular-option-picker.d.ts.map +1 -1
  203. package/build-types/circular-option-picker/types.d.ts +4 -6
  204. package/build-types/circular-option-picker/types.d.ts.map +1 -1
  205. package/build-types/color-palette/index.d.ts.map +1 -1
  206. package/build-types/color-picker/component.d.ts.map +1 -1
  207. package/build-types/color-picker/picker.d.ts +1 -1
  208. package/build-types/color-picker/picker.d.ts.map +1 -1
  209. package/build-types/color-picker/styles.d.ts.map +1 -1
  210. package/build-types/color-picker/types.d.ts +3 -0
  211. package/build-types/color-picker/types.d.ts.map +1 -1
  212. package/build-types/composite/v2.d.ts +12 -0
  213. package/build-types/composite/v2.d.ts.map +1 -0
  214. package/build-types/confirm-dialog/component.d.ts +70 -29
  215. package/build-types/confirm-dialog/component.d.ts.map +1 -1
  216. package/build-types/confirm-dialog/stories/index.story.d.ts +11 -0
  217. package/build-types/confirm-dialog/stories/index.story.d.ts.map +1 -0
  218. package/build-types/confirm-dialog/test/index.d.ts +2 -0
  219. package/build-types/confirm-dialog/test/index.d.ts.map +1 -0
  220. package/build-types/confirm-dialog/types.d.ts +32 -10
  221. package/build-types/confirm-dialog/types.d.ts.map +1 -1
  222. package/build-types/custom-gradient-picker/gradient-bar/control-points.d.ts.map +1 -1
  223. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +11 -0
  224. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +1 -0
  225. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts +16 -0
  226. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +1 -0
  227. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +88 -0
  228. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +1 -0
  229. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts +2 -0
  230. package/build-types/dropdown-menu-v2-ariakit/test/index.d.ts.map +1 -0
  231. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +174 -0
  232. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +1 -0
  233. package/build-types/font-size-picker/utils.d.ts.map +1 -1
  234. package/build-types/heading/stories/index.story.d.ts.map +1 -1
  235. package/build-types/modal/index.d.ts.map +1 -1
  236. package/build-types/palette-edit/index.d.ts.map +1 -1
  237. package/build-types/popover/index.d.ts +1 -1
  238. package/build-types/popover/index.d.ts.map +1 -1
  239. package/build-types/popover/stories/e2e/index.story.d.ts +1 -1
  240. package/build-types/private-apis.d.ts.map +1 -1
  241. package/build-types/progress-bar/styles.d.ts.map +1 -1
  242. package/build-types/sandbox/index.d.ts.map +1 -1
  243. package/build-types/tabs/context.d.ts +8 -0
  244. package/build-types/tabs/context.d.ts.map +1 -0
  245. package/build-types/tabs/index.d.ts +13 -0
  246. package/build-types/tabs/index.d.ts.map +1 -0
  247. package/build-types/tabs/stories/index.story.d.ts +20 -0
  248. package/build-types/tabs/stories/index.story.d.ts.map +1 -0
  249. package/build-types/tabs/styles.d.ts +17 -0
  250. package/build-types/tabs/styles.d.ts.map +1 -0
  251. package/build-types/tabs/tab.d.ts +10 -0
  252. package/build-types/tabs/tab.d.ts.map +1 -0
  253. package/build-types/tabs/tablist.d.ts +7 -0
  254. package/build-types/tabs/tablist.d.ts.map +1 -0
  255. package/build-types/tabs/tabpanel.d.ts +7 -0
  256. package/build-types/tabs/tabpanel.d.ts.map +1 -0
  257. package/build-types/tabs/test/index.d.ts +2 -0
  258. package/build-types/tabs/test/index.d.ts.map +1 -0
  259. package/build-types/tabs/types.d.ts +134 -0
  260. package/build-types/tabs/types.d.ts.map +1 -0
  261. package/build-types/text/component.d.ts +4 -2
  262. package/build-types/text/component.d.ts.map +1 -1
  263. package/build-types/text/hook.d.ts +171 -165
  264. package/build-types/text/hook.d.ts.map +1 -1
  265. package/build-types/text/index.d.ts +2 -2
  266. package/build-types/text/index.d.ts.map +1 -1
  267. package/build-types/text/stories/index.story.d.ts +21 -0
  268. package/build-types/text/stories/index.story.d.ts.map +1 -0
  269. package/build-types/text/styles.d.ts +7 -7
  270. package/build-types/text/styles.d.ts.map +1 -1
  271. package/build-types/text/types.d.ts +1 -1
  272. package/build-types/text/types.d.ts.map +1 -1
  273. package/build-types/text/utils.d.ts +56 -61
  274. package/build-types/text/utils.d.ts.map +1 -1
  275. package/build-types/toggle-group-control/toggle-group-control-option-base/component.d.ts.map +1 -1
  276. package/build-types/toolbar/stories/index.story.d.ts +5 -0
  277. package/build-types/toolbar/stories/index.story.d.ts.map +1 -1
  278. package/build-types/toolbar/toolbar/index.d.ts.map +1 -1
  279. package/build-types/toolbar/toolbar/types.d.ts +10 -0
  280. package/build-types/toolbar/toolbar/types.d.ts.map +1 -1
  281. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  282. package/build-types/tools-panel/types.d.ts +2 -0
  283. package/build-types/tools-panel/types.d.ts.map +1 -1
  284. package/build-types/tooltip/index.d.ts.map +1 -1
  285. package/build-types/unit-control/utils.d.ts.map +1 -1
  286. package/package.json +21 -20
  287. package/src/alignment-matrix-control/cell.tsx +6 -2
  288. package/src/alignment-matrix-control/index.tsx +31 -54
  289. package/src/alignment-matrix-control/stories/index.story.tsx +3 -7
  290. package/src/alignment-matrix-control/test/index.tsx +117 -18
  291. package/src/alignment-matrix-control/utils.tsx +33 -9
  292. package/src/autocomplete/index.tsx +136 -77
  293. package/src/button/style.scss +1 -2
  294. package/src/circular-option-picker/circular-option-picker-option.tsx +24 -38
  295. package/src/circular-option-picker/circular-option-picker.tsx +11 -28
  296. package/src/circular-option-picker/types.ts +6 -5
  297. package/src/color-palette/index.tsx +6 -1
  298. package/src/color-picker/component.tsx +25 -3
  299. package/src/color-picker/picker.tsx +96 -2
  300. package/src/color-picker/styles.ts +0 -1
  301. package/src/color-picker/types.ts +3 -0
  302. package/src/composite/v2.ts +22 -0
  303. package/src/confirm-dialog/README.md +1 -1
  304. package/src/confirm-dialog/component.tsx +79 -13
  305. package/src/confirm-dialog/stories/{index.story.js → index.story.tsx} +26 -24
  306. package/src/confirm-dialog/test/{index.js → index.tsx} +3 -3
  307. package/src/confirm-dialog/types.ts +32 -12
  308. package/src/custom-gradient-picker/gradient-bar/control-points.tsx +32 -25
  309. package/src/dimension-control/test/__snapshots__/index.test.js.snap +8 -8
  310. package/src/dropdown-menu-v2-ariakit/README.md +324 -0
  311. package/src/dropdown-menu-v2-ariakit/index.tsx +318 -0
  312. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +506 -0
  313. package/src/dropdown-menu-v2-ariakit/styles.ts +297 -0
  314. package/src/dropdown-menu-v2-ariakit/test/index.tsx +1139 -0
  315. package/src/dropdown-menu-v2-ariakit/types.ts +186 -0
  316. package/src/font-size-picker/utils.ts +2 -1
  317. package/src/heading/stories/index.story.tsx +2 -4
  318. package/src/input-control/styles/input-control-styles.tsx +2 -2
  319. package/src/mobile/global-styles-context/utils.native.js +2 -2
  320. package/src/modal/index.tsx +58 -22
  321. package/src/modal/test/index.tsx +29 -0
  322. package/src/notice/style.scss +0 -1
  323. package/src/palette-edit/index.tsx +4 -0
  324. package/src/popover/index.tsx +99 -57
  325. package/src/popover/style.scss +9 -0
  326. package/src/private-apis.ts +31 -1
  327. package/src/progress-bar/styles.ts +19 -4
  328. package/src/sandbox/index.native.js +1 -1
  329. package/src/sandbox/index.tsx +3 -1
  330. package/src/select-control/styles/select-control-styles.ts +2 -2
  331. package/src/tabs/README.md +242 -0
  332. package/src/tabs/context.ts +13 -0
  333. package/src/tabs/index.tsx +167 -0
  334. package/src/tabs/stories/index.story.tsx +352 -0
  335. package/src/tabs/styles.ts +103 -0
  336. package/src/tabs/tab.tsx +39 -0
  337. package/src/tabs/tablist.tsx +40 -0
  338. package/src/tabs/tabpanel.tsx +42 -0
  339. package/src/tabs/test/index.tsx +1133 -0
  340. package/src/tabs/types.ts +142 -0
  341. package/src/text/README.md +2 -2
  342. package/src/text/{component.js → component.tsx} +10 -6
  343. package/src/text/{hook.js → hook.ts} +12 -15
  344. package/src/text/stories/index.story.tsx +80 -0
  345. package/src/text/types.ts +1 -6
  346. package/src/text/{utils.js → utils.ts} +40 -14
  347. package/src/toggle-group-control/test/__snapshots__/index.tsx.snap +16 -0
  348. package/src/toggle-group-control/toggle-group-control-option-base/component.tsx +1 -0
  349. package/src/toolbar/stories/index.story.tsx +15 -0
  350. package/src/toolbar/test/index.tsx +8 -0
  351. package/src/toolbar/toolbar/README.md +9 -0
  352. package/src/toolbar/toolbar/index.tsx +21 -12
  353. package/src/toolbar/toolbar/style.scss +9 -0
  354. package/src/toolbar/toolbar/types.ts +10 -0
  355. package/src/tools-panel/tools-panel/README.md +3 -0
  356. package/src/tools-panel/tools-panel-item/hook.ts +4 -6
  357. package/src/tools-panel/types.ts +2 -0
  358. package/src/tooltip/index.tsx +2 -3
  359. package/src/unit-control/utils.ts +124 -0
  360. package/src/utils/unit-values.ts +1 -1
  361. package/tsconfig.tsbuildinfo +1 -1
  362. package/src/text/stories/index.story.js +0 -53
  363. /package/src/text/{index.js → index.ts} +0 -0
  364. /package/src/text/{styles.js → styles.ts} +0 -0
@@ -0,0 +1,297 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ // eslint-disable-next-line no-restricted-imports
5
+ import * as Ariakit from '@ariakit/react';
6
+ import { css, keyframes } from '@emotion/react';
7
+ import styled from '@emotion/styled';
8
+
9
+ /**
10
+ * Internal dependencies
11
+ */
12
+ import { COLORS, font, rtl, CONFIG } from '../utils';
13
+ import { space } from '../utils/space';
14
+ import Icon from '../icon';
15
+ import type { DropdownMenuContext } from './types';
16
+
17
+ const ANIMATION_PARAMS = {
18
+ SLIDE_AMOUNT: '2px',
19
+ DURATION: '400ms',
20
+ EASING: 'cubic-bezier( 0.16, 1, 0.3, 1 )',
21
+ };
22
+
23
+ const CONTENT_WRAPPER_PADDING = space( 2 );
24
+ const ITEM_PREFIX_WIDTH = space( 7 );
25
+ const ITEM_PADDING_INLINE_START = space( 2 );
26
+ const ITEM_PADDING_INLINE_END = space( 2.5 );
27
+
28
+ // TODO: should bring this into the config, and make themeable
29
+ const DEFAULT_BORDER_COLOR = COLORS.ui.borderDisabled;
30
+ const TOOLBAR_VARIANT_BORDER_COLOR = COLORS.gray[ '900' ];
31
+ const DEFAULT_BOX_SHADOW = `0 0 0 ${ CONFIG.borderWidth } ${ DEFAULT_BORDER_COLOR }, ${ CONFIG.popoverShadow }`;
32
+ const TOOLBAR_VARIANT_BOX_SHADOW = `0 0 0 ${ CONFIG.borderWidth } ${ TOOLBAR_VARIANT_BORDER_COLOR }`;
33
+
34
+ const slideUpAndFade = keyframes( {
35
+ '0%': {
36
+ opacity: 0,
37
+ transform: `translateY(${ ANIMATION_PARAMS.SLIDE_AMOUNT })`,
38
+ },
39
+ '100%': { opacity: 1, transform: 'translateY(0)' },
40
+ } );
41
+
42
+ const slideRightAndFade = keyframes( {
43
+ '0%': {
44
+ opacity: 0,
45
+ transform: `translateX(-${ ANIMATION_PARAMS.SLIDE_AMOUNT })`,
46
+ },
47
+ '100%': { opacity: 1, transform: 'translateX(0)' },
48
+ } );
49
+
50
+ const slideDownAndFade = keyframes( {
51
+ '0%': {
52
+ opacity: 0,
53
+ transform: `translateY(-${ ANIMATION_PARAMS.SLIDE_AMOUNT })`,
54
+ },
55
+ '100%': { opacity: 1, transform: 'translateY(0)' },
56
+ } );
57
+
58
+ const slideLeftAndFade = keyframes( {
59
+ '0%': {
60
+ opacity: 0,
61
+ transform: `translateX(${ ANIMATION_PARAMS.SLIDE_AMOUNT })`,
62
+ },
63
+ '100%': { opacity: 1, transform: 'translateX(0)' },
64
+ } );
65
+
66
+ export const DropdownMenu = styled( Ariakit.Menu )<
67
+ Pick< DropdownMenuContext, 'variant' >
68
+ >`
69
+ position: relative;
70
+ /* Same as popover component */
71
+ /* TODO: is there a way to read the sass variable? */
72
+ z-index: 1000000;
73
+
74
+ min-width: 220px;
75
+ max-height: var( --popover-available-height );
76
+ padding: ${ CONTENT_WRAPPER_PADDING };
77
+
78
+ background-color: ${ COLORS.ui.background };
79
+ border-radius: ${ CONFIG.radiusBlockUi };
80
+ ${ ( props ) => css`
81
+ box-shadow: ${ props.variant === 'toolbar'
82
+ ? TOOLBAR_VARIANT_BOX_SHADOW
83
+ : DEFAULT_BOX_SHADOW };
84
+ ` }
85
+
86
+ overscroll-behavior: contain;
87
+ overflow: auto;
88
+
89
+ /* Only visible in Windows High Contrast mode */
90
+ outline: 2px solid transparent !important;
91
+
92
+ /* Animation */
93
+ animation-duration: ${ ANIMATION_PARAMS.DURATION };
94
+ animation-timing-function: ${ ANIMATION_PARAMS.EASING };
95
+ will-change: transform, opacity;
96
+ /* Default animation.*/
97
+ animation-name: ${ slideDownAndFade };
98
+
99
+ &[data-side='right'] {
100
+ animation-name: ${ slideLeftAndFade };
101
+ }
102
+ &[data-side='bottom'] {
103
+ animation-name: ${ slideUpAndFade };
104
+ }
105
+ &[data-side='left'] {
106
+ animation-name: ${ slideRightAndFade };
107
+ }
108
+ @media ( prefers-reduced-motion ) {
109
+ animation-duration: 0s;
110
+ }
111
+ `;
112
+
113
+ const itemPrefix = css`
114
+ /* !important is to override some inline styles set by Ariakit */
115
+ width: ${ ITEM_PREFIX_WIDTH } !important;
116
+ /* !important is to override some inline styles set by Ariakit */
117
+ height: auto !important;
118
+ display: inline-flex;
119
+ align-items: center;
120
+ justify-content: center;
121
+ /* Prefixes don't get affected by the item's inline start padding */
122
+ margin-inline-start: calc( -1 * ${ ITEM_PADDING_INLINE_START } );
123
+ /*
124
+ Negative margin allows the suffix to be as tall as the whole item
125
+ (incl. padding) before increasing the items' height. This can be useful,
126
+ e.g., when using icons that are bigger than 20x20 px
127
+ */
128
+ margin-top: ${ space( -2 ) };
129
+ margin-bottom: ${ space( -2 ) };
130
+ `;
131
+
132
+ const itemSuffix = css`
133
+ width: max-content;
134
+ display: inline-flex;
135
+ align-items: center;
136
+ justify-content: center;
137
+ /* Push prefix to the inline-end of the item */
138
+ margin-inline-start: auto;
139
+ /* Minimum space between the item's content and suffix */
140
+ padding-inline-start: ${ space( 6 ) };
141
+ /*
142
+ Negative margin allows the suffix to be as tall as the whole item
143
+ (incl. padding) before increasing the items' height. This can be useful,
144
+ e.g., when using icons that are bigger than 20x20 px
145
+ */
146
+ margin-top: ${ space( -2 ) };
147
+ margin-bottom: ${ space( -2 ) };
148
+
149
+ /*
150
+ Override color in normal conditions, but inherit the item's color
151
+ for altered conditions.
152
+
153
+ TODO:
154
+ - For now, used opacity like for disabled item, which makes it work
155
+ regardless of the theme
156
+ - how do we translate this for themes? Should we have a new variable
157
+ for "secondary" text?
158
+ */
159
+ opacity: 0.6;
160
+
161
+ /* when the parent item is hovered / focused */
162
+ [data-active-item] > &,
163
+ /* when the parent item is a submenu trigger and the submenu is open */
164
+ [aria-expanded='true'] > &,
165
+ /* when the parent item is disabled */
166
+ [aria-disabled='true'] > & {
167
+ opacity: 1;
168
+ }
169
+ `;
170
+
171
+ export const ItemPrefixWrapper = styled.span`
172
+ ${ itemPrefix }
173
+ `;
174
+
175
+ export const ItemSuffixWrapper = styled.span`
176
+ ${ itemSuffix }
177
+ `;
178
+
179
+ const baseItem = css`
180
+ all: unset;
181
+ font-size: ${ font( 'default.fontSize' ) };
182
+ font-family: inherit;
183
+ font-weight: normal;
184
+ line-height: 20px;
185
+ color: ${ COLORS.gray[ 900 ] };
186
+ border-radius: ${ CONFIG.radiusBlockUi };
187
+ display: flex;
188
+ align-items: center;
189
+ padding: ${ space( 2 ) } ${ ITEM_PADDING_INLINE_END } ${ space( 2 ) }
190
+ ${ ITEM_PADDING_INLINE_START };
191
+ position: relative;
192
+ user-select: none;
193
+ outline: none;
194
+
195
+ &[aria-disabled='true'] {
196
+ /*
197
+ TODO:
198
+ - we need a disabled color in the Theme variables
199
+ - design specs use opacity instead of setting a new text color
200
+ */
201
+ opacity: 0.5;
202
+ pointer-events: none;
203
+ }
204
+
205
+ /* Hover */
206
+ &[data-active-item] {
207
+ /* TODO: reconcile with global focus styles */
208
+ background-color: ${ COLORS.gray[ '100' ] };
209
+ }
210
+
211
+ /* Keyboard focus (focus-visible) */
212
+ &[data-focus-visible] {
213
+ box-shadow: 0 0 0 1.5px var( --wp-admin-theme-color );
214
+
215
+ /* Only visible in Windows High Contrast mode */
216
+ outline: 2px solid transparent;
217
+ }
218
+
219
+ /* Active (ie. pressed, mouse down) */
220
+ &:active,
221
+ &[data-active] {
222
+ /* TODO: should there be a visual active state? */
223
+ }
224
+
225
+ /* When the item is the trigger of an open submenu */
226
+ ${ DropdownMenu }:not(:focus) &:not(:focus)[aria-expanded="true"] {
227
+ /* TODO: should we style submenu triggers any different? */
228
+ }
229
+
230
+ svg {
231
+ fill: currentColor;
232
+ }
233
+
234
+ &:not( :has( ${ ItemPrefixWrapper } ) ) {
235
+ padding-inline-start: ${ ITEM_PREFIX_WIDTH };
236
+ }
237
+ `;
238
+
239
+ export const DropdownMenuItem = styled( Ariakit.MenuItem )`
240
+ ${ baseItem }
241
+ `;
242
+
243
+ export const DropdownMenuCheckboxItem = styled( Ariakit.MenuItemCheckbox )`
244
+ ${ baseItem }
245
+ `;
246
+
247
+ export const DropdownMenuRadioItem = styled( Ariakit.MenuItemRadio )`
248
+ ${ baseItem }
249
+ `;
250
+
251
+ export const DropdownMenuGroup = styled( Ariakit.MenuGroup )``;
252
+
253
+ export const DropdownMenuGroupLabel = styled( Ariakit.MenuGroupLabel )`
254
+ box-sizing: border-box;
255
+ display: flex;
256
+ align-items: center;
257
+ min-height: ${ space( 8 ) };
258
+
259
+ padding: ${ space( 2 ) } ${ ITEM_PADDING_INLINE_END } ${ space( 2 ) }
260
+ ${ ITEM_PREFIX_WIDTH };
261
+ /* TODO: color doesn't match available UI variables */
262
+ color: ${ COLORS.gray[ 700 ] };
263
+
264
+ /* TODO: font size doesn't match available ones via "font" utils */
265
+ font-size: 11px;
266
+ line-height: 1.4;
267
+ font-weight: 500;
268
+ text-transform: uppercase;
269
+ `;
270
+
271
+ export const DropdownMenuSeparator = styled( Ariakit.MenuSeparator )<
272
+ Pick< DropdownMenuContext, 'variant' >
273
+ >`
274
+ border: none;
275
+ height: ${ CONFIG.borderWidth };
276
+ /* TODO: doesn't match border color from variables */
277
+ background-color: ${ ( props ) =>
278
+ props.variant === 'toolbar'
279
+ ? TOOLBAR_VARIANT_BORDER_COLOR
280
+ : DEFAULT_BORDER_COLOR };
281
+ /* Negative horizontal margin to make separator go from side to side */
282
+ margin: ${ space( 2 ) } calc( -1 * ${ CONTENT_WRAPPER_PADDING } );
283
+
284
+ /* Only visible in Windows High Contrast mode */
285
+ outline: 2px solid transparent;
286
+ `;
287
+
288
+ export const SubmenuChevronIcon = styled( Icon )`
289
+ ${ rtl(
290
+ {
291
+ transform: `scaleX(1) translateX(${ space( 2 ) })`,
292
+ },
293
+ {
294
+ transform: `scaleX(-1) translateX(${ space( 2 ) })`,
295
+ }
296
+ ) }
297
+ `;