@bigtablet/design-system 1.21.1 → 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 CHANGED
@@ -40,21 +40,25 @@ The official design system of Bigtablet — a unified UI library composed of Fou
40
40
 
41
41
  ## Installation
42
42
 
43
- ```bash
44
- # npm
45
- npm install @bigtablet/design-system
43
+ ### One-line setup (recommended)
46
44
 
47
- # yarn
48
- 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.
49
46
 
50
- # pnpm
51
- pnpm add @bigtablet/design-system
47
+ ```bash
48
+ curl -fsSL https://raw.githubusercontent.com/Bigtablet/bigtablet-design-system/main/scripts/setup.sh | sh
52
49
  ```
53
50
 
54
- **Peer Dependencies**
51
+ ### Manual
55
52
 
56
53
  ```bash
57
- npm install react@^19 react-dom@^19 "lucide-react@>=0.552.0"
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
58
62
  ```
59
63
 
60
64
  > Requires **React 19** and **lucide-react ≥ 0.552.0**. Compatible with **Next.js 13+**.
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,6 +618,14 @@
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;
@@ -618,6 +682,14 @@
618
682
  }
619
683
 
620
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
+ }
621
693
  .radio {
622
694
  position: relative;
623
695
  display: inline-flex;
@@ -697,6 +769,14 @@
697
769
  }
698
770
 
699
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
+ }
700
780
  .select {
701
781
  position: relative;
702
782
  display: inline-flex;
@@ -871,6 +951,14 @@
871
951
  }
872
952
 
873
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
+ }
874
962
  .switch {
875
963
  position: relative;
876
964
  display: inline-flex;
@@ -931,6 +1019,14 @@
931
1019
  }
932
1020
 
933
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
+ }
934
1030
  .text_field {
935
1031
  display: flex;
936
1032
  flex-direction: column;
@@ -1067,6 +1163,14 @@
1067
1163
  }
1068
1164
 
1069
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
+ }
1070
1174
  .date_picker {
1071
1175
  display: flex;
1072
1176
  flex-direction: column;
@@ -1173,6 +1277,14 @@
1173
1277
  }
1174
1278
 
1175
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
+ }
1176
1288
  .pagination {
1177
1289
  display: flex;
1178
1290
  align-items: center;
@@ -1238,6 +1350,14 @@
1238
1350
  }
1239
1351
 
1240
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
+ }
1241
1361
  .modal {
1242
1362
  position: fixed;
1243
1363
  inset: 0;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,157 @@
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;
@@ -399,4 +550,4 @@ interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">
399
550
  */
400
551
  declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ariaLabel, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
401
552
 
402
- 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 = [];
@@ -1081,4 +1255,4 @@ var Modal = ({
1081
1255
  );
1082
1256
  };
1083
1257
 
1084
- 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
@@ -1,4 +1,12 @@
1
1
  /* src/ui/navigation/sidebar/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
  .sidebar {
3
11
  display: flex;
4
12
  flex-direction: column;
@@ -1,8 +1,9 @@
1
- @use "src/styles/scss/token" as token;
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: token.$color_background_neutral;
4
- $color_skeleton_wave: token.$color_background_muted;
5
- $color_skeleton_highlight: token.$color_background_secondary;
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: token.$radius_sm;
15
- $skeleton_radius_md: token.$radius_md;
16
- $skeleton_radius_lg: token.$radius_lg;
15
+ $skeleton_radius_sm: 6px;
16
+ $skeleton_radius_md: 8px;
17
+ $skeleton_radius_lg: 12px;
17
18
 
18
- $skeleton_height_xs: token.$spacing_xs;
19
- $skeleton_height_sm: token.$spacing_sm;
20
- $skeleton_height_md: token.$spacing_md;
21
- $skeleton_height_lg: token.$spacing_lg;
22
- $skeleton_height_xl: token.$spacing_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: token.$spacing_6xl) {
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: token.$spacing_8xl
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
+ }
@@ -5,6 +5,7 @@
5
5
  @forward "motion";
6
6
  @forward "radius";
7
7
  @forward "shadows";
8
+ @forward "skeleton";
8
9
  @forward "spacing";
9
10
  @forward "typography";
10
11
  @forward "z-index";
@@ -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.21.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": "node scripts/build-vanilla.mjs",
46
- "copy:scss": "node scripts/copy-scss.mjs",
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": "node scripts/figma-connect.mjs",
55
- "figma:snapshot": "node scripts/figma-snapshot.mjs",
56
- "figma:diff": "node scripts/figma-diff.mjs",
57
- "figma:apply": "node scripts/figma-apply.mjs",
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,7 +106,7 @@
106
106
  "esbuild-sass-plugin": "^3",
107
107
  "husky": "^9.1.7",
108
108
  "jsdom": "^28.0.0",
109
- "lucide-react": "^0.552.0",
109
+ "lucide-react": "^0.577.0",
110
110
  "next": "16.1.6",
111
111
  "playwright": "^1.57.0",
112
112
  "react": "19.2.0",
@@ -114,8 +114,9 @@
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.17",
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"