@wordpress/ui 0.4.0 → 0.5.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 (420) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +18 -0
  4. package/build/badge/badge.cjs +95 -0
  5. package/build/badge/badge.cjs.map +7 -0
  6. package/build/{lock-unlock.js → badge/index.cjs} +8 -14
  7. package/build/badge/index.cjs.map +7 -0
  8. package/build/badge/types.cjs +19 -0
  9. package/build/badge/types.cjs.map +7 -0
  10. package/build/box/{box.js → box.cjs} +7 -6
  11. package/build/box/box.cjs.map +7 -0
  12. package/build/box/{index.js → index.cjs} +2 -2
  13. package/build/box/{types.js → types.cjs} +1 -1
  14. package/build/box/types.cjs.map +7 -0
  15. package/build/button/button.cjs +401 -0
  16. package/build/button/button.cjs.map +7 -0
  17. package/build/{utils/element.js → button/icon.cjs} +22 -20
  18. package/build/button/icon.cjs.map +7 -0
  19. package/build/button/index.cjs +39 -0
  20. package/build/button/index.cjs.map +7 -0
  21. package/build/button/types.cjs +19 -0
  22. package/build/button/types.cjs.map +7 -0
  23. package/build/form/primitives/field/control.cjs +38 -0
  24. package/build/form/primitives/field/control.cjs.map +7 -0
  25. package/build/form/primitives/field/description.cjs +92 -0
  26. package/build/form/primitives/field/description.cjs.map +7 -0
  27. package/build/form/primitives/field/details.cjs +99 -0
  28. package/build/form/primitives/field/details.cjs.map +7 -0
  29. package/build/form/primitives/field/index.cjs +46 -0
  30. package/build/form/primitives/field/index.cjs.map +7 -0
  31. package/build/form/primitives/field/item.cjs +36 -0
  32. package/build/form/primitives/field/item.cjs.map +7 -0
  33. package/build/form/primitives/field/label.cjs +98 -0
  34. package/build/form/primitives/field/label.cjs.map +7 -0
  35. package/build/form/primitives/field/root.cjs +79 -0
  36. package/build/form/primitives/field/root.cjs.map +7 -0
  37. package/build/form/primitives/field/types.cjs +19 -0
  38. package/build/form/primitives/field/types.cjs.map +7 -0
  39. package/build/form/primitives/fieldset/context.cjs +40 -0
  40. package/build/form/primitives/fieldset/context.cjs.map +7 -0
  41. package/build/form/primitives/fieldset/description.cjs +101 -0
  42. package/build/form/primitives/fieldset/description.cjs.map +7 -0
  43. package/build/form/primitives/fieldset/details.cjs +103 -0
  44. package/build/form/primitives/fieldset/details.cjs.map +7 -0
  45. package/build/form/primitives/fieldset/index.cjs +40 -0
  46. package/build/form/primitives/fieldset/index.cjs.map +7 -0
  47. package/build/form/primitives/fieldset/legend.cjs +94 -0
  48. package/build/form/primitives/fieldset/legend.cjs.map +7 -0
  49. package/build/form/primitives/fieldset/root.cjs +86 -0
  50. package/build/form/primitives/fieldset/root.cjs.map +7 -0
  51. package/build/form/primitives/fieldset/types.cjs +19 -0
  52. package/build/form/primitives/fieldset/types.cjs.map +7 -0
  53. package/build/form/primitives/index.cjs +50 -0
  54. package/build/form/primitives/index.cjs.map +7 -0
  55. package/build/form/primitives/input/index.cjs +31 -0
  56. package/build/form/primitives/input/index.cjs.map +7 -0
  57. package/build/form/primitives/input/input.cjs +148 -0
  58. package/build/form/primitives/input/input.cjs.map +7 -0
  59. package/build/form/primitives/input/types.cjs +19 -0
  60. package/build/form/primitives/input/types.cjs.map +7 -0
  61. package/build/form/primitives/input-layout/context.cjs +49 -0
  62. package/build/form/primitives/input-layout/context.cjs.map +7 -0
  63. package/build/form/primitives/input-layout/index.cjs +35 -0
  64. package/build/form/primitives/input-layout/index.cjs.map +7 -0
  65. package/build/form/primitives/input-layout/input-layout.cjs +196 -0
  66. package/build/form/primitives/input-layout/input-layout.cjs.map +7 -0
  67. package/build/form/primitives/input-layout/slot.cjs +165 -0
  68. package/build/form/primitives/input-layout/slot.cjs.map +7 -0
  69. package/build/form/primitives/input-layout/types.cjs +19 -0
  70. package/build/form/primitives/input-layout/types.cjs.map +7 -0
  71. package/build/icon/icon.cjs +46 -0
  72. package/build/icon/icon.cjs.map +7 -0
  73. package/build/{index.js → icon/index.cjs} +13 -7
  74. package/build/icon/index.cjs.map +7 -0
  75. package/build/icon/types.cjs +19 -0
  76. package/build/icon/types.cjs.map +7 -0
  77. package/build/index.cjs +37 -0
  78. package/build/index.cjs.map +7 -0
  79. package/build/stack/{index.js → index.cjs} +2 -2
  80. package/build/stack/index.cjs.map +7 -0
  81. package/build/stack/{stack.js → stack.cjs} +6 -18
  82. package/build/stack/stack.cjs.map +7 -0
  83. package/build/stack/{types.js → types.cjs} +1 -1
  84. package/build/stack/types.cjs.map +7 -0
  85. package/build/types/css-modules.d.cjs +2 -0
  86. package/build/types/css-modules.d.cjs.map +7 -0
  87. package/build/types/{react.d.js → react.d.cjs} +1 -1
  88. package/build/utils/{types.js → types.cjs} +1 -1
  89. package/build/visually-hidden/index.cjs +31 -0
  90. package/build/visually-hidden/index.cjs.map +7 -0
  91. package/build/visually-hidden/types.cjs +19 -0
  92. package/build/visually-hidden/types.cjs.map +7 -0
  93. package/build/visually-hidden/visually-hidden.cjs +69 -0
  94. package/build/visually-hidden/visually-hidden.cjs.map +7 -0
  95. package/build-module/badge/badge.mjs +70 -0
  96. package/build-module/badge/badge.mjs.map +7 -0
  97. package/build-module/badge/index.mjs +6 -0
  98. package/build-module/badge/index.mjs.map +7 -0
  99. package/build-module/badge/types.mjs +1 -0
  100. package/build-module/box/{box.js → box.mjs} +7 -6
  101. package/build-module/box/box.mjs.map +7 -0
  102. package/build-module/box/index.mjs +6 -0
  103. package/build-module/box/types.mjs +1 -0
  104. package/build-module/button/button.mjs +366 -0
  105. package/build-module/button/button.mjs.map +7 -0
  106. package/build-module/button/icon.mjs +22 -0
  107. package/build-module/button/icon.mjs.map +7 -0
  108. package/build-module/button/index.mjs +14 -0
  109. package/build-module/button/index.mjs.map +7 -0
  110. package/build-module/button/types.mjs +1 -0
  111. package/build-module/form/primitives/field/control.mjs +13 -0
  112. package/build-module/form/primitives/field/control.mjs.map +7 -0
  113. package/build-module/form/primitives/field/description.mjs +57 -0
  114. package/build-module/form/primitives/field/description.mjs.map +7 -0
  115. package/build-module/form/primitives/field/details.mjs +64 -0
  116. package/build-module/form/primitives/field/details.mjs.map +7 -0
  117. package/build-module/form/primitives/field/index.mjs +16 -0
  118. package/build-module/form/primitives/field/index.mjs.map +7 -0
  119. package/build-module/form/primitives/field/item.mjs +11 -0
  120. package/build-module/form/primitives/field/item.mjs.map +7 -0
  121. package/build-module/form/primitives/field/label.mjs +63 -0
  122. package/build-module/form/primitives/field/label.mjs.map +7 -0
  123. package/build-module/form/primitives/field/root.mjs +44 -0
  124. package/build-module/form/primitives/field/root.mjs.map +7 -0
  125. package/build-module/form/primitives/field/types.mjs +1 -0
  126. package/build-module/form/primitives/fieldset/context.mjs +14 -0
  127. package/build-module/form/primitives/fieldset/context.mjs.map +7 -0
  128. package/build-module/form/primitives/fieldset/description.mjs +66 -0
  129. package/build-module/form/primitives/fieldset/description.mjs.map +7 -0
  130. package/build-module/form/primitives/fieldset/details.mjs +68 -0
  131. package/build-module/form/primitives/fieldset/details.mjs.map +7 -0
  132. package/build-module/form/primitives/fieldset/index.mjs +12 -0
  133. package/build-module/form/primitives/fieldset/index.mjs.map +7 -0
  134. package/build-module/form/primitives/fieldset/legend.mjs +59 -0
  135. package/build-module/form/primitives/fieldset/legend.mjs.map +7 -0
  136. package/build-module/form/primitives/fieldset/root.mjs +51 -0
  137. package/build-module/form/primitives/fieldset/root.mjs.map +7 -0
  138. package/build-module/form/primitives/fieldset/types.mjs +1 -0
  139. package/build-module/form/primitives/index.mjs +12 -0
  140. package/build-module/form/primitives/index.mjs.map +7 -0
  141. package/build-module/form/primitives/input/index.mjs +6 -0
  142. package/build-module/form/primitives/input/index.mjs.map +7 -0
  143. package/build-module/form/primitives/input/input.mjs +113 -0
  144. package/build-module/form/primitives/input/input.mjs.map +7 -0
  145. package/build-module/form/primitives/input/types.mjs +1 -0
  146. package/build-module/form/primitives/input/types.mjs.map +7 -0
  147. package/build-module/form/primitives/input-layout/context.mjs +22 -0
  148. package/build-module/form/primitives/input-layout/context.mjs.map +7 -0
  149. package/build-module/form/primitives/input-layout/index.mjs +10 -0
  150. package/build-module/form/primitives/input-layout/index.mjs.map +7 -0
  151. package/build-module/form/primitives/input-layout/input-layout.mjs +161 -0
  152. package/build-module/form/primitives/input-layout/input-layout.mjs.map +7 -0
  153. package/build-module/form/primitives/input-layout/slot.mjs +130 -0
  154. package/build-module/form/primitives/input-layout/slot.mjs.map +7 -0
  155. package/build-module/form/primitives/input-layout/types.mjs +1 -0
  156. package/build-module/form/primitives/input-layout/types.mjs.map +7 -0
  157. package/build-module/icon/icon.mjs +21 -0
  158. package/build-module/icon/icon.mjs.map +7 -0
  159. package/build-module/icon/index.mjs +6 -0
  160. package/build-module/icon/index.mjs.map +7 -0
  161. package/build-module/icon/types.mjs +1 -0
  162. package/build-module/icon/types.mjs.map +7 -0
  163. package/build-module/index.mjs +9 -0
  164. package/build-module/index.mjs.map +7 -0
  165. package/build-module/stack/index.mjs +6 -0
  166. package/build-module/stack/index.mjs.map +7 -0
  167. package/build-module/stack/{stack.js → stack.mjs} +6 -8
  168. package/build-module/stack/stack.mjs.map +7 -0
  169. package/build-module/stack/types.mjs +1 -0
  170. package/build-module/stack/types.mjs.map +7 -0
  171. package/build-module/types/css-modules.d.mjs +1 -0
  172. package/build-module/types/css-modules.d.mjs.map +7 -0
  173. package/build-module/types/{react.d.js → react.d.mjs} +1 -1
  174. package/build-module/utils/types.mjs +1 -0
  175. package/build-module/utils/types.mjs.map +7 -0
  176. package/build-module/visually-hidden/index.mjs +6 -0
  177. package/build-module/visually-hidden/index.mjs.map +7 -0
  178. package/build-module/visually-hidden/types.mjs +1 -0
  179. package/build-module/visually-hidden/types.mjs.map +7 -0
  180. package/build-module/visually-hidden/visually-hidden.mjs +44 -0
  181. package/build-module/visually-hidden/visually-hidden.mjs.map +7 -0
  182. package/build-types/badge/badge.d.ts +7 -0
  183. package/build-types/badge/badge.d.ts.map +1 -0
  184. package/build-types/badge/index.d.ts +2 -0
  185. package/build-types/badge/index.d.ts.map +1 -0
  186. package/build-types/badge/stories/index.story.d.ts +15 -0
  187. package/build-types/badge/stories/index.story.d.ts.map +1 -0
  188. package/build-types/badge/types.d.ts +14 -0
  189. package/build-types/badge/types.d.ts.map +1 -0
  190. package/build-types/box/box.d.ts +0 -3
  191. package/build-types/box/box.d.ts.map +1 -1
  192. package/build-types/box/stories/index.story.d.ts +1 -11
  193. package/build-types/box/stories/index.story.d.ts.map +1 -1
  194. package/build-types/box/types.d.ts +8 -15
  195. package/build-types/box/types.d.ts.map +1 -1
  196. package/build-types/button/button.d.ts +3 -0
  197. package/build-types/button/button.d.ts.map +1 -0
  198. package/build-types/button/icon.d.ts +10 -0
  199. package/build-types/button/icon.d.ts.map +1 -0
  200. package/build-types/button/index.d.ts +10 -0
  201. package/build-types/button/index.d.ts.map +1 -0
  202. package/build-types/button/stories/index.story.d.ts +23 -0
  203. package/build-types/button/stories/index.story.d.ts.map +1 -0
  204. package/build-types/button/test/button.test.d.ts +2 -0
  205. package/build-types/button/test/button.test.d.ts.map +1 -0
  206. package/build-types/button/test/icon.test.d.ts +2 -0
  207. package/build-types/button/test/icon.test.d.ts.map +1 -0
  208. package/build-types/button/types.d.ts +63 -0
  209. package/build-types/button/types.d.ts.map +1 -0
  210. package/build-types/form/primitives/field/control.d.ts +6 -0
  211. package/build-types/form/primitives/field/control.d.ts.map +1 -0
  212. package/build-types/form/primitives/field/description.d.ts +9 -0
  213. package/build-types/form/primitives/field/description.d.ts.map +1 -0
  214. package/build-types/form/primitives/field/details.d.ts +21 -0
  215. package/build-types/form/primitives/field/details.d.ts.map +1 -0
  216. package/build-types/form/primitives/field/index.d.ts +8 -0
  217. package/build-types/form/primitives/field/index.d.ts.map +1 -0
  218. package/build-types/form/primitives/field/item.d.ts +3 -0
  219. package/build-types/form/primitives/field/item.d.ts.map +1 -0
  220. package/build-types/form/primitives/field/label.d.ts +11 -0
  221. package/build-types/form/primitives/field/label.d.ts.map +1 -0
  222. package/build-types/form/primitives/field/root.d.ts +15 -0
  223. package/build-types/form/primitives/field/root.d.ts.map +1 -0
  224. package/build-types/form/primitives/field/stories/index.story.d.ts +39 -0
  225. package/build-types/form/primitives/field/stories/index.story.d.ts.map +1 -0
  226. package/build-types/form/primitives/field/test/index.test.d.ts +2 -0
  227. package/build-types/form/primitives/field/test/index.test.d.ts.map +1 -0
  228. package/build-types/form/primitives/field/types.d.ts +62 -0
  229. package/build-types/form/primitives/field/types.d.ts.map +1 -0
  230. package/build-types/form/primitives/fieldset/context.d.ts +8 -0
  231. package/build-types/form/primitives/fieldset/context.d.ts.map +1 -0
  232. package/build-types/form/primitives/fieldset/description.d.ts +9 -0
  233. package/build-types/form/primitives/fieldset/description.d.ts.map +1 -0
  234. package/build-types/form/primitives/fieldset/details.d.ts +21 -0
  235. package/build-types/form/primitives/fieldset/details.d.ts.map +1 -0
  236. package/build-types/form/primitives/fieldset/index.d.ts +6 -0
  237. package/build-types/form/primitives/fieldset/index.d.ts.map +1 -0
  238. package/build-types/form/primitives/fieldset/legend.d.ts +9 -0
  239. package/build-types/form/primitives/fieldset/legend.d.ts.map +1 -0
  240. package/build-types/form/primitives/fieldset/root.d.ts +15 -0
  241. package/build-types/form/primitives/fieldset/root.d.ts.map +1 -0
  242. package/build-types/form/primitives/fieldset/stories/index.story.d.ts +18 -0
  243. package/build-types/form/primitives/fieldset/stories/index.story.d.ts.map +1 -0
  244. package/build-types/form/primitives/fieldset/test/index.test.d.ts +2 -0
  245. package/build-types/form/primitives/fieldset/test/index.test.d.ts.map +1 -0
  246. package/build-types/form/primitives/fieldset/types.d.ts +32 -0
  247. package/build-types/form/primitives/fieldset/types.d.ts.map +1 -0
  248. package/build-types/form/primitives/index.d.ts +5 -0
  249. package/build-types/form/primitives/index.d.ts.map +1 -0
  250. package/build-types/form/primitives/input/index.d.ts +2 -0
  251. package/build-types/form/primitives/input/index.d.ts.map +1 -0
  252. package/build-types/form/primitives/input/input.d.ts +10 -0
  253. package/build-types/form/primitives/input/input.d.ts.map +1 -0
  254. package/build-types/form/primitives/input/stories/index.story.d.ts +13 -0
  255. package/build-types/form/primitives/input/stories/index.story.d.ts.map +1 -0
  256. package/build-types/form/primitives/input/test/index.test.d.ts +2 -0
  257. package/build-types/form/primitives/input/test/index.test.d.ts.map +1 -0
  258. package/build-types/form/primitives/input/types.d.ts +27 -0
  259. package/build-types/form/primitives/input/types.d.ts.map +1 -0
  260. package/build-types/form/primitives/input-layout/context.d.ts +17 -0
  261. package/build-types/form/primitives/input-layout/context.d.ts.map +1 -0
  262. package/build-types/form/primitives/input-layout/index.d.ts +4 -0
  263. package/build-types/form/primitives/input-layout/index.d.ts.map +1 -0
  264. package/build-types/form/primitives/input-layout/input-layout.d.ts +7 -0
  265. package/build-types/form/primitives/input-layout/input-layout.d.ts.map +1 -0
  266. package/build-types/form/primitives/input-layout/slot.d.ts +6 -0
  267. package/build-types/form/primitives/input-layout/slot.d.ts.map +1 -0
  268. package/build-types/form/primitives/input-layout/stories/index.story.d.ts +24 -0
  269. package/build-types/form/primitives/input-layout/stories/index.story.d.ts.map +1 -0
  270. package/build-types/form/primitives/input-layout/test/index.test.d.ts +2 -0
  271. package/build-types/form/primitives/input-layout/test/index.test.d.ts.map +1 -0
  272. package/build-types/form/primitives/input-layout/types.d.ts +41 -0
  273. package/build-types/form/primitives/input-layout/types.d.ts.map +1 -0
  274. package/build-types/icon/icon.d.ts +14 -0
  275. package/build-types/icon/icon.d.ts.map +1 -0
  276. package/build-types/icon/index.d.ts +2 -0
  277. package/build-types/icon/index.d.ts.map +1 -0
  278. package/build-types/icon/stories/index.story.d.ts +11 -0
  279. package/build-types/icon/stories/index.story.d.ts.map +1 -0
  280. package/build-types/icon/test/icon.test.d.ts +2 -0
  281. package/build-types/icon/test/icon.test.d.ts.map +1 -0
  282. package/build-types/icon/types.d.ts +15 -0
  283. package/build-types/icon/types.d.ts.map +1 -0
  284. package/build-types/index.d.ts +6 -0
  285. package/build-types/index.d.ts.map +1 -1
  286. package/build-types/stack/index.d.ts +0 -3
  287. package/build-types/stack/index.d.ts.map +1 -1
  288. package/build-types/stack/stack.d.ts.map +1 -1
  289. package/build-types/stack/stories/index.story.d.ts +1 -11
  290. package/build-types/stack/stories/index.story.d.ts.map +1 -1
  291. package/build-types/stack/types.d.ts +2 -5
  292. package/build-types/stack/types.d.ts.map +1 -1
  293. package/build-types/test/index.test.d.ts +2 -0
  294. package/build-types/test/index.test.d.ts.map +1 -0
  295. package/build-types/visually-hidden/index.d.ts +2 -0
  296. package/build-types/visually-hidden/index.d.ts.map +1 -0
  297. package/build-types/visually-hidden/stories/index.story.d.ts +7 -0
  298. package/build-types/visually-hidden/stories/index.story.d.ts.map +1 -0
  299. package/build-types/visually-hidden/test/visually-hidden.test.d.ts +2 -0
  300. package/build-types/visually-hidden/test/visually-hidden.test.d.ts.map +1 -0
  301. package/build-types/visually-hidden/types.d.ts +8 -0
  302. package/build-types/visually-hidden/types.d.ts.map +1 -0
  303. package/build-types/visually-hidden/visually-hidden.d.ts +7 -0
  304. package/build-types/visually-hidden/visually-hidden.d.ts.map +1 -0
  305. package/package.json +26 -9
  306. package/src/badge/badge.tsx +88 -0
  307. package/src/badge/index.ts +1 -0
  308. package/src/badge/stories/choosing-intent.mdx +112 -0
  309. package/src/badge/stories/index.story.tsx +120 -0
  310. package/src/badge/types.ts +22 -0
  311. package/src/box/box.tsx +11 -23
  312. package/src/box/stories/index.story.tsx +3 -15
  313. package/src/box/types.ts +16 -59
  314. package/src/button/button.tsx +57 -0
  315. package/src/button/icon.tsx +24 -0
  316. package/src/button/index.ts +16 -0
  317. package/src/button/stories/index.story.tsx +192 -0
  318. package/src/button/style.module.css +232 -0
  319. package/src/button/test/button.test.tsx +89 -0
  320. package/src/button/test/icon.test.tsx +13 -0
  321. package/src/button/types.ts +72 -0
  322. package/src/form/primitives/field/control.tsx +9 -0
  323. package/src/form/primitives/field/description.tsx +18 -0
  324. package/src/form/primitives/field/details.tsx +36 -0
  325. package/src/form/primitives/field/index.ts +8 -0
  326. package/src/form/primitives/field/item.tsx +9 -0
  327. package/src/form/primitives/field/label.tsx +21 -0
  328. package/src/form/primitives/field/root.tsx +33 -0
  329. package/src/form/primitives/field/stories/index.story.tsx +132 -0
  330. package/src/form/primitives/field/test/index.test.tsx +36 -0
  331. package/src/form/primitives/field/types.ts +82 -0
  332. package/src/form/primitives/fieldset/context.tsx +13 -0
  333. package/src/form/primitives/fieldset/description.tsx +36 -0
  334. package/src/form/primitives/fieldset/details.tsx +46 -0
  335. package/src/form/primitives/fieldset/index.ts +6 -0
  336. package/src/form/primitives/fieldset/legend.tsx +17 -0
  337. package/src/form/primitives/fieldset/root.tsx +42 -0
  338. package/src/form/primitives/fieldset/stories/index.story.tsx +67 -0
  339. package/src/form/primitives/fieldset/style.module.css +12 -0
  340. package/src/form/primitives/fieldset/test/index.test.tsx +135 -0
  341. package/src/form/primitives/fieldset/types.ts +35 -0
  342. package/src/form/primitives/index.ts +4 -0
  343. package/src/form/primitives/input/index.ts +1 -0
  344. package/src/form/primitives/input/input.tsx +28 -0
  345. package/src/form/primitives/input/stories/index.story.tsx +40 -0
  346. package/src/form/primitives/input/style.module.css +34 -0
  347. package/src/form/primitives/input/test/index.test.tsx +13 -0
  348. package/src/form/primitives/input/types.ts +31 -0
  349. package/src/form/primitives/input-layout/context.tsx +36 -0
  350. package/src/form/primitives/input-layout/index.ts +6 -0
  351. package/src/form/primitives/input-layout/input-layout.tsx +49 -0
  352. package/src/form/primitives/input-layout/slot.tsx +39 -0
  353. package/src/form/primitives/input-layout/stories/index.story.tsx +67 -0
  354. package/src/form/primitives/input-layout/style.module.css +82 -0
  355. package/src/form/primitives/input-layout/test/index.test.tsx +23 -0
  356. package/src/form/primitives/input-layout/types.ts +44 -0
  357. package/src/icon/icon.tsx +30 -0
  358. package/src/icon/index.ts +1 -0
  359. package/src/icon/stories/index.story.tsx +47 -0
  360. package/src/icon/test/icon.test.tsx +13 -0
  361. package/src/icon/types.ts +14 -0
  362. package/src/index.ts +6 -0
  363. package/src/stack/index.ts +0 -3
  364. package/src/stack/stack.tsx +5 -18
  365. package/src/stack/stories/index.story.tsx +1 -14
  366. package/src/stack/test/stack.test.tsx +22 -12
  367. package/src/stack/types.ts +2 -6
  368. package/src/stories/introduction.mdx +6 -0
  369. package/src/test/index.test.ts +22 -0
  370. package/src/utils/css/field.module.css +27 -0
  371. package/src/utils/css/focus.module.css +31 -0
  372. package/src/utils/css/resets.module.css +13 -0
  373. package/src/visually-hidden/index.ts +1 -0
  374. package/src/visually-hidden/stories/index.story.tsx +22 -0
  375. package/src/visually-hidden/style.module.css +15 -0
  376. package/src/visually-hidden/test/visually-hidden.test.tsx +59 -0
  377. package/src/visually-hidden/types.ts +8 -0
  378. package/src/visually-hidden/visually-hidden.tsx +23 -0
  379. package/build/box/box.js.map +0 -7
  380. package/build/box/types.js.map +0 -7
  381. package/build/index.js.map +0 -7
  382. package/build/lock-unlock.js.map +0 -7
  383. package/build/stack/index.js.map +0 -7
  384. package/build/stack/stack.js.map +0 -7
  385. package/build/stack/types.js.map +0 -7
  386. package/build/types/css-modules.d.js +0 -2
  387. package/build/utils/element.js.map +0 -7
  388. package/build-module/box/box.js.map +0 -7
  389. package/build-module/box/index.js +0 -6
  390. package/build-module/box/types.js +0 -1
  391. package/build-module/index.js +0 -3
  392. package/build-module/index.js.map +0 -7
  393. package/build-module/lock-unlock.js +0 -11
  394. package/build-module/lock-unlock.js.map +0 -7
  395. package/build-module/stack/index.js +0 -6
  396. package/build-module/stack/index.js.map +0 -7
  397. package/build-module/stack/stack.js.map +0 -7
  398. package/build-module/stack/types.js +0 -1
  399. package/build-module/types/css-modules.d.js +0 -1
  400. package/build-module/utils/element.js +0 -20
  401. package/build-module/utils/element.js.map +0 -7
  402. package/build-module/utils/types.js +0 -1
  403. package/build-types/lock-unlock.d.ts +0 -2
  404. package/build-types/lock-unlock.d.ts.map +0 -1
  405. package/build-types/utils/element.d.ts +0 -25
  406. package/build-types/utils/element.d.ts.map +0 -1
  407. package/src/lock-unlock.ts +0 -10
  408. package/src/utils/element.ts +0 -51
  409. package/tsconfig.json +0 -13
  410. package/tsconfig.tsbuildinfo +0 -1
  411. /package/build/box/{index.js.map → index.cjs.map} +0 -0
  412. /package/build/types/{react.d.js.map → react.d.cjs.map} +0 -0
  413. /package/build/utils/{types.js.map → types.cjs.map} +0 -0
  414. /package/build-module/{box/types.js.map → badge/types.mjs.map} +0 -0
  415. /package/build-module/box/{index.js.map → index.mjs.map} +0 -0
  416. /package/build-module/{stack/types.js.map → box/types.mjs.map} +0 -0
  417. /package/build-module/{types/css-modules.d.js.map → button/types.mjs.map} +0 -0
  418. /package/build-module/{utils/types.js.map → form/primitives/field/types.mjs.map} +0 -0
  419. /package/{build/types/css-modules.d.js.map → build-module/form/primitives/fieldset/types.mjs.map} +0 -0
  420. /package/build-module/types/{react.d.js.map → react.d.mjs.map} +0 -0
