@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
@@ -0,0 +1,554 @@
1
+ import React from "react";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { describe, it, expect, vi } from "vitest";
4
+ import List from "./list";
5
+
6
+ describe("List Component", () => {
7
+ describe("Basic Rendering", () => {
8
+ it("renders an unordered list by default", () => {
9
+ render(
10
+ <List>
11
+ <List.ListItem>Item 1</List.ListItem>
12
+ <List.ListItem>Item 2</List.ListItem>
13
+ </List>
14
+ );
15
+
16
+ const list = screen.getByRole("list");
17
+ expect(list.tagName).toBe("UL");
18
+ });
19
+
20
+ it("renders an ordered list when type='ol'", () => {
21
+ render(
22
+ <List type="ol">
23
+ <List.ListItem>First</List.ListItem>
24
+ <List.ListItem>Second</List.ListItem>
25
+ </List>
26
+ );
27
+
28
+ const list = screen.getByRole("list");
29
+ expect(list.tagName).toBe("OL");
30
+ });
31
+
32
+ it("renders a definition list when type='dl'", () => {
33
+ render(
34
+ <List type="dl">
35
+ <List.ListItem type="dt">Term</List.ListItem>
36
+ <List.ListItem type="dd">Definition</List.ListItem>
37
+ </List>
38
+ );
39
+
40
+ const term = screen.getByText("Term");
41
+ const definition = screen.getByText("Definition");
42
+
43
+ expect(term.tagName).toBe("DT");
44
+ expect(definition.tagName).toBe("DD");
45
+ });
46
+
47
+ it("renders children correctly", () => {
48
+ render(
49
+ <List>
50
+ <List.ListItem>Test Item 1</List.ListItem>
51
+ <List.ListItem>Test Item 2</List.ListItem>
52
+ <List.ListItem>Test Item 3</List.ListItem>
53
+ </List>
54
+ );
55
+
56
+ expect(screen.getByText("Test Item 1")).toBeInTheDocument();
57
+ expect(screen.getByText("Test Item 2")).toBeInTheDocument();
58
+ expect(screen.getByText("Test Item 3")).toBeInTheDocument();
59
+ });
60
+ });
61
+
62
+ describe("ListItem Component", () => {
63
+ it("renders a list item (li) by default", () => {
64
+ render(
65
+ <List>
66
+ <List.ListItem>Default item</List.ListItem>
67
+ </List>
68
+ );
69
+
70
+ const item = screen.getByText("Default item");
71
+ expect(item.tagName).toBe("LI");
72
+ });
73
+
74
+ it("renders a definition term (dt) when type='dt'", () => {
75
+ render(
76
+ <List type="dl">
77
+ <List.ListItem type="dt">Term</List.ListItem>
78
+ </List>
79
+ );
80
+
81
+ const item = screen.getByText("Term");
82
+ expect(item.tagName).toBe("DT");
83
+ });
84
+
85
+ it("renders a definition description (dd) when type='dd'", () => {
86
+ render(
87
+ <List type="dl">
88
+ <List.ListItem type="dd">Description</List.ListItem>
89
+ </List>
90
+ );
91
+
92
+ const item = screen.getByText("Description");
93
+ expect(item.tagName).toBe("DD");
94
+ });
95
+
96
+ it("accepts custom id prop", () => {
97
+ render(
98
+ <List>
99
+ <List.ListItem id="custom-item">Item with ID</List.ListItem>
100
+ </List>
101
+ );
102
+
103
+ const item = screen.getByText("Item with ID");
104
+ expect(item).toHaveAttribute("id", "custom-item");
105
+ });
106
+
107
+ it("accepts custom classes prop", () => {
108
+ render(
109
+ <List>
110
+ <List.ListItem classes="custom-class">Styled item</List.ListItem>
111
+ </List>
112
+ );
113
+
114
+ const item = screen.getByText("Styled item");
115
+ expect(item).toHaveClass("custom-class");
116
+ });
117
+
118
+ it("accepts custom styles prop", () => {
119
+ render(
120
+ <List>
121
+ <List.ListItem styles={{ paddingLeft: "1rem" }}>Styled item</List.ListItem>
122
+ </List>
123
+ );
124
+
125
+ const item = screen.getByText("Styled item");
126
+ expect(item).toHaveStyle({ paddingLeft: "1rem" });
127
+ });
128
+ });
129
+
130
+ describe("Props and Attributes", () => {
131
+ it("applies variant via data-variant attribute", () => {
132
+ render(
133
+ <List variant="inline">
134
+ <List.ListItem>Item</List.ListItem>
135
+ </List>
136
+ );
137
+
138
+ const list = screen.getByRole("list");
139
+ expect(list).toHaveAttribute("data-variant", "inline");
140
+ });
141
+
142
+ it("applies custom CSS classes", () => {
143
+ render(
144
+ <List classes="custom-list-class">
145
+ <List.ListItem>Item</List.ListItem>
146
+ </List>
147
+ );
148
+
149
+ const list = screen.getByRole("list");
150
+ expect(list).toHaveClass("custom-list-class");
151
+ });
152
+
153
+ it("applies inline styles", () => {
154
+ render(
155
+ <List styles={{ marginTop: "2rem" }}>
156
+ <List.ListItem>Item</List.ListItem>
157
+ </List>
158
+ );
159
+
160
+ const list = screen.getByRole("list");
161
+ expect(list).toHaveStyle({ marginTop: "2rem" });
162
+ });
163
+
164
+ it("applies custom id", () => {
165
+ render(
166
+ <List id="main-list">
167
+ <List.ListItem>Item</List.ListItem>
168
+ </List>
169
+ );
170
+
171
+ const list = screen.getByRole("list");
172
+ expect(list).toHaveAttribute("id", "main-list");
173
+ });
174
+
175
+ it("supports role override for accessibility", () => {
176
+ render(
177
+ <List variant="none" role="list">
178
+ <List.ListItem>Item</List.ListItem>
179
+ </List>
180
+ );
181
+
182
+ const list = screen.getByRole("list");
183
+ expect(list).toHaveAttribute("role", "list");
184
+ });
185
+
186
+ it("supports aria-label", () => {
187
+ render(
188
+ <List aria-label="Navigation menu">
189
+ <List.ListItem>Home</List.ListItem>
190
+ </List>
191
+ );
192
+
193
+ const list = screen.getByRole("list", { name: "Navigation menu" });
194
+ expect(list).toBeInTheDocument();
195
+ });
196
+
197
+ it("supports aria-labelledby", () => {
198
+ render(
199
+ <div>
200
+ <h2 id="list-heading">Features</h2>
201
+ <List aria-labelledby="list-heading">
202
+ <List.ListItem>Feature 1</List.ListItem>
203
+ </List>
204
+ </div>
205
+ );
206
+
207
+ const list = screen.getByRole("list");
208
+ expect(list).toHaveAttribute("aria-labelledby", "list-heading");
209
+ });
210
+ });
211
+
212
+ describe("Nested Lists", () => {
213
+ it("renders nested unordered lists", () => {
214
+ render(
215
+ <List>
216
+ <List.ListItem>
217
+ Parent item
218
+ <List>
219
+ <List.ListItem>Child item 1</List.ListItem>
220
+ <List.ListItem>Child item 2</List.ListItem>
221
+ </List>
222
+ </List.ListItem>
223
+ </List>
224
+ );
225
+
226
+ const lists = screen.getAllByRole("list");
227
+ expect(lists).toHaveLength(2); // Parent and nested list
228
+ });
229
+
230
+ it("renders nested ordered lists", () => {
231
+ render(
232
+ <List type="ol">
233
+ <List.ListItem>
234
+ Step 1
235
+ <List type="ol">
236
+ <List.ListItem>Sub-step 1.1</List.ListItem>
237
+ <List.ListItem>Sub-step 1.2</List.ListItem>
238
+ </List>
239
+ </List.ListItem>
240
+ </List>
241
+ );
242
+
243
+ const lists = screen.getAllByRole("list");
244
+ expect(lists).toHaveLength(2);
245
+ lists.forEach((list) => {
246
+ expect(list.tagName).toBe("OL");
247
+ });
248
+ });
249
+
250
+ it("renders mixed nested list types", () => {
251
+ render(
252
+ <List type="ul">
253
+ <List.ListItem>
254
+ Parent
255
+ <List type="ol">
256
+ <List.ListItem>Nested ordered</List.ListItem>
257
+ </List>
258
+ </List.ListItem>
259
+ </List>
260
+ );
261
+
262
+ const lists = screen.getAllByRole("list");
263
+ expect(lists).toHaveLength(2);
264
+ expect(lists[0].tagName).toBe("UL");
265
+ expect(lists[1].tagName).toBe("OL");
266
+ });
267
+ });
268
+
269
+ describe("Ref Forwarding", () => {
270
+ it("forwards ref to List component", () => {
271
+ const ref = vi.fn();
272
+
273
+ render(
274
+ <List ref={ref}>
275
+ <List.ListItem>Item</List.ListItem>
276
+ </List>
277
+ );
278
+
279
+ expect(ref).toHaveBeenCalled();
280
+ const refValue = ref.mock.calls[0][0];
281
+ expect(refValue).toBeInstanceOf(HTMLUListElement);
282
+ });
283
+
284
+ it("forwards ref to ordered list", () => {
285
+ const ref = vi.fn();
286
+
287
+ render(
288
+ <List type="ol" ref={ref}>
289
+ <List.ListItem>Item</List.ListItem>
290
+ </List>
291
+ );
292
+
293
+ expect(ref).toHaveBeenCalled();
294
+ const refValue = ref.mock.calls[0][0];
295
+ expect(refValue).toBeInstanceOf(HTMLOListElement);
296
+ });
297
+
298
+ it("forwards ref to definition list", () => {
299
+ const ref = vi.fn();
300
+
301
+ render(
302
+ <List type="dl" ref={ref}>
303
+ <List.ListItem type="dt">Term</List.ListItem>
304
+ </List>
305
+ );
306
+
307
+ expect(ref).toHaveBeenCalled();
308
+ const refValue = ref.mock.calls[0][0];
309
+ expect(refValue).toBeInstanceOf(HTMLDListElement);
310
+ });
311
+
312
+ it("forwards ref to ListItem", () => {
313
+ const ref = vi.fn();
314
+
315
+ render(
316
+ <List>
317
+ <List.ListItem ref={ref}>Item</List.ListItem>
318
+ </List>
319
+ );
320
+
321
+ expect(ref).toHaveBeenCalled();
322
+ const refValue = ref.mock.calls[0][0];
323
+ expect(refValue).toBeInstanceOf(HTMLLIElement);
324
+ });
325
+ });
326
+
327
+ describe("Compound Component Pattern", () => {
328
+ it("List.ListItem is attached to List", () => {
329
+ expect(List.ListItem).toBeDefined();
330
+ expect(typeof List.ListItem).toBe("object"); // forwardRef returns an object
331
+ });
332
+
333
+ it("works with List.ListItem syntax", () => {
334
+ render(
335
+ <List>
336
+ <List.ListItem>Item 1</List.ListItem>
337
+ <List.ListItem>Item 2</List.ListItem>
338
+ </List>
339
+ );
340
+
341
+ expect(screen.getByText("Item 1")).toBeInTheDocument();
342
+ expect(screen.getByText("Item 2")).toBeInTheDocument();
343
+ });
344
+ });
345
+
346
+ describe("Display Names", () => {
347
+ it("List has correct displayName", () => {
348
+ expect(List.displayName).toBe("List");
349
+ });
350
+
351
+ it("ListItem has correct displayName", () => {
352
+ expect(List.ListItem.displayName).toBe("ListItem");
353
+ });
354
+ });
355
+
356
+ describe("Accessibility", () => {
357
+ it("renders with proper ARIA attributes", () => {
358
+ render(
359
+ <List aria-label="Product features">
360
+ <List.ListItem>Feature 1</List.ListItem>
361
+ </List>
362
+ );
363
+
364
+ const list = screen.getByRole("list", { name: "Product features" });
365
+ expect(list).toBeInTheDocument();
366
+ });
367
+
368
+ it("supports role override for styled lists", () => {
369
+ render(
370
+ <List variant="none" role="list">
371
+ <List.ListItem>Item 1</List.ListItem>
372
+ </List>
373
+ );
374
+
375
+ const list = screen.getByRole("list");
376
+ expect(list).toHaveAttribute("role", "list");
377
+ });
378
+
379
+ it("maintains semantic structure with nested lists", () => {
380
+ render(
381
+ <List aria-label="Parent list">
382
+ <List.ListItem>
383
+ Parent
384
+ <List>
385
+ <List.ListItem>Nested item</List.ListItem>
386
+ </List>
387
+ </List.ListItem>
388
+ </List>
389
+ );
390
+
391
+ const lists = screen.getAllByRole("list");
392
+ expect(lists).toHaveLength(2); // Parent and nested list
393
+ });
394
+
395
+ it("renders definition lists with proper semantics", () => {
396
+ render(
397
+ <List type="dl">
398
+ <List.ListItem type="dt">Term</List.ListItem>
399
+ <List.ListItem type="dd">Definition</List.ListItem>
400
+ </List>
401
+ );
402
+
403
+ const term = screen.getByText("Term");
404
+ const definition = screen.getByText("Definition");
405
+
406
+ expect(term.tagName).toBe("DT");
407
+ expect(definition.tagName).toBe("DD");
408
+ });
409
+ });
410
+
411
+ describe("Edge Cases", () => {
412
+ it("renders with no children", () => {
413
+ // @ts-expect-error - Testing edge case where children is missing
414
+ render(<List />);
415
+ const list = screen.getByRole("list");
416
+ expect(list).toBeInTheDocument();
417
+ expect(list).toBeEmptyDOMElement();
418
+ });
419
+
420
+ it("renders with single child", () => {
421
+ render(
422
+ <List>
423
+ <List.ListItem>Single item</List.ListItem>
424
+ </List>
425
+ );
426
+
427
+ expect(screen.getByText("Single item")).toBeInTheDocument();
428
+ });
429
+
430
+ it("renders with many children", () => {
431
+ const items = Array.from({ length: 100 }, (_, i) => `Item ${i + 1}`);
432
+
433
+ render(
434
+ <List>
435
+ {items.map((item) => (
436
+ <List.ListItem key={item}>{item}</List.ListItem>
437
+ ))}
438
+ </List>
439
+ );
440
+
441
+ expect(screen.getByText("Item 1")).toBeInTheDocument();
442
+ expect(screen.getByText("Item 100")).toBeInTheDocument();
443
+ });
444
+
445
+ it("handles complex children", () => {
446
+ render(
447
+ <List>
448
+ <List.ListItem>
449
+ <strong>Bold</strong> and <em>italic</em> text
450
+ </List.ListItem>
451
+ </List>
452
+ );
453
+
454
+ expect(screen.getByText("Bold")).toBeInTheDocument();
455
+ expect(screen.getByText("italic")).toBeInTheDocument();
456
+ });
457
+
458
+ it("spreads additional props to list", () => {
459
+ render(
460
+ <List data-testid="custom-list" data-custom="value">
461
+ <List.ListItem>Item</List.ListItem>
462
+ </List>
463
+ );
464
+
465
+ const list = screen.getByTestId("custom-list");
466
+ expect(list).toHaveAttribute("data-custom", "value");
467
+ });
468
+
469
+ it("spreads additional props to list item", () => {
470
+ render(
471
+ <List>
472
+ <List.ListItem data-testid="custom-item" data-custom="value">
473
+ Item
474
+ </List.ListItem>
475
+ </List>
476
+ );
477
+
478
+ const item = screen.getByTestId("custom-item");
479
+ expect(item).toHaveAttribute("data-custom", "value");
480
+ });
481
+ });
482
+
483
+ describe("Real-World Use Cases", () => {
484
+ it("renders a navigation list", () => {
485
+ render(
486
+ <nav>
487
+ <List variant="inline" role="list" aria-label="Main navigation">
488
+ <List.ListItem>
489
+ <a href="/">Home</a>
490
+ </List.ListItem>
491
+ <List.ListItem>
492
+ <a href="/about">About</a>
493
+ </List.ListItem>
494
+ <List.ListItem>
495
+ <a href="/contact">Contact</a>
496
+ </List.ListItem>
497
+ </List>
498
+ </nav>
499
+ );
500
+
501
+ const list = screen.getByRole("list", { name: "Main navigation" });
502
+ expect(list).toHaveAttribute("data-variant", "inline");
503
+ });
504
+
505
+ it("renders a steps list", () => {
506
+ render(
507
+ <List type="ol" aria-label="Installation steps">
508
+ <List.ListItem>Download the package</List.ListItem>
509
+ <List.ListItem>Extract the files</List.ListItem>
510
+ <List.ListItem>Run the installer</List.ListItem>
511
+ </List>
512
+ );
513
+
514
+ const list = screen.getByRole("list", { name: "Installation steps" });
515
+ expect(list.tagName).toBe("OL");
516
+ });
517
+
518
+ it("renders a glossary", () => {
519
+ render(
520
+ <List type="dl">
521
+ <List.ListItem type="dt">HTML</List.ListItem>
522
+ <List.ListItem type="dd">HyperText Markup Language</List.ListItem>
523
+ <List.ListItem type="dt">CSS</List.ListItem>
524
+ <List.ListItem type="dd">Cascading Style Sheets</List.ListItem>
525
+ </List>
526
+ );
527
+
528
+ expect(screen.getByText("HTML")).toBeInTheDocument();
529
+ expect(screen.getByText("HyperText Markup Language")).toBeInTheDocument();
530
+ });
531
+
532
+ it("renders a feature list with custom styling", () => {
533
+ render(
534
+ <List
535
+ variant="custom"
536
+ styles={{
537
+ "--list-marker-color": "blue",
538
+ "--list-marker-content": "'✓'",
539
+ } as React.CSSProperties}
540
+ >
541
+ <List.ListItem>Feature 1</List.ListItem>
542
+ <List.ListItem>Feature 2</List.ListItem>
543
+ </List>
544
+ );
545
+
546
+ const list = screen.getByRole("list");
547
+ expect(list).toHaveAttribute("data-variant", "custom");
548
+ expect(list).toHaveStyle({
549
+ "--list-marker-color": "blue",
550
+ "--list-marker-content": "'✓'",
551
+ });
552
+ });
553
+ });
554
+ });