@bigtablet/design-system 1.6.1 → 1.6.3

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/dist/index.d.ts CHANGED
@@ -31,23 +31,6 @@ declare const useAlert: () => AlertContextValue;
31
31
  declare const AlertProvider: React.FC<{
32
32
  children: React.ReactNode;
33
33
  }>;
34
- interface AlertProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
35
- variant?: AlertVariant;
36
- title?: React.ReactNode;
37
- icon?: React.ReactNode;
38
- closable?: boolean;
39
- onClose?: () => void;
40
- showActions?: boolean;
41
- onConfirm?: () => void;
42
- onCancel?: () => void;
43
- confirmText?: string;
44
- cancelText?: string;
45
- actionsAlign?: AlertActionsAlign;
46
- }
47
- /**
48
- * @deprecated Use useAlert hook with AlertProvider instead
49
- */
50
- declare const Alert: ({ variant, title, icon, closable, onClose, showActions, onConfirm, onCancel, confirmText, cancelText, actionsAlign, className, children, ...props }: AlertProps) => react_jsx_runtime.JSX.Element;
51
34
 
52
35
  interface LoadingProps {
53
36
  size?: number;
@@ -156,4 +139,4 @@ interface ModalProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title">
156
139
  }
157
140
  declare const Modal: ({ open, onClose, closeOnOverlay, width, title, children, className, ...props }: ModalProps) => react_jsx_runtime.JSX.Element | null;
158
141
 
159
- export { Alert, AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, type SelectOption, Switch, TextField, ToastProvider, useAlert, useToast };
142
+ export { AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, type SelectOption, Switch, TextField, ToastProvider, useAlert, useToast };
package/dist/index.js CHANGED
@@ -125,85 +125,6 @@ var AlertModal = ({
125
125
  }
126
126
  ) });
127
127
  };