@@ -0,0 +1,112 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks';
2
+ import { Badge } from '../index';
3
+ import '@wordpress/theme/design-tokens.css';
4
+
5
+ <Meta title="Design System/Components/Badge/Choosing intent" />
6
+
7
+ # Choosing intent
8
+
9
+ <div style={ { padding: '2rem', display: 'flex', justifyContent: 'center', gap: '0.5rem', flexWrap: 'wrap', border: '1px solid #e0e0e0', borderRadius: '0.5rem' } }>
10
+ <Badge intent="high">high</Badge>
11
+ <Badge intent="medium">medium</Badge>
12
+ <Badge intent="low">low</Badge>
13
+ <Badge intent="stable">stable</Badge>
14
+ <Badge intent="informational">informational</Badge>
15
+ <Badge intent="draft">draft</Badge>
16
+ <Badge intent="none">none</Badge>
17
+ </div>
18
+
19
+ It can be difficult to determine which badge intent to use because the component's properties are not tied to any specific product view. Those properties should be balanced against the requirements of the view in which the badge appears, all while keeping an eye on high-level consistency (global statuses that appear across multiple views).
20
+
21
+ Here is a decision tree to help identify which badge to use.
22
+
23
+ ## 1. Ask first: should this draw the eye?
24
+
25
+ If the user scans this screen, should their attention be drawn to this badge?
26
+
27
+ - If **no** → use `none` (or even just plain text; no badge), even if the state is positive or "stable".
28
+ - If **yes** → pick an intent based on how important the action or awareness is.
29
+
30
+ ## 2. High / Medium / Low = action priority
31
+
32
+ Use when there's something for the user to act on.
33
+
34
+ ### `high` – Critical / top priority
35
+
36
+ * Needs attention as soon as possible
37
+ * _E.g. "Payment declined", "Security issue"_
38
+
39
+ <Badge intent="high">Payment declined</Badge> <Badge intent="high">Security issue</Badge>
40
+
41
+ ### `medium` – Important / blocks progress
42
+
43
+ * Blocks a key task, should be handled soon
44
+ * _E.g. "Approval required", "Review needed"_
45
+
46
+ <Badge intent="medium">Approval required</Badge> <Badge intent="medium">Review needed</Badge>
47
+
48
+ ### `low` – Worth noticing / non‑urgent
49
+
50
+ * Good to be aware of; action may be optional or later
51
+ * _E.g. "Pending", "Queued", "Minor issues", "Optional setup"_
52
+
53
+ <Badge intent="low">Pending</Badge> <Badge intent="low">Queued</Badge>
54
+
55
+ ## 3. Informational / draft = special non-final states
56
+
57
+ ### `informational` – Notable, no action / fix needed
58
+
59
+ * Context only; no clear action
60
+ * _E.g. "Scheduled", "Beta", "Internal only"_
61
+
62
+ <Badge intent="informational">Scheduled</Badge> <Badge intent="informational">Beta</Badge>
63
+
64
+ ### `draft` – Not final / work in progress
65
+
66
+ * _E.g. "Draft", "Unpublished", "Work in progress"_
67
+
68
+ <Badge intent="draft">Draft</Badge> <Badge intent="draft">Unpublished</Badge>
69
+
70
+ ## 4. Stable / none = normal states
71
+
72
+ ### `stable` – Positive / "healthy" state
73
+
74
+ * Use when confirming success or "all good" is important in that view
75
+ * _E.g. "Healthy", "Active", "Live"_
76
+
77
+ <Badge intent="stable">Healthy</Badge> <Badge intent="stable">Active</Badge>
78
+
79
+ ### `none` – Default for normal / background states
80
+
81
+ * Especially in dense lists where too much color creates visual noise
82
+ * _E.g. "Inactive", "Expired"_
83
+
84
+ <Badge intent="none">Inactive</Badge> <Badge intent="none">Expired</Badge>
85
+
86
+ ## Examples
87
+
88
+ ### Comment status:
89
+
90
+ - "Approved" → `none`: <Badge intent="none">Approved</Badge>
91
+ - "Approval required" → `medium`: <Badge intent="medium">Approval required</Badge>
92
+
93
+ ### Page status:
94
+
95
+ - "Published" → `none`: <Badge intent="none">Published</Badge>
96
+ - "Pending" → `low`: <Badge intent="low">Pending</Badge>
97
+ - "Draft" → `draft`: <Badge intent="draft">Draft</Badge>
98
+ - "Scheduled" → `informational`: <Badge intent="informational">Scheduled</Badge>
99
+ - "Private" → `informational`: <Badge intent="informational">Private</Badge>
100
+
101
+ ### Plugin status:
102
+
103
+ - "Active" → `stable`: <Badge intent="stable">Active</Badge>
104
+ - "Inactive" → `none`: <Badge intent="none">Inactive</Badge>
105
+
106
+ ## 5. When in doubt…
107
+
108
+ Use the least attention‑grabbing intent that still:
109
+
110
+ - Makes it clear what needs attention,
111
+ - Marks what isn't final, or
112
+ - Confirms a key success state in that context.
@@ -0,0 +1,120 @@
1
+ import type { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Fragment } from '@wordpress/element';
3
+ import { Badge } from '../index';
4
+
5
+ const meta: Meta< typeof Badge > = {
6
+ title: 'Design System/Components/Badge',
7
+ component: Badge,
8
+ };
9
+ export default meta;
10
+
11
+ type Story = StoryObj< typeof Badge >;
12
+
13
+ export const Default: Story = {
14
+ args: {
15
+ children: 'Badge',
16
+ },
17
+ };
18
+
19
+ export const High: Story = {
20
+ ...Default,
21
+ args: {
22
+ ...Default.args,
23
+ intent: 'high',
24
+ },
25
+ };
26
+
27
+ export const Medium: Story = {
28
+ ...Default,
29
+ args: {
30
+ ...Default.args,
31
+ intent: 'medium',
32
+ },
33
+ };
34
+
35
+ export const Low: Story = {
36
+ ...Default,
37
+ args: {
38
+ ...Default.args,
39
+ intent: 'low',
40
+ },
41
+ };
42
+
43
+ export const Stable: Story = {
44
+ ...Default,
45
+ args: {
46
+ ...Default.args,
47
+ intent: 'stable',
48
+ },
49
+ };
50
+
51
+ export const Informational: Story = {
52
+ ...Default,
53
+ args: {
54
+ ...Default.args,
55
+ intent: 'informational',
56
+ },
57
+ };
58
+
59
+ export const Draft: Story = {
60
+ ...Default,
61
+ args: {
62
+ ...Default.args,
63
+ intent: 'draft',
64
+ },
65
+ };
66
+
67
+ export const None: Story = {
68
+ ...Default,
69
+ args: {
70
+ ...Default.args,
71
+ intent: 'none',
72
+ },
73
+ };
74
+
75
+ export const AllIntents: Story = {
76
+ ...Default,
77
+ render: ( args ) => (
78
+ <div
79
+ style={ {
80
+ display: 'grid',
81
+ gridTemplateColumns: 'max-content min-content',
82
+ gap: '1rem',
83
+ color: 'var(--wpds-color-fg-content-neutral)',
84
+ } }
85
+ >
86
+ { (
87
+ [
88
+ 'high',
89
+ 'medium',
90
+ 'low',
91
+ 'stable',
92
+ 'informational',
93
+ 'draft',
94
+ 'none',
95
+ ] as const
96
+ ).map( ( intent ) => (
97
+ <Fragment key={ intent }>
98
+ <div
99
+ style={ {
100
+ paddingInlineEnd: '1rem',
101
+ display: 'flex',
102
+ alignItems: 'center',
103
+ } }
104
+ >
105
+ { intent }
106
+ </div>
107
+ <div
108
+ style={ {
109
+ padding: '0.5rem 1rem',
110
+ display: 'flex',
111
+ alignItems: 'center',
112
+ } }
113
+ >
114
+ <Badge { ...args } intent={ intent } />
115
+ </div>
116
+ </Fragment>
117
+ ) ) }
118
+ </div>
119
+ ),
120
+ };
@@ -0,0 +1,22 @@
1
+ import { type ComponentProps } from '../utils/types';
2
+
3
+ export interface BadgeProps extends ComponentProps< 'span' > {
4
+ /**
5
+ * The text to display in the badge.
6
+ */
7
+ children: string;
8
+
9
+ /**
10
+ * The semantic intent of the badge, communicating its meaning through color.
11
+ *
12
+ * @default "none"
13
+ */
14
+ intent?:
15
+ | 'high'
16
+ | 'medium'
17
+ | 'low'
18
+ | 'stable'
19
+ | 'informational'
20
+ | 'draft'
21
+ | 'none';
22
+ }
package/src/box/box.tsx CHANGED
@@ -1,18 +1,9 @@
1
- /**
2
- * WordPress dependencies
3
- */
1
+ import { useRender, mergeProps } from '@base-ui/react';
4
2
  import { forwardRef } from '@wordpress/element';
