@clickhouse/click-ui 0.2.0-rc.5 → 0.2.0-rc.7
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 +67 -0
- package/dist/cjs/click-ui.css +3861 -0
- package/dist/cjs/components/Button/Button.css +261 -0
- package/dist/cjs/components/Button/Button.module.css.cjs +38 -0
- package/dist/cjs/components/Button/Button.module.css.cjs.map +1 -0
- package/dist/cjs/components/Button/index.cjs +42 -126
- package/dist/cjs/components/Button/index.cjs.map +1 -1
- package/dist/cjs/components/ButtonGroup/index.cjs +1 -1
- package/dist/cjs/components/ButtonGroup/index.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/Common.cjs +21 -25
- package/dist/cjs/components/DatePicker/Common.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs +23 -15
- package/dist/cjs/components/DatePicker/DateTimeRangePicker.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/index.cjs +6 -2
- package/dist/cjs/components/DatePicker/index.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/utils.cjs.map +1 -1
- package/dist/cjs/components/GenericMenu/index.cjs +1 -1
- package/dist/cjs/components/GenericMenu/index.cjs.map +1 -1
- package/dist/cjs/lib/cva.cjs +15 -0
- package/dist/cjs/lib/cva.cjs.map +1 -0
- package/dist/cjs/providers/ThemeProvider.cjs +4 -0
- package/dist/cjs/providers/ThemeProvider.cjs.map +1 -1
- package/dist/cjs/theme/styles/tokens-dark.css +1806 -0
- package/dist/cjs/theme/styles/tokens-light.css +1795 -0
- package/dist/cjs/theme/theme.config.json.cjs +12 -0
- package/dist/cjs/theme/theme.config.json.cjs.map +1 -0
- package/dist/cjs/theme/tokens/variables.dark.cjs +2 -4
- package/dist/cjs/theme/tokens/variables.dark.cjs.map +1 -1
- package/dist/cjs/theme/tokens/variables.light.cjs +1 -6
- package/dist/cjs/theme/tokens/variables.light.cjs.map +1 -1
- package/dist/cjs/utils/localStorage.cjs +3 -1
- package/dist/cjs/utils/localStorage.cjs.map +1 -1
- package/dist/esm/click-ui.css +3861 -0
- package/dist/esm/components/Button/Button.css +261 -0
- package/dist/esm/components/Button/Button.module.css.js +25 -0
- package/dist/esm/components/Button/Button.module.css.js.map +1 -0
- package/dist/esm/components/Button/index.js +42 -126
- package/dist/esm/components/Button/index.js.map +1 -1
- package/dist/esm/components/ButtonGroup/index.js +1 -1
- package/dist/esm/components/ButtonGroup/index.js.map +1 -1
- package/dist/esm/components/DatePicker/Common.js +21 -25
- package/dist/esm/components/DatePicker/Common.js.map +1 -1
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js +23 -15
- package/dist/esm/components/DatePicker/DateTimeRangePicker.js.map +1 -1
- package/dist/esm/components/DatePicker/index.js +6 -2
- package/dist/esm/components/DatePicker/index.js.map +1 -1
- package/dist/esm/components/DatePicker/utils.js.map +1 -1
- package/dist/esm/components/GenericMenu/index.js +1 -1
- package/dist/esm/components/GenericMenu/index.js.map +1 -1
- package/dist/esm/lib/cva.js +7 -0
- package/dist/esm/lib/cva.js.map +1 -0
- package/dist/esm/providers/ThemeProvider.js +4 -0
- package/dist/esm/providers/ThemeProvider.js.map +1 -1
- package/dist/esm/theme/styles/tokens-dark.css +1806 -0
- package/dist/esm/theme/styles/tokens-light.css +1795 -0
- package/dist/esm/theme/theme.config.json.js +7 -0
- package/dist/esm/theme/theme.config.json.js.map +1 -0
- package/dist/esm/theme/tokens/variables.dark.js +2 -4
- package/dist/esm/theme/tokens/variables.dark.js.map +1 -1
- package/dist/esm/theme/tokens/variables.light.js +1 -6
- package/dist/esm/theme/tokens/variables.light.js.map +1 -1
- package/dist/esm/utils/localStorage.js +3 -1
- package/dist/esm/utils/localStorage.js.map +1 -1
- package/dist/types/components/Button/Button.d.ts +25 -2
- package/dist/types/components/DatePicker/DatePicker.d.ts +1 -1
- package/dist/types/components/DatePicker/DatePicker.types.d.ts +1 -0
- package/dist/types/components/DatePicker/DateTimeRangePicker.d.ts +5 -2
- package/dist/types/components/DatePicker/index.d.ts +1 -1
- package/dist/types/components/DatePicker/utils.d.ts +1 -0
- package/dist/types/lib/cva.d.ts +3 -0
- package/dist/types/theme/theme.config.json.d.ts +6 -0
- package/dist/types/theme/theme.core.d.ts +0 -7
- package/dist/types/theme/tokens/variables.dark.d.ts +0 -2
- package/dist/types/theme/tokens/variables.light.d.ts +0 -5
- package/dist/types/utils/dom.d.ts +1 -1
- package/dist/types/utils/localStorage.d.ts +1 -1
- package/package.json +25 -8
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
.button__2ZuB7 {
|
|
2
|
+
display: flex;
|
|
3
|
+
position: relative;
|
|
4
|
+
padding: var(--click-button-basic-space-y) var(--click-button-basic-space-x);
|
|
5
|
+
overflow: hidden;
|
|
6
|
+
flex-shrink: 0;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
align-items: center;
|
|
9
|
+
gap: var(--click-button-basic-space-gap);
|
|
10
|
+
border: 1px solid transparent;
|
|
11
|
+
border-radius: var(--click-button-radii-all);
|
|
12
|
+
background: transparent;
|
|
13
|
+
color: inherit;
|
|
14
|
+
font: var(--click-button-basic-typography-label-default);
|
|
15
|
+
white-space: nowrap;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.button_align-center__RdEYc {
|
|
20
|
+
justify-content: center;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.button_align-left__AmFEH {
|
|
24
|
+
justify-content: flex-start;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.button_fill__Ph-yl {
|
|
28
|
+
width: 100%;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.button_primary__5V6PJ {
|
|
32
|
+
border-color: var(--click-button-basic-color-primary-stroke-default);
|
|
33
|
+
background-color: var(--click-button-basic-color-primary-background-default);
|
|
34
|
+
color: var(--click-button-basic-color-primary-text-default);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.button_primary__5V6PJ:disabled {
|
|
38
|
+
border-color: var(--click-button-basic-color-primary-stroke-disabled);
|
|
39
|
+
background-color: var(--click-button-basic-color-primary-background-disabled);
|
|
40
|
+
color: var(--click-button-basic-color-primary-text-disabled);
|
|
41
|
+
font: var(--click-button-basic-typography-label-disabled);
|
|
42
|
+
cursor: not-allowed;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.button_primary__5V6PJ:hover:not(:disabled) {
|
|
46
|
+
border-color: var(--click-button-basic-color-primary-stroke-hover);
|
|
47
|
+
background-color: var(--click-button-basic-color-primary-background-hover);
|
|
48
|
+
font: var(--click-button-basic-typography-label-hover);
|
|
49
|
+
transition: var(--click-transition-default);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.button_primary__5V6PJ:focus-visible:not(:disabled) {
|
|
53
|
+
border-color: var(--click-button-basic-color-primary-stroke-active);
|
|
54
|
+
background-color: var(--click-button-basic-color-primary-background-active);
|
|
55
|
+
font: var(--click-button-basic-typography-label-active);
|
|
56
|
+
outline: 2px solid var(--click-button-basic-color-primary-stroke-active);
|
|
57
|
+
outline-offset: 2px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.button_primary__5V6PJ:active:not(:disabled),
|
|
61
|
+
.button_primary__5V6PJ:focus:not(:focus-visible, :disabled) {
|
|
62
|
+
border-color: var(--click-button-basic-color-primary-stroke-active);
|
|
63
|
+
background-color: var(--click-button-basic-color-primary-background-active);
|
|
64
|
+
font: var(--click-button-basic-typography-label-active);
|
|
65
|
+
outline: none;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.button_secondary__PXw0N {
|
|
69
|
+
border-color: var(--click-button-basic-color-secondary-stroke-default);
|
|
70
|
+
background-color: var(--click-button-basic-color-secondary-background-default);
|
|
71
|
+
color: var(--click-button-basic-color-secondary-text-default);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.button_secondary__PXw0N:disabled {
|
|
75
|
+
border-color: var(--click-button-basic-color-secondary-stroke-disabled);
|
|
76
|
+
background-color: var(--click-button-basic-color-secondary-background-disabled);
|
|
77
|
+
color: var(--click-button-basic-color-secondary-text-disabled);
|
|
78
|
+
font: var(--click-button-basic-typography-label-disabled);
|
|
79
|
+
cursor: not-allowed;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.button_secondary__PXw0N:hover:not(:disabled) {
|
|
83
|
+
border-color: var(--click-button-basic-color-secondary-stroke-hover);
|
|
84
|
+
background-color: var(--click-button-basic-color-secondary-background-hover);
|
|
85
|
+
font: var(--click-button-basic-typography-label-hover);
|
|
86
|
+
transition: var(--click-transition-default);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.button_secondary__PXw0N:focus-visible:not(:disabled) {
|
|
90
|
+
border-color: var(--click-button-basic-color-secondary-stroke-active);
|
|
91
|
+
background-color: var(--click-button-basic-color-secondary-background-active);
|
|
92
|
+
font: var(--click-button-basic-typography-label-active);
|
|
93
|
+
outline: 2px solid var(--click-button-basic-color-secondary-stroke-active);
|
|
94
|
+
outline-offset: 2px;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.button_secondary__PXw0N:active:not(:disabled),
|
|
98
|
+
.button_secondary__PXw0N:focus:not(:focus-visible, :disabled) {
|
|
99
|
+
border-color: var(--click-button-basic-color-secondary-stroke-active);
|
|
100
|
+
background-color: var(--click-button-basic-color-secondary-background-active);
|
|
101
|
+
font: var(--click-button-basic-typography-label-active);
|
|
102
|
+
outline: none;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.button_empty__GZ9s7 {
|
|
106
|
+
border-color: var(--click-button-basic-color-empty-stroke-default);
|
|
107
|
+
background-color: var(--click-button-basic-color-empty-background-default);
|
|
108
|
+
color: var(--click-button-basic-color-empty-text-default);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.button_empty__GZ9s7:disabled {
|
|
112
|
+
border-color: var(--click-button-basic-color-empty-stroke-disabled);
|
|
113
|
+
background-color: var(--click-button-basic-color-empty-background-disabled);
|
|
114
|
+
color: var(--click-button-basic-color-empty-text-disabled);
|
|
115
|
+
font: var(--click-button-basic-typography-label-disabled);
|
|
116
|
+
cursor: not-allowed;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.button_empty__GZ9s7:hover:not(:disabled) {
|
|
120
|
+
border-color: var(--click-button-basic-color-empty-stroke-hover);
|
|
121
|
+
background-color: var(--click-button-basic-color-empty-background-hover);
|
|
122
|
+
font: var(--click-button-basic-typography-label-hover);
|
|
123
|
+
transition: var(--click-transition-default);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.button_empty__GZ9s7:focus-visible:not(:disabled) {
|
|
127
|
+
border-color: var(--click-button-basic-color-empty-stroke-active);
|
|
128
|
+
background-color: var(--click-button-basic-color-empty-background-active);
|
|
129
|
+
font: var(--click-button-basic-typography-label-active);
|
|
130
|
+
outline: 2px solid var(--click-button-basic-color-empty-stroke-active);
|
|
131
|
+
outline-offset: 2px;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.button_empty__GZ9s7:active:not(:disabled),
|
|
135
|
+
.button_empty__GZ9s7:focus:not(:focus-visible, :disabled) {
|
|
136
|
+
border-color: var(--click-button-basic-color-empty-stroke-active);
|
|
137
|
+
background-color: var(--click-button-basic-color-empty-background-active);
|
|
138
|
+
font: var(--click-button-basic-typography-label-active);
|
|
139
|
+
outline: none;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.button_danger__0DN8k {
|
|
143
|
+
border-color: var(--click-button-basic-color-danger-stroke-default);
|
|
144
|
+
background-color: var(--click-button-basic-color-danger-background-default);
|
|
145
|
+
color: var(--click-button-basic-color-danger-text-default);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.button_danger__0DN8k:disabled {
|
|
149
|
+
border-color: var(--click-button-basic-color-danger-stroke-disabled);
|
|
150
|
+
background-color: var(--click-button-basic-color-danger-background-disabled);
|
|
151
|
+
color: var(--click-button-basic-color-danger-text-disabled);
|
|
152
|
+
font: var(--click-button-basic-typography-label-disabled);
|
|
153
|
+
cursor: not-allowed;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
.button_danger__0DN8k:hover:not(:disabled) {
|
|
157
|
+
border-color: var(--click-button-basic-color-danger-stroke-hover);
|
|
158
|
+
background-color: var(--click-button-basic-color-danger-background-hover);
|
|
159
|
+
font: var(--click-button-basic-typography-label-hover);
|
|
160
|
+
transition: var(--click-transition-default);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.button_danger__0DN8k:focus-visible:not(:disabled) {
|
|
164
|
+
border-color: var(--click-button-basic-color-danger-stroke-active);
|
|
165
|
+
background-color: var(--click-button-basic-color-danger-background-active);
|
|
166
|
+
font: var(--click-button-basic-typography-label-active);
|
|
167
|
+
outline: 2px solid var(--click-button-basic-color-danger-stroke-active);
|
|
168
|
+
outline-offset: 2px;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.button_danger__0DN8k:active:not(:disabled),
|
|
172
|
+
.button_danger__0DN8k:focus:not(:focus-visible, :disabled) {
|
|
173
|
+
border-color: var(--click-button-basic-color-danger-stroke-active);
|
|
174
|
+
background-color: var(--click-button-basic-color-danger-background-active);
|
|
175
|
+
font: var(--click-button-basic-typography-label-active);
|
|
176
|
+
outline: none;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
.button_loading__n2tCt {
|
|
180
|
+
cursor: not-allowed;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
.button_loading__n2tCt::before {
|
|
184
|
+
content: '';
|
|
185
|
+
position: absolute;
|
|
186
|
+
inset: 0;
|
|
187
|
+
pointer-events: none;
|
|
188
|
+
animation: shimmer__8Jq1s 1.5s ease-in-out infinite;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.button_primary__5V6PJ.button_loading__n2tCt,
|
|
192
|
+
.button_secondary__PXw0N.button_loading__n2tCt,
|
|
193
|
+
.button_danger__0DN8k.button_loading__n2tCt {
|
|
194
|
+
opacity: 0.7;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
.button_empty__GZ9s7.button_loading__n2tCt {
|
|
198
|
+
opacity: 0.9;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
.button_loading__n2tCt > * {
|
|
202
|
+
opacity: 0.7;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@keyframes shimmer__8Jq1s {
|
|
206
|
+
0% {
|
|
207
|
+
background-position: 100% 0;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
100% {
|
|
211
|
+
background-position: -100% 0;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
.button_primary__5V6PJ.button_loading__n2tCt::before {
|
|
216
|
+
background: var(--click-button-basic-color-primary-background-loading);
|
|
217
|
+
background-size: 200% 100%;
|
|
218
|
+
background-repeat: no-repeat;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.button_secondary__PXw0N.button_loading__n2tCt::before {
|
|
222
|
+
background: var(--click-button-basic-color-secondary-background-loading);
|
|
223
|
+
background-size: 200% 100%;
|
|
224
|
+
background-repeat: no-repeat;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
.button_empty__GZ9s7.button_loading__n2tCt::before {
|
|
228
|
+
background: var(--click-button-basic-color-empty-background-loading);
|
|
229
|
+
background-size: 200% 100%;
|
|
230
|
+
background-repeat: no-repeat;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
.button_danger__0DN8k.button_loading__n2tCt::before {
|
|
234
|
+
background: var(--click-button-basic-color-danger-background-loading);
|
|
235
|
+
background-size: 200% 100%;
|
|
236
|
+
background-repeat: no-repeat;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.button__icon__e6c-f {
|
|
240
|
+
display: flex;
|
|
241
|
+
width: var(--click-button-basic-size-icon-all);
|
|
242
|
+
height: var(--click-button-basic-size-icon-all);
|
|
243
|
+
justify-content: center;
|
|
244
|
+
align-items: center;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.button__icon__e6c-f svg {
|
|
248
|
+
width: var(--click-button-basic-size-icon-all);
|
|
249
|
+
height: var(--click-button-basic-size-icon-all);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
.button__label__tlatE {
|
|
253
|
+
display: inline-flex;
|
|
254
|
+
align-items: center;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
@media (prefers-reduced-motion: reduce) {
|
|
258
|
+
.button_loading__n2tCt::before {
|
|
259
|
+
animation: none;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
+
|
|
5
|
+
const button = "button__2ZuB7";
|
|
6
|
+
const button_fill = "button_fill__Ph-yl";
|
|
7
|
+
const button_primary = "button_primary__5V6PJ";
|
|
8
|
+
const button_secondary = "button_secondary__PXw0N";
|
|
9
|
+
const button_empty = "button_empty__GZ9s7";
|
|
10
|
+
const button_danger = "button_danger__0DN8k";
|
|
11
|
+
const button_loading = "button_loading__n2tCt";
|
|
12
|
+
const button__icon = "button__icon__e6c-f";
|
|
13
|
+
const button__label = "button__label__tlatE";
|
|
14
|
+
const styles = {
|
|
15
|
+
button: button,
|
|
16
|
+
"button_align-center": "button_align-center__RdEYc",
|
|
17
|
+
"button_align-left": "button_align-left__AmFEH",
|
|
18
|
+
button_fill: button_fill,
|
|
19
|
+
button_primary: button_primary,
|
|
20
|
+
button_secondary: button_secondary,
|
|
21
|
+
button_empty: button_empty,
|
|
22
|
+
button_danger: button_danger,
|
|
23
|
+
button_loading: button_loading,
|
|
24
|
+
button__icon: button__icon,
|
|
25
|
+
button__label: button__label
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
exports.button = button;
|
|
29
|
+
exports.button__icon = button__icon;
|
|
30
|
+
exports.button__label = button__label;
|
|
31
|
+
exports.button_danger = button_danger;
|
|
32
|
+
exports.button_empty = button_empty;
|
|
33
|
+
exports.button_fill = button_fill;
|
|
34
|
+
exports.button_loading = button_loading;
|
|
35
|
+
exports.button_primary = button_primary;
|
|
36
|
+
exports.button_secondary = button_secondary;
|
|
37
|
+
exports.default = styles;
|
|
38
|
+
//# sourceMappingURL=Button.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,13 +1,40 @@
|
|
|
1
|
+
require("./Button.css");
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
5
|
|
|
5
6
|
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const
|
|
7
|
-
const
|
|
7
|
+
const cva = require('../../lib/cva.cjs');
|
|
8
|
+
const react = require('react');
|
|
9
|
+
const Button_module = require('./Button.module.css.cjs');
|
|
8
10
|
const Icon = require('../Icon/index.cjs');
|
|
11
|
+
const classVarianceAuthority = require('class-variance-authority');
|
|
9
12
|
|
|
10
|
-
const
|
|
13
|
+
const buttonVariants = classVarianceAuthority.cva(Button_module.default.button, {
|
|
14
|
+
variants: {
|
|
15
|
+
type: {
|
|
16
|
+
primary: Button_module.default["button_primary"],
|
|
17
|
+
secondary: Button_module.default["button_secondary"],
|
|
18
|
+
empty: Button_module.default["button_empty"],
|
|
19
|
+
danger: Button_module.default["button_danger"]
|
|
20
|
+
},
|
|
21
|
+
align: {
|
|
22
|
+
center: Button_module.default["button_align-center"],
|
|
23
|
+
left: Button_module.default["button_align-left"]
|
|
24
|
+
},
|
|
25
|
+
fillWidth: {
|
|
26
|
+
true: Button_module.default["button_fill"]
|
|
27
|
+
},
|
|
28
|
+
loading: {
|
|
29
|
+
true: Button_module.default["button_loading"]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
defaultVariants: {
|
|
33
|
+
type: "primary",
|
|
34
|
+
align: "center"
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const Button = react.forwardRef(({
|
|
11
38
|
type = "primary",
|
|
12
39
|
iconLeft,
|
|
13
40
|
iconRight,
|
|
@@ -17,130 +44,19 @@ const Button = ({
|
|
|
17
44
|
label,
|
|
18
45
|
loading = false,
|
|
19
46
|
disabled,
|
|
47
|
+
className,
|
|
20
48
|
...delegated
|
|
21
|
-
}) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"
|
|
28
|
-
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
const shimmerFixedWidth = styledComponents.keyframes({
|
|
35
|
-
"0%": {
|
|
36
|
-
backgroundPosition: "-200px 0"
|
|
37
|
-
},
|
|
38
|
-
"100%": {
|
|
39
|
-
backgroundPosition: "200px 0"
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
const StyledButton = styledComponents.styled(BaseButton.BaseButton).withConfig({
|
|
43
|
-
componentId: "sc-1k4tz4c-0"
|
|
44
|
-
})(["width:", ";color:", ";background-color:", ";border:", " solid ", ";font:", ";position:relative;display:flex;align-items:center;justify-content:", ";white-space:nowrap;overflow:hidden;flex-shrink:0;&::before{content:", ";position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;background:", ";background-size:", ";background-repeat:", ";}&[data-fill-width='true']::before{animation:", " 1.5s ease-in-out infinite;}&[data-fill-width='false']::before,&:not([data-fill-width])::before{animation:", " 1.5s ease-in-out infinite;}&:hover{background-color:", ";border:", " solid ", ";transition:", ";font:", ";}&:active,&:focus{background-color:", ";border:1px solid ", ";font:", ";}", " ", ""], ({
|
|
45
|
-
$fillWidth
|
|
46
|
-
}) => $fillWidth ? "100%" : "revert", ({
|
|
47
|
-
$styleType = "primary",
|
|
48
|
-
theme
|
|
49
|
-
}) => theme.click.button.basic.color[$styleType].text.default, ({
|
|
50
|
-
$styleType = "primary",
|
|
51
|
-
theme
|
|
52
|
-
}) => theme.click.button.basic.color[$styleType].background.default, ({
|
|
53
|
-
theme
|
|
54
|
-
}) => theme.click.button.stroke, ({
|
|
55
|
-
$styleType = "primary",
|
|
56
|
-
theme
|
|
57
|
-
}) => theme.click.button.basic.color[$styleType].stroke.default, ({
|
|
58
|
-
theme
|
|
59
|
-
}) => theme.click.button.basic.typography.label.default, ({
|
|
60
|
-
$align
|
|
61
|
-
}) => $align === "left" ? "flex-start" : "center", ({
|
|
62
|
-
$loading
|
|
63
|
-
}) => $loading ? '""' : "none", ({
|
|
64
|
-
$styleType,
|
|
65
|
-
theme
|
|
66
|
-
}) => theme.click.button.basic.color[$styleType].background.loading, ({
|
|
67
|
-
$fillWidth
|
|
68
|
-
}) => $fillWidth ? "200% 100%" : "200px 100%", ({
|
|
69
|
-
$fillWidth
|
|
70
|
-
}) => $fillWidth ? "repeat" : "no-repeat", shimmerFullWidth, shimmerFixedWidth, ({
|
|
71
|
-
$styleType = "primary",
|
|
72
|
-
theme
|
|
73
|
-
}) => theme.click.button.basic.color[$styleType].background.hover, ({
|
|
74
|
-
theme
|
|
75
|
-
}) => theme.click.button.stroke, ({
|
|
76
|
-
$styleType = "primary",
|
|
77
|
-
theme
|
|
78
|
-
}) => theme.click.button.basic.color[$styleType].stroke.hover, ({
|
|
79
|
-
theme
|
|
80
|
-
}) => theme.transition.default, ({
|
|
81
|
-
theme
|
|
82
|
-
}) => theme.click.button.basic.typography.label.hover, ({
|
|
83
|
-
$styleType = "primary",
|
|
84
|
-
theme
|
|
85
|
-
}) => theme.click.button.basic.color[$styleType].background.active, ({
|
|
86
|
-
$styleType = "primary",
|
|
87
|
-
theme
|
|
88
|
-
}) => theme.click.button.basic.color[$styleType].stroke.active, ({
|
|
89
|
-
theme
|
|
90
|
-
}) => theme.click.button.basic.typography.label.active, ({
|
|
91
|
-
$loading,
|
|
92
|
-
$styleType,
|
|
93
|
-
theme
|
|
94
|
-
}) => {
|
|
95
|
-
if ($loading) {
|
|
96
|
-
return "";
|
|
97
|
-
}
|
|
98
|
-
const bgDisabled = theme.click.button.basic.color[$styleType].background.disabled;
|
|
99
|
-
const textDisabled = theme.click.button.basic.color[$styleType].text.disabled;
|
|
100
|
-
const strokeDisabled = theme.click.button.basic.color[$styleType].stroke.disabled;
|
|
101
|
-
const stroke = theme.click.button.stroke;
|
|
102
|
-
const fontDisabled = theme.click.button.basic.typography.label.disabled;
|
|
103
|
-
return `
|
|
104
|
-
&:disabled,
|
|
105
|
-
&:disabled:hover,
|
|
106
|
-
&:disabled:active {
|
|
107
|
-
background-color: ${bgDisabled};
|
|
108
|
-
color: ${textDisabled};
|
|
109
|
-
border: ${stroke} solid ${strokeDisabled};
|
|
110
|
-
font: ${fontDisabled};
|
|
111
|
-
cursor: not-allowed;
|
|
112
|
-
}
|
|
113
|
-
`;
|
|
114
|
-
}, ({
|
|
115
|
-
$loading,
|
|
116
|
-
$styleType
|
|
117
|
-
}) => {
|
|
118
|
-
if (!$loading) {
|
|
119
|
-
return "";
|
|
120
|
-
}
|
|
121
|
-
const btnOpacity = $styleType === "empty" ? 0.9 : 0.7;
|
|
122
|
-
return `
|
|
123
|
-
cursor: not-allowed;
|
|
124
|
-
opacity: ${btnOpacity};
|
|
125
|
-
|
|
126
|
-
/* Dim text and icons */
|
|
127
|
-
> * {
|
|
128
|
-
opacity: 0.7;
|
|
129
|
-
}
|
|
130
|
-
`;
|
|
131
|
-
});
|
|
132
|
-
const ButtonIconWrapper = (props) => /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { ...props });
|
|
133
|
-
const ButtonIcon = styledComponents.styled(ButtonIconWrapper).withConfig({
|
|
134
|
-
componentId: "sc-1k4tz4c-1"
|
|
135
|
-
})(["height:", ";width:", ";svg{height:", ";width:", ";}"], ({
|
|
136
|
-
theme
|
|
137
|
-
}) => theme.click.button.basic.size.icon.all, ({
|
|
138
|
-
theme
|
|
139
|
-
}) => theme.click.button.basic.size.icon.all, ({
|
|
140
|
-
theme
|
|
141
|
-
}) => theme.click.button.basic.size.icon.all, ({
|
|
142
|
-
theme
|
|
143
|
-
}) => theme.click.button.basic.size.icon.all);
|
|
49
|
+
}, ref) => /* @__PURE__ */ jsxRuntime.jsxs("button", { ref, className: cva.cn(buttonVariants({
|
|
50
|
+
type,
|
|
51
|
+
align,
|
|
52
|
+
fillWidth,
|
|
53
|
+
loading
|
|
54
|
+
}), className), disabled: disabled || loading, "aria-disabled": disabled || loading || void 0, "aria-busy": loading || void 0, ...delegated, children: [
|
|
55
|
+
iconLeft && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Button_module.default.button__icon, children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: iconLeft, "aria-hidden": true, size: "sm" }) }),
|
|
56
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: Button_module.default.button__label, children: label ?? children }),
|
|
57
|
+
iconRight && /* @__PURE__ */ jsxRuntime.jsx("span", { className: Button_module.default.button__icon, children: /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { name: iconRight, "aria-hidden": true, size: "sm" }) })
|
|
58
|
+
] }));
|
|
59
|
+
Button.displayName = "Button";
|
|
144
60
|
|
|
145
61
|
exports.Button = Button;
|
|
146
62
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { Icon } from '@/components/Icon';\nimport { styled, keyframes } from 'styled-components';\nimport { BaseButton } from './BaseButton';\nimport { Alignment, ButtonProps, ButtonType } from './Button.types';\n\nexport const Button = ({\n type = 'primary',\n iconLeft,\n iconRight,\n align = 'center',\n children,\n fillWidth,\n label,\n loading = false,\n disabled,\n ...delegated\n}: ButtonProps) => (\n <StyledButton\n $styleType={type}\n $align={align}\n $fillWidth={fillWidth}\n $loading={loading}\n disabled={disabled || loading}\n aria-disabled={disabled || loading}\n role=\"button\"\n data-fill-width={fillWidth}\n {...delegated}\n >\n {iconLeft && (\n <ButtonIcon\n name={iconLeft}\n aria-hidden\n size=\"sm\"\n />\n )}\n\n <span>{label ?? children}</span>\n\n {iconRight && (\n <ButtonIcon\n name={iconRight}\n aria-hidden\n size=\"sm\"\n />\n )}\n </StyledButton>\n);\n\nconst shimmerFullWidth = keyframes({\n '0%': {\n backgroundPosition: '100% 0',\n },\n '100%': {\n backgroundPosition: '-100% 0',\n },\n});\n\nconst shimmerFixedWidth = keyframes({\n '0%': {\n backgroundPosition: '-200px 0',\n },\n '100%': {\n backgroundPosition: '200px 0',\n },\n});\n\nconst StyledButton = styled(BaseButton)<{\n $styleType: ButtonType;\n $align?: Alignment;\n $fillWidth?: boolean;\n $loading?: boolean;\n}>`\n width: ${({ $fillWidth }) => ($fillWidth ? '100%' : 'revert')};\n color: ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].text.default};\n background-color: ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].background.default};\n border: ${({ theme }) => theme.click.button.stroke} solid\n ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].stroke.default};\n font: ${({ theme }) => theme.click.button.basic.typography.label.default};\n position: relative;\n display: flex;\n align-items: center;\n justify-content: ${({ $align }) => ($align === 'left' ? 'flex-start' : 'center')};\n white-space: nowrap;\n overflow: hidden;\n flex-shrink: 0;\n\n &::before {\n content: ${({ $loading }) => ($loading ? '\"\"' : 'none')};\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n background: ${({ $styleType, theme }) =>\n theme.click.button.basic.color[$styleType].background.loading};\n background-size: ${({ $fillWidth }) => ($fillWidth ? '200% 100%' : '200px 100%')};\n background-repeat: ${({ $fillWidth }) => ($fillWidth ? 'repeat' : 'no-repeat')};\n }\n\n &[data-fill-width='true']::before {\n animation: ${shimmerFullWidth} 1.5s ease-in-out infinite;\n }\n\n &[data-fill-width='false']::before,\n &:not([data-fill-width])::before {\n animation: ${shimmerFixedWidth} 1.5s ease-in-out infinite;\n }\n\n &:hover {\n background-color: ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].background.hover};\n border: ${({ theme }) => theme.click.button.stroke} solid\n ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].stroke.hover};\n transition: ${({ theme }) => theme.transition.default};\n font: ${({ theme }) => theme.click.button.basic.typography.label.hover};\n }\n\n &:active,\n &:focus {\n background-color: ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].background.active};\n border: 1px solid\n ${({ $styleType = 'primary', theme }) =>\n theme.click.button.basic.color[$styleType].stroke.active};\n font: ${({ theme }) => theme.click.button.basic.typography.label.active};\n }\n\n ${({ $loading, $styleType, theme }) => {\n if ($loading) {\n return '';\n }\n\n const bgDisabled = theme.click.button.basic.color[$styleType].background.disabled;\n const textDisabled = theme.click.button.basic.color[$styleType].text.disabled;\n const strokeDisabled = theme.click.button.basic.color[$styleType].stroke.disabled;\n const stroke = theme.click.button.stroke;\n const fontDisabled = theme.click.button.basic.typography.label.disabled;\n\n return `\n &:disabled,\n &:disabled:hover,\n &:disabled:active {\n background-color: ${bgDisabled};\n color: ${textDisabled};\n border: ${stroke} solid ${strokeDisabled};\n font: ${fontDisabled};\n cursor: not-allowed;\n }\n `;\n }}\n\n /* Loading state styling */\n ${({ $loading, $styleType }) => {\n if (!$loading) {\n return '';\n }\n\n const btnOpacity = $styleType === 'empty' ? 0.9 : 0.7;\n\n return `\n cursor: not-allowed;\n opacity: ${btnOpacity};\n\n /* Dim text and icons */\n > * {\n opacity: 0.7;\n }\n `;\n }}\n`;\n\n// Lazy wrapper to avoid circular dependency issues at module load time\nconst ButtonIconWrapper = (props: React.ComponentProps<typeof Icon>) => (\n <Icon {...props} />\n);\n\nconst ButtonIcon = styled(ButtonIconWrapper)`\n height: ${({ theme }) => theme.click.button.basic.size.icon.all};\n width: ${({ theme }) => theme.click.button.basic.size.icon.all};\n svg {\n height: ${({ theme }) => theme.click.button.basic.size.icon.all};\n width: ${({ theme }) => theme.click.button.basic.size.icon.all};\n }\n`;\n"],"names":["Button","type","iconLeft","iconRight","align","children","fillWidth","label","loading","disabled","delegated","jsxs","jsx","shimmerFullWidth","keyframes","backgroundPosition","shimmerFixedWidth","StyledButton","styled","BaseButton","withConfig","componentId","$fillWidth","$styleType","theme","click","button","basic","color","text","default","background","stroke","typography","$align","$loading","hover","transition","active","bgDisabled","textDisabled","strokeDisabled","fontDisabled","btnOpacity","ButtonIconWrapper","props","Icon","ButtonIcon","size","icon","all"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/Button/Button.tsx"],"sourcesContent":["import { Icon, IconName } from '@/components/Icon';\nimport { cn, cva } from '@/lib/cva';\nimport { forwardRef } from 'react';\nimport styles from './Button.module.css';\n\nexport type ButtonType = 'primary' | 'secondary' | 'empty' | 'danger';\ntype Alignment = 'center' | 'left';\n\nexport interface ButtonProps extends React.HTMLAttributes<HTMLButtonElement> {\n // TODO: The type prop ('primary' | 'secondary' | 'empty' | 'danger') shadows the native <button type=\"submit|reset|button\"> attribute. Since type is destructured before ...delegated, consumers can never pass type=\"submit\" for form submission. Consider renaming the visual variant prop to variant (consistent with the CSS class names button_primary etc.). This is a public API problem!\n /** The visual style variant of the button */\n type?: ButtonType;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** The text label to display in the button */\n label?: string;\n /** Icon to display on the left side of the label */\n iconLeft?: IconName;\n /** Icon to display on the right side of the label */\n iconRight?: IconName;\n /** Alignment of the button content */\n align?: Alignment;\n /** Whether the button should fill the full width of its container */\n fillWidth?: boolean;\n /** Whether to show a loading state */\n loading?: boolean;\n /** Whether the button should be focused on mount */\n autoFocus?: boolean;\n}\n\nconst buttonVariants = cva(styles.button, {\n variants: {\n type: {\n primary: styles['button_primary'],\n secondary: styles['button_secondary'],\n empty: styles['button_empty'],\n danger: styles['button_danger'],\n },\n align: {\n center: styles['button_align-center'],\n left: styles['button_align-left'],\n },\n fillWidth: {\n true: styles['button_fill'],\n },\n loading: {\n true: styles['button_loading'],\n },\n },\n defaultVariants: {\n type: 'primary',\n align: 'center',\n },\n});\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n type = 'primary',\n iconLeft,\n iconRight,\n align = 'center',\n children,\n fillWidth,\n label,\n loading = false,\n disabled,\n className,\n ...delegated\n },\n ref\n ) => (\n <button\n ref={ref}\n className={cn(buttonVariants({ type, align, fillWidth, loading }), className)}\n disabled={disabled || loading}\n aria-disabled={disabled || loading || undefined}\n aria-busy={loading || undefined}\n {...delegated}\n >\n {iconLeft && (\n <span className={styles.button__icon}>\n <Icon\n name={iconLeft}\n aria-hidden\n size=\"sm\"\n />\n </span>\n )}\n\n <span className={styles.button__label}>{label ?? children}</span>\n\n {iconRight && (\n <span className={styles.button__icon}>\n <Icon\n name={iconRight}\n aria-hidden\n size=\"sm\"\n />\n </span>\n )}\n </button>\n )\n);\n\nButton.displayName = 'Button';\n"],"names":["buttonVariants","cva","styles","button","variants","type","primary","secondary","empty","danger","align","center","left","fillWidth","true","loading","defaultVariants","Button","forwardRef","iconLeft","iconRight","children","label","disabled","className","delegated","ref","jsxs","cn","undefined","jsx","button__icon","Icon","button__label","displayName"],"mappings":";;;;;;;;;;;AA8BA,MAAMA,cAAAA,GAAiBC,0BAAAA,CAAIC,qBAAAA,CAAOC,MAAAA,EAAQ;AAAA,EACxCC,QAAAA,EAAU;AAAA,IACRC,IAAAA,EAAM;AAAA,MACJC,OAAAA,EAASJ,sBAAO,gBAAgB,CAAA;AAAA,MAChCK,SAAAA,EAAWL,sBAAO,kBAAkB,CAAA;AAAA,MACpCM,KAAAA,EAAON,sBAAO,cAAc,CAAA;AAAA,MAC5BO,MAAAA,EAAQP,sBAAO,eAAe;AAAA,KAChC;AAAA,IACAQ,KAAAA,EAAO;AAAA,MACLC,MAAAA,EAAQT,sBAAO,qBAAqB,CAAA;AAAA,MACpCU,IAAAA,EAAMV,sBAAO,mBAAmB;AAAA,KAClC;AAAA,IACAW,SAAAA,EAAW;AAAA,MACTC,IAAAA,EAAMZ,sBAAO,aAAa;AAAA,KAC5B;AAAA,IACAa,OAAAA,EAAS;AAAA,MACPD,IAAAA,EAAMZ,sBAAO,gBAAgB;AAAA;AAC/B,GACF;AAAA,EACAc,eAAAA,EAAiB;AAAA,IACfX,IAAAA,EAAM,SAAA;AAAA,IACNK,KAAAA,EAAO;AAAA;AAEX,CAAC,CAAA;AAEM,MAAMO,MAAAA,GAASC,iBACpB,CACE;AAAA,EACEb,IAAAA,GAAO,SAAA;AAAA,EACPc,QAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAV,KAAAA,GAAQ,QAAA;AAAA,EACRW,QAAAA;AAAAA,EACAR,SAAAA;AAAAA,EACAS,KAAAA;AAAAA,EACAP,OAAAA,GAAU,KAAA;AAAA,EACVQ,QAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACA,GAAGC;AACL,CAAA,EACAC,wBAEAC,eAAA,CAAC,QAAA,EAAA,EACC,GAAA,EACA,SAAA,EAAWC,OAAG5B,cAAAA,CAAe;AAAA,EAAEK,IAAAA;AAAAA,EAAMK,KAAAA;AAAAA,EAAOG,SAAAA;AAAAA,EAAWE;AAAQ,CAAC,CAAA,EAAGS,SAAS,CAAA,EAC5E,QAAA,EAAUD,YAAYR,OAAAA,EACtB,eAAA,EAAeQ,QAAAA,IAAYR,OAAAA,IAAWc,MAAAA,EACtC,WAAA,EAAWd,OAAAA,IAAWc,MAAAA,EACtB,GAAIJ,SAAAA,EAEHN,QAAAA,EAAAA;AAAAA,EAAAA,QAAAA,oBACCW,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW5B,qBAAAA,CAAO6B,YAAAA,EACtB,QAAA,kBAAAD,cAAA,CAACE,SAAA,EAAA,EACC,IAAA,EAAMb,QAAAA,EACN,aAAA,EAAW,IAAA,EACX,IAAA,EAAK,MAAI,CAAA,EAEb,CAAA;AAAA,iCAGD,MAAA,EAAA,EAAK,SAAA,EAAWjB,qBAAAA,CAAO+B,aAAAA,EAAgBX,mBAASD,QAAAA,EAAS,CAAA;AAAA,EAEzDD,SAAAA,oBACCU,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW5B,sBAAO6B,YAAAA,EACtB,QAAA,kBAAAD,cAAA,CAACE,SAAA,EAAA,EACC,IAAA,EAAMZ,SAAAA,EACN,aAAA,EAAW,IAAA,EACX,IAAA,EAAK,MAAI,CAAA,EAEb;AAAA,CAAA,EAEJ,CAEJ;AAEAH,MAAAA,CAAOiB,WAAAA,GAAc,QAAA;;;;"}
|
|
@@ -56,7 +56,7 @@ const ButtonGroup = ({
|
|
|
56
56
|
const isActive = isValueSelected(value, currentSelection);
|
|
57
57
|
return /* @__PURE__ */ jsxRuntime.jsx(Button, { $active: isActive, "aria-pressed": isActive, $fillWidth: fillWidth, $type: type, onClick: () => onButtonGroupClickCommonHandler(value), role: "button", ...buttonProps, children: label }, value);
|
|
58
58
|
});
|
|
59
|
-
return /* @__PURE__ */ jsxRuntime.jsx(ButtonGroupWrapper, { $fillWidth: fillWidth, $type: type,
|
|
59
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ButtonGroupWrapper, { ...props, $fillWidth: fillWidth, $type: type, role: "group", children: buttons });
|
|
60
60
|
};
|
|
61
61
|
const ButtonGroupWrapper = styledComponents.styled.div.withConfig({
|
|
62
62
|
componentId: "sc-ukgugp-0"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { styled } from 'styled-components';\nimport { ButtonGroupProps, SelectionValue } from './ButtonGroup.types';\n\nconst normalizeToSet = (value: SelectionValue | undefined): Set<string> => {\n if (value === undefined) {\n return new Set();\n }\n if (value instanceof Set) {\n return new Set(value);\n }\n return new Set([value]);\n};\n\nconst isValueSelected = (value: string, selection: Set<string>): boolean => {\n return selection.has(value);\n};\n\nexport const ButtonGroup = ({\n options,\n selected,\n defaultSelected,\n fillWidth = false,\n onClick,\n type = 'default',\n multiple = false,\n ...props\n}: ButtonGroupProps) => {\n const [internalSelection, setInternalSelection] = useState<Set<string>>(() =>\n normalizeToSet(defaultSelected)\n );\n\n // Use `selected` if the parent needs to own\n // or sync the selection state management (controlled\n // by consumer app)\n // Use `defaultSelected` if the component can manage\n // its own state independently (uncontrolled)\n const isControlled = selected !== undefined;\n const currentSelection = isControlled ? normalizeToSet(selected) : internalSelection;\n\n const onButtonGroupClickCommonHandler = useCallback(\n (value: string) => {\n let newSelection: Set<string>;\n\n if (multiple) {\n newSelection = new Set(currentSelection);\n if (newSelection.has(value)) {\n newSelection.delete(value);\n } else {\n newSelection.add(value);\n }\n } else {\n newSelection = new Set([value]);\n }\n\n if (!isControlled) {\n setInternalSelection(newSelection);\n }\n\n // WARN: Single mode returns string\n // while multiple mode returns Set (DS)\n onClick?.(value, multiple ? newSelection : value);\n },\n [currentSelection, multiple, isControlled, onClick]\n );\n\n const buttons = options.map(({ value, label, ...buttonProps }) => {\n const isActive = isValueSelected(value, currentSelection);\n\n return (\n <Button\n key={value}\n $active={isActive}\n aria-pressed={isActive}\n $fillWidth={fillWidth}\n $type={type}\n onClick={() => onButtonGroupClickCommonHandler(value)}\n role=\"button\"\n {...buttonProps}\n >\n {label}\n </Button>\n );\n });\n\n return (\n <ButtonGroupWrapper\n $fillWidth={fillWidth}\n $type={type}\n {...props}\n >\n {buttons}\n </ButtonGroupWrapper>\n );\n};\n\nimport { ButtonGroupType } from './ButtonGroup.types';\n\nconst ButtonGroupWrapper = styled.div<{ $fillWidth: boolean; $type: ButtonGroupType }>`\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: ${({ theme, $type }) =>\n `${theme.click.button.group.space.panel[$type].x} ${theme.click.button.group.space.panel[$type].y}`};\n gap: ${({ theme, $type }) => theme.click.button.group.space.panel[$type].gap};\n border: ${({ theme, $type }) =>\n $type === 'default'\n ? `1px solid ${theme.click.button.group.color.panel.stroke[$type]}`\n : 'none'};\n background: ${({ theme }) => theme.click.button.group.color.background.panel};\n border-radius: ${({ theme }) => theme.click.button.group.radii.panel.all};\n width: ${({ $fillWidth }) => ($fillWidth ? '100%' : 'auto')};\n`;\n\nconst Button = styled.button<{\n $active: boolean;\n $fillWidth: boolean;\n $type: ButtonGroupType;\n}>`\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: ${({ $active, theme }) =>\n $active\n ? theme.click.button.group.color.background.active\n : theme.click.button.group.color.background.default};\n color: ${({ theme }) => theme.click.button.group.color.text.default};\n font: ${({ theme }) => theme.click.button.group.typography.label.default};\n padding: ${({ theme, $type }) =>\n `${theme.click.button.group.space.button[$type].y} ${theme.click.button.group.space.button[$type].x}`};\n ${({ $fillWidth }) => ($fillWidth ? 'flex: 1;' : '')};\n border-radius: ${({ theme, $type }) =>\n theme.click.button.group.radii.button[$type].all};\n cursor: pointer;\n border: none;\n\n &[aria-pressed='true'] {\n background: ${({ theme }) => theme.click.button.group.color.background.active};\n font: ${({ theme }) => theme.click.button.group.typography.label.active};\n color: ${({ theme }) => theme.click.button.group.color.text.active};\n }\n\n &:hover {\n background: ${({ theme }) => theme.click.button.group.color.background.hover};\n font: ${({ theme }) => theme.click.button.group.typography.label.hover};\n color: ${({ theme }) => theme.click.button.group.color.text.hover};\n }\n\n &:disabled {\n cursor: not-allowed;\n font: ${({ theme }) => theme.click.button.group.typography.label.disabled};\n color: ${({ theme }) => theme.click.button.group.color.text.disabled};\n background: ${({ theme, $active }) =>\n theme.click.button.group.color.background[\n $active ? 'disabled-active' : 'disabled'\n ]};\n\n &:active,\n &:focus,\n &[aria-pressed='true'] {\n color: ${({ theme }) => theme.click.button.group.color.text.disabled};\n }\n }\n\n &[aria-pressed='true'] {\n background: ${({ theme }) => theme.click.button.group.color.background.active};\n font: ${({ theme }) => theme.click.button.group.typography.label.active};\n color: ${({ theme }) => theme.click.button.group.color.text.active};\n &:disabled {\n background: ${({ theme }) =>\n theme.click.button.group.color.background['disabled-active']};\n }\n }\n`;\n"],"names":["normalizeToSet","value","undefined","Set","isValueSelected","selection","has","ButtonGroup","options","selected","defaultSelected","fillWidth","onClick","type","multiple","props","internalSelection","setInternalSelection","useState","isControlled","currentSelection","onButtonGroupClickCommonHandler","useCallback","newSelection","delete","add","buttons","map","label","buttonProps","isActive","jsx","ButtonGroupWrapper","styled","div","withConfig","componentId","theme","$type","click","button","group","space","panel","x","y","gap","color","stroke","background","radii","all","$fillWidth","Button","$active","active","default","text","typography","hover","disabled"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/components/ButtonGroup/ButtonGroup.tsx"],"sourcesContent":["import { useCallback, useState } from 'react';\nimport { styled } from 'styled-components';\nimport { ButtonGroupProps, SelectionValue } from './ButtonGroup.types';\n\nconst normalizeToSet = (value: SelectionValue | undefined): Set<string> => {\n if (value === undefined) {\n return new Set();\n }\n if (value instanceof Set) {\n return new Set(value);\n }\n return new Set([value]);\n};\n\nconst isValueSelected = (value: string, selection: Set<string>): boolean => {\n return selection.has(value);\n};\n\nexport const ButtonGroup = ({\n options,\n selected,\n defaultSelected,\n fillWidth = false,\n onClick,\n type = 'default',\n multiple = false,\n ...props\n}: ButtonGroupProps) => {\n const [internalSelection, setInternalSelection] = useState<Set<string>>(() =>\n normalizeToSet(defaultSelected)\n );\n\n // Use `selected` if the parent needs to own\n // or sync the selection state management (controlled\n // by consumer app)\n // Use `defaultSelected` if the component can manage\n // its own state independently (uncontrolled)\n const isControlled = selected !== undefined;\n const currentSelection = isControlled ? normalizeToSet(selected) : internalSelection;\n\n const onButtonGroupClickCommonHandler = useCallback(\n (value: string) => {\n let newSelection: Set<string>;\n\n if (multiple) {\n newSelection = new Set(currentSelection);\n if (newSelection.has(value)) {\n newSelection.delete(value);\n } else {\n newSelection.add(value);\n }\n } else {\n newSelection = new Set([value]);\n }\n\n if (!isControlled) {\n setInternalSelection(newSelection);\n }\n\n // WARN: Single mode returns string\n // while multiple mode returns Set (DS)\n onClick?.(value, multiple ? newSelection : value);\n },\n [currentSelection, multiple, isControlled, onClick]\n );\n\n const buttons = options.map(({ value, label, ...buttonProps }) => {\n const isActive = isValueSelected(value, currentSelection);\n\n return (\n <Button\n key={value}\n $active={isActive}\n aria-pressed={isActive}\n $fillWidth={fillWidth}\n $type={type}\n onClick={() => onButtonGroupClickCommonHandler(value)}\n role=\"button\"\n {...buttonProps}\n >\n {label}\n </Button>\n );\n });\n\n return (\n <ButtonGroupWrapper\n {...props}\n $fillWidth={fillWidth}\n $type={type}\n role=\"group\"\n >\n {buttons}\n </ButtonGroupWrapper>\n );\n};\n\nimport { ButtonGroupType } from './ButtonGroup.types';\n\nconst ButtonGroupWrapper = styled.div<{ $fillWidth: boolean; $type: ButtonGroupType }>`\n display: inline-flex;\n box-sizing: border-box;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n padding: ${({ theme, $type }) =>\n `${theme.click.button.group.space.panel[$type].x} ${theme.click.button.group.space.panel[$type].y}`};\n gap: ${({ theme, $type }) => theme.click.button.group.space.panel[$type].gap};\n border: ${({ theme, $type }) =>\n $type === 'default'\n ? `1px solid ${theme.click.button.group.color.panel.stroke[$type]}`\n : 'none'};\n background: ${({ theme }) => theme.click.button.group.color.background.panel};\n border-radius: ${({ theme }) => theme.click.button.group.radii.panel.all};\n width: ${({ $fillWidth }) => ($fillWidth ? '100%' : 'auto')};\n`;\n\nconst Button = styled.button<{\n $active: boolean;\n $fillWidth: boolean;\n $type: ButtonGroupType;\n}>`\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n background: ${({ $active, theme }) =>\n $active\n ? theme.click.button.group.color.background.active\n : theme.click.button.group.color.background.default};\n color: ${({ theme }) => theme.click.button.group.color.text.default};\n font: ${({ theme }) => theme.click.button.group.typography.label.default};\n padding: ${({ theme, $type }) =>\n `${theme.click.button.group.space.button[$type].y} ${theme.click.button.group.space.button[$type].x}`};\n ${({ $fillWidth }) => ($fillWidth ? 'flex: 1;' : '')};\n border-radius: ${({ theme, $type }) =>\n theme.click.button.group.radii.button[$type].all};\n cursor: pointer;\n border: none;\n\n &[aria-pressed='true'] {\n background: ${({ theme }) => theme.click.button.group.color.background.active};\n font: ${({ theme }) => theme.click.button.group.typography.label.active};\n color: ${({ theme }) => theme.click.button.group.color.text.active};\n }\n\n &:hover {\n background: ${({ theme }) => theme.click.button.group.color.background.hover};\n font: ${({ theme }) => theme.click.button.group.typography.label.hover};\n color: ${({ theme }) => theme.click.button.group.color.text.hover};\n }\n\n &:disabled {\n cursor: not-allowed;\n font: ${({ theme }) => theme.click.button.group.typography.label.disabled};\n color: ${({ theme }) => theme.click.button.group.color.text.disabled};\n background: ${({ theme, $active }) =>\n theme.click.button.group.color.background[\n $active ? 'disabled-active' : 'disabled'\n ]};\n\n &:active,\n &:focus,\n &[aria-pressed='true'] {\n color: ${({ theme }) => theme.click.button.group.color.text.disabled};\n }\n }\n\n &[aria-pressed='true'] {\n background: ${({ theme }) => theme.click.button.group.color.background.active};\n font: ${({ theme }) => theme.click.button.group.typography.label.active};\n color: ${({ theme }) => theme.click.button.group.color.text.active};\n &:disabled {\n background: ${({ theme }) =>\n theme.click.button.group.color.background['disabled-active']};\n }\n }\n`;\n"],"names":["normalizeToSet","value","undefined","Set","isValueSelected","selection","has","ButtonGroup","options","selected","defaultSelected","fillWidth","onClick","type","multiple","props","internalSelection","setInternalSelection","useState","isControlled","currentSelection","onButtonGroupClickCommonHandler","useCallback","newSelection","delete","add","buttons","map","label","buttonProps","isActive","jsx","ButtonGroupWrapper","styled","div","withConfig","componentId","theme","$type","click","button","group","space","panel","x","y","gap","color","stroke","background","radii","all","$fillWidth","Button","$active","active","default","text","typography","hover","disabled"],"mappings":"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"}
|