@fpkit/acss 0.5.11 → 0.5.13
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 +514 -18
- package/libs/chunk-23ANBDCR.js +8 -0
- package/libs/chunk-23ANBDCR.js.map +1 -0
- package/libs/chunk-2LTJ7HHX.cjs +18 -0
- package/libs/chunk-2LTJ7HHX.cjs.map +1 -0
- package/libs/chunk-2Y7W75TT.js +9 -0
- package/libs/chunk-2Y7W75TT.js.map +1 -0
- package/libs/chunk-3MKLDCKQ.cjs +31 -0
- package/libs/chunk-3MKLDCKQ.cjs.map +1 -0
- package/libs/chunk-5M57K4SW.js +8 -0
- package/libs/chunk-5M57K4SW.js.map +1 -0
- package/libs/chunk-5S4ORA4C.cjs +15 -0
- package/libs/chunk-5S4ORA4C.cjs.map +1 -0
- package/libs/chunk-772NRB75.js +9 -0
- package/libs/chunk-772NRB75.js.map +1 -0
- package/libs/chunk-AHDJGCG5.cjs +15 -0
- package/libs/chunk-AHDJGCG5.cjs.map +1 -0
- package/libs/chunk-B7F5FS6D.cjs +16 -0
- package/libs/chunk-B7F5FS6D.cjs.map +1 -0
- package/libs/chunk-BHRQBJRY.js +8 -0
- package/libs/chunk-BHRQBJRY.js.map +1 -0
- package/libs/chunk-D4YLRWAO.cjs +18 -0
- package/libs/chunk-D4YLRWAO.cjs.map +1 -0
- package/libs/chunk-ETFLFC2S.js +10 -0
- package/libs/chunk-ETFLFC2S.js.map +1 -0
- package/libs/chunk-G55UJ53G.cjs +16 -0
- package/libs/chunk-G55UJ53G.cjs.map +1 -0
- package/libs/chunk-GZ4QFPRY.js +9 -0
- package/libs/chunk-GZ4QFPRY.js.map +1 -0
- package/libs/chunk-IYUN2EW3.cjs +15 -0
- package/libs/chunk-IYUN2EW3.cjs.map +1 -0
- package/libs/chunk-J32EZPYD.cjs +15 -0
- package/libs/chunk-J32EZPYD.cjs.map +1 -0
- package/libs/chunk-JJ43O4Y5.js +8 -0
- package/libs/chunk-JJ43O4Y5.js.map +1 -0
- package/libs/chunk-KUKIVRC2.js +7 -0
- package/libs/chunk-KUKIVRC2.js.map +1 -0
- package/libs/chunk-L75OQKEI.cjs +13 -0
- package/libs/chunk-L75OQKEI.cjs.map +1 -0
- package/libs/chunk-LT5KZ2QW.cjs +22 -0
- package/libs/chunk-LT5KZ2QW.cjs.map +1 -0
- package/libs/chunk-M5RRNTVX.cjs +15 -0
- package/libs/chunk-M5RRNTVX.cjs.map +1 -0
- package/libs/chunk-NGTJDDFO.js +8 -0
- package/libs/chunk-NGTJDDFO.js.map +1 -0
- package/libs/chunk-OK5QEIMD.cjs +17 -0
- package/libs/chunk-OK5QEIMD.cjs.map +1 -0
- package/libs/chunk-P2DC76ZZ.cjs +18 -0
- package/libs/chunk-P2DC76ZZ.cjs.map +1 -0
- package/libs/chunk-P7TTEYCD.js +7 -0
- package/libs/chunk-P7TTEYCD.js.map +1 -0
- package/libs/chunk-PQ2K3BM6.cjs +17 -0
- package/libs/chunk-PQ2K3BM6.cjs.map +1 -0
- package/libs/chunk-QLZWHAMK.js +8 -0
- package/libs/chunk-QLZWHAMK.js.map +1 -0
- package/libs/chunk-RIVUMPOG.js +8 -0
- package/libs/chunk-RIVUMPOG.js.map +1 -0
- package/libs/chunk-ROZI23GS.cjs +15 -0
- package/libs/chunk-ROZI23GS.cjs.map +1 -0
- package/libs/chunk-S7BABR7Z.cjs +13 -0
- package/libs/chunk-S7BABR7Z.cjs.map +1 -0
- package/libs/chunk-SMYRLO3E.js +8 -0
- package/libs/chunk-SMYRLO3E.js.map +1 -0
- package/libs/chunk-TYRCEX2L.js +8 -0
- package/libs/chunk-TYRCEX2L.js.map +1 -0
- package/libs/chunk-VUH3FXGJ.js +11 -0
- package/libs/chunk-VUH3FXGJ.js.map +1 -0
- package/libs/chunk-XBA562WW.js +8 -0
- package/libs/chunk-XBA562WW.js.map +1 -0
- package/libs/chunk-XTQKWY7W.cjs +32 -0
- package/libs/chunk-XTQKWY7W.cjs.map +1 -0
- package/libs/chunk-ZANSFMTD.js +9 -0
- package/libs/chunk-ZANSFMTD.js.map +1 -0
- package/libs/component-props-a8a2f97e.d.ts +38 -0
- 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 +24 -0
- package/libs/components/breadcrumbs/breadcrumb.cjs.map +1 -0
- package/libs/components/breadcrumbs/breadcrumb.d.cts +290 -0
- package/libs/components/breadcrumbs/breadcrumb.d.ts +290 -0
- package/libs/components/breadcrumbs/breadcrumb.js +5 -0
- package/libs/components/breadcrumbs/breadcrumb.js.map +1 -0
- package/libs/components/button.cjs +19 -0
- package/libs/components/button.cjs.map +1 -0
- package/libs/components/button.d.cts +16 -0
- package/libs/components/button.d.ts +16 -0
- package/libs/components/button.js +4 -0
- package/libs/components/button.js.map +1 -0
- 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 +31 -0
- package/libs/components/card.cjs.map +1 -0
- package/libs/components/card.d.cts +302 -0
- package/libs/components/card.d.ts +302 -0
- package/libs/components/card.js +4 -0
- package/libs/components/card.js.map +1 -0
- 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 +22 -0
- package/libs/components/dialog/dialog.cjs.map +1 -0
- package/libs/components/dialog/dialog.css +1 -1
- package/libs/components/dialog/dialog.css.map +1 -1
- package/libs/components/dialog/dialog.d.cts +105 -0
- package/libs/components/dialog/dialog.d.ts +105 -0
- package/libs/components/dialog/dialog.js +7 -0
- package/libs/components/dialog/dialog.js.map +1 -0
- package/libs/components/dialog/dialog.min.css +2 -2
- package/libs/components/form/fields.cjs +19 -0
- package/libs/components/form/fields.cjs.map +1 -0
- package/libs/components/form/fields.d.cts +24 -0
- package/libs/components/form/fields.d.ts +24 -0
- package/libs/components/form/fields.js +4 -0
- package/libs/components/form/fields.js.map +1 -0
- package/libs/components/form/inputs.cjs +19 -0
- package/libs/components/form/inputs.cjs.map +1 -0
- package/libs/components/form/inputs.d.cts +2 -0
- package/libs/components/form/inputs.d.ts +2 -0
- package/libs/components/form/inputs.js +4 -0
- package/libs/components/form/inputs.js.map +1 -0
- package/libs/components/form/textarea.cjs +19 -0
- package/libs/components/form/textarea.cjs.map +1 -0
- package/libs/components/form/textarea.d.cts +29 -0
- package/libs/components/form/textarea.d.ts +29 -0
- package/libs/components/form/textarea.js +4 -0
- package/libs/components/form/textarea.js.map +1 -0
- package/libs/components/heading/heading.cjs +10 -0
- package/libs/components/heading/heading.cjs.map +1 -0
- package/libs/components/heading/heading.d.cts +3 -0
- package/libs/components/heading/heading.d.ts +3 -0
- package/libs/components/heading/heading.js +4 -0
- package/libs/components/heading/heading.js.map +1 -0
- package/libs/components/icons/icon.cjs +19 -0
- package/libs/components/icons/icon.cjs.map +1 -0
- package/libs/{icons-31ace3de.d.ts → components/icons/icon.d.cts} +151 -61
- package/libs/components/icons/icon.d.ts +445 -0
- package/libs/components/icons/icon.js +4 -0
- package/libs/components/icons/icon.js.map +1 -0
- 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 +19 -0
- package/libs/components/link/link.cjs.map +1 -0
- package/libs/components/link/link.d.cts +19 -0
- package/libs/components/link/link.d.ts +19 -0
- package/libs/components/link/link.js +4 -0
- package/libs/components/link/link.js.map +1 -0
- package/libs/components/list/list.cjs +23 -0
- package/libs/components/list/list.cjs.map +1 -0
- package/libs/components/list/list.d.cts +39 -0
- package/libs/components/list/list.d.ts +39 -0
- package/libs/components/list/list.js +4 -0
- package/libs/components/list/list.js.map +1 -0
- package/libs/components/modal.cjs +14 -0
- package/libs/components/modal.cjs.map +1 -0
- package/libs/components/modal.d.cts +35 -0
- package/libs/components/modal.d.ts +35 -0
- package/libs/components/modal.js +5 -0
- package/libs/components/modal.js.map +1 -0
- package/libs/components/nav/nav.cjs +28 -0
- package/libs/components/nav/nav.cjs.map +1 -0
- package/libs/components/nav/nav.d.cts +44 -0
- package/libs/components/nav/nav.d.ts +44 -0
- package/libs/components/nav/nav.js +5 -0
- package/libs/components/nav/nav.js.map +1 -0
- package/libs/components/popover/popover.cjs +23 -0
- package/libs/components/popover/popover.cjs.map +1 -0
- package/libs/components/popover/popover.d.cts +40 -0
- package/libs/components/popover/popover.d.ts +40 -0
- package/libs/components/popover/popover.js +4 -0
- package/libs/components/popover/popover.js.map +1 -0
- package/libs/components/tables/table.cjs +21 -0
- package/libs/components/tables/table.cjs.map +1 -0
- package/libs/components/tables/table.d.cts +36 -0
- package/libs/components/tables/table.d.ts +36 -0
- package/libs/components/tables/table.js +4 -0
- package/libs/components/tables/table.js.map +1 -0
- package/libs/components/text/text.cjs +23 -0
- package/libs/components/text/text.cjs.map +1 -0
- package/libs/components/text/text.d.cts +30 -0
- package/libs/components/text/text.d.ts +30 -0
- package/libs/components/text/text.js +4 -0
- package/libs/components/text/text.js.map +1 -0
- package/libs/heading-3648c538.d.ts +250 -0
- package/libs/hooks.cjs +7 -0
- package/libs/hooks.d.cts +5 -0
- package/libs/hooks.d.ts +5 -0
- package/libs/hooks.js +3 -0
- package/libs/icons.cjs +3 -2
- package/libs/icons.d.cts +3 -1
- package/libs/icons.d.ts +3 -1
- package/libs/icons.js +2 -1
- package/libs/index.cjs +174 -62
- 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 +529 -446
- package/libs/index.d.ts +529 -446
- package/libs/index.js +36 -7
- package/libs/index.js.map +1 -1
- package/libs/inputs-f3a216db.d.ts +45 -0
- package/libs/ui-645f95b5.d.ts +285 -0
- package/package.json +2 -2
- 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 +113 -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 +427 -170
- package/src/components/button.ts +2 -0
- package/src/components/buttons/button.scss +34 -31
- package/src/components/buttons/button.stories.tsx +35 -0
- package/src/components/card.ts +2 -0
- 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 -0
- 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-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/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/modal.ts +1 -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 +266 -15
- package/src/components/word-count/README.md +240 -0
- package/src/hooks.ts +1 -0
- package/src/index.ts +51 -19
- package/src/sass/_properties.scss +1 -0
- package/src/styles/alert/alert.css +94 -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 -0
- 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 +240 -43
- package/src/styles/index.css.map +1 -1
- package/src/test/setup.d.ts +9 -0
- package/src/test/setup.ts +53 -1
- package/libs/chunk-PWVRDQ3R.js +0 -8
- package/libs/chunk-PWVRDQ3R.js.map +0 -1
- package/libs/chunk-SVS4MX3U.cjs +0 -31
- package/libs/chunk-SVS4MX3U.cjs.map +0 -1
- package/src/components/cards/README.md +0 -80
- package/src/components/dialog/hooks/useClickOutside.ts +0 -33
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
button{--btn-xs: 0.
|
|
1
|
+
button{--btn-xs: 0.6875rem;--btn-sm: 0.8125rem;--btn-md: 0.9375rem;--btn-lg: 1.125rem;--btn-pill: 100rem;--btn-fs: var(--btn-md);--btn-height: calc(var(--btn-fs) * 2.25);--btn-bg: lightgray;--btn-width: max-content;font-size:var(--btn-fs);font-weight:var(--btn-fw, 500);height:var(--btn-height);place-items:var(--btn-place, center);padding-inline:var(--btn-px, calc(var(--btn-fs) * 1.5));padding-block:var(--btn-py, calc(var(--btn-fs) * 0.5));border:var(--btn-bdr, none);border-radius:var(--btn-rds, 0.375rem);-webkit-text-decoration:var(--btn-deco, none);text-decoration:var(--btn-deco, none);color:var(--btn-cl, currentColor);display:var(--btn-dsp, inline-flex);gap:var(--btn-gap, 0.2rem);white-space:var(--btn-wspc, inherit);margin:var(--btn-spc, 0);transition:var(--btn-transition, var(--tran-all, all 0.3s cubic-bezier(0.4, 0, 0.2, 1)));background-color:var(--btn-bg, var(--btn));outline:none;width:var(--btn-width);display:inline-flex;align-items:center;line-height:0cap}button[type]{background-color:var(--btn-bg, var(--neutral-300));--btn-bdr: solid var(--btn-sg)}button[type=submit],button[style*=submit]{--btn-bg: var(--primary-500, royal-blue);--btn-color: white}button[disabled],button[aria-disabled=true]{cursor:var(--btn-cursor, not-allowed)}button[disabled]:is(:hover,:focus),button[aria-disabled=true]:is(:hover,:focus){transform:none}button:is(:hover,:focus){filter:var(--btn-hover-filter, brightness(0.85));transform:var(--btn-hover-transform, scale(1.03));outline:var(--btn-hover-outline, thin);outline-offset:var(--line-offset, 1px)}button:is(:hover,:focus)[aria-disabled=true]{transform:none;opacity:var(--btn-opacity, 0.5);filter:none}button[type=reset]{--btn-bg: transparent;--btn-color: gray;--btn-bdr: gray thin solid}button[type=submit]{--btn-bg: var(--primary-700, blue);--btn-cl: #fff;--btn-color: rgb(231, 231, 231);--btn-border: none}button[data-fp-btn~=pill],button[data-btn~=pill],button[data-style~=pill]{border-radius:var(--btn-pill, 100rem)}button[data-btn~=xs],button .btn-xs{--btn-fs: var(--btn-xs);text-transform:uppercase}button[data-btn~=sm],button .btn-sm{--btn-fs: var(--btn-sm)}button[data-btn~=md],button .btn-md{--btn-fs: var(--btn-md)}button[data-btn~=lg],button .btn-lg{--btn-fs: var(--btn-lg)}button[data-btn~=icon],button .btn-icon{padding:unset;height:unset;--btn-bg: transparent;min-width:1.5rem;min-height:1.5rem;text-align:center;display:inline-flex;align-items:center;justify-content:center}button[data-btn~=text],button .btn-text{--btn-bg: transparent;--btn-cl: currentColor;--btn-bdr: none;--btn-height: unset;--btn-width: unset;--btn-py: 0.75rem;--btn-px: 0.75rem}button[data-btn~=text]:is(:hover,:focus),button .btn-text:is(:hover,:focus){background-color:color-mix(in srgb, var(--btn-cl) 10%, transparent);outline:.025rem solid var(--btn-cl);outline-offset:0;filter:none}
|
|
2
2
|
|
|
3
|
-
/*# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FDRSxtQkFBQSxDQUNBLG1CQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGtCQUFBLENBQ0EsdUJBQUEsQ0FDQSx3Q0FBQSxDQUNBLG1CQUFBLENBQ0Esd0JBQUEsQ0FFQSx1QkFBQSxDQUNBLDhCQUFBLENBQ0Esd0JBQUEsQ0FDQSxvQ0FBQSxDQUNBLHVEQUFBLENBQ0Esc0RBQUEsQ0FDQSwyQkFBQSxDQUNBLHNDQUFBLENBQ0EsNkNBQUEsQ0FBQSxxQ0FBQSxDQUNBLGlDQUFBLENBQ0EsbUNBQUEsQ0FDQSwwQkFBQSxDQUNBLG9DQUFBLENBQ0Esd0JBQUEsQ0FDQSx3RkFBQSxDQUlBLDBDQUFBLENBQ0EsWUFBQSxDQUNBLHNCQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLGdCQUFBLENBRUEsYUFDRSxrREFBQSxDQUNBLDhCQUFBLENBR0YsMENBRUUsd0NBQUEsQ0FDQSxrQkFBQSxDQUdGLDRDQUVFLHFDQUFBLENBR0EsZ0ZBQ0UsY0FBQSxDQU9KLHlCQUVFLGdEQUFBLENBQ0EsaURBQUEsQ0FDQSxzQ0FBQSxDQUNBLHNDQUFBLENBR0EsNkNBQ0UsY0FBQSxDQUNBLCtCQUFBLENBQ0EsV0FBQSxDQUlKLG1CQUNFLHFCQUFBLENBQ0EsaUJBQUEsQ0FDQSwwQkFBQSxDQUdGLG9CQUNFLGtDQUFBLENBQ0EsY0FBQSxDQUNBLCtCQUFBLENBQ0Esa0JBQUEsQ0FHRiwwRUFHRSxxQ0FBQSxDQUdGLG9DQUVFLHVCQUFBLENBQ0Esd0JBQUEsQ0FHRixvQ0FFRSx1QkFBQSxDQUdGLG9DQUVFLHVCQUFBLENBR0Ysb0NBRUUsdUJBQUEsQ0FHRix3Q0FFRSxhQUFBLENBQ0EsWUFBQSxDQUNBLHFCQUFBLENBQ0EsZ0JBQUEsQ0FDQSxpQkFBQSxDQUNBLGlCQUFBLENBQ0EsbUJBQUEsQ0FDQSxrQkFBQSxDQUNBLHNCQUFBLENBR0Ysd0NBRUUscUJBQUEsQ0FDQSxzQkFBQSxDQUNBLGVBQUEsQ0FDQSxtQkFBQSxDQUNBLGtCQUFBLENBQ0EsaUJBQUEsQ0FDQSxpQkFBQSxDQUNBLDRFQUNFLG1FQUFBLENBQ0EsbUNBQUEsQ0FDQSxnQkFBQSxDQUNBLFdBQUEiLCJmaWxlIjoiYnV0dG9uLm1pbi5jc3MifQ== */
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chunkP2DC76ZZ_cjs = require('../chunk-P2DC76ZZ.cjs');
|
|
6
|
+
require('../chunk-L75OQKEI.cjs');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, 'Card', {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () { return chunkP2DC76ZZ_cjs.d; }
|
|
13
|
+
});
|
|
14
|
+
Object.defineProperty(exports, 'Content', {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return chunkP2DC76ZZ_cjs.b; }
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, 'Footer', {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return chunkP2DC76ZZ_cjs.c; }
|
|
21
|
+
});
|
|
22
|
+
Object.defineProperty(exports, 'Title', {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return chunkP2DC76ZZ_cjs.a; }
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, 'default', {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return chunkP2DC76ZZ_cjs.e; }
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=out.js.map
|
|
31
|
+
//# sourceMappingURL=card.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { U as UI } from '../ui-645f95b5.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Base props shared across all Card sub-components.
|
|
6
|
+
*
|
|
7
|
+
* This interface provides common styling and structural props
|
|
8
|
+
* that all Card sub-components support.
|
|
9
|
+
*/
|
|
10
|
+
interface CardSubComponentProps {
|
|
11
|
+
/** CSS class names to apply */
|
|
12
|
+
className?: string;
|
|
13
|
+
/** Inline styles to apply */
|
|
14
|
+
style?: React__default.CSSProperties;
|
|
15
|
+
/** Child elements to render */
|
|
16
|
+
children?: React__default.ReactNode;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Props for the Card.Title sub-component.
|
|
20
|
+
*
|
|
21
|
+
* @extends CardSubComponentProps
|
|
22
|
+
*/
|
|
23
|
+
interface CardTitleProps extends CardSubComponentProps {
|
|
24
|
+
/**
|
|
25
|
+
* HTML element to render as.
|
|
26
|
+
* @default 'h3'
|
|
27
|
+
*/
|
|
28
|
+
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
29
|
+
/**
|
|
30
|
+
* HTML id attribute for the title.
|
|
31
|
+
* Useful for aria-labelledby references.
|
|
32
|
+
*/
|
|
33
|
+
id?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Props for the Card.Content sub-component.
|
|
37
|
+
*
|
|
38
|
+
* @extends CardSubComponentProps
|
|
39
|
+
*/
|
|
40
|
+
interface CardContentProps extends CardSubComponentProps {
|
|
41
|
+
/**
|
|
42
|
+
* HTML element to render as.
|
|
43
|
+
* Use 'article' for standalone content, 'div' for generic containers.
|
|
44
|
+
* @default 'article'
|
|
45
|
+
*/
|
|
46
|
+
as?: 'article' | 'div' | 'section';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Props for the Card.Footer sub-component.
|
|
50
|
+
*
|
|
51
|
+
* @extends CardSubComponentProps
|
|
52
|
+
*/
|
|
53
|
+
interface CardFooterProps extends CardSubComponentProps {
|
|
54
|
+
/**
|
|
55
|
+
* HTML element to render as.
|
|
56
|
+
* @default 'div'
|
|
57
|
+
*/
|
|
58
|
+
as?: 'div' | 'footer';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Props for the main Card component.
|
|
62
|
+
*
|
|
63
|
+
* Extends all props from the UI component while adding Card-specific functionality.
|
|
64
|
+
* Supports polymorphic rendering via the `as` prop.
|
|
65
|
+
*
|
|
66
|
+
* @extends React.ComponentProps<typeof UI>
|
|
67
|
+
*/
|
|
68
|
+
interface CardProps extends React__default.ComponentProps<typeof UI> {
|
|
69
|
+
/**
|
|
70
|
+
* HTML element to render the Card as.
|
|
71
|
+
* Inherits from UI component's polymorphic `as` prop.
|
|
72
|
+
* @default 'div'
|
|
73
|
+
*/
|
|
74
|
+
as?: React__default.ElementType;
|
|
75
|
+
/**
|
|
76
|
+
* ARIA role for the card.
|
|
77
|
+
* Use 'article' for standalone content, 'region' with aria-label for landmarks.
|
|
78
|
+
* @example
|
|
79
|
+
* ```tsx
|
|
80
|
+
* <Card role="article">...</Card>
|
|
81
|
+
* <Card role="region" aria-label="User profile">...</Card>
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
role?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Accessible label for the card.
|
|
87
|
+
* Required when using interactive cards or role="region".
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* <Card role="region" aria-label="Featured products">...</Card>
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
'aria-label'?: string;
|
|
94
|
+
/**
|
|
95
|
+
* ID of element that labels this card.
|
|
96
|
+
* @example
|
|
97
|
+
* ```tsx
|
|
98
|
+
* <Card aria-labelledby="card-title-1">
|
|
99
|
+
* <Card.Title id="card-title-1">Title</Card.Title>
|
|
100
|
+
* </Card>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
'aria-labelledby'?: string;
|
|
104
|
+
/**
|
|
105
|
+
* ID of element that describes this card.
|
|
106
|
+
*/
|
|
107
|
+
'aria-describedby'?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Makes the card interactive with keyboard support.
|
|
110
|
+
* Adds tabIndex, role="button", and keyboard event handlers.
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
interactive?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Click handler for interactive cards.
|
|
116
|
+
* When provided without `interactive`, a warning will be logged in development.
|
|
117
|
+
*/
|
|
118
|
+
onClick?: (event: React__default.MouseEvent | React__default.KeyboardEvent) => void;
|
|
119
|
+
/**
|
|
120
|
+
* Tab index for keyboard navigation.
|
|
121
|
+
* Automatically set to 0 when `interactive` is true.
|
|
122
|
+
*/
|
|
123
|
+
tabIndex?: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Card.Title - Title sub-component for Card
|
|
128
|
+
*
|
|
129
|
+
* Renders a heading element for the card title. Defaults to h3 for proper
|
|
130
|
+
* document outline, but can be customized via the `as` prop.
|
|
131
|
+
*
|
|
132
|
+
* ## Accessibility
|
|
133
|
+
* - Use appropriate heading level based on document structure
|
|
134
|
+
* - Combine with `aria-labelledby` on parent Card for accessible names
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```tsx
|
|
138
|
+
* <Card aria-labelledby="card-title-1">
|
|
139
|
+
* <Card.Title id="card-title-1">Featured Product</Card.Title>
|
|
140
|
+
* </Card>
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* // Custom heading level
|
|
146
|
+
* <Card.Title as="h2">Section Title</Card.Title>
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
declare const Title: {
|
|
150
|
+
({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
|
|
151
|
+
displayName: string;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Card.Content - Content sub-component for Card
|
|
155
|
+
*
|
|
156
|
+
* Renders the main content area of the card. Defaults to `<article>` for
|
|
157
|
+
* standalone content, but can be changed to `div` or `section` via the `as` prop.
|
|
158
|
+
*
|
|
159
|
+
* ## Semantic HTML Guidelines
|
|
160
|
+
* - Use `article` (default) for self-contained, syndicate-able content
|
|
161
|
+
* - Use `div` for generic content containers
|
|
162
|
+
* - Use `section` for thematic groupings with a heading
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```tsx
|
|
166
|
+
* <Card>
|
|
167
|
+
* <Card.Title>Article Title</Card.Title>
|
|
168
|
+
* <Card.Content>
|
|
169
|
+
* <p>This is standalone content...</p>
|
|
170
|
+
* </Card.Content>
|
|
171
|
+
* </Card>
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```tsx
|
|
176
|
+
* // Generic container (not standalone content)
|
|
177
|
+
* <Card.Content as="div">
|
|
178
|
+
* <p>Generic content...</p>
|
|
179
|
+
* </Card.Content>
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
declare const Content: {
|
|
183
|
+
({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
|
|
184
|
+
displayName: string;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Card.Footer - Footer sub-component for Card
|
|
188
|
+
*
|
|
189
|
+
* Renders a footer section for the card. Use for actions, metadata, or
|
|
190
|
+
* supplementary information.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```tsx
|
|
194
|
+
* <Card>
|
|
195
|
+
* <Card.Title>Product</Card.Title>
|
|
196
|
+
* <Card.Content>Description...</Card.Content>
|
|
197
|
+
* <Card.Footer>
|
|
198
|
+
* <button>Add to Cart</button>
|
|
199
|
+
* <span>$29.99</span>
|
|
200
|
+
* </Card.Footer>
|
|
201
|
+
* </Card>
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```tsx
|
|
206
|
+
* // Semantic footer element
|
|
207
|
+
* <Card.Footer as="footer">
|
|
208
|
+
* <p>Last updated: 2024-01-15</p>
|
|
209
|
+
* </Card.Footer>
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
declare const Footer: {
|
|
213
|
+
({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
|
|
214
|
+
displayName: string;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Card - A flexible, accessible card component with compound component pattern
|
|
218
|
+
*
|
|
219
|
+
* The Card component provides a container for grouping related content and actions.
|
|
220
|
+
* It follows the compound component pattern, exposing `Card.Title`, `Card.Content`,
|
|
221
|
+
* and `Card.Footer` sub-components for structured layouts.
|
|
222
|
+
*
|
|
223
|
+
* ## Features
|
|
224
|
+
* - **Polymorphic rendering**: Render as any HTML element via `as` prop
|
|
225
|
+
* - **Compound components**: Structured sub-components for consistent layouts
|
|
226
|
+
* - **Interactive variant**: Built-in keyboard navigation and ARIA support
|
|
227
|
+
* - **Fully accessible**: WCAG 2.1 AA compliant with proper semantic HTML
|
|
228
|
+
*
|
|
229
|
+
* ## Accessibility
|
|
230
|
+
*
|
|
231
|
+
* ### Non-Interactive Cards
|
|
232
|
+
* - Use semantic HTML: `article` for standalone content, `section` for groupings
|
|
233
|
+
* - Provide accessible names with `aria-labelledby` referencing the title
|
|
234
|
+
*
|
|
235
|
+
* ### Interactive Cards (Clickable)
|
|
236
|
+
* - Set `interactive={true}` to enable keyboard navigation (Enter/Space)
|
|
237
|
+
* - Provide accessible name via `aria-label` or `aria-labelledby`
|
|
238
|
+
* - Ensure adequate focus indicators (handled by CSS)
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* // Basic card with compound components
|
|
242
|
+
* ```tsx
|
|
243
|
+
* <Card>
|
|
244
|
+
* <Card.Title>Product Name</Card.Title>
|
|
245
|
+
* <Card.Content>
|
|
246
|
+
* <p>Product description goes here...</p>
|
|
247
|
+
* </Card.Content>
|
|
248
|
+
* <Card.Footer>
|
|
249
|
+
* <button>Buy Now</button>
|
|
250
|
+
* </Card.Footer>
|
|
251
|
+
* </Card>
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* // Accessible interactive card
|
|
256
|
+
* ```tsx
|
|
257
|
+
* <Card
|
|
258
|
+
* interactive
|
|
259
|
+
* aria-label="View product details"
|
|
260
|
+
* onClick={() => navigate('/product/123')}
|
|
261
|
+
* >
|
|
262
|
+
* <Card.Title>Product Name</Card.Title>
|
|
263
|
+
* <Card.Content>Click anywhere to view details</Card.Content>
|
|
264
|
+
* </Card>
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* // Semantic article card with accessible name
|
|
269
|
+
* ```tsx
|
|
270
|
+
* <Card as="article" aria-labelledby="article-title">
|
|
271
|
+
* <Card.Title id="article-title">Article Headline</Card.Title>
|
|
272
|
+
* <Card.Content>Article body...</Card.Content>
|
|
273
|
+
* </Card>
|
|
274
|
+
* ```
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* // Card as a landmark region
|
|
278
|
+
* ```tsx
|
|
279
|
+
* <Card role="region" aria-label="Featured products">
|
|
280
|
+
* <Card.Title>Featured</Card.Title>
|
|
281
|
+
* <Card.Content>...</Card.Content>
|
|
282
|
+
* </Card>
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
declare const Card: {
|
|
286
|
+
({ as, styles, children, classes, id, interactive, onClick, tabIndex, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: CardProps): React__default.JSX.Element;
|
|
287
|
+
displayName: string;
|
|
288
|
+
Title: {
|
|
289
|
+
({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
|
|
290
|
+
displayName: string;
|
|
291
|
+
};
|
|
292
|
+
Content: {
|
|
293
|
+
({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
|
|
294
|
+
displayName: string;
|
|
295
|
+
};
|
|
296
|
+
Footer: {
|
|
297
|
+
({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
|
|
298
|
+
displayName: string;
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export { Card, CardProps, Content, Footer, Title, Card as default };
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
import React__default from 'react';
|
|
2
|
+
import { U as UI } from '../ui-645f95b5.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Base props shared across all Card sub-components.
|
|
6
|
+
*
|
|
7
|
+
* This interface provides common styling and structural props
|
|
8
|
+
* that all Card sub-components support.
|
|
9
|
+
*/
|
|
10
|
+
interface CardSubComponentProps {
|
|
11
|
+
/** CSS class names to apply */
|
|
12
|
+
className?: string;
|
|
13
|
+
/** Inline styles to apply */
|
|
14
|
+
style?: React__default.CSSProperties;
|
|
15
|
+
/** Child elements to render */
|
|
16
|
+
children?: React__default.ReactNode;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Props for the Card.Title sub-component.
|
|
20
|
+
*
|
|
21
|
+
* @extends CardSubComponentProps
|
|
22
|
+
*/
|
|
23
|
+
interface CardTitleProps extends CardSubComponentProps {
|
|
24
|
+
/**
|
|
25
|
+
* HTML element to render as.
|
|
26
|
+
* @default 'h3'
|
|
27
|
+
*/
|
|
28
|
+
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
29
|
+
/**
|
|
30
|
+
* HTML id attribute for the title.
|
|
31
|
+
* Useful for aria-labelledby references.
|
|
32
|
+
*/
|
|
33
|
+
id?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Props for the Card.Content sub-component.
|
|
37
|
+
*
|
|
38
|
+
* @extends CardSubComponentProps
|
|
39
|
+
*/
|
|
40
|
+
interface CardContentProps extends CardSubComponentProps {
|
|
41
|
+
/**
|
|
42
|
+
* HTML element to render as.
|
|
43
|
+
* Use 'article' for standalone content, 'div' for generic containers.
|
|
44
|
+
* @default 'article'
|
|
45
|
+
*/
|
|
46
|
+
as?: 'article' | 'div' | 'section';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Props for the Card.Footer sub-component.
|
|
50
|
+
*
|
|
51
|
+
* @extends CardSubComponentProps
|
|
52
|
+
*/
|
|
53
|
+
interface CardFooterProps extends CardSubComponentProps {
|
|
54
|
+
/**
|
|
55
|
+
* HTML element to render as.
|
|
56
|
+
* @default 'div'
|
|
57
|
+
*/
|
|
58
|
+
as?: 'div' | 'footer';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Props for the main Card component.
|
|
62
|
+
*
|
|
63
|
+
* Extends all props from the UI component while adding Card-specific functionality.
|
|
64
|
+
* Supports polymorphic rendering via the `as` prop.
|
|
65
|
+
*
|
|
66
|
+
* @extends React.ComponentProps<typeof UI>
|
|
67
|
+
*/
|
|
68
|
+
interface CardProps extends React__default.ComponentProps<typeof UI> {
|
|
69
|
+
/**
|
|
70
|
+
* HTML element to render the Card as.
|
|
71
|
+
* Inherits from UI component's polymorphic `as` prop.
|
|
72
|
+
* @default 'div'
|
|
73
|
+
*/
|
|
74
|
+
as?: React__default.ElementType;
|
|
75
|
+
/**
|
|
76
|
+
* ARIA role for the card.
|
|
77
|
+
* Use 'article' for standalone content, 'region' with aria-label for landmarks.
|
|
78
|
+
* @example
|
|
79
|
+
* ```tsx
|
|
80
|
+
* <Card role="article">...</Card>
|
|
81
|
+
* <Card role="region" aria-label="User profile">...</Card>
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
role?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Accessible label for the card.
|
|
87
|
+
* Required when using interactive cards or role="region".
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* <Card role="region" aria-label="Featured products">...</Card>
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
'aria-label'?: string;
|
|
94
|
+
/**
|
|
95
|
+
* ID of element that labels this card.
|
|
96
|
+
* @example
|
|
97
|
+
* ```tsx
|
|
98
|
+
* <Card aria-labelledby="card-title-1">
|
|
99
|
+
* <Card.Title id="card-title-1">Title</Card.Title>
|
|
100
|
+
* </Card>
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
'aria-labelledby'?: string;
|
|
104
|
+
/**
|
|
105
|
+
* ID of element that describes this card.
|
|
106
|
+
*/
|
|
107
|
+
'aria-describedby'?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Makes the card interactive with keyboard support.
|
|
110
|
+
* Adds tabIndex, role="button", and keyboard event handlers.
|
|
111
|
+
* @default false
|
|
112
|
+
*/
|
|
113
|
+
interactive?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Click handler for interactive cards.
|
|
116
|
+
* When provided without `interactive`, a warning will be logged in development.
|
|
117
|
+
*/
|
|
118
|
+
onClick?: (event: React__default.MouseEvent | React__default.KeyboardEvent) => void;
|
|
119
|
+
/**
|
|
120
|
+
* Tab index for keyboard navigation.
|
|
121
|
+
* Automatically set to 0 when `interactive` is true.
|
|
122
|
+
*/
|
|
123
|
+
tabIndex?: number;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Card.Title - Title sub-component for Card
|
|
128
|
+
*
|
|
129
|
+
* Renders a heading element for the card title. Defaults to h3 for proper
|
|
130
|
+
* document outline, but can be customized via the `as` prop.
|
|
131
|
+
*
|
|
132
|
+
* ## Accessibility
|
|
133
|
+
* - Use appropriate heading level based on document structure
|
|
134
|
+
* - Combine with `aria-labelledby` on parent Card for accessible names
|
|
135
|
+
*
|
|
136
|
+
* @example
|
|
137
|
+
* ```tsx
|
|
138
|
+
* <Card aria-labelledby="card-title-1">
|
|
139
|
+
* <Card.Title id="card-title-1">Featured Product</Card.Title>
|
|
140
|
+
* </Card>
|
|
141
|
+
* ```
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* // Custom heading level
|
|
146
|
+
* <Card.Title as="h2">Section Title</Card.Title>
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
declare const Title: {
|
|
150
|
+
({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
|
|
151
|
+
displayName: string;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Card.Content - Content sub-component for Card
|
|
155
|
+
*
|
|
156
|
+
* Renders the main content area of the card. Defaults to `<article>` for
|
|
157
|
+
* standalone content, but can be changed to `div` or `section` via the `as` prop.
|
|
158
|
+
*
|
|
159
|
+
* ## Semantic HTML Guidelines
|
|
160
|
+
* - Use `article` (default) for self-contained, syndicate-able content
|
|
161
|
+
* - Use `div` for generic content containers
|
|
162
|
+
* - Use `section` for thematic groupings with a heading
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```tsx
|
|
166
|
+
* <Card>
|
|
167
|
+
* <Card.Title>Article Title</Card.Title>
|
|
168
|
+
* <Card.Content>
|
|
169
|
+
* <p>This is standalone content...</p>
|
|
170
|
+
* </Card.Content>
|
|
171
|
+
* </Card>
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* ```tsx
|
|
176
|
+
* // Generic container (not standalone content)
|
|
177
|
+
* <Card.Content as="div">
|
|
178
|
+
* <p>Generic content...</p>
|
|
179
|
+
* </Card.Content>
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
declare const Content: {
|
|
183
|
+
({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
|
|
184
|
+
displayName: string;
|
|
185
|
+
};
|
|
186
|
+
/**
|
|
187
|
+
* Card.Footer - Footer sub-component for Card
|
|
188
|
+
*
|
|
189
|
+
* Renders a footer section for the card. Use for actions, metadata, or
|
|
190
|
+
* supplementary information.
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```tsx
|
|
194
|
+
* <Card>
|
|
195
|
+
* <Card.Title>Product</Card.Title>
|
|
196
|
+
* <Card.Content>Description...</Card.Content>
|
|
197
|
+
* <Card.Footer>
|
|
198
|
+
* <button>Add to Cart</button>
|
|
199
|
+
* <span>$29.99</span>
|
|
200
|
+
* </Card.Footer>
|
|
201
|
+
* </Card>
|
|
202
|
+
* ```
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* ```tsx
|
|
206
|
+
* // Semantic footer element
|
|
207
|
+
* <Card.Footer as="footer">
|
|
208
|
+
* <p>Last updated: 2024-01-15</p>
|
|
209
|
+
* </Card.Footer>
|
|
210
|
+
* ```
|
|
211
|
+
*/
|
|
212
|
+
declare const Footer: {
|
|
213
|
+
({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
|
|
214
|
+
displayName: string;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Card - A flexible, accessible card component with compound component pattern
|
|
218
|
+
*
|
|
219
|
+
* The Card component provides a container for grouping related content and actions.
|
|
220
|
+
* It follows the compound component pattern, exposing `Card.Title`, `Card.Content`,
|
|
221
|
+
* and `Card.Footer` sub-components for structured layouts.
|
|
222
|
+
*
|
|
223
|
+
* ## Features
|
|
224
|
+
* - **Polymorphic rendering**: Render as any HTML element via `as` prop
|
|
225
|
+
* - **Compound components**: Structured sub-components for consistent layouts
|
|
226
|
+
* - **Interactive variant**: Built-in keyboard navigation and ARIA support
|
|
227
|
+
* - **Fully accessible**: WCAG 2.1 AA compliant with proper semantic HTML
|
|
228
|
+
*
|
|
229
|
+
* ## Accessibility
|
|
230
|
+
*
|
|
231
|
+
* ### Non-Interactive Cards
|
|
232
|
+
* - Use semantic HTML: `article` for standalone content, `section` for groupings
|
|
233
|
+
* - Provide accessible names with `aria-labelledby` referencing the title
|
|
234
|
+
*
|
|
235
|
+
* ### Interactive Cards (Clickable)
|
|
236
|
+
* - Set `interactive={true}` to enable keyboard navigation (Enter/Space)
|
|
237
|
+
* - Provide accessible name via `aria-label` or `aria-labelledby`
|
|
238
|
+
* - Ensure adequate focus indicators (handled by CSS)
|
|
239
|
+
*
|
|
240
|
+
* @example
|
|
241
|
+
* // Basic card with compound components
|
|
242
|
+
* ```tsx
|
|
243
|
+
* <Card>
|
|
244
|
+
* <Card.Title>Product Name</Card.Title>
|
|
245
|
+
* <Card.Content>
|
|
246
|
+
* <p>Product description goes here...</p>
|
|
247
|
+
* </Card.Content>
|
|
248
|
+
* <Card.Footer>
|
|
249
|
+
* <button>Buy Now</button>
|
|
250
|
+
* </Card.Footer>
|
|
251
|
+
* </Card>
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* // Accessible interactive card
|
|
256
|
+
* ```tsx
|
|
257
|
+
* <Card
|
|
258
|
+
* interactive
|
|
259
|
+
* aria-label="View product details"
|
|
260
|
+
* onClick={() => navigate('/product/123')}
|
|
261
|
+
* >
|
|
262
|
+
* <Card.Title>Product Name</Card.Title>
|
|
263
|
+
* <Card.Content>Click anywhere to view details</Card.Content>
|
|
264
|
+
* </Card>
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* // Semantic article card with accessible name
|
|
269
|
+
* ```tsx
|
|
270
|
+
* <Card as="article" aria-labelledby="article-title">
|
|
271
|
+
* <Card.Title id="article-title">Article Headline</Card.Title>
|
|
272
|
+
* <Card.Content>Article body...</Card.Content>
|
|
273
|
+
* </Card>
|
|
274
|
+
* ```
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* // Card as a landmark region
|
|
278
|
+
* ```tsx
|
|
279
|
+
* <Card role="region" aria-label="Featured products">
|
|
280
|
+
* <Card.Title>Featured</Card.Title>
|
|
281
|
+
* <Card.Content>...</Card.Content>
|
|
282
|
+
* </Card>
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
declare const Card: {
|
|
286
|
+
({ as, styles, children, classes, id, interactive, onClick, tabIndex, role, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...props }: CardProps): React__default.JSX.Element;
|
|
287
|
+
displayName: string;
|
|
288
|
+
Title: {
|
|
289
|
+
({ children, className, style, as, ...props }: CardTitleProps): React__default.JSX.Element;
|
|
290
|
+
displayName: string;
|
|
291
|
+
};
|
|
292
|
+
Content: {
|
|
293
|
+
({ children, className, style, as, ...props }: CardContentProps): React__default.JSX.Element;
|
|
294
|
+
displayName: string;
|
|
295
|
+
};
|
|
296
|
+
Footer: {
|
|
297
|
+
({ children, className, style, as, ...props }: CardFooterProps): React__default.JSX.Element;
|
|
298
|
+
displayName: string;
|
|
299
|
+
};
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
export { Card, CardProps, Content, Footer, Title, Card as default };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--card-p: 2rem;--card-bg: #fff;--card-radius: calc(var(--card-p) / 4);--card-position: relative;--card-display: flex;--card-direction: column;--card-gap: 1rem}[data-card],[data-component~=card]{display:var(--card-display);flex-direction:var(--card-direction);gap:var(--card-gap);border-radius:var(--card-radius);background-color:var(--card-bg);text-align:var(--card-align, left)}[data-card] h3,[data-card] h2,[data-component~=card] h3,[data-component~=card] h2{margin-block-end:0;padding-block-end:0}[data-card]+div,[data-component~=card]+div{margin-block-start:0}[data-card]>article,[data-component~=card]>article{display:flex;flex-direction:column;flex:2}[data-card]>*:not(img),[data-component~=card]>*:not(img){padding-inline:var(--card-p)}[data-card]>*:last-child:not(img),[data-component~=card]>*:last-child:not(img){padding-block-end:var(--card-p)}[data-card]>*:first-child:not(img),[data-component~=card]>*:first-child:not(img){padding-block-start:calc(var(--card-p) - .5rem)}/*# sourceMappingURL=card.css.map */
|
|
1
|
+
:root{--card-p: 2rem;--card-bg: #fff;--card-radius: calc(var(--card-p) / 4);--card-position: relative;--card-display: flex;--card-direction: column;--card-gap: 1rem}[data-card],[data-component~=card]{display:var(--card-display);flex-direction:var(--card-direction);gap:var(--card-gap);border-radius:var(--card-radius);background-color:var(--card-bg);text-align:var(--card-align, left)}[data-card] h3,[data-card] h2,[data-component~=card] h3,[data-component~=card] h2{margin-block-end:0;padding-block-end:0}[data-card]+div,[data-component~=card]+div{margin-block-start:0}[data-card]>article,[data-component~=card]>article{display:flex;flex-direction:column;flex:2}[data-card]>*:not(img),[data-component~=card]>*:not(img){padding-inline:var(--card-p)}[data-card]>*:last-child:not(img),[data-component~=card]>*:last-child:not(img){padding-block-end:var(--card-p)}[data-card]>*:first-child:not(img),[data-component~=card]>*:first-child:not(img){padding-block-start:calc(var(--card-p) - .5rem)}[data-card=interactive]{cursor:pointer;transition:box-shadow .2s ease,transform .2s ease}[data-card=interactive]:hover{transform:translateY(-2px);box-shadow:0 .25rem .75rem rgba(0,0,0,.15)}[data-card=interactive]:focus-visible{outline:.125rem solid var(--focus-color, #0066CC);outline-offset:.125rem}[data-card=interactive]:focus:not(:focus-visible){outline:none}/*# sourceMappingURL=card.css.map */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../src/components/cards/card.scss"],"names":[],"mappings":"AAAA,MACE,eACA,gBACA,uCACA,0BACA,qBACA,yBACA,iBAGF,mCAEE,4BACA,qCACA,oBACA,iCACA,gCACA,mCAEA,kFAEE,mBACA,oBAEF,2CACE,qBAEF,mDACE,aACA,sBACA,OAGF,yDACE,6BAEF,+EAEE,gCAEF,iFACE","file":"card.css"}
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../src/components/cards/card.scss"],"names":[],"mappings":"AAAA,MACE,eACA,gBACA,uCACA,0BACA,qBACA,yBACA,iBAGF,mCAEE,4BACA,qCACA,oBACA,iCACA,gCACA,mCAEA,kFAEE,mBACA,oBAEF,2CACE,qBAEF,mDACE,aACA,sBACA,OAGF,yDACE,6BAEF,+EAEE,gCAEF,iFACE,gDAKJ,wBACE,eACA,kDAEA,8BACE,2BACA,2CAIF,sCACE,kDACA,uBAIF,kDACE","file":"card.css"}
|