@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,87 +1,134 @@
1
1
  import React from 'react'
2
2
  import UI from '../ui'
3
+ import { useDisabledState } from '../../hooks/use-disabled-state'
3
4
 
4
- export type TextareaProps = React.ComponentProps<'textarea'> &
5
- React.ComponentProps<typeof UI>
5
+ export type { TextareaProps } from './form.types'
6
+ import type { TextareaProps } from './form.types'
6
7
 
7
8
  /**
8
- * Textarea component.
9
+ * Textarea component - Accessible multi-line text input with validation support
9
10
  *
10
- * @param value - The value of the textarea.
11
- * @param rows - The number of rows.
12
- * @param cols - The number of columns.
13
- * @param id - The id of the textarea.
14
- * @param name - The name of the textarea.
15
- * @param required - Whether the textarea is required.
16
- * @param disabled - Whether the textarea is disabled.
17
- * @param readOnly - Whether the textarea is read only.
18
- * @param onBlur - Blur event handler.
19
- * @param onPointerDown - Pointer down event handler.
20
- * @param onChange - Change event handler.
21
- * @param ref - Ref for the textarea.
22
- * @param styles - Styles object for the textarea.
23
- * @param textareaRef - Ref specifically for the textarea element.
24
- * @param props - Other props.
11
+ * A flexible textarea component that supports validation states, proper ARIA attributes
12
+ * for accessibility, and an onEnter handler for keyboard interactions. The onEnter handler
13
+ * fires only on Enter without Shift, allowing Shift+Enter to create new lines as expected.
14
+ *
15
+ * @component
16
+ * @example
17
+ * // Basic textarea
18
+ * <Textarea
19
+ * id="message"
20
+ * name="message"
21
+ * placeholder="Enter your message"
22
+ * required
23
+ * />
24
+ *
25
+ * @example
26
+ * // Textarea with Enter key handler for quick submission
27
+ * <Textarea
28
+ * id="comment"
29
+ * name="comment"
30
+ * onEnter={(e) => handleSubmit()}
31
+ * placeholder="Press Enter to submit, Shift+Enter for new line"
32
+ * />
33
+ *
34
+ * @param {TextareaProps} props - Component props
35
+ * @returns {JSX.Element} Textarea element with proper accessibility attributes
36
+ *
37
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard.html|WCAG 2.1.1 Keyboard}
38
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html|WCAG 4.1.2 Name, Role, Value}
25
39
  */