128
- var Alert = ({
129
- variant = "info",
130
- title,
131
- icon,
132
- closable,
133
- onClose,
134
- showActions = false,
135
- onConfirm,
136
- onCancel,
137
- confirmText = "\uD655\uC778",
138
- cancelText = "\uCDE8\uC18C",
139
- actionsAlign = "left",
140
- className,
141
- children,
142
- ...props
143
- }) => {
144
- return /* @__PURE__ */ jsxs(
145
- "div",
146
- {
147
- className: ["alert", `alert--${variant}`, closable && "alert--closable", className].filter(Boolean).join(" "),
148
- role: "alert",
149
- "aria-live": "polite",
150
- ...props,
151
- children: [
152
- icon && /* @__PURE__ */ jsx("span", { className: "alert__icon", "aria-hidden": "true", children: icon }),
153
- /* @__PURE__ */ jsxs("div", { className: "alert__content", children: [
154
- title && /* @__PURE__ */ jsx("div", { className: "alert__title", children: title }),
155
- children && /* @__PURE__ */ jsx("div", { className: "alert__desc", children }),
156
- showActions && /* @__PURE__ */ jsxs("div", { className: `alert__actions alert__actions--${actionsAlign}`, children: [
157
- onCancel && /* @__PURE__ */ jsx(
158
- "button",
159
- {
160
- type: "button",
161
- className: "alert__button alert__button--cancel",
162
- onClick: onCancel,
163
- children: cancelText
164
- }
165
- ),
166
- onConfirm && /* @__PURE__ */ jsx(
167
- "button",
168
- {
169
- type: "button",
170
- className: "alert__button alert__button--confirm",
171
- onClick: onConfirm,
172
- children: confirmText
173
- }
174
- )
175
- ] })
176
- ] }),
177
- closable && /* @__PURE__ */ jsx(
178
- "button",
179
- {
180
- type: "button",
181
- className: "alert__close",
182
- "aria-label": "\uB2EB\uAE30",
183
- onClick: onClose,
184
- children: /* @__PURE__ */ jsxs(
185
- "svg",
186
- {
187
- width: "16",
188
- height: "16",
189
- viewBox: "0 0 24 24",
190
- fill: "none",
191
- stroke: "currentColor",
192
- strokeWidth: "2",
193
- strokeLinecap: "round",
194
- strokeLinejoin: "round",
195
- children: [
196
- /* @__PURE__ */ jsx("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
197
- /* @__PURE__ */ jsx("line", { x1: "6", y1: "6", x2: "18", y2: "18" })
198
- ]
199
- }
200
- )
201
- }
202
- )
203
- ]
204
- }
205
- );
206
- };
207
128
  var Loading = ({ size = 24 }) => {
208
129
  return /* @__PURE__ */ jsx(
209
130
  "span",
@@ -711,4 +632,4 @@ var Modal = ({
711
632
  );
712
633
  };
713
634
 
714
- export { Alert, AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, Switch, TextField, ToastProvider, useAlert, useToast };
635
+ export { AlertProvider, Button, Card, Checkbox, FileInput, Loading, Modal, Pagination, Radio, Select, Switch, TextField, ToastProvider, useAlert, useToast };
@@ -0,0 +1,7 @@
1
+ @use "colors" as colors;
2
+
3
+ $focus_ring: 0 0 0 3px rgba(colors.$color_primary, 0.15);
4
+ $focus_ring_error: 0 0 0 3px rgba(colors.$color_error, 0.15);
5
+ $focus_ring_success: 0 0 0 3px rgba(colors.$color_success, 0.15);
6
+
7
+ $tap_min_size: 44px;
@@ -0,0 +1,28 @@
1
+ $breakpoint_mobile: 360px;
2
+ $breakpoint_tablet: 768px;
3
+ $breakpoint_laptop: 1024px;
4
+ $breakpoint_desktop: 1280px;
5
+
6
+ @mixin mobile {
7
+ @media (max-width: #{$breakpoint_tablet - 1}) {
8
+ @content;
9
+ }
10
+ }
11
+
12
+ @mixin tablet {
13
+ @media (min-width: $breakpoint_tablet) and (max-width: #{$breakpoint_laptop - 1}) {
14
+ @content;
15
+ }
16
+ }
17
+
18
+ @mixin laptop {
19
+ @media (min-width: $breakpoint_laptop) and (max-width: #{$breakpoint_desktop - 1}) {
20
+ @content;
21
+ }
22
+ }
23
+
24
+ @mixin desktop {
25
+ @media (min-width: $breakpoint_desktop) {
26
+ @content;
27
+ }
28
+ }
@@ -0,0 +1,25 @@
1
+ $color_primary: #000000;
2
+ $color_primary_hover: #333333;
3
+
4
+ $color_background: #ffffff;
5
+ $color_background_secondary: #fafafa;
6
+
7
+ $color_text_primary: #1a1a1a;
8
+ $color_text_secondary: #666666;
9
+ $color_text_tertiary: #999999;
10
+
11
+ $color_border: #e5e5e5;
12
+ $color_border_light: rgba(0, 0, 0, 0.08);
13
+
14
+ $color_success: #10b981;
15
+ $color_error: #ef4444;
16
+ $color_warning: #f59e0b;
17
+ $color_info: #3b82f6;
18
+
19
+ $color_overlay: rgba(0, 0, 0, 0.5);
20
+
21
+ $text_strong: #1f2937;
22
+ $text_normal: #3b3b3b;
23
+ $text_subtle: #6b7280;
24
+ $text_disabled: #9ca3af;
25
+ $text_inverse: #ffffff;
@@ -0,0 +1,8 @@
1
+ @mixin flex_center { display: flex; align-items: center; justify-content: center; }
2
+ @mixin flex_left { display: flex; align-items: center; justify-content: flex-start; }
3
+ @mixin flex_right { display: flex; align-items: center; justify-content: flex-end; }
4
+ @mixin flex_between { display: flex; align-items: center; justify-content: space-between; }
5
+
6
+ @mixin flex_column { display: flex; flex-direction: column; }
7
+ @mixin flex_column_center { display: flex; flex-direction: column; align-items: center; justify-content: center; }
8
+ @mixin flex_column_start { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; }
@@ -0,0 +1,4 @@
1
+ $transition_fast: 0.1s ease-out;
2
+ $transition_base: 0.2s ease-out;
3
+ $transition_slow: 0.3s ease-out;
4
+ $transition_bounce: 0.3s cubic-bezier(0.16, 1, 0.3, 1);
@@ -0,0 +1,5 @@
1
+ $radius_sm: 6px;
2
+ $radius_md: 8px;
3
+ $radius_lg: 12px;
4
+ $radius_xl: 16px;
5
+ $radius_full: 9999px;
@@ -0,0 +1,4 @@
1
+ $shadow_sm: 0 2px 4px rgba(0, 0, 0, 0.04);
2
+ $shadow_md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
3
+ $shadow_lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
4
+ $shadow_xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
@@ -0,0 +1,7 @@
1
+ $spacing_xs: 0.25rem;
2
+ $spacing_sm: 0.5rem;
3
+ $spacing_md: 0.75rem;
4
+ $spacing_lg: 1rem;
5
+ $spacing_xl: 1.25rem;
6
+ $spacing_2xl: 1.5rem;
7
+ $spacing_3xl: 2rem;
@@ -0,0 +1,77 @@
1
+ $font_family_primary: "Pretendard", sans-serif;
2
+
3
+ $font_size_xs: 0.75rem;
4
+ $font_size_sm: 0.875rem;
5
+ $font_size_base: 0.9375rem;
6
+ $font_size_md: 1rem;
7
+ $font_size_lg: 1.125rem;
8
+ $font_size_xl: 1.25rem;
9
+ $font_size_2xl: 1.5rem;
10
+ $font_size_3xl: 2rem;
11
+ $font_size_4xl: 2.5rem;
12
+
13
+ $font_weight_thin: 100;
14
+ $font_weight_extralight: 200;
15
+ $font_weight_light: 300;
16
+ $font_weight_regular: 400;
17
+ $font_weight_medium: 500;
18
+ $font_weight_semibold: 600;
19
+ $font_weight_bold: 700;
20
+ $font_weight_extrabold: 800;
21
+ $font_weight_black: 900;
22
+
23
+ $line_height_tight: 1.25;
24
+ $line_height_snug: 1.3;
25
+ $line_height_normal: 1.5;
26
+ $line_height_relaxed: 1.75;
27
+
28
+ $letter_spacing_tight: -0.02em;
29
+ $letter_spacing_normal: 0;
30
+ $letter_spacing_wide: 0.02em;
31
+
32
+ @mixin text_xs { font-size: $font_size_xs; line-height: $line_height_normal; }
33
+ @mixin text_sm { font-size: $font_size_sm; line-height: $line_height_normal; }
34
+ @mixin text_base { font-size: $font_size_base; line-height: $line_height_normal; }
35
+ @mixin text_md { font-size: $font_size_md; line-height: $line_height_normal; }
36
+ @mixin text_lg { font-size: $font_size_lg; line-height: $line_height_normal; }
37
+ @mixin text_xl { font-size: $font_size_xl; line-height: $line_height_snug; }
38
+ @mixin text_2xl { font-size: $font_size_2xl; line-height: $line_height_snug; }
39
+ @mixin text_3xl { font-size: $font_size_3xl; line-height: $line_height_tight; }
40
+
41
+ @mixin heading_1 {
42
+ font-size: $font_size_3xl;
43
+ font-weight: $font_weight_bold;
44
+ line-height: $line_height_tight;
45
+ letter-spacing: $letter_spacing_tight;
46
+ }
47
+
48
+ @mixin heading_2 {
49
+ font-size: $font_size_2xl;
50
+ font-weight: $font_weight_semibold;
51
+ line-height: $line_height_snug;
52
+ letter-spacing: $letter_spacing_tight;
53
+ }
54
+
55
+ @mixin heading_3 {
56
+ font-size: $font_size_xl;
57
+ font-weight: $font_weight_semibold;
58
+ line-height: $line_height_snug;
59
+ }
60
+
61
+ @mixin body_regular {
62
+ font-size: $font_size_base;
63
+ font-weight: $font_weight_regular;
64
+ line-height: $line_height_normal;
65
+ }
66
+
67
+ @mixin body_medium {
68
+ font-size: $font_size_base;
69
+ font-weight: $font_weight_medium;
70
+ line-height: $line_height_normal;
71
+ }
72
+
73
+ @mixin caption {
74
+ font-size: $font_size_sm;
75
+ font-weight: $font_weight_regular;
76
+ line-height: $line_height_normal;
77
+ }
@@ -0,0 +1,59 @@
1
+ // colors
2
+ $color-primary: #000000;
3
+ $color-primary-hover: #333333;
4
+
5
+ $color-background: #ffffff;
6
+ $color-background-secondary: #fafafa;
7
+
8
+ $color-text-primary: #1a1a1a;
9
+ $color-text-secondary: #666666;
10
+ $color-text-tertiary: #999999;
11
+
12
+ $color-border: #e5e5e5;
13
+ $color-border-light: rgba(0, 0, 0, 0.08);
14
+
15
+ $color-success: #10b981;
16
+ $color-error: #ef4444;
17
+ $color-warning: #f59e0b;
18
+ $color-info: #3b82f6;
19
+
20
+ $color-overlay: rgba(0, 0, 0, 0.5);
21
+
22
+ $text-strong: #1F2937;
23
+ $text-normal: #3B3B3B;
24
+ $text-subtle: #6B7280;
25
+ $text-disabled: #9CA3AF;
26
+ $text-inverse: #FFFFFF;
27
+
28
+ // shadow
29
+ $shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);
30
+ $shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
31
+ $shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
32
+ $shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
33
+
34
+ // spacing
35
+ $spacing-xs: 0.25rem; // 4px
36
+ $spacing-sm: 0.5rem; // 8px
37
+ $spacing-md: 0.75rem; // 12px
38
+ $spacing-lg: 1rem; // 16px
39
+ $spacing-xl: 1.25rem; // 20px
40
+ $spacing-2xl: 1.5rem; // 24px
41
+ $spacing-3xl: 2rem; // 32px
42
+
43
+ // radius
44
+ $radius-sm: 6px;
45
+ $radius-md: 8px;
46
+ $radius-lg: 12px;
47
+ $radius-xl: 16px;
48
+ $radius-full: 9999px;
49
+
50
+ // z-index
51
+ $z-modal: 10000;
52
+ $z-toast: 10001;
53
+ $z-loading: 9999;
54
+
55
+ // transition
56
+ $transition-fast: 0.1s ease-out;
57
+ $transition-base: 0.2s ease-out;
58
+ $transition-slow: 0.3s ease-out;
59
+ $transition-bounce: 0.3s cubic-bezier(0.16, 1, 0.3, 1);
@@ -0,0 +1,3 @@
1
+ $z_modal: 10000;
2
+ $z_toast: 10001;
3
+ $z_loading: 9999;
@@ -0,0 +1,9 @@
1
+ @forward "colors";
2
+ @forward "spacing";
3
+ @forward "radius";
4
+ @forward "shadows";
5
+ @forward "z-index";
6
+ @forward "motion";
7
+ @forward "typography";
8
+ @forward "layout";
9
+ @forward "a11y";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigtablet/design-system",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "description": "Bigtablet Design System UI Components",
5
5
  "type": "module",
6
6
  "types": "dist/index.d.ts",
@@ -14,10 +14,12 @@
14
14
  "types": "./dist/next.d.ts",
15
15
  "import": "./dist/next.js"
16
16
  },
17
- "./style.css": "./dist/index.css"
17
+ "./style.css": "./dist/index.css",
18
+ "./scss/token": "./dist/styles/scss/token.scss"
18
19
  },
