@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
package/libs/index.d.ts CHANGED
@@ -1,26 +1,330 @@
1
1
  export { Button, ButtonProps } from './components/button.js';
2
2
  export { Card, Content as CardContent, Footer as CardFooter, CardProps, Title as CardTitle } from './components/card.js';
3
3
  export { default as Field, FieldProps } from './components/form/fields.js';
4
- export { F as Box, F as FP, I as Input, a as InputProps } from './inputs-f3a216db.js';
4
+ export { default as Input } from './components/form/inputs.js';
5
5
  export { default as Icon, IconProps } from './components/icons/icon.js';
6
- import { F as FP } from './ui-9a6f9f8d.js';
7
- import React__default, { ReactNode } from 'react';
8
- export { default as Link, LinkProps, default as To } from './components/link/link.js';
9
- export { default as List, ListItemProps } from './components/list/list.js';
6
+ import React, { ReactNode } from 'react';
7
+ export { L as Link, a as LinkProps, L as To } from './link-5192f411.js';
8
+ export { List } from './components/list/list.js';
10
9
  export { Modal, ModalProps } from './components/modal.js';
11
10
  export { default as Popover, PopoverProps } from './components/popover/popover.js';
12
11
  export { RenderTable as TBL, TableProps } from './components/tables/table.js';
13
12
  export { Dialog } from './components/dialog/dialog.js';