26
- export const Textarea = ({
27
- id,
28
- classes,
29
- value,
30
- rows = 5,
31
- cols = 25,
32
- name,
33
- required,
34
- disabled,
35
- readOnly,
36
- onBlur,
37
- onPointerDown,
38
- onChange,
39
- ref,
40
- styles,
41
- placeholder,
42
- ...props
43
- }: TextareaProps) => {
44
- const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {
45
- if (onChange && !disabled) {
46
- onChange?.(e)
47
- }
48
- }
40
+ export const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(
41
+ (
42
+ {
43
+ id,
44
+ classes,
45
+ value,
46
+ rows = 5,
47
+ cols = 25,
48
+ name,
49
+ required,
50
+ disabled,
51
+ readOnly,
52
+ validationState = 'none',
53
+ errorMessage,
54
+ hintText,
55
+ onBlur,
56
+ onPointerDown,
57
+ onChange,
58
+ onKeyDown,
59
+ onEnter,
60
+ styles,
61
+ placeholder,
62
+ ...props
63
+ },
64
+ ref
65
+ ) => {
66
+ // Use the disabled state hook with enhanced API for automatic className merging
67
+ const { disabledProps, handlers } = useDisabledState<HTMLTextAreaElement>(
68
+ disabled,
69
+ {
70
+ handlers: {
71
+ onChange,
72
+ onBlur,
73
+ onPointerDown,
74
+ onKeyDown: (e: React.KeyboardEvent<HTMLTextAreaElement>) => {
75
+ // Handle Enter key press for accessibility
76
+ // Only triggers onEnter when Enter is pressed WITHOUT Shift modifier
77
+ // This allows Shift+Enter to create new lines as expected
78
+ if (e.key === 'Enter' && !e.shiftKey && onEnter) {
79
+ onEnter(e)
80
+ }
81
+ // Always call consumer's onKeyDown if provided
82
+ if (onKeyDown) {
83
+ onKeyDown(e)
84
+ }
85
+ },
86
+ },
87
+ // Automatic className merging - hook combines disabled class with user classes
88
+ className: classes,
89
+ }
90
+ )
49
91
 
50
- const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {
51
- if (onBlur && !disabled) {
52
- onBlur?.(e)
53
- }
54
- }
92
+ // Determine aria-invalid based on validation state
93
+ const isInvalid = validationState === 'invalid'
55
94
 
56
- const handlePointerDown = (e: React.PointerEvent<HTMLTextAreaElement>) => {
57
- if (onPointerDown && !disabled) {
58
- onPointerDown?.(e)
95
+ // Generate describedby IDs for error and hint text
96
+ const describedByIds: string[] = []
97
+ if (errorMessage && id) {
98
+ describedByIds.push(`${id}-error`)
99
+ }
100
+ if (hintText && id) {
101
+ describedByIds.push(`${id}-hint`)
59
102
  }
103
+ const ariaDescribedBy =
104
+ describedByIds.length > 0 ? describedByIds.join(' ') : undefined
105
+
106
+ return (
107
+ <UI
108
+ as="textarea"
109
+ id={id}
110
+ name={name}
111
+ rows={rows}
112
+ cols={cols}
113
+ styles={styles}
114
+ className={disabledProps.className}
115
+ data-style="textarea"
116
+ required={required}
117
+ value={value}
118
+ aria-disabled={disabledProps['aria-disabled']}
119
+ aria-required={required}
120
+ aria-invalid={isInvalid}
121
+ aria-describedby={ariaDescribedBy}
122
+ readOnly={readOnly}
123
+ {...handlers}
124
+ ref={ref}
125
+ placeholder={placeholder || `${required ? '*' : ''} Message`}
126
+ {...props}
127
+ />
128
+ )
60
129
  }
130
+ )
61
131
 
62
- return (
63
- <UI
64
- as="textarea"
65
- id={id}
66
- name={name}
67
- rows={rows}
68
- cols={cols}
69
- styles={styles}
70
- className={classes}
71
- data-style="textarea"
72
- required={required}
73
- value={value}
74
- aria-disabled={disabled}
75
- readOnly={readOnly}
76
- onChange={handleChange}
77
- onBlur={handleBlur}
78
- onPointerDown={handlePointerDown}
79
- ref={ref}
80
- placeholder={placeholder || `${required ? '*' : ''} Message`}
81
- {...props}
82
- />
83
- )
84
- }
132
+ Textarea.displayName = 'Textarea'
85
133
 
86
134
  export default Textarea
87
- Textarea.displayName = 'Textarea'
@@ -1,28 +1,55 @@
1
1
  import React from 'react'
2
2
  import { ComponentProps } from '../types'
3
3
 
4
- type PolymorphicRef<C extends React.ElementType> =
5
- React.ComponentPropsWithRef<C>['ref']
4
+ /**
5
+ * @deprecated This type is deprecated. Use `PolymorphicRef` from './ui.tsx' instead.
6
+ * The UI component provides better type safety and accessibility features.
7
+ */
8
+ type PolymorphicRef<C extends React.ElementType> = React.Ref<
9
+ React.ElementRef<C>
10
+ >
6
11
 
12
+ /**
13
+ * @deprecated This type is deprecated. Use `AsProp` from './ui.tsx' instead.
14
+ * The UI component provides better type safety and accessibility features.
15
+ */
7
16
  type AsProp<C extends React.ElementType> = {
8
17
  as?: C
9
18
  }
10
19
 
20
+ /**
21
+ * @deprecated This type is deprecated. Use `PropsToOmit` from './ui.tsx' instead.
22
+ * The UI component provides better type safety and accessibility features.
23
+ */
11
24
  type PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P)
12
25
 
26
+ /**
27
+ * @deprecated This type is deprecated. Use `PolymorphicComponentProp` from './ui.tsx' instead.
28
+ * The UI component provides better type safety and accessibility features.
29
+ */
13
30
  type PolymorphicComponentProp<
14
31
  C extends React.ElementType,
32
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
15
33
  Props = {},
16
34
  > = React.PropsWithChildren<Props & AsProp<C>> &
17
35
  Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>
18
36
 
37
+ /**
38
+ * @deprecated This type is deprecated. Use `PolymorphicComponentPropWithRef` from './ui.tsx' instead.
39
+ * The UI component provides better type safety and accessibility features.
40
+ */
19
41
  type PolymorphicComponentPropWithRef<
20
42
  C extends React.ElementType,
43
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
21
44
  Props = {},
22
45
  > = PolymorphicComponentProp<C, Props> & {
23
- ref?: PolymorphicRef<C>
46
+ ref?: PolymorphicRef<C> | React.ForwardedRef<React.ElementRef<C>>
24
47
  }
25
48
 
49
+ /**
50
+ * @deprecated This type is deprecated. Use `UIProps` from './ui.tsx' instead.
51
+ * The UI component provides better type safety and accessibility features.
52
+ */
26
53
  type FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<
27
54
  C,
28
55
  {
@@ -32,21 +59,62 @@ type FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<
32
59
  }
33
60
  >
34
61
 
35
- /*
62
+ /**
36
63
  * FPComponent type definition
37
64
  *
38
- * Defines the component function signature for the FP component.
65
+ * @deprecated This type is deprecated. Use the `UI` component from './ui.tsx' instead.
66
+ * The UI component provides enhanced accessibility documentation, better type safety,
67
+ * and comprehensive WCAG 2.1 AA compliance guidance.
39
68
  *
40
69
  * @typeParam C - The HTML element type to render
41
70
  * @param props - The component props
42
71
  * @returns React component
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Migration from FP to UI
76
+ * // Before:
77
+ * import FP from '@fpkit/acss/components/fp';
78
+ * <FP as="button" styles={{ padding: '1rem' }}>Click me</FP>
79
+ *
80
+ * // After:
81
+ * import UI from '@fpkit/acss/components/ui';
82
+ * <UI as="button" styles={{ padding: '1rem' }}>Click me</UI>
83
+ * ```
43
84
  */
44
- type FPComponent = <C extends React.ElementType = 'span'>(
45
- props: FPProps<C>,
46
- ) => React.ReactElement | any
85
+ type FPComponent = {
86
+ <C extends React.ElementType = 'span'>(
87
+ props: FPProps<C>,
88
+ ): React.ReactElement | null
89
+ displayName?: string
90
+ }
47
91
 
48
92
  /**
49
- * FP component is a polymorphic component that renders an HTML element with optional styles.
93
+ * @deprecated **DEPRECATED:** This component is deprecated and will be removed in a future version.
94
+ * Please use the `UI` component from `./ui.tsx` instead.
95
+ *
96
+ * The UI component is a drop-in replacement with the same API but provides:
97
+ * - Enhanced accessibility documentation and WCAG 2.1 AA compliance guidance
98
+ * - Better TypeScript type safety with detailed JSDoc comments
99
+ * - Comprehensive examples for accessible component patterns
100
+ * - More robust style merging with defaultStyles support
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * // Migration Guide
105
+ * // Before:
106
+ * import FP from '@fpkit/acss/components/fp';
107
+ * <FP as="button" styles={{ padding: '1rem' }} classes="btn">
108
+ * Click me
109
+ * </FP>
110
+ *
111
+ * // After:
112
+ * import UI from '@fpkit/acss/components/ui';
113
+ * <UI as="button" styles={{ padding: '1rem' }} classes="btn">
114
+ * Click me
115
+ * </UI>
116
+ * ```
117
+ *
50
118
  * @param {Object} props - Component props
51
119
  * @param {React.ElementType} props.as - The HTML element to render. Defaults to 'div'.
52
120
  * @param {boolean} props.renderStyles - Whether to render styles or not. Defaults to true.
@@ -55,7 +123,7 @@ type FPComponent = <C extends React.ElementType = 'span'>(
55
123
  * @param {React.ReactNode} props.children - The children to render inside the component.
56
124
  * @returns {React.ReactElement} - A React component that renders an HTML element with optional styles.
57
125
  */
58
- const FP: FPComponent = React.forwardRef(
126
+ const FP = React.forwardRef(
59
127
  <C extends React.ElementType>(
60
128
  { as, styles, classes, children, defaultStyles, ...props }: FPProps<C>,
61
129
  ref?: PolymorphicRef<C>,
@@ -70,7 +138,14 @@ const FP: FPComponent = React.forwardRef(
70
138
  </Component>
71
139
  )
72
140
  },
73
- )
141
+ ) as FPComponent
142
+
143
+ FP.displayName = 'FP'
144
+
145
+ /**
146
+ * @deprecated This interface is deprecated. Use the `UI` component from './ui.tsx' instead.
147
+ * The UI component provides better type safety and accessibility features.
148
+ */
74
149
  export interface BoxProps extends ComponentProps {
75
150
  renderStyles: true
76
151
  }
@@ -3,22 +3,62 @@ import { within, expect } from "storybook/test";
3
3
 
4
4
  import Heading from "./heading";
5
5
 
6
+ /**
7
+ * @deprecated This component is deprecated. Use Title component instead.
8
+ */
6
9
  const meta: Meta<typeof Heading> = {
7
- title: "FP.REACT Components/Heading",
10
+ title: "FP.REACT Components/Heading (Deprecated)",
8
11
  component: Heading,
9
- tags: ["version:1.0.0"],
12
+ tags: ["version:1.0.0", "deprecated"],
10
13
  parameters: {
11
14
  actions: { argTypesRegex: "^on.*" },
12
15
  docs: {
13
16
  description: {
14
- component: "Heading description here...",
17
+ component: `
18
+ # ⚠️ DEPRECATED: Use Title Component Instead
19
+
20
+ The \`Heading\` component is **deprecated** and will be removed in **v3.0.0**.
21
+
22
+ Please migrate to the new [\`Title\`](?path=/docs/fp-react-components-title--docs) component.
23
+
24
+ ## Migration Guide
25
+
26
+ \`\`\`tsx
27
+ // ❌ Old API (deprecated):
28
+ import { Heading } from '@fpkit/acss';
29
+ <Heading type="h2">Section Title</Heading>
30
+
31
+ // ✅ New API:
32
+ import { Title } from '@fpkit/acss';
33
+ <Title level="h2">Section Title</Title>
34
+ \`\`\`
35
+
36
+ ### Key Changes
37
+
38
+ 1. **Component Name**: \`Heading\` → \`Title\`
39
+ 2. **Prop Name**: \`type\` → \`level\`
40
+ 3. **Default Level**: Changed from \`h3\` to \`h2\` (update if you relied on the default)
41
+
42
+ ### Why the Change?
43
+
44
+ - **Better API**: \`level\` is more semantic than \`type\`
45
+ - **Improved Accessibility**: Enhanced WCAG 2.1 compliance
46
+ - **Better Documentation**: Comprehensive JSDoc comments
47
+ - **Performance**: Memoization to prevent unnecessary re-renders
48
+
49
+ ## Current Behavior
50
+
51
+ This component still works for backwards compatibility but will log deprecation warnings in development mode.
52
+
53
+ **Removal Timeline**: v3.0.0 (TBD)
54
+ `,
15
55
  },
16
56
  },
17
57
  },
18
58
  args: {
19
59
  children: "Default title",
20
60
  },
21
- } as Story;
61
+ } satisfies Meta<typeof Heading>;
22
62
 
