@dnanpm/ui-components 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -0
- package/dist/components/Accordion/Accordion.css +5 -1
- package/dist/components/AccordionItem/AccordionItem.cjs +4 -4
- package/dist/components/AccordionItem/AccordionItem.cjs.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.css +4 -1
- package/dist/components/AccordionItem/AccordionItem.d.ts.map +1 -1
- package/dist/components/AccordionItem/AccordionItem.js +2 -2
- package/dist/components/AccordionItem/AccordionItem.js.map +1 -1
- package/dist/components/Avatar/Avatar.cjs +83 -0
- package/dist/components/Avatar/Avatar.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.css +188 -0
- package/dist/components/Avatar/Avatar.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +83 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.cjs +40 -0
- package/dist/components/Avatar/Avatar.module.css.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.module.css.js +40 -0
- package/dist/components/Avatar/Avatar.module.css.js.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +66 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.cjs +17 -0
- package/dist/components/Avatar/Avatar.utils.cjs.map +1 -0
- package/dist/components/Avatar/Avatar.utils.d.ts +6 -0
- package/dist/components/Avatar/Avatar.utils.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.utils.js +17 -0
- package/dist/components/Avatar/Avatar.utils.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Breadcrumb/Breadcrumb.cjs +9 -12
- package/dist/components/Breadcrumb/Breadcrumb.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.css +16 -16
- package/dist/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.js +2 -5
- package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.cjs.map +1 -1
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js +5 -8
- package/dist/components/Breadcrumb/Breadcrumb.module.css.js.map +1 -1
- package/dist/components/Button/Button.cjs +29 -3
- package/dist/components/Button/Button.cjs.map +1 -1
- package/dist/components/Button/Button.css +78 -31
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js +28 -2
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Button/Button.module.css.cjs +19 -11
- package/dist/components/Button/Button.module.css.cjs.map +1 -1
- package/dist/components/Button/Button.module.css.js +19 -11
- package/dist/components/Button/Button.module.css.js.map +1 -1
- package/dist/components/Button/Button.types.d.ts +20 -3
- package/dist/components/Button/Button.types.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -1
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.cjs +19 -14
- package/dist/components/ButtonCard/ButtonCard.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.css +63 -20
- package/dist/components/ButtonCard/ButtonCard.d.ts +2 -1
- package/dist/components/ButtonCard/ButtonCard.d.ts.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.js +17 -12
- package/dist/components/ButtonCard/ButtonCard.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.cjs.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.module.css.js +14 -12
- package/dist/components/ButtonCard/ButtonCard.module.css.js.map +1 -1
- package/dist/components/ButtonCard/ButtonCard.types.d.ts +3 -2
- package/dist/components/ButtonCard/ButtonCard.types.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.cjs +105 -0
- package/dist/components/Checkbox/Checkbox.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.css +323 -0
- package/dist/components/Checkbox/Checkbox.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +105 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.cjs.map +1 -0
- package/dist/components/Checkbox/Checkbox.module.css.js +35 -0
- package/dist/components/Checkbox/Checkbox.module.css.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +47 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/ContentCard/ContentCard.cjs +8 -7
- package/dist/components/ContentCard/ContentCard.cjs.map +1 -1
- package/dist/components/ContentCard/ContentCard.css +39 -34
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +3 -2
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.module.css.cjs +18 -18
- package/dist/components/ContentCard/ContentCard.module.css.js +18 -18
- package/dist/components/ContentCard/ContentCard.types.d.ts +2 -1
- package/dist/components/ContentCard/ContentCard.types.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.cjs +15 -7
- package/dist/components/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/Drawer/Drawer.css +48 -45
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +12 -4
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Drawer/Drawer.module.css.cjs +16 -16
- package/dist/components/Drawer/Drawer.module.css.js +16 -16
- package/dist/components/Footer/Footer.cjs +8 -9
- package/dist/components/Footer/Footer.cjs.map +1 -1
- package/dist/components/Footer/Footer.css +87 -83
- package/dist/components/Footer/Footer.d.ts.map +1 -1
- package/dist/components/Footer/Footer.js +1 -2
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/Footer/Footer.module.css.cjs +39 -39
- package/dist/components/Footer/Footer.module.css.js +39 -39
- package/dist/components/FunctionButton/FunctionButton.cjs +2 -2
- package/dist/components/FunctionButton/FunctionButton.cjs.map +1 -1
- package/dist/components/FunctionButton/FunctionButton.css +5 -1
- package/dist/components/FunctionButton/FunctionButton.js +1 -1
- package/dist/components/FunctionButton/FunctionButton.js.map +1 -1
- package/dist/components/Hero/Hero.cjs +30 -27
- package/dist/components/Hero/Hero.cjs.map +1 -1
- package/dist/components/Hero/Hero.css +49 -44
- package/dist/components/Hero/Hero.d.ts +1 -1
- package/dist/components/Hero/Hero.d.ts.map +1 -1
- package/dist/components/Hero/Hero.js +30 -27
- package/dist/components/Hero/Hero.js.map +1 -1
- package/dist/components/Hero/Hero.module.css.cjs +18 -18
- package/dist/components/Hero/Hero.module.css.js +18 -18
- package/dist/components/Hero/Hero.types.d.ts +2 -6
- package/dist/components/Hero/Hero.types.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.cjs +3 -4
- package/dist/components/IconButton/IconButton.cjs.map +1 -1
- package/dist/components/IconButton/IconButton.css +5 -1
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js +1 -2
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/Label/Label.css +5 -1
- package/dist/components/MainNavigation/MainNavigation.cjs +216 -162
- package/dist/components/MainNavigation/MainNavigation.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.css +206 -183
- package/dist/components/MainNavigation/MainNavigation.d.ts +1 -1
- package/dist/components/MainNavigation/MainNavigation.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.js +177 -123
- package/dist/components/MainNavigation/MainNavigation.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.module.css.js +80 -78
- package/dist/components/MainNavigation/MainNavigation.module.css.js.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.types.d.ts +0 -13
- package/dist/components/MainNavigation/MainNavigation.types.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.cjs +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.cjs.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts +1 -0
- package/dist/components/MainNavigation/MainNavigation.utils.d.ts.map +1 -1
- package/dist/components/MainNavigation/MainNavigation.utils.js +8 -4
- package/dist/components/MainNavigation/MainNavigation.utils.js.map +1 -1
- package/dist/components/Modal/Modal.cjs +14 -6
- package/dist/components/Modal/Modal.cjs.map +1 -1
- package/dist/components/Modal/Modal.css +44 -40
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +12 -4
- package/dist/components/Modal/Modal.js.map +1 -1
- package/dist/components/Modal/Modal.module.css.cjs +18 -18
- package/dist/components/Modal/Modal.module.css.js +18 -18
- package/dist/components/Notification/Notification.cjs +3 -2
- package/dist/components/Notification/Notification.cjs.map +1 -1
- package/dist/components/Notification/Notification.css +16 -11
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +2 -1
- package/dist/components/Notification/Notification.js.map +1 -1
- package/dist/components/Notification/Notification.module.css.cjs +9 -9
- package/dist/components/Notification/Notification.module.css.js +9 -9
- package/dist/components/Pagination/Pagination.cjs +142 -0
- package/dist/components/Pagination/Pagination.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.css +256 -0
- package/dist/components/Pagination/Pagination.d.ts +3 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.js +142 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.cjs +34 -0
- package/dist/components/Pagination/Pagination.module.css.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.module.css.js +34 -0
- package/dist/components/Pagination/Pagination.module.css.js.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +20 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.cjs +76 -0
- package/dist/components/Pagination/Pagination.utils.cjs.map +1 -0
- package/dist/components/Pagination/Pagination.utils.d.ts +21 -0
- package/dist/components/Pagination/Pagination.utils.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.utils.js +76 -0
- package/dist/components/Pagination/Pagination.utils.js.map +1 -0
- package/dist/components/Pagination/index.d.ts +3 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Pictograph/Pictograph.css +5 -1
- package/dist/components/Pictograph/PictographItem.css +5 -1
- package/dist/components/Quote/Quote.css +5 -1
- package/dist/components/Spinner/Spinner.css +5 -1
- package/dist/design-tokens/dist/tokens.cjs +5 -0
- package/dist/design-tokens/dist/tokens.cjs.map +1 -0
- package/dist/design-tokens/dist/tokens.js +5 -0
- package/dist/design-tokens/dist/tokens.js.map +1 -0
- package/dist/index.cjs +6 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/styles/utilities.css +6 -0
- package/dist/styles/utils/elevation.css +35 -26
- package/dist/styles/utils/focus.css +63 -68
- package/dist/styles/utils/index.cjs +33 -0
- package/dist/styles/utils/index.cjs.map +1 -0
- package/dist/styles/utils/index.d.ts +20 -0
- package/dist/styles/utils/index.d.ts.map +1 -0
- package/dist/styles/utils/index.js +33 -0
- package/dist/styles/utils/index.js.map +1 -0
- package/dist/styles/utils/overlay.css +35 -27
- package/dist/styles/utils/text-decoration.css +20 -12
- package/dist/styles.css +27 -3
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/isRenderable/index.d.ts +2 -0
- package/dist/utils/isRenderable/index.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.cjs +5 -0
- package/dist/utils/isRenderable/isRenderable.cjs.map +1 -0
- package/dist/utils/isRenderable/isRenderable.d.ts +4 -0
- package/dist/utils/isRenderable/isRenderable.d.ts.map +1 -0
- package/dist/utils/isRenderable/isRenderable.js +5 -0
- package/dist/utils/isRenderable/isRenderable.js.map +1 -0
- package/package.json +12 -4
- package/dist/styles/utils/elevation.module.css.cjs +0 -16
- package/dist/styles/utils/elevation.module.css.cjs.map +0 -1
- package/dist/styles/utils/elevation.module.css.js +0 -16
- package/dist/styles/utils/elevation.module.css.js.map +0 -1
- package/dist/styles/utils/focus.module.css.cjs +0 -16
- package/dist/styles/utils/focus.module.css.cjs.map +0 -1
- package/dist/styles/utils/focus.module.css.js +0 -16
- package/dist/styles/utils/focus.module.css.js.map +0 -1
- package/dist/styles/utils/overlay.module.css.cjs +0 -13
- package/dist/styles/utils/overlay.module.css.cjs.map +0 -1
- package/dist/styles/utils/overlay.module.css.js +0 -13
- package/dist/styles/utils/overlay.module.css.js.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.cjs +0 -13
- package/dist/styles/utils/text-decoration.module.css.cjs.map +0 -1
- package/dist/styles/utils/text-decoration.module.css.js +0 -13
- package/dist/styles/utils/text-decoration.module.css.js.map +0 -1
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
@layer dds-base, dds-components;@layer dds-components { @layer fallback, components; }@layer dds-components.components{._button-
|
|
1
|
+
@layer dds-base, dds-components;@layer dds-components { @layer fallback, components; }@layer dds-components.components{._button-card-container_je3cs_1 {
|
|
2
|
+
display: block;
|
|
3
|
+
width: 100%;
|
|
4
|
+
container-name: button-card;
|
|
5
|
+
container-type: inline-size;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
._button-card_je3cs_1 {
|
|
2
9
|
--_button-card-padding: var(--spacing-space-16);
|
|
3
10
|
--_button-card-gap: var(--spacing-space-16);
|
|
4
11
|
--_button-card-content-gap: var(--spacing-space-16);
|
|
@@ -28,18 +35,19 @@
|
|
|
28
35
|
appearance: none;
|
|
29
36
|
}
|
|
30
37
|
|
|
31
|
-
._button-
|
|
38
|
+
._button-card_je3cs_1:where(:hover, :focus-visible) {
|
|
32
39
|
border-color: var(--color-semantic-border-neutral-mid);
|
|
33
40
|
}
|
|
34
41
|
|
|
35
42
|
/* === Size variants (base holds the medium/default values) === */
|
|
36
43
|
|
|
37
|
-
._button-card--
|
|
44
|
+
._button-card--large_je3cs_44 {
|
|
38
45
|
--_button-card-title-font: var(--typography-heading-xs);
|
|
39
46
|
--_button-card-subtitle-font: var(--typography-label-lg);
|
|
40
47
|
}
|
|
41
48
|
|
|
42
|
-
._button-card--
|
|
49
|
+
._button-card--small_je3cs_49,
|
|
50
|
+
._button-card--dynamic_je3cs_50 {
|
|
43
51
|
flex-direction: column;
|
|
44
52
|
align-items: stretch;
|
|
45
53
|
--_button-card-padding: var(--spacing-space-8);
|
|
@@ -54,9 +62,33 @@
|
|
|
54
62
|
--_button-card-subtitle-font: var(--typography-label-sm);
|
|
55
63
|
}
|
|
56
64
|
|
|
65
|
+
@container button-card (min-width: 16rem) {
|
|
66
|
+
._button-card--dynamic_je3cs_50 {
|
|
67
|
+
flex-direction: row;
|
|
68
|
+
align-items: center;
|
|
69
|
+
--_button-card-padding: var(--spacing-space-16);
|
|
70
|
+
--_button-card-gap: var(--spacing-space-16);
|
|
71
|
+
--_button-card-content-gap: var(--spacing-space-16);
|
|
72
|
+
--_button-card-text-gap: var(--spacing-space-4);
|
|
73
|
+
--_button-card-line-clamp: 2;
|
|
74
|
+
--_button-card-media-box: 56px;
|
|
75
|
+
--_button-card-media-icon: 40px;
|
|
76
|
+
--_button-card-indicator: 24px;
|
|
77
|
+
--_button-card-title-font: var(--typography-label-lg-bold);
|
|
78
|
+
--_button-card-subtitle-font: var(--typography-label-md);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
@container button-card (min-width: 23rem) {
|
|
83
|
+
._button-card--dynamic_je3cs_50 {
|
|
84
|
+
--_button-card-title-font: var(--typography-heading-xs);
|
|
85
|
+
--_button-card-subtitle-font: var(--typography-label-lg);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
57
89
|
/* === Media === */
|
|
58
90
|
|
|
59
|
-
._button-
|
|
91
|
+
._button-card__media_je3cs_91 {
|
|
60
92
|
display: inline-flex;
|
|
61
93
|
flex-shrink: 0;
|
|
62
94
|
align-self: center;
|
|
@@ -65,30 +97,37 @@
|
|
|
65
97
|
overflow: hidden;
|
|
66
98
|
}
|
|
67
99
|
|
|
68
|
-
._button-card--
|
|
100
|
+
._button-card--small_je3cs_49 ._button-card__media_je3cs_91,
|
|
101
|
+
._button-card--dynamic_je3cs_50 ._button-card__media_je3cs_91 {
|
|
69
102
|
align-self: flex-start;
|
|
70
103
|
}
|
|
71
104
|
|
|
72
|
-
|
|
105
|
+
@container button-card (min-width: 16rem) {
|
|
106
|
+
._button-card--dynamic_je3cs_50 ._button-card__media_je3cs_91 {
|
|
107
|
+
align-self: center;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
._button-card__media--icon_je3cs_111 {
|
|
73
112
|
width: var(--_button-card-media-box);
|
|
74
113
|
height: var(--_button-card-media-box);
|
|
75
114
|
background-color: var(--color-semantic-surface-neutral-mid);
|
|
76
115
|
border-radius: var(--radius-semantic-md);
|
|
77
116
|
}
|
|
78
117
|
|
|
79
|
-
._button-card__media--
|
|
118
|
+
._button-card__media--icon_je3cs_111 svg {
|
|
80
119
|
display: block;
|
|
81
120
|
width: var(--_button-card-media-icon);
|
|
82
121
|
height: var(--_button-card-media-icon);
|
|
83
122
|
}
|
|
84
123
|
|
|
85
|
-
._button-card__media--
|
|
124
|
+
._button-card__media--image_je3cs_124 {
|
|
86
125
|
position: relative;
|
|
87
126
|
width: var(--_button-card-media-box);
|
|
88
127
|
height: var(--_button-card-media-box);
|
|
89
128
|
}
|
|
90
129
|
|
|
91
|
-
._button-card__media--
|
|
130
|
+
._button-card__media--image_je3cs_124 :where(img, picture, video, svg, canvas) {
|
|
92
131
|
display: block;
|
|
93
132
|
width: 100%;
|
|
94
133
|
height: 100%;
|
|
@@ -97,7 +136,7 @@
|
|
|
97
136
|
|
|
98
137
|
/* === Text === */
|
|
99
138
|
|
|
100
|
-
._button-
|
|
139
|
+
._button-card__content_je3cs_139 {
|
|
101
140
|
display: flex;
|
|
102
141
|
flex: 1 1 0;
|
|
103
142
|
min-width: 0;
|
|
@@ -105,7 +144,7 @@
|
|
|
105
144
|
gap: var(--_button-card-content-gap);
|
|
106
145
|
}
|
|
107
146
|
|
|
108
|
-
._button-
|
|
147
|
+
._button-card__text_je3cs_147 {
|
|
109
148
|
display: flex;
|
|
110
149
|
flex: 1 1 0;
|
|
111
150
|
min-width: 0;
|
|
@@ -114,8 +153,8 @@
|
|
|
114
153
|
gap: var(--_button-card-text-gap);
|
|
115
154
|
}
|
|
116
155
|
|
|
117
|
-
._button-
|
|
118
|
-
._button-
|
|
156
|
+
._button-card__title_je3cs_156,
|
|
157
|
+
._button-card__subtitle_je3cs_157 {
|
|
119
158
|
display: -webkit-box;
|
|
120
159
|
margin: 0;
|
|
121
160
|
overflow: hidden;
|
|
@@ -125,19 +164,19 @@
|
|
|
125
164
|
line-clamp: var(--_button-card-line-clamp);
|
|
126
165
|
}
|
|
127
166
|
|
|
128
|
-
._button-
|
|
167
|
+
._button-card__title_je3cs_156 {
|
|
129
168
|
color: var(--color-semantic-foreground-default);
|
|
130
169
|
font: var(--_button-card-title-font);
|
|
131
170
|
}
|
|
132
171
|
|
|
133
|
-
._button-
|
|
172
|
+
._button-card__subtitle_je3cs_157 {
|
|
134
173
|
color: var(--color-semantic-foreground-muted);
|
|
135
174
|
font: var(--_button-card-subtitle-font);
|
|
136
175
|
}
|
|
137
176
|
|
|
138
177
|
/* === Indicator === */
|
|
139
178
|
|
|
140
|
-
._button-
|
|
179
|
+
._button-card__indicator_je3cs_179 {
|
|
141
180
|
display: inline-flex;
|
|
142
181
|
flex-shrink: 0;
|
|
143
182
|
align-items: center;
|
|
@@ -145,7 +184,7 @@
|
|
|
145
184
|
color: var(--color-semantic-foreground-primary-strong);
|
|
146
185
|
}
|
|
147
186
|
|
|
148
|
-
._button-
|
|
187
|
+
._button-card__indicator_je3cs_179 svg {
|
|
149
188
|
display: block;
|
|
150
189
|
width: var(--_button-card-indicator);
|
|
151
190
|
height: var(--_button-card-indicator);
|
|
@@ -153,7 +192,7 @@
|
|
|
153
192
|
|
|
154
193
|
/* === Visually hidden === */
|
|
155
194
|
|
|
156
|
-
._button-card__sr-
|
|
195
|
+
._button-card__sr-only_je3cs_195 {
|
|
157
196
|
position: absolute;
|
|
158
197
|
width: 1px;
|
|
159
198
|
height: 1px;
|
|
@@ -163,4 +202,8 @@
|
|
|
163
202
|
white-space: nowrap;
|
|
164
203
|
border: 0;
|
|
165
204
|
clip: rect(0, 0, 0, 0);
|
|
166
|
-
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Do not edit directly, this file was auto-generated.
|
|
209
|
+
*/ }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
1
2
|
import { ButtonCardProps } from './ButtonCard.types';
|
|
2
|
-
export declare const ButtonCard: ({ title, subtitle, size, icon, image, isExternal, externalLinkAriaLabel, className, ref, ...props }: ButtonCardProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export declare const ButtonCard: ({ title, subtitle, size, icon, image, isExternal, externalLinkAriaLabel, className, ref, ...props }: ButtonCardProps) => string | number | bigint | boolean | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import('react').ReactPortal | import('react').ReactElement<unknown, string | import('react').JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
|
|
3
4
|
//# sourceMappingURL=ButtonCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCard.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ButtonCard.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,SAAS,EAAO,MAAM,OAAO,CAAC;AAKnE,OAAO,KAAK,EAAuB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE/E,eAAO,MAAM,UAAU,GAAI,qGAWxB,eAAe,4UA4IjB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx, Fragment, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Open, ChevronRight } from "@dnanpm/icons";
|
|
3
|
-
import focusStyles from "../../styles/utils/
|
|
4
|
-
import elevationStyles from "../../styles/utils/elevation.module.css.js";
|
|
3
|
+
import { elevationStyles, focusStyles } from "../../styles/utils/index.js";
|
|
5
4
|
import styles from "./ButtonCard.module.css.js";
|
|
6
5
|
import { cn } from "../../utils/cn/cn.js";
|
|
7
6
|
const ButtonCard = ({
|
|
@@ -24,6 +23,7 @@ const ButtonCard = ({
|
|
|
24
23
|
elevationStyles.elevationLow,
|
|
25
24
|
className
|
|
26
25
|
);
|
|
26
|
+
const withContainer = (element) => size === "dynamic" ? /* @__PURE__ */ jsx("span", { className: styles["button-card-container"], children: element }) : element;
|
|
27
27
|
const IconComponent = icon;
|
|
28
28
|
const media = IconComponent != null ? /* @__PURE__ */ jsx(
|
|
29
29
|
"span",
|
|
@@ -76,9 +76,12 @@ const ButtonCard = ({
|
|
|
76
76
|
children: content
|
|
77
77
|
};
|
|
78
78
|
if (renderLink) {
|
|
79
|
+
if (size === "dynamic") {
|
|
80
|
+
return /* @__PURE__ */ jsx("span", { className: styles["button-card-container"], children: renderLink(linkProps) });
|
|
81
|
+
}
|
|
79
82
|
return /* @__PURE__ */ jsx(Fragment, { children: renderLink(linkProps) });
|
|
80
83
|
}
|
|
81
|
-
return /* @__PURE__ */ jsx("a", { ...linkProps });
|
|
84
|
+
return withContainer(/* @__PURE__ */ jsx("a", { ...linkProps }));
|
|
82
85
|
}
|
|
83
86
|
const {
|
|
84
87
|
type = "button",
|
|
@@ -88,15 +91,17 @@ const ButtonCard = ({
|
|
|
88
91
|
renderLink: _renderLink,
|
|
89
92
|
...buttonProps
|
|
90
93
|
} = props;
|
|
91
|
-
return
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
return withContainer(
|
|
95
|
+
/* @__PURE__ */ jsx(
|
|
96
|
+
"button",
|
|
97
|
+
{
|
|
98
|
+
ref,
|
|
99
|
+
type,
|
|
100
|
+
className: classes,
|
|
101
|
+
...buttonProps,
|
|
102
|
+
children: content
|
|
103
|
+
}
|
|
104
|
+
)
|
|
100
105
|
);
|
|
101
106
|
};
|
|
102
107
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCard.js","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { ChevronRight, Open } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport
|
|
1
|
+
{"version":3,"file":"ButtonCard.js","sources":["../../../src/components/ButtonCard/ButtonCard.tsx"],"sourcesContent":["import type { ComponentPropsWithRef, ReactNode, Ref } from 'react';\nimport { ChevronRight, Open } from '@dnanpm/icons';\nimport { cn } from '../../utils/cn';\nimport { elevationStyles, focusStyles } from '../../styles/utils';\nimport styles from './ButtonCard.module.css';\nimport type { ButtonCardLinkProps, ButtonCardProps } from './ButtonCard.types';\n\nexport const ButtonCard = ({\n title,\n subtitle,\n size = 'medium',\n icon,\n image,\n isExternal = false,\n externalLinkAriaLabel = 'avautuu uuteen välilehteen',\n className,\n ref,\n ...props\n}: ButtonCardProps) => {\n const isAnchor = 'href' in props && (props as { href?: string }).href != null;\n\n const classes = cn(\n styles['button-card'],\n styles[`button-card--${size}`],\n focusStyles.focusable,\n elevationStyles.elevationLow,\n className,\n );\n const withContainer = (element: ReactNode) =>\n size === 'dynamic' ? (\n <span className={styles['button-card-container']}>{element}</span>\n ) : (\n element\n );\n\n const IconComponent = icon;\n\n const media =\n IconComponent != null ? (\n <span\n className={cn(styles['button-card__media'], styles['button-card__media--icon'])}\n aria-hidden=\"true\"\n >\n <IconComponent aria-hidden=\"true\" />\n </span>\n ) : image ? (\n <span className={cn(styles['button-card__media'], styles['button-card__media--image'])}>\n {image}\n </span>\n ) : null;\n\n const explicitTarget = isAnchor\n ? (props as { target?: string }).target?.toLowerCase()\n : undefined;\n // The link opens a new tab when isExternal is set or the target is _blank.\n const opensInNewTab = isExternal || explicitTarget === '_blank';\n const Indicator = opensInNewTab ? Open : ChevronRight;\n\n const content = (\n <>\n {media}\n <span className={styles['button-card__content']}>\n <span className={styles['button-card__text']}>\n <span className={styles['button-card__title']}>{title}</span>\n {subtitle != null && (\n <span className={styles['button-card__subtitle']}>{subtitle}</span>\n )}\n </span>\n <span className={styles['button-card__indicator']} aria-hidden=\"true\">\n <Indicator aria-hidden=\"true\" />\n </span>\n </span>\n {opensInNewTab && externalLinkAriaLabel && (\n <span className={styles['button-card__sr-only']}>\n {` (${externalLinkAriaLabel})`}\n </span>\n )}\n </>\n );\n\n if (isAnchor) {\n const {\n href,\n renderLink,\n target: targetProp,\n rel,\n disabled: _disabled,\n ...safeAnchorProps\n } = props as unknown as ComponentPropsWithRef<'a'> & {\n href: string;\n renderLink?: (props: ButtonCardLinkProps) => ReactNode;\n disabled?: boolean;\n };\n\n // isExternal is authoritative and forces a new tab; an explicit _blank is preserved.\n const target = isExternal ? '_blank' : targetProp;\n const shouldHardenRel = target?.toLowerCase() === '_blank';\n const relTokens = new Set(\n (rel ?? '')\n .split(/\\s+/)\n .filter(Boolean)\n .map((token) => token.toLowerCase()),\n );\n\n if (shouldHardenRel) {\n relTokens.add('noopener');\n relTokens.add('noreferrer');\n }\n\n const hardenedRel = relTokens.size > 0 ? Array.from(relTokens).join(' ') : undefined;\n\n const linkProps = {\n ...safeAnchorProps,\n ref: ref as Ref<HTMLAnchorElement>,\n href,\n target,\n rel: hardenedRel,\n className: classes,\n children: content,\n };\n\n if (renderLink) {\n if (size === 'dynamic') {\n return (\n <span className={styles['button-card-container']}>{renderLink(linkProps)}</span>\n );\n }\n\n return <>{renderLink(linkProps)}</>;\n }\n\n return withContainer(<a {...linkProps} />);\n }\n\n const {\n type = 'button',\n href: _href,\n target: _target,\n rel: _rel,\n renderLink: _renderLink,\n ...buttonProps\n } = props as unknown as ComponentPropsWithRef<'button'> & {\n href?: string;\n target?: string;\n rel?: string;\n renderLink?: unknown;\n };\n\n return withContainer(\n <button\n ref={ref as Ref<HTMLButtonElement>}\n type={type}\n className={classes}\n {...buttonProps}\n >\n {content}\n </button>,\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
require('./ButtonCard.css');
|
|
2
2
|
"use strict";
|
|
3
3
|
const styles = {
|
|
4
|
-
"button-card": "_button-
|
|
5
|
-
"button-card
|
|
6
|
-
"button-card--
|
|
7
|
-
"button-
|
|
8
|
-
"button-
|
|
9
|
-
"button-card__media
|
|
10
|
-
"button-
|
|
11
|
-
"button-
|
|
12
|
-
"button-
|
|
13
|
-
"button-
|
|
14
|
-
"button-
|
|
15
|
-
"button-
|
|
4
|
+
"button-card-container": "_button-card-container_je3cs_1",
|
|
5
|
+
"button-card": "_button-card_je3cs_1",
|
|
6
|
+
"button-card--large": "_button-card--large_je3cs_44",
|
|
7
|
+
"button-card--small": "_button-card--small_je3cs_49",
|
|
8
|
+
"button-card--dynamic": "_button-card--dynamic_je3cs_50",
|
|
9
|
+
"button-card__media": "_button-card__media_je3cs_91",
|
|
10
|
+
"button-card__media--icon": "_button-card__media--icon_je3cs_111",
|
|
11
|
+
"button-card__media--image": "_button-card__media--image_je3cs_124",
|
|
12
|
+
"button-card__content": "_button-card__content_je3cs_139",
|
|
13
|
+
"button-card__text": "_button-card__text_je3cs_147",
|
|
14
|
+
"button-card__title": "_button-card__title_je3cs_156",
|
|
15
|
+
"button-card__subtitle": "_button-card__subtitle_je3cs_157",
|
|
16
|
+
"button-card__indicator": "_button-card__indicator_je3cs_179",
|
|
17
|
+
"button-card__sr-only": "_button-card__sr-only_je3cs_195"
|
|
16
18
|
};
|
|
17
19
|
module.exports = styles;
|
|
18
20
|
//# sourceMappingURL=ButtonCard.module.css.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCard.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ButtonCard.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import './ButtonCard.css';
|
|
2
2
|
const styles = {
|
|
3
|
-
"button-card": "_button-
|
|
4
|
-
"button-card
|
|
5
|
-
"button-card--
|
|
6
|
-
"button-
|
|
7
|
-
"button-
|
|
8
|
-
"button-card__media
|
|
9
|
-
"button-
|
|
10
|
-
"button-
|
|
11
|
-
"button-
|
|
12
|
-
"button-
|
|
13
|
-
"button-
|
|
14
|
-
"button-
|
|
3
|
+
"button-card-container": "_button-card-container_je3cs_1",
|
|
4
|
+
"button-card": "_button-card_je3cs_1",
|
|
5
|
+
"button-card--large": "_button-card--large_je3cs_44",
|
|
6
|
+
"button-card--small": "_button-card--small_je3cs_49",
|
|
7
|
+
"button-card--dynamic": "_button-card--dynamic_je3cs_50",
|
|
8
|
+
"button-card__media": "_button-card__media_je3cs_91",
|
|
9
|
+
"button-card__media--icon": "_button-card__media--icon_je3cs_111",
|
|
10
|
+
"button-card__media--image": "_button-card__media--image_je3cs_124",
|
|
11
|
+
"button-card__content": "_button-card__content_je3cs_139",
|
|
12
|
+
"button-card__text": "_button-card__text_je3cs_147",
|
|
13
|
+
"button-card__title": "_button-card__title_je3cs_156",
|
|
14
|
+
"button-card__subtitle": "_button-card__subtitle_je3cs_157",
|
|
15
|
+
"button-card__indicator": "_button-card__indicator_je3cs_179",
|
|
16
|
+
"button-card__sr-only": "_button-card__sr-only_je3cs_195"
|
|
15
17
|
};
|
|
16
18
|
export {
|
|
17
19
|
styles as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ButtonCard.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
|
|
@@ -5,8 +5,9 @@ import { ComponentPropsWithRef, ComponentType, ReactNode, SVGProps } from 'react
|
|
|
5
5
|
* - `large` — Large text title (Heading XS).
|
|
6
6
|
* - `medium` — Default title (Label LG Bold).
|
|
7
7
|
* - `small` — Compact vertical layout (Label MD title).
|
|
8
|
+
* - `dynamic` — Size changes between small, medium, and large based on the container width.
|
|
8
9
|
*/
|
|
9
|
-
export type ButtonCardSize = 'large' | 'medium' | 'small';
|
|
10
|
+
export type ButtonCardSize = 'large' | 'medium' | 'small' | 'dynamic';
|
|
10
11
|
/** SVG icon component, for example `ChevronRight` from `@dnanpm/icons`. */
|
|
11
12
|
export type ButtonCardIcon = ComponentType<SVGProps<SVGSVGElement>>;
|
|
12
13
|
export interface ButtonCardLinkProps extends ComponentPropsWithRef<'a'> {
|
|
@@ -27,7 +28,7 @@ interface ButtonCardBaseProps {
|
|
|
27
28
|
*/
|
|
28
29
|
readonly subtitle?: ReactNode;
|
|
29
30
|
/**
|
|
30
|
-
* Size variant controlling layout and typography.
|
|
31
|
+
* Size variant controlling layout and typography. `dynamic` responds to the available container width.
|
|
31
32
|
* @default 'medium'
|
|
32
33
|
*/
|
|
33
34
|
readonly size?: ButtonCardSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvF
|
|
1
|
+
{"version":3,"file":"ButtonCard.types.d.ts","sourceRoot":"","sources":["../../../src/components/ButtonCard/ButtonCard.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE,2EAA2E;AAC3E,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,GAAG,CAAC;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAChC;AAED,UAAU,mBAAmB;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC3C;AAED;;;GAGG;AACH,KAAK,oBAAoB,GACnB;IACI,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;CAC1B,GACD;IACI,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAER,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG;IACzF,sDAAsD;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC;IAC5B,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEN,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAChD,oBAAoB,GACpB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG;IACvE,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IACtB;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,SAAS,CAAC;CACnE,CAAC;AAEN;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
+
const icons = require("@dnanpm/icons");
|
|
5
|
+
const react = require("react");
|
|
6
|
+
const index = require("../../styles/utils/index.cjs");
|
|
7
|
+
const Checkbox_module = require("./Checkbox.module.css.cjs");
|
|
8
|
+
const isRenderable = require("../../utils/isRenderable/isRenderable.cjs");
|
|
9
|
+
const cn = require("../../utils/cn/cn.cjs");
|
|
10
|
+
const Checkbox = ({
|
|
11
|
+
label,
|
|
12
|
+
showLabel = true,
|
|
13
|
+
description,
|
|
14
|
+
indeterminate = false,
|
|
15
|
+
error = false,
|
|
16
|
+
errorMessage,
|
|
17
|
+
onCheckedChange,
|
|
18
|
+
onChange,
|
|
19
|
+
id,
|
|
20
|
+
className,
|
|
21
|
+
style,
|
|
22
|
+
disabled,
|
|
23
|
+
required,
|
|
24
|
+
ref,
|
|
25
|
+
"aria-describedby": ariaDescribedBy,
|
|
26
|
+
"aria-invalid": ariaInvalid,
|
|
27
|
+
...props
|
|
28
|
+
}) => {
|
|
29
|
+
const generatedId = react.useId();
|
|
30
|
+
const descriptionId = react.useId();
|
|
31
|
+
const errorId = react.useId();
|
|
32
|
+
const inputId = id ?? generatedId;
|
|
33
|
+
const hasDescription = isRenderable.isRenderable(description);
|
|
34
|
+
const hasErrorMessage = error && isRenderable.isRenderable(errorMessage);
|
|
35
|
+
const describedBy = [
|
|
36
|
+
hasDescription ? descriptionId : void 0,
|
|
37
|
+
hasErrorMessage ? errorId : void 0,
|
|
38
|
+
ariaDescribedBy
|
|
39
|
+
].filter(Boolean).join(" ") || void 0;
|
|
40
|
+
const handleChange = (event) => {
|
|
41
|
+
onChange?.(event);
|
|
42
|
+
onCheckedChange?.(event.target.checked);
|
|
43
|
+
event.target.indeterminate = indeterminate;
|
|
44
|
+
};
|
|
45
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
46
|
+
"div",
|
|
47
|
+
{
|
|
48
|
+
className: cn.cn(Checkbox_module.default["checkbox"], error && Checkbox_module.default["checkbox--error"], className),
|
|
49
|
+
style,
|
|
50
|
+
children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: Checkbox_module.default["checkbox__control"], children: [
|
|
52
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
53
|
+
"input",
|
|
54
|
+
{
|
|
55
|
+
...props,
|
|
56
|
+
ref: (node) => {
|
|
57
|
+
if (node) node.indeterminate = indeterminate;
|
|
58
|
+
if (typeof ref === "function") return ref(node);
|
|
59
|
+
if (ref) ref.current = node;
|
|
60
|
+
return void 0;
|
|
61
|
+
},
|
|
62
|
+
type: "checkbox",
|
|
63
|
+
id: inputId,
|
|
64
|
+
className: cn.cn(Checkbox_module.default["checkbox__input"], index.focusStyles.focusable),
|
|
65
|
+
disabled,
|
|
66
|
+
required,
|
|
67
|
+
"aria-describedby": describedBy,
|
|
68
|
+
"aria-invalid": ariaInvalid ?? (error || void 0),
|
|
69
|
+
onChange: handleChange
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
73
|
+
icons.CheckFilled,
|
|
74
|
+
{
|
|
75
|
+
"aria-hidden": "true",
|
|
76
|
+
className: cn.cn(Checkbox_module.default["checkbox__icon"], Checkbox_module.default["checkbox__icon--check"])
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
80
|
+
icons.MinusFilled,
|
|
81
|
+
{
|
|
82
|
+
"aria-hidden": "true",
|
|
83
|
+
className: cn.cn(Checkbox_module.default["checkbox__icon"], Checkbox_module.default["checkbox__icon--minus"])
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
] }),
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
88
|
+
"label",
|
|
89
|
+
{
|
|
90
|
+
htmlFor: inputId,
|
|
91
|
+
className: cn.cn(Checkbox_module.default["checkbox__label"], !showLabel && Checkbox_module.default["checkbox__sr-only"]),
|
|
92
|
+
children: [
|
|
93
|
+
label,
|
|
94
|
+
required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Checkbox_module.default["checkbox__required"], "aria-hidden": "true", children: "*" })
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
),
|
|
98
|
+
hasDescription && /* @__PURE__ */ jsxRuntime.jsx("div", { id: descriptionId, className: Checkbox_module.default["checkbox__description"], children: description }),
|
|
99
|
+
hasErrorMessage && /* @__PURE__ */ jsxRuntime.jsx("div", { id: errorId, className: Checkbox_module.default["checkbox__error"], children: errorMessage })
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
};
|
|
104
|
+
exports.Checkbox = Checkbox;
|
|
105
|
+
//# sourceMappingURL=Checkbox.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.cjs","sources":["../../../src/components/Checkbox/Checkbox.tsx"],"sourcesContent":["import { CheckFilled, MinusFilled } from '@dnanpm/icons';\nimport { useId } from 'react';\nimport type { ChangeEvent } from 'react';\nimport { focusStyles } from '../../styles/utils';\nimport { cn } from '../../utils/cn';\nimport { isRenderable } from '../../utils/isRenderable';\nimport type { CheckboxProps } from './Checkbox.types';\nimport styles from './Checkbox.module.css';\n\nexport const Checkbox = ({\n label,\n showLabel = true,\n description,\n indeterminate = false,\n error = false,\n errorMessage,\n onCheckedChange,\n onChange,\n id,\n className,\n style,\n disabled,\n required,\n ref,\n 'aria-describedby': ariaDescribedBy,\n 'aria-invalid': ariaInvalid,\n ...props\n}: CheckboxProps) => {\n const generatedId = useId();\n const descriptionId = useId();\n const errorId = useId();\n const inputId = id ?? generatedId;\n\n const hasDescription = isRenderable(description);\n const hasErrorMessage = error && isRenderable(errorMessage);\n\n const describedBy =\n [\n hasDescription ? descriptionId : undefined,\n hasErrorMessage ? errorId : undefined,\n ariaDescribedBy,\n ]\n .filter(Boolean)\n .join(' ') || undefined;\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n onChange?.(event);\n onCheckedChange?.(event.target.checked);\n // The browser clears `indeterminate` on click. Restore it from the prop, so it stays\n // until the consumer sets the prop to false, even when nothing re-renders.\n event.target.indeterminate = indeterminate;\n };\n\n return (\n <div\n className={cn(styles['checkbox'], error && styles['checkbox--error'], className)}\n style={style}\n >\n <span className={styles['checkbox__control']}>\n <input\n {...props}\n ref={(node) => {\n // `indeterminate` has no HTML attribute, so it is set on the DOM node.\n // The inline callback runs on every render, so a changed prop is applied.\n // A cleanup function returned by a callback ref is passed on to React.\n if (node) node.indeterminate = indeterminate;\n if (typeof ref === 'function') return ref(node);\n if (ref) ref.current = node;\n return undefined;\n }}\n type=\"checkbox\"\n id={inputId}\n className={cn(styles['checkbox__input'], focusStyles.focusable)}\n disabled={disabled}\n required={required}\n aria-describedby={describedBy}\n aria-invalid={ariaInvalid ?? (error || undefined)}\n onChange={handleChange}\n />\n <CheckFilled\n aria-hidden=\"true\"\n className={cn(styles['checkbox__icon'], styles['checkbox__icon--check'])}\n />\n <MinusFilled\n aria-hidden=\"true\"\n className={cn(styles['checkbox__icon'], styles['checkbox__icon--minus'])}\n />\n </span>\n <label\n htmlFor={inputId}\n className={cn(styles['checkbox__label'], !showLabel && styles['checkbox__sr-only'])}\n >\n {label}\n {required && (\n <span className={styles['checkbox__required']} aria-hidden=\"true\">\n *\n </span>\n )}\n </label>\n {hasDescription && (\n <div id={descriptionId} className={styles['checkbox__description']}>\n {description}\n </div>\n )}\n {hasErrorMessage && (\n <div id={errorId} className={styles['checkbox__error']}>\n {errorMessage}\n </div>\n )}\n </div>\n );\n};\n"],"names":["useId","isRenderable","jsxs","cn","styles","jsx","focusStyles","CheckFilled","MinusFilled"],"mappings":"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"}
|