@bigtablet/design-system 1.21.0 β 1.22.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 +16 -13
- package/dist/index.css +140 -1
- package/dist/index.d.ts +170 -5
- package/dist/index.js +194 -4
- package/dist/next.css +8 -0
- package/dist/next.js +4 -1
- package/dist/styles/scss/_skeleton.scss +16 -15
- package/dist/styles/scss/token.scss +1 -0
- package/dist/vanilla/bigtablet.min.css +1 -1
- package/package.json +11 -10
package/README.md
CHANGED
|
@@ -8,7 +8,6 @@
|
|
|
8
8
|
[](LICENSE)
|
|
9
9
|
[](https://github.com/Bigtablet/bigtablet-design-system/actions)
|
|
10
10
|
[](https://github.com/Bigtablet/bigtablet-design-system/actions/workflows/ci.yml)
|
|
11
|
-
[](https://bigtablet.github.io/bigtablet-design-system)
|
|
12
11
|
|
|
13
12
|
[π°π· νκ΅μ΄](./README_KR.md) Β· πΊπΈ English
|
|
14
13
|
|
|
@@ -17,7 +16,7 @@ The official design system of Bigtablet β a unified UI library composed of Fou
|
|
|
17
16
|
> **Note**: This is Bigtablet's in-house design system, open-sourced for community reference.
|
|
18
17
|
> External use is welcome, but minor versions may include breaking changes without prior notice.
|
|
19
18
|
|
|
20
|
-
[GitHub](https://github.com/Bigtablet/bigtablet-design-system) Β· [NPM](https://www.npmjs.com/package/@bigtablet/design-system)
|
|
19
|
+
[GitHub](https://github.com/Bigtablet/bigtablet-design-system) Β· [NPM](https://www.npmjs.com/package/@bigtablet/design-system)
|
|
21
20
|
|
|
22
21
|
</div>
|
|
23
22
|
|
|
@@ -34,28 +33,32 @@ The official design system of Bigtablet β a unified UI library composed of Fou
|
|
|
34
33
|
| π¨ **Design Tokens** | Consistent token-based system for colors, typography, spacing |
|
|
35
34
|
| βΏ **Accessibility** | Keyboard navigation, screen reader support, full ARIA attributes |
|
|
36
35
|
| π§ͺ **86% Coverage** | Stable test coverage powered by Vitest |
|
|
37
|
-
| π **Storybook** | Interactive documentation
|
|
36
|
+
| π **Storybook** | Interactive component documentation (run locally via `pnpm storybook`) |
|
|
38
37
|
| π― **Zero Dependencies** | No bundled runtime dependencies β peer deps only |
|
|
39
38
|
|
|
40
39
|
---
|
|
41
40
|
|
|
42
41
|
## Installation
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
# npm
|
|
46
|
-
npm install @bigtablet/design-system
|
|
43
|
+
### One-line setup (recommended)
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
yarn add @bigtablet/design-system
|
|
45
|
+
Auto-detects your package manager (npm / yarn / pnpm / bun) and environment (React / Next.js), installs the package + peer deps, and prints CSS/Provider setup instructions.
|
|
50
46
|
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
```bash
|
|
48
|
+
curl -fsSL https://raw.githubusercontent.com/Bigtablet/bigtablet-design-system/main/scripts/setup.sh | sh
|
|
53
49
|
```
|
|
54
50
|
|
|
55
|
-
|
|
51
|
+
### Manual
|
|
56
52
|
|
|
57
53
|
```bash
|
|
58
|
-
npm
|
|
54
|
+
# npm
|
|
55
|
+
npm install @bigtablet/design-system react@^19 react-dom@^19 lucide-react
|
|
56
|
+
|
|
57
|
+
# yarn
|
|
58
|
+
yarn add @bigtablet/design-system react@^19 react-dom@^19 lucide-react
|
|
59
|
+
|
|
60
|
+
# pnpm
|
|
61
|
+
pnpm add @bigtablet/design-system react@^19 react-dom@^19 lucide-react
|
|
59
62
|
```
|
|
60
63
|
|
|
61
64
|
> Requires **React 19** and **lucide-react β₯ 0.552.0**. Compatible with **Next.js 13+**.
|
|
@@ -315,6 +318,6 @@ pnpm test:coverage # Coverage report
|
|
|
315
318
|
|
|
316
319
|
<div align="center">
|
|
317
320
|
|
|
318
|
-
[GitHub](https://github.com/Bigtablet/bigtablet-design-system) Β· [NPM](https://www.npmjs.com/package/@bigtablet/design-system) Β· [
|
|
321
|
+
[GitHub](https://github.com/Bigtablet/bigtablet-design-system) Β· [NPM](https://www.npmjs.com/package/@bigtablet/design-system) Β· [Issues](https://github.com/Bigtablet/bigtablet-design-system/issues)
|
|
319
322
|
|
|
320
323
|
</div>
|
package/dist/index.css
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
/* src/ui/display/card/style.scss */
|
|
2
|
+
@keyframes skeleton_loading {
|
|
3
|
+
0% {
|
|
4
|
+
background-position: 100% 0;
|
|
5
|
+
}
|
|
6
|
+
100% {
|
|
7
|
+
background-position: 0 0;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
2
10
|
.card {
|
|
3
11
|
background: #ffffff;
|
|
4
12
|
border-radius: 12px;
|
|
@@ -42,6 +50,14 @@
|
|
|
42
50
|
}
|
|
43
51
|
|
|
44
52
|
/* src/ui/feedback/alert/style.scss */
|
|
53
|
+
@keyframes skeleton_loading {
|
|
54
|
+
0% {
|
|
55
|
+
background-position: 100% 0;
|
|
56
|
+
}
|
|
57
|
+
100% {
|
|
58
|
+
background-position: 0 0;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
45
61
|
@keyframes alert_fade_in {
|
|
46
62
|
from {
|
|
47
63
|
opacity: 0;
|
|
@@ -192,6 +208,14 @@
|
|
|
192
208
|
}
|
|
193
209
|
|
|
194
210
|
/* src/ui/feedback/spinner/style.scss */
|
|
211
|
+
@keyframes skeleton_loading {
|
|
212
|
+
0% {
|
|
213
|
+
background-position: 100% 0;
|
|
214
|
+
}
|
|
215
|
+
100% {
|
|
216
|
+
background-position: 0 0;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
195
219
|
@keyframes spinner_spin {
|
|
196
220
|
to {
|
|
197
221
|
transform: rotate(360deg);
|
|
@@ -207,6 +231,14 @@
|
|
|
207
231
|
}
|
|
208
232
|
|
|
209
233
|
/* src/ui/feedback/top-loading/style.scss */
|
|
234
|
+
@keyframes skeleton_loading {
|
|
235
|
+
0% {
|
|
236
|
+
background-position: 100% 0;
|
|
237
|
+
}
|
|
238
|
+
100% {
|
|
239
|
+
background-position: 0 0;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
210
242
|
.top_loading {
|
|
211
243
|
position: fixed;
|
|
212
244
|
top: 0;
|
|
@@ -235,6 +267,14 @@
|
|
|
235
267
|
}
|
|
236
268
|
|
|
237
269
|
/* src/ui/feedback/toast/style.scss */
|
|
270
|
+
@keyframes skeleton_loading {
|
|
271
|
+
0% {
|
|
272
|
+
background-position: 100% 0;
|
|
273
|
+
}
|
|
274
|
+
100% {
|
|
275
|
+
background-position: 0 0;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
238
278
|
@keyframes toast_slide_in {
|
|
239
279
|
from {
|
|
240
280
|
opacity: 0;
|
|
@@ -370,6 +410,14 @@
|
|
|
370
410
|
}
|
|
371
411
|
|
|
372
412
|
/* src/ui/general/button/style.scss */
|
|
413
|
+
@keyframes skeleton_loading {
|
|
414
|
+
0% {
|
|
415
|
+
background-position: 100% 0;
|
|
416
|
+
}
|
|
417
|
+
100% {
|
|
418
|
+
background-position: 0 0;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
373
421
|
.button {
|
|
374
422
|
display: inline-flex;
|
|
375
423
|
align-items: center;
|
|
@@ -450,6 +498,14 @@
|
|
|
450
498
|
}
|
|
451
499
|
|
|
452
500
|
/* src/ui/form/checkbox/style.scss */
|
|
501
|
+
@keyframes skeleton_loading {
|
|
502
|
+
0% {
|
|
503
|
+
background-position: 100% 0;
|
|
504
|
+
}
|
|
505
|
+
100% {
|
|
506
|
+
background-position: 0 0;
|
|
507
|
+
}
|
|
508
|
+
}
|
|
453
509
|
.checkbox {
|
|
454
510
|
display: inline-flex;
|
|
455
511
|
align-items: center;
|
|
@@ -562,10 +618,19 @@
|
|
|
562
618
|
}
|
|
563
619
|
|
|
564
620
|
/* src/ui/form/file/style.scss */
|
|
621
|
+
@keyframes skeleton_loading {
|
|
622
|
+
0% {
|
|
623
|
+
background-position: 100% 0;
|
|
624
|
+
}
|
|
625
|
+
100% {
|
|
626
|
+
background-position: 0 0;
|
|
627
|
+
}
|
|
628
|
+
}
|
|
565
629
|
.file_input {
|
|
566
630
|
position: relative;
|
|
567
631
|
display: inline-flex;
|
|
568
|
-
|
|
632
|
+
flex-direction: column;
|
|
633
|
+
align-items: flex-start;
|
|
569
634
|
cursor: pointer;
|
|
570
635
|
}
|
|
571
636
|
.file_input:hover .file_input_label {
|
|
@@ -595,6 +660,13 @@
|
|
|
595
660
|
box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.08);
|
|
596
661
|
border-color: #000000;
|
|
597
662
|
}
|
|
663
|
+
.file_input_helper {
|
|
664
|
+
display: block;
|
|
665
|
+
margin-top: 0.25rem;
|
|
666
|
+
font-size: 0.875rem;
|
|
667
|
+
line-height: 1.5;
|
|
668
|
+
color: #666666;
|
|
669
|
+
}
|
|
598
670
|
.file_input_disabled {
|
|
599
671
|
cursor: not-allowed;
|
|
600
672
|
}
|
|
@@ -610,6 +682,14 @@
|
|
|
610
682
|
}
|
|
611
683
|
|
|
612
684
|
/* src/ui/form/radio/style.scss */
|
|
685
|
+
@keyframes skeleton_loading {
|
|
686
|
+
0% {
|
|
687
|
+
background-position: 100% 0;
|
|
688
|
+
}
|
|
689
|
+
100% {
|
|
690
|
+
background-position: 0 0;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
613
693
|
.radio {
|
|
614
694
|
position: relative;
|
|
615
695
|
display: inline-flex;
|
|
@@ -689,6 +769,14 @@
|
|
|
689
769
|
}
|
|
690
770
|
|
|
691
771
|
/* src/ui/general/select/style.scss */
|
|
772
|
+
@keyframes skeleton_loading {
|
|
773
|
+
0% {
|
|
774
|
+
background-position: 100% 0;
|
|
775
|
+
}
|
|
776
|
+
100% {
|
|
777
|
+
background-position: 0 0;
|
|
778
|
+
}
|
|
779
|
+
}
|
|
692
780
|
.select {
|
|
693
781
|
position: relative;
|
|
694
782
|
display: inline-flex;
|
|
@@ -863,6 +951,14 @@
|
|
|
863
951
|
}
|
|
864
952
|
|
|
865
953
|
/* src/ui/form/switch/style.scss */
|
|
954
|
+
@keyframes skeleton_loading {
|
|
955
|
+
0% {
|
|
956
|
+
background-position: 100% 0;
|
|
957
|
+
}
|
|
958
|
+
100% {
|
|
959
|
+
background-position: 0 0;
|
|
960
|
+
}
|
|
961
|
+
}
|
|
866
962
|
.switch {
|
|
867
963
|
position: relative;
|
|
868
964
|
display: inline-flex;
|
|
@@ -923,6 +1019,14 @@
|
|
|
923
1019
|
}
|
|
924
1020
|
|
|
925
1021
|
/* src/ui/form/textfield/style.scss */
|
|
1022
|
+
@keyframes skeleton_loading {
|
|
1023
|
+
0% {
|
|
1024
|
+
background-position: 100% 0;
|
|
1025
|
+
}
|
|
1026
|
+
100% {
|
|
1027
|
+
background-position: 0 0;
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
926
1030
|
.text_field {
|
|
927
1031
|
display: flex;
|
|
928
1032
|
flex-direction: column;
|
|
@@ -1059,6 +1163,14 @@
|
|
|
1059
1163
|
}
|
|
1060
1164
|
|
|
1061
1165
|
/* src/ui/form/date-picker/style.scss */
|
|
1166
|
+
@keyframes skeleton_loading {
|
|
1167
|
+
0% {
|
|
1168
|
+
background-position: 100% 0;
|
|
1169
|
+
}
|
|
1170
|
+
100% {
|
|
1171
|
+
background-position: 0 0;
|
|
1172
|
+
}
|
|
1173
|
+
}
|
|
1062
1174
|
.date_picker {
|
|
1063
1175
|
display: flex;
|
|
1064
1176
|
flex-direction: column;
|
|
@@ -1152,8 +1264,27 @@
|
|
|
1152
1264
|
.date_picker_disabled .date_picker_label {
|
|
1153
1265
|
color: #9ca3af;
|
|
1154
1266
|
}
|
|
1267
|
+
.date_picker_sr_only {
|
|
1268
|
+
position: absolute;
|
|
1269
|
+
width: 1px;
|
|
1270
|
+
height: 1px;
|
|
1271
|
+
padding: 0;
|
|
1272
|
+
margin: -1px;
|
|
1273
|
+
overflow: hidden;
|
|
1274
|
+
clip: rect(0, 0, 0, 0);
|
|
1275
|
+
white-space: nowrap;
|
|
1276
|
+
border: 0;
|
|
1277
|
+
}
|
|
1155
1278
|
|
|
1156
1279
|
/* src/ui/navigation/pagination/style.scss */
|
|
1280
|
+
@keyframes skeleton_loading {
|
|
1281
|
+
0% {
|
|
1282
|
+
background-position: 100% 0;
|
|
1283
|
+
}
|
|
1284
|
+
100% {
|
|
1285
|
+
background-position: 0 0;
|
|
1286
|
+
}
|
|
1287
|
+
}
|
|
1157
1288
|
.pagination {
|
|
1158
1289
|
display: flex;
|
|
1159
1290
|
align-items: center;
|
|
@@ -1219,6 +1350,14 @@
|
|
|
1219
1350
|
}
|
|
1220
1351
|
|
|
1221
1352
|
/* src/ui/overlay/modal/style.scss */
|
|
1353
|
+
@keyframes skeleton_loading {
|
|
1354
|
+
0% {
|
|
1355
|
+
background-position: 100% 0;
|
|
1356
|
+
}
|
|
1357
|
+
100% {
|
|
1358
|
+
background-position: 0 0;
|
|
1359
|
+
}
|
|
1360
|
+
}
|
|
1222
1361
|
.modal {
|
|
1223
1362
|
position: fixed;
|
|
1224
1363
|
inset: 0;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,162 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
|
|
4
|
+
declare const colors: {
|
|
5
|
+
readonly primary: "#000000";
|
|
6
|
+
readonly primaryHover: "#333333";
|
|
7
|
+
readonly background: "#ffffff";
|
|
8
|
+
readonly backgroundSecondary: "#fafafa";
|
|
9
|
+
readonly backgroundNeutral: "#f3f3f3";
|
|
10
|
+
readonly backgroundMuted: "#f0f0f0";
|
|
11
|
+
readonly textPrimary: "#1a1a1a";
|
|
12
|
+
readonly textSecondary: "#666666";
|
|
13
|
+
readonly textTertiary: "#999999";
|
|
14
|
+
readonly border: "#e5e5e5";
|
|
15
|
+
readonly borderLight: "rgba(0, 0, 0, 0.08)";
|
|
16
|
+
readonly success: "#10b981";
|
|
17
|
+
readonly error: "#ef4444";
|
|
18
|
+
readonly warning: "#f59e0b";
|
|
19
|
+
readonly info: "#3b82f6";
|
|
20
|
+
readonly overlay: "rgba(0, 0, 0, 0.5)";
|
|
21
|
+
readonly hoverSubtle: "rgba(0, 0, 0, 0.03)";
|
|
22
|
+
readonly hoverLight: "rgba(0, 0, 0, 0.05)";
|
|
23
|
+
readonly textStrong: "#1F2937";
|
|
24
|
+
readonly textNormal: "#3B3B3B";
|
|
25
|
+
readonly textSubtle: "#6B7280";
|
|
26
|
+
readonly textDisabled: "#9CA3AF";
|
|
27
|
+
readonly textInverse: "#FFFFFF";
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
declare const spacing: {
|
|
31
|
+
readonly xs: "0.25rem";
|
|
32
|
+
readonly sm: "0.5rem";
|
|
33
|
+
readonly md: "0.75rem";
|
|
34
|
+
readonly lg: "1rem";
|
|
35
|
+
readonly xl: "1.25rem";
|
|
36
|
+
readonly "2xl": "1.5rem";
|
|
37
|
+
readonly "3xl": "2rem";
|
|
38
|
+
readonly "4xl": "2.5rem";
|
|
39
|
+
readonly "5xl": "3rem";
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
declare const typography: {
|
|
43
|
+
readonly fontFamily: {
|
|
44
|
+
readonly primary: "'Pretendard', sans-serif";
|
|
45
|
+
};
|
|
46
|
+
readonly fontSize: {
|
|
47
|
+
readonly xs: "0.75rem";
|
|
48
|
+
readonly sm: "0.875rem";
|
|
49
|
+
readonly base: "0.9375rem";
|
|
50
|
+
readonly md: "1rem";
|
|
51
|
+
readonly lg: "1.125rem";
|
|
52
|
+
readonly xl: "1.25rem";
|
|
53
|
+
readonly "2xl": "1.5rem";
|
|
54
|
+
readonly "3xl": "2rem";
|
|
55
|
+
readonly "4xl": "2.5rem";
|
|
56
|
+
};
|
|
57
|
+
readonly fontWeight: {
|
|
58
|
+
readonly thin: 100;
|
|
59
|
+
readonly extralight: 200;
|
|
60
|
+
readonly light: 300;
|
|
61
|
+
readonly regular: 400;
|
|
62
|
+
readonly medium: 500;
|
|
63
|
+
readonly semibold: 600;
|
|
64
|
+
readonly bold: 700;
|
|
65
|
+
readonly extrabold: 800;
|
|
66
|
+
readonly black: 900;
|
|
67
|
+
};
|
|
68
|
+
readonly lineHeight: {
|
|
69
|
+
readonly tight: 1.25;
|
|
70
|
+
readonly snug: 1.3;
|
|
71
|
+
readonly normal: 1.5;
|
|
72
|
+
readonly relaxed: 1.75;
|
|
73
|
+
};
|
|
74
|
+
readonly letterSpacing: {
|
|
75
|
+
readonly tight: "-0.02em";
|
|
76
|
+
readonly normal: "0";
|
|
77
|
+
readonly wide: "0.02em";
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
declare const radius: {
|
|
82
|
+
readonly sm: "6px";
|
|
83
|
+
readonly md: "8px";
|
|
84
|
+
readonly lg: "12px";
|
|
85
|
+
readonly xl: "16px";
|
|
86
|
+
readonly full: "9999px";
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
declare const shadows: {
|
|
90
|
+
readonly sm: "0 2px 4px rgba(0, 0, 0, 0.04)";
|
|
91
|
+
readonly md: "0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04)";
|
|
92
|
+
readonly lg: "0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06)";
|
|
93
|
+
readonly xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04)";
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
declare const motion: {
|
|
97
|
+
readonly transition: {
|
|
98
|
+
readonly fast: "0.1s ease-in-out";
|
|
99
|
+
readonly base: "0.2s ease-in-out";
|
|
100
|
+
readonly slow: "0.3s ease-in-out";
|
|
101
|
+
readonly emphasized: "0.25s cubic-bezier(0.4, 0, 0.2, 1)";
|
|
102
|
+
readonly bounce: "0.3s cubic-bezier(0.16, 1, 0.3, 1)";
|
|
103
|
+
readonly fade: "0.15s ease-in-out";
|
|
104
|
+
readonly slide: "0.25s ease-in-out";
|
|
105
|
+
readonly scale: "0.2s cubic-bezier(0.2, 0.8, 0.2, 1)";
|
|
106
|
+
readonly state: "0.18s ease-in-out";
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
declare const skeleton: {
|
|
111
|
+
readonly color: {
|
|
112
|
+
readonly base: "#f3f3f3";
|
|
113
|
+
readonly wave: "#f0f0f0";
|
|
114
|
+
readonly highlight: "#fafafa";
|
|
115
|
+
};
|
|
116
|
+
readonly gradient: "linear-gradient(90deg, #f3f3f3 25%, #fafafa 37%, #f0f0f0 63%)";
|
|
117
|
+
readonly radius: {
|
|
118
|
+
readonly sm: "6px";
|
|
119
|
+
readonly md: "8px";
|
|
120
|
+
readonly lg: "12px";
|
|
121
|
+
};
|
|
122
|
+
readonly height: {
|
|
123
|
+
readonly xs: "0.25rem";
|
|
124
|
+
readonly sm: "0.5rem";
|
|
125
|
+
readonly md: "0.75rem";
|
|
126
|
+
readonly lg: "1rem";
|
|
127
|
+
readonly xl: "1.25rem";
|
|
128
|
+
};
|
|
129
|
+
readonly animation: {
|
|
130
|
+
readonly duration: "1.4s";
|
|
131
|
+
readonly timing: "ease-in-out";
|
|
132
|
+
};
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
declare const breakpoints: {
|
|
136
|
+
readonly mobile: 0;
|
|
137
|
+
readonly tablet: 768;
|
|
138
|
+
readonly laptop: 1024;
|
|
139
|
+
readonly desktop: 1440;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
declare const zIndex: {
|
|
143
|
+
readonly loading: 9999;
|
|
144
|
+
readonly modal: 10000;
|
|
145
|
+
readonly toast: 10001;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
declare const a11y: {
|
|
149
|
+
readonly focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)";
|
|
150
|
+
readonly focusRingError: "0 0 0 3px rgba(239, 68, 68, 0.15)";
|
|
151
|
+
readonly focusRingSuccess: "0 0 0 3px rgba(16, 185, 129, 0.15)";
|
|
152
|
+
readonly tapMinSize: "44px";
|
|
153
|
+
};
|
|
154
|
+
|
|
4
155
|
interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
5
156
|
/** μΉ΄λ μλ¨μ νμν μ λͺ© */
|
|
6
157
|
heading?: React.ReactNode;
|
|
158
|
+
/** μ λͺ©μ μ¬μ©ν μλ§¨ν± ν€λ© νκ·Έ (κΈ°λ³Έκ°: "h3"). μ€ν¬λ¦°λ¦¬λ outlineμ λ°μλ©λλ€. */
|
|
159
|
+
headingAs?: "h2" | "h3" | "h4" | "h5" | "h6";
|
|
7
160
|
/** μΉ΄λ κ·Έλ¦Όμ ν¬κΈ° (κΈ°λ³Έκ°: "sm") */
|
|
8
161
|
shadow?: "none" | "sm" | "md" | "lg";
|
|
9
162
|
/** μΉ΄λ λ΄λΆ μ¬λ°± (κΈ°λ³Έκ°: "md") */
|
|
@@ -17,7 +170,7 @@ interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
17
170
|
* @param props μΉ΄λ μμ±
|
|
18
171
|
* @returns λ λλ§λ μΉ΄λ UI
|
|
19
172
|
*/
|
|
20
|
-
declare const Card: ({ heading, shadow, padding, bordered, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
|
|
173
|
+
declare const Card: ({ heading, headingAs: HeadingTag, shadow, padding, bordered, className, children, ...props }: CardProps) => react_jsx_runtime.JSX.Element;
|
|
21
174
|
|
|
22
175
|
type AlertVariant = "info" | "success" | "warning" | "error";
|
|
23
176
|
type AlertActionsAlign = "left" | "center" | "right";
|
|
@@ -167,10 +320,12 @@ interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>
|
|
|
167
320
|
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
168
321
|
|
|
169
322
|
interface FileInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
170
|
-
/** νμΌ μ ν λ²νΌ λΌλ²¨ ν
μ€νΈ (κΈ°λ³Έκ°: "
|
|
323
|
+
/** νμΌ μ ν λ²νΌ λΌλ²¨ ν
μ€νΈ (κΈ°λ³Έκ°: "Choose file") */
|
|
171
324
|
label?: string;
|
|
172
325
|
/** νμΌ μ ν μ νΈμΆλλ μ½λ°± */
|
|
173
326
|
onFiles?: (files: FileList | null) => void;
|
|
327
|
+
/** νμ© νμΌ νμ μλ΄ ν
μ€νΈ. μ€ν¬λ¦°λ¦¬λμκ² μ λ¬λ©λλ€. (μ: "PDF, DOC νμΌλ§ μ
λ‘λ κ°λ₯ν©λλ€") */
|
|
328
|
+
helperText?: string;
|
|
174
329
|
}
|
|
175
330
|
/**
|
|
176
331
|
* νμΌ μ
λ ₯ μ»΄ν¬λνΈλ₯Ό λ λλ§νλ€.
|
|
@@ -178,7 +333,7 @@ interface FileInputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
|
178
333
|
* @param props νμΌ μ
λ ₯ μμ±
|
|
179
334
|
* @returns λ λλ§λ νμΌ μ
λ ₯ UI
|
|
180
335
|
*/
|
|
181
|
-
declare const FileInput: ({ label, onFiles, className, disabled, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
|
|
336
|
+
declare const FileInput: ({ label, onFiles, helperText, className, disabled, ...props }: FileInputProps) => react_jsx_runtime.JSX.Element;
|
|
182
337
|
|
|
183
338
|
interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> {
|
|
184
339
|
/** λΌλμ€ λ²νΌ μμ νμν λΌλ²¨ */
|
|
@@ -334,6 +489,16 @@ interface DatePickerProps {
|
|
|
334
489
|
monthLabel?: string;
|
|
335
490
|
/** μΌ selectμ aria-label λ° λΉ μ΅μ
ν
μ€νΈ (κΈ°λ³Έκ°: "Day") */
|
|
336
491
|
dayLabel?: string;
|
|
492
|
+
/**
|
|
493
|
+
* minDate μ€μ μ μ€ν¬λ¦°λ¦¬λμ μ λ¬ν μλ΄ λ¬Έκ΅¬ ν¬λ§·.
|
|
494
|
+
* `{date}` μ리μ minDate κ°μ΄ μΉνλ©λλ€. (κΈ°λ³Έκ°: "Minimum date: {date}")
|
|
495
|
+
*/
|
|
496
|
+
minDateSrFormat?: string;
|
|
497
|
+
/**
|
|
498
|
+
* selectableRange="until-today" μ€μ μ μ€ν¬λ¦°λ¦¬λμ μ λ¬ν μλ΄ λ¬Έκ΅¬.
|
|
499
|
+
* (κΈ°λ³Έκ°: "Selectable up to today")
|
|
500
|
+
*/
|
|
501
|
+
selectableRangeUntilTodaySrText?: string;
|
|
337
502
|
}
|
|
338
503
|
/**
|
|
339
504
|
* μ°/μ/μΌ μ νν λ°μ΄νΈ νΌμ»€λ₯Ό λ λλ§νλ€.
|
|
@@ -341,7 +506,7 @@ interface DatePickerProps {
|
|
|
341
506
|
* @param props λ°μ΄νΈ νΌμ»€ μμ±
|
|
342
507
|
* @returns λ λλ§λ λ°μ΄νΈ νΌμ»€ UI
|
|
343
508
|
*/
|
|
344
|
-
declare const DatePicker: ({ label, value, onChange, mode, startYear, endYear, minDate, selectableRange, disabled, fullWidth, width, yearLabel, monthLabel, dayLabel, }: DatePickerProps) => react_jsx_runtime.JSX.Element;
|
|
509
|
+
declare const DatePicker: ({ label, value, onChange, mode, startYear, endYear, minDate, selectableRange, disabled, fullWidth, width, yearLabel, monthLabel, dayLabel, minDateSrFormat, selectableRangeUntilTodaySrText, }: DatePickerProps) => react_jsx_runtime.JSX.Element;
|
|
345
510
|
|
|
346
511
|
interface PaginationProps {
|
|
347
512
|
/** νμ¬ νμ΄μ§ λ²νΈ (1-based) */
|
|
@@ -385,4 +550,4 @@ interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">
|
|
|
385
550
|
*/
|
|
386
551
|
declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
|
|
387
552
|
|
|
388
|
-
export { AlertProvider, Button, Card, Checkbox, DatePicker, FileInput, Modal, Pagination, Radio, Select, type SelectOption, Spinner, Switch, TextField, ToastProvider, TopLoading, useAlert, useToast };
|
|
553
|
+
export { AlertProvider, Button, Card, Checkbox, DatePicker, FileInput, Modal, Pagination, Radio, Select, type SelectOption, Spinner, Switch, TextField, ToastProvider, TopLoading, a11y, breakpoints, colors, motion, radius, shadows, skeleton, spacing, typography, useAlert, useToast, zIndex };
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,180 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
import { ChevronDown, Check, X, Bell, Info, AlertTriangle, XCircle, CheckCircle2 } from 'lucide-react';
|
|
8
8
|
|
|
9
|
+
// src/styles/ts/colors.ts
|
|
10
|
+
var colors = {
|
|
11
|
+
primary: "#000000",
|
|
12
|
+
primaryHover: "#333333",
|
|
13
|
+
background: "#ffffff",
|
|
14
|
+
backgroundSecondary: "#fafafa",
|
|
15
|
+
backgroundNeutral: "#f3f3f3",
|
|
16
|
+
backgroundMuted: "#f0f0f0",
|
|
17
|
+
textPrimary: "#1a1a1a",
|
|
18
|
+
textSecondary: "#666666",
|
|
19
|
+
textTertiary: "#999999",
|
|
20
|
+
border: "#e5e5e5",
|
|
21
|
+
borderLight: "rgba(0, 0, 0, 0.08)",
|
|
22
|
+
success: "#10b981",
|
|
23
|
+
error: "#ef4444",
|
|
24
|
+
warning: "#f59e0b",
|
|
25
|
+
info: "#3b82f6",
|
|
26
|
+
overlay: "rgba(0, 0, 0, 0.5)",
|
|
27
|
+
hoverSubtle: "rgba(0, 0, 0, 0.03)",
|
|
28
|
+
hoverLight: "rgba(0, 0, 0, 0.05)",
|
|
29
|
+
textStrong: "#1F2937",
|
|
30
|
+
textNormal: "#3B3B3B",
|
|
31
|
+
textSubtle: "#6B7280",
|
|
32
|
+
textDisabled: "#9CA3AF",
|
|
33
|
+
textInverse: "#FFFFFF"
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// src/styles/ts/spacing.ts
|
|
37
|
+
var spacing = {
|
|
38
|
+
xs: "0.25rem",
|
|
39
|
+
// 4px
|
|
40
|
+
sm: "0.5rem",
|
|
41
|
+
// 8px
|
|
42
|
+
md: "0.75rem",
|
|
43
|
+
// 12px
|
|
44
|
+
lg: "1rem",
|
|
45
|
+
// 16px
|
|
46
|
+
xl: "1.25rem",
|
|
47
|
+
// 20px
|
|
48
|
+
"2xl": "1.5rem",
|
|
49
|
+
// 24px
|
|
50
|
+
"3xl": "2rem",
|
|
51
|
+
// 32px
|
|
52
|
+
"4xl": "2.5rem",
|
|
53
|
+
// 40px
|
|
54
|
+
"5xl": "3rem"
|
|
55
|
+
// 48px
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
// src/styles/ts/typography.ts
|
|
59
|
+
var typography = {
|
|
60
|
+
fontFamily: {
|
|
61
|
+
primary: "'Pretendard', sans-serif"
|
|
62
|
+
},
|
|
63
|
+
fontSize: {
|
|
64
|
+
xs: "0.75rem",
|
|
65
|
+
sm: "0.875rem",
|
|
66
|
+
base: "0.9375rem",
|
|
67
|
+
md: "1rem",
|
|
68
|
+
lg: "1.125rem",
|
|
69
|
+
xl: "1.25rem",
|
|
70
|
+
"2xl": "1.5rem",
|
|
71
|
+
"3xl": "2rem",
|
|
72
|
+
"4xl": "2.5rem"
|
|
73
|
+
},
|
|
74
|
+
fontWeight: {
|
|
75
|
+
thin: 100,
|
|
76
|
+
extralight: 200,
|
|
77
|
+
light: 300,
|
|
78
|
+
regular: 400,
|
|
79
|
+
medium: 500,
|
|
80
|
+
semibold: 600,
|
|
81
|
+
bold: 700,
|
|
82
|
+
extrabold: 800,
|
|
83
|
+
black: 900
|
|
84
|
+
},
|
|
85
|
+
lineHeight: {
|
|
86
|
+
tight: 1.25,
|
|
87
|
+
snug: 1.3,
|
|
88
|
+
normal: 1.5,
|
|
89
|
+
relaxed: 1.75
|
|
90
|
+
},
|
|
91
|
+
letterSpacing: {
|
|
92
|
+
tight: "-0.02em",
|
|
93
|
+
normal: "0",
|
|
94
|
+
wide: "0.02em"
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// src/styles/ts/radius.ts
|
|
99
|
+
var radius = {
|
|
100
|
+
sm: "6px",
|
|
101
|
+
md: "8px",
|
|
102
|
+
lg: "12px",
|
|
103
|
+
xl: "16px",
|
|
104
|
+
full: "9999px"
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// src/styles/ts/shadows.ts
|
|
108
|
+
var shadows = {
|
|
109
|
+
sm: "0 2px 4px rgba(0, 0, 0, 0.04)",
|
|
110
|
+
md: "0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04)",
|
|
111
|
+
lg: "0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06)",
|
|
112
|
+
xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 10px 10px -5px rgba(0,0,0,0.04)"
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// src/styles/ts/motion.ts
|
|
116
|
+
var motion = {
|
|
117
|
+
transition: {
|
|
118
|
+
fast: "0.1s ease-in-out",
|
|
119
|
+
base: "0.2s ease-in-out",
|
|
120
|
+
slow: "0.3s ease-in-out",
|
|
121
|
+
emphasized: "0.25s cubic-bezier(0.4, 0, 0.2, 1)",
|
|
122
|
+
bounce: "0.3s cubic-bezier(0.16, 1, 0.3, 1)",
|
|
123
|
+
fade: "0.15s ease-in-out",
|
|
124
|
+
slide: "0.25s ease-in-out",
|
|
125
|
+
scale: "0.2s cubic-bezier(0.2, 0.8, 0.2, 1)",
|
|
126
|
+
state: "0.18s ease-in-out"
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
// src/styles/ts/skeleton.ts
|
|
131
|
+
var skeleton = {
|
|
132
|
+
color: {
|
|
133
|
+
base: colors.backgroundNeutral,
|
|
134
|
+
wave: colors.backgroundMuted,
|
|
135
|
+
highlight: colors.backgroundSecondary
|
|
136
|
+
},
|
|
137
|
+
gradient: `linear-gradient(90deg, ${colors.backgroundNeutral} 25%, ${colors.backgroundSecondary} 37%, ${colors.backgroundMuted} 63%)`,
|
|
138
|
+
radius: {
|
|
139
|
+
sm: radius.sm,
|
|
140
|
+
md: radius.md,
|
|
141
|
+
lg: radius.lg
|
|
142
|
+
},
|
|
143
|
+
height: {
|
|
144
|
+
xs: spacing.xs,
|
|
145
|
+
sm: spacing.sm,
|
|
146
|
+
md: spacing.md,
|
|
147
|
+
lg: spacing.lg,
|
|
148
|
+
xl: spacing.xl
|
|
149
|
+
},
|
|
150
|
+
animation: {
|
|
151
|
+
duration: "1.4s",
|
|
152
|
+
timing: "ease-in-out"
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
// src/styles/ts/breakpoints.ts
|
|
157
|
+
var breakpoints = {
|
|
158
|
+
mobile: 0,
|
|
159
|
+
// ~767
|
|
160
|
+
tablet: 768,
|
|
161
|
+
// 768 ~ 1023
|
|
162
|
+
laptop: 1024,
|
|
163
|
+
// 1024 ~ 1439
|
|
164
|
+
desktop: 1440
|
|
165
|
+
// 1440+
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// src/styles/ts/z-index.ts
|
|
169
|
+
var zIndex = {
|
|
170
|
+
loading: 9999,
|
|
171
|
+
modal: 1e4,
|
|
172
|
+
toast: 10001
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
// src/styles/ts/a11y.ts
|
|
176
|
+
var a11y = {
|
|
177
|
+
focusRing: "0 0 0 3px rgba(0, 0, 0, 0.15)",
|
|
178
|
+
focusRingError: "0 0 0 3px rgba(239, 68, 68, 0.15)",
|
|
179
|
+
focusRingSuccess: "0 0 0 3px rgba(16, 185, 129, 0.15)",
|
|
180
|
+
tapMinSize: "44px"
|
|
181
|
+
};
|
|
182
|
+
|
|
9
183
|
// src/utils/cn.ts
|
|
10
184
|
var cn = (...classes) => {
|
|
11
185
|
const classNames = [];
|
|
@@ -90,6 +264,7 @@ function useFocusTrap(containerRef, isActive) {
|
|
|
90
264
|
}
|
|
91
265
|
var Card = ({
|
|
92
266
|
heading,
|
|
267
|
+
headingAs: HeadingTag = "h3",
|
|
93
268
|
shadow = "sm",
|
|
94
269
|
padding = "md",
|
|
95
270
|
bordered = false,
|
|
@@ -105,7 +280,7 @@ var Card = ({
|
|
|
105
280
|
className
|
|
106
281
|
);
|
|
107
282
|
return /* @__PURE__ */ jsxs("div", { className: cardClassName, ...props, children: [
|
|
108
|
-
heading ? /* @__PURE__ */ jsx(
|
|
283
|
+
heading ? /* @__PURE__ */ jsx(HeadingTag, { className: "card_title", children: heading }) : null,
|
|
109
284
|
/* @__PURE__ */ jsx("div", { className: "card_body", children })
|
|
110
285
|
] });
|
|
111
286
|
};
|
|
@@ -431,11 +606,13 @@ Checkbox.displayName = "Checkbox";
|
|
|
431
606
|
var FileInput = ({
|
|
432
607
|
label = "Choose file",
|
|
433
608
|
onFiles,
|
|
609
|
+
helperText,
|
|
434
610
|
className,
|
|
435
611
|
disabled,
|
|
436
612
|
...props
|
|
437
613
|
}) => {
|
|
438
614
|
const inputId = React7.useId();
|
|
615
|
+
const helperId = React7.useId();
|
|
439
616
|
const rootClassName = [
|
|
440
617
|
"file_input",
|
|
441
618
|
disabled && "file_input_disabled",
|
|
@@ -449,11 +626,13 @@ var FileInput = ({
|
|
|
449
626
|
type: "file",
|
|
450
627
|
className: "file_input_control",
|
|
451
628
|
disabled,
|
|
629
|
+
"aria-describedby": helperText ? helperId : void 0,
|
|
452
630
|
onChange: (e) => onFiles?.(e.currentTarget.files),
|
|
453
631
|
...props
|
|
454
632
|
}
|
|
455
633
|
),
|
|
456
|
-
/* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label })
|
|
634
|
+
/* @__PURE__ */ jsx("label", { htmlFor: inputId, className: "file_input_label", children: label }),
|
|
635
|
+
helperText && /* @__PURE__ */ jsx("span", { id: helperId, className: "file_input_helper", children: helperText })
|
|
457
636
|
] });
|
|
458
637
|
};
|
|
459
638
|
var Radio = React7.forwardRef(
|
|
@@ -823,9 +1002,12 @@ var DatePicker = ({
|
|
|
823
1002
|
width,
|
|
824
1003
|
yearLabel = "Year",
|
|
825
1004
|
monthLabel = "Month",
|
|
826
|
-
dayLabel = "Day"
|
|
1005
|
+
dayLabel = "Day",
|
|
1006
|
+
minDateSrFormat = "Minimum date: {date}",
|
|
1007
|
+
selectableRangeUntilTodaySrText = "Selectable up to today"
|
|
827
1008
|
}) => {
|
|
828
1009
|
const groupId = React7.useId();
|
|
1010
|
+
const constraintId = React7.useId();
|
|
829
1011
|
const today = /* @__PURE__ */ new Date();
|
|
830
1012
|
const todayYear = today.getFullYear();
|
|
831
1013
|
const todayMonth = today.getMonth() + 1;
|
|
@@ -852,14 +1034,20 @@ var DatePicker = ({
|
|
|
852
1034
|
};
|
|
853
1035
|
const containerStyle = width ? { width: normalizeWidth(width) } : void 0;
|
|
854
1036
|
const rootClassName = cn("date_picker", { date_picker_full_width: fullWidth && !width });
|
|
1037
|
+
const constraintParts = [];
|
|
1038
|
+
if (minDate) constraintParts.push(minDateSrFormat.replace("{date}", minDate));
|
|
1039
|
+
if (selectableRange === "until-today") constraintParts.push(selectableRangeUntilTodaySrText);
|
|
1040
|
+
const constraintDesc = constraintParts.join(". ");
|
|
855
1041
|
return /* @__PURE__ */ jsxs("div", { className: rootClassName, style: containerStyle, children: [
|
|
856
1042
|
label && /* @__PURE__ */ jsx("label", { className: "date_picker_label", id: groupId, children: label }),
|
|
1043
|
+
constraintDesc && /* @__PURE__ */ jsx("span", { id: constraintId, className: "date_picker_sr_only", children: constraintDesc }),
|
|
857
1044
|
/* @__PURE__ */ jsxs(
|
|
858
1045
|
"div",
|
|
859
1046
|
{
|
|
860
1047
|
className: "date_picker_fields",
|
|
861
1048
|
role: "group",
|
|
862
1049
|
"aria-labelledby": label ? groupId : void 0,
|
|
1050
|
+
"aria-describedby": constraintDesc ? constraintId : void 0,
|
|
863
1051
|
children: [
|
|
864
1052
|
/* @__PURE__ */ jsxs(
|
|
865
1053
|
"select",
|
|
@@ -953,6 +1141,7 @@ var Pagination = ({ page, totalPages, onChange, prevLabel = "Previous page", nex
|
|
|
953
1141
|
/* @__PURE__ */ jsx(
|
|
954
1142
|
"button",
|
|
955
1143
|
{
|
|
1144
|
+
type: "button",
|
|
956
1145
|
className: "pagination_item",
|
|
957
1146
|
onClick: () => onChange(page - 1),
|
|
958
1147
|
disabled: prevDisabled,
|
|
@@ -983,6 +1172,7 @@ var Pagination = ({ page, totalPages, onChange, prevLabel = "Previous page", nex
|
|
|
983
1172
|
/* @__PURE__ */ jsx(
|
|
984
1173
|
"button",
|
|
985
1174
|
{
|
|
1175
|
+
type: "button",
|
|
986
1176
|
className: "pagination_item",
|
|
987
1177
|
onClick: () => onChange(page + 1),
|
|
988
1178
|
disabled: nextDisabled,
|
|
@@ -1065,4 +1255,4 @@ var Modal = ({
|
|
|
1065
1255
|
);
|
|
1066
1256
|
};
|
|
1067
1257
|
|
|
1068
|
-
export { AlertProvider, Button, Card, Checkbox, DatePicker, FileInput, Modal, Pagination, Radio, Select, Spinner, Switch, TextField, ToastProvider, TopLoading, useAlert, useToast };
|
|
1258
|
+
export { AlertProvider, Button, Card, Checkbox, DatePicker, FileInput, Modal, Pagination, Radio, Select, Spinner, Switch, TextField, ToastProvider, TopLoading, a11y, breakpoints, colors, motion, radius, shadows, skeleton, spacing, typography, useAlert, useToast, zIndex };
|
package/dist/next.css
CHANGED
package/dist/next.js
CHANGED
|
@@ -94,6 +94,7 @@ var Sidebar = ({
|
|
|
94
94
|
"sidebar_chevron",
|
|
95
95
|
open && "sidebar_chevron_open"
|
|
96
96
|
].filter(Boolean).join(" ");
|
|
97
|
+
const subId = `sidebar_sub_${item.id}`;
|
|
97
98
|
return /* @__PURE__ */ jsxs("div", { className: "sidebar_group", children: [
|
|
98
99
|
/* @__PURE__ */ jsxs(
|
|
99
100
|
"button",
|
|
@@ -101,6 +102,7 @@ var Sidebar = ({
|
|
|
101
102
|
type: "button",
|
|
102
103
|
className: "sidebar_item",
|
|
103
104
|
"aria-expanded": open,
|
|
105
|
+
"aria-controls": subId,
|
|
104
106
|
onClick: () => toggleGroup(item.id),
|
|
105
107
|
children: [
|
|
106
108
|
/* @__PURE__ */ jsxs("div", { className: "sidebar_item_left", children: [
|
|
@@ -117,7 +119,7 @@ var Sidebar = ({
|
|
|
117
119
|
]
|
|
118
120
|
}
|
|
119
121
|
),
|
|
120
|
-
/* @__PURE__ */ jsx("div", { className: subClassName, children: item.children.map((child) => {
|
|
122
|
+
/* @__PURE__ */ jsx("div", { id: subId, className: subClassName, children: item.children.map((child) => {
|
|
121
123
|
const active2 = isActive(
|
|
122
124
|
child.href
|
|
123
125
|
);
|
|
@@ -131,6 +133,7 @@ var Sidebar = ({
|
|
|
131
133
|
href: child.href,
|
|
132
134
|
className: subItemClassName,
|
|
133
135
|
"aria-current": active2 ? "page" : void 0,
|
|
136
|
+
tabIndex: open ? void 0 : -1,
|
|
134
137
|
onClick: () => onItemSelect?.(
|
|
135
138
|
child.href
|
|
136
139
|
),
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
@use
|
|
1
|
+
// Standalone skeleton tokens β no external @use so consumers can import
|
|
2
|
+
// this file directly without needing the design system's src/ in their loadPaths.
|
|
2
3
|
|
|
3
|
-
$color_skeleton_base:
|
|
4
|
-
$color_skeleton_wave:
|
|
5
|
-
$color_skeleton_highlight:
|
|
4
|
+
$color_skeleton_base: #F3F3F3;
|
|
5
|
+
$color_skeleton_wave: #f0f0f0;
|
|
6
|
+
$color_skeleton_highlight: #fafafa;
|
|
6
7
|
|
|
7
8
|
$skeleton_gradient: linear-gradient(
|
|
8
9
|
90deg,
|
|
@@ -11,15 +12,15 @@ $skeleton_gradient: linear-gradient(
|
|
|
11
12
|
$color_skeleton_wave 63%
|
|
12
13
|
);
|
|
13
14
|
|
|
14
|
-
$skeleton_radius_sm:
|
|
15
|
-
$skeleton_radius_md:
|
|
16
|
-
$skeleton_radius_lg:
|
|
15
|
+
$skeleton_radius_sm: 6px;
|
|
16
|
+
$skeleton_radius_md: 8px;
|
|
17
|
+
$skeleton_radius_lg: 12px;
|
|
17
18
|
|
|
18
|
-
$skeleton_height_xs:
|
|
19
|
-
$skeleton_height_sm:
|
|
20
|
-
$skeleton_height_md:
|
|
21
|
-
$skeleton_height_lg:
|
|
22
|
-
$skeleton_height_xl:
|
|
19
|
+
$skeleton_height_xs: 0.25rem; // 4px
|
|
20
|
+
$skeleton_height_sm: 0.5rem; // 8px
|
|
21
|
+
$skeleton_height_md: 0.75rem; // 12px
|
|
22
|
+
$skeleton_height_lg: 1rem; // 16px
|
|
23
|
+
$skeleton_height_xl: 1.25rem; // 20px
|
|
23
24
|
|
|
24
25
|
$skeleton_animation_duration: 1.4s;
|
|
25
26
|
$skeleton_animation_timing: ease-in-out;
|
|
@@ -48,13 +49,13 @@ $skeleton_animation_timing: ease-in-out;
|
|
|
48
49
|
@include skeleton(100%, $skeleton_height_xl);
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
@mixin skeleton_avatar($size:
|
|
52
|
+
@mixin skeleton_avatar($size: 2.5rem) {
|
|
52
53
|
@include skeleton($size, $size, $skeleton_radius_lg);
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
@mixin skeleton_rect(
|
|
56
57
|
$width: 100%,
|
|
57
|
-
$height:
|
|
58
|
+
$height: 5rem
|
|
58
59
|
) {
|
|
59
60
|
@include skeleton($width, $height, $skeleton_radius_md);
|
|
60
61
|
}
|
|
@@ -66,4 +67,4 @@ $skeleton_animation_timing: ease-in-out;
|
|
|
66
67
|
100% {
|
|
67
68
|
background-position: 0 0;
|
|
68
69
|
}
|
|
69
|
-
}
|
|
70
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--bt-color-primary: #000000;--bt-color-primary-hover: #333333;--bt-color-background: #ffffff;--bt-color-background-secondary: #fafafa;--bt-color-background-neutral: #F3F3F3;--bt-color-background-muted: #f0f0f0;--bt-color-text-primary: #1a1a1a;--bt-color-text-secondary: #666666;--bt-color-text-tertiary: #999999;--bt-text-inverse: #ffffff;--bt-text-disabled: #9ca3af;--bt-color-border: #e5e5e5;--bt-color-border-light: rgba(0, 0, 0, 0.08);--bt-color-success: #10b981;--bt-color-error: #ef4444;--bt-color-warning: #f59e0b;--bt-color-info: #3b82f6;--bt-color-overlay: rgba(0, 0, 0, 0.5);--bt-spacing-xs: 0.25rem;--bt-spacing-sm: 0.5rem;--bt-spacing-md: 0.75rem;--bt-spacing-lg: 1rem;--bt-spacing-xl: 1.25rem;--bt-spacing-2xl: 1.5rem;--bt-spacing-3xl: 1.75rem;--bt-font-family: Pretendard, sans-serif;--bt-font-size-xs: 0.75rem;--bt-font-size-sm: 0.875rem;--bt-font-size-base: 0.9375rem;--bt-font-size-md: 1rem;--bt-font-size-lg: 1.125rem;--bt-font-size-xl: 1.25rem;--bt-font-weight-regular: 400;--bt-font-weight-medium: 500;--bt-font-weight-semibold: 600;--bt-font-weight-bold: 700;--bt-line-height-normal: 1.5;--bt-radius-sm: 6px;--bt-radius-md: 8px;--bt-radius-lg: 12px;--bt-radius-full: 9999px;--bt-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);--bt-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);--bt-shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);--bt-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);--bt-transition-fast: 0.1s ease-in-out;--bt-transition-base: 0.2s ease-in-out;--bt-transition-slow: 0.3s ease-in-out;--bt-z-modal: 10000;--bt-z-toast: 10001}.bt-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);border-radius:var(--bt-radius-md);border:none;cursor:pointer;font-family:var(--bt-font-family);font-weight:var(--bt-font-weight-medium);transition:background var(--bt-transition-base),color var(--bt-transition-base),box-shadow var(--bt-transition-base),transform var(--bt-transition-base)}.bt-button:disabled{cursor:not-allowed;opacity:.6}.bt-button--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-button--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-button--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-button--primary{background:var(--bt-color-primary);color:var(--bt-color-background)}.bt-button--primary:hover:not(:disabled){background:var(--bt-color-primary-hover)}.bt-button--primary:active:not(:disabled){transform:scale(0.98)}.bt-button--secondary{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);color:var(--bt-color-text-primary)}.bt-button--secondary:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-button--secondary:active:not(:disabled){transform:scale(0.98)}.bt-button--ghost{background:rgba(0,0,0,0);color:var(--bt-color-text-primary)}.bt-button--ghost:hover:not(:disabled){background:rgba(0,0,0,.05)}.bt-button--ghost:active:not(:disabled){transform:scale(0.96)}.bt-button--danger{background:var(--bt-color-error);color:var(--bt-color-background)}.bt-button--danger:hover:not(:disabled){background:rgb(235.7842364532, 30.4157635468, 30.4157635468)}.bt-button--danger:active:not(:disabled){transform:scale(0.98)}.bt-button--full-width{width:100%}.bt-text-field{display:flex;flex-direction:column}.bt-text-field--full-width{width:100%}.bt-text-field__label{margin-bottom:var(--bt-spacing-xs);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal)}.bt-text-field__wrap{position:relative;display:inline-flex;width:100%;align-items:center}.bt-text-field__input{width:100%;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary);background:var(--bt-color-background);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base)}.bt-text-field__input::placeholder{color:var(--bt-color-text-tertiary)}.bt-text-field__input:disabled{cursor:not-allowed;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary);opacity:.7}.bt-text-field__input--outline{border:1px solid var(--bt-color-border)}.bt-text-field__input--outline:hover:not(:disabled){border-color:var(--bt-color-border-light)}.bt-text-field__input--outline:focus-visible{outline:none;border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-text-field__input--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-text-field__input--filled:focus-visible{outline:none;border-color:var(--bt-color-primary);background:var(--bt-color-background);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-text-field__input--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-text-field__input--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-text-field__input--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-text-field__input--error{border-color:var(--bt-color-error) !important;box-shadow:0 0 0 3px rgba(239,68,68,.15) !important}.bt-text-field__input--success{border-color:var(--bt-color-success) !important;box-shadow:0 0 0 3px rgba(16,185,129,.15) !important}.bt-text-field__helper{margin-top:var(--bt-spacing-xs);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary)}.bt-text-field__helper--error{color:var(--bt-color-error)}.bt-text-field__helper--success{color:var(--bt-color-success)}.bt-text-field__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;color:var(--bt-color-text-secondary)}.bt-text-field__icon--left{left:var(--bt-spacing-md)}.bt-text-field__icon--right{right:var(--bt-spacing-md)}.bt-checkbox{display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none;position:relative}.bt-checkbox__input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.bt-checkbox__box{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);display:inline-block;position:relative}.bt-checkbox__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-checkbox--sm .bt-checkbox__box{width:1rem;height:1rem}.bt-checkbox--sm .bt-checkbox__label{font-size:var(--bt-font-size-sm)}.bt-checkbox--lg .bt-checkbox__box{width:1.25rem;height:1.25rem}.bt-checkbox--lg .bt-checkbox__label{font-size:var(--bt-font-size-md)}.bt-checkbox__input:focus-visible+.bt-checkbox__box{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-checkbox__input:disabled+.bt-checkbox__box,.bt-checkbox__input:disabled~.bt-checkbox__label{opacity:.6;cursor:not-allowed}.bt-checkbox__input:checked+.bt-checkbox__box{background:var(--bt-color-primary);border-color:var(--bt-color-primary)}.bt-checkbox__input:checked+.bt-checkbox__box::after{content:"";position:absolute;left:50%;top:50%;width:.28rem;height:.55rem;border:2px solid var(--bt-color-background);border-top:0;border-left:0;transform:translate(-50%, -58%) rotate(45deg)}.bt-radio{position:relative;display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none}.bt-radio__input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}.bt-radio__dot{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-full);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);position:relative;display:inline-block}.bt-radio__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-radio--sm .bt-radio__dot{width:1rem;height:1rem}.bt-radio--sm .bt-radio__label{font-size:var(--bt-font-size-sm)}.bt-radio--lg .bt-radio__dot{width:1.25rem;height:1.25rem}.bt-radio--lg .bt-radio__label{font-size:var(--bt-font-size-md)}.bt-radio__input:focus-visible+.bt-radio__dot{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-radio__input:checked+.bt-radio__dot{border-color:var(--bt-color-primary)}.bt-radio__input:checked+.bt-radio__dot::after{content:"";position:absolute;left:50%;top:50%;width:60%;height:60%;transform:translate(-50%, -50%);background:var(--bt-color-primary);border-radius:9999px}.bt-radio__input:disabled+.bt-radio__dot,.bt-radio__input:disabled~.bt-radio__label{opacity:.6;cursor:not-allowed}.bt-switch{position:relative;display:inline-flex;align-items:center;width:40px;height:22px;padding:2px;border-radius:var(--bt-radius-full);background:var(--bt-color-border);transition:background var(--bt-transition-base);cursor:pointer;border:none}.bt-switch__thumb{width:18px;height:18px;background:var(--bt-color-background);border-radius:var(--bt-radius-full);transition:transform var(--bt-transition-base);transform:translateX(0)}.bt-switch--on{background:var(--bt-color-primary)}.bt-switch--on .bt-switch__thumb{transform:translateX(18px)}.bt-switch--sm{width:34px;height:18px}.bt-switch--sm .bt-switch__thumb{width:14px;height:14px}.bt-switch--sm.bt-switch--on .bt-switch__thumb{transform:translateX(16px)}.bt-switch--lg{width:48px;height:26px}.bt-switch--lg .bt-switch__thumb{width:22px;height:22px}.bt-switch--lg.bt-switch--on .bt-switch__thumb{transform:translateX(22px)}.bt-switch--disabled{opacity:.6;cursor:not-allowed}.bt-select{position:relative;display:inline-flex;flex-direction:column;width:100%;gap:var(--bt-spacing-xs);font-family:var(--bt-font-family)}.bt-select__label{font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-select__control{width:100%;display:inline-flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);cursor:pointer;color:var(--bt-color-text-primary);background:var(--bt-color-background);border-radius:var(--bt-radius-md);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);border:none;text-align:left}.bt-select__control:disabled,.bt-select__control.is-disabled{cursor:not-allowed;opacity:.7;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary)}.bt-select__control--outline{border:1px solid var(--bt-color-border)}.bt-select__control--outline:hover:not(.is-disabled){border-color:var(--bt-color-border-light)}.bt-select__control--outline.is-open{border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-select__control--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-select__control--filled.is-open{background:var(--bt-color-background);border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-select__control--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-select__control--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-select__control--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-select__value{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bt-select__placeholder{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--bt-color-text-tertiary)}.bt-select__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--bt-color-text-secondary);transition:transform var(--bt-transition-base)}.bt-select__icon.is-open{transform:rotate(180deg)}.bt-select__list{position:absolute;z-index:var(--bt-z-modal);top:100%;left:0;width:100%;min-width:100%;box-sizing:border-box;margin-top:var(--bt-spacing-xs);background:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);box-shadow:var(--bt-shadow-md);max-height:18rem;overflow-y:auto;overflow-x:hidden;padding:var(--bt-spacing-xs) 0;list-style:none;margin:var(--bt-spacing-xs) 0 0 0}.bt-select__list--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bt-spacing-xs)}.bt-select__option{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);cursor:pointer;color:var(--bt-color-text-primary);background:rgba(0,0,0,0);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal)}.bt-select__option:hover,.bt-select__option.is-active{background:var(--bt-color-background-secondary)}.bt-select__option.is-selected{font-weight:var(--bt-font-weight-medium)}.bt-select__option.is-disabled{cursor:not-allowed;color:var(--bt-color-text-tertiary)}.bt-modal{position:fixed;inset:0;display:none;place-items:center;background:var(--bt-color-overlay);z-index:var(--bt-z-modal)}.bt-modal.is-open{display:grid}.bt-modal__panel{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-shadow-lg);max-width:calc(100% - 32px);overflow:hidden}.bt-modal__header{padding:var(--bt-spacing-lg);border-bottom:1px solid var(--bt-color-border);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3}.bt-modal__body{padding:var(--bt-spacing-lg)}.bt-modal__footer{padding:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border);display:flex;justify-content:flex-end;gap:var(--bt-spacing-sm)}@keyframes bt-alert-fade-in{from{opacity:0}to{opacity:1}}@keyframes bt-alert-slide-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.bt-alert__overlay{position:fixed;inset:0;background:var(--bt-color-overlay);display:none;align-items:center;justify-content:center;z-index:var(--bt-z-modal);animation:bt-alert-fade-in var(--bt-transition-base)}.bt-alert__overlay.is-open{display:flex}.bt-alert__modal{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);min-width:320px;max-width:480px;box-shadow:var(--bt-shadow-xl);animation:bt-alert-slide-up var(--bt-transition-slow);overflow:hidden}.bt-alert__title{font-size:var(--bt-font-size-lg);font-weight:var(--bt-font-weight-semibold);line-height:var(--bt-line-height-normal);color:var(--bt-color-info);padding:var(--bt-spacing-md) var(--bt-spacing-xl) var(--bt-spacing-xs)}.bt-alert__message{font-size:var(--bt-font-size-base);color:var(--bt-color-text-secondary);padding:var(--bt-spacing-xl);line-height:1.75}.bt-alert__actions{display:flex;gap:var(--bt-spacing-sm);align-items:center;padding:0 var(--bt-spacing-xl) var(--bt-spacing-xl);justify-content:flex-end}.bt-alert--info .bt-alert__title{color:var(--bt-color-info)}.bt-alert--success .bt-alert__title{color:var(--bt-color-success)}.bt-alert--warning .bt-alert__title{color:var(--bt-color-warning)}.bt-alert--error .bt-alert__title{color:var(--bt-color-error)}.bt-card{background:var(--bt-color-background);border-radius:var(--bt-radius-lg)}.bt-card--bordered{border:1px solid var(--bt-color-border)}.bt-card--shadow-sm{box-shadow:var(--bt-shadow-sm)}.bt-card--shadow-md{box-shadow:var(--bt-shadow-md)}.bt-card--shadow-lg{box-shadow:var(--bt-shadow-lg)}.bt-card--p-sm{padding:var(--bt-spacing-sm)}.bt-card--p-md{padding:var(--bt-spacing-lg)}.bt-card--p-lg{padding:var(--bt-spacing-2xl)}.bt-card__title{font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3;margin-bottom:var(--bt-spacing-md);color:var(--bt-color-text-primary)}@keyframes bt-spinner-spin{to{transform:rotate(360deg)}}.bt-spinner{display:inline-block;box-sizing:border-box;border-radius:50%;border:2px solid var(--bt-color-border);border-top-color:var(--bt-color-primary);animation:bt-spinner-spin .8s linear infinite}.bt-spinner--sm{width:16px;height:16px}.bt-spinner--md{width:24px;height:24px}.bt-spinner--lg{width:32px;height:32px}.bt-spinner--xl{width:48px;height:48px}.bt-pagination{display:flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-3xl)}.bt-pagination__item{border:1px solid var(--bt-color-border);background:var(--bt-color-background);border-radius:var(--bt-radius-md);padding:6px 10px;min-width:36px;font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-primary);cursor:pointer;transition:background var(--bt-transition-base),border-color var(--bt-transition-base)}.bt-pagination__item:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-pagination__item:disabled{opacity:.5;cursor:not-allowed}.bt-pagination__pages{display:flex;align-items:center;gap:6px}.bt-pagination__page{border:0;background:rgba(0,0,0,0);min-width:36px;height:36px;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary);cursor:pointer;transition:background var(--bt-transition-base),color var(--bt-transition-base)}.bt-pagination__page:hover{background:var(--bt-color-background-secondary);color:var(--bt-color-text-primary)}.bt-pagination__page--active{color:var(--bt-color-text-primary);font-weight:var(--bt-font-weight-semibold)}.bt-pagination__ellipsis{min-width:20px;text-align:center;font-size:var(--bt-font-size-sm);color:var(--bt-color-text-tertiary)}.bt-date-picker{display:flex;flex-direction:column;gap:var(--bt-spacing-xs)}.bt-date-picker__label{color:var(--bt-color-text-primary);margin-bottom:var(--bt-spacing-xs);font-weight:var(--bt-font-weight-medium);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal)}.bt-date-picker__label-required{margin-left:var(--bt-spacing-xs);color:var(--bt-color-error)}.bt-date-picker__fields{display:flex;gap:var(--bt-spacing-sm)}.bt-date-picker__select{min-width:88px;height:44px;padding:0 var(--bt-spacing-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);background-color:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);cursor:pointer;transition:border-color var(--bt-transition-fast),box-shadow var(--bt-transition-fast),background-color var(--bt-transition-fast);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--bt-color-text-secondary) 50%),linear-gradient(135deg, var(--bt-color-text-secondary) 50%, transparent 50%);background-position:calc(100% - 16px) calc(50% - 3px),calc(100% - 11px) calc(50% - 3px);background-size:5px 5px;background-repeat:no-repeat}.bt-date-picker__select:hover:not(:disabled){border-color:var(--bt-color-primary);background-color:var(--bt-color-background-secondary)}.bt-date-picker__select:focus-visible{outline:none;border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-date-picker__select:disabled{cursor:not-allowed;color:var(--bt-text-disabled);background-color:var(--bt-color-background-secondary);border-color:var(--bt-color-border-light)}.bt-date-picker--full-width{width:100%}.bt-date-picker--full-width .bt-date-picker__fields{width:100%}.bt-date-picker--full-width .bt-date-picker__select{flex:1;min-width:0}.bt-file-input{position:relative;display:inline-flex;align-items:center}.bt-file-input:hover .bt-file-input__label{border-color:var(--bt-color-border-light)}.bt-file-input__control{position:absolute;inset:0;opacity:0;cursor:pointer}.bt-file-input__label{border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);background:var(--bt-color-background);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-file-input__control:focus-visible+.bt-file-input__label{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-file-input--disabled{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__control{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__label{opacity:.6;cursor:not-allowed}.bt-file-input--disabled:hover .bt-file-input__label{border-color:var(--bt-color-border)}.bt-toast{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);border-radius:var(--bt-radius-md);box-shadow:var(--bt-shadow-lg)}.bt-hidden{display:none !important}.bt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}
|
|
1
|
+
@keyframes skeleton_loading{0%{background-position:100% 0}100%{background-position:0 0}}:root{--bt-color-primary: #000000;--bt-color-primary-hover: #333333;--bt-color-background: #ffffff;--bt-color-background-secondary: #fafafa;--bt-color-background-neutral: #F3F3F3;--bt-color-background-muted: #f0f0f0;--bt-color-text-primary: #1a1a1a;--bt-color-text-secondary: #666666;--bt-color-text-tertiary: #999999;--bt-text-inverse: #ffffff;--bt-text-disabled: #9ca3af;--bt-color-border: #e5e5e5;--bt-color-border-light: rgba(0, 0, 0, 0.08);--bt-color-success: #10b981;--bt-color-error: #ef4444;--bt-color-warning: #f59e0b;--bt-color-info: #3b82f6;--bt-color-overlay: rgba(0, 0, 0, 0.5);--bt-spacing-xs: 0.25rem;--bt-spacing-sm: 0.5rem;--bt-spacing-md: 0.75rem;--bt-spacing-lg: 1rem;--bt-spacing-xl: 1.25rem;--bt-spacing-2xl: 1.5rem;--bt-spacing-3xl: 1.75rem;--bt-font-family: Pretendard, sans-serif;--bt-font-size-xs: 0.75rem;--bt-font-size-sm: 0.875rem;--bt-font-size-base: 0.9375rem;--bt-font-size-md: 1rem;--bt-font-size-lg: 1.125rem;--bt-font-size-xl: 1.25rem;--bt-font-weight-regular: 400;--bt-font-weight-medium: 500;--bt-font-weight-semibold: 600;--bt-font-weight-bold: 700;--bt-line-height-normal: 1.5;--bt-radius-sm: 6px;--bt-radius-md: 8px;--bt-radius-lg: 12px;--bt-radius-full: 9999px;--bt-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);--bt-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);--bt-shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);--bt-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);--bt-transition-fast: 0.1s ease-in-out;--bt-transition-base: 0.2s ease-in-out;--bt-transition-slow: 0.3s ease-in-out;--bt-z-modal: 10000;--bt-z-toast: 10001}.bt-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);border-radius:var(--bt-radius-md);border:none;cursor:pointer;font-family:var(--bt-font-family);font-weight:var(--bt-font-weight-medium);transition:background var(--bt-transition-base),color var(--bt-transition-base),box-shadow var(--bt-transition-base),transform var(--bt-transition-base)}.bt-button:disabled{cursor:not-allowed;opacity:.6}.bt-button--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-button--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-button--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-button--primary{background:var(--bt-color-primary);color:var(--bt-color-background)}.bt-button--primary:hover:not(:disabled){background:var(--bt-color-primary-hover)}.bt-button--primary:active:not(:disabled){transform:scale(0.98)}.bt-button--secondary{background:rgba(0,0,0,0);border:1px solid var(--bt-color-border);color:var(--bt-color-text-primary)}.bt-button--secondary:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-button--secondary:active:not(:disabled){transform:scale(0.98)}.bt-button--ghost{background:rgba(0,0,0,0);color:var(--bt-color-text-primary)}.bt-button--ghost:hover:not(:disabled){background:rgba(0,0,0,.05)}.bt-button--ghost:active:not(:disabled){transform:scale(0.96)}.bt-button--danger{background:var(--bt-color-error);color:var(--bt-color-background)}.bt-button--danger:hover:not(:disabled){background:rgb(235.7842364532, 30.4157635468, 30.4157635468)}.bt-button--danger:active:not(:disabled){transform:scale(0.98)}.bt-button--full-width{width:100%}.bt-text-field{display:flex;flex-direction:column}.bt-text-field--full-width{width:100%}.bt-text-field__label{margin-bottom:var(--bt-spacing-xs);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal)}.bt-text-field__wrap{position:relative;display:inline-flex;width:100%;align-items:center}.bt-text-field__input{width:100%;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary);background:var(--bt-color-background);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base)}.bt-text-field__input::placeholder{color:var(--bt-color-text-tertiary)}.bt-text-field__input:disabled{cursor:not-allowed;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary);opacity:.7}.bt-text-field__input--outline{border:1px solid var(--bt-color-border)}.bt-text-field__input--outline:hover:not(:disabled){border-color:var(--bt-color-border-light)}.bt-text-field__input--outline:focus-visible{outline:none;border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-text-field__input--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-text-field__input--filled:focus-visible{outline:none;border-color:var(--bt-color-primary);background:var(--bt-color-background);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-text-field__input--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-text-field__input--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-text-field__input--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-text-field__input--error{border-color:var(--bt-color-error) !important;box-shadow:0 0 0 3px rgba(239,68,68,.15) !important}.bt-text-field__input--success{border-color:var(--bt-color-success) !important;box-shadow:0 0 0 3px rgba(16,185,129,.15) !important}.bt-text-field__helper{margin-top:var(--bt-spacing-xs);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary)}.bt-text-field__helper--error{color:var(--bt-color-error)}.bt-text-field__helper--success{color:var(--bt-color-success)}.bt-text-field__icon{position:absolute;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;color:var(--bt-color-text-secondary)}.bt-text-field__icon--left{left:var(--bt-spacing-md)}.bt-text-field__icon--right{right:var(--bt-spacing-md)}.bt-checkbox{display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none;position:relative}.bt-checkbox__input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.bt-checkbox__box{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);display:inline-block;position:relative}.bt-checkbox__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-checkbox--sm .bt-checkbox__box{width:1rem;height:1rem}.bt-checkbox--sm .bt-checkbox__label{font-size:var(--bt-font-size-sm)}.bt-checkbox--lg .bt-checkbox__box{width:1.25rem;height:1.25rem}.bt-checkbox--lg .bt-checkbox__label{font-size:var(--bt-font-size-md)}.bt-checkbox__input:focus-visible+.bt-checkbox__box{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-checkbox__input:disabled+.bt-checkbox__box,.bt-checkbox__input:disabled~.bt-checkbox__label{opacity:.6;cursor:not-allowed}.bt-checkbox__input:checked+.bt-checkbox__box{background:var(--bt-color-primary);border-color:var(--bt-color-primary)}.bt-checkbox__input:checked+.bt-checkbox__box::after{content:"";position:absolute;left:50%;top:50%;width:.28rem;height:.55rem;border:2px solid var(--bt-color-background);border-top:0;border-left:0;transform:translate(-50%, -58%) rotate(45deg)}.bt-radio{position:relative;display:inline-flex;align-items:center;gap:var(--bt-spacing-sm);cursor:pointer;user-select:none}.bt-radio__input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0}.bt-radio__dot{width:1.125rem;height:1.125rem;box-sizing:border-box;border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-full);background:var(--bt-color-background);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base);position:relative;display:inline-block}.bt-radio__label{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-radio--sm .bt-radio__dot{width:1rem;height:1rem}.bt-radio--sm .bt-radio__label{font-size:var(--bt-font-size-sm)}.bt-radio--lg .bt-radio__dot{width:1.25rem;height:1.25rem}.bt-radio--lg .bt-radio__label{font-size:var(--bt-font-size-md)}.bt-radio__input:focus-visible+.bt-radio__dot{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-radio__input:checked+.bt-radio__dot{border-color:var(--bt-color-primary)}.bt-radio__input:checked+.bt-radio__dot::after{content:"";position:absolute;left:50%;top:50%;width:60%;height:60%;transform:translate(-50%, -50%);background:var(--bt-color-primary);border-radius:9999px}.bt-radio__input:disabled+.bt-radio__dot,.bt-radio__input:disabled~.bt-radio__label{opacity:.6;cursor:not-allowed}.bt-switch{position:relative;display:inline-flex;align-items:center;width:40px;height:22px;padding:2px;border-radius:var(--bt-radius-full);background:var(--bt-color-border);transition:background var(--bt-transition-base);cursor:pointer;border:none}.bt-switch__thumb{width:18px;height:18px;background:var(--bt-color-background);border-radius:var(--bt-radius-full);transition:transform var(--bt-transition-base);transform:translateX(0)}.bt-switch--on{background:var(--bt-color-primary)}.bt-switch--on .bt-switch__thumb{transform:translateX(18px)}.bt-switch--sm{width:34px;height:18px}.bt-switch--sm .bt-switch__thumb{width:14px;height:14px}.bt-switch--sm.bt-switch--on .bt-switch__thumb{transform:translateX(16px)}.bt-switch--lg{width:48px;height:26px}.bt-switch--lg .bt-switch__thumb{width:22px;height:22px}.bt-switch--lg.bt-switch--on .bt-switch__thumb{transform:translateX(22px)}.bt-switch--disabled{opacity:.6;cursor:not-allowed}.bt-select{position:relative;display:inline-flex;flex-direction:column;width:100%;gap:var(--bt-spacing-xs);font-family:var(--bt-font-family)}.bt-select__label{font-size:var(--bt-font-size-sm);font-weight:var(--bt-font-weight-medium);line-height:var(--bt-line-height-normal);color:var(--bt-color-text-primary)}.bt-select__control{width:100%;display:inline-flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);cursor:pointer;color:var(--bt-color-text-primary);background:var(--bt-color-background);border-radius:var(--bt-radius-md);transition:border-color var(--bt-transition-base),box-shadow var(--bt-transition-base),background var(--bt-transition-base);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal);border:none;text-align:left}.bt-select__control:disabled,.bt-select__control.is-disabled{cursor:not-allowed;opacity:.7;background:var(--bt-color-background-secondary);color:var(--bt-color-text-tertiary)}.bt-select__control--outline{border:1px solid var(--bt-color-border)}.bt-select__control--outline:hover:not(.is-disabled){border-color:var(--bt-color-border-light)}.bt-select__control--outline.is-open{border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-select__control--filled{background:var(--bt-color-background-secondary);border:1px solid rgba(0,0,0,0)}.bt-select__control--filled.is-open{background:var(--bt-color-background);border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-select__control--sm{padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-size:var(--bt-font-size-sm)}.bt-select__control--md{padding:var(--bt-spacing-md) var(--bt-spacing-xl);font-size:var(--bt-font-size-base)}.bt-select__control--lg{padding:var(--bt-spacing-lg) var(--bt-spacing-2xl);font-size:var(--bt-font-size-md)}.bt-select__value{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bt-select__placeholder{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--bt-color-text-tertiary)}.bt-select__icon{display:inline-flex;align-items:center;justify-content:center;color:var(--bt-color-text-secondary);transition:transform var(--bt-transition-base)}.bt-select__icon.is-open{transform:rotate(180deg)}.bt-select__list{position:absolute;z-index:var(--bt-z-modal);top:100%;left:0;width:100%;min-width:100%;box-sizing:border-box;margin-top:var(--bt-spacing-xs);background:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);box-shadow:var(--bt-shadow-md);max-height:18rem;overflow-y:auto;overflow-x:hidden;padding:var(--bt-spacing-xs) 0;list-style:none;margin:var(--bt-spacing-xs) 0 0 0}.bt-select__list--up{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bt-spacing-xs)}.bt-select__option{width:100%;box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:var(--bt-spacing-sm);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);cursor:pointer;color:var(--bt-color-text-primary);background:rgba(0,0,0,0);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);line-height:var(--bt-line-height-normal)}.bt-select__option:hover,.bt-select__option.is-active{background:var(--bt-color-background-secondary)}.bt-select__option.is-selected{font-weight:var(--bt-font-weight-medium)}.bt-select__option.is-disabled{cursor:not-allowed;color:var(--bt-color-text-tertiary)}.bt-modal{position:fixed;inset:0;display:none;place-items:center;background:var(--bt-color-overlay);z-index:var(--bt-z-modal)}.bt-modal.is-open{display:grid}.bt-modal__panel{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);box-shadow:var(--bt-shadow-lg);max-width:calc(100% - 32px);overflow:hidden}.bt-modal__header{padding:var(--bt-spacing-lg);border-bottom:1px solid var(--bt-color-border);color:var(--bt-color-text-primary);font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3}.bt-modal__body{padding:var(--bt-spacing-lg)}.bt-modal__footer{padding:var(--bt-spacing-lg);border-top:1px solid var(--bt-color-border);display:flex;justify-content:flex-end;gap:var(--bt-spacing-sm)}@keyframes bt-alert-fade-in{from{opacity:0}to{opacity:1}}@keyframes bt-alert-slide-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.bt-alert__overlay{position:fixed;inset:0;background:var(--bt-color-overlay);display:none;align-items:center;justify-content:center;z-index:var(--bt-z-modal);animation:bt-alert-fade-in var(--bt-transition-base)}.bt-alert__overlay.is-open{display:flex}.bt-alert__modal{background:var(--bt-color-background);border-radius:var(--bt-radius-lg);min-width:320px;max-width:480px;box-shadow:var(--bt-shadow-xl);animation:bt-alert-slide-up var(--bt-transition-slow);overflow:hidden}.bt-alert__title{font-size:var(--bt-font-size-lg);font-weight:var(--bt-font-weight-semibold);line-height:var(--bt-line-height-normal);color:var(--bt-color-info);padding:var(--bt-spacing-md) var(--bt-spacing-xl) var(--bt-spacing-xs)}.bt-alert__message{font-size:var(--bt-font-size-base);color:var(--bt-color-text-secondary);padding:var(--bt-spacing-xl);line-height:1.75}.bt-alert__actions{display:flex;gap:var(--bt-spacing-sm);align-items:center;padding:0 var(--bt-spacing-xl) var(--bt-spacing-xl);justify-content:flex-end}.bt-alert--info .bt-alert__title{color:var(--bt-color-info)}.bt-alert--success .bt-alert__title{color:var(--bt-color-success)}.bt-alert--warning .bt-alert__title{color:var(--bt-color-warning)}.bt-alert--error .bt-alert__title{color:var(--bt-color-error)}.bt-card{background:var(--bt-color-background);border-radius:var(--bt-radius-lg)}.bt-card--bordered{border:1px solid var(--bt-color-border)}.bt-card--shadow-sm{box-shadow:var(--bt-shadow-sm)}.bt-card--shadow-md{box-shadow:var(--bt-shadow-md)}.bt-card--shadow-lg{box-shadow:var(--bt-shadow-lg)}.bt-card--p-sm{padding:var(--bt-spacing-sm)}.bt-card--p-md{padding:var(--bt-spacing-lg)}.bt-card--p-lg{padding:var(--bt-spacing-2xl)}.bt-card__title{font-size:var(--bt-font-size-xl);font-weight:var(--bt-font-weight-semibold);line-height:1.3;margin-bottom:var(--bt-spacing-md);color:var(--bt-color-text-primary)}@keyframes bt-spinner-spin{to{transform:rotate(360deg)}}.bt-spinner{display:inline-block;box-sizing:border-box;border-radius:50%;border:2px solid var(--bt-color-border);border-top-color:var(--bt-color-primary);animation:bt-spinner-spin .8s linear infinite}.bt-spinner--sm{width:16px;height:16px}.bt-spinner--md{width:24px;height:24px}.bt-spinner--lg{width:32px;height:32px}.bt-spinner--xl{width:48px;height:48px}.bt-pagination{display:flex;align-items:center;justify-content:center;gap:var(--bt-spacing-sm);margin-top:var(--bt-spacing-3xl)}.bt-pagination__item{border:1px solid var(--bt-color-border);background:var(--bt-color-background);border-radius:var(--bt-radius-md);padding:6px 10px;min-width:36px;font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-primary);cursor:pointer;transition:background var(--bt-transition-base),border-color var(--bt-transition-base)}.bt-pagination__item:hover:not(:disabled){background:var(--bt-color-background-secondary)}.bt-pagination__item:disabled{opacity:.5;cursor:not-allowed}.bt-pagination__pages{display:flex;align-items:center;gap:6px}.bt-pagination__page{border:0;background:rgba(0,0,0,0);min-width:36px;height:36px;border-radius:var(--bt-radius-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-sm);color:var(--bt-color-text-secondary);cursor:pointer;transition:background var(--bt-transition-base),color var(--bt-transition-base)}.bt-pagination__page:hover{background:var(--bt-color-background-secondary);color:var(--bt-color-text-primary)}.bt-pagination__page--active{color:var(--bt-color-text-primary);font-weight:var(--bt-font-weight-semibold)}.bt-pagination__ellipsis{min-width:20px;text-align:center;font-size:var(--bt-font-size-sm);color:var(--bt-color-text-tertiary)}.bt-date-picker{display:flex;flex-direction:column;gap:var(--bt-spacing-xs)}.bt-date-picker__label{color:var(--bt-color-text-primary);margin-bottom:var(--bt-spacing-xs);font-weight:var(--bt-font-weight-medium);font-size:var(--bt-font-size-sm);line-height:var(--bt-line-height-normal)}.bt-date-picker__label-required{margin-left:var(--bt-spacing-xs);color:var(--bt-color-error)}.bt-date-picker__fields{display:flex;gap:var(--bt-spacing-sm)}.bt-date-picker__select{min-width:88px;height:44px;padding:0 var(--bt-spacing-md);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);background-color:var(--bt-color-background);border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-sm);cursor:pointer;transition:border-color var(--bt-transition-fast),box-shadow var(--bt-transition-fast),background-color var(--bt-transition-fast);appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--bt-color-text-secondary) 50%),linear-gradient(135deg, var(--bt-color-text-secondary) 50%, transparent 50%);background-position:calc(100% - 16px) calc(50% - 3px),calc(100% - 11px) calc(50% - 3px);background-size:5px 5px;background-repeat:no-repeat}.bt-date-picker__select:hover:not(:disabled){border-color:var(--bt-color-primary);background-color:var(--bt-color-background-secondary)}.bt-date-picker__select:focus-visible{outline:none;border-color:var(--bt-color-primary);box-shadow:0 0 0 3px rgba(0,0,0,.15)}.bt-date-picker__select:disabled{cursor:not-allowed;color:var(--bt-text-disabled);background-color:var(--bt-color-background-secondary);border-color:var(--bt-color-border-light)}.bt-date-picker--full-width{width:100%}.bt-date-picker--full-width .bt-date-picker__fields{width:100%}.bt-date-picker--full-width .bt-date-picker__select{flex:1;min-width:0}.bt-file-input{position:relative;display:inline-flex;align-items:center}.bt-file-input:hover .bt-file-input__label{border-color:var(--bt-color-border-light)}.bt-file-input__control{position:absolute;inset:0;opacity:0;cursor:pointer}.bt-file-input__label{border:1px solid var(--bt-color-border);border-radius:var(--bt-radius-md);background:var(--bt-color-background);padding:var(--bt-spacing-sm) var(--bt-spacing-lg);font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);color:var(--bt-color-text-primary);transition:background var(--bt-transition-base),border-color var(--bt-transition-base),box-shadow var(--bt-transition-base)}.bt-file-input__control:focus-visible+.bt-file-input__label{box-shadow:0 0 0 3px var(--bt-color-border-light);border-color:var(--bt-color-primary)}.bt-file-input--disabled{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__control{cursor:not-allowed}.bt-file-input--disabled .bt-file-input__label{opacity:.6;cursor:not-allowed}.bt-file-input--disabled:hover .bt-file-input__label{border-color:var(--bt-color-border)}.bt-toast{font-family:var(--bt-font-family);font-size:var(--bt-font-size-base);border-radius:var(--bt-radius-md);box-shadow:var(--bt-shadow-lg)}.bt-hidden{display:none !important}.bt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigtablet/design-system",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.22.0",
|
|
4
4
|
"description": "Bigtablet Design System UI Components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
],
|
|
43
43
|
"scripts": {
|
|
44
44
|
"build": "tsup && pnpm run copy:scss && pnpm run build:vanilla",
|
|
45
|
-
"build:vanilla": "
|
|
46
|
-
"copy:scss": "
|
|
45
|
+
"build:vanilla": "sh scripts/build-vanilla.sh",
|
|
46
|
+
"copy:scss": "sh scripts/copy-scss.sh",
|
|
47
47
|
"dev": "tsup --watch",
|
|
48
48
|
"storybook": "storybook dev -p 6006",
|
|
49
49
|
"build:sb": "storybook build",
|
|
@@ -51,10 +51,10 @@
|
|
|
51
51
|
"test:watch": "vitest --project unit",
|
|
52
52
|
"test:coverage": "vitest run --project unit --coverage",
|
|
53
53
|
"chromatic": "npx chromatic --project-token=$CHROMATIC_TOKEN --build-script-name=build:sb",
|
|
54
|
-
"figma:test": "
|
|
55
|
-
"figma:snapshot": "
|
|
56
|
-
"figma:diff": "
|
|
57
|
-
"figma:apply": "
|
|
54
|
+
"figma:test": "tsx scripts/figma-connect.ts",
|
|
55
|
+
"figma:snapshot": "tsx scripts/figma-snapshot.ts",
|
|
56
|
+
"figma:diff": "tsx scripts/figma-diff.ts",
|
|
57
|
+
"figma:apply": "tsx scripts/figma-apply.ts",
|
|
58
58
|
"size": "size-limit",
|
|
59
59
|
"prepare": "husky"
|
|
60
60
|
},
|
|
@@ -106,16 +106,17 @@
|
|
|
106
106
|
"esbuild-sass-plugin": "^3",
|
|
107
107
|
"husky": "^9.1.7",
|
|
108
108
|
"jsdom": "^28.0.0",
|
|
109
|
-
"lucide-react": "^0.
|
|
110
|
-
"next": "16.1.
|
|
109
|
+
"lucide-react": "^0.577.0",
|
|
110
|
+
"next": "16.1.6",
|
|
111
111
|
"playwright": "^1.57.0",
|
|
112
112
|
"react": "19.2.0",
|
|
113
113
|
"react-dom": "19.2.0",
|
|
114
114
|
"sass-embedded": "^1.93.3",
|
|
115
115
|
"semantic-release": "^25.0.1",
|
|
116
116
|
"size-limit": "^12.0.1",
|
|
117
|
-
"storybook": "10.2.
|
|
117
|
+
"storybook": "10.2.19",
|
|
118
118
|
"tsup": "^8.5.0",
|
|
119
|
+
"tsx": "^4.21.0",
|
|
119
120
|
"typescript": "^5",
|
|
120
121
|
"vite": "^5",
|
|
121
122
|
"vitest": "^4.0.17"
|