@fpkit/acss 0.5.12 → 0.6.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 (398) hide show
  1. package/README.md +89 -0
  2. package/libs/chunk-2NRIP6RB.cjs +17 -0
  3. package/libs/chunk-2NRIP6RB.cjs.map +1 -0
  4. package/libs/chunk-33PNJ4LO.cjs +15 -0
  5. package/libs/chunk-33PNJ4LO.cjs.map +1 -0
  6. package/libs/chunk-4BZKFPEC.cjs +17 -0
  7. package/libs/chunk-4BZKFPEC.cjs.map +1 -0
  8. package/libs/{chunk-O6QZBB6G.js → chunk-5QD3DWFI.js} +5 -5
  9. package/libs/chunk-5QD3DWFI.js.map +1 -0
  10. package/libs/chunk-6SAHIYCZ.js +7 -0
  11. package/libs/chunk-6SAHIYCZ.js.map +1 -0
  12. package/libs/{chunk-KKLTUJFB.cjs → chunk-6WTC4JXH.cjs} +5 -5
  13. package/libs/chunk-6WTC4JXH.cjs.map +1 -0
  14. package/libs/chunk-75QHTLFO.js +7 -0
  15. package/libs/chunk-75QHTLFO.js.map +1 -0
  16. package/libs/{chunk-YWOYVRFT.js → chunk-7XPFW7CB.js} +3 -3
  17. package/libs/chunk-BFK62VX5.js +5 -0
  18. package/libs/chunk-BFK62VX5.js.map +1 -0
  19. package/libs/{chunk-ICCKQ2GC.cjs → chunk-DKTHCQ5P.cjs} +4 -4
  20. package/libs/{chunk-6TE5QEVE.cjs → chunk-E2AJURUW.cjs} +3 -3
  21. package/libs/chunk-E2AJURUW.cjs.map +1 -0
  22. package/libs/chunk-ENTCUJ3A.cjs +13 -0
  23. package/libs/chunk-ENTCUJ3A.cjs.map +1 -0
  24. package/libs/chunk-F5EYMVQM.js +10 -0
  25. package/libs/chunk-F5EYMVQM.js.map +1 -0
  26. package/libs/chunk-FVROL3V5.js +9 -0
  27. package/libs/chunk-FVROL3V5.js.map +1 -0
  28. package/libs/chunk-GT77BX4L.cjs +17 -0
  29. package/libs/chunk-GT77BX4L.cjs.map +1 -0
  30. package/libs/chunk-GUJSMQ3V.cjs +16 -0
  31. package/libs/chunk-GUJSMQ3V.cjs.map +1 -0
  32. package/libs/chunk-HHLNOC5T.js +7 -0
  33. package/libs/chunk-HHLNOC5T.js.map +1 -0
  34. package/libs/chunk-HRRHPLER.js +8 -0
  35. package/libs/chunk-HRRHPLER.js.map +1 -0
  36. package/libs/chunk-IEB64SWY.js +8 -0
  37. package/libs/chunk-IEB64SWY.js.map +1 -0
  38. package/libs/{chunk-LIQJ7ZZR.js → chunk-IQ76HGVP.js} +2 -2
  39. package/libs/chunk-IRLFZ3OL.js +9 -0
  40. package/libs/chunk-IRLFZ3OL.js.map +1 -0
  41. package/libs/chunk-KK47SYZI.js +8 -0
  42. package/libs/chunk-KK47SYZI.js.map +1 -0
  43. package/libs/chunk-O3JIHC5M.cjs +15 -0
  44. package/libs/chunk-O3JIHC5M.cjs.map +1 -0
  45. package/libs/chunk-O5XAJ7BY.cjs +18 -0
  46. package/libs/chunk-O5XAJ7BY.cjs.map +1 -0
  47. package/libs/chunk-OVWLQYMK.js +10 -0
  48. package/libs/chunk-OVWLQYMK.js.map +1 -0
  49. package/libs/chunk-PNWIRCG3.cjs +7 -0
  50. package/libs/chunk-PNWIRCG3.cjs.map +1 -0
  51. package/libs/chunk-QVW6W76L.cjs +18 -0
  52. package/libs/chunk-QVW6W76L.cjs.map +1 -0
  53. package/libs/chunk-T4T6GWYQ.cjs +17 -0
  54. package/libs/chunk-T4T6GWYQ.cjs.map +1 -0
  55. package/libs/chunk-TON2YGMD.cjs +9 -0
  56. package/libs/chunk-TON2YGMD.cjs.map +1 -0
  57. package/libs/chunk-UEPAWMDF.js +8 -0
  58. package/libs/chunk-UEPAWMDF.js.map +1 -0
  59. package/libs/{chunk-LT5KZ2QW.cjs → chunk-US2I5GI7.cjs} +3 -3
  60. package/libs/{chunk-E3XP6BEX.cjs → chunk-W2UIN7EV.cjs} +3 -3
  61. package/libs/chunk-W5TKWBFC.cjs +18 -0
  62. package/libs/chunk-W5TKWBFC.cjs.map +1 -0
  63. package/libs/chunk-WXBFBWYF.cjs +16 -0
  64. package/libs/chunk-WXBFBWYF.cjs.map +1 -0
  65. package/libs/chunk-X3JCTEPD.js +11 -0
  66. package/libs/chunk-X3JCTEPD.js.map +1 -0
  67. package/libs/chunk-X5LGFCWG.js +9 -0
  68. package/libs/chunk-X5LGFCWG.js.map +1 -0
  69. package/libs/{chunk-5M57K4SW.js → chunk-Y2PFDELK.js} +2 -2
  70. package/libs/chunk-ZFJ4U45S.js +10 -0
  71. package/libs/chunk-ZFJ4U45S.js.map +1 -0
  72. package/libs/{component-props-a8a2f97e.d.ts → component-props-67d978a2.d.ts} +4 -4
  73. package/libs/components/alert/alert.css +1 -1
  74. package/libs/components/alert/alert.css.map +1 -1
  75. package/libs/components/alert/alert.min.css +2 -2
  76. package/libs/components/badge/badge.css +1 -1
  77. package/libs/components/badge/badge.css.map +1 -1
  78. package/libs/components/badge/badge.min.css +2 -2
  79. package/libs/components/breadcrumbs/breadcrumb.cjs +9 -5
  80. package/libs/components/breadcrumbs/breadcrumb.d.cts +275 -36
  81. package/libs/components/breadcrumbs/breadcrumb.d.ts +275 -36
  82. package/libs/components/breadcrumbs/breadcrumb.js +3 -3
  83. package/libs/components/button.cjs +6 -4
  84. package/libs/components/button.d.cts +97 -4
  85. package/libs/components/button.d.ts +97 -4
  86. package/libs/components/button.js +4 -2
  87. package/libs/components/buttons/button.css +1 -1
  88. package/libs/components/buttons/button.css.map +1 -1
  89. package/libs/components/buttons/button.min.css +2 -2
  90. package/libs/components/card.cjs +7 -7
  91. package/libs/components/card.d.cts +278 -34
  92. package/libs/components/card.d.ts +278 -34
  93. package/libs/components/card.js +2 -2
  94. package/libs/components/cards/card.css +1 -1
  95. package/libs/components/cards/card.css.map +1 -1
  96. package/libs/components/cards/card.min.css +2 -2
  97. package/libs/components/details/details.css +1 -1
  98. package/libs/components/details/details.css.map +1 -1
  99. package/libs/components/details/details.min.css +2 -2
  100. package/libs/components/dialog/dialog.cjs +9 -7
  101. package/libs/components/dialog/dialog.css +1 -1
  102. package/libs/components/dialog/dialog.css.map +1 -1
  103. package/libs/components/dialog/dialog.d.cts +88 -34
  104. package/libs/components/dialog/dialog.d.ts +88 -34
  105. package/libs/components/dialog/dialog.js +7 -5
  106. package/libs/components/dialog/dialog.min.css +2 -2
  107. package/libs/components/form/fields.cjs +4 -4
  108. package/libs/components/form/fields.d.cts +16 -7
  109. package/libs/components/form/fields.d.ts +16 -7
  110. package/libs/components/form/fields.js +2 -2
  111. package/libs/components/form/inputs.cjs +6 -4
  112. package/libs/components/form/inputs.d.cts +50 -2
  113. package/libs/components/form/inputs.d.ts +50 -2
  114. package/libs/components/form/inputs.js +4 -2
  115. package/libs/components/form/textarea.cjs +5 -4
  116. package/libs/components/form/textarea.d.cts +32 -23
  117. package/libs/components/form/textarea.d.ts +32 -23
  118. package/libs/components/form/textarea.js +3 -2
  119. package/libs/components/heading/heading.cjs +3 -3
  120. package/libs/components/heading/heading.d.cts +3 -14
  121. package/libs/components/heading/heading.d.ts +3 -14
  122. package/libs/components/heading/heading.js +2 -2
  123. package/libs/components/icons/icon.cjs +4 -4
  124. package/libs/components/icons/icon.d.cts +183 -39
  125. package/libs/components/icons/icon.d.ts +183 -39
  126. package/libs/components/icons/icon.js +2 -2
  127. package/libs/components/images/img.css +1 -1
  128. package/libs/components/images/img.css.map +1 -1
  129. package/libs/components/images/img.min.css +2 -2
  130. package/libs/components/link/link.cjs +4 -4
  131. package/libs/components/link/link.css +1 -1
  132. package/libs/components/link/link.css.map +1 -1
  133. package/libs/components/link/link.d.cts +3 -19
  134. package/libs/components/link/link.d.ts +3 -19
  135. package/libs/components/link/link.js +2 -2
  136. package/libs/components/link/link.min.css +2 -2
  137. package/libs/components/list/list.cjs +5 -5
  138. package/libs/components/list/list.css +1 -0
  139. package/libs/components/list/list.css.map +1 -0
  140. package/libs/components/list/list.d.cts +120 -33
  141. package/libs/components/list/list.d.ts +120 -33
  142. package/libs/components/list/list.js +2 -2
  143. package/libs/components/list/list.min.css +3 -0
  144. package/libs/components/modal.cjs +6 -4
  145. package/libs/components/modal.d.cts +8 -8
  146. package/libs/components/modal.d.ts +8 -8
  147. package/libs/components/modal.js +5 -3
  148. package/libs/components/nav/nav.cjs +7 -7
  149. package/libs/components/nav/nav.css +1 -1
  150. package/libs/components/nav/nav.css.map +1 -1
  151. package/libs/components/nav/nav.d.cts +550 -34
  152. package/libs/components/nav/nav.d.ts +550 -34
  153. package/libs/components/nav/nav.js +3 -3
  154. package/libs/components/nav/nav.min.css +2 -2
  155. package/libs/components/popover/popover.d.cts +5 -5
  156. package/libs/components/popover/popover.d.ts +5 -5
  157. package/libs/components/tables/table.cjs +5 -5
  158. package/libs/components/tables/table.d.cts +8 -8
  159. package/libs/components/tables/table.d.ts +8 -8
  160. package/libs/components/tables/table.js +2 -2
  161. package/libs/components/tag/tag.css +1 -1
  162. package/libs/components/tag/tag.css.map +1 -1
  163. package/libs/components/tag/tag.min.css +2 -2
  164. package/libs/components/text/text.cjs +5 -5
  165. package/libs/components/text/text.d.cts +5 -5
  166. package/libs/components/text/text.d.ts +5 -5
  167. package/libs/components/text/text.js +2 -2
  168. package/libs/form.types-d25ebfac.d.ts +233 -0
  169. package/libs/heading-7446cb46.d.ts +250 -0
  170. package/libs/hooks.cjs +12 -0
  171. package/libs/hooks.d.cts +140 -1
  172. package/libs/hooks.d.ts +140 -1
  173. package/libs/hooks.js +4 -0
  174. package/libs/icons.cjs +3 -3
  175. package/libs/icons.d.cts +2 -2
  176. package/libs/icons.d.ts +2 -2
  177. package/libs/icons.js +2 -2
  178. package/libs/index.cjs +117 -94
  179. package/libs/index.cjs.map +1 -1
  180. package/libs/index.css +1 -1
  181. package/libs/index.css.map +1 -1
  182. package/libs/index.d.cts +834 -61
  183. package/libs/index.d.ts +834 -61
  184. package/libs/index.js +36 -22
  185. package/libs/index.js.map +1 -1
  186. package/libs/link-5192f411.d.ts +323 -0
  187. package/libs/list.types-d26de310.d.ts +245 -0
  188. package/libs/ui-d01b50d4.d.ts +289 -0
  189. package/package.json +4 -87
  190. package/src/components/README-UI.mdx +416 -0
  191. package/src/components/alert/ACCESSIBILITY.md +319 -0
  192. package/src/components/alert/README.mdx +475 -19
  193. package/src/components/alert/alert.scss +110 -6
  194. package/src/components/alert/alert.stories.tsx +372 -0
  195. package/src/components/alert/alert.test.tsx +762 -0
  196. package/src/components/alert/alert.tsx +331 -66
  197. package/src/components/alert/views/alert-actions.tsx +13 -0
  198. package/src/components/alert/views/alert-content.tsx +17 -0
  199. package/src/components/alert/views/alert-icon.tsx +53 -0
  200. package/src/components/alert/views/alert-screen-reader-text.tsx +30 -0
  201. package/src/components/alert/views/alert-title.tsx +23 -0
  202. package/src/components/alert/views/alert-view.tsx +158 -0
  203. package/src/components/alert/views/index.ts +12 -0
  204. package/src/components/badge/badge.mdx +186 -49
  205. package/src/components/badge/badge.scss +20 -2
  206. package/src/components/badge/badge.stories.tsx +160 -14
  207. package/src/components/badge/badge.test.tsx +179 -0
  208. package/src/components/badge/badge.tsx +97 -4
  209. package/src/components/breadcrumbs/README.mdx +364 -45
  210. package/src/components/breadcrumbs/__snapshots__/breadcrumb.test.tsx.snap +152 -0
  211. package/src/components/breadcrumbs/breadcrumb.stories.tsx +7 -3
  212. package/src/components/breadcrumbs/breadcrumb.test.tsx +490 -0
  213. package/src/components/breadcrumbs/breadcrumb.tsx +430 -170
  214. package/src/components/buttons/README.mdx +102 -1
  215. package/src/components/buttons/button.scss +34 -31
  216. package/src/components/buttons/button.stories.tsx +141 -0
  217. package/src/components/buttons/button.tsx +82 -52
  218. package/src/components/cards/README.mdx +657 -0
  219. package/src/components/cards/card.scss +22 -0
  220. package/src/components/cards/card.stories.tsx +167 -5
  221. package/src/components/cards/card.test.tsx +360 -20
  222. package/src/components/cards/card.tsx +200 -79
  223. package/src/components/cards/card.types.ts +135 -0
  224. package/src/components/cards/card.utils.ts +79 -0
  225. package/src/components/details/ACCESSIBILITY-REVIEW-LIVE.md +1050 -0
  226. package/src/components/details/ACCESSIBILITY-REVIEW.md +502 -0
  227. package/src/components/details/README.mdx +437 -69
  228. package/src/components/details/details.scss +16 -7
  229. package/src/components/details/details.test.tsx +385 -0
  230. package/src/components/details/details.tsx +101 -69
  231. package/src/components/details/details.types.ts +76 -0
  232. package/src/components/dialog/README.mdx +513 -110
  233. package/src/components/dialog/dialog-a11y-review.md +653 -0
  234. package/src/components/dialog/dialog-modal.tsx +79 -56
  235. package/src/components/dialog/dialog.scss +53 -3
  236. package/src/components/dialog/dialog.stories.tsx +10 -7
  237. package/src/components/dialog/dialog.test.tsx +450 -0
  238. package/src/components/dialog/dialog.tsx +69 -59
  239. package/src/components/dialog/dialog.types.ts +133 -0
  240. package/src/components/dialog/views/dialog-footer.tsx +54 -11
  241. package/src/components/dialog/views/dialog-header.tsx +20 -15
  242. package/src/components/form/README.mdx +725 -43
  243. package/src/components/form/WCAG-REVIEW.md +654 -0
  244. package/src/components/form/fields.tsx +10 -1
  245. package/src/components/form/form.stories.tsx +604 -23
  246. package/src/components/form/form.tsx +204 -63
  247. package/src/components/form/form.types.ts +378 -0
  248. package/src/components/form/input.stories.tsx +71 -3
  249. package/src/components/form/inputs.tsx +159 -67
  250. package/src/components/form/select.tsx +122 -66
  251. package/src/components/form/textarea.tsx +120 -73
  252. package/src/components/fp.tsx +86 -11
  253. package/src/components/heading/heading.stories.tsx +44 -4
  254. package/src/components/heading/heading.tsx +89 -23
  255. package/src/components/icons/README.mdx +332 -0
  256. package/src/components/icons/icon.stories.tsx +74 -1
  257. package/src/components/icons/icon.tsx +89 -1
  258. package/src/components/icons/types.ts +47 -0
  259. package/src/components/images/README.mdx +340 -24
  260. package/src/components/images/img.scss +19 -3
  261. package/src/components/images/img.stories.tsx +424 -15
  262. package/src/components/images/img.test.tsx +354 -25
  263. package/src/components/images/img.tsx +186 -63
  264. package/src/components/images/img.types.ts +211 -0
  265. package/src/components/link/README.mdx +923 -0
  266. package/src/components/link/link.scss +79 -26
  267. package/src/components/link/link.stories.tsx +383 -30
  268. package/src/components/link/link.test.tsx +677 -0
  269. package/src/components/link/link.tsx +163 -57
  270. package/src/components/link/link.types.ts +261 -0
  271. package/src/components/list/README.mdx +764 -0
  272. package/src/components/list/list.scss +285 -0
  273. package/src/components/list/list.stories.tsx +514 -27
  274. package/src/components/list/list.test.tsx +554 -0
  275. package/src/components/list/list.tsx +153 -51
  276. package/src/components/list/list.types.ts +255 -0
  277. package/src/components/nav/ACCESSIBILITY.md +649 -0
  278. package/src/components/nav/README.mdx +782 -0
  279. package/src/components/nav/nav.scss +32 -1
  280. package/src/components/nav/nav.stories.tsx +44 -6
  281. package/src/components/nav/nav.tsx +302 -51
  282. package/src/components/nav/nav.types.ts +308 -0
  283. package/src/components/tag/README.mdx +426 -0
  284. package/src/components/tag/tag.scss +101 -27
  285. package/src/components/tag/tag.stories.tsx +384 -10
  286. package/src/components/tag/tag.test.tsx +210 -0
  287. package/src/components/tag/tag.tsx +106 -9
  288. package/src/components/tag/tag.types.ts +107 -0
  289. package/src/components/title/MIGRATION.md +199 -0
  290. package/src/components/title/README.md +326 -0
  291. package/src/components/title/README.mdx +452 -0
  292. package/src/components/title/title.stories.tsx +393 -0
  293. package/src/components/title/title.test.tsx +251 -0
  294. package/src/components/title/title.tsx +219 -0
  295. package/src/components/ui.stories.tsx +894 -0
  296. package/src/components/ui.test.tsx +559 -0
  297. package/src/components/ui.tsx +274 -18
  298. package/src/components/word-count/README.md +240 -0
  299. package/src/hooks/use-disabled-state.test.tsx +536 -0
  300. package/src/hooks/use-disabled-state.ts +246 -0
  301. package/src/hooks/useDisabledState.md +393 -0
  302. package/src/hooks.ts +7 -0
  303. package/src/index.scss +2 -0
  304. package/src/index.ts +12 -3
  305. package/src/sass/_globals.scss +2 -7
  306. package/src/sass/_properties.scss +1 -0
  307. package/src/styles/alert/alert.css +92 -4
  308. package/src/styles/alert/alert.css.map +1 -1
  309. package/src/styles/badge/badge.css +20 -2
  310. package/src/styles/badge/badge.css.map +1 -1
  311. package/src/styles/buttons/button.css +31 -31
  312. package/src/styles/buttons/button.css.map +1 -1
  313. package/src/styles/cards/card.css +16 -0
  314. package/src/styles/cards/card.css.map +1 -1
  315. package/src/styles/details/details.css +19 -8
  316. package/src/styles/details/details.css.map +1 -1
  317. package/src/styles/dialog/dialog.css +43 -2
  318. package/src/styles/dialog/dialog.css.map +1 -1
  319. package/src/styles/images/img.css +15 -3
  320. package/src/styles/images/img.css.map +1 -1
  321. package/src/styles/index.css +691 -128
  322. package/src/styles/index.css.map +1 -1
  323. package/src/styles/link/link.css +45 -28
  324. package/src/styles/link/link.css.map +1 -1
  325. package/src/styles/list/list.css +214 -0
  326. package/src/styles/list/list.css.map +1 -0
  327. package/src/styles/nav/nav.css +21 -1
  328. package/src/styles/nav/nav.css.map +1 -1
  329. package/src/styles/tag/tag.css +113 -35
  330. package/src/styles/tag/tag.css.map +1 -1
  331. package/src/styles/utilities/_disabled.scss +58 -0
  332. package/src/test/setup.d.ts +9 -0
  333. package/src/test/setup.ts +53 -1
  334. package/src/types/shared.ts +43 -6
  335. package/src/utils/accessibility.ts +109 -0
  336. package/libs/chunk-5ZM4XL44.js +0 -8
  337. package/libs/chunk-5ZM4XL44.js.map +0 -1
  338. package/libs/chunk-6BVXFW7U.cjs +0 -15
  339. package/libs/chunk-6BVXFW7U.cjs.map +0 -1
  340. package/libs/chunk-6TE5QEVE.cjs.map +0 -1
  341. package/libs/chunk-7K76RW2A.cjs +0 -18
  342. package/libs/chunk-7K76RW2A.cjs.map +0 -1
  343. package/libs/chunk-BHRQBJRY.js +0 -8
  344. package/libs/chunk-BHRQBJRY.js.map +0 -1
  345. package/libs/chunk-BIP2NY53.js +0 -8
  346. package/libs/chunk-BIP2NY53.js.map +0 -1
  347. package/libs/chunk-BSPKFLO4.js +0 -8
  348. package/libs/chunk-BSPKFLO4.js.map +0 -1
  349. package/libs/chunk-BV5CLH44.cjs +0 -18
  350. package/libs/chunk-BV5CLH44.cjs.map +0 -1
  351. package/libs/chunk-DKGJHKGW.js +0 -9
  352. package/libs/chunk-DKGJHKGW.js.map +0 -1
  353. package/libs/chunk-DV56L5YX.cjs +0 -18
  354. package/libs/chunk-DV56L5YX.cjs.map +0 -1
  355. package/libs/chunk-ECLD37WN.cjs +0 -16
  356. package/libs/chunk-ECLD37WN.cjs.map +0 -1
  357. package/libs/chunk-EQ67LF46.js +0 -9
  358. package/libs/chunk-EQ67LF46.js.map +0 -1
  359. package/libs/chunk-HYBZBN4G.js +0 -8
  360. package/libs/chunk-HYBZBN4G.js.map +0 -1
  361. package/libs/chunk-IYUN2EW3.cjs +0 -15
  362. package/libs/chunk-IYUN2EW3.cjs.map +0 -1
  363. package/libs/chunk-KKLTUJFB.cjs.map +0 -1
  364. package/libs/chunk-LHVJKDMA.cjs +0 -15
  365. package/libs/chunk-LHVJKDMA.cjs.map +0 -1
  366. package/libs/chunk-LL7HTLMS.cjs +0 -15
  367. package/libs/chunk-LL7HTLMS.cjs.map +0 -1
  368. package/libs/chunk-M5QL5TAE.cjs +0 -14
  369. package/libs/chunk-M5QL5TAE.cjs.map +0 -1
  370. package/libs/chunk-NE6YXTMC.js +0 -7
  371. package/libs/chunk-NE6YXTMC.js.map +0 -1
  372. package/libs/chunk-NHYXGV3L.js +0 -8
  373. package/libs/chunk-NHYXGV3L.js.map +0 -1
  374. package/libs/chunk-O6QZBB6G.js.map +0 -1
  375. package/libs/chunk-P7TTEYCD.js +0 -7
  376. package/libs/chunk-P7TTEYCD.js.map +0 -1
  377. package/libs/chunk-PPOOBUOS.js +0 -8
  378. package/libs/chunk-PPOOBUOS.js.map +0 -1
  379. package/libs/chunk-QCMV4VQZ.js +0 -8
  380. package/libs/chunk-QCMV4VQZ.js.map +0 -1
  381. package/libs/chunk-QVV34QEH.cjs +0 -32
  382. package/libs/chunk-QVV34QEH.cjs.map +0 -1
  383. package/libs/chunk-S7BABR7Z.cjs +0 -13
  384. package/libs/chunk-S7BABR7Z.cjs.map +0 -1
  385. package/libs/chunk-SXVZSWX6.js +0 -11
  386. package/libs/chunk-SXVZSWX6.js.map +0 -1
  387. package/libs/chunk-X3EVB7VS.cjs +0 -15
  388. package/libs/chunk-X3EVB7VS.cjs.map +0 -1
  389. package/libs/inputs-f3a216db.d.ts +0 -45
  390. package/libs/ui-9a6f9f8d.d.ts +0 -24
  391. package/src/components/cards/README.md +0 -80
  392. package/src/components/dialog/hooks/useClickOutside.ts +0 -33
  393. /package/libs/{chunk-YWOYVRFT.js.map → chunk-7XPFW7CB.js.map} +0 -0
  394. /package/libs/{chunk-ICCKQ2GC.cjs.map → chunk-DKTHCQ5P.cjs.map} +0 -0
  395. /package/libs/{chunk-LIQJ7ZZR.js.map → chunk-IQ76HGVP.js.map} +0 -0
  396. /package/libs/{chunk-LT5KZ2QW.cjs.map → chunk-US2I5GI7.cjs.map} +0 -0
  397. /package/libs/{chunk-E3XP6BEX.cjs.map → chunk-W2UIN7EV.cjs.map} +0 -0
  398. /package/libs/{chunk-5M57K4SW.js.map → chunk-Y2PFDELK.js.map} +0 -0