23
63
  export default meta;
24
64
  type Story = StoryObj<typeof Heading>;
@@ -1,27 +1,93 @@
1
- import React from 'react'
2
- import UI from '#components/ui'
3
- import { type } from 'os'
1
+ import React from "react";
2
+ import Title from "#components/title/title";
4
3
 
4
+ /**
5
+ * @deprecated Use `Title` component instead. This component will be removed in v3.0.0.
6
+ *
7
+ * @remarks
8
+ * The `Heading` component has been deprecated in favor of the new `Title` component
9
+ * which offers improved API design and better accessibility features.
10
+ *
11
+ * **Migration Guide:**
12
+ * - Rename `Heading` → `Title`
13
+ * - Rename prop `type` → `level`
14
+ * - Default level changed from `h3` → `h2` (update if you relied on the default)
15
+ *
16
+ * @example
17
+ * // Before (deprecated):
18
+ * <Heading type="h2">Section Title</Heading>
19
+ *
20
+ * // After:
21
+ * <Title level="h2">Section Title</Title>
22
+ *
23
+ * @see {@link Title} for the new component
24
+ */
5
25
  export type TitleProps = {
6
- children: React.ReactNode
7
- type: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
8
- ui?: string
9
- } & React.ComponentProps<typeof UI>
26
+ /**
27
+ * @deprecated Use `level` prop on the `Title` component instead.
28
+ */
29
+ children: React.ReactNode;
10
30
 
