@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,250 @@
1
+ import React from 'react';
2
+ import { U as UI } from './ui-d01b50d4.js';
3
+
4
+ /**
5
+ * Valid HTML heading levels for semantic document structure.
6
+ *
7
+ * @remarks
8
+ * Heading levels establish the document outline and hierarchy for screen readers.
9
+ * Always maintain proper heading order (don't skip levels) for WCAG 2.1 compliance.
10
+ *
11
+ * @example
12
+ * // ✅ GOOD: Proper heading hierarchy
13
+ * <Title level="h1">Main Page Title</Title>
14
+ * <Title level="h2">Section Heading</Title>
15
+ * <Title level="h3">Subsection Heading</Title>
16
+ *
17
+ * @example
18
+ * // ❌ BAD: Skipping heading levels
19
+ * <Title level="h1">Main Title</Title>
20
+ * <Title level="h4">Skipped h2 and h3</Title>
21
+ */
22
+ type HeadingLevel = "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
23
+ /**
24
+ * Props for the Title component.
25
+ *
26
+ * @typeParam TLevel - The heading level to render (h1-h6)
27
+ *
28
+ * @property {HeadingLevel} level - The semantic heading level (h1-h6). Defaults to "h2".
29
+ * @property {React.ReactNode} children - The text or elements to render inside the heading.
30
+ * @property {string} [id] - Unique identifier for the heading, useful for anchor links.
31
+ * @property {React.CSSProperties} [styles] - Inline styles to apply to the heading.
32
+ * @property {string} [ui] - Data attribute for UI framework styling hooks.
33
+ * @property {string} [className] - CSS class names to apply.
34
+ *
35
+ * @remarks
36
+ * This interface extends the polymorphic UI component props, providing full access
37
+ * to native HTML heading attributes and ARIA properties for accessibility.
38
+ *
39
+ * For AI assistants: This component ensures semantic HTML structure for document
40
+ * outlines, which is critical for screen reader navigation and SEO.
41
+ */
42
+ type TitleProps$1 = {
43
+ /**
44
+ * The semantic heading level to render.
45
+ *
46
+ * @default "h2"
47
+ *
48
+ * @remarks
49
+ * Choose the appropriate level based on your document structure:
50
+ * - h1: Page title (typically one per page)
51
+ * - h2: Major sections
52
+ * - h3-h6: Subsections and nested content
53
+ *
54
+ * WCAG 2.1 requires proper heading hierarchy for screen reader users.
55
+ */
56
+ level?: HeadingLevel;
57
+ /**
58
+ * The content to display in the heading.
59
+ *
60
+ * @remarks
61
+ * Can be text, elements, or a combination. Ensure text content is meaningful
62
+ * and descriptive for users navigating with screen readers.
63
+ */
64
+ children: React.ReactNode;
65
+ /**
66
+ * Unique identifier for the heading element.
67
+ *
68
+ * @remarks
69
+ * Useful for:
70
+ * - Creating anchor links to sections
71
+ * - ARIA relationships (aria-labelledby, aria-describedby)
72
+ * - Testing and automation
73
+ */
74
+ id?: string;
75
+ /**
76
+ * Data attribute for UI framework styling hooks.
77
+ *
78
+ * @remarks
79
+ * Used by fpkit's CSS system to apply component-specific styles.
80
+ * Automatically prefixed with "data-ui" when rendered.
81
+ */
82
+ ui?: string;
83
+ /**
84
+ * CSS class names to apply to the heading.
85
+ *
86
+ * @remarks
87
+ * Prefer using the `ui` prop for fpkit styling, and this for
88
+ * utility classes or custom overrides.
89
+ */
90
+ className?: string;
91
+ } & React.ComponentPropsWithoutRef<typeof UI>;
92
+ /**
93
+ * Title - A semantic heading component for document structure and hierarchy.
94
+ *
95
+ * The Title component renders semantic HTML headings (h1-h6) with proper
96
+ * accessibility support. It ensures WCAG 2.1 AA compliance by maintaining
97
+ * semantic document structure for screen readers and assistive technologies.
98
+ *
99
+ * ## Key Features
100
+ *
101
+ * - **Semantic HTML**: Renders actual heading elements (h1-h6) for proper document outline
102
+ * - **Accessibility**: Full ARIA support and keyboard navigation
103
+ * - **Flexible Styling**: Supports fpkit's UI system, custom classes, and inline styles
104
+ * - **Type Safety**: Fully typed with TypeScript for developer experience
105
+ * - **Performance**: Memoized to prevent unnecessary re-renders
106
+ *
107
+ * ## Accessibility Considerations
108
+ *
109
+ * ### WCAG 2.1 AA Compliance
110
+ *
111
+ * - **1.3.1 Info and Relationships (Level A)**: Semantic heading elements preserve
112
+ * document structure for screen readers
113
+ * - **2.4.6 Headings and Labels (Level AA)**: Headings should be descriptive and
114
+ * properly ordered
115
+ * - **2.4.10 Section Headings (Level AAA)**: Use headings to organize content
116
+ *
117
+ * ### Best Practices
118
+ *
119
+ * 1. **Maintain Heading Hierarchy**: Don't skip levels (e.g., h1 → h3)
120
+ * 2. **One h1 Per Page**: Use h1 for the main page title only
121
+ * 3. **Descriptive Text**: Headings should clearly describe the following content
122
+ * 4. **Avoid Empty Headings**: Always provide meaningful text content
123
+ *
124
+ * ## Usage Examples
125
+ *
126
+ * @example
127
+ * // Basic usage with default h2
128
+ * <Title>Section Heading</Title>
129
+ *
130
+ * @example
131
+ * // Page title with explicit h1
132
+ * <Title level="h1">Welcome to Our Application</Title>
133
+ *
134
+ * @example
135
+ * // Subsection with custom styling
136
+ * <Title
137
+ * level="h3"
138
+ * id="getting-started"
139
+ * className="text-primary"
140
+ * >
141
+ * Getting Started
142
+ * </Title>
143
+ *
144
+ * @example
145
+ * // With fpkit UI data attribute
146
+ * <Title level="h2" ui="section-title">
147
+ * Features Overview
148
+ * </Title>
149
+ *
150
+ * @example
151
+ * // Accessible heading with aria-label for context
152
+ * <Title level="h2" aria-label="User dashboard overview">
153
+ * Dashboard
154
+ * </Title>
155
+ *
156
+ * @example
157
+ * // Complex heading with mixed content
158
+ * <Title level="h2" id="stats">
159
+ * <Icon name="chart" aria-hidden="true" />
160
+ * <span>Statistics</span>
161
+ * </Title>
162
+ *
163
+ * @example
164
+ * // ✅ GOOD: Proper heading hierarchy
165
+ * <Title level="h1">Page Title</Title>
166
+ * <Title level="h2">Main Section</Title>
167
+ * <Title level="h3">Subsection</Title>
168
+ *
169
+ * @example
170
+ * // ❌ BAD: Skipping heading levels (accessibility violation)
171
+ * <Title level="h1">Page Title</Title>
172
+ * <Title level="h4">Skipped h2 and h3</Title>
173
+ *
174
+ * @param {TitleProps} props - Component props
175
+ * @returns {React.ReactElement} A semantic heading element
176
+ *
177
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/info-and-relationships.html WCAG 1.3.1}
178
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/headings-and-labels.html WCAG 2.4.6}
179
+ */
180
+ declare const Title: React.MemoExoticComponent<React.ForwardRefExoticComponent<Omit<TitleProps$1, "ref"> & React.RefAttributes<HTMLHeadingElement>>>;
181
+
182
+ /**
183
+ * @deprecated Use `Title` component instead. This component will be removed in v3.0.0.
184
+ *
185
+ * @remarks
186
+ * The `Heading` component has been deprecated in favor of the new `Title` component
187
+ * which offers improved API design and better accessibility features.
188
+ *
189
+ * **Migration Guide:**
190
+ * - Rename `Heading` → `Title`
191
+ * - Rename prop `type` → `level`
192
+ * - Default level changed from `h3` → `h2` (update if you relied on the default)
193
+ *
194
+ * @example
195
+ * // Before (deprecated):
196
+ * <Heading type="h2">Section Title</Heading>
197
+ *
198
+ * // After:
199
+ * <Title level="h2">Section Title</Title>
200
+ *
201
+ * @see {@link Title} for the new component
202
+ */
203
+ type TitleProps = {
204
+ /**
205
+ * @deprecated Use `level` prop on the `Title` component instead.
206
+ */
207
+ children: React.ReactNode;
208
+ /**
209
+ * @deprecated Use `level` prop on the `Title` component instead.
210
+ */
211
+ type?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
212
+ /**
213
+ * @deprecated Use `ui` prop on the `Title` component.
214
+ */
215
+ ui?: string;
216
+ } & Omit<React.ComponentPropsWithoutRef<typeof Title>, 'level'>;
217
+ /**
218
+ * Heading - Deprecated component wrapper for Title.
219
+ *
220
+ * @deprecated Use {@link Title} component instead. Will be removed in v3.0.0.
221
+ *
222
+ * This component provides backwards compatibility for existing code using
223
+ * the old `Heading` component API. It forwards all props to the new `Title`
224
+ * component with appropriate prop name mapping.
225
+ *
226
+ * **Breaking Changes in v3.0.0:**
227
+ * - This component will be removed
228
+ * - Migrate to `Title` component before upgrading
229
+ *
230
+ * **Migration Steps:**
231
+ * 1. Replace all `<Heading>` imports with `<Title>`
232
+ * 2. Rename `type` prop to `level`
233
+ * 3. Review default behavior (default changed from h3 to h2)
234
+ *
235
+ * @example
236
+ * // Old API (still works but deprecated):
237
+ * import { Heading } from '@fpkit/acss';
238
+ * <Heading type="h2">Section</Heading>
239
+ *
240
+ * @example
241
+ * // New API (recommended):
242
+ * import { Title } from '@fpkit/acss';
243
+ * <Title level="h2">Section</Title>
244
+ *
245
+ * @param {TitleProps} props - Component props (maps old API to new)
246
+ * @returns {React.ReactElement} The rendered Title component
247
+ */
248
+ declare const Heading: React.ForwardRefExoticComponent<Omit<TitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
249
+
250
+ export { HeadingLevel as H, Title as T, TitleProps$1 as a, Heading as b, TitleProps as c };
package/libs/hooks.cjs CHANGED
@@ -1,12 +1,24 @@
1
1
  'use strict';
