@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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Disabled State Utility Styles
|
|
3
|
+
*
|
|
4
|
+
* Provides accessible styling for disabled form elements using aria-disabled pattern.
|
|
5
|
+
* Meets WCAG 2.1 Level AA requirements for visual distinction and contrast.
|
|
6
|
+
*
|
|
7
|
+
* WCAG References:
|
|
8
|
+
* - WCAG 1.4.3 (Contrast Minimum): UI components require 3:1 contrast minimum
|
|
9
|
+
* - WCAG 2.1.1 (Keyboard): Elements remain focusable via keyboard
|
|
10
|
+
* - WCAG 4.1.2 (Name, Role, Value): aria-disabled properly announces state
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* - Apply .is-disabled class OR aria-disabled="true" attribute
|
|
14
|
+
* - Customize via CSS custom properties (--disabled-opacity, --disabled-cursor, --disabled-color)
|
|
15
|
+
* - Default color (hsl(0 0% 40%)) ensures 3:1 contrast on white backgrounds
|
|
16
|
+
*
|
|
17
|
+
* WARNING: If overriding --disabled-color, ensure WCAG 1.4.3 compliance
|
|
18
|
+
* (minimum 3:1 contrast ratio for UI components)
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
.is-disabled,
|
|
22
|
+
[aria-disabled='true'] {
|
|
23
|
+
/* CSS Custom Properties for theming */
|
|
24
|
+
--disabled-opacity: 0.6;
|
|
25
|
+
--disabled-cursor: not-allowed;
|
|
26
|
+
/* hsl(0 0% 40%) = #666666, provides 3:1 contrast on white (#ffffff) */
|
|
27
|
+
--disabled-color: hsl(0 0% 40%);
|
|
28
|
+
|
|
29
|
+
/* Apply disabled styles */
|
|
30
|
+
opacity: var(--disabled-opacity);
|
|
31
|
+
cursor: var(--disabled-cursor);
|
|
32
|
+
color: var(--disabled-color);
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Maintain focus visibility for keyboard navigation (WCAG 2.4.7)
|
|
36
|
+
* Disabled elements must still be focusable and have visible focus indicators
|
|
37
|
+
*
|
|
38
|
+
* WCAG 2.4.7 requires focus indicators to have 3:1 contrast against both:
|
|
39
|
+
* - The background color
|
|
40
|
+
* - Adjacent non-focused component colors
|
|
41
|
+
*
|
|
42
|
+
* Theme authors: If providing a custom --focus-color, ensure it meets WCAG 2.4.7
|
|
43
|
+
* contrast requirements (3:1 minimum) against all background colors in your theme.
|
|
44
|
+
*
|
|
45
|
+
* Example theme customization:
|
|
46
|
+
* :root {
|
|
47
|
+
* --focus-color: #005fcc; // Ensure 3:1 contrast on your backgrounds
|
|
48
|
+
* }
|
|
49
|
+
*/
|
|
50
|
+
&:focus-visible {
|
|
51
|
+
/* Preserve focus ring from global styles */
|
|
52
|
+
outline-width: 0.125rem; /* 2px */
|
|
53
|
+
outline-style: solid;
|
|
54
|
+
outline-offset: 0.125rem; /* 2px */
|
|
55
|
+
/* Use custom focus color with currentColor fallback */
|
|
56
|
+
outline-color: var(--focus-color, currentColor);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
2
|
+
import type { TestingLibraryMatchers } from '@testing-library/jest-dom/matchers';
|
|
3
|
+
|
|
4
|
+
declare global {
|
|
5
|
+
namespace Vi {
|
|
6
|
+
interface Assertion<T = any> extends TestingLibraryMatchers<typeof expect.stringContaining, T> {}
|
|
7
|
+
interface AsymmetricMatchersContaining extends TestingLibraryMatchers<any, any> {}
|
|
8
|
+
}
|
|
9
|
+
}
|
package/src/test/setup.ts
CHANGED
|
@@ -1,6 +1,58 @@
|
|
|
1
1
|
import '@testing-library/jest-dom'
|
|
2
2
|
|
|
3
3
|
import matchers from '@testing-library/jest-dom/matchers';
|
|
4
|
-
import { expect } from 'vitest';
|
|
4
|
+
import { expect, beforeAll } from 'vitest';
|
|
5
5
|
|
|
6
6
|
expect.extend(matchers);
|
|
7
|
+
|
|
8
|
+
// Mock native <dialog> element methods for testing
|
|
9
|
+
// JSDOM doesn't support HTMLDialogElement methods yet
|
|
10
|
+
beforeAll(() => {
|
|
11
|
+
if (typeof HTMLDialogElement === 'undefined') {
|
|
12
|
+
// HTMLDialogElement not available at all in this environment
|
|
13
|
+
|
|
14
|
+
global.HTMLDialogElement = class HTMLDialogElement extends HTMLElement {
|
|
15
|
+
open = false;
|
|
16
|
+
|
|
17
|
+
showModal() {
|
|
18
|
+
this.open = true;
|
|
19
|
+
this.setAttribute('open', '');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
show() {
|
|
23
|
+
this.open = true;
|
|
24
|
+
this.setAttribute('open', '');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
close() {
|
|
28
|
+
this.open = false;
|
|
29
|
+
this.removeAttribute('open');
|
|
30
|
+
}
|
|
31
|
+
} as unknown as typeof window.HTMLDialogElement;
|
|
32
|
+
} else {
|
|
33
|
+
// HTMLDialogElement exists but methods aren't implemented
|
|
34
|
+
HTMLDialogElement.prototype.showModal =
|
|
35
|
+
HTMLDialogElement.prototype.showModal ||
|
|
36
|
+
function showModal(this: HTMLDialogElement) {
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
38
|
+
(this as any).open = true;
|
|
39
|
+
this.setAttribute('open', '');
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
HTMLDialogElement.prototype.show =
|
|
43
|
+
HTMLDialogElement.prototype.show ||
|
|
44
|
+
function show(this: HTMLDialogElement) {
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
46
|
+
(this as any).open = true;
|
|
47
|
+
this.setAttribute('open', '');
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
HTMLDialogElement.prototype.close =
|
|
51
|
+
HTMLDialogElement.prototype.close ||
|
|
52
|
+
function close(this: HTMLDialogElement) {
|
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
54
|
+
(this as any).open = false;
|
|
55
|
+
this.removeAttribute('open');
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
package/src/types/shared.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface ComponentProps {
|
|
|
14
14
|
/**
|
|
15
15
|
* Styles object
|
|
16
16
|
*/
|
|
17
|
-
styles?:
|
|
17
|
+
styles?: React.CSSProperties
|
|
18
18
|
/**
|
|
19
19
|
* Component class attribute
|
|
20
20
|
*/
|
|
@@ -25,7 +25,48 @@ export interface ComponentProps {
|
|
|
25
25
|
dataStyle?: string
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
/**
|
|
29
|
+
* Props for disabled state management across components.
|
|
30
|
+
*
|
|
31
|
+
* Supports both modern `disabled` and legacy `isDisabled` props for
|
|
32
|
+
* backward compatibility.
|
|
33
|
+
*
|
|
34
|
+
* @see {@link https://www.w3.org/WAI/WCAG21/Understanding/keyboard WCAG 2.1.1 - Keyboard}
|
|
35
|
+
* @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value WCAG 4.1.2 - Name, Role, Value}
|
|
36
|
+
*/
|
|
37
|
+
export interface DisabledStateProps {
|
|
38
|
+
/**
|
|
39
|
+
* Disables the component, preventing user interaction while maintaining
|
|
40
|
+
* keyboard focusability and screen reader accessibility.
|
|
41
|
+
*
|
|
42
|
+
* Uses `aria-disabled` pattern instead of native `disabled` attribute to:
|
|
43
|
+
* - Keep elements in keyboard tab order (WCAG 2.1.1)
|
|
44
|
+
* - Allow screen readers to discover and announce disabled state
|
|
45
|
+
* - Enable tooltips and contextual help on disabled elements
|
|
46
|
+
* - Provide better visual styling control
|
|
47
|
+
*
|
|
48
|
+
* @default false
|
|
49
|
+
*/
|
|
50
|
+
disabled?: boolean
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Legacy disabled prop for backward compatibility.
|
|
54
|
+
*
|
|
55
|
+
* @deprecated Use `disabled` instead. This prop will be removed in v3.0.
|
|
56
|
+
*
|
|
57
|
+
* @migration Replace `isDisabled={true}` with `disabled={true}`
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* // Before
|
|
61
|
+
* <Button isDisabled={true}>Click me</Button>
|
|
62
|
+
*
|
|
63
|
+
* // After
|
|
64
|
+
* <Button disabled={true}>Click me</Button>
|
|
65
|
+
*/
|
|
66
|
+
isDisabled?: boolean
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface SharedInputProps extends ComponentProps, DisabledStateProps {
|
|
29
70
|
/**
|
|
30
71
|
* The input name
|
|
31
72
|
*/
|
|
@@ -46,10 +87,6 @@ export interface SharedInputProps extends ComponentProps {
|
|
|
46
87
|
* Input id attribute
|
|
47
88
|
*/
|
|
48
89
|
id: string
|
|
49
|
-
/**
|
|
50
|
-
* Set the element as disabled
|
|
51
|
-
*/
|
|
52
|
-
disabled?: boolean
|
|
53
90
|
/**
|
|
54
91
|
* Set the element as readonly
|
|
55
92
|
*/
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accessibility utility functions for fpkit components.
|
|
3
|
+
*
|
|
4
|
+
* These utilities support WCAG 2.1 Level AA compliance for disabled states
|
|
5
|
+
* and other accessibility features.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* CSS properties for disabled state styling.
|
|
10
|
+
*
|
|
11
|
+
* Returns a CSS-in-JS compatible style object for programmatic styling
|
|
12
|
+
* of disabled elements. Meets WCAG 1.4.3 contrast minimum (3:1 for UI components).
|
|
13
|
+
*
|
|
14
|
+
* @param {boolean} isDisabled - Whether the element is disabled
|
|
15
|
+
* @returns {React.CSSProperties} Style object with disabled state properties
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const MyComponent = ({ disabled }) => {
|
|
19
|
+
* const disabledStyles = getDisabledStyles(disabled);
|
|
20
|
+
* return <div style={disabledStyles}>Content</div>;
|
|
21
|
+
* };
|
|
22
|
+
*
|
|
23
|
+
* @see {@link https://www.w3.org/WAI/WCAG21/Understanding/contrast-minimum WCAG 1.4.3 - Contrast (Minimum)}
|
|
24
|
+
*/
|
|
25
|
+
export function getDisabledStyles(isDisabled: boolean): React.CSSProperties {
|
|
26
|
+
if (!isDisabled) {
|
|
27
|
+
return {};
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
// hsl(0 0% 40%) = #666666, provides 3:1 contrast on white (#ffffff)
|
|
32
|
+
color: 'var(--disabled-color, hsl(0 0% 40%))',
|
|
33
|
+
// CSS custom properties require string casting for TypeScript compatibility
|
|
34
|
+
opacity: 'var(--disabled-opacity, 0.6)' as unknown as number,
|
|
35
|
+
cursor: 'var(--disabled-cursor, not-allowed)' as unknown as React.CSSProperties['cursor'],
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Wraps a single event handler to prevent execution when disabled.
|
|
41
|
+
*
|
|
42
|
+
* This is a generic utility for advanced use cases where the `useDisabledState`
|
|
43
|
+
* hook cannot be used (e.g., class components, custom event types).
|
|
44
|
+
*
|
|
45
|
+
* @template E - The React synthetic event type
|
|
46
|
+
* @param {Function | undefined} handler - The event handler to wrap
|
|
47
|
+
* @param {boolean} isDisabled - Whether to prevent handler execution
|
|
48
|
+
* @returns {Function | undefined} Wrapped handler or undefined if no handler provided
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* // Custom event handler in class component
|
|
52
|
+
* class MyComponent extends React.Component {
|
|
53
|
+
* handleCustomEvent = wrapEventHandler(this.onCustomEvent, this.props.disabled);
|
|
54
|
+
* }
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* // Custom event type not supported by useDisabledState
|
|
58
|
+
* const handleCustom = wrapEventHandler(
|
|
59
|
+
* (e: CustomEvent) => console.log('custom'),
|
|
60
|
+
* disabled
|
|
61
|
+
* );
|
|
62
|
+
*/
|
|
63
|
+
export function wrapEventHandler<E extends React.SyntheticEvent>(
|
|
64
|
+
handler: ((event: E) => void) | undefined,
|
|
65
|
+
isDisabled: boolean
|
|
66
|
+
): ((event: E) => void) | undefined {
|
|
67
|
+
if (!handler) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return (event: E) => {
|
|
72
|
+
if (isDisabled) {
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
handler(event);
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Resolves the effective disabled state from multiple props.
|
|
83
|
+
*
|
|
84
|
+
* Handles backward compatibility with legacy `isDisabled` prop.
|
|
85
|
+
* The `disabled` prop takes precedence when both are provided.
|
|
86
|
+
*
|
|
87
|
+
* @param {boolean | undefined} disabled - Modern disabled prop
|
|
88
|
+
* @param {boolean | undefined} isDisabled - Legacy disabled prop (deprecated)
|
|
89
|
+
* @returns {boolean} The resolved disabled state (defaults to false)
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* const MyComponent = ({ disabled, isDisabled }) => {
|
|
93
|
+
* const isActuallyDisabled = resolveDisabledState(disabled, isDisabled);
|
|
94
|
+
* // Use isActuallyDisabled for logic
|
|
95
|
+
* };
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* // disabled takes precedence
|
|
99
|
+
* resolveDisabledState(true, false); // true
|
|
100
|
+
* resolveDisabledState(false, true); // false
|
|
101
|
+
* resolveDisabledState(undefined, true); // true
|
|
102
|
+
*/
|
|
103
|
+
export function resolveDisabledState(
|
|
104
|
+
disabled: boolean | undefined,
|
|
105
|
+
isDisabled: boolean | undefined
|
|
106
|
+
): boolean {
|
|
107
|
+
// disabled prop takes precedence, fall back to isDisabled, default to false
|
|
108
|
+
return disabled ?? isDisabled ?? false;
|
|
109
|
+
}
|
package/libs/chunk-5ZM4XL44.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { a as a$1 } from './chunk-NE6YXTMC.js';
|
|
2
|
-
import m from 'react';
|
|
3
|
-
|
|
4
|
-
var a=({href:i,target:e,rel:p,children:l,styles:s,prefetch:t,btnStyle:c,onPointerDown:n,...f})=>{let r=p;return e==="_blank"&&(r=`noopener noreferrer ${t?"prefetch":""}`),m.createElement(a$1,{as:"a",href:i,target:e,styles:s,rel:r,onPointerDown:h=>{n&&n?.(h);},"data-btn":c,prefetch:t,...f},l)},y=a;a.displayName="Link";
|
|
5
|
-
|
|
6
|
-
export { a, y as b };
|
|
7
|
-
//# sourceMappingURL=out.js.map
|
|
8
|
-
//# sourceMappingURL=chunk-5ZM4XL44.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/link/link.tsx"],"names":["React","Link","href","target","rel","children","styles","prefetch","btnStyle","onPointerDown","props","relValue","ui_default","e","link_default"],"mappings":"wCACA,OAAOA,MAAW,QAqBX,IAAMC,EAAO,CAAC,CACnB,KAAAC,EACA,OAAAC,EACA,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,SAAAC,EACA,SAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAAiB,CACf,IAAIC,EAAWP,EAEf,OAAID,IAAW,WACbQ,EAAW,uBAAuBJ,EAAW,WAAa,EAAE,IAO5DP,EAAA,cAACY,EAAA,CACC,GAAG,IACH,KAAMV,EACN,OAAQC,EACR,OAAQG,EACR,IAAKK,EACL,cAXyBE,GAA6C,CACpEJ,GAAeA,IAAgBI,CAAC,CACtC,EAUI,WAAUL,EACV,SAAUD,EACT,GAAGG,GAEHL,CACH,CAEJ,EAEOS,EAAQb,EACfA,EAAK,YAAc","sourcesContent":["import UI from \"../ui\";\nimport React from \"react\";\n\nexport type LinkProps = {\n href?: string;\n\n target?: string;\n\n rel?: string;\n\n children: React.ReactNode;\n\n styles?: React.CSSProperties;\n\n prefetch?: boolean;\n\n btnStyle?: string;\n\n onPointerDown?: (event: React.PointerEvent<HTMLAnchorElement>) => void;\n} & React.ComponentProps<typeof UI> &\n React.ComponentProps<\"a\">;\n\nexport const Link = ({\n href,\n target,\n rel,\n children,\n styles,\n prefetch,\n btnStyle,\n onPointerDown,\n ...props\n}: LinkProps) => {\n let relValue = rel;\n\n if (target === \"_blank\")\n relValue = `noopener noreferrer ${prefetch ? \"prefetch\" : \"\"}`;\n\n const handleOnpointerDown = (e: React.PointerEvent<HTMLAnchorElement>) => {\n if (onPointerDown) onPointerDown?.(e);\n };\n\n return (\n <UI\n as=\"a\"\n href={href}\n target={target}\n styles={styles}\n rel={relValue}\n onPointerDown={handleOnpointerDown}\n data-btn={btnStyle}\n prefetch={prefetch}\n {...props}\n >\n {children}\n </UI>\n );\n};\n\nexport default Link;\nLink.displayName = \"Link\";\n"]}
|
package/libs/chunk-6BVXFW7U.cjs
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunk6TE5QEVE_cjs = require('./chunk-6TE5QEVE.cjs');
|
|
4
|
-
var t = require('react');
|
|
5
|
-
|
|
6
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
var t__default = /*#__PURE__*/_interopDefault(t);
|
|
9
|
-
|
|
10
|
-
var l=({label:o,labelFor:a,id:r,styles:p,classes:d,children:s,...i})=>t__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"div",id:r,styles:p,className:d,"data-style":"fields",...i},t__default.default.createElement("label",{htmlFor:a},o),s),n=l;l.displayName="Field";
|
|
11
|
-
|
|
12
|
-
exports.a = l;
|
|
13
|
-
exports.b = n;
|
|
14
|
-
//# sourceMappingURL=out.js.map
|
|
15
|
-
//# sourceMappingURL=chunk-6BVXFW7U.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields.tsx"],"names":["React","Field","label","labelFor","id","styles","classes","children","props","ui_default","fields_default"],"mappings":"yCAAA,OAAOA,MAAW,QAmBX,IAAMC,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,GAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAEIR,EAAA,cAACS,EAAA,CACC,GAAG,MACH,GAAIL,EACJ,OAAQC,EACR,UAAWC,EACX,aAAW,SACV,GAAGE,GAEJR,EAAA,cAAC,SAAM,QAASG,GAAWD,CAAM,EAChCK,CACH,EAIGG,EAAQT,EACfA,EAAM,YAAc","sourcesContent":["import React from 'react'\nimport UI from '../ui'\n\nexport type FieldProps = {\n /**\n * The label content\n */\n label: React.ReactNode\n children: React.ReactNode\n} & React.ComponentProps<'label'> &\n Partial<React.ComponentProps<typeof UI>>\n/**\n * Field component that renders a label and children wrapped in a div element.\n * @param labelFor Defines the for attribute of the label element\n * @param styles Custom styles to be applied to the component\n * @param label The label content\n * @param children The children to be rendered inside the component\n * @param props Additional props to be spread to the component\n */\nexport const Field = ({\n label,\n labelFor,\n id,\n styles,\n classes,\n children,\n ...props\n}: FieldProps) => {\n return (\n <UI\n as=\"div\"\n id={id}\n styles={styles}\n className={classes}\n data-style=\"fields\"\n {...props}\n >\n <label htmlFor={labelFor}>{label}</label>\n {children}\n </UI>\n )\n}\n\nexport default Field\nField.displayName = 'Field'\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/ui.tsx"],"names":["React","FP","as","styles","classes","children","defaultStyles","props","ref","Component","styleObj","ui_default"],"mappings":"AAEA,OAAOA,MAAW,QAgDlB,IAAMC,EAAkBD,EAAM,WAC5B,CACE,CAAE,GAAAE,EAAI,OAAAC,EAAQ,QAAAC,EAAS,SAAAC,EAAU,cAAAC,EAAe,GAAGC,CAAM,EACzDC,IACG,CACH,IAAMC,EAAYP,GAAM,MAElBQ,EAAgC,CAAE,GAAGJ,EAAe,GAAGH,CAAO,EAEpE,OACEH,EAAA,cAACS,EAAA,CAAU,IAAKD,EAAK,MAAOE,EAAU,UAAWN,EAAU,GAAGG,GAC3DF,CACH,CAEJ,CACF,EAEOM,EAAQV,EAEfA,EAAG,YAAc","sourcesContent":[" \n/* eslint-disable */\nimport React from \"react\";\n\ntype PolymorphicRef<C extends React.ElementType> =\n React.ComponentPropsWithRef<C>[\"ref\"];\n\ntype AsProp<C extends React.ElementType> = {\n as?: C;\n};\n\ntype PropsToOmit<C extends React.ElementType, P> = keyof (AsProp<C> & P);\n\ntype PolymorphicComponentProp<\n C extends React.ElementType,\n Props = {},\n> = React.PropsWithChildren<Props & AsProp<C>> &\n Omit<React.ComponentPropsWithoutRef<C>, PropsToOmit<C, Props>>;\n\ntype PolymorphicComponentPropWithRef<\n C extends React.ElementType,\n Props = {},\n> = PolymorphicComponentProp<C, Props> & {\n ref?: PolymorphicRef<C>;\n};\n\ntype FPProps<C extends React.ElementType> = PolymorphicComponentPropWithRef<\n C,\n {\n renderStyles?: boolean;\n styles?: React.CSSProperties;\n classes?: string;\n id?: string;\n children?: React.ReactNode;\n }\n>;\n\n/*\n * FPComponent type definition\n *\n * Defines the component function signature for the FP component.\n *\n * @typeParam C - The HTML element type to render\n * @param props - The component props\n * @returns React component\n */\ntype FPComponent = <C extends React.ElementType = \"span\">(\n props: FPProps<C>\n) => React.ReactElement | (any & { displayName?: String });\n\nconst FP: FPComponent = React.forwardRef(\n <C extends React.ElementType>(\n { as, styles, classes, children, defaultStyles, ...props }: FPProps<C>,\n ref?: PolymorphicRef<C>\n ) => {\n const Component = as ?? \"div\";\n\n const styleObj: React.CSSProperties = { ...defaultStyles, ...styles };\n\n return (\n <Component ref={ref} style={styleObj} className={classes} {...props}>\n {children}\n </Component>\n );\n }\n);\n\nexport default FP;\n// @ts-expect-error -- React component displayName\nFP.displayName = \"FP\";\n"]}
|
package/libs/chunk-7K76RW2A.cjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkM5QL5TAE_cjs = require('./chunk-M5QL5TAE.cjs');
|
|
4
|
-
var chunkKKLTUJFB_cjs = require('./chunk-KKLTUJFB.cjs');
|
|
5
|
-
var chunkLHVJKDMA_cjs = require('./chunk-LHVJKDMA.cjs');
|
|
6
|
-
var chunk6TE5QEVE_cjs = require('./chunk-6TE5QEVE.cjs');
|
|
7
|
-
var r = require('react');
|
|
8
|
-
|
|
9
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
|
|
11
|
-
var r__default = /*#__PURE__*/_interopDefault(r);
|
|
12
|
-
|
|
13
|
-
var k=({dialogTitle:e,onClick:o,type:i="h3"})=>r__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"div",classes:"dialog-header"},r__default.default.createElement(chunkM5QL5TAE_cjs.a,{type:i,className:"dialog-title"},e||"Dialog"),r__default.default.createElement(chunkLHVJKDMA_cjs.b,{type:"button",onClick:()=>{o();},className:"dialog-close","aria-label":"Close dialog","data-btn":"icon"},r__default.default.createElement(chunkKKLTUJFB_cjs.b,null,r__default.default.createElement(chunkKKLTUJFB_cjs.b.Remove,{size:16})))),y=r__default.default.memo(k);k.displayName="DialogHeader";var E=({onClose:e,onConfirm:o,confirmLabel:i,cancelLabel:t})=>r__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"section",className:"dialog-footer"},t&&r__default.default.createElement(chunkLHVJKDMA_cjs.b,{type:"button",onClick:e,className:"dialog-button button-secondary","data-btn":"sm"},t),o&&r__default.default.createElement(chunkLHVJKDMA_cjs.b,{type:"button",onClick:o,className:"dialog-button button-primary","data-btn":"sm"},i)),P=E;var H=(e,o)=>r.useCallback(t=>{let l=e.current?.getBoundingClientRect();l&&(t.clientY<l.top||t.clientY>l.bottom||t.clientX<l.left||t.clientX>l.right)&&o();},[e,o]);var x=({showDialog:e,isAlertDialog:o,onClose:i,dialogTitle:t,dialogLabel:l,children:u,onConfirm:h,confirmLabel:I="Confirm",cancelLabel:L="Cancel",className:C="",hideFooter:N,styles:M})=>{let m=r.useRef(null),[g,b]=r__default.default.useState(e);r.useEffect(()=>{b(e);},[e]),r.useEffect(()=>{let n=m.current;n&&(g?o?n.show():n.showModal():n.close());},[g,o]);let c=()=>{i&&i(),b(!1);},U=H(m,c);return r__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"dialog",role:o?"alertdialog":"dialog",ref:m,onClose:c,onClick:U,"aria-modal":g?"true":void 0,className:`dialog-modal ${C}`,"aria-label":l,style:M},r__default.default.createElement(y,{dialogTitle:t,onClick:c}),r__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"section",className:`dialog-content ${C}`,onClick:n=>n.stopPropagation()},u,!N&&r__default.default.createElement(P,{onClose:c,onConfirm:h,confirmLabel:I,cancelLabel:L})))},A=r__default.default.memo(x);
|
|
14
|
-
|
|
15
|
-
exports.a = x;
|
|
16
|
-
exports.b = A;
|
|
17
|
-
//# sourceMappingURL=out.js.map
|
|
18
|
-
//# sourceMappingURL=chunk-7K76RW2A.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/dialog/dialog.tsx","../src/components/dialog/views/dialog-header.tsx","../src/components/dialog/views/dialog-footer.tsx","../src/hooks/useDialogClickHandler.ts"],"names":["React","useRef","useEffect","DialogHeader","dialogTitle","onClick","type","ui_default","heading_default","button_default","icon_default","dialog_header_default","DialogFooter","onClose","onConfirm","confirmLabel","cancelLabel","dialog_footer_default","useCallback","useDialogClickHandler","dialogRef","handleClose","e","dialogDimensions","Dialog","showDialog","isAlertDialog","dialogLabel","children","className","hideFooter","styles","isOpen","setIsOpen","dialog","handleClickOutside","dialog_default"],"mappings":"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","sourcesContent":["import React, { useRef, useEffect, CSSProperties } from \"react\";\nimport UI from \"#components/ui\";\nimport DialogHeader from \"#components/dialog/views/dialog-header\";\nimport DialogFooter from \"#components/dialog/views/dialog-footer\";\nimport { useDialogClickHandler } from \"#hooks/useDialogClickHandler.js\";\n\n/**\n * Defines the props for the Dialog component.\n *\n * @property {boolean} [showDialog] - Determines whether the dialog should be shown.\n * @property {boolean} [isAlertDialog] - Determines whether the dialog should be displayed as an alert dialog.\n * @property {() => void} [onClose] - A callback function to be called when the dialog is closed.\n * @property {string} dialogTitle - The title of the dialog.\n * @property {string} [dialogLabel] - An optional label for the dialog.\n * @property {React.ReactNode} children - The content to be displayed inside the dialog.\n * @property {() => void | Promise<void>} [onConfirm] - A callback function to be called when the user confirms the dialog.\n * @property {string} [confirmLabel] - The label for the confirm button.\n * @property {string} [cancelLabel] - The label for the cancel button.\n * @property {string} [className] - An optional CSS class name to be applied to the dialog.\n * @property {CSSProperties} [styles] - Optional inline styles to be applied to the dialog.\n */\ntype DialogModalProps = React.ComponentProps<typeof UI> &\n React.ComponentProps<\"dialog\"> & {\n dialogTitle: string;\n dialogLabel?: string;\n children: React.ReactNode;\n showDialog?: boolean;\n isAlertDialog?: boolean;\n onClose?: () => void;\n onConfirm?: () => void | Promise<void>;\n confirmLabel?: string;\n cancelLabel?: string;\n className?: string;\n hideFooter?: boolean;\n styles?: CSSProperties;\n };\n\n/**\n * Renders a dialog modal component with customizable content and behavior.\n *\n * @param showDialog - Determines whether the dialog should be shown.\n * @param isAlertDialog - Determines whether the dialog should be displayed as an alert dialog.\n * @param onClose - A callback function to be called when the dialog is closed.\n * @param dialogTitle - The title of the dialog.\n * @param dialogLabel - An optional label for the dialog.\n * @param children - The content to be displayed inside the dialog.\n * @param onConfirm - A callback function to be called when the user confirms the dialog.\n * @param confirmLabel - The label for the confirm button.\n * @param cancelLabel - The label for the cancel button.\n * @param className - An optional CSS class name to be applied to the dialog.\n * @param styles - Optional inline styles to be applied to the dialog.\n */\nexport const Dialog: React.FC<DialogModalProps> = ({\n showDialog,\n isAlertDialog,\n onClose,\n dialogTitle,\n dialogLabel,\n children,\n onConfirm,\n confirmLabel = \"Confirm\",\n cancelLabel = \"Cancel\",\n className = \"\",\n hideFooter,\n styles,\n}) => {\n const dialogRef = useRef<HTMLDialogElement>(null);\n const [isOpen, setIsOpen] = React.useState(showDialog);\n\n useEffect(() => {\n setIsOpen(showDialog);\n }, [showDialog]);\n\n useEffect(() => {\n const dialog = dialogRef.current;\n if (!dialog) return;\n\n if (isOpen) {\n if (isAlertDialog) {\n dialog.show();\n } else {\n dialog.showModal();\n }\n } else {\n dialog.close();\n }\n }, [isOpen, isAlertDialog]);\n\n const handleClose = () => {\n if (onClose) onClose();\n setIsOpen(false);\n };\n\n const handleClickOutside = useDialogClickHandler(dialogRef, handleClose);\n\n return (\n <UI\n as=\"dialog\"\n role={isAlertDialog ? \"alertdialog\" : \"dialog\"}\n ref={dialogRef}\n onClose={handleClose}\n onClick={handleClickOutside}\n aria-modal={isOpen ? \"true\" : undefined}\n className={`${\"dialog-modal\"} ${className}`}\n aria-label={dialogLabel}\n style={styles}\n >\n <DialogHeader dialogTitle={dialogTitle} onClick={handleClose} />\n\n <UI\n as=\"section\"\n className={`dialog-content ${className}`}\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n >\n {children}\n {!hideFooter && (\n <DialogFooter\n onClose={handleClose}\n onConfirm={onConfirm}\n confirmLabel={confirmLabel}\n cancelLabel={cancelLabel}\n />\n )}\n </UI>\n </UI>\n );\n};\nexport default React.memo(Dialog);\n","import React from \"react\";\nimport UI from \"#components/ui\";\nimport Heading from \"#components/heading/heading\";\nimport Button from \"#components/buttons/button\";\nimport Icon from \"#components/icons/icon\";\n\nexport type DialogHeaderProps = {\n dialogTitle: string;\n onClick: () => void;\n} & React.ComponentProps<typeof Heading>;\n\n/**\n * DialogHeader component displays the header section of a dialog with a title and close button.\n *\n * @component\n * @param {Object} props - Component props\n * @param {string} props.dialogTitle - The title text to display in the dialog header\n * @param {() => void} props.onClick - Callback function triggered when close button is clicked\n * @param {string} [props.type='h3'] - Heading type/level to use for the title\n * @returns {JSX.Element} A dialog header with title and close button\n *\n * @example\n * ```jsx\n * <DialogHeader\n * dialogTitle=\"Confirm Action\"\n * onClick={() => setIsOpen(false)}\n * type=\"h2\"\n * />\n * ```\n */\n\nconst DialogHeader = ({\n dialogTitle,\n onClick,\n type = \"h3\",\n}: DialogHeaderProps): JSX.Element => {\n const handleClose = () => {\n onClick();\n };\n return (\n <UI as=\"div\" classes=\"dialog-header\">\n <Heading type={type} className=\"dialog-title\">\n {dialogTitle || \"Dialog\"}\n </Heading>\n <Button\n type=\"button\"\n onClick={handleClose}\n className=\"dialog-close\"\n aria-label=\"Close dialog\"\n data-btn=\"icon\"\n >\n <Icon>\n <Icon.Remove size={16} />\n </Icon>\n </Button>\n </UI>\n );\n};\n\nexport default React.memo(DialogHeader);\nDialogHeader.displayName = \"DialogHeader\";\n","import React from \"react\";\nimport UI from \"#components/ui\";\nimport Button from \"#components/buttons/button\";\n\ntype DialogFooterProps = {\n onClose: () => void;\n onConfirm?: () => void | Promise<void>;\n confirmLabel: string;\n cancelLabel: string;\n};\n\nconst DialogFooter: React.FC<DialogFooterProps> = ({\n onClose,\n onConfirm,\n confirmLabel,\n cancelLabel,\n}) => {\n return (\n <UI as=\"section\" className=\"dialog-footer\">\n {cancelLabel && (\n <Button\n type=\"button\"\n onClick={onClose}\n className=\"dialog-button button-secondary\"\n data-btn=\"sm\"\n >\n {cancelLabel}\n </Button>\n )}\n\n {onConfirm && (\n <Button\n type=\"button\"\n onClick={onConfirm}\n className=\"dialog-button button-primary\"\n data-btn=\"sm\"\n >\n {confirmLabel}\n </Button>\n )}\n </UI>\n );\n};\n\nexport default DialogFooter;\n","import { useCallback, RefObject } from \"react\";\n\nexport const useDialogClickHandler = (\n dialogRef: RefObject<HTMLDialogElement>,\n handleClose: () => void\n) => {\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDialogElement>) => {\n const dialogDimensions = dialogRef.current?.getBoundingClientRect();\n if (dialogDimensions) {\n const isClickOutside =\n e.clientY < dialogDimensions.top ||\n e.clientY > dialogDimensions.bottom ||\n e.clientX < dialogDimensions.left ||\n e.clientX > dialogDimensions.right;\n\n if (isClickOutside) {\n handleClose();\n }\n }\n },\n [dialogRef, handleClose]\n );\n\n return handleClick;\n};\n"]}
|
package/libs/chunk-BHRQBJRY.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { a } from './chunk-P7TTEYCD.js';
|
|
2
|
-
import R from 'react';
|
|
3
|
-
|
|
4
|
-
var m=({type:a$1="text",name:c,value:i,placeholder:d,id:f,styles:y,classes:I,isDisabled:p,disabled:t,readonly:r,required:n,ref:h,onChange:o,onBlur:l,onPointerDown:u,...E})=>{let x=e=>{o&&!t&&o?.(e);},v=e=>{l&&!t&&l?.(e);},P=e=>{u&&!t&&(e.preventDefault(),u?.(e));};return R.createElement(a,{as:"input",id:f,type:a$1,placeholder:d||`${n?"*":""} ${a$1} input `,className:I,styles:y,onChange:x,onBlur:v,onKeyDown:P,value:i,name:c,ref:h,"aria-disabled":p,tabIndex:p?-1:void 0,"aria-readonly":r,"aria-required":n,required:n,readOnly:r,...E})};m.displayName="Input";var F=m;
|
|
5
|
-
|
|
6
|
-
export { m as a, F as b };
|
|
7
|
-
//# sourceMappingURL=out.js.map
|
|
8
|
-
//# sourceMappingURL=chunk-BHRQBJRY.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/inputs.tsx"],"names":["React","Input","type","name","value","placeholder","id","styles","classes","isDisabled","disabled","readonly","required","ref","onChange","onBlur","onPointerDown","props","handleChange","handleBlur","handleKeyDown","fp_default","inputs_default"],"mappings":"wCAAA,OAAOA,MAAW,QAeX,IAAMC,EAAQ,CAAC,CACpB,KAAAC,EAAO,OACP,KAAAC,EACA,MAAAC,EACA,YAAAC,EACA,GAAAC,EACA,OAAAC,EACA,QAAAC,EACA,WAAAC,EACA,SAAAC,EACA,SAAAC,EACA,SAAAC,EACA,IAAAC,EACA,SAAAC,EACA,OAAAC,EACA,cAAAC,EACA,GAAGC,CACL,IAA+B,CAC7B,IAAMC,EAAgB,GAA2C,CAC3DJ,GAAY,CAACJ,GACfI,IAAW,CAAC,CAEhB,EAEMK,EAAc,GAA0C,CACxDJ,GAAU,CAACL,GACbK,IAAS,CAAC,CAEd,EAEMK,EAAiB,GAA6C,CAC9DJ,GAAiB,CAACN,IACpB,EAAE,eAAe,EACjBM,IAAgB,CAAC,EAErB,EAEA,OACEhB,EAAA,cAACqB,EAAA,CACC,GAAG,QACH,GAAIf,EACJ,KAAMJ,EACN,YAAaG,GAAe,GAAGO,EAAW,IAAM,EAAE,IAAIV,CAAI,UAC1D,UAAWM,EACX,OAAQD,EACR,SAAUW,EACV,OAAQC,EACR,UAAWC,EACX,MAAOhB,EACP,KAAMD,EACN,IAAKU,EACL,gBAAeJ,EACf,SAAUA,EAAa,GAAK,OAC5B,gBAAeE,EACf,gBAAeC,EACf,SAAUA,EACV,SAAUD,EACT,GAAGM,EACN,CAEJ,EACAhB,EAAM,YAAc,QACpB,IAAOqB,EAAQrB","sourcesContent":["import React from \"react\";\nimport FP from \"../fp\";\n\nexport type InputProps = {\n /**\n * The type of the input.\n */\n type?: \"text\" | \"password\" | \"email\" | \"number\" | \"tel\" | \"url\" | \"search\";\n\n /**\n * Set the element as disabled\n */\n isDisabled?: boolean;\n} & React.ComponentProps<typeof FP>;\n\nexport const Input = ({\n type = \"text\",\n name,\n value,\n placeholder,\n id,\n styles,\n classes,\n isDisabled,\n disabled,\n readonly,\n required,\n ref,\n onChange,\n onBlur,\n onPointerDown,\n ...props\n}: InputProps): JSX.Element => {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange && !disabled) {\n onChange?.(e);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n if (onBlur && !disabled) {\n onBlur?.(e);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (onPointerDown && !disabled) {\n e.preventDefault();\n onPointerDown?.(e);\n }\n };\n\n return (\n <FP\n as=\"input\"\n id={id}\n type={type}\n placeholder={placeholder || `${required ? \"*\" : \"\"} ${type} input `}\n className={classes}\n styles={styles}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n value={value}\n name={name}\n ref={ref}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n aria-readonly={readonly}\n aria-required={required}\n required={required}\n readOnly={readonly}\n {...props}\n />\n );\n};\nInput.displayName = \"Input\";\nexport default Input;\n"]}
|
package/libs/chunk-BIP2NY53.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { a } from './chunk-NE6YXTMC.js';
|
|
2
|
-
import t from 'react';
|
|
3
|
-
|
|
4
|
-
var l=({label:o,labelFor:a$1,id:r,styles:p,classes:d,children:s,...i})=>t.createElement(a,{as:"div",id:r,styles:p,className:d,"data-style":"fields",...i},t.createElement("label",{htmlFor:a$1},o),s),n=l;l.displayName="Field";
|
|
5
|
-
|
|
6
|
-
export { l as a, n as b };
|
|
7
|
-
//# sourceMappingURL=out.js.map
|
|
8
|
-
//# sourceMappingURL=chunk-BIP2NY53.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/fields.tsx"],"names":["React","Field","label","labelFor","id","styles","classes","children","props","ui_default","fields_default"],"mappings":"wCAAA,OAAOA,MAAW,QAmBX,IAAMC,EAAQ,CAAC,CACpB,MAAAC,EACA,SAAAC,EACA,GAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAC,EACA,GAAGC,CACL,IAEIR,EAAA,cAACS,EAAA,CACC,GAAG,MACH,GAAIL,EACJ,OAAQC,EACR,UAAWC,EACX,aAAW,SACV,GAAGE,GAEJR,EAAA,cAAC,SAAM,QAASG,GAAWD,CAAM,EAChCK,CACH,EAIGG,EAAQT,EACfA,EAAM,YAAc","sourcesContent":["import React from 'react'\nimport UI from '../ui'\n\nexport type FieldProps = {\n /**\n * The label content\n */\n label: React.ReactNode\n children: React.ReactNode\n} & React.ComponentProps<'label'> &\n Partial<React.ComponentProps<typeof UI>>\n/**\n * Field component that renders a label and children wrapped in a div element.\n * @param labelFor Defines the for attribute of the label element\n * @param styles Custom styles to be applied to the component\n * @param label The label content\n * @param children The children to be rendered inside the component\n * @param props Additional props to be spread to the component\n */\nexport const Field = ({\n label,\n labelFor,\n id,\n styles,\n classes,\n children,\n ...props\n}: FieldProps) => {\n return (\n <UI\n as=\"div\"\n id={id}\n styles={styles}\n className={classes}\n data-style=\"fields\"\n {...props}\n >\n <label htmlFor={labelFor}>{label}</label>\n {children}\n </UI>\n )\n}\n\nexport default Field\nField.displayName = 'Field'\n"]}
|
package/libs/chunk-BSPKFLO4.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { a } from './chunk-NE6YXTMC.js';
|
|
2
|
-
import i from 'react';
|
|
3
|
-
|
|
4
|
-
var c=({children:e,className:t,styles:s,as:a$1="h3",...l})=>i.createElement(a,{as:a$1,className:`card-title ${t||""}`,styles:s,...l},e);c.displayName="Title";var n=({children:e,className:t,styles:s,...a$1})=>i.createElement(a,{as:"article",className:`card-content ${t||""}`,styles:s,...a$1},e);n.displayName="Content";var d=({children:e,className:t,styles:s,...a$1})=>i.createElement(a,{as:"div",className:`card-footer ${t||""}`,styles:s,...a$1},e);d.displayName="Footer";var o=({elm:e="div",styles:t,children:s,classes:a$1="shadow",id:l,...p})=>i.createElement(a,{as:e,id:l,styles:t,className:a$1,"data-card":!0,...p},s),C=o;o.displayName="Card";o.Title=c;o.Content=n;o.Footer=d;
|
|
5
|
-
|
|
6
|
-
export { c as a, n as b, d as c, o as d, C as e };
|
|
7
|
-
//# sourceMappingURL=out.js.map
|
|
8
|
-
//# sourceMappingURL=chunk-BSPKFLO4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/cards/card.tsx"],"names":["React","Title","children","className","styles","as","props","ui_default","Content","Footer","Card","elm","classes","id","card_default"],"mappings":"wCAAA,OAAOA,MAAW,QA4BX,IAAMC,EAAQ,CAAC,CACpB,SAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAAC,EAAK,KACL,GAAGC,CACL,IAMIN,EAAA,cAACO,EAAA,CACC,GAAIF,EACJ,UAAW,cAAcF,GAAa,EAAE,GACxC,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJD,EAAM,YAAc,QAcb,IAAMO,EAAU,CAAC,CACtB,SAAAN,EACA,UAAAC,EACA,OAAAC,EACA,GAAGE,CACL,IAKIN,EAAA,cAACO,EAAA,CACC,GAAG,UACH,UAAW,gBAAgBJ,GAAa,EAAE,GAC1C,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJM,EAAQ,YAAc,UAcf,IAAMC,EAAS,CAAC,CACrB,SAAAP,EACA,UAAAC,EACA,OAAAC,EACA,GAAGE,CACL,IAKIN,EAAA,cAACO,EAAA,CACC,GAAG,MACH,UAAW,eAAeJ,GAAa,EAAE,GACzC,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJO,EAAO,YAAc,SAgBd,IAAMC,EAAO,CAAC,CACnB,IAAAC,EAAM,MACN,OAAAP,EACA,SAAAF,EACA,QAAAU,EAAU,SACV,GAAAC,EACA,GAAGP,CACL,IAEIN,EAAA,cAACO,EAAA,CACC,GAAII,EACJ,GAAIE,EACJ,OAAQT,EACR,UAAWQ,EACX,YAAS,GACR,GAAGN,GAEHJ,CACH,EAIGY,EAAQJ,EACfA,EAAK,YAAc,OACnBA,EAAK,MAAQT,EACbS,EAAK,QAAUF,EACfE,EAAK,OAASD","sourcesContent":["import React from 'react'\nimport UI from '#components/ui'\n\n/*\n * CardProps interface\n *\n * Extends ComponentProps. Defines props for the Card component.\n *\n * @property {('div' | 'aside' | 'section' | 'article')} [elm='div'] - HTML element to render as\n */\nexport type CardProps = {\n elm?: 'div' | 'aside' | 'section' | 'article'\n title?: React.ReactNode\n footer?: React.ReactNode\n} & React.ComponentProps<typeof UI>\n\n/*\n * Title component\n *\n * Renders a title for the Card component using the UI component.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Title content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} Title component\n */\nexport const Title = ({\n children,\n className,\n styles,\n as = 'h3',\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n as?: React.ElementType\n}>) => {\n return (\n <UI\n as={as}\n className={`card-title ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nTitle.displayName = 'Title'\n\n/*\n * CardContent component\n *\n * Renders the content of the Card component using the UI component with an article element.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} CardContent component\n */\nexport const Content = ({\n children,\n className,\n styles,\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n}>) => {\n return (\n <UI\n as=\"article\"\n className={`card-content ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nContent.displayName = 'Content'\n\n/*\n * Footer component\n *\n * Renders a footer section for the Card component using the UI component.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Footer content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} Footer component\n */\nexport const Footer = ({\n children,\n className,\n styles,\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n}>) => {\n return (\n <UI\n as=\"div\"\n className={`card-footer ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nFooter.displayName = 'Footer'\n\n/*\n * Card component\n *\n * Renders a card container.\n *\n * @param {CardProps} props - Component props\n * @param {('div' | 'aside' | 'section' | 'article')} [props.elm='div'] - Element to render as\n * @param {Object} [props.styles] - CSS styles to apply\n * @param {ReactNode} props.children - Card content\n * @param {boolean} [props.renderStyles=true] - Whether to render default styles\n * @param {string} [props.dataStyle] - data-card attribute value\n * @param {string} [props.id] - Unique ID\n * @returns {ReactElement} Card component\n */\nexport const Card = ({\n elm = 'div',\n styles,\n children,\n classes = 'shadow',\n id,\n ...props\n}: CardProps) => {\n return (\n <UI\n as={elm}\n id={id}\n styles={styles}\n className={classes}\n data-card\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nexport default Card\nCard.displayName = 'Card'\nCard.Title = Title\nCard.Content = Content\nCard.Footer = Footer\n"]}
|
package/libs/chunk-BV5CLH44.cjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunk6TE5QEVE_cjs = require('./chunk-6TE5QEVE.cjs');
|
|
4
|
-
var i = require('react');
|
|
5
|
-
|
|
6
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
|
-
|
|
8
|
-
var i__default = /*#__PURE__*/_interopDefault(i);
|
|
9
|
-
|
|
10
|
-
var c=({children:e,className:t,styles:s,as:a="h3",...l})=>i__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:a,className:`card-title ${t||""}`,styles:s,...l},e);c.displayName="Title";var n=({children:e,className:t,styles:s,...a})=>i__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"article",className:`card-content ${t||""}`,styles:s,...a},e);n.displayName="Content";var d=({children:e,className:t,styles:s,...a})=>i__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"div",className:`card-footer ${t||""}`,styles:s,...a},e);d.displayName="Footer";var o=({elm:e="div",styles:t,children:s,classes:a="shadow",id:l,...p})=>i__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:e,id:l,styles:t,className:a,"data-card":!0,...p},s),C=o;o.displayName="Card";o.Title=c;o.Content=n;o.Footer=d;
|
|
11
|
-
|
|
12
|
-
exports.a = c;
|
|
13
|
-
exports.b = n;
|
|
14
|
-
exports.c = d;
|
|
15
|
-
exports.d = o;
|
|
16
|
-
exports.e = C;
|
|
17
|
-
//# sourceMappingURL=out.js.map
|
|
18
|
-
//# sourceMappingURL=chunk-BV5CLH44.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/cards/card.tsx"],"names":["React","Title","children","className","styles","as","props","ui_default","Content","Footer","Card","elm","classes","id","card_default"],"mappings":"yCAAA,OAAOA,MAAW,QA4BX,IAAMC,EAAQ,CAAC,CACpB,SAAAC,EACA,UAAAC,EACA,OAAAC,EACA,GAAAC,EAAK,KACL,GAAGC,CACL,IAMIN,EAAA,cAACO,EAAA,CACC,GAAIF,EACJ,UAAW,cAAcF,GAAa,EAAE,GACxC,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJD,EAAM,YAAc,QAcb,IAAMO,EAAU,CAAC,CACtB,SAAAN,EACA,UAAAC,EACA,OAAAC,EACA,GAAGE,CACL,IAKIN,EAAA,cAACO,EAAA,CACC,GAAG,UACH,UAAW,gBAAgBJ,GAAa,EAAE,GAC1C,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJM,EAAQ,YAAc,UAcf,IAAMC,EAAS,CAAC,CACrB,SAAAP,EACA,UAAAC,EACA,OAAAC,EACA,GAAGE,CACL,IAKIN,EAAA,cAACO,EAAA,CACC,GAAG,MACH,UAAW,eAAeJ,GAAa,EAAE,GACzC,OAAQC,EACP,GAAGE,GAEHJ,CACH,EAIJO,EAAO,YAAc,SAgBd,IAAMC,EAAO,CAAC,CACnB,IAAAC,EAAM,MACN,OAAAP,EACA,SAAAF,EACA,QAAAU,EAAU,SACV,GAAAC,EACA,GAAGP,CACL,IAEIN,EAAA,cAACO,EAAA,CACC,GAAII,EACJ,GAAIE,EACJ,OAAQT,EACR,UAAWQ,EACX,YAAS,GACR,GAAGN,GAEHJ,CACH,EAIGY,EAAQJ,EACfA,EAAK,YAAc,OACnBA,EAAK,MAAQT,EACbS,EAAK,QAAUF,EACfE,EAAK,OAASD","sourcesContent":["import React from 'react'\nimport UI from '#components/ui'\n\n/*\n * CardProps interface\n *\n * Extends ComponentProps. Defines props for the Card component.\n *\n * @property {('div' | 'aside' | 'section' | 'article')} [elm='div'] - HTML element to render as\n */\nexport type CardProps = {\n elm?: 'div' | 'aside' | 'section' | 'article'\n title?: React.ReactNode\n footer?: React.ReactNode\n} & React.ComponentProps<typeof UI>\n\n/*\n * Title component\n *\n * Renders a title for the Card component using the UI component.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Title content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} Title component\n */\nexport const Title = ({\n children,\n className,\n styles,\n as = 'h3',\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n as?: React.ElementType\n}>) => {\n return (\n <UI\n as={as}\n className={`card-title ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nTitle.displayName = 'Title'\n\n/*\n * CardContent component\n *\n * Renders the content of the Card component using the UI component with an article element.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} CardContent component\n */\nexport const Content = ({\n children,\n className,\n styles,\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n}>) => {\n return (\n <UI\n as=\"article\"\n className={`card-content ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nContent.displayName = 'Content'\n\n/*\n * Footer component\n *\n * Renders a footer section for the Card component using the UI component.\n *\n * @param {Object} props - Component props\n * @param {ReactNode} props.children - Footer content\n * @param {string} [props.className] - Additional CSS classes\n * @param {Object} [props.styles] - Inline styles\n *\n * @returns {ReactElement} Footer component\n */\nexport const Footer = ({\n children,\n className,\n styles,\n ...props\n}: React.PropsWithChildren<{\n className?: string\n styles?: React.CSSProperties\n}>) => {\n return (\n <UI\n as=\"div\"\n className={`card-footer ${className || ''}`}\n styles={styles}\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nFooter.displayName = 'Footer'\n\n/*\n * Card component\n *\n * Renders a card container.\n *\n * @param {CardProps} props - Component props\n * @param {('div' | 'aside' | 'section' | 'article')} [props.elm='div'] - Element to render as\n * @param {Object} [props.styles] - CSS styles to apply\n * @param {ReactNode} props.children - Card content\n * @param {boolean} [props.renderStyles=true] - Whether to render default styles\n * @param {string} [props.dataStyle] - data-card attribute value\n * @param {string} [props.id] - Unique ID\n * @returns {ReactElement} Card component\n */\nexport const Card = ({\n elm = 'div',\n styles,\n children,\n classes = 'shadow',\n id,\n ...props\n}: CardProps) => {\n return (\n <UI\n as={elm}\n id={id}\n styles={styles}\n className={classes}\n data-card\n {...props}\n >\n {children}\n </UI>\n )\n}\n\nexport default Card\nCard.displayName = 'Card'\nCard.Title = Title\nCard.Content = Content\nCard.Footer = Footer\n"]}
|
package/libs/chunk-DKGJHKGW.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { b } from './chunk-5ZM4XL44.js';
|
|
2
|
-
import { a } from './chunk-NE6YXTMC.js';
|
|
3
|
-
import e from 'react';
|
|
4
|
-
|
|
5
|
-
var I=(t,r=15)=>t.length>r?`${t.slice(0,r)}...`:t;var f=({styles:t,id:r,classes:o,children:a,...p})=>e.createElement("li",{id:r,style:t,className:o,"data-list":"unstyled inline",...p},a),C=({children:t,...r})=>e.createElement(a,{as:"ol","data-list":"unstyled inline",...r},t),N=({styles:t,id:r,classes:o,children:a$1,...p})=>e.createElement(a,{as:"nav",id:r,styles:t,className:o,...p},e.createElement(C,null,a$1)),m=({startRoute:t="Home",startRouteUrl:r="/",currentRoute:o,spacer:a=e.createElement(e.Fragment,null,"/"),routes:p,styles:U,id:$,classes:k,ariaLabelPrefix:L,truncateLength:d=15,linkProps:b$1,...v})=>{let[P,w]=e.useState("");e.useEffect(()=>{let n=o||window.location.pathname;n.length&&w(n);},[o]);let x=n=>{let i=p?.find(c=>c.path===n);return {path:i?.path||n,name:i?.name||n,url:i?.url||n}},s=P.split("/").filter(n=>n),u=s.length-1,g=e.useId();return P.length?e.createElement(N,{id:$,...v,styles:U,className:k,"aria-label":L},e.createElement(f,{key:`${t}-${g}`},e.createElement(b,{href:r,...b$1},t)),e.createElement(e.Fragment,null,s.length?s.map((n,i)=>{let c=x(n),{name:l,url:B,path:E}=c;return i===u?e.createElement(e.Fragment,null,typeof s[u]=="string"&&s[u].length>3&&s[u]!==s[u-1]&&e.createElement(f,{key:`${E||i}-${g}`},e.createElement("span",{"aria-hidden":"true"},a),e.createElement("a",{href:"#","aria-current":"page","aria-label":l.length>d?l:void 0},I(decodeURIComponent(l),d)))):e.createElement(f,{key:`${c?.name}-${g}`},e.createElement("span",{"aria-hidden":"true"},a),e.createElement("span",null,e.createElement(b,{href:B,"aria-label":l.length>d?l:void 0,...b$1},I(decodeURIComponent(l),d))))}):null)):e.createElement(e.Fragment,null)},_=m;m.displayName="BreadCrumb";m.Nav=N;m.List=C;m.Items=f;
|
|
6
|
-
|
|
7
|
-
export { m as a, _ as b };
|
|
8
|
-
//# sourceMappingURL=out.js.map
|
|
9
|
-
//# sourceMappingURL=chunk-DKGJHKGW.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/breadcrumbs/breadcrumb.tsx","../src/libs/content.ts"],"names":["React","Truncate","str","length","Items","styles","id","classes","children","props","List","ui_default","Nav","Breadcrumb","startRoute","startRouteUrl","currentRoute","spacer","routes","ariaLabelPrefix","truncateLength","linkProps","currentPath","setCurrentPath","path","getPathName","pathSegment","route","segments","segment","lastSegment","uuid","link_default","index","currentSegment","name","url","breadcrumb_default"],"mappings":"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","sourcesContent":["// Code: Breadcrumb component\nimport React from \"react\";\nimport UI from \"#components/ui\";\nimport { Truncate } from \"#libs/content\";\nimport Link from \"#components/link/link\";\n\n// TYPES\n\ntype customRoute = {\n /** The path or id for routing */\n path?: string;\n /** The display name */\n name: string;\n /** The url if linking out */\n url?: string;\n};\n\ntype BreadcrumbProps = {\n /** Array of custom route objects */\n routes?: customRoute[];\n /** Starting route node */\n startRoute?: React.ReactNode;\n /* Starting route url */\n startRouteUrl?: string;\n /** Spacer node between routes */\n spacer?: React.ReactNode;\n /** String representing current route */\n currentRoute?: string;\n /** Prefix breadcrumb aria-label - \"prefix breadcrumb\" */\n ariaLabelPrefix?: string;\n /** Truncate breadcrumb text after this length */\n truncateLength?: number;\n /** Link props for breadcrumb links */\n linkProps?: React.ComponentProps<typeof Link>;\n} & React.ComponentProps<typeof UI>;\n\n// Components\n\n/**\n * Items component.\n *\n * @param styles - Styles object for the item.\n * @param id - Id for the item.\n * @param classes - Class names for the item.\n * @param children - Child components.\n * @param props - Other props.\n */\nconst Items = ({\n styles,\n id,\n classes,\n children,\n ...props\n}: React.ComponentProps<typeof UI>) => {\n return (\n <li\n id={id}\n style={styles}\n className={classes}\n data-list=\"unstyled inline\"\n {...props}\n >\n {children}\n </li>\n );\n};\n\n/**\n * List component.\n *\n * @param children - The content to render inside the list.\n * @param props - Additional props to pass to the UI component.\n */\nconst List = ({ children, ...props }: React.ComponentProps<typeof UI>) => {\n return (\n <UI as=\"ol\" data-list=\"unstyled inline\" {...props}>\n {children}\n </UI>\n );\n};\n\n/**\n * Nav component.\n *\n * @param styles - Styles object for the nav.\n * @param id - Id for the nav.\n * @param classes - Class names for the nav.\n * @param children - Child components.\n * @param props - Other props.\n */\nconst Nav = ({\n styles,\n id,\n classes,\n children,\n ...props\n}: React.ComponentProps<typeof UI>) => {\n return (\n <UI as=\"nav\" id={id} styles={styles} className={classes} {...props}>\n <List>{children}</List>\n </UI>\n );\n};\n\n/**\n * Navigation component for breadcrumbs.\n *\n * @param props - Props for the navigation component.\n * @param props.startRoute - Starting route node. Default 'Home'.\n * @param props.currentRoute - String representing current route.\n * @param props.spacer - Spacer node between routes. Default '/'.\n * @param props.routes - Array of custom route objects.\n * @param props.styles - Styles object for the nav.\n * @param props.id - Id for the nav.\n * @param props.classes - Class names for the nav.\n * @param props.children - Child components.\n */\nexport const Breadcrumb = ({\n startRoute = \"Home\",\n startRouteUrl = \"/\",\n currentRoute,\n spacer = <>/</>,\n routes,\n styles,\n id,\n classes,\n ariaLabelPrefix,\n truncateLength = 15,\n linkProps,\n ...props\n}: BreadcrumbProps): React.JSX.Element => {\n const [currentPath, setCurrentPath] = React.useState(\"\");\n React.useEffect(() => {\n const path = currentRoute || window.location.pathname;\n if (path.length) {\n setCurrentPath(path);\n }\n }, [currentRoute]);\n\n /**\n * Gets the path name for the given path segment.\n *\n * @param pathSegment - The path segment (string or number) to get the path name for.\n * @returns The path name object for the given path segment.\n */\n const getPathName = (pathSegment: string): customRoute => {\n const route = routes?.find((route) => route.path === pathSegment);\n\n return {\n path: route?.path || pathSegment,\n name: route?.name || pathSegment,\n url: route?.url || pathSegment,\n };\n };\n\n /** Array of path segments from current path */\n const segments = currentPath.split(\"/\").filter((segment) => segment);\n /** Index of last item in segments array */\n const lastSegment = segments.length - 1;\n\n /** Unique id for breadcrumb */\n const uuid = React.useId();\n\n return currentPath.length ? (\n <Nav\n id={id}\n {...props}\n styles={styles}\n className={classes}\n aria-label={ariaLabelPrefix}\n >\n <Items key={`${startRoute}-${uuid}`}>\n <Link href={startRouteUrl} {...linkProps}>\n {startRoute}\n </Link>\n </Items>\n <>\n {segments.length\n ? segments.map((segment: string, index: number) => {\n const currentSegment = getPathName(segment);\n const { name, url, path } = currentSegment;\n return index === lastSegment ? (\n <>\n {typeof segments[lastSegment] === \"string\" &&\n segments[lastSegment].length > 3 &&\n segments[lastSegment] !== segments[lastSegment - 1] && (\n <Items key={`${path || index}-${uuid}`}>\n <span aria-hidden=\"true\">{spacer}</span>\n <a\n href=\"#\"\n aria-current=\"page\"\n aria-label={\n name.length > truncateLength ? name : undefined\n }\n >\n {Truncate(decodeURIComponent(name), truncateLength)}\n </a>\n </Items>\n )}\n </>\n ) : (\n <Items key={`${currentSegment?.name}-${uuid}`}>\n <span aria-hidden=\"true\">{spacer}</span>\n <span>\n <Link\n href={url}\n aria-label={\n name.length > truncateLength ? name : undefined\n }\n {...linkProps}\n >\n {Truncate(decodeURIComponent(name), truncateLength)}\n </Link>\n </span>\n </Items>\n );\n })\n : null}\n </>\n </Nav>\n ) : (\n <></>\n );\n};\n\nexport default Breadcrumb;\n\nBreadcrumb.displayName = \"BreadCrumb\";\nBreadcrumb.Nav = Nav;\nBreadcrumb.List = List;\nBreadcrumb.Items = Items;\n","/**\n * Converts a string to a slug by:\n * - Converting to lowercase\n * - Trimming whitespace\n * - Removing non-word and non-hyphen characters\n * - Replacing sequences of whitespace and hyphens with a single hyphen\n * - Removing leading and trailing hyphens\n *\n * @param str - The string to slugify\n * @returns The slugified string\n */\nexport const Slugify = (str: string) => {\n return str\n .toLowerCase()\n .trim()\n .replace(/[^\\w\\s-]/g, '')\n .replace(/[\\s_-]+/g, '-')\n .replace(/^-+|-+$/g, '')\n}\n\n/**\n * Truncates a string to a maximum length.\n *\n * @param str - The string to truncate.\n * @param length - The maximum length of the truncated string. Defaults to 15.\n * @returns The truncated string, with ellipses appended if truncated.\n */\nexport const Truncate = (str: string, length: number = 15) => {\n return str.length > length ? `${str.slice(0, length)}...` : str\n}\n"]}
|
package/libs/chunk-DV56L5YX.cjs
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkQVV34QEH_cjs = require('./chunk-QVV34QEH.cjs');
|
|
4
|
-
var chunk6TE5QEVE_cjs = require('./chunk-6TE5QEVE.cjs');
|
|
5
|
-
var r = require('react');
|
|
6
|
-
|
|
7
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
|
|
9
|
-
var r__default = /*#__PURE__*/_interopDefault(r);
|
|
10
|
-
|
|
11
|
-
var n=({isBlock:t,children:o,...s})=>r__default.default.createElement(chunkQVV34QEH_cjs.c,{type:"ul",...s,"data-list":`unstyled ${t?"block":""}`},o),L=({id:t,styles:o,classes:s,children:i,...m})=>r__default.default.createElement(chunkQVV34QEH_cjs.c.ListItem,{type:"li",id:t,classes:s,styles:o,...m},i),e=({children:t,...o})=>r__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"nav",...o},t),N=e;e.displayName="Nav";e.List=n;e.Item=L;
|
|
12
|
-
|
|
13
|
-
exports.a = n;
|
|
14
|
-
exports.b = L;
|
|
15
|
-
exports.c = e;
|
|
16
|
-
exports.d = N;
|
|
17
|
-
//# sourceMappingURL=out.js.map
|
|
18
|
-
//# sourceMappingURL=chunk-DV56L5YX.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/nav/nav.tsx"],"names":["React","NavList","isBlock","children","props","list_default","NavItem","id","styles","classes","Nav","ui_default","nav_default"],"mappings":"6EAEA,OAAOA,MAAW,QAgBX,IAAMC,EAAU,CAAC,CAAE,QAAAC,EAAS,SAAAC,EAAU,GAAGC,CAAM,IAElDJ,EAAA,cAACK,EAAA,CAAK,KAAK,KAAM,GAAGD,EAAO,YAAW,YAAYF,EAAU,QAAU,EAAE,IACrEC,CACH,EAeSG,EAAU,CAAC,CACtB,GAAAC,EACA,OAAAC,EACA,QAAAC,EACA,SAAAN,EACA,GAAGC,CACL,IAEIJ,EAAA,cAACK,EAAK,SAAL,CACC,KAAK,KACL,GAAIE,EACJ,QAASE,EACT,OAAQD,EACP,GAAGJ,GAEHD,CACH,EAWSO,EAAM,CAAC,CAAE,SAAAP,EAAU,GAAGC,CAAM,IAErCJ,EAAA,cAACW,EAAA,CAAG,GAAG,MAAO,GAAGP,GACdD,CACH,EAIGS,EAAQF,EACfA,EAAI,YAAc,MAClBA,EAAI,KAAOT,EACXS,EAAI,KAAOJ","sourcesContent":["import UI from '../ui'\nimport List from '../list/list'\nimport React from 'react'\n\nexport type NavListProps = React.ComponentProps<typeof List> & {\n isBlock?: boolean\n}\nexport type NavItemProps = React.ComponentProps<typeof List.ListItem>\n\nexport type NavProps = React.ComponentProps<typeof UI>\n\n/**\n * Renders a NavList component.\n * @param {Object} props - The props for the component.\n * @param {ReactNode} props.children - The child elements.\n * @param {Object} props - Additional props to spread to the List component.\n * @returns {JSX.Element} The rendered NavList component.\n */\nexport const NavList = ({ isBlock, children, ...props }: NavListProps) => {\n return (\n <List type=\"ul\" {...props} data-list={`unstyled ${isBlock ? 'block' : ''}`}>\n {children}\n </List>\n )\n}\n\n/**\n * Renders a NavItem component.\n * @param {Object} props - The props for the component.\n * @param {string} [props.id] - The id for the component.\n * @param {Object} [props.styles] - The styles for the component.\n * @param {string} [props.classes] - The classes for the component.\n * @param {ReactNode} props.children - The child elements.\n * @param {boolean} [props.inline=true] - Whether the item should display inline.\n * @param {Object} props - Additional props to spread to the ListItem component.\n * @returns {JSX.Element} The rendered NavItem component.\n */\nexport const NavItem = ({\n id,\n styles,\n classes,\n children,\n ...props\n}: NavItemProps) => {\n return (\n <List.ListItem\n type=\"li\"\n id={id}\n classes={classes}\n styles={styles}\n {...props}\n >\n {children}\n </List.ListItem>\n )\n}\n\n/**\n * Renders a Nav component.\n * @param {Object} props - The props for the component.\n * @param {ReactNode} props.children - The child elements.\n * @param {Object} props - Additional props to spread to the UI component.\n * @returns {JSX.Element} The rendered Nav component.\n */\nexport const Nav = ({ children, ...props }: NavProps) => {\n return (\n <UI as=\"nav\" {...props}>\n {children}\n </UI>\n )\n}\n\nexport default Nav\nNav.displayName = 'Nav'\nNav.List = NavList\nNav.Item = NavItem\n"]}
|
package/libs/chunk-ECLD37WN.cjs
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var chunkX3EVB7VS_cjs = require('./chunk-X3EVB7VS.cjs');
|
|
4
|
-
var chunk6TE5QEVE_cjs = require('./chunk-6TE5QEVE.cjs');
|
|
5
|
-
var e = require('react');
|
|
6
|
-
|
|
7
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
-
|
|
9
|
-
var e__default = /*#__PURE__*/_interopDefault(e);
|
|
10
|
-
|
|
11
|
-
var I=(t,r=15)=>t.length>r?`${t.slice(0,r)}...`:t;var f=({styles:t,id:r,classes:o,children:a,...p})=>e__default.default.createElement("li",{id:r,style:t,className:o,"data-list":"unstyled inline",...p},a),C=({children:t,...r})=>e__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"ol","data-list":"unstyled inline",...r},t),N=({styles:t,id:r,classes:o,children:a,...p})=>e__default.default.createElement(chunk6TE5QEVE_cjs.a,{as:"nav",id:r,styles:t,className:o,...p},e__default.default.createElement(C,null,a)),m=({startRoute:t="Home",startRouteUrl:r="/",currentRoute:o,spacer:a=e__default.default.createElement(e__default.default.Fragment,null,"/"),routes:p,styles:U,id:$,classes:k,ariaLabelPrefix:L,truncateLength:d=15,linkProps:b,...v})=>{let[P,w]=e__default.default.useState("");e__default.default.useEffect(()=>{let n=o||window.location.pathname;n.length&&w(n);},[o]);let x=n=>{let i=p?.find(c=>c.path===n);return {path:i?.path||n,name:i?.name||n,url:i?.url||n}},s=P.split("/").filter(n=>n),u=s.length-1,g=e__default.default.useId();return P.length?e__default.default.createElement(N,{id:$,...v,styles:U,className:k,"aria-label":L},e__default.default.createElement(f,{key:`${t}-${g}`},e__default.default.createElement(chunkX3EVB7VS_cjs.b,{href:r,...b},t)),e__default.default.createElement(e__default.default.Fragment,null,s.length?s.map((n,i)=>{let c=x(n),{name:l,url:B,path:E}=c;return i===u?e__default.default.createElement(e__default.default.Fragment,null,typeof s[u]=="string"&&s[u].length>3&&s[u]!==s[u-1]&&e__default.default.createElement(f,{key:`${E||i}-${g}`},e__default.default.createElement("span",{"aria-hidden":"true"},a),e__default.default.createElement("a",{href:"#","aria-current":"page","aria-label":l.length>d?l:void 0},I(decodeURIComponent(l),d)))):e__default.default.createElement(f,{key:`${c?.name}-${g}`},e__default.default.createElement("span",{"aria-hidden":"true"},a),e__default.default.createElement("span",null,e__default.default.createElement(chunkX3EVB7VS_cjs.b,{href:B,"aria-label":l.length>d?l:void 0,...b},I(decodeURIComponent(l),d))))}):null)):e__default.default.createElement(e__default.default.Fragment,null)},_=m;m.displayName="BreadCrumb";m.Nav=N;m.List=C;m.Items=f;
|
|
12
|
-
|
|
13
|
-
exports.a = m;
|
|
14
|
-
exports.b = _;
|
|
15
|
-
//# sourceMappingURL=out.js.map
|
|
16
|
-
//# sourceMappingURL=chunk-ECLD37WN.cjs.map
|