14
- export { default as Nav, NavItem, NavItemProps, NavList, NavListProps, NavProps } from './components/nav/nav.js';
15
- export { default as Text, TextProps, Title } from './components/text/text.js';
16
- export { TitleProps } from './components/heading/heading.js';
17
- export { default as Textarea, TextareaProps } from './components/form/textarea.js';
18
- import { C as ComponentProps$1 } from './component-props-a8a2f97e.js';
19
- export { default as Breadcrumb } from './components/breadcrumbs/breadcrumb.js';
13
+ import { U as UI } from './ui-d01b50d4.js';
14
+ export { Nav, NavComponent, NavItem, NavItemProps, NavList, NavListProps, NavProps } from './components/nav/nav.js';
15
+ export { default as Text, TextProps } from './components/text/text.js';
16
+ export { b as Heading, H as HeadingLevel, T as Title, a as TitleProps } from './heading-7446cb46.js';
17
+ export { default as Textarea } from './components/form/textarea.js';
18
+ import { C as ComponentProps$1 } from './component-props-67d978a2.js';
19
+ export { default as Breadcrumb, BreadcrumbProps, CustomRoute, useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.js';
20
+ export { I as InputProps, T as TextareaProps } from './form.types-d25ebfac.js';
21
+ export { L as ListItemProps } from './list.types-d26de310.js';
20
22
 
21
- type ImageProps = React__default.ComponentProps<'img'> & React__default.ComponentProps<typeof FP>;
23
+ /**
24
+ * Props for the Img component.
25
+ *
26
+ * Extends native HTML img element attributes with additional functionality
27
+ * for responsive images, loading states, and error handling.
28
+ *
29
+ * ## Accessibility Guidelines (WCAG 2.1 AA)
30
+ *
31
+ * **Decorative Images:**
32
+ * Images that are purely visual decoration should have an empty alt attribute.
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * // ✅ Decorative image (border, background pattern, visual separator)
37
+ * <Img src="/decorative-border.png" alt="" />
38
+ * ```
39
+ *
40
+ * **Semantic Images:**
41
+ * Images that convey information or meaning must have descriptive alt text.
42
+ *
43
+ * @example
44
+ * ```tsx
45
+ * // ✅ Semantic image (charts, diagrams, photos with meaning)
46
+ * <Img
47
+ * src="/sales-chart.png"
48
+ * alt="Sales chart showing 30% growth in Q4 2024"
49
+ * />
50
+ * ```
51
+ *
52
+ * **Responsive Images:**
53
+ * Use srcset and sizes for responsive images to optimize performance.
54
+ *
55
+ * @example
56
+ * ```tsx
57
+ * // ✅ Responsive image with srcset
58
+ * <Img
59
+ * src="/photo.jpg"
60
+ * srcSet="/photo-320w.jpg 320w, /photo-640w.jpg 640w, /photo-1024w.jpg 1024w"
61
+ * sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
62
+ * alt="Team photo from annual conference"
63
+ * />
64
+ * ```
65
+ *
66
+ * @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html
67
+ */
68
+ interface ImgProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'placeholder'> {
69
+ /**
70
+ * The image source URL.
71
+ * @default '//'
72
+ */
73
+ src?: string;
74
+ /**
75
+ * Alternative text for the image.
76
+ * - **Empty string (`""`)** for decorative images
77
+ * - **Descriptive text** for semantic images that convey meaning
78
+ *
79
+ * @example
80
+ * ```tsx
81
+ * // Decorative
82
+ * <Img src="/border.png" alt="" />
83
+ *
84
+ * // Semantic
85
+ * <Img src="/logo.png" alt="Company logo" />
86
+ * ```
87
+ */
88
+ alt?: string;
89
+ /**
90
+ * Width of the image in pixels.
91
+ * @default 480
92
+ */
93
+ width?: number | string;
94
+ /**
95
+ * Height of the image in pixels.
96
+ * When not provided, defaults to 'auto'.
97
+ */
98
+ height?: number | string;
99
+ /**
100
+ * Inline styles to apply to the image.
101
+ */
102
+ styles?: React.CSSProperties;
103
+ /**
104
+ * Loading behavior for the image.
105
+ * - `"lazy"` (default): Defers loading until near viewport
106
+ * - `"eager"`: Loads immediately
107
+ *
108
+ * @default "lazy"
109
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#loading
110
+ */
111
+ loading?: 'eager' | 'lazy';
112
+ /**
113
+ * Fallback placeholder image URL to display on error.
114
+ * If not provided and image fails to load, a default placeholder is used.
115
+ *
116
+ * @example
117
+ * ```tsx
118
+ * <Img
119
+ * src="/photo.jpg"
120
+ * placeholder="/fallback.png"
121
+ * alt="User profile photo"
122
+ * />
123
+ * ```
124
+ */
125
+ placeholder?: string;
126
+ /**
127
+ * Hint for the browser to prioritize image fetching.
128
+ * - `"high"`: High priority (above-the-fold images)
129
+ * - `"low"` (default): Low priority
130
+ * - `"auto"`: Browser decides
131
+ *
132
+ * @default "low"
133
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#fetchpriority
134
+ */
135
+ fetchpriority?: 'high' | 'low' | 'auto';
136
+ /**
137
+ * Decoding hint for the browser.
138
+ * - `"async"`: Decode asynchronously (don't block rendering)
139
+ * - `"sync"`: Decode synchronously
140
+ * - `"auto"` (default): Browser decides
141
+ *
142
+ * @default "auto"
143
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#decoding
144
+ */
145
+ decoding?: 'sync' | 'async' | 'auto';
146
+ /**
147
+ * Responsive image sources with width descriptors.
148
+ * Allows browser to choose appropriate image based on viewport.
149
+ *
150
+ * @example
151
+ * ```tsx
152
+ * <Img
153
+ * src="/photo.jpg"
154
+ * srcSet="/photo-320w.jpg 320w, /photo-640w.jpg 640w"
155
+ * sizes="(max-width: 640px) 100vw, 640px"
156
+ * alt="Responsive image"
157
+ * />
158
+ * ```
159
+ *
160
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset
161
+ */
162
+ srcSet?: string;
163
+ /**
164
+ * Media conditions for responsive image sizing.
165
+ * Works with srcSet to determine which image to load.
166
+ *
167
+ * @example
168
+ * ```tsx
169
+ * sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 800px"
170
+ * ```
171
+ *
172
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#sizes
173
+ */
174
+ sizes?: string;
175
+ /**
176
+ * Callback fired when the image fails to load.
177
+ * The default SVG placeholder is still applied after calling this handler.
178
+ * Call `event.preventDefault()` to prevent the default fallback behavior.
179
+ *
180
+ * @param event - The error event
181
+ *
182
+ * @example
183
+ * ```tsx
184
+ * // Log error and show default placeholder
185
+ * <Img
186
+ * src="/photo.jpg"
187
+ * onError={(e) => console.error('Image failed to load', e)}
188
+ * alt="Photo"
189
+ * />
190
+ *
191
+ * // Prevent default and use custom fallback
192
+ * <Img
193
+ * src="/photo.jpg"
194
+ * onError={(e) => {
195
+ * e.preventDefault()
196
+ * e.currentTarget.src = '/custom-fallback.jpg'
197
+ * }}
198
+ * alt="Photo"
199
+ * />
200
+ * ```
201
+ */
202
+ onError?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
203
+ /**
204
+ * Callback fired when the image successfully loads.
205
+ *
206
+ * @param event - The load event
207
+ *
208
+ * @example
209
+ * ```tsx
210
+ * <Img
211
+ * src="/photo.jpg"
212
+ * onLoad={(e) => console.log('Image loaded successfully')}
213
+ * alt="Photo"
214
+ * />
215
+ * ```
216
+ */
217
+ onLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
218
+ }
219
+
220
+ /**
221
+ * Img - A semantic image component with accessibility and performance best practices.
222
+ *
223
+ * This component wraps the native `<img>` element with enhanced features:
224
+ * - **Responsive images** via optional srcset/sizes
225
+ * - **Lazy loading** by default for performance
226
+ * - **Error handling** with configurable fallback placeholders
227
+ * - **Type safety** with full TypeScript support
228
+ *
229
+ * ## Accessibility Patterns (WCAG 2.1 AA)
230
+ *
231
+ * ### Decorative Images
232
+ * Images that are purely visual decoration should use an empty alt attribute.
233
+ * These images are typically borders, patterns, or visual separators.
234
+ *
235
+ * @example
236
+ * ```tsx
237
+ * // ✅ GOOD: Decorative border image
238
+ * <Img src="/decorative-border.png" alt="" />
239
+ *
240
+ * // ✅ GOOD: Background pattern
241
+ * <Img src="/pattern.svg" alt="" loading="eager" />
242
+ * ```
243
+ *
244
+ * ### Semantic Images
245
+ * Images that convey information must have descriptive alt text that explains
246
+ * the content and purpose of the image.
247
+ *
248
+ * @example
249
+ * ```tsx
250
+ * // ✅ GOOD: Informative image with descriptive alt
251
+ * <Img
252
+ * src="/sales-chart.png"
253
+ * alt="Sales chart showing 30% revenue growth in Q4 2024"
254
+ * />
255
+ *
256
+ * // ✅ GOOD: Product photo with context
257
+ * <Img
258
+ * src="/laptop.jpg"
259
+ * alt="Silver MacBook Pro 14-inch on wooden desk"
260
+ * />
261
+ * ```
262
+ *
263
+ * ## Performance Optimization
264
+ *
265
+ * ### Lazy Loading
266
+ * By default, images use lazy loading to improve page load performance.
267
+ * Only use `loading="eager"` for above-the-fold images.
268
+ *
269
+ * @example
270
+ * ```tsx
271
+ * // ✅ GOOD: Lazy load below-the-fold image
272
+ * <Img src="/photo.jpg" alt="Photo" />
273
+ *
274
+ * // ✅ GOOD: Eager load hero image
275
+ * <Img
276
+ * src="/hero.jpg"
277
+ * alt="Hero banner"
278
+ * loading="eager"
279
+ * fetchpriority="high"
280
+ * />
281
+ * ```
282
+ *
283
+ * ### Responsive Images
284
+ * Use srcset and sizes for responsive images to serve appropriate image sizes
285
+ * based on viewport width, improving performance and bandwidth usage.
286
+ *
287
+ * @example
288
+ * ```tsx
289
+ * // ✅ GOOD: Responsive image with multiple sizes
290
+ * <Img
291
+ * src="/photo.jpg"
292
+ * srcSet="/photo-320w.jpg 320w, /photo-640w.jpg 640w, /photo-1024w.jpg 1024w"
293
+ * sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 800px"
294
+ * alt="Responsive image adapts to viewport"
295
+ * />
296
+ * ```
297
+ *
298
+ * ## Error Handling
299
+ *
300
+ * @example
301
+ * ```tsx
302
+ * // ✅ GOOD: Custom placeholder on error
303
+ * <Img
304
+ * src="/photo.jpg"
305
+ * placeholder="/fallback.png"
306
+ * alt="User profile photo"
307
+ * />
308
+ *
309
+ * // ✅ GOOD: Custom error handler
310
+ * <Img
311
+ * src="/photo.jpg"
312
+ * onError={(e) => {
313
+ * console.error('Image failed to load')
314
+ * logToAnalytics('image_error', { src: e.currentTarget.src })
315
+ * }}
316
+ * alt="Photo"
317
+ * />
318
+ * ```
319
+ *
320
+ * @param {ImgProps} props - Component props extending native img attributes
321
+ * @returns {React.ReactElement} Image element with enhanced functionality
322
+ *
323
+ * @see {@link ImgProps} for complete prop documentation
324
+ * @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html
325
+ */
22
326
  declare const Img: {
23
- ({ src, alt, width, height, styles, loading, placeholder, fetchpriority, decoding, imgLoaded, imgError, ...props }: ImageProps): React__default.JSX.Element;
327
+ ({ src, alt, width, height, styles, loading, placeholder, fetchpriority, decoding, srcSet, sizes, onError, onLoad, ...props }: ImgProps): React.JSX.Element;
24
328
  displayName: string;
25
329
  };
26
330
 
@@ -42,7 +346,7 @@ interface TextToSpeechComponentProps {
42
346
  /** The language to be used for speech synthesis. */
43
347
  language?: string;
44
348
  /** Player label */
45
- label?: string | React__default.ReactNode;
349
+ label?: string | React.ReactNode;
46
350
  /** Callback function to be called when speech ends. */
47
351
  onEnd?: () => void;
48
352
  }
@@ -51,22 +355,22 @@ interface TextToSpeechComponentProps {
51
355
  * @param {TextToSpeechComponentProps} props - The props for the component.
52
356
  * @returns {JSX.Element} The rendered TextToSpeechComponent.
53
357
  */
54
- declare const TextToSpeech: React__default.FC<TextToSpeechComponentProps>;
358
+ declare const TextToSpeech: React.FC<TextToSpeechComponentProps>;
55
359
 
56
- type ComponentProps = React__default.ComponentProps<typeof FP>;
360
+ type ComponentProps = React.ComponentProps<typeof UI>;
57
361
  /**
58
362
  * Renders children elements without any wrapping component.
59
363
  * Can be used as a placeholder when no semantic landmark is needed.
60
364
  */
61
365
  declare const Landmarks: {
62
- (children?: React__default.FC): React__default.JSX.Element;
366
+ (children?: React.FC): React.JSX.Element;
63
367
  displayName: string;
64
- Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React__default.JSX.Element;
65
- Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
66
- Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React__default.JSX.Element;
67
- Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
68
- Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
69
- Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
368
+ Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React.JSX.Element;
369
+ Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
370
+ Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React.JSX.Element;
371
+ Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
372
+ Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
373
+ Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
70
374
  };
71
375
  type HeaderProps = {
72
376
  headerBackground?: ReactNode;
@@ -80,7 +384,7 @@ type HeaderProps = {
80
384
  * @param styles - Optional styles object.
81
385
  * @param props - Other props.
82
386
  */
83
- declare const Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React__default.JSX.Element;
387
+ declare const Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React.JSX.Element;
84
388
  /**
85
389
  * Main component.
86
390
  *
@@ -90,7 +394,7 @@ declare const Header: ({ id, children, headerBackground, styles, classes, ...pro
90
394
  * @param styles - Optional styles object.
91
395
  * @param props - Other props.
92
396
  */
93
- declare const Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
397
+ declare const Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
94
398
  /**
95
399
  * Footer component that renders a footer element with a section element inside.
96
400
  * @param {ReactNode} children - Child elements to render inside the section element.
@@ -98,8 +402,8 @@ declare const Main: ({ id, children, styles, classes, ...props }: ComponentProps
98
402
  * @param props - Additional props to pass to the footer element.
99
403
  * @returns A React component that renders a footer element with a section element inside.
100
404
  */
101
- declare const Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React__default.JSX.Element;
102
- declare const Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
405
+ declare const Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React.JSX.Element;
406
+ declare const Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
103
407
  /**
104
408
  * Section component that renders a section element.
105
409
  *
@@ -107,7 +411,7 @@ declare const Aside: ({ id, children, styles, classes, ...props }: ComponentProp
107
411
  * @param styles - CSS styles to apply to the section.
108
412
  * @param props - Other props.
109
413
  */
110
- declare const Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
414
+ declare const Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
111
415
  /**
112
416
  * Article component renders an HTML <article> element.
113
417
  *
@@ -115,71 +419,540 @@ declare const Section: ({ id, children, styles, classes, ...props }: ComponentPr
115
419
  * @param styles - CSS styles to apply to the article.
116
420
  * @param props - Additional props to pass to the article element.
117
421
  */
118
- declare const Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React__default.JSX.Element;
422
+ declare const Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React.JSX.Element;
423
+
424
+ /**
425
+ * Props for the Badge component
426
+ *
427
+ * @property {React.ReactNode} children - Content to display inside the badge (typically numbers or short text)
428
+ * @property {string} [id] - Optional HTML id attribute for the badge element
429
+ * @property {React.CSSProperties} [styles] - Inline styles to apply to the badge
430
+ * @property {string} [classes] - CSS class names to apply to the badge
431
+ * @property {'rounded'} [variant] - Visual variant of the badge. Use 'rounded' for circular badges (fixed size with ellipsis for overflow)
432
+ * @property {string} [aria-label] - Accessible label for screen readers. Required for icon-only or number-only badges
433
+ * @property {'status' | 'note'} [role] - ARIA role for the badge. Defaults to 'status' for dynamic content
434
+ */
435
+ type BadgeProps = {
436
+ /**
437
+ * Content to display inside the badge (typically numbers or short text)
438
+ */
439
+ children?: React.ReactNode;
440
+ /**
441
+ * Visual variant of the badge
442
+ * - 'rounded': Circular badge style
443
+ */
444
+ variant?: 'rounded';
445
+ } & React.ComponentProps<typeof UI>;
446
+ /**
447
+ * Badge - A small label component for displaying status, counts, or notifications
448
+ *
449
+ * The Badge component is used to display supplementary information alongside other content,
450
+ * such as notification counts, status indicators, or labels. It renders as a semantic `<sup>`
451
+ * element with a nested `<span>` required for the component's styling architecture.
452
+ *
453
+ * ## Styling Architecture
454
+ *
455
+ * The Badge uses a nested structure (`<sup><span>content</span></sup>`) which is required
456
+ * for the SCSS styling system. The outer `<sup>` element provides positioning context,
457
+ * while the inner `<span>` receives the visual styling (background, padding, border-radius).
458
+ *
459
+ * ## Rounded Variant Behavior
460
+ *
461
+ * The `rounded` variant creates a perfect circular badge with fixed dimensions (1.5625rem).
462
+ * Content that exceeds the available space will be truncated with an ellipsis (...).
463
+ * **Best practice**: Format large numbers yourself (e.g., pass "99+" instead of "999").
464
+ *
465
+ * ## Accessibility Considerations
466
+ *
467
+ * - **Semantic HTML**: Uses `<sup>` (superscript) element for proper positioning context
468
+ * - **ARIA Role**: Defaults to `role="status"` for dynamic badges (e.g., unread counts)
469
+ * - **Accessible Names**: For icon-only or number-only badges, provide an `aria-label`
470
+ * to give context (e.g., "3 unread messages" instead of just "3")
471
+ * - **Live Regions**: The `role="status"` makes badges announce updates to screen readers
472
+ *
473
+ * @param {BadgeProps} props - Component props
474
+ * @returns {React.ReactElement} A Badge component
475
+ *
476
+ * @example
477
+ * // Basic badge with notification count
478
+ * <p>
479
+ * Messages
480
+ * <Badge aria-label="3 unread messages">3</Badge>
481
+ * </p>
482
+ *
483
+ * @example
484
+ * // Rounded badge variant (perfect circle)
485
+ * <p>
486
+ * Notifications
487
+ * <Badge variant="rounded" aria-label="99 or more notifications">99+</Badge>
488
+ * </p>
489
+ *
490
+ * @example
491
+ * // Status badge with custom styling
492
+ * <p>
493
+ * Active Users
494
+ * <Badge styles={{ backgroundColor: 'green', color: 'white' }}>21</Badge>
495
+ * </p>
496
+ *
497
+ * @example
498
+ * // ✅ GOOD: Accessible badge with descriptive label and formatted content
499
+ * <Badge variant="rounded" aria-label="12 items in cart">12</Badge>
500
+ *
501
+ * @example
502
+ * // ✅ GOOD: Large numbers formatted by developer
503
+ * <Badge variant="rounded" aria-label="More than 99 notifications">99+</Badge>
504
+ *
505
+ * @example
506
+ * // ❌ BAD: Number-only badge without context for screen readers
507
+ * <Badge>12</Badge>
508
+ */
509
+ declare const Badge: {
510
+ ({ id, styles, classes, children, variant, ...props }: BadgeProps): React.JSX.Element;
511
+ displayName: string;
512
+ };
119
513
 
514
+ /**
515
+ * Available visual variants for the Tag component
516
+ *
517
+ * Each variant applies predefined color schemes and styling through CSS custom properties:
518
+ * - `alpha`: Early development stage indicator (warning colors)
519
+ * - `beta`: Pre-release version indicator (warning colors)
520
+ * - `stable`: Production-ready release indicator (success colors)
521
+ * - `production`: Live production environment indicator (primary colors)
522
+ *
523
+ * @example
524
+ * ```tsx
525
+ * <Tag variant="beta">Beta Feature</Tag>
526
+ * <Tag variant="stable">v2.0</Tag>
527
+ * ```
528
+ */
529
+ type TagVariant = 'alpha' | 'beta' | 'stable' | 'production';
530
+ /**
531
+ * Props for the Tag component
532
+ *
533
+ * @property {React.ReactNode} children - REQUIRED - Content to display inside the tag (typically short text or version numbers)
534
+ * @property {'span' | 'p'} [elm='span'] - HTML element to render the tag as. Use 'p' for block-level tags, 'span' for inline
535
+ * @property {'note' | 'status'} [role='note'] - ARIA role for semantic meaning and screen reader announcements
536
+ * @property {TagVariant} [variant] - Visual variant that applies predefined color schemes (alpha, beta, stable, production)
537
+ * @property {string} [id] - Optional HTML id attribute for the tag element
538
+ * @property {React.CSSProperties} [styles] - Inline styles to apply to the tag
539
+ * @property {string} [classes] - CSS class names to apply to the tag
540
+ * @property {string} [aria-label] - Accessible label for screen readers. Recommended when tag content needs additional context
541
+ * @property {string} [aria-labelledby] - Reference to element(s) that label the tag for additional context
542
+ * @property {string} [aria-describedby] - Reference to element(s) that describe the tag for additional context
543
+ * @property {'off' | 'polite' | 'assertive'} [aria-live] - ARIA live region politeness setting for dynamic content (use with role="status")
544
+ *
545
+ * @example
546
+ * ```tsx
547
+ * // Basic tag with variant
548
+ * <Tag variant="beta">Beta</Tag>
549
+ *
550
+ * // Tag with custom element and role
551
+ * <Tag elm="p" role="status" variant="stable">v1.0 Released</Tag>
552
+ *
553
+ * // Tag with accessibility label
554
+ * <Tag variant="production" aria-label="Currently in production environment">
555
+ * Production
556
+ * </Tag>
557
+ * ```
558
+ */
120
559
  type TagProps = {
121
- /** HTML element to display the badge as span or p */
560
+ /**
561
+ * HTML element to display the tag as
562
+ * - 'span': Inline tag (default) - use for inline placement within text flow
563
+ * - 'p': Block-level tag - use when tag should appear as a distinct block element
564
+ */
122
565
  elm?: 'span' | 'p';
123
- /** Aria role for the component - conditional */
124
- role: 'note' | 'status';
125
- } & React__default.ComponentProps<typeof FP>;
566
+ /**
567
+ * ARIA role for semantic meaning and screen reader behavior
568
+ * - 'note': For static, informational tags (default) - screen readers read once
569
+ * - 'status': For dynamic tags that update - screen readers announce changes to users
570
+ *
571
+ * Choose 'status' when tag content changes dynamically (e.g., real-time status updates).
572
+ * Choose 'note' for static tags that provide contextual information.
573
+ */
574
+ role?: 'note' | 'status';
575
+ /**
576
+ * Visual variant that applies predefined color schemes
577
+ * - 'alpha': Early development stage (amber background with warning symbol ⚠)
578
+ * - 'beta': Pre-release version (amber background with warning symbol ⚠)
579
+ * - 'stable': Production-ready release (green background with checkmark ✓)
580
+ * - 'production': Live production environment (blue background with live indicator ●)
581
+ *
582
+ * Each variant includes both color AND visual symbols for accessibility (WCAG 1.4.1).
583
+ */
584
+ variant?: TagVariant;
585
+ /**
586
+ * Content to display inside the tag
587
+ * REQUIRED - Ensures tag has meaningful content for all users including screen reader users
588
+ * Typically short text, version numbers, or status labels
589
+ */
590
+ children: React.ReactNode;
591
+ /**
592
+ * Accessible label for screen readers
593
+ * Provides additional context beyond visible text
594
+ */
595
+ 'aria-label'?: string;
596
+ /**
597
+ * Reference to element(s) that label the tag
598
+ * Alternative to aria-label for programmatic labeling
599
+ */
600
+ 'aria-labelledby'?: string;
601
+ /**
602
+ * Reference to element(s) that describe the tag
603
+ * Provides additional descriptive context
604
+ */
605
+ 'aria-describedby'?: string;
606
+ /**
607
+ * ARIA live region politeness setting
608
+ * - 'off': Updates not announced (default)
609
+ * - 'polite': Announces when user is idle (recommended for role="status")
610
+ * - 'assertive': Announces immediately (use sparingly for critical updates)
611
+ */
612
+ 'aria-live'?: 'off' | 'polite' | 'assertive';
613
+ } & Omit<React.ComponentProps<typeof UI>, 'as' | 'aria-label' | 'aria-labelledby' | 'aria-describedby' | 'aria-live'>;
614
+
615
+ /**
616
+ * Tag - A small inline label component for displaying status, versions, or environment indicators
617
+ *
618
+ * The Tag component is used to highlight supplementary information such as release stages
619
+ * (alpha, beta, stable), environment indicators (production), or version labels. It renders
620
+ * as either a `<span>` (inline) or `<p>` (block) element with semantic ARIA roles.
621
+ *
622
+ * ## Design Philosophy
623
+ *
624
+ * Tags serve as visual and semantic indicators that:
625
+ * - Communicate the state or stage of features, releases, or environments
626
+ * - Provide quick visual scanning through color-coded variants
627
+ * - Maintain accessibility through proper ARIA roles and labels
628
+ *
629
+ * ## Styling Architecture
630
+ *
631
+ * The Tag component uses CSS custom properties (CSS variables) for theming and styling,
632
+ * allowing for easy customization through the `data-tag` attribute. Each variant
633
+ * (alpha, beta, stable, production) applies predefined color schemes defined in SCSS.
634
+ *
635
+ * ## Accessibility Considerations (WCAG 2.1 AA Compliance)
636
+ *
637
+ * - **Semantic Roles**: Uses `role="note"` for static tags or `role="status"` for dynamic content
638
+ * - `role="note"`: Read once by screen readers, suitable for static labels (default)
639
+ * - `role="status"`: Announces updates to screen readers, use for changing status indicators
640
+ * - **Color Independence**: Don't rely solely on color to convey meaning - include text labels
641
+ * - **Text Alternatives**: For icon-only tags, provide `aria-label` for screen reader context
642
+ * - **Contrast Ratios**: All variants meet WCAG AA contrast requirements (4.5:1 for normal text)
643
+ * - **Live Regions**: When using `role="status"`, tag becomes a live region for accessibility
644
+ *
645
+ * ## When to Use Each Role
646
+ *
647
+ * **Use `role="note"` (default) when:**
648
+ * - Displaying static version numbers (e.g., "v2.1.0")
649
+ * - Showing fixed environment indicators (e.g., "Beta Feature")
650
+ * - Labeling unchanging content categories
651
+ *
652
+ * **Use `role="status"` when:**
653
+ * - Indicating real-time status that may change (e.g., "Processing" → "Complete")
654
+ * - Displaying live build/deployment states
655
+ * - Showing dynamic feature flags that toggle
656
+ *
657
+ * @param {TagProps} props - Component props
658
+ * @returns {React.ReactElement} A Tag component
659
+ *
660
+ * @example
661
+ * // Basic tag with beta variant (default inline span)
662
+ * <Tag variant="beta">Beta</Tag>
663
+ *
664
+ * @example
665
+ * // Production environment indicator as block element
666
+ * <Tag elm="p" variant="production">Production Environment</Tag>
667
+ *
668
+ * @example
669
+ * // Dynamic status tag with live updates
670
+ * <Tag role="status" variant="stable">
671
+ * {isDeployed ? 'Deployed' : 'Deploying...'}
672
+ * </Tag>
673
+ *
674
+ * @example
675
+ * // Tag with custom styling and accessibility label
676
+ * <Tag
677
+ * variant="alpha"
678
+ * aria-label="Alpha version - may contain bugs"
679
+ * styles={{ fontSize: '0.75rem' }}
680
+ * >
681
+ * Alpha
682
+ * </Tag>
683
+ *
684
+ * @example
685
+ * // ✅ GOOD: Clear text content with variant for visual enhancement
686
+ * <Tag variant="stable">v2.0 Stable</Tag>
687
+ *
688
+ * @example
689
+ * // ✅ GOOD: Dynamic status with proper role
690
+ * <Tag role="status" variant="production">{deploymentStatus}</Tag>
691
+ *
692
+ * @example
693
+ * // ✅ GOOD: Accessible tag with descriptive label
694
+ * <Tag variant="beta" aria-label="Beta feature - feedback welcome">
695
+ * Beta
696
+ * </Tag>
697
+ *
698
+ * @example
699
+ * // ❌ BAD: Relying only on color without text
700
+ * <Tag variant="production" aria-label="Production" />
701
+ *
702
+ * @example
703
+ * // ❌ BAD: Using status role for static content
704
+ * <Tag role="status" variant="stable">v1.0</Tag>
705
+ */
126
706
  declare const Tag: {
127
- ({ elm, role, children, styles, ...props }: TagProps): React__default.JSX.Element;
707
+ ({ elm, role, variant, children, styles, ...props }: TagProps): React.JSX.Element;
128
708
  displayName: string;
129
709
  };
130
710
 
131
711
  declare const Caption: {
132
- ({ children, ...props }: ComponentProps$1): React__default.JSX.Element;
712
+ ({ children, ...props }: ComponentProps$1): React.JSX.Element;
133
713
  displayName: string;
134
714
  };
135
715
  declare const Thead: {
136
- ({ children, ...props }: ComponentProps$1): React__default.JSX.Element;
716
+ ({ children, ...props }: ComponentProps$1): React.JSX.Element;
137
717
  displayName: string;
138
718
  };
139
719
  declare const Tbody: {
140
- ({ children, ...props }: ComponentProps$1): React__default.JSX.Element;
720
+ ({ children, ...props }: ComponentProps$1): React.JSX.Element;
141
721
  displayName: string;
142
722
  };
143
723
  declare const Tr: {
144
- ({ children, ...props }: ComponentProps$1): React__default.JSX.Element;
724
+ ({ children, ...props }: ComponentProps$1): React.JSX.Element;
145
725
  displayName: string;
146
726
  };
147
727
  declare const Td: {
148
- ({ children, ...props }: ComponentProps$1): React__default.JSX.Element;
728
+ ({ children, ...props }: ComponentProps$1): React.JSX.Element;
149
729
  displayName: string;
150
730
  };
151
731
  declare const Table: {
152
- ({ id, dataStyle, children, ...props }: ComponentProps$1): React__default.JSX.Element;
732
+ ({ id, dataStyle, children, ...props }: ComponentProps$1): React.JSX.Element;
153
733
  displayName: string;
154
734
  };
155
735
 
736
+ /**
737
+ * Props for the Details component.
738
+ *
739
+ * Combines native HTML details element props with custom styling and interaction handlers.
740
+ * The Details component uses the native `<details>` element for progressive disclosure,
741
+ * providing built-in keyboard support and semantic HTML.
742
+ *
743
+ * @example
744
+ * ```tsx
745
+ * <Details
746
+ * summary="Click to expand"
747
+ * icon={<ChevronIcon />}
748
+ * onToggle={(e) => console.log('Toggled:', e.currentTarget.open)}
749
+ * >
750
+ * <p>Hidden content revealed when opened</p>
751
+ * </Details>
752
+ * ```
753
+ */
156
754
  type DetailsProps = {
157
755
  /**
158
- * The summary text shown for the details.
159
- * Required.
756
+ * The summary text or element shown in the clickable header.
757
+ * This is always visible and acts as the toggle control.
758
+ *
759
+ * @required
760
+ * @example
761
+ * ```tsx
762
+ * summary="Shipping Information"
763
+ * // or
764
+ * summary={<><Icon /> Shipping Information</>}
765
+ * ```
160
766
  */
161
- summary: React__default.ReactNode;
767
+ summary: React.ReactNode;
162
768
  /**
163
- * The aria-label element for accessibility.
769
+ * Optional icon displayed before the summary text.
770
+ * Commonly used for chevron/arrow indicators.
771
+ *
772
+ * @example
773
+ * ```tsx
774
+ * icon={<ChevronDownIcon />}
775
+ * ```
164
776
  */
165
- ariaLabel: string;
166
- } & React__default.ComponentProps<"details"> & Partial<React__default.ComponentProps<typeof FP>>;
167
- /**3
168
- * Details component props interface.
777
+ icon?: React.ReactNode;
778
+ /**
779
+ * Accessible label for screen readers.
780
+ * If not provided, the native `<details>` semantic will be used.
781
+ *
782
+ * Note: Native `<details>` elements are already semantic and announced properly
783
+ * by screen readers. Only provide this if you need to override the default behavior.
784
+ *
785
+ * @optional
786
+ * @example
787
+ * ```tsx
788
+ * ariaLabel="Product details section"
789
+ * ```
790
+ */
791
+ ariaLabel?: string;
792
+ /**
793
+ * Groups multiple details elements into an accordion where only one can be open.
794
+ * Multiple details elements with the same `name` will behave as a mutually exclusive group.
795
+ *
796
+ * @optional
797
+ * @example
798
+ * ```tsx
799
+ * <Details name="faq-accordion" summary="Question 1">...</Details>
800
+ * <Details name="faq-accordion" summary="Question 2">...</Details>
801
+ * ```
802
+ */
803
+ name?: string;
804
+ } & React.ComponentProps<"details"> & Partial<React.ComponentProps<typeof UI>>;
805
+
806
+ /**
807
+ * Details - A progressive disclosure component using native HTML `<details>` element.
169
808
  *
170
- * @param {React.CSSProperties} [styles] - CSS styles object.
171
- * @param {string} [classes] - Classnames string.
172
- * @param {boolean} [open] - Whether the details is open.
173
- * @param {(e: React.PointerEvent<HTMLDetailsElement>) => void} [onToggle] - onToggle callback.
174
- * @param {(e: React.PointerEvent<HTMLDetailsElement>) => void} [onPointerDown] - onPointerDown callback.
175
- * @param {ReactNode} children - The content inside the details.
176
- * @param {string} [ariaLabel] - aria-label for accessibility.
177
- * @param {React.Ref<any>} [ref] - Ref object.
178
- * @param {Object} props - Other props.
809
+ * This component wraps the native `<details>` and `<summary>` elements to provide
810
+ * an accessible, semantic way to show and hide content. It supports accordion behavior
811
+ * through the `name` attribute and includes proper keyboard navigation out of the box.
812
+ *
813
+ * ## Key Features:
814
+ * - **Semantic HTML**: Uses native `<details>` for built-in accessibility
815
+ * - **Keyboard Support**: Space/Enter to toggle, fully accessible by default
816
+ * - **Accordion Mode**: Group multiple details with `name` for exclusive expansion
817
+ * - **Customizable**: Supports icons, custom styles, and event handlers
818
+ *
819
+ * ## Accessibility:
820
+ * - ✅ WCAG 2.1 AA compliant using semantic HTML
821
+ * - ✅ Native keyboard support (Space, Enter)
822
+ * - ✅ Screen reader compatible (announced as "disclosure" or "expandable")
823
+ * - ✅ Focus indicators automatically applied via CSS
824
+ * - ✅ `aria-expanded` managed automatically by browser
825
+ *
826
+ * @example
827
+ * ```tsx
828
+ * // Basic usage
829
+ * <Details summary="Click to expand">
830
+ * <p>Hidden content here</p>
831
+ * </Details>
832
+ * ```
833
+ *
834
+ * @example
835
+ * ```tsx
836
+ * // With icon and custom styling
837
+ * <Details
838
+ * summary="Shipping Information"
839
+ * icon={<ChevronDownIcon />}
840
+ * classes="custom-details"
841
+ * onToggle={(e) => console.log('Open:', e.currentTarget.open)}
842
+ * >
843
+ * <p>Ships within 2-3 business days</p>
844
+ * </Details>
845
+ * ```
846
+ *
847
+ * @example
848
+ * ```tsx
849
+ * // Accordion mode - only one open at a time
850
+ * <Details name="faq" summary="Question 1">Answer 1</Details>
851
+ * <Details name="faq" summary="Question 2">Answer 2</Details>
852
+ * <Details name="faq" summary="Question 3">Answer 3</Details>
853
+ * ```
179
854
  */
180
- declare const Details: {
181
- ({ summary, icon, styles, classes, ariaLabel, name, open, onPointerDown, onToggle, children, ref, ...props }: DetailsProps): React__default.JSX.Element;
182
- displayName: string;
855
+ declare const Details: React.ForwardRefExoticComponent<Omit<DetailsProps, "ref"> & React.RefAttributes<HTMLDetailsElement>>;
856
+
857
+ /**
858
+ * @deprecated This type is deprecated. Use `PolymorphicRef` from './ui.tsx' instead.
859
+ * The UI component provides better type safety and accessibility features.
860
+ */
861
+ type PolymorphicRef<C extends React.ElementType> = React.Ref<React.ElementRef<C>>;
862
+ /**
863
+ * @deprecated This type is deprecated. Use `AsProp` from './ui.tsx' instead.
864
+ * The UI component provides better type safety and accessibility features.
865
+ */
866
+ type AsProp<C extends React.ElementType> = {
867
+ as?: C;
183
868
  };
869
+ /**
870
+ * @deprecated This type is deprecated. Use `PropsToOmit` from './ui.tsx' instead.
871
+ * The UI component provides better type safety and accessibility features.
872
+ */
873
+ type PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P);
874
+ /**
875
+ * @deprecated This type is deprecated. Use `PolymorphicComponentProp` from './ui.tsx' instead.
876
+ * The UI component provides better type safety and accessibility features.
877
+ */
878
+ type PolymorphicComponentProp<C extends React.ElementType, Props = {}> = React.PropsWithChildren<Props & AsProp<C>> & Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>;
879
+ /**
880
+ * @deprecated This type is deprecated. Use `PolymorphicComponentPropWithRef` from './ui.tsx' instead.
881
+ * The UI component provides better type safety and accessibility features.
882
+ */
883
+ type PolymorphicComponentPropWithRef<C extends React.ElementType, Props = {}> = PolymorphicComponentProp<C, Props> & {
884
+ ref?: PolymorphicRef<C> | React.ForwardedRef<React.ElementRef<C>>;
885
+ };
886
+ /**
887
+ * @deprecated This type is deprecated. Use `UIProps` from './ui.tsx' instead.
888
+ * The UI component provides better type safety and accessibility features.
889
+ */
890
+ type FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<C, {
891
+ renderStyles?: boolean;
892
+ styles?: React.CSSProperties;
893
+ classes?: string;
894
+ }>;
895
+ /**
896
+ * FPComponent type definition
897
+ *
898
+ * @deprecated This type is deprecated. Use the `UI` component from './ui.tsx' instead.
899
+ * The UI component provides enhanced accessibility documentation, better type safety,
900
+ * and comprehensive WCAG 2.1 AA compliance guidance.
901
+ *
902
+ * @typeParam C - The HTML element type to render
903
+ * @param props - The component props
904
+ * @returns React component
905
+ *
906
+ * @example
907
+ * ```typescript
908
+ * // Migration from FP to UI
909
+ * // Before:
910
+ * import FP from '@fpkit/acss/components/fp';
911
+ * <FP as="button" styles={{ padding: '1rem' }}>Click me</FP>
912
+ *
913
+ * // After:
914
+ * import UI from '@fpkit/acss/components/ui';
915
+ * <UI as="button" styles={{ padding: '1rem' }}>Click me</UI>
916
+ * ```
917
+ */
918
+ type FPComponent = {
919
+ <C extends React.ElementType = 'span'>(props: FPProps<C>): React.ReactElement | null;
920
+ displayName?: string;
921
+ };
922
+ /**
923
+ * @deprecated **DEPRECATED:** This component is deprecated and will be removed in a future version.
924
+ * Please use the `UI` component from `./ui.tsx` instead.
925
+ *
926
+ * The UI component is a drop-in replacement with the same API but provides:
927
+ * - Enhanced accessibility documentation and WCAG 2.1 AA compliance guidance
928
+ * - Better TypeScript type safety with detailed JSDoc comments
929
+ * - Comprehensive examples for accessible component patterns
930
+ * - More robust style merging with defaultStyles support
931
+ *
932
+ * @example
933
+ * ```typescript
934
+ * // Migration Guide
935
+ * // Before:
936
+ * import FP from '@fpkit/acss/components/fp';
937
+ * <FP as="button" styles={{ padding: '1rem' }} classes="btn">
938
+ * Click me
939
+ * </FP>
940
+ *
941
+ * // After:
942
+ * import UI from '@fpkit/acss/components/ui';
943
+ * <UI as="button" styles={{ padding: '1rem' }} classes="btn">
944
+ * Click me
945
+ * </UI>
946
+ * ```
947
+ *
948
+ * @param {Object} props - Component props
949
+ * @param {React.ElementType} props.as - The HTML element to render. Defaults to 'div'.
950
+ * @param {boolean} props.renderStyles - Whether to render styles or not. Defaults to true.
951
+ * @param {Object} props.styles - The styles to apply to the component.
952
+ * @param {Object} props.defaultStyles - The default styles to apply to the component.
953
+ * @param {React.ReactNode} props.children - The children to render inside the component.
954
+ * @returns {React.ReactElement} - A React component that renders an HTML element with optional styles.
955
+ */
956
+ declare const FP: FPComponent;
184
957
 
185
- export { Article, Aside, Caption, ComponentProps$1 as ComponentProps, Details, Footer, Header, ImageProps, Img, Landmarks, Main, Section, Table, Tag, TagProps, Tbody, Td, TextToSpeech, Thead, Tr };
958
+ export { Article, Aside, Badge, BadgeProps, FP as Box, Caption, ComponentProps$1 as ComponentProps, Details, FP, Footer, Header, Img, ImgProps, Landmarks, Main, Section, Table, Tag, TagProps, TagVariant, Tbody, Td, TextToSpeech, Thead, Tr };