2
2
 
3
+ var chunkT4T6GWYQ_cjs = require('./chunk-T4T6GWYQ.cjs');
3
4
  var chunkPDD4N5P5_cjs = require('./chunk-PDD4N5P5.cjs');
5
+ var chunkTON2YGMD_cjs = require('./chunk-TON2YGMD.cjs');
6
+ require('./chunk-33PNJ4LO.cjs');
7
+ require('./chunk-ENTCUJ3A.cjs');
4
8
 
5
9
 
6
10
 
11
+ Object.defineProperty(exports, 'useBreadcrumbSegments', {
12
+ enumerable: true,
13
+ get: function () { return chunkT4T6GWYQ_cjs.a; }
14
+ });
7
15
  Object.defineProperty(exports, 'usePopover', {
8
16
  enumerable: true,
9
17
  get: function () { return chunkPDD4N5P5_cjs.a; }
10
18
  });
19
+ Object.defineProperty(exports, 'useDisabledState', {
20
+ enumerable: true,
21
+ get: function () { return chunkTON2YGMD_cjs.a; }
22
+ });
11
23
  //# sourceMappingURL=out.js.map
12
24
  //# sourceMappingURL=hooks.cjs.map
package/libs/hooks.d.cts CHANGED
@@ -1,3 +1,8 @@
1
+ export { useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.cjs';
2
+ import 'react';
3
+ import './ui-d01b50d4.js';
4
+ import './link-5192f411.js';
5
+
1
6
  type Position = {
2
7
  /**
3
8
  * @description This is the top position of the popover.
@@ -29,4 +34,138 @@ declare const usePopover: (elementRef: React.RefObject<HTMLElement | HTMLDivElem
29
34
  handlePointerLeave: () => void;
30
35
  };
31
36
 
32
- export { usePopover };
37
+ /**
38
+ * Event handler mapping type for disabled state management.
39
+ * Maps event names to their handler functions for any HTML element.
40
+ *
41
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
42
+ */
43
+ type DisabledEventHandlers<T extends HTMLElement> = {
44
+ onClick?: (event: React.MouseEvent<T>) => void;
45
+ onChange?: (event: React.ChangeEvent<T>) => void;
46
+ onBlur?: (event: React.FocusEvent<T>) => void;
47
+ onFocus?: (event: React.FocusEvent<T>) => void;
48
+ onPointerDown?: (event: React.PointerEvent<T>) => void;
49
+ onKeyDown?: (event: React.KeyboardEvent<T>) => void;
50
+ onKeyUp?: (event: React.KeyboardEvent<T>) => void;
51
+ onMouseDown?: (event: React.MouseEvent<T>) => void;
52
+ onMouseUp?: (event: React.MouseEvent<T>) => void;
53
+ onTouchStart?: (event: React.TouchEvent<T>) => void;
54
+ onTouchEnd?: (event: React.TouchEvent<T>) => void;
55
+ };
56
+ /**
57
+ * Props returned by the useDisabledState hook containing ARIA attributes and styling.
58
+ */
59
+ interface DisabledProps {
60
+ /** ARIA attribute indicating disabled state */
61
+ 'aria-disabled': boolean;
62
+ /** CSS class name for disabled state styling */
63
+ className: string;
64
+ /** Optional tabIndex to remove element from tab order when disabled */
65
+ tabIndex?: -1;
66
+ }
67
+ /**
68
+ * Configuration options for useDisabledState hook.
69
+ *
70
+ * @template T - The HTML element type
71
+ */
72
+ interface UseDisabledStateOptions<T extends HTMLElement> {
73
+ /** Event handlers to wrap with disabled logic */
74
+ handlers?: Partial<DisabledEventHandlers<T>>;
75
+ /** Existing className to merge with disabled class */
76
+ className?: string;
77
+ /** Custom disabled className (default: 'is-disabled') */
78
+ disabledClassName?: string;
79
+ /** Whether to call preventDefault on disabled events (default: true) */
80
+ preventDefault?: boolean;
81
+ /** Whether to call stopPropagation on disabled events (default: true) */
82
+ stopPropagation?: boolean;
83
+ /** Make element non-focusable when disabled via tabIndex=-1 (default: false for a11y) */
84
+ removeFromTabOrder?: boolean;
85
+ }
86
+ /**
87
+ * Return type for the useDisabledState hook.
88
+ *
89
+ * @template T - The HTML element type
90
+ */
91
+ interface UseDisabledStateReturn<T extends HTMLElement> {
92
+ /** Props to spread on the element for disabled state */
93
+ disabledProps: DisabledProps;
94
+ /** Wrapped event handlers that respect disabled state */
95
+ handlers: Partial<DisabledEventHandlers<T>>;
96
+ }
97
+ /**
98
+ * Manages accessible disabled state for form elements using aria-disabled pattern.
99
+ *
100
+ * This hook implements WCAG 2.1 Level AA compliant disabled state management by:
101
+ * - Using `aria-disabled` instead of native `disabled` attribute (keeps elements focusable)
102
+ * - Preventing all interaction events when disabled
103
+ * - Applying accessible styling via `.is-disabled` class
104
+ * - Maintaining keyboard focusability for screen reader discovery
105
+ *
106
+ * **Why aria-disabled instead of disabled attribute?**
107
+ * - Elements remain in keyboard tab order (WCAG 2.1.1 - Keyboard)
108
+ * - Screen readers can discover and announce disabled state
109
+ * - Enables tooltips and contextual help on disabled elements
110
+ * - Better visual styling control for WCAG contrast compliance
111
+ *
112
+ * **Performance Optimizations:**
113
+ * - Single memoization pass for all handlers and props
114
+ * - Stable handler references using refs (only recreate on disabled state change)
115
+ * - Automatic className merging to reduce consumer boilerplate
116
+ *
117
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
118
+ *
119
+ * @param {boolean | undefined} disabled - Whether the element should be disabled. Undefined treated as false.
120
+ * @param {Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>} handlersOrOptions -
121
+ * Event handlers to wrap OR configuration options object (for backward compatibility)
122
+ *
123
+ * @returns {UseDisabledStateReturn<T>} Object containing disabledProps and wrapped handlers
124
+ *
125
+ * @example
126
+ * // Basic button usage (legacy API - still supported)
127
+ * const MyButton = ({ disabled, onClick, children }) => {
128
+ * const { disabledProps, handlers } = useDisabledState(disabled, { onClick });
129
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
130
+ * };
131
+ *
132
+ * @example
133
+ * // Enhanced API with className merging
134
+ * const MyButton = ({ disabled, onClick, className, children }) => {
135
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
136
+ * handlers: { onClick },
137
+ * className,
138
+ * });
139
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
140
+ * };
141
+ *
142
+ * @example
143
+ * // Custom configuration
144
+ * const MyInput = ({ disabled, onChange, className }) => {
145
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
146
+ * handlers: { onChange },
147
+ * className,
148
+ * disabledClassName: 'custom-disabled',
149
+ * preventDefault: true,
150
+ * stopPropagation: false,
151
+ * });
152
+ * return <input {...disabledProps} {...handlers} />;
153
+ * };
154
+ *
155
+ * @example
156
+ * // Remove from tab order when disabled
157
+ * const MyButton = ({ disabled, onClick }) => {
158
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
159
+ * handlers: { onClick },
160
+ * removeFromTabOrder: true, // Adds tabIndex=-1 when disabled
161
+ * });
162
+ * return <button {...disabledProps} {...handlers}>Click me</button>;
163
+ * };
164
+ *
165
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard WCAG 2.1.1 - Keyboard}
166
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value WCAG 4.1.2 - Name, Role, Value}
167
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum WCAG 1.4.3 - Contrast (Minimum)}
168
+ */
169
+ declare function useDisabledState<T extends HTMLElement = HTMLElement>(disabled: boolean | undefined, handlersOrOptions?: Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>): UseDisabledStateReturn<T>;
170
+
171
+ export { DisabledEventHandlers, DisabledProps, UseDisabledStateReturn, useDisabledState, usePopover };
package/libs/hooks.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ export { useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.js';
2
+ import 'react';
3
+ import './ui-d01b50d4.js';
4
+ import './link-5192f411.js';
5
+
1
6
  type Position = {
2
7
  /**
3
8
  * @description This is the top position of the popover.
@@ -29,4 +34,138 @@ declare const usePopover: (elementRef: React.RefObject<HTMLElement | HTMLDivElem
29
34
  handlePointerLeave: () => void;
30
35
  };
31
36
 
32
- export { usePopover };
37
+ /**
38
+ * Event handler mapping type for disabled state management.
39
+ * Maps event names to their handler functions for any HTML element.
40
+ *
41
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
42
+ */
43
+ type DisabledEventHandlers<T extends HTMLElement> = {
44
+ onClick?: (event: React.MouseEvent<T>) => void;
45
+ onChange?: (event: React.ChangeEvent<T>) => void;
46
+ onBlur?: (event: React.FocusEvent<T>) => void;
47
+ onFocus?: (event: React.FocusEvent<T>) => void;
48
+ onPointerDown?: (event: React.PointerEvent<T>) => void;
49
+ onKeyDown?: (event: React.KeyboardEvent<T>) => void;
50
+ onKeyUp?: (event: React.KeyboardEvent<T>) => void;
51
+ onMouseDown?: (event: React.MouseEvent<T>) => void;
52
+ onMouseUp?: (event: React.MouseEvent<T>) => void;
53
+ onTouchStart?: (event: React.TouchEvent<T>) => void;
54
+ onTouchEnd?: (event: React.TouchEvent<T>) => void;
55
+ };
56
+ /**
57
+ * Props returned by the useDisabledState hook containing ARIA attributes and styling.
58
+ */
59
+ interface DisabledProps {
60
+ /** ARIA attribute indicating disabled state */
61
+ 'aria-disabled': boolean;
62
+ /** CSS class name for disabled state styling */
63
+ className: string;
64
+ /** Optional tabIndex to remove element from tab order when disabled */
65
+ tabIndex?: -1;
66
+ }
67
+ /**
68
+ * Configuration options for useDisabledState hook.
69
+ *
70
+ * @template T - The HTML element type
71
+ */
72
+ interface UseDisabledStateOptions<T extends HTMLElement> {
73
+ /** Event handlers to wrap with disabled logic */
74
+ handlers?: Partial<DisabledEventHandlers<T>>;
75
+ /** Existing className to merge with disabled class */
76
+ className?: string;
77
+ /** Custom disabled className (default: 'is-disabled') */
78
+ disabledClassName?: string;
79
+ /** Whether to call preventDefault on disabled events (default: true) */
80
+ preventDefault?: boolean;
81
+ /** Whether to call stopPropagation on disabled events (default: true) */
82
+ stopPropagation?: boolean;
83
+ /** Make element non-focusable when disabled via tabIndex=-1 (default: false for a11y) */
84
+ removeFromTabOrder?: boolean;
85
+ }
86
+ /**
87
+ * Return type for the useDisabledState hook.
88
+ *
89
+ * @template T - The HTML element type
90
+ */
91
+ interface UseDisabledStateReturn<T extends HTMLElement> {
92
+ /** Props to spread on the element for disabled state */
93
+ disabledProps: DisabledProps;
94
+ /** Wrapped event handlers that respect disabled state */
95
+ handlers: Partial<DisabledEventHandlers<T>>;
96
+ }
97
+ /**
98
+ * Manages accessible disabled state for form elements using aria-disabled pattern.
99
+ *
100
+ * This hook implements WCAG 2.1 Level AA compliant disabled state management by:
101
+ * - Using `aria-disabled` instead of native `disabled` attribute (keeps elements focusable)
102
+ * - Preventing all interaction events when disabled
103
+ * - Applying accessible styling via `.is-disabled` class
104
+ * - Maintaining keyboard focusability for screen reader discovery
105
+ *
106
+ * **Why aria-disabled instead of disabled attribute?**
107
+ * - Elements remain in keyboard tab order (WCAG 2.1.1 - Keyboard)
108
+ * - Screen readers can discover and announce disabled state
109
+ * - Enables tooltips and contextual help on disabled elements
110
+ * - Better visual styling control for WCAG contrast compliance
111
+ *
112
+ * **Performance Optimizations:**
113
+ * - Single memoization pass for all handlers and props
114
+ * - Stable handler references using refs (only recreate on disabled state change)
115
+ * - Automatic className merging to reduce consumer boilerplate
116
+ *
117
+ * @template T - The HTML element type (e.g., HTMLButtonElement, HTMLInputElement)
118
+ *
119
+ * @param {boolean | undefined} disabled - Whether the element should be disabled. Undefined treated as false.
120
+ * @param {Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>} handlersOrOptions -
121
+ * Event handlers to wrap OR configuration options object (for backward compatibility)
122
+ *
123
+ * @returns {UseDisabledStateReturn<T>} Object containing disabledProps and wrapped handlers
124
+ *
125
+ * @example
126
+ * // Basic button usage (legacy API - still supported)
127
+ * const MyButton = ({ disabled, onClick, children }) => {
128
+ * const { disabledProps, handlers } = useDisabledState(disabled, { onClick });
129
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
130
+ * };
131
+ *
132
+ * @example
133
+ * // Enhanced API with className merging
134
+ * const MyButton = ({ disabled, onClick, className, children }) => {
135
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
136
+ * handlers: { onClick },
137
+ * className,
138
+ * });
139
+ * return <button {...disabledProps} {...handlers}>{children}</button>;
140
+ * };
141
+ *
142
+ * @example
143
+ * // Custom configuration
144
+ * const MyInput = ({ disabled, onChange, className }) => {
145
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
146
+ * handlers: { onChange },
147
+ * className,
148
+ * disabledClassName: 'custom-disabled',
149
+ * preventDefault: true,
150
+ * stopPropagation: false,
151
+ * });
152
+ * return <input {...disabledProps} {...handlers} />;
153
+ * };
154
+ *
155
+ * @example
156
+ * // Remove from tab order when disabled
157
+ * const MyButton = ({ disabled, onClick }) => {
158
+ * const { disabledProps, handlers } = useDisabledState(disabled, {
159
+ * handlers: { onClick },
160
+ * removeFromTabOrder: true, // Adds tabIndex=-1 when disabled
161
+ * });
162
+ * return <button {...disabledProps} {...handlers}>Click me</button>;
163
+ * };
164
+ *
165
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard WCAG 2.1.1 - Keyboard}
166
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value WCAG 4.1.2 - Name, Role, Value}
167
+ * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum WCAG 1.4.3 - Contrast (Minimum)}
168
+ */
169
+ declare function useDisabledState<T extends HTMLElement = HTMLElement>(disabled: boolean | undefined, handlersOrOptions?: Partial<DisabledEventHandlers<T>> | UseDisabledStateOptions<T>): UseDisabledStateReturn<T>;
170
+
171
+ export { DisabledEventHandlers, DisabledProps, UseDisabledStateReturn, useDisabledState, usePopover };
package/libs/hooks.js CHANGED
@@ -1,3 +1,7 @@
1
+ export { a as useBreadcrumbSegments } from './chunk-X5LGFCWG.js';
1
2
  export { a as usePopover } from './chunk-GCGKYLDG.js';
3
+ export { a as useDisabledState } from './chunk-75QHTLFO.js';
4
+ import './chunk-UEPAWMDF.js';
5
+ import './chunk-HHLNOC5T.js';
2
6
  //# sourceMappingURL=out.js.map
3
7
  //# sourceMappingURL=hooks.js.map
package/libs/icons.cjs CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkKKLTUJFB_cjs = require('./chunk-KKLTUJFB.cjs');
4
- require('./chunk-6TE5QEVE.cjs');
3
+ var chunk6WTC4JXH_cjs = require('./chunk-6WTC4JXH.cjs');
4
+ require('./chunk-ENTCUJ3A.cjs');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, 'Icon', {
9
9
  enumerable: true,
10
- get: function () { return chunkKKLTUJFB_cjs.a; }
10
+ get: function () { return chunk6WTC4JXH_cjs.a; }
11
11
  });
12
12
  //# sourceMappingURL=out.js.map
13
13
  //# sourceMappingURL=icons.cjs.map
package/libs/icons.d.cts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as Icon, IconProps } from './components/icons/icon.cjs';
2
- import './component-props-a8a2f97e.js';
2
+ import './component-props-67d978a2.js';
3
3
  import 'react';
4
- import './ui-9a6f9f8d.js';
4
+ import './ui-d01b50d4.js';
package/libs/icons.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { default as Icon, IconProps } from './components/icons/icon.js';
2
- import './component-props-a8a2f97e.js';
2
+ import './component-props-67d978a2.js';
3
3
  import 'react';
4
- import './ui-9a6f9f8d.js';
4
+ import './ui-d01b50d4.js';
package/libs/icons.js CHANGED
@@ -1,4 +1,4 @@
1
- export { a as Icon } from './chunk-O6QZBB6G.js';
2
- import './chunk-NE6YXTMC.js';
1
+ export { a as Icon } from './chunk-5QD3DWFI.js';
2
+ import './chunk-HHLNOC5T.js';
3
3
  //# sourceMappingURL=out.js.map
4
4
  //# sourceMappingURL=icons.js.map