@@ -1,25 +1,122 @@
1
1
  import React from 'react'
2
2
  import UI from '#components/ui'
3
+ import type { TagProps, TagVariant } from './tag.types'
3
4
 
4
- export type TagProps = {
5
- /** HTML element to display the badge as span or p */
6
- elm?: 'span' | 'p'
7
- /** Aria role for the component - conditional */
8
- role: 'note' | 'status'
9
- } & React.ComponentProps<typeof UI>
10
-
5
+ /**
6
+ * Tag - A small inline label component for displaying status, versions, or environment indicators
7
+ *
8
+ * The Tag component is used to highlight supplementary information such as release stages
9
+ * (alpha, beta, stable), environment indicators (production), or version labels. It renders
10
+ * as either a `<span>` (inline) or `<p>` (block) element with semantic ARIA roles.
11
+ *
12
+ * ## Design Philosophy
13
+ *
14
+ * Tags serve as visual and semantic indicators that:
15
+ * - Communicate the state or stage of features, releases, or environments
16
+ * - Provide quick visual scanning through color-coded variants
17
+ * - Maintain accessibility through proper ARIA roles and labels
18
+ *
19
+ * ## Styling Architecture
20
+ *
21
+ * The Tag component uses CSS custom properties (CSS variables) for theming and styling,
22
+ * allowing for easy customization through the `data-tag` attribute. Each variant
23
+ * (alpha, beta, stable, production) applies predefined color schemes defined in SCSS.
24
+ *
25
+ * ## Accessibility Considerations (WCAG 2.1 AA Compliance)
26
+ *
27
+ * - **Semantic Roles**: Uses `role="note"` for static tags or `role="status"` for dynamic content
28
+ * - `role="note"`: Read once by screen readers, suitable for static labels (default)
29
+ * - `role="status"`: Announces updates to screen readers, use for changing status indicators
30
+ * - **Color Independence**: Don't rely solely on color to convey meaning - include text labels
31
+ * - **Text Alternatives**: For icon-only tags, provide `aria-label` for screen reader context
32
+ * - **Contrast Ratios**: All variants meet WCAG AA contrast requirements (4.5:1 for normal text)
33
+ * - **Live Regions**: When using `role="status"`, tag becomes a live region for accessibility
34
+ *
35
+ * ## When to Use Each Role
36
+ *
37
+ * **Use `role="note"` (default) when:**
38
+ * - Displaying static version numbers (e.g., "v2.1.0")
39
+ * - Showing fixed environment indicators (e.g., "Beta Feature")
40
+ * - Labeling unchanging content categories
41
+ *
42
+ * **Use `role="status"` when:**
43
+ * - Indicating real-time status that may change (e.g., "Processing" → "Complete")
44
+ * - Displaying live build/deployment states
45
+ * - Showing dynamic feature flags that toggle
46
+ *
47
+ * @param {TagProps} props - Component props
48
+ * @returns {React.ReactElement} A Tag component
49
+ *
50
+ * @example
51
+ * // Basic tag with beta variant (default inline span)
52
+ * <Tag variant="beta">Beta</Tag>
53
+ *
54
+ * @example
55
+ * // Production environment indicator as block element
56
+ * <Tag elm="p" variant="production">Production Environment</Tag>
57
+ *
58
+ * @example
59
+ * // Dynamic status tag with live updates
60
+ * <Tag role="status" variant="stable">
61
+ * {isDeployed ? 'Deployed' : 'Deploying...'}
62
+ * </Tag>
63
+ *
64
+ * @example
65
+ * // Tag with custom styling and accessibility label
66
+ * <Tag
67
+ * variant="alpha"
68
+ * aria-label="Alpha version - may contain bugs"
69
+ * styles={{ fontSize: '0.75rem' }}
70
+ * >
71
+ * Alpha
72
+ * </Tag>
73
+ *
74
+ * @example
75
+ * // ✅ GOOD: Clear text content with variant for visual enhancement
76
+ * <Tag variant="stable">v2.0 Stable</Tag>
77
+ *
78
+ * @example
79
+ * // ✅ GOOD: Dynamic status with proper role
80
+ * <Tag role="status" variant="production">{deploymentStatus}</Tag>
81
+ *
82
+ * @example
83
+ * // ✅ GOOD: Accessible tag with descriptive label
84
+ * <Tag variant="beta" aria-label="Beta feature - feedback welcome">
85
+ * Beta
86
+ * </Tag>
87
+ *
88
+ * @example
89
+ * // ❌ BAD: Relying only on color without text
90
+ * <Tag variant="production" aria-label="Production" />
91
+ *
92
+ * @example
93
+ * // ❌ BAD: Using status role for static content
94
+ * <Tag role="status" variant="stable">v1.0</Tag>
95
+ */
11
96
  export const Tag = ({
12
97
  elm = 'span',
13
98
  role = 'note',
99
+ variant,
14
100
  children,
15
101
  styles,
16
102
  ...props
17
103
  }: TagProps) => {
104
+ // Map variant to data-tag attribute for SCSS styling
105
+ const dataTag = variant ? variant : undefined
106
+
18
107
  return (
19
- <UI as={elm} role={role} styles={styles} {...props}>
108
+ <UI
109
+ as={elm}
110
+ role={role}
111
+ data-tag={dataTag}
112
+ styles={styles}
113
+ {...props}
114
+ >
20
115
  {children}
21
116
  </UI>
22
117
  )
23
118
  }