19
20
  "files": [
20
21
  "dist",
22
+ "src/styles/scss",
21
23
  "README.md",
22
24
  "LICENSE"
23
25
  ],
@@ -27,7 +29,8 @@
27
29
  "./dist/next.css"
28
30
  ],
29
31
  "scripts": {
30
- "build": "tsup",
32
+ "build": "tsup && pnpm run copy:scss",
33
+ "copy:scss": "node scripts/copy-scss.mjs",
31
34
  "dev": "tsup --watch",
32
35
  "storybook": "storybook dev -p 6006",
33
36
  "build:sb": "storybook build",
@@ -0,0 +1,7 @@
1
+ @use "colors" as colors;
2
+
3
+ $focus_ring: 0 0 0 3px rgba(colors.$color_primary, 0.15);
4
+ $focus_ring_error: 0 0 0 3px rgba(colors.$color_error, 0.15);
5
+ $focus_ring_success: 0 0 0 3px rgba(colors.$color_success, 0.15);
6
+
7
+ $tap_min_size: 44px;
@@ -0,0 +1,28 @@
1
+ $breakpoint_mobile: 360px;
2
+ $breakpoint_tablet: 768px;
3
+ $breakpoint_laptop: 1024px;
4
+ $breakpoint_desktop: 1280px;
5
+
6
+ @mixin mobile {
7
+ @media (max-width: #{$breakpoint_tablet - 1}) {
8
+ @content;
9
+ }
10
+ }
11
+
12
+ @mixin tablet {
13
+ @media (min-width: $breakpoint_tablet) and (max-width: #{$breakpoint_laptop - 1}) {
14
+ @content;
15
+ }
16
+ }
17
+
18
+ @mixin laptop {
19
+ @media (min-width: $breakpoint_laptop) and (max-width: #{$breakpoint_desktop - 1}) {
20
+ @content;
21
+ }
22
+ }
23
+
24
+ @mixin desktop {
25
+ @media (min-width: $breakpoint_desktop) {
26
+ @content;
27
+ }
28
+ }
@@ -0,0 +1,25 @@
1
+ $color_primary: #000000;
2
+ $color_primary_hover: #333333;
3
+
4
+ $color_background: #ffffff;
5
+ $color_background_secondary: #fafafa;
6
+
7
+ $color_text_primary: #1a1a1a;
8
+ $color_text_secondary: #666666;
9
+ $color_text_tertiary: #999999;
10
+
11
+ $color_border: #e5e5e5;
12
+ $color_border_light: rgba(0, 0, 0, 0.08);
13
+
14
+ $color_success: #10b981;
15
+ $color_error: #ef4444;
16
+ $color_warning: #f59e0b;
17
+ $color_info: #3b82f6;
18
+
19
+ $color_overlay: rgba(0, 0, 0, 0.5);
20
+
21
+ $text_strong: #1f2937;
22
+ $text_normal: #3b3b3b;
23
+ $text_subtle: #6b7280;
24
+ $text_disabled: #9ca3af;
25
+ $text_inverse: #ffffff;
@@ -0,0 +1,8 @@
1
+ @mixin flex_center { display: flex; align-items: center; justify-content: center; }
2
+ @mixin flex_left { display: flex; align-items: center; justify-content: flex-start; }
3
+ @mixin flex_right { display: flex; align-items: center; justify-content: flex-end; }
4
+ @mixin flex_between { display: flex; align-items: center; justify-content: space-between; }
5
+
6
+ @mixin flex_column { display: flex; flex-direction: column; }
7
+ @mixin flex_column_center { display: flex; flex-direction: column; align-items: center; justify-content: center; }
8
+ @mixin flex_column_start { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; }
@@ -0,0 +1,4 @@
1
+ $transition_fast: 0.1s ease-out;
2
+ $transition_base: 0.2s ease-out;
3
+ $transition_slow: 0.3s ease-out;
4
+ $transition_bounce: 0.3s cubic-bezier(0.16, 1, 0.3, 1);
@@ -0,0 +1,5 @@
1
+ $radius_sm: 6px;
2
+ $radius_md: 8px;
3
+ $radius_lg: 12px;
4
+ $radius_xl: 16px;
5
+ $radius_full: 9999px;
@@ -0,0 +1,4 @@
1
+ $shadow_sm: 0 2px 4px rgba(0, 0, 0, 0.04);
2
+ $shadow_md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
3
+ $shadow_lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
4
+ $shadow_xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
@@ -0,0 +1,7 @@
1
+ $spacing_xs: 0.25rem;
2
+ $spacing_sm: 0.5rem;
3
+ $spacing_md: 0.75rem;
4
+ $spacing_lg: 1rem;
5
+ $spacing_xl: 1.25rem;
6
+ $spacing_2xl: 1.5rem;
7
+ $spacing_3xl: 2rem;
@@ -0,0 +1,77 @@
1
+ $font_family_primary: "Pretendard", sans-serif;
2
+
3
+ $font_size_xs: 0.75rem;
4
+ $font_size_sm: 0.875rem;
5
+ $font_size_base: 0.9375rem;
6
+ $font_size_md: 1rem;
7
+ $font_size_lg: 1.125rem;
8
+ $font_size_xl: 1.25rem;
9
+ $font_size_2xl: 1.5rem;
10
+ $font_size_3xl: 2rem;
11
+ $font_size_4xl: 2.5rem;
12
+
13
+ $font_weight_thin: 100;
14
+ $font_weight_extralight: 200;
15
+ $font_weight_light: 300;
16
+ $font_weight_regular: 400;
17
+ $font_weight_medium: 500;
18
+ $font_weight_semibold: 600;
19
+ $font_weight_bold: 700;
20
+ $font_weight_extrabold: 800;
21
+ $font_weight_black: 900;
22
+
23
+ $line_height_tight: 1.25;
24
+ $line_height_snug: 1.3;
25
+ $line_height_normal: 1.5;
26
+ $line_height_relaxed: 1.75;
27
+
28
+ $letter_spacing_tight: -0.02em;
29
+ $letter_spacing_normal: 0;
30
+ $letter_spacing_wide: 0.02em;
31
+
32
+ @mixin text_xs { font-size: $font_size_xs; line-height: $line_height_normal; }
33
+ @mixin text_sm { font-size: $font_size_sm; line-height: $line_height_normal; }
34
+ @mixin text_base { font-size: $font_size_base; line-height: $line_height_normal; }
35
+ @mixin text_md { font-size: $font_size_md; line-height: $line_height_normal; }
36
+ @mixin text_lg { font-size: $font_size_lg; line-height: $line_height_normal; }
37
+ @mixin text_xl { font-size: $font_size_xl; line-height: $line_height_snug; }
38
+ @mixin text_2xl { font-size: $font_size_2xl; line-height: $line_height_snug; }
39
+ @mixin text_3xl { font-size: $font_size_3xl; line-height: $line_height_tight; }
40
+
41
+ @mixin heading_1 {
42
+ font-size: $font_size_3xl;
43
+ font-weight: $font_weight_bold;
44
+ line-height: $line_height_tight;
45
+ letter-spacing: $letter_spacing_tight;
46
+ }
47
+
48
+ @mixin heading_2 {
49
+ font-size: $font_size_2xl;
50
+ font-weight: $font_weight_semibold;
51
+ line-height: $line_height_snug;
52
+ letter-spacing: $letter_spacing_tight;
53
+ }
54
+
55
+ @mixin heading_3 {
56
+ font-size: $font_size_xl;
57
+ font-weight: $font_weight_semibold;
58
+ line-height: $line_height_snug;
59
+ }
60
+
61
+ @mixin body_regular {
62
+ font-size: $font_size_base;
63
+ font-weight: $font_weight_regular;
64
+ line-height: $line_height_normal;
65
+ }
66
+
67
+ @mixin body_medium {
68
+ font-size: $font_size_base;
69
+ font-weight: $font_weight_medium;
70
+ line-height: $line_height_normal;
71
+ }
72
+
73
+ @mixin caption {
74
+ font-size: $font_size_sm;
75
+ font-weight: $font_weight_regular;
76
+ line-height: $line_height_normal;
77
+ }
@@ -0,0 +1,59 @@
1
+ // colors
2
+ $color-primary: #000000;
3
+ $color-primary-hover: #333333;
4
+
5
+ $color-background: #ffffff;
6
+ $color-background-secondary: #fafafa;
7
+
8
+ $color-text-primary: #1a1a1a;
9
+ $color-text-secondary: #666666;
10
+ $color-text-tertiary: #999999;
11
+
12
+ $color-border: #e5e5e5;
13
+ $color-border-light: rgba(0, 0, 0, 0.08);
14
+
15
+ $color-success: #10b981;
16
+ $color-error: #ef4444;
17
+ $color-warning: #f59e0b;
18
+ $color-info: #3b82f6;
19
+
20
+ $color-overlay: rgba(0, 0, 0, 0.5);
21
+
22
+ $text-strong: #1F2937;
23
+ $text-normal: #3B3B3B;
24
+ $text-subtle: #6B7280;
25
+ $text-disabled: #9CA3AF;
26
+ $text-inverse: #FFFFFF;
27
+
28
+ // shadow
29
+ $shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);
30
+ $shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
31
+ $shadow-lg: 0 8px 20px rgba(0, 0, 0, 0.12), 0 4px 8px rgba(0, 0, 0, 0.06);
32
+ $shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
33
+
34
+ // spacing
35
+ $spacing-xs: 0.25rem; // 4px
36
+ $spacing-sm: 0.5rem; // 8px
37
+ $spacing-md: 0.75rem; // 12px
38
+ $spacing-lg: 1rem; // 16px
39
+ $spacing-xl: 1.25rem; // 20px
40
+ $spacing-2xl: 1.5rem; // 24px
41
+ $spacing-3xl: 2rem; // 32px
42
+
43
+ // radius
44
+ $radius-sm: 6px;
45
+ $radius-md: 8px;
46
+ $radius-lg: 12px;
47
+ $radius-xl: 16px;
48
+ $radius-full: 9999px;
49
+
50
+ // z-index
51
+ $z-modal: 10000;
52
+ $z-toast: 10001;
53
+ $z-loading: 9999;
54
+
55
+ // transition
56
+ $transition-fast: 0.1s ease-out;
57
+ $transition-base: 0.2s ease-out;
58
+ $transition-slow: 0.3s ease-out;
59
+ $transition-bounce: 0.3s cubic-bezier(0.16, 1, 0.3, 1);
@@ -0,0 +1,3 @@
1
+ $z_modal: 10000;
2
+ $z_toast: 10001;
3
+ $z_loading: 9999;
@@ -0,0 +1,9 @@
1
+ @forward "colors";
2
+ @forward "spacing";
3
+ @forward "radius";
4
+ @forward "shadows";
5
+ @forward "z-index";
6
+ @forward "motion";
7
+ @forward "typography";
8
+ @forward "layout";
9
+ @forward "a11y";