5
-
6
- /**
7
- * Internal dependencies
8
- */
9
3
  import { type BoxProps } from './types';
10
- import { renderElement } from '../utils/element';
11
4
 
12
5
  /**
13
6
  * Default render function that renders a div element with the given props.
14
- *
15
- * @param props The props to apply to the HTML element.
16
7
  */
17
8
  const DEFAULT_RENDER = ( props: React.ComponentPropsWithoutRef< 'div' > ) => (
18
9
  <div { ...props } />
@@ -20,30 +11,25 @@ const DEFAULT_RENDER = ( props: React.ComponentPropsWithoutRef< 'div' > ) => (
20
11
 
21
12
  /**
22
13
  * Capitalizes the first character of a string.
23
- *
24
- * @param str The string to capitalize.
25
- * @return The capitalized string.
26
14
  */
27
15
  const capitalize = ( str: string ): string =>
28
16
  str.charAt( 0 ).toUpperCase() + str.slice( 1 );
29
17
 
30
18
  /**
31
- * Converts a size value to a CSS design token property reference (with
32
- * fallback) or a calculated value based on the base unit.
19
+ * Converts a size token name to a CSS design token property reference (with
20
+ * fallback).
33
21
  *
34
22
  * @param property The CSS property name.
35
23
  * @param target The design system token target.
36
- * @param value The size value, either a number (multiplier of base unit) or a string (token name).
24
+ * @param value The size token name.
37
25
  * @return A CSS value string with variable references.
38
26
  */
39
27
  const getSpacingValue = (
40
28
  property: string,
41
29
  target: string,
42
- value: number | string
30
+ value: string
43
31
  ): string =>
44
- typeof value === 'number'
45
- ? `calc(var(--wpds-dimension-base) * ${ value })`
46
- : `var(--wpds-dimension-${ property }-${ target }-${ value }, var(--wpds-dimension-${ property }-surface-${ value }))`;
32
+ `var(--wpds-dimension-${ property }-${ target }-${ value }, var(--wpds-dimension-${ property }-surface-${ value }))`;
47
33
 
48
34
  /**
49
35
  * Generates CSS styles for properties with optionally directional values,
@@ -92,7 +78,7 @@ export const Box = forwardRef< HTMLDivElement, BoxProps >( function Box(
92
78
  },
93
79
  ref
94
80
  ) {
95
- const style: React.CSSProperties = { ...props.style };
81
+ const style: React.CSSProperties = {};
96
82
 
97
83
  if ( backgroundColor ) {
98
84
  style.backgroundColor = `var(--wpds-color-bg-${ target }-${ backgroundColor }, var(--wpds-color-bg-surface-${ backgroundColor }))`;
@@ -122,9 +108,11 @@ export const Box = forwardRef< HTMLDivElement, BoxProps >( function Box(
122
108
  style.borderColor = `var(--wpds-color-stroke-${ target }-${ borderColor }, var(--wpds-color-stroke-surface-${ borderColor }))`;
123
109
  }
124
110
 
125
- return renderElement< 'div' >( {
111
+ const element = useRender( {
126
112
  render,
127
113
  ref,
128
- props: { ...props, style },
114
+ props: mergeProps< 'div' >( props, { style } ),
129
115
  } );
116
+
117
+ return element;
130
118
  } );
@@ -1,22 +1,10 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { type Meta, type StoryObj } from '@storybook/react';
5
-
6
- /**
7
- * WordPress dependencies
8
- */
9
- import '@wordpress/theme/design-tokens.css';
10
-
11
- /**
12
- * Internal dependencies
13
- */
1
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
2
+ import { type PaddingSize } from '@wordpress/theme';
14
3
  import { Box } from '../box';
15
4
 
16
5
  const meta: Meta< typeof Box > = {
17
6
  title: 'Design System/Components/Box',
18
7
  component: Box,
19
- tags: [ 'status-experimental' ],
20
8
  };
21
9
  export default meta;
22
10
 
@@ -35,7 +23,7 @@ export const Default: Story = {
35
23
  argTypes: {
36
24
  padding: {
37
25
  control: 'select',
38
- options: [ '2xs', 'xs', 'sm', 'md', 'lg', 1, 2, 3, 4 ],
26
+ options: [ '2xs', 'xs', 'sm', 'md', 'lg' ] satisfies PaddingSize[],
39
27
  },
40
28
  },
41
29
  };
package/src/box/types.ts CHANGED
@@ -1,57 +1,14 @@
1
- /**
2
- * Internal dependencies
3
- */
1
+ import {
2
+ type PaddingSize,
3
+ type BorderRadiusSize,
4
+ type BorderWidthSize,
5
+ type Target,
6
+ type SurfaceBackgroundColor,
7
+ type ContentForegroundColor,
8
+ type SurfaceStrokeColor,
9
+ } from '@wordpress/theme';
4
10
  import { type ComponentProps } from '../utils/types';
5
11
 
6
- type SizeToken = '2xs' | 'xs' | 'sm' | 'md' | 'lg';
7
-
8
- type Size = number | SizeToken;
9
-
10
- type BackgroundColor =
11
- | 'neutral'
12
- | 'neutral-strong'
13
- | 'neutral-weak'
14
- | 'brand'
15
- | 'success'
16
- | 'success-weak'
17
- | 'info'
18
- | 'info-weak'
19
- | 'warning'
20
- | 'warning-weak'
21
- | 'caution'
22
- | 'caution-weak'
23
- | 'error'
24
- | 'error-weak';
25
-
26
- type ForegroundColor =
27
- | 'neutral'
28
- | 'neutral-weak'
29
- | 'success'
30
- | 'success-weak'
31
- | 'info'
32
- | 'info-weak'
33
- | 'warning'
34
- | 'warning-weak'
35
- | 'caution'
36
- | 'caution-weak'
37
- | 'error'
38
- | 'error-weak';
39
-
40
- type StrokeColor =
41
- | 'brand'
42
- | 'brand-strong'
43
- | 'error'
44
- | 'error-strong'
45
- | 'info'
46
- | 'info-strong'
47
- | 'neutral'
48
- | 'neutral-strong'
49
- | 'neutral-weak'
50
- | 'success'
51
- | 'success-strong'
52
- | 'warning'
53
- | 'warning-strong';
54
-
55
12
  type DimensionVariant< T > = {
56
13
  block?: T;
57
14
  blockStart?: T;
@@ -65,37 +22,37 @@ export interface BoxProps extends ComponentProps< 'div' > {
65
22
  /**
66
23
  * The target rendering element design token grouping to use for the box.
67
24
  */
68
- target?: string;
25
+ target?: Target;
69
26
 
70
27
  /**
71
28
  * The surface background design token for box background color.
72
29
  */
73
- backgroundColor?: BackgroundColor;
30
+ backgroundColor?: SurfaceBackgroundColor;
74
31
 
75
32
  /**
76
33
  * The surface foreground design token for box text color.
77
34
  */
78
- color?: ForegroundColor;
35
+ color?: ContentForegroundColor;
79
36
 
80
37
  /**
81
38
  * The surface spacing design token or base unit multiplier for box padding.
82
39
  */
83
- padding?: Size | DimensionVariant< Size >;
40
+ padding?: PaddingSize | DimensionVariant< PaddingSize >;
84
41
 
85
42
  /**
86
43
  * The surface border radius design token.
87
44
  */
88
- borderRadius?: Exclude< SizeToken, '2xs' >;
45
+ borderRadius?: BorderRadiusSize;
89
46
 
90
47
  /**
91
48
  * The surface border width design token.
92
49
  */
93
- borderWidth?: Exclude< SizeToken, '2xs' >;
50
+ borderWidth?: BorderWidthSize;
94
51
 
95
52
  /**
96
53
  * The surface border stroke color design token.
97
54
  */
98
- borderColor?: StrokeColor;
55
+ borderColor?: SurfaceStrokeColor;
99
56
 
100
57
  /**
101
58
  * The content to be rendered inside the component.
@@ -0,0 +1,57 @@
1
+ import { Button as _Button } from '@base-ui/react/button';
2
+ import clsx from 'clsx';
3
+ import { speak } from '@wordpress/a11y';
4
+ import { forwardRef, useEffect } from '@wordpress/element';
5
+ import { __ } from '@wordpress/i18n';
6
+ import { type ButtonProps } from './types';
7
+ import styles from './style.module.css';
8
+ import resetStyles from '../utils/css/resets.module.css';
9
+ import focusStyles from '../utils/css/focus.module.css';
10
+
11
+ export const Button = forwardRef< HTMLButtonElement, ButtonProps >(
12
+ function Button(
13
+ {
14
+ tone = 'brand',
15
+ variant = 'solid',
16
+ size = 'default',
17
+ className,
18
+ focusableWhenDisabled = true,
19
+ disabled,
20
+ loading,
21
+ loadingAnnouncement = __( 'Loading' ),
22
+ children,
23
+ ...props
24
+ },
25
+ ref
26
+ ) {
27
+ const mergedClassName = clsx(
28
+ resetStyles[ 'box-sizing' ],
29
+ focusStyles[ 'outset-ring--focus-except-active' ],
30
+ variant !== 'unstyled' && styles.button,
31
+ styles[ `is-${ tone }` ],
32
+ styles[ `is-${ variant }` ],
33
+ styles[ `is-${ size }` ],
34
+ loading && styles[ 'is-loading' ],
35
+ className
36
+ );
37
+
38
+ // Announce loading state to assistive technology
39
+ useEffect( () => {
40
+ if ( loading && loadingAnnouncement ) {
41
+ speak( loadingAnnouncement );
42
+ }
43
+ }, [ loading, loadingAnnouncement ] );
44
+
45
+ return (
46
+ <_Button
47
+ ref={ ref }
48
+ className={ mergedClassName }
49
+ focusableWhenDisabled={ focusableWhenDisabled }
50
+ disabled={ disabled ?? loading }
51
+ { ...props }
52
+ >
53
+ { children }
54
+ </_Button>
55
+ );
56
+ }
57
+ );
@@ -0,0 +1,24 @@
1
+ import { forwardRef } from '@wordpress/element';
2
+ import { type IconProps } from '../icon/types';
3
+ import { Icon } from '../icon';
4
+
5
+ interface ButtonIconProps extends IconProps {
6
+ /**
7
+ * The icon to display, from the `@wordpress/icons` package.
8
+ */
9
+ icon: IconProps[ 'icon' ];
10
+ }
11
+
12
+ export const ButtonIcon = forwardRef< SVGSVGElement, ButtonIconProps >(
13
+ function ButtonIcon( { icon, ...props }, ref ) {
14
+ return (
15
+ <Icon
16
+ ref={ ref }
17
+ icon={ icon }
18
+ viewBox="4 4 16 16"
19
+ size={ 16 }
20
+ { ...props }
21
+ />
22
+ );
23
+ }
24
+ );
@@ -0,0 +1,16 @@
1
+ import { Button as ButtonButton } from './button';
2
+ import { ButtonIcon } from './icon';
3
+
4
+ /**
5
+ * A versatile button component with multiple variants, tones, and sizes.
6
+ * Built on design tokens for consistent theming and accessibility.
7
+ */
8
+ export const Button = Object.assign( ButtonButton, {
9
+ /**
10
+ * An icon component specifically designed to work well when rendered inside
11
+ * a `Button` component.
12
+ */
13
+ Icon: ButtonIcon,
14
+ } ) as typeof ButtonButton & {
15
+ Icon: typeof ButtonIcon;
16
+ };