11
- const Heading = ({
12
- type = 'h3',
13
- id,
14
- styles,
15
- ui,
16
- children,
17
- ...props
18
- }: TitleProps) => {
19
- return (
20
- <UI as={type} id={id} styles={styles} data-ui={ui} {...props}>
21
- {children}
22
- </UI>
23
- )
24
- }
31
+ /**
32
+ * @deprecated Use `level` prop on the `Title` component instead.
33
+ */
34
+ type?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
25
35
 
26
- export default Heading
27
- Heading.displayName = 'Heading'
36
+ /**
37
+ * @deprecated Use `ui` prop on the `Title` component.
38
+ */
39
+ ui?: string;
40
+ } & Omit<React.ComponentPropsWithoutRef<typeof Title>, 'level'>;
41
+
42
+ /**
43
+ * Heading - Deprecated component wrapper for Title.
44
+ *
45
+ * @deprecated Use {@link Title} component instead. Will be removed in v3.0.0.
46
+ *
47
+ * This component provides backwards compatibility for existing code using
48
+ * the old `Heading` component API. It forwards all props to the new `Title`
49
+ * component with appropriate prop name mapping.
50
+ *
51
+ * **Breaking Changes in v3.0.0:**
52
+ * - This component will be removed
53
+ * - Migrate to `Title` component before upgrading
54
+ *
55
+ * **Migration Steps:**
56
+ * 1. Replace all `<Heading>` imports with `<Title>`
57
+ * 2. Rename `type` prop to `level`
58
+ * 3. Review default behavior (default changed from h3 to h2)
59
+ *
60
+ * @example
61
+ * // Old API (still works but deprecated):
62
+ * import { Heading } from '@fpkit/acss';
63
+ * <Heading type="h2">Section</Heading>
64
+ *
65
+ * @example
66
+ * // New API (recommended):
67
+ * import { Title } from '@fpkit/acss';
68
+ * <Title level="h2">Section</Title>
69
+ *
70
+ * @param {TitleProps} props - Component props (maps old API to new)
71
+ * @returns {React.ReactElement} The rendered Title component
72
+ */
73
+ const Heading = React.forwardRef<HTMLHeadingElement, TitleProps>(
74
+ ({ type = "h3", ...props }, ref) => {
75
+ // Development warning for deprecated usage
76
+ if (process.env.NODE_ENV === "development") {
77
+ // eslint-disable-next-line no-console
78
+ console.warn(
79
+ `[@fpkit/acss] Heading component is deprecated and will be removed in v3.0.0. ` +
80
+ `Please use the Title component instead.\n` +
81
+ `Migration: <Heading type="${type}"> → <Title level="${type}">\n` +
82
+ `See documentation: https://fpkit.dev/components/title`
83
+ );
84
+ }
85
+
86
+ // Map old 'type' prop to new 'level' prop
87
+ return <Title level={type} ref={ref} {...props} />;
88
+ }
89
+ );
90
+
91
+ Heading.displayName = "Heading (Deprecated)";
92
+
93
+ export default Heading;