@fpkit/acss 0.5.12 → 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 +89 -0
- package/libs/{chunk-DV56L5YX.cjs → chunk-2LTJ7HHX.cjs} +4 -4
- package/libs/{chunk-EQ67LF46.js → chunk-2Y7W75TT.js} +3 -3
- package/libs/{chunk-KKLTUJFB.cjs → chunk-3MKLDCKQ.cjs} +5 -5
- package/libs/chunk-3MKLDCKQ.cjs.map +1 -0
- package/libs/{chunk-X3EVB7VS.cjs → chunk-5S4ORA4C.cjs} +3 -3
- package/libs/{chunk-O6QZBB6G.js → chunk-772NRB75.js} +5 -5
- package/libs/chunk-772NRB75.js.map +1 -0
- package/libs/{chunk-6BVXFW7U.cjs → chunk-AHDJGCG5.cjs} +3 -3
- package/libs/{chunk-E3XP6BEX.cjs → chunk-B7F5FS6D.cjs} +3 -3
- 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-GZ4QFPRY.js +9 -0
- package/libs/chunk-GZ4QFPRY.js.map +1 -0
- package/libs/{chunk-LHVJKDMA.cjs → chunk-J32EZPYD.cjs} +3 -3
- 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-LL7HTLMS.cjs → chunk-M5RRNTVX.cjs} +3 -3
- package/libs/{chunk-LIQJ7ZZR.js → chunk-NGTJDDFO.js} +2 -2
- 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-PQ2K3BM6.cjs +17 -0
- package/libs/chunk-PQ2K3BM6.cjs.map +1 -0
- package/libs/{chunk-QCMV4VQZ.js → chunk-QLZWHAMK.js} +2 -2
- package/libs/{chunk-BIP2NY53.js → chunk-RIVUMPOG.js} +2 -2
- package/libs/{chunk-ICCKQ2GC.cjs → chunk-ROZI23GS.cjs} +4 -4
- package/libs/{chunk-NHYXGV3L.js → chunk-SMYRLO3E.js} +2 -2
- package/libs/{chunk-5ZM4XL44.js → chunk-TYRCEX2L.js} +2 -2
- package/libs/chunk-VUH3FXGJ.js +11 -0
- package/libs/chunk-VUH3FXGJ.js.map +1 -0
- package/libs/{chunk-PPOOBUOS.js → chunk-XBA562WW.js} +2 -2
- package/libs/{chunk-QVV34QEH.cjs → chunk-XTQKWY7W.cjs} +3 -3
- package/libs/{chunk-YWOYVRFT.js → chunk-ZANSFMTD.js} +3 -3
- 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 +271 -32
- package/libs/components/breadcrumbs/breadcrumb.d.ts +271 -32
- package/libs/components/breadcrumbs/breadcrumb.js +3 -3
- package/libs/components/button.cjs +4 -4
- package/libs/components/button.d.cts +2 -2
- package/libs/components/button.d.ts +2 -2
- package/libs/components/button.js +2 -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 +277 -33
- package/libs/components/card.d.ts +277 -33
- 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 +7 -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 +5 -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 +2 -2
- package/libs/components/form/fields.d.ts +2 -2
- package/libs/components/form/fields.js +2 -2
- package/libs/components/form/textarea.cjs +4 -4
- package/libs/components/form/textarea.d.cts +2 -2
- package/libs/components/form/textarea.d.ts +2 -2
- package/libs/components/form/textarea.js +2 -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 +148 -4
- package/libs/components/icons/icon.d.ts +148 -4
- 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.d.cts +2 -2
- package/libs/components/link/link.d.ts +2 -2
- package/libs/components/link/link.js +2 -2
- package/libs/components/list/list.cjs +5 -5
- package/libs/components/list/list.d.cts +3 -3
- package/libs/components/list/list.d.ts +3 -3
- package/libs/components/list/list.js +2 -2
- package/libs/components/modal.cjs +4 -4
- package/libs/components/modal.js +3 -3
- package/libs/components/nav/nav.cjs +7 -7
- package/libs/components/nav/nav.d.cts +2 -2
- package/libs/components/nav/nav.d.ts +2 -2
- package/libs/components/nav/nav.js +3 -3
- package/libs/components/text/text.cjs +5 -5
- package/libs/components/text/text.d.cts +2 -2
- package/libs/components/text/text.d.ts +2 -2
- package/libs/components/text/text.js +2 -2
- 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 -3
- package/libs/icons.d.cts +1 -1
- package/libs/icons.d.ts +1 -1
- package/libs/icons.js +2 -2
- package/libs/index.cjs +112 -91
- 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 +515 -31
- package/libs/index.d.ts +515 -31
- package/libs/index.js +31 -19
- package/libs/index.js.map +1 -1
- package/libs/ui-645f95b5.d.ts +285 -0
- package/package.json +2 -83
- 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/buttons/button.scss +34 -31
- package/src/components/buttons/button.stories.tsx +35 -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 -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-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/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 +10 -2
- 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 -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 +240 -51
- 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-6TE5QEVE.cjs +0 -13
- 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-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-ECLD37WN.cjs +0 -16
- package/libs/chunk-ECLD37WN.cjs.map +0 -1
- package/libs/chunk-HYBZBN4G.js +0 -8
- package/libs/chunk-HYBZBN4G.js.map +0 -1
- package/libs/chunk-KKLTUJFB.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-O6QZBB6G.js.map +0 -1
- package/libs/chunk-SXVZSWX6.js +0 -11
- package/libs/chunk-SXVZSWX6.js.map +0 -1
- 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-DV56L5YX.cjs.map → chunk-2LTJ7HHX.cjs.map} +0 -0
- /package/libs/{chunk-EQ67LF46.js.map → chunk-2Y7W75TT.js.map} +0 -0
- /package/libs/{chunk-X3EVB7VS.cjs.map → chunk-5S4ORA4C.cjs.map} +0 -0
- /package/libs/{chunk-6BVXFW7U.cjs.map → chunk-AHDJGCG5.cjs.map} +0 -0
- /package/libs/{chunk-E3XP6BEX.cjs.map → chunk-B7F5FS6D.cjs.map} +0 -0
- /package/libs/{chunk-LHVJKDMA.cjs.map → chunk-J32EZPYD.cjs.map} +0 -0
- /package/libs/{chunk-LL7HTLMS.cjs.map → chunk-M5RRNTVX.cjs.map} +0 -0
- /package/libs/{chunk-LIQJ7ZZR.js.map → chunk-NGTJDDFO.js.map} +0 -0
- /package/libs/{chunk-QCMV4VQZ.js.map → chunk-QLZWHAMK.js.map} +0 -0
- /package/libs/{chunk-BIP2NY53.js.map → chunk-RIVUMPOG.js.map} +0 -0
- /package/libs/{chunk-ICCKQ2GC.cjs.map → chunk-ROZI23GS.cjs.map} +0 -0
- /package/libs/{chunk-NHYXGV3L.js.map → chunk-SMYRLO3E.js.map} +0 -0
- /package/libs/{chunk-5ZM4XL44.js.map → chunk-TYRCEX2L.js.map} +0 -0
- /package/libs/{chunk-PPOOBUOS.js.map → chunk-XBA562WW.js.map} +0 -0
- /package/libs/{chunk-QVV34QEH.cjs.map → chunk-XTQKWY7W.cjs.map} +0 -0
- /package/libs/{chunk-YWOYVRFT.js.map → chunk-ZANSFMTD.js.map} +0 -0
package/src/styles/index.css
CHANGED
|
@@ -180,6 +180,7 @@ svg[role=img] {
|
|
|
180
180
|
--placeholder-style: italic;
|
|
181
181
|
--placeholder-fs: smaller;
|
|
182
182
|
--transition: all 0.25s linear;
|
|
183
|
+
--tran-all: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
183
184
|
--fs-0: clamp(.9rem, 4vw - 1rem, 1.12rem);
|
|
184
185
|
--fs-1: clamp(0.65rem, 1.3vw + 0.25rem, 0.75rem);
|
|
185
186
|
--fs-2: clamp(0.7rem, 2vw - 0.5rem, 0.875rem);
|
|
@@ -428,25 +429,21 @@ h6:has(span:first-of-type) > span {
|
|
|
428
429
|
}
|
|
429
430
|
|
|
430
431
|
button {
|
|
431
|
-
--btn-xs: 0.
|
|
432
|
-
--btn-sm: 0.
|
|
433
|
-
--btn-md: 0.
|
|
434
|
-
--btn-lg: 1.
|
|
432
|
+
--btn-xs: 0.6875rem;
|
|
433
|
+
--btn-sm: 0.8125rem;
|
|
434
|
+
--btn-md: 0.9375rem;
|
|
435
|
+
--btn-lg: 1.125rem;
|
|
435
436
|
--btn-pill: 100rem;
|
|
436
|
-
--btn-
|
|
437
|
-
--
|
|
438
|
-
--btn-fs: 0.9375rem;
|
|
437
|
+
--btn-fs: var(--btn-md);
|
|
438
|
+
--btn-height: calc(var(--btn-fs) * 2.25);
|
|
439
439
|
--btn-bg: lightgray;
|
|
440
440
|
--btn-width: max-content;
|
|
441
|
-
--btn-calc-height: var(--btn-height, calc(40rem / 16));
|
|
442
441
|
font-size: var(--btn-fs);
|
|
443
442
|
font-weight: var(--btn-fw, 500);
|
|
444
|
-
height: var(--btn-height
|
|
445
|
-
max-height: var(--btn-calc-height);
|
|
446
|
-
min-height: 1.5rem;
|
|
443
|
+
height: var(--btn-height);
|
|
447
444
|
place-items: var(--btn-place, center);
|
|
448
|
-
padding-inline: var(--btn-px, calc(var(--btn-fs)
|
|
449
|
-
padding-block: var(--btn-py, calc(var(--btn-fs)
|
|
445
|
+
padding-inline: var(--btn-px, calc(var(--btn-fs) * 1.5));
|
|
446
|
+
padding-block: var(--btn-py, calc(var(--btn-fs) * 0.5));
|
|
450
447
|
border: var(--btn-bdr, none);
|
|
451
448
|
border-radius: var(--btn-rds, 0.375rem);
|
|
452
449
|
text-decoration: var(--btn-deco, none);
|
|
@@ -455,7 +452,7 @@ button {
|
|
|
455
452
|
gap: var(--btn-gap, 0.2rem);
|
|
456
453
|
white-space: var(--btn-wspc, inherit);
|
|
457
454
|
margin: var(--btn-spc, 0);
|
|
458
|
-
transition: var(--tran-all);
|
|
455
|
+
transition: var(--btn-transition, var(--tran-all, all 0.3s cubic-bezier(0.4, 0, 0.2, 1)));
|
|
459
456
|
background-color: var(--btn-bg, var(--btn));
|
|
460
457
|
outline: none;
|
|
461
458
|
width: var(--btn-width);
|
|
@@ -478,14 +475,15 @@ button[disabled]:is(:hover, :focus), button[aria-disabled=true]:is(:hover, :focu
|
|
|
478
475
|
transform: none;
|
|
479
476
|
}
|
|
480
477
|
button:is(:hover, :focus) {
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
478
|
+
filter: var(--btn-hover-filter, brightness(0.85));
|
|
479
|
+
transform: var(--btn-hover-transform, scale(1.03));
|
|
480
|
+
outline: var(--btn-hover-outline, thin);
|
|
484
481
|
outline-offset: var(--line-offset, 1px);
|
|
485
482
|
}
|
|
486
483
|
button:is(:hover, :focus)[aria-disabled=true] {
|
|
487
484
|
transform: none;
|
|
488
485
|
opacity: var(--btn-opacity, 0.5);
|
|
486
|
+
filter: none;
|
|
489
487
|
}
|
|
490
488
|
button[type=reset] {
|
|
491
489
|
--btn-bg: transparent;
|
|
@@ -501,25 +499,25 @@ button[type=submit] {
|
|
|
501
499
|
button[data-fp-btn~=pill], button[data-btn~=pill], button[data-style~=pill] {
|
|
502
500
|
border-radius: var(--btn-pill, 100rem);
|
|
503
501
|
}
|
|
504
|
-
button[data-btn~=xs]
|
|
505
|
-
|
|
502
|
+
button[data-btn~=xs],
|
|
503
|
+
button .btn-xs {
|
|
506
504
|
--btn-fs: var(--btn-xs);
|
|
507
|
-
--btn-height: 1.5rem;
|
|
508
505
|
text-transform: uppercase;
|
|
509
506
|
}
|
|
510
|
-
button[data-btn~=sm]
|
|
507
|
+
button[data-btn~=sm],
|
|
508
|
+
button .btn-sm {
|
|
511
509
|
--btn-fs: var(--btn-sm);
|
|
512
|
-
--btn-height: 1.75rem;
|
|
513
510
|
}
|
|
514
|
-
button[data-btn~=md]
|
|
511
|
+
button[data-btn~=md],
|
|
512
|
+
button .btn-md {
|
|
515
513
|
--btn-fs: var(--btn-md);
|
|
516
|
-
--btn-height: 2rem;
|
|
517
514
|
}
|
|
518
|
-
button[data-btn~=lg]
|
|
515
|
+
button[data-btn~=lg],
|
|
516
|
+
button .btn-lg {
|
|
519
517
|
--btn-fs: var(--btn-lg);
|
|
520
|
-
--btn-height: 2.5rem;
|
|
521
518
|
}
|
|
522
|
-
button[data-btn~=icon]
|
|
519
|
+
button[data-btn~=icon],
|
|
520
|
+
button .btn-icon {
|
|
523
521
|
padding: unset;
|
|
524
522
|
height: unset;
|
|
525
523
|
--btn-bg: transparent;
|
|
@@ -530,7 +528,8 @@ button[data-btn~=icon] {
|
|
|
530
528
|
align-items: center;
|
|
531
529
|
justify-content: center;
|
|
532
530
|
}
|
|
533
|
-
button[data-btn~=text]
|
|
531
|
+
button[data-btn~=text],
|
|
532
|
+
button .btn-text {
|
|
534
533
|
--btn-bg: transparent;
|
|
535
534
|
--btn-cl: currentColor;
|
|
536
535
|
--btn-bdr: none;
|
|
@@ -539,10 +538,12 @@ button[data-btn~=text] {
|
|
|
539
538
|
--btn-py: 0.75rem;
|
|
540
539
|
--btn-px: 0.75rem;
|
|
541
540
|
}
|
|
542
|
-
button[data-btn~=text]:is(:hover, :focus)
|
|
543
|
-
|
|
544
|
-
|
|
541
|
+
button[data-btn~=text]:is(:hover, :focus),
|
|
542
|
+
button .btn-text:is(:hover, :focus) {
|
|
543
|
+
background-color: color-mix(in srgb, var(--btn-cl) 10%, transparent);
|
|
544
|
+
outline: 0.025rem solid var(--btn-cl);
|
|
545
545
|
outline-offset: 0;
|
|
546
|
+
filter: none;
|
|
546
547
|
}
|
|
547
548
|
|
|
548
549
|
p[role=note],
|
|
@@ -615,24 +616,36 @@ p[role=note] {
|
|
|
615
616
|
--border-radius: 0.5rem;
|
|
616
617
|
}
|
|
617
618
|
|
|
619
|
+
/**
|
|
620
|
+
* Image component styles
|
|
621
|
+
*
|
|
622
|
+
* Applies to all images with alt attribute (both decorative alt="" and semantic).
|
|
623
|
+
* Uses CSS custom properties for flexible theming and responsive behavior.
|
|
624
|
+
*/
|
|
618
625
|
img[alt] {
|
|
626
|
+
/* CSS Custom Properties - Override these for customization */
|
|
619
627
|
--img-max-width: 100%;
|
|
620
628
|
--img-height: auto;
|
|
621
629
|
--img-object-fit: cover;
|
|
622
630
|
--img-object-position: center;
|
|
623
631
|
--img-aspect-ratio: auto 2/3;
|
|
624
632
|
--img-display: inline-block;
|
|
633
|
+
/* Layout - Responsive by default */
|
|
625
634
|
max-width: var(--img-max-width);
|
|
626
|
-
max-inline-size: var(--img-max-width);
|
|
635
|
+
max-inline-size: var(--img-max-width); /* Logical property for i18n */
|
|
627
636
|
block-size: var(--img-height);
|
|
637
|
+
display: var(--img-display);
|
|
638
|
+
vertical-align: middle;
|
|
639
|
+
/* Object fitting for responsive images */
|
|
628
640
|
object-fit: var(--img-object-fit);
|
|
629
641
|
object-position: var(--img-object-position);
|
|
630
642
|
aspect-ratio: var(--img-aspect-ratio);
|
|
631
|
-
|
|
632
|
-
vertical-align: middle;
|
|
643
|
+
/* Accessibility - Italic font for broken image alt text */
|
|
633
644
|
font-style: italic;
|
|
645
|
+
/* Background for loading state */
|
|
634
646
|
background-size: cover;
|
|
635
647
|
background-repeat: no-repeat;
|
|
648
|
+
/* Shape margin for text wrapping */
|
|
636
649
|
shape-margin: var(--spc-3);
|
|
637
650
|
}
|
|
638
651
|
|
|
@@ -705,6 +718,22 @@ figure:has(img[alt]) > figcaption {
|
|
|
705
718
|
padding-block-start: calc(var(--card-p) - 0.5rem);
|
|
706
719
|
}
|
|
707
720
|
|
|
721
|
+
[data-card=interactive] {
|
|
722
|
+
cursor: pointer;
|
|
723
|
+
transition: box-shadow 0.2s ease, transform 0.2s ease;
|
|
724
|
+
}
|
|
725
|
+
[data-card=interactive]:hover {
|
|
726
|
+
transform: translateY(-2px);
|
|
727
|
+
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);
|
|
728
|
+
}
|
|
729
|
+
[data-card=interactive]:focus-visible {
|
|
730
|
+
outline: 0.125rem solid var(--focus-color, #0066CC);
|
|
731
|
+
outline-offset: 0.125rem;
|
|
732
|
+
}
|
|
733
|
+
[data-card=interactive]:focus:not(:focus-visible) {
|
|
734
|
+
outline: none;
|
|
735
|
+
}
|
|
736
|
+
|
|
708
737
|
progress {
|
|
709
738
|
/* Revert all styles */
|
|
710
739
|
all: revert;
|
|
@@ -790,6 +819,12 @@ details {
|
|
|
790
819
|
max-height: var(--max-h-closed);
|
|
791
820
|
overflow: clip;
|
|
792
821
|
}
|
|
822
|
+
@starting-style {
|
|
823
|
+
details {
|
|
824
|
+
transition: var(--summary-transitions);
|
|
825
|
+
color: red;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
793
828
|
details + details {
|
|
794
829
|
border-radius: 0;
|
|
795
830
|
border-top: none;
|
|
@@ -819,14 +854,6 @@ details summary {
|
|
|
819
854
|
transition: var(--summary-transitions);
|
|
820
855
|
/* This ensures no bullet points are shown */
|
|
821
856
|
}
|
|
822
|
-
@supports (transition-behavior: allow-discrete) {
|
|
823
|
-
@starting-style {
|
|
824
|
-
details summary {
|
|
825
|
-
border-bottom: none;
|
|
826
|
-
transition: var(--summary-transitions);
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
}
|
|
830
857
|
details summary::-webkit-details-marker {
|
|
831
858
|
display: none;
|
|
832
859
|
}
|
|
@@ -861,6 +888,19 @@ details[open] > summary {
|
|
|
861
888
|
details[open] > section {
|
|
862
889
|
max-height: var(--max-h-open);
|
|
863
890
|
}
|
|
891
|
+
@starting-style {
|
|
892
|
+
details[open] > section {
|
|
893
|
+
max-height: 0;
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
@supports (transition-behavior: allow-discrete) {
|
|
897
|
+
@starting-style {
|
|
898
|
+
details {
|
|
899
|
+
max-height: 0;
|
|
900
|
+
transition: var(--summary-transitions);
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
}
|
|
864
904
|
|
|
865
905
|
a[href] {
|
|
866
906
|
--link-decoration: none;
|
|
@@ -1118,8 +1158,23 @@ footer > div {
|
|
|
1118
1158
|
--dialog-button-hover-bg: whitesmoke;
|
|
1119
1159
|
--dialog-display: flex;
|
|
1120
1160
|
--dialog-flex-direction: column;
|
|
1161
|
+
/* Focus and accessibility */
|
|
1162
|
+
--dialog-focus-color: #0066cc;
|
|
1163
|
+
--dialog-focus-width: 0.125rem;
|
|
1164
|
+
--dialog-focus-offset: 0.125rem;
|
|
1165
|
+
--dialog-focus-outline: var(--dialog-focus-width) solid var(--dialog-focus-color);
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
/* High contrast mode support */
|
|
1169
|
+
@media (prefers-contrast: high) {
|
|
1170
|
+
:root {
|
|
1171
|
+
--dialog-border-color: currentColor;
|
|
1172
|
+
--dialog-border-width: 0.125rem;
|
|
1173
|
+
--dialog-close-color: currentColor;
|
|
1174
|
+
--dialog-button-border: currentColor 0.125rem solid;
|
|
1175
|
+
--dialog-focus-width: 0.1875rem;
|
|
1176
|
+
}
|
|
1121
1177
|
}
|
|
1122
|
-
|
|
1123
1178
|
dialog {
|
|
1124
1179
|
width: var(--dialog-min-w);
|
|
1125
1180
|
min-width: var(--min-w);
|
|
@@ -1127,7 +1182,12 @@ dialog {
|
|
|
1127
1182
|
border: var(--dialog-border-color) var(--dialog-border-width) solid;
|
|
1128
1183
|
border-radius: var(--dialog-border-radius);
|
|
1129
1184
|
padding: var(--dialog-padding);
|
|
1130
|
-
padding-block-start:
|
|
1185
|
+
padding-block-start: var(--dialog-padding);
|
|
1186
|
+
/* Focus visible for keyboard navigation */
|
|
1187
|
+
}
|
|
1188
|
+
dialog:focus-visible {
|
|
1189
|
+
outline: var(--dialog-focus-outline);
|
|
1190
|
+
outline-offset: var(--dialog-focus-offset);
|
|
1131
1191
|
}
|
|
1132
1192
|
dialog[open] {
|
|
1133
1193
|
display: var(--dialog-display);
|
|
@@ -1162,11 +1222,22 @@ dialog section {
|
|
|
1162
1222
|
background-color: var(--dialog-button-bg);
|
|
1163
1223
|
border: var(--dialog-button-border);
|
|
1164
1224
|
cursor: pointer;
|
|
1225
|
+
/* Keyboard focus indicator */
|
|
1226
|
+
/* Remove default focus for mouse users */
|
|
1165
1227
|
}
|
|
1166
|
-
.dialog-header button[type=button]:hover
|
|
1228
|
+
.dialog-header button[type=button]:hover {
|
|
1167
1229
|
border-color: var(--dialog-close-color);
|
|
1168
1230
|
background-color: var(--dialog-button-hover-bg);
|
|
1169
1231
|
}
|
|
1232
|
+
.dialog-header button[type=button]:focus-visible {
|
|
1233
|
+
outline: var(--dialog-focus-outline);
|
|
1234
|
+
outline-offset: var(--dialog-focus-offset);
|
|
1235
|
+
border-color: var(--dialog-focus-color);
|
|
1236
|
+
background-color: var(--dialog-button-hover-bg);
|
|
1237
|
+
}
|
|
1238
|
+
.dialog-header button[type=button]:focus:not(:focus-visible) {
|
|
1239
|
+
outline: none;
|
|
1240
|
+
}
|
|
1170
1241
|
|
|
1171
1242
|
.alert-dialog-actions,
|
|
1172
1243
|
.dialog-footer {
|
|
@@ -1176,6 +1247,16 @@ dialog section {
|
|
|
1176
1247
|
justify-content: var(--dialog-footer-justify, flex-end);
|
|
1177
1248
|
gap: var(--dialog-gap);
|
|
1178
1249
|
width: 100%;
|
|
1250
|
+
/* Focus styles for footer buttons */
|
|
1251
|
+
}
|
|
1252
|
+
.alert-dialog-actions button:focus-visible,
|
|
1253
|
+
.dialog-footer button:focus-visible {
|
|
1254
|
+
outline: var(--dialog-focus-outline);
|
|
1255
|
+
outline-offset: var(--dialog-focus-offset);
|
|
1256
|
+
}
|
|
1257
|
+
.alert-dialog-actions button:focus:not(:focus-visible),
|
|
1258
|
+
.dialog-footer button:focus:not(:focus-visible) {
|
|
1259
|
+
outline: none;
|
|
1179
1260
|
}
|
|
1180
1261
|
|
|
1181
1262
|
:root {
|
|
@@ -1290,8 +1371,26 @@ sup:has(> span) span {
|
|
|
1290
1371
|
color: inherit;
|
|
1291
1372
|
}
|
|
1292
1373
|
sup:has(> span)[data-badge~=rounded] {
|
|
1293
|
-
--badge-radius:
|
|
1294
|
-
--badge-padding: 0
|
|
1374
|
+
--badge-radius: 50%;
|
|
1375
|
+
--badge-padding: 0;
|
|
1376
|
+
--badge-size: 1.5625rem;
|
|
1377
|
+
width: var(--badge-size);
|
|
1378
|
+
height: var(--badge-size);
|
|
1379
|
+
display: inline-flex;
|
|
1380
|
+
align-items: center;
|
|
1381
|
+
justify-content: center;
|
|
1382
|
+
line-height: 1;
|
|
1383
|
+
font-size: 0.6875rem;
|
|
1384
|
+
font-weight: 700;
|
|
1385
|
+
overflow: hidden;
|
|
1386
|
+
box-sizing: border-box;
|
|
1387
|
+
}
|
|
1388
|
+
sup:has(> span)[data-badge~=rounded] span {
|
|
1389
|
+
max-width: 100%;
|
|
1390
|
+
overflow: hidden;
|
|
1391
|
+
text-overflow: clip;
|
|
1392
|
+
white-space: nowrap;
|
|
1393
|
+
padding: 0 0.125rem;
|
|
1295
1394
|
}
|
|
1296
1395
|
|
|
1297
1396
|
body > nav,
|
|
@@ -1511,6 +1610,19 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
|
|
|
1511
1610
|
text-decoration: none;
|
|
1512
1611
|
}
|
|
1513
1612
|
|
|
1613
|
+
/* Screen reader only utility class */
|
|
1614
|
+
.sr-only {
|
|
1615
|
+
position: absolute;
|
|
1616
|
+
width: 1px;
|
|
1617
|
+
height: 1px;
|
|
1618
|
+
padding: 0;
|
|
1619
|
+
margin: -1px;
|
|
1620
|
+
overflow: hidden;
|
|
1621
|
+
clip: rect(0, 0, 0, 0);
|
|
1622
|
+
white-space: nowrap;
|
|
1623
|
+
border-width: 0;
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1514
1626
|
[role=alert] {
|
|
1515
1627
|
/* Success colors */
|
|
1516
1628
|
--alert-success-bg: #e6f4ea;
|
|
@@ -1528,6 +1640,8 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
|
|
|
1528
1640
|
--alert-info-bg: #e5f6fd;
|
|
1529
1641
|
--alert-info-border: #0288d1;
|
|
1530
1642
|
--alert-info-text: #084154;
|
|
1643
|
+
/* Animation */
|
|
1644
|
+
--alert-transition-duration: 0.3s;
|
|
1531
1645
|
--alert-border: thin solid currentColor;
|
|
1532
1646
|
background-color: var(--alert-bg, whitesmoke);
|
|
1533
1647
|
border: var(--alert-border, currentColor);
|
|
@@ -1539,19 +1653,59 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
|
|
|
1539
1653
|
display: flex;
|
|
1540
1654
|
flex-direction: row;
|
|
1541
1655
|
border-radius: var(--alert-border-radius, var(--border-radius));
|
|
1542
|
-
border: var(--alert-border);
|
|
1543
1656
|
gap: var(--alert-gap, var(--spc-4));
|
|
1657
|
+
/* Exit animations */
|
|
1658
|
+
transition: opacity var(--alert-transition-duration) ease, transform var(--alert-transition-duration) ease;
|
|
1659
|
+
opacity: 1;
|
|
1660
|
+
transform: translateY(0);
|
|
1661
|
+
/* Focus indicators for keyboard navigation (WCAG 2.4.7) */
|
|
1662
|
+
/* Hide focus outline for mouse clicks, keep for keyboard */
|
|
1663
|
+
/* Variant: Filled - Solid colored background */
|
|
1664
|
+
/* Variant: Soft - No border, subtle background */
|
|
1665
|
+
/* Variant: Outlined - Default with border (no additional styles needed) */
|
|
1666
|
+
}
|
|
1667
|
+
[role=alert]:not([data-visible=true]) {
|
|
1668
|
+
opacity: 0;
|
|
1669
|
+
transform: translateY(-0.5rem);
|
|
1670
|
+
}
|
|
1671
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1672
|
+
[role=alert] {
|
|
1673
|
+
transition-duration: 0.01ms;
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
[role=alert]:focus {
|
|
1677
|
+
outline: 2px solid currentColor;
|
|
1678
|
+
outline-offset: 2px;
|
|
1679
|
+
}
|
|
1680
|
+
[role=alert]:focus:not(:focus-visible) {
|
|
1681
|
+
outline: none;
|
|
1544
1682
|
}
|
|
1545
|
-
[role=alert]
|
|
1683
|
+
[role=alert] .alert-icon {
|
|
1546
1684
|
margin-block-start: 0;
|
|
1547
1685
|
align-items: center;
|
|
1548
1686
|
}
|
|
1549
1687
|
[role=alert] .alert-message {
|
|
1550
1688
|
flex: 2;
|
|
1551
1689
|
margin-block-start: 0;
|
|
1690
|
+
/* Title styles for both heading and strong elements */
|
|
1691
|
+
/* Reset heading-specific styles */
|
|
1552
1692
|
}
|
|
1553
|
-
[role=alert] .alert-message
|
|
1554
|
-
margin-block-end: 0;
|
|
1693
|
+
[role=alert] .alert-message .alert-title {
|
|
1694
|
+
margin-block-end: var(--spc-1, 0.25rem);
|
|
1695
|
+
margin-block-start: 0;
|
|
1696
|
+
font-weight: var(--alert-title-weight, 600);
|
|
1697
|
+
font-size: var(--alert-title-size, inherit);
|
|
1698
|
+
line-height: 1.4;
|
|
1699
|
+
}
|
|
1700
|
+
[role=alert] .alert-message h2.alert-title,
|
|
1701
|
+
[role=alert] .alert-message h3.alert-title,
|
|
1702
|
+
[role=alert] .alert-message h4.alert-title,
|
|
1703
|
+
[role=alert] .alert-message h5.alert-title,
|
|
1704
|
+
[role=alert] .alert-message h6.alert-title {
|
|
1705
|
+
margin: 0;
|
|
1706
|
+
margin-block-end: var(--spc-1, 0.25rem);
|
|
1707
|
+
font-size: inherit;
|
|
1708
|
+
font-weight: var(--alert-title-weight, 600);
|
|
1555
1709
|
}
|
|
1556
1710
|
[role=alert][data-alert~=info] {
|
|
1557
1711
|
--alert-bg: var(--alert-info-bg);
|
|
@@ -1576,6 +1730,41 @@ nav[data-breadcrumb] ol li a[href][aria-current] {
|
|
|
1576
1730
|
[role=alert] button[data-btn~=icon] {
|
|
1577
1731
|
--btn-bg: transparent;
|
|
1578
1732
|
}
|
|
1733
|
+
[role=alert] * + div {
|
|
1734
|
+
margin-block-start: var(--spc-1);
|
|
1735
|
+
}
|
|
1736
|
+
[role=alert][data-variant=filled] {
|
|
1737
|
+
border: none;
|
|
1738
|
+
}
|
|
1739
|
+
[role=alert][data-variant=filled][data-alert~=info] {
|
|
1740
|
+
--alert-bg: var(--alert-info-border);
|
|
1741
|
+
--alert-color: white;
|
|
1742
|
+
}
|
|
1743
|
+
[role=alert][data-variant=filled][data-alert~=warning] {
|
|
1744
|
+
--alert-bg: var(--alert-warning-border);
|
|
1745
|
+
--alert-color: white;
|
|
1746
|
+
}
|
|
1747
|
+
[role=alert][data-variant=filled][data-alert~=error] {
|
|
1748
|
+
--alert-bg: var(--alert-error-border);
|
|
1749
|
+
--alert-color: white;
|
|
1750
|
+
}
|
|
1751
|
+
[role=alert][data-variant=filled][data-alert~=success] {
|
|
1752
|
+
--alert-bg: var(--alert-success-border);
|
|
1753
|
+
--alert-color: white;
|
|
1754
|
+
}
|
|
1755
|
+
[role=alert][data-variant=filled][data-alert~=default] {
|
|
1756
|
+
--alert-bg: #757575;
|
|
1757
|
+
--alert-color: white;
|
|
1758
|
+
}
|
|
1759
|
+
[role=alert][data-variant=soft] {
|
|
1760
|
+
border: none;
|
|
1761
|
+
}
|
|
1762
|
+
[role=alert][data-variant=outlined] {
|
|
1763
|
+
/* This is the default variant, styles already applied above */
|
|
1764
|
+
}
|
|
1765
|
+
[role=alert] p {
|
|
1766
|
+
font-size: 0.875rem;
|
|
1767
|
+
}
|
|
1579
1768
|
|
|
1580
1769
|
[data-tts] {
|
|
1581
1770
|
--tts-gap: 0.5rem;
|
package/src/styles/index.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../sass/_reset.scss","../sass/_properties.scss","../sass/_globals.scss","../sass/_elements.scss","../components/buttons/button.scss","../components/tag/tag.scss","../components/images/img.scss","../components/cards/card.scss","../components/progress/progress.scss","../components/details/details.scss","../components/link/link.scss","../sass/_mixins.scss","../components/layout/_header.scss","../components/layout/landmarks.scss","../components/dialog/dialog.scss","../sass/_grid.scss","../components/badge/badge.scss","../components/nav/nav.scss","../components/form/form.scss","../components/breadcrumbs/breadcrumb.scss","../components/alert/alert.scss","../components/text-to-speech/text-to-speech.scss","../sass/styles/_shadows.scss","../sass/styles/_colors.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;EAGE;;;AAGF;AACE;AACA;EACA;AAEA;AACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAGA;AAAA;EAEE;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAUE;;;AAGF;AAWA;AACA;EACE;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AAAA;EAEE;;;AAGF;AACA;AAAA;AAAA;AAAA;EAIE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;IACE;;EAGF;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AAIJ;AACA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AACA;EACE;;;AAGF;EACE;AAEA;AAGA;EACA;;AAEA;EACE;EACA;EACA;;;ACpLJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EAGA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../sass/_reset.scss","../sass/_properties.scss","../sass/_globals.scss","../sass/_elements.scss","../components/buttons/button.scss","../components/tag/tag.scss","../components/images/img.scss","../components/cards/card.scss","../components/progress/progress.scss","../components/details/details.scss","../components/link/link.scss","../sass/_mixins.scss","../components/layout/_header.scss","../components/layout/landmarks.scss","../components/dialog/dialog.scss","../sass/_grid.scss","../components/badge/badge.scss","../components/nav/nav.scss","../components/form/form.scss","../components/breadcrumbs/breadcrumb.scss","../components/alert/alert.scss","../components/text-to-speech/text-to-speech.scss","../sass/styles/_shadows.scss","../sass/styles/_colors.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;EAGE;;;AAGF;AACE;AACA;EACA;AAEA;AACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAGA;AAAA;EAEE;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAUE;;;AAGF;AAWA;AACA;EACE;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AAAA;EAEE;;;AAGF;AACA;AAAA;AAAA;AAAA;EAIE;EACA;EACA;;;AAGF;AAAA;AAAA;EAGE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;AACA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;;;AAGF;AACA;EACE;IACE;;EAGF;AAAA;AAAA;IAGE;IACA;IACA;IACA;;;AAIJ;AACA;AAAA;EAEE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAOE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AACA;EACE;;;AAGF;EACE;AAEA;AAGA;EACA;;AAEA;EACE;EACA;EACA;;;ACpLJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EAEA;EACA;EAGA;EAEA;EAEA;EAEA;EAEA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;;;ACzGF;EACE;AAAA;AAAA;EAGA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;AACA;EACE;;;AAKN;AAAA;AAAA;EAGE;;AACA;AAAA;AAAA;EACE;;;AAIJ;AAAA;AAAA;AAAA;EAIE;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAEF;AAAA;AAAA;AAAA;EACE;;;AAKF;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;AAAA;EAEE;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EAEE;EACA;EACA;;AAEF;AAAA;EACE;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EAME;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AC1IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;;ACdJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EAEE;EACA;;AAGF;EAEE;;AAGA;EACE;;AAOJ;EAEE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EAGE;;AAGF;AAAA;EAEE;EACA;;AAGF;AAAA;EAEE;;AAGF;AAAA;EAEE;;AAGF;AAAA;EAEE;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;EACA;;;AC7IN;AAAA;AAAA;AAAA;EAIE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;EACE;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAGF;AAAA;AAAA;AAAA;EACE;EACA;;AAEF;AAAA;AAAA;AAAA;EACE;EACA;;;AAGJ;EACE;EACA;;;ACtDF;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;AAEA;EACA;EACA;AAEA;EACA;;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;;ACvDN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;AAAA;EAEE;EACA;;AAEF;AAAA;EACE;;AAEF;AAAA;EACE;EACA;EACA;;AAGF;AAAA;EACE;;AAEF;AAAA;EAEE;;AAEF;AAAA;EACE;;;AAKJ;EACE;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;;AAIF;EACE;;;AC/DJ;AACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;AACA;AACA;AA8BA;;AA7BA;EAEE;EACA;EACA;EACA;AAgBA;;AAbA;AACE;EACA;EACA;;AAIF;AACE;EACA;EACA;;AAIF;AACE;EACA;EACA;;AAKJ;EAEE;EACA;EAEA;AAcA;;AAZA;AACE;EAEA;;AAGF;EAGE;;AAIF;AACE;EAEA;;;ACjEN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAjCF;IAkCI;IACA;;;AAGF;EACE;EACA;;AAGF;EACE;;AAGF;EACE;;AAIF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAYA;;AAVA;EACE;;AAGF;EACE;EACA;EACA;;AAIF;EACE;;AAEF;EACE;;AAKF;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;;AACA;EACE;;AAEF;EACE;;AACA;EAFF;IAGI;;;AAKN;EACE;IAxHJ;MAyHM;MACA;;;;;ACxHN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAAA;EAEA;EACA;AAAA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EAEE;;AAGF;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EClEF;EACA;EACA;EACA;EACA;;AD+DE;EACE;EACA;;AAEF;EACE;;ACnEJ;EACE;;ADsEF;EAEE;EACA;EACA;;AACA;EAEE;;;AAKN;EACE;;;AE1FF;AAAA;AAAA;EAIE;EAEA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;EACE;EAEA;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;;;AChEN;AAAA;EAEE;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;;;AAIJ;EACE;EACA;;AACA;AAAA;EAEE;EACA;;AACA;AAAA;EACE;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;;AAEF;AAAA;EACE;EACA;;;AAON;EACE;EACA;EACA;EACA;EACA;;;AChDJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;;;AAGF;AACA;EACE;IACE;IACA;IACA;IACA;IACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAGF;EACE;EACA;EACA;AAOA;AAQA;;AAbA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;;AAIF;EACE;;;AAKN;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;AAAA;EACE;EACA;;AAGF;AAAA;EACE;;;AC3HJ;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EAEA;EACA;EACA;;AACA;EACE;EACA;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EAIA;EACA;EACA;EACA;EACA;;;AClGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;;AAEF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACE;EACA;EACA;EACA;EACA;;;ACnCN;AAAA;EAEE;EACA;;AAEA;EALF;AAAA;IAMI;IACA;IACA;IACA;IACA;;;AAGA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACE;;AAEF;AAAA;EACE;;;AAMR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;;AAKF;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;;;ACvFJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;AACA;EACE;EACA;EACA;;AAGF;EACE;;;AAIJ;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;AAAA;EACE;EACA;EACA;EACA;;AAGF;AAAA;AAAA;AAAA;AAAA;EACE;;AAKA;AAAA;AAAA;EACE;EACA;;AACA;AAAA;AAAA;EACE;;AAKN;AAAA;AAAA;EACE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;ACrFF;AAAA;EAEE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;;AACA;AAAA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;AAAA;EACE;;AAEF;AAAA;EACE;;AACA;AAAA;EACE;EACA;;;AC7BV;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;AACE;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EAEA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;EACA,YACE;EAEF;EACA;AAWA;AAMA;AAsEA;AA8BA;AAKA;;AAxHA;EACE;EACA;;AAGF;EAlDF;IAmDI;;;AAIF;EACE;EACA;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;AAEA;AASA;;AARA;EACE;EACA;EACA;EACA;EACA;;AAIF;AAAA;AAAA;AAAA;AAAA;EAKE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIA;EACE;;AAIJ;EACE;;AAIF;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKJ;EACE;;AAIF;AACE;;AAGF;EACE;;;ACxLJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AACA;AAAA;EAEE;;AACA;AAAA;EACE;;;AC3BN;EACE;EACA;EACA;AAAA;EAEA;AAAA;EAEA;AAAA;EAEA;AAAA;;;AAIF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AAEF;EACE;;;AChCF;EACE;;;AAGF;EACE;;AACA;EACE;;AAEF;EACE","file":"index.css"}
|
|
@@ -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/libs/chunk-6TE5QEVE.cjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var e = require('react');
|
|
4
|
-
|
|
5
|
-
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
6
|
-
|
|
7
|
-
var e__default = /*#__PURE__*/_interopDefault(e);
|
|
8
|
-
|
|
9
|
-
var t=e__default.default.forwardRef(({as:o,styles:p,classes:n,children:r,defaultStyles:s,...P},m)=>{let C=o??"div",a={...s,...p};return e__default.default.createElement(C,{ref:m,style:a,className:n,...P},r)}),y=t;t.displayName="FP";
|
|
10
|
-
|
|
11
|
-
exports.a = y;
|
|
12
|
-
//# sourceMappingURL=out.js.map
|
|
13
|
-
//# sourceMappingURL=chunk-6TE5QEVE.cjs.map
|
|
@@ -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":"+JAAA,OAAOA,GAAS,UAAAC,EAAQ,aAAAC,MAAgC,QCAxD,OAAOF,MAAW,QA+BlB,IAAMG,EAAe,CAAC,CACpB,YAAAC,EACA,QAAAC,EACA,KAAAC,EAAO,IACT,IAKIN,EAAA,cAACO,EAAA,CAAG,GAAG,MAAM,QAAQ,iBACnBP,EAAA,cAACQ,EAAA,CAAQ,KAAMF,EAAM,UAAU,gBAC5BF,GAAe,QAClB,EACAJ,EAAA,cAACS,EAAA,CACC,KAAK,SACL,QAVc,IAAM,CACxBJ,EAAQ,CACV,EASM,UAAU,eACV,aAAW,eACX,WAAS,QAETL,EAAA,cAACU,EAAA,KACCV,EAAA,cAACU,EAAK,OAAL,CAAY,KAAM,GAAI,CACzB,CACF,CACF,EAIGC,EAAQX,EAAM,KAAKG,CAAY,EACtCA,EAAa,YAAc,eC5D3B,OAAOH,MAAW,QAWlB,IAAMY,EAA4C,CAAC,CACjD,QAAAC,EACA,UAAAC,EACA,aAAAC,EACA,YAAAC,CACF,IAEIhB,EAAA,cAACO,EAAA,CAAG,GAAG,UAAU,UAAU,iBACxBS,GACChB,EAAA,cAACS,EAAA,CACC,KAAK,SACL,QAASI,EACT,UAAU,iCACV,WAAS,MAERG,CACH,EAGDF,GACCd,EAAA,cAACS,EAAA,CACC,KAAK,SACL,QAASK,EACT,UAAU,+BACV,WAAS,MAERC,CACH,CAEJ,EAIGE,EAAQL,EC5Cf,OAAS,eAAAM,MAA8B,QAEhC,IAAMC,EAAwB,CACnCC,EACAC,IAEoBH,EACjBI,GAA2C,CAC1C,IAAMC,EAAmBH,EAAU,SAAS,sBAAsB,EAC9DG,IAEAD,EAAE,QAAUC,EAAiB,KAC7BD,EAAE,QAAUC,EAAiB,QAC7BD,EAAE,QAAUC,EAAiB,MAC7BD,EAAE,QAAUC,EAAiB,QAG7BF,EAAY,CAGlB,EACA,CAACD,EAAWC,CAAW,CACzB,EH8BK,IAAMG,EAAqC,CAAC,CACjD,WAAAC,EACA,cAAAC,EACA,QAAAb,EACA,YAAAT,EACA,YAAAuB,EACA,SAAAC,EACA,UAAAd,EACA,aAAAC,EAAe,UACf,YAAAC,EAAc,SACd,UAAAa,EAAY,GACZ,WAAAC,EACA,OAAAC,CACF,IAAM,CACJ,IAAMX,EAAYnB,EAA0B,IAAI,EAC1C,CAAC+B,EAAQC,CAAS,EAAIjC,EAAM,SAASyB,CAAU,EAErDvB,EAAU,IAAM,CACd+B,EAAUR,CAAU,CACtB,EAAG,CAACA,CAAU,CAAC,EAEfvB,EAAU,IAAM,CACd,IAAMgC,EAASd,EAAU,QACpBc,IAEDF,EACEN,EACFQ,EAAO,KAAK,EAEZA,EAAO,UAAU,EAGnBA,EAAO,MAAM,EAEjB,EAAG,CAACF,EAAQN,CAAa,CAAC,EAE1B,IAAML,EAAc,IAAM,CACpBR,GAASA,EAAQ,EACrBoB,EAAU,EAAK,CACjB,EAEME,EAAqBhB,EAAsBC,EAAWC,CAAW,EAEvE,OACErB,EAAA,cAACO,EAAA,CACC,GAAG,SACH,KAAMmB,EAAgB,cAAgB,SACtC,IAAKN,EACL,QAASC,EACT,QAASc,EACT,aAAYH,EAAS,OAAS,OAC9B,UAAW,gBAAqBH,CAAS,GACzC,aAAYF,EACZ,MAAOI,GAEP/B,EAAA,cAACW,EAAA,CAAa,YAAaP,EAAa,QAASiB,EAAa,EAE9DrB,EAAA,cAACO,EAAA,CACC,GAAG,UACH,UAAW,kBAAkBsB,CAAS,GACtC,QAAUP,GAAwBA,EAAE,gBAAgB,GAEnDM,EACA,CAACE,GACA9B,EAAA,cAACiB,EAAA,CACC,QAASI,EACT,UAAWP,EACX,aAAcC,EACd,YAAaC,EACf,CAEJ,CACF,CAEJ,EACOoB,EAAQpC,EAAM,KAAKwB,CAAM","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"]}
|