@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.
- package/README.md +89 -0
- package/libs/chunk-2NRIP6RB.cjs +17 -0
- package/libs/chunk-2NRIP6RB.cjs.map +1 -0
- package/libs/chunk-33PNJ4LO.cjs +15 -0
- package/libs/chunk-33PNJ4LO.cjs.map +1 -0
- package/libs/chunk-4BZKFPEC.cjs +17 -0
- package/libs/chunk-4BZKFPEC.cjs.map +1 -0
- package/libs/{chunk-O6QZBB6G.js → chunk-5QD3DWFI.js} +5 -5
- package/libs/chunk-5QD3DWFI.js.map +1 -0
- package/libs/chunk-6SAHIYCZ.js +7 -0
- package/libs/chunk-6SAHIYCZ.js.map +1 -0
- package/libs/{chunk-KKLTUJFB.cjs → chunk-6WTC4JXH.cjs} +5 -5
- package/libs/chunk-6WTC4JXH.cjs.map +1 -0
- package/libs/chunk-75QHTLFO.js +7 -0
- package/libs/chunk-75QHTLFO.js.map +1 -0
- package/libs/{chunk-YWOYVRFT.js → chunk-7XPFW7CB.js} +3 -3
- package/libs/chunk-BFK62VX5.js +5 -0
- package/libs/chunk-BFK62VX5.js.map +1 -0
- package/libs/{chunk-ICCKQ2GC.cjs → chunk-DKTHCQ5P.cjs} +4 -4
- package/libs/{chunk-6TE5QEVE.cjs → chunk-E2AJURUW.cjs} +3 -3
- package/libs/chunk-E2AJURUW.cjs.map +1 -0
- package/libs/chunk-ENTCUJ3A.cjs +13 -0
- package/libs/chunk-ENTCUJ3A.cjs.map +1 -0
- package/libs/chunk-F5EYMVQM.js +10 -0
- package/libs/chunk-F5EYMVQM.js.map +1 -0
- package/libs/chunk-FVROL3V5.js +9 -0
- package/libs/chunk-FVROL3V5.js.map +1 -0
- package/libs/chunk-GT77BX4L.cjs +17 -0
- package/libs/chunk-GT77BX4L.cjs.map +1 -0
- package/libs/chunk-GUJSMQ3V.cjs +16 -0
- package/libs/chunk-GUJSMQ3V.cjs.map +1 -0
- package/libs/chunk-HHLNOC5T.js +7 -0
- package/libs/chunk-HHLNOC5T.js.map +1 -0
- package/libs/chunk-HRRHPLER.js +8 -0
- package/libs/chunk-HRRHPLER.js.map +1 -0
- package/libs/chunk-IEB64SWY.js +8 -0
- package/libs/chunk-IEB64SWY.js.map +1 -0
- package/libs/{chunk-LIQJ7ZZR.js → chunk-IQ76HGVP.js} +2 -2
- package/libs/chunk-IRLFZ3OL.js +9 -0
- package/libs/chunk-IRLFZ3OL.js.map +1 -0
- package/libs/chunk-KK47SYZI.js +8 -0
- package/libs/chunk-KK47SYZI.js.map +1 -0
- package/libs/chunk-O3JIHC5M.cjs +15 -0
- package/libs/chunk-O3JIHC5M.cjs.map +1 -0
- package/libs/chunk-O5XAJ7BY.cjs +18 -0
- package/libs/chunk-O5XAJ7BY.cjs.map +1 -0
- package/libs/chunk-OVWLQYMK.js +10 -0
- package/libs/chunk-OVWLQYMK.js.map +1 -0
- package/libs/chunk-PNWIRCG3.cjs +7 -0
- package/libs/chunk-PNWIRCG3.cjs.map +1 -0
- package/libs/chunk-QVW6W76L.cjs +18 -0
- package/libs/chunk-QVW6W76L.cjs.map +1 -0
- package/libs/chunk-T4T6GWYQ.cjs +17 -0
- package/libs/chunk-T4T6GWYQ.cjs.map +1 -0
- package/libs/chunk-TON2YGMD.cjs +9 -0
- package/libs/chunk-TON2YGMD.cjs.map +1 -0
- package/libs/chunk-UEPAWMDF.js +8 -0
- package/libs/chunk-UEPAWMDF.js.map +1 -0
- package/libs/{chunk-LT5KZ2QW.cjs → chunk-US2I5GI7.cjs} +3 -3
- package/libs/{chunk-E3XP6BEX.cjs → chunk-W2UIN7EV.cjs} +3 -3
- package/libs/chunk-W5TKWBFC.cjs +18 -0
- package/libs/chunk-W5TKWBFC.cjs.map +1 -0
- package/libs/chunk-WXBFBWYF.cjs +16 -0
- package/libs/chunk-WXBFBWYF.cjs.map +1 -0
- package/libs/chunk-X3JCTEPD.js +11 -0
- package/libs/chunk-X3JCTEPD.js.map +1 -0
- package/libs/chunk-X5LGFCWG.js +9 -0
- package/libs/chunk-X5LGFCWG.js.map +1 -0
- package/libs/{chunk-5M57K4SW.js → chunk-Y2PFDELK.js} +2 -2
- package/libs/chunk-ZFJ4U45S.js +10 -0
- package/libs/chunk-ZFJ4U45S.js.map +1 -0
- package/libs/{component-props-a8a2f97e.d.ts → component-props-67d978a2.d.ts} +4 -4
- package/libs/components/alert/alert.css +1 -1
- package/libs/components/alert/alert.css.map +1 -1
- package/libs/components/alert/alert.min.css +2 -2
- package/libs/components/badge/badge.css +1 -1
- package/libs/components/badge/badge.css.map +1 -1
- package/libs/components/badge/badge.min.css +2 -2
- package/libs/components/breadcrumbs/breadcrumb.cjs +9 -5
- package/libs/components/breadcrumbs/breadcrumb.d.cts +275 -36
- package/libs/components/breadcrumbs/breadcrumb.d.ts +275 -36
- package/libs/components/breadcrumbs/breadcrumb.js +3 -3
- package/libs/components/button.cjs +6 -4
- package/libs/components/button.d.cts +97 -4
- package/libs/components/button.d.ts +97 -4
- package/libs/components/button.js +4 -2
- package/libs/components/buttons/button.css +1 -1
- package/libs/components/buttons/button.css.map +1 -1
- package/libs/components/buttons/button.min.css +2 -2
- package/libs/components/card.cjs +7 -7
- package/libs/components/card.d.cts +278 -34
- package/libs/components/card.d.ts +278 -34
- package/libs/components/card.js +2 -2
- package/libs/components/cards/card.css +1 -1
- package/libs/components/cards/card.css.map +1 -1
- package/libs/components/cards/card.min.css +2 -2
- package/libs/components/details/details.css +1 -1
- package/libs/components/details/details.css.map +1 -1
- package/libs/components/details/details.min.css +2 -2
- package/libs/components/dialog/dialog.cjs +9 -7
- package/libs/components/dialog/dialog.css +1 -1
- package/libs/components/dialog/dialog.css.map +1 -1
- package/libs/components/dialog/dialog.d.cts +88 -34
- package/libs/components/dialog/dialog.d.ts +88 -34
- package/libs/components/dialog/dialog.js +7 -5
- package/libs/components/dialog/dialog.min.css +2 -2
- package/libs/components/form/fields.cjs +4 -4
- package/libs/components/form/fields.d.cts +16 -7
- package/libs/components/form/fields.d.ts +16 -7
- package/libs/components/form/fields.js +2 -2
- package/libs/components/form/inputs.cjs +6 -4
- package/libs/components/form/inputs.d.cts +50 -2
- package/libs/components/form/inputs.d.ts +50 -2
- package/libs/components/form/inputs.js +4 -2
- package/libs/components/form/textarea.cjs +5 -4
- package/libs/components/form/textarea.d.cts +32 -23
- package/libs/components/form/textarea.d.ts +32 -23
- package/libs/components/form/textarea.js +3 -2
- package/libs/components/heading/heading.cjs +3 -3
- package/libs/components/heading/heading.d.cts +3 -14
- package/libs/components/heading/heading.d.ts +3 -14
- package/libs/components/heading/heading.js +2 -2
- package/libs/components/icons/icon.cjs +4 -4
- package/libs/components/icons/icon.d.cts +183 -39
- package/libs/components/icons/icon.d.ts +183 -39
- package/libs/components/icons/icon.js +2 -2
- package/libs/components/images/img.css +1 -1
- package/libs/components/images/img.css.map +1 -1
- package/libs/components/images/img.min.css +2 -2
- package/libs/components/link/link.cjs +4 -4
- package/libs/components/link/link.css +1 -1
- package/libs/components/link/link.css.map +1 -1
- package/libs/components/link/link.d.cts +3 -19
- package/libs/components/link/link.d.ts +3 -19
- package/libs/components/link/link.js +2 -2
- package/libs/components/link/link.min.css +2 -2
- package/libs/components/list/list.cjs +5 -5
- package/libs/components/list/list.css +1 -0
- package/libs/components/list/list.css.map +1 -0
- package/libs/components/list/list.d.cts +120 -33
- package/libs/components/list/list.d.ts +120 -33
- package/libs/components/list/list.js +2 -2
- package/libs/components/list/list.min.css +3 -0
- package/libs/components/modal.cjs +6 -4
- package/libs/components/modal.d.cts +8 -8
- package/libs/components/modal.d.ts +8 -8
- package/libs/components/modal.js +5 -3
- package/libs/components/nav/nav.cjs +7 -7
- package/libs/components/nav/nav.css +1 -1
- package/libs/components/nav/nav.css.map +1 -1
- package/libs/components/nav/nav.d.cts +550 -34
- package/libs/components/nav/nav.d.ts +550 -34
- package/libs/components/nav/nav.js +3 -3
- package/libs/components/nav/nav.min.css +2 -2
- package/libs/components/popover/popover.d.cts +5 -5
- package/libs/components/popover/popover.d.ts +5 -5
- package/libs/components/tables/table.cjs +5 -5
- package/libs/components/tables/table.d.cts +8 -8
- package/libs/components/tables/table.d.ts +8 -8
- package/libs/components/tables/table.js +2 -2
- package/libs/components/tag/tag.css +1 -1
- package/libs/components/tag/tag.css.map +1 -1
- package/libs/components/tag/tag.min.css +2 -2
- package/libs/components/text/text.cjs +5 -5
- package/libs/components/text/text.d.cts +5 -5
- package/libs/components/text/text.d.ts +5 -5
- package/libs/components/text/text.js +2 -2
- package/libs/form.types-d25ebfac.d.ts +233 -0
- package/libs/heading-7446cb46.d.ts +250 -0
- package/libs/hooks.cjs +12 -0
- package/libs/hooks.d.cts +140 -1
- package/libs/hooks.d.ts +140 -1
- package/libs/hooks.js +4 -0
- package/libs/icons.cjs +3 -3
- package/libs/icons.d.cts +2 -2
- package/libs/icons.d.ts +2 -2
- package/libs/icons.js +2 -2
- package/libs/index.cjs +117 -94
- package/libs/index.cjs.map +1 -1
- package/libs/index.css +1 -1
- package/libs/index.css.map +1 -1
- package/libs/index.d.cts +834 -61
- package/libs/index.d.ts +834 -61
- package/libs/index.js +36 -22
- package/libs/index.js.map +1 -1
- package/libs/link-5192f411.d.ts +323 -0
- package/libs/list.types-d26de310.d.ts +245 -0
- package/libs/ui-d01b50d4.d.ts +289 -0
- package/package.json +4 -87
- package/src/components/README-UI.mdx +416 -0
- package/src/components/alert/ACCESSIBILITY.md +319 -0
- package/src/components/alert/README.mdx +475 -19
- package/src/components/alert/alert.scss +110 -6
- package/src/components/alert/alert.stories.tsx +372 -0
- package/src/components/alert/alert.test.tsx +762 -0
- package/src/components/alert/alert.tsx +331 -66
- package/src/components/alert/views/alert-actions.tsx +13 -0
- package/src/components/alert/views/alert-content.tsx +17 -0
- package/src/components/alert/views/alert-icon.tsx +53 -0
- package/src/components/alert/views/alert-screen-reader-text.tsx +30 -0
- package/src/components/alert/views/alert-title.tsx +23 -0
- package/src/components/alert/views/alert-view.tsx +158 -0
- package/src/components/alert/views/index.ts +12 -0
- package/src/components/badge/badge.mdx +186 -49
- package/src/components/badge/badge.scss +20 -2
- package/src/components/badge/badge.stories.tsx +160 -14
- package/src/components/badge/badge.test.tsx +179 -0
- package/src/components/badge/badge.tsx +97 -4
- package/src/components/breadcrumbs/README.mdx +364 -45
- package/src/components/breadcrumbs/__snapshots__/breadcrumb.test.tsx.snap +152 -0
- package/src/components/breadcrumbs/breadcrumb.stories.tsx +7 -3
- package/src/components/breadcrumbs/breadcrumb.test.tsx +490 -0
- package/src/components/breadcrumbs/breadcrumb.tsx +430 -170
- package/src/components/buttons/README.mdx +102 -1
- package/src/components/buttons/button.scss +34 -31
- package/src/components/buttons/button.stories.tsx +141 -0
- package/src/components/buttons/button.tsx +82 -52
- package/src/components/cards/README.mdx +657 -0
- package/src/components/cards/card.scss +22 -0
- package/src/components/cards/card.stories.tsx +167 -5
- package/src/components/cards/card.test.tsx +360 -20
- package/src/components/cards/card.tsx +200 -79
- package/src/components/cards/card.types.ts +135 -0
- package/src/components/cards/card.utils.ts +79 -0
- package/src/components/details/ACCESSIBILITY-REVIEW-LIVE.md +1050 -0
- package/src/components/details/ACCESSIBILITY-REVIEW.md +502 -0
- package/src/components/details/README.mdx +437 -69
- package/src/components/details/details.scss +16 -7
- package/src/components/details/details.test.tsx +385 -0
- package/src/components/details/details.tsx +101 -69
- package/src/components/details/details.types.ts +76 -0
- package/src/components/dialog/README.mdx +513 -110
- package/src/components/dialog/dialog-a11y-review.md +653 -0
- package/src/components/dialog/dialog-modal.tsx +79 -56
- package/src/components/dialog/dialog.scss +53 -3
- package/src/components/dialog/dialog.stories.tsx +10 -7
- package/src/components/dialog/dialog.test.tsx +450 -0
- package/src/components/dialog/dialog.tsx +69 -59
- package/src/components/dialog/dialog.types.ts +133 -0
- package/src/components/dialog/views/dialog-footer.tsx +54 -11
- package/src/components/dialog/views/dialog-header.tsx +20 -15
- package/src/components/form/README.mdx +725 -43
- package/src/components/form/WCAG-REVIEW.md +654 -0
- package/src/components/form/fields.tsx +10 -1
- package/src/components/form/form.stories.tsx +604 -23
- package/src/components/form/form.tsx +204 -63
- package/src/components/form/form.types.ts +378 -0
- package/src/components/form/input.stories.tsx +71 -3
- package/src/components/form/inputs.tsx +159 -67
- package/src/components/form/select.tsx +122 -66
- package/src/components/form/textarea.tsx +120 -73
- package/src/components/fp.tsx +86 -11
- package/src/components/heading/heading.stories.tsx +44 -4
- package/src/components/heading/heading.tsx +89 -23
- package/src/components/icons/README.mdx +332 -0
- package/src/components/icons/icon.stories.tsx +74 -1
- package/src/components/icons/icon.tsx +89 -1
- package/src/components/icons/types.ts +47 -0
- package/src/components/images/README.mdx +340 -24
- package/src/components/images/img.scss +19 -3
- package/src/components/images/img.stories.tsx +424 -15
- package/src/components/images/img.test.tsx +354 -25
- package/src/components/images/img.tsx +186 -63
- package/src/components/images/img.types.ts +211 -0
- package/src/components/link/README.mdx +923 -0
- package/src/components/link/link.scss +79 -26
- package/src/components/link/link.stories.tsx +383 -30
- package/src/components/link/link.test.tsx +677 -0
- package/src/components/link/link.tsx +163 -57
- package/src/components/link/link.types.ts +261 -0
- package/src/components/list/README.mdx +764 -0
- package/src/components/list/list.scss +285 -0
- package/src/components/list/list.stories.tsx +514 -27
- package/src/components/list/list.test.tsx +554 -0
- package/src/components/list/list.tsx +153 -51
- package/src/components/list/list.types.ts +255 -0
- package/src/components/nav/ACCESSIBILITY.md +649 -0
- package/src/components/nav/README.mdx +782 -0
- package/src/components/nav/nav.scss +32 -1
- package/src/components/nav/nav.stories.tsx +44 -6
- package/src/components/nav/nav.tsx +302 -51
- package/src/components/nav/nav.types.ts +308 -0
- package/src/components/tag/README.mdx +426 -0
- package/src/components/tag/tag.scss +101 -27
- package/src/components/tag/tag.stories.tsx +384 -10
- package/src/components/tag/tag.test.tsx +210 -0
- package/src/components/tag/tag.tsx +106 -9
- package/src/components/tag/tag.types.ts +107 -0
- package/src/components/title/MIGRATION.md +199 -0
- package/src/components/title/README.md +326 -0
- package/src/components/title/README.mdx +452 -0
- package/src/components/title/title.stories.tsx +393 -0
- package/src/components/title/title.test.tsx +251 -0
- package/src/components/title/title.tsx +219 -0
- package/src/components/ui.stories.tsx +894 -0
- package/src/components/ui.test.tsx +559 -0
- package/src/components/ui.tsx +274 -18
- package/src/components/word-count/README.md +240 -0
- package/src/hooks/use-disabled-state.test.tsx +536 -0
- package/src/hooks/use-disabled-state.ts +246 -0
- package/src/hooks/useDisabledState.md +393 -0
- package/src/hooks.ts +7 -0
- package/src/index.scss +2 -0
- package/src/index.ts +12 -3
- package/src/sass/_globals.scss +2 -7
- package/src/sass/_properties.scss +1 -0
- package/src/styles/alert/alert.css +92 -4
- package/src/styles/alert/alert.css.map +1 -1
- package/src/styles/badge/badge.css +20 -2
- package/src/styles/badge/badge.css.map +1 -1
- package/src/styles/buttons/button.css +31 -31
- package/src/styles/buttons/button.css.map +1 -1
- package/src/styles/cards/card.css +16 -0
- package/src/styles/cards/card.css.map +1 -1
- package/src/styles/details/details.css +19 -8
- package/src/styles/details/details.css.map +1 -1
- package/src/styles/dialog/dialog.css +43 -2
- package/src/styles/dialog/dialog.css.map +1 -1
- package/src/styles/images/img.css +15 -3
- package/src/styles/images/img.css.map +1 -1
- package/src/styles/index.css +691 -128
- package/src/styles/index.css.map +1 -1
- package/src/styles/link/link.css +45 -28
- package/src/styles/link/link.css.map +1 -1
- package/src/styles/list/list.css +214 -0
- package/src/styles/list/list.css.map +1 -0
- package/src/styles/nav/nav.css +21 -1
- package/src/styles/nav/nav.css.map +1 -1
- package/src/styles/tag/tag.css +113 -35
- package/src/styles/tag/tag.css.map +1 -1
- package/src/styles/utilities/_disabled.scss +58 -0
- package/src/test/setup.d.ts +9 -0
- package/src/test/setup.ts +53 -1
- package/src/types/shared.ts +43 -6
- package/src/utils/accessibility.ts +109 -0
- package/libs/chunk-5ZM4XL44.js +0 -8
- package/libs/chunk-5ZM4XL44.js.map +0 -1
- package/libs/chunk-6BVXFW7U.cjs +0 -15
- package/libs/chunk-6BVXFW7U.cjs.map +0 -1
- package/libs/chunk-6TE5QEVE.cjs.map +0 -1
- package/libs/chunk-7K76RW2A.cjs +0 -18
- package/libs/chunk-7K76RW2A.cjs.map +0 -1
- package/libs/chunk-BHRQBJRY.js +0 -8
- package/libs/chunk-BHRQBJRY.js.map +0 -1
- package/libs/chunk-BIP2NY53.js +0 -8
- package/libs/chunk-BIP2NY53.js.map +0 -1
- package/libs/chunk-BSPKFLO4.js +0 -8
- package/libs/chunk-BSPKFLO4.js.map +0 -1
- package/libs/chunk-BV5CLH44.cjs +0 -18
- package/libs/chunk-BV5CLH44.cjs.map +0 -1
- package/libs/chunk-DKGJHKGW.js +0 -9
- package/libs/chunk-DKGJHKGW.js.map +0 -1
- package/libs/chunk-DV56L5YX.cjs +0 -18
- package/libs/chunk-DV56L5YX.cjs.map +0 -1
- package/libs/chunk-ECLD37WN.cjs +0 -16
- package/libs/chunk-ECLD37WN.cjs.map +0 -1
- package/libs/chunk-EQ67LF46.js +0 -9
- package/libs/chunk-EQ67LF46.js.map +0 -1
- package/libs/chunk-HYBZBN4G.js +0 -8
- package/libs/chunk-HYBZBN4G.js.map +0 -1
- package/libs/chunk-IYUN2EW3.cjs +0 -15
- package/libs/chunk-IYUN2EW3.cjs.map +0 -1
- package/libs/chunk-KKLTUJFB.cjs.map +0 -1
- package/libs/chunk-LHVJKDMA.cjs +0 -15
- package/libs/chunk-LHVJKDMA.cjs.map +0 -1
- package/libs/chunk-LL7HTLMS.cjs +0 -15
- package/libs/chunk-LL7HTLMS.cjs.map +0 -1
- package/libs/chunk-M5QL5TAE.cjs +0 -14
- package/libs/chunk-M5QL5TAE.cjs.map +0 -1
- package/libs/chunk-NE6YXTMC.js +0 -7
- package/libs/chunk-NE6YXTMC.js.map +0 -1
- package/libs/chunk-NHYXGV3L.js +0 -8
- package/libs/chunk-NHYXGV3L.js.map +0 -1
- package/libs/chunk-O6QZBB6G.js.map +0 -1
- package/libs/chunk-P7TTEYCD.js +0 -7
- package/libs/chunk-P7TTEYCD.js.map +0 -1
- package/libs/chunk-PPOOBUOS.js +0 -8
- package/libs/chunk-PPOOBUOS.js.map +0 -1
- package/libs/chunk-QCMV4VQZ.js +0 -8
- package/libs/chunk-QCMV4VQZ.js.map +0 -1
- package/libs/chunk-QVV34QEH.cjs +0 -32
- package/libs/chunk-QVV34QEH.cjs.map +0 -1
- package/libs/chunk-S7BABR7Z.cjs +0 -13
- package/libs/chunk-S7BABR7Z.cjs.map +0 -1
- package/libs/chunk-SXVZSWX6.js +0 -11
- package/libs/chunk-SXVZSWX6.js.map +0 -1
- package/libs/chunk-X3EVB7VS.cjs +0 -15
- package/libs/chunk-X3EVB7VS.cjs.map +0 -1
- package/libs/inputs-f3a216db.d.ts +0 -45
- package/libs/ui-9a6f9f8d.d.ts +0 -24
- package/src/components/cards/README.md +0 -80
- package/src/components/dialog/hooks/useClickOutside.ts +0 -33
- /package/libs/{chunk-YWOYVRFT.js.map → chunk-7XPFW7CB.js.map} +0 -0
- /package/libs/{chunk-ICCKQ2GC.cjs.map → chunk-DKTHCQ5P.cjs.map} +0 -0
- /package/libs/{chunk-LIQJ7ZZR.js.map → chunk-IQ76HGVP.js.map} +0 -0
- /package/libs/{chunk-LT5KZ2QW.cjs.map → chunk-US2I5GI7.cjs.map} +0 -0
- /package/libs/{chunk-E3XP6BEX.cjs.map → chunk-W2UIN7EV.cjs.map} +0 -0
- /package/libs/{chunk-5M57K4SW.js.map → chunk-Y2PFDELK.js.map} +0 -0
package/libs/index.d.cts
CHANGED
|
@@ -1,26 +1,330 @@
|
|
|
1
1
|
export { Button, ButtonProps } from './components/button.cjs';
|
|
2
2
|
export { Card, Content as CardContent, Footer as CardFooter, CardProps, Title as CardTitle } from './components/card.cjs';
|
|
3
3
|
export { default as Field, FieldProps } from './components/form/fields.cjs';
|
|
4
|
-
export {
|
|
4
|
+
export { default as Input } from './components/form/inputs.cjs';
|
|
5
5
|
export { default as Icon, IconProps } from './components/icons/icon.cjs';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
export { default as List, ListItemProps } from './components/list/list.cjs';
|
|
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.cjs';
|
|
10
9
|
export { Modal, ModalProps } from './components/modal.cjs';
|
|
11
10
|
export { default as Popover, PopoverProps } from './components/popover/popover.cjs';
|
|
12
11
|
export { RenderTable as TBL, TableProps } from './components/tables/table.cjs';
|
|
13
12
|
export { Dialog } from './components/dialog/dialog.cjs';
|
|
14
|
-
|
|
15
|
-
export {
|
|
16
|
-
export {
|
|
17
|
-
export {
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
import { U as UI } from './ui-d01b50d4.js';
|
|
14
|
+
export { Nav, NavComponent, NavItem, NavItemProps, NavList, NavListProps, NavProps } from './components/nav/nav.cjs';
|
|
15
|
+
export { default as Text, TextProps } from './components/text/text.cjs';
|
|
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.cjs';
|
|
18
|
+
import { C as ComponentProps$1 } from './component-props-67d978a2.js';
|
|
19
|
+
export { default as Breadcrumb, BreadcrumbProps, CustomRoute, useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.cjs';
|
|
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
|
-
|
|
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,
|
|
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 |
|
|
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:
|
|
358
|
+
declare const TextToSpeech: React.FC<TextToSpeechComponentProps>;
|
|
55
359
|
|
|
56
|
-
type ComponentProps =
|
|
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?:
|
|
366
|
+
(children?: React.FC): React.JSX.Element;
|
|
63
367
|
displayName: string;
|
|
64
|
-
Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) =>
|
|
65
|
-
Main: ({ id, children, styles, classes, ...props }: ComponentProps) =>
|
|
66
|
-
Footer: ({ id, classes, children, styles, ...props }: ComponentProps) =>
|
|
67
|
-
Aside: ({ id, children, styles, classes, ...props }: ComponentProps) =>
|
|
68
|
-
Section: ({ id, children, styles, classes, ...props }: ComponentProps) =>
|
|
69
|
-
Article: ({ id, children, styles, classes, ...props }: ComponentProps) =>
|
|
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) =>
|
|
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) =>
|
|
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) =>
|
|
102
|
-
declare const Aside: ({ id, children, styles, classes, ...props }: ComponentProps) =>
|
|
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) =>
|
|
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) =>
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
124
|
-
|
|
125
|
-
|
|
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):
|
|
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):
|
|
712
|
+
({ children, ...props }: ComponentProps$1): React.JSX.Element;
|
|
133
713
|
displayName: string;
|
|
134
714
|
};
|
|
135
715
|
declare const Thead: {
|
|
136
|
-
({ children, ...props }: ComponentProps$1):
|
|
716
|
+
({ children, ...props }: ComponentProps$1): React.JSX.Element;
|
|
137
717
|
displayName: string;
|
|
138
718
|
};
|
|
139
719
|
declare const Tbody: {
|
|
140
|
-
({ children, ...props }: ComponentProps$1):
|
|
720
|
+
({ children, ...props }: ComponentProps$1): React.JSX.Element;
|
|
141
721
|
displayName: string;
|
|
142
722
|
};
|
|
143
723
|
declare const Tr: {
|
|
144
|
-
({ children, ...props }: ComponentProps$1):
|
|
724
|
+
({ children, ...props }: ComponentProps$1): React.JSX.Element;
|
|
145
725
|
displayName: string;
|
|
146
726
|
};
|
|
147
727
|
declare const Td: {
|
|
148
|
-
({ children, ...props }: ComponentProps$1):
|
|
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):
|
|
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
|
|
159
|
-
*
|
|
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:
|
|
767
|
+
summary: React.ReactNode;
|
|
162
768
|
/**
|
|
163
|
-
*
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
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
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
176
|
-
*
|
|
177
|
-
*
|
|
178
|
-
*
|
|
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
|
-
|
|
182
|
-
|
|
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,
|
|
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 };
|