24
- export default Tag
119
+
25
120
  Tag.displayName = 'Tag'
121
+ export default Tag
122
+ export type { TagProps, TagVariant }
@@ -0,0 +1,107 @@
1
+ import React from 'react'
2
+ import UI from '#components/ui'
3
+
4
+ /**
5
+ * Available visual variants for the Tag component
6
+ *
7
+ * Each variant applies predefined color schemes and styling through CSS custom properties:
8
+ * - `alpha`: Early development stage indicator (warning colors)
9
+ * - `beta`: Pre-release version indicator (warning colors)
10
+ * - `stable`: Production-ready release indicator (success colors)
11
+ * - `production`: Live production environment indicator (primary colors)
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * <Tag variant="beta">Beta Feature</Tag>
16
+ * <Tag variant="stable">v2.0</Tag>
17
+ * ```
18
+ */
19
+ export type TagVariant = 'alpha' | 'beta' | 'stable' | 'production'
20
+
21
+ /**
22
+ * Props for the Tag component
23
+ *
24
+ * @property {React.ReactNode} children - REQUIRED - Content to display inside the tag (typically short text or version numbers)
25
+ * @property {'span' | 'p'} [elm='span'] - HTML element to render the tag as. Use 'p' for block-level tags, 'span' for inline
26
+ * @property {'note' | 'status'} [role='note'] - ARIA role for semantic meaning and screen reader announcements
27
+ * @property {TagVariant} [variant] - Visual variant that applies predefined color schemes (alpha, beta, stable, production)
28
+ * @property {string} [id] - Optional HTML id attribute for the tag element
29
+ * @property {React.CSSProperties} [styles] - Inline styles to apply to the tag
30
+ * @property {string} [classes] - CSS class names to apply to the tag
31
+ * @property {string} [aria-label] - Accessible label for screen readers. Recommended when tag content needs additional context
32
+ * @property {string} [aria-labelledby] - Reference to element(s) that label the tag for additional context
33
+ * @property {string} [aria-describedby] - Reference to element(s) that describe the tag for additional context
34
+ * @property {'off' | 'polite' | 'assertive'} [aria-live] - ARIA live region politeness setting for dynamic content (use with role="status")
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * // Basic tag with variant
39
+ * <Tag variant="beta">Beta</Tag>
40
+ *
41
+ * // Tag with custom element and role
42
+ * <Tag elm="p" role="status" variant="stable">v1.0 Released</Tag>
43
+ *
44
+ * // Tag with accessibility label
45
+ * <Tag variant="production" aria-label="Currently in production environment">
46
+ * Production
47
+ * </Tag>
48
+ * ```
49
+ */
50
+ export type TagProps = {
51
+ /**
52
+ * HTML element to display the tag as
53
+ * - 'span': Inline tag (default) - use for inline placement within text flow
54
+ * - 'p': Block-level tag - use when tag should appear as a distinct block element
55
+ */
56
+ elm?: 'span' | 'p'
57
+ /**
58
+ * ARIA role for semantic meaning and screen reader behavior
59
+ * - 'note': For static, informational tags (default) - screen readers read once
60
+ * - 'status': For dynamic tags that update - screen readers announce changes to users
61
+ *
62
+ * Choose 'status' when tag content changes dynamically (e.g., real-time status updates).
63
+ * Choose 'note' for static tags that provide contextual information.
64
+ */
65
+ role?: 'note' | 'status'
66
+ /**
67
+ * Visual variant that applies predefined color schemes
68
+ * - 'alpha': Early development stage (amber background with warning symbol ⚠)
69
+ * - 'beta': Pre-release version (amber background with warning symbol ⚠)
70
+ * - 'stable': Production-ready release (green background with checkmark ✓)
71
+ * - 'production': Live production environment (blue background with live indicator ●)
72
+ *
73
+ * Each variant includes both color AND visual symbols for accessibility (WCAG 1.4.1).
74
+ */
75
+ variant?: TagVariant
76
+ /**
77
+ * Content to display inside the tag
78
+ * REQUIRED - Ensures tag has meaningful content for all users including screen reader users
79
+ * Typically short text, version numbers, or status labels
80
+ */
81
+ children: React.ReactNode
82
+ /**
83
+ * Accessible label for screen readers
84
+ * Provides additional context beyond visible text
85
+ */
86
+ 'aria-label'?: string
87
+ /**
88
+ * Reference to element(s) that label the tag
89
+ * Alternative to aria-label for programmatic labeling
90
+ */
91
+ 'aria-labelledby'?: string
92
+ /**
93
+ * Reference to element(s) that describe the tag
94
+ * Provides additional descriptive context
95
+ */
96
+ 'aria-describedby'?: string
97
+ /**
98
+ * ARIA live region politeness setting
99
+ * - 'off': Updates not announced (default)
100
+ * - 'polite': Announces when user is idle (recommended for role="status")
101
+ * - 'assertive': Announces immediately (use sparingly for critical updates)
102
+ */
103
+ 'aria-live'?: 'off' | 'polite' | 'assertive'
104
+ } & Omit<
105
+ React.ComponentProps<typeof UI>,
106
+ 'as' | 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-live'
107
+ >
@@ -0,0 +1,199 @@
1
+ # Migration Guide: Heading → Title
2
+
3
+ ## Summary of Changes
4
+
5
+ The `Heading` component has been refactored and renamed to `Title` with improved API design, better accessibility, and enhanced developer experience.
6
+
7
+ ## What Changed?
8
+
9
+ ### 1. Component Name
10
+ - **Old**: `Heading`
11
+ - **New**: `Title`
12
+
13
+ ### 2. Prop Names
14
+ - **Old**: `type` prop
15
+ - **New**: `level` prop (more semantic)
16
+
17
+ ### 3. Default Behavior
18
+ - **Old**: Default heading level was `h3`
19
+ - **New**: Default heading level is `h2`
20
+
21
+ ### 4. Improvements Added
22
+ - ✅ **Memoization**: Component wrapped with `React.memo` for performance
23
+ - ✅ **Ref Forwarding**: Properly typed refs for DOM access
24
+ - ✅ **Better TypeScript**: Comprehensive JSDoc comments for IDE support
25
+ - ✅ **Enhanced Accessibility**: Better WCAG 2.1 AA compliance documentation
26
+ - ✅ **Comprehensive Tests**: 31 test cases covering all functionality
27
+ - ✅ **Storybook Stories**: Interactive examples with accessibility checks
28
+
29
+ ## Quick Migration
30
+
31
+ ### Before (Deprecated)
32
+ ```tsx
33
+ import { Heading } from '@fpkit/acss';
34
+
35
+ <Heading type="h2">Section Title</Heading>
36
+ <Heading type="h3" id="subsection">Subsection</Heading>
37
+ <Heading>Default (renders as h3)</Heading>
38
+ ```
39
+
40
+ ### After (Recommended)
41
+ ```tsx
42
+ import { Title } from '@fpkit/acss';
43
+
44
+ <Title level="h2">Section Title</Title>
45
+ <Title level="h3" id="subsection">Subsection</Title>
46
+ <Title>Default (renders as h2)</Title>
47
+ ```
48
+
49
+ ## Backwards Compatibility
50
+
51
+ The `Heading` component **still works** and provides 100% backwards compatibility:
52
+
53
+ - ✅ All existing code continues to function
54
+ - ⚠️ Console warnings in development mode
55
+ - 📅 Will be removed in **v3.0.0**
56
+
57
+ ### Deprecation Warnings
58
+
59
+ In development mode, you'll see:
60
+
61
+ ```
62
+ [@fpkit/acss] Heading component is deprecated and will be removed in v3.0.0.
63
+ Please use the Title component instead.
64
+ Migration: <Heading type="h2"> → <Title level="h2">
65
+ See documentation: https://fpkit.dev/components/title
66
+ ```
67
+
68
+ ## Migration Steps
69
+
70
+ ### Step 1: Find All Usages
71
+
72
+ ```bash
73
+ # Search for all Heading imports
74
+ grep -r "import.*Heading" src/
75
+
76
+ # Search for all Heading components in JSX
77
+ grep -r "<Heading" src/
78
+ ```
79
+
80
+ ### Step 2: Update Imports
81
+
82
+ ```tsx
83
+ // Before:
84
+ import { Heading } from '@fpkit/acss';
85
+
86
+ // After:
87
+ import { Title } from '@fpkit/acss';
88
+ ```
89
+
90
+ ### Step 3: Update Component Names and Props
91
+
92
+ ```tsx
93
+ // Before:
94
+ <Heading type="h1">Page Title</Heading>
95
+ <Heading type="h2">Section</Heading>
96
+
97
+ // After:
98
+ <Title level="h1">Page Title</Title>
99
+ <Title level="h2">Section</Title>
100
+ ```
101
+
102
+ ### Step 4: Handle Default Behavior
103
+
104
+ If you relied on the default `h3` behavior:
105
+
106
+ ```tsx
107
+ // Before (default was h3):
108
+ <Heading>Title</Heading>
109
+
110
+ // After (default is now h2):
111
+ // Option 1: Accept new default
112
+ <Title>Title</Title>
113
+
114
+ // Option 2: Explicitly use h3
115
+ <Title level="h3">Title</Title>
116
+ ```
117
+
118
+ ### Step 5: Test Your Changes
119
+
120
+ ```bash
121
+ # Run your tests
122
+ npm test
123
+
124
+ # Check your app visually
125
+ npm start
126
+ ```
127
+
128
+ ## Automated Migration (Optional)
129
+
130
+ You can use find-and-replace, but **review changes carefully**:
131
+
132
+ ```bash
133
+ # Replace component name (dry run first!)
134
+ find src/ -type f \( -name "*.tsx" -o -name "*.ts" \) \
135
+ -exec sed -i '' 's/<Heading/<Title/g' {} +
136
+
137
+ # Replace prop name
138
+ find src/ -type f \( -name "*.tsx" -o -name "*.ts" \) \
139
+ -exec sed -i '' 's/type="/level="/g' {} +
140
+
141
+ # Update imports
142
+ find src/ -type f \( -name "*.tsx" -o -name "*.ts" \) \
143
+ -exec sed -i '' 's/import { Heading }/import { Title }/g' {} +
144
+ ```
145
+
146
+ ⚠️ **Warning**: The `type=` replacement may affect other components. Review all changes!
147
+
148
+ ## Type Safety
149
+
150
+ Both components are fully typed:
151
+
152
+ ```tsx
153
+ import { Title, type TitleProps, type HeadingLevel } from '@fpkit/acss';
154
+
155
+ // Custom wrapper
156
+ interface SectionTitleProps extends TitleProps {
157
+ emphasized?: boolean;
158
+ }
159
+
160
+ const SectionTitle = ({ emphasized, ...props }: SectionTitleProps) => (
161
+ <Title
162
+ {...props}
163
+ className={emphasized ? 'font-bold' : ''}
164
+ />
165
+ );
166
+ ```
167
+
168
+ ## Benefits of Migrating
169
+
170
+ ### Better API
171
+ - `level` is more semantic than `type`
172
+ - Clearer intent in code
173
+
174
+ ### Performance
175
+ - Memoization reduces unnecessary re-renders
176
+ - Better for large component trees
177
+
178
+ ### Developer Experience
179
+ - Comprehensive JSDoc comments
180
+ - Better IDE autocomplete
181
+ - Improved error messages
182
+
183
+ ### Accessibility
184
+ - Enhanced WCAG 2.1 documentation
185
+ - Better examples for screen reader support
186
+ - Improved heading hierarchy guidance
187
+
188
+ ## Need Help?
189
+
190
+ - 📚 [Full Documentation](README.md)
191
+ - 📖 [Storybook Examples](?path=/docs/fp-react-components-title--docs)
192
+ - 🐛 [Report Issues](https://github.com/fpkit/acss/issues)
193
+
194
+ ## Timeline
195
+
196
+ - **v2.x**: Both components available, `Heading` deprecated
197
+ - **v3.0.0**: `Heading` component removed (breaking change)
198
+
199
+ Migrate before v3.0.0 to avoid breaking changes!