dynamic-ds 1.0.2 → 1.0.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.
@@ -3,14 +3,14 @@
3
3
  // ============================================================================
4
4
  // 1. DEFAULT COLORS
5
5
  // ============================================================================
6
- $brand-color-default: #2740B4;
7
- $primary-color-default: #006BDF;
8
- $secondary-color-default: #9F5100;
9
- $neutral-color-default: #505A5F;
10
- $functional-color-default: #006BDF;
11
- $utility-color-default: #CF0026;
6
+ $brand-color-default: #2740b4;
7
+ $primary-color-default: #006bdf;
8
+ $secondary-color-default: #9f5100;
9
+ $neutral-color-default: #505a5f;
10
+ $functional-color-default: #006bdf;
11
+ $utility-color-default: #cf0026;
12
12
  $text-color-default: #344054;
13
- $disable-bg-default: #F9FAFB;
13
+ $disable-bg-default: #f9fafb;
14
14
  $disable-text-default: #667085;
15
15
 
16
16
  // ============================================================================
@@ -34,22 +34,35 @@ $disable-text-default: #667085;
34
34
  // Giá trị biểu thị % màu trắng hoặc đen được trộn vào
35
35
  $shade-offsets: (
36
36
  // Dải màu tối (Pha Đen) - Tính toán từ Base #505A5F
37
- "900": -73.5%, // Hex đích: #161819
38
- "875": -62.5%, // Hex đích: #1E2225
39
- "850": -47.0%, // Hex đích: #2A3034
40
- "800": -34.5%, // Hex đích: #343D41
41
- "700": -18.5%, // Hex đích: #41494E
42
- "600": 0%, // BASE: #505A5F
43
-
37
+ "900": -73.5%,
38
+ // Hex đích: #161819
39
+ "875": -62.5%,
40
+ // Hex đích: #1E2225
41
+ "850": -47%,
42
+ // Hex đích: #2A3034
43
+ "800": -34.5%,
44
+ // Hex đích: #343D41
45
+ "700": -18.5%,
46
+ // Hex đích: #41494E
47
+ "600": 0%,
48
+
49
+ // BASE: #505A5F
44
50
  // Dải màu sáng (Pha Trắng) - Tính toán từ Base #505A5F
45
- "500": 17.5%, // Hex đích: #69757C
46
- "400": 33.0%, // Hex đích: #828F96
47
- "300": 53.0%, // Hex đích: #A3AEB5
48
- "200": 72.0%, // Hex đích: #C5CDD2
49
- "100": 85.0%, // Hex đích: #DEE3E7
50
- "50": 89.5%, // Hex đích: #E9EDF1
51
- "25": 93.5%, // Hex đích: #F1F4F6
52
- "10": 97.0% // Hex đích: #F8F9FB
51
+ "500": 17.5%,
52
+ // Hex đích: #69757C
53
+ "400": 33%,
54
+ // Hex đích: #828F96
55
+ "300": 53%,
56
+ // Hex đích: #A3AEB5
57
+ "200": 72%,
58
+ // Hex đích: #C5CDD2
59
+ "100": 85%,
60
+ // Hex đích: #DEE3E7
61
+ "50": 89.5%,
62
+ // Hex đích: #E9EDF1
63
+ "25": 93.5%,
64
+ // Hex đích: #F1F4F6
65
+ "10": 97% // Hex đích: #F8F9FB
53
66
  );
54
67
 
55
68
  // ============================================================================
@@ -63,17 +76,19 @@ $shade-offsets: (
63
76
  "primary": $primary-color-default,
64
77
  "secondary": $secondary-color-default,
65
78
  "functional": $functional-color-default,
66
- "utility": $utility-color-default
79
+ "utility": $utility-color-default,
67
80
  );
68
81
 
69
82
  @each $name, $base-color in $palettes {
70
83
  --#{$name}-color: #{$base-color};
71
- --#{$name}-color-rgb: #{red($base-color)}, #{green($base-color)}, #{blue($base-color)};
84
+ --#{$name}-color-rgb:
85
+ #{red($base-color)}, #{green($base-color)}, #{blue($base-color)};
72
86
 
73
87
  @each $shade, $offset in $shade-offsets {
74
88
  $shade-color: generate-shade($base-color, $offset);
75
89
  --#{$name}-#{$shade}: #{$shade-color};
76
- --#{$name}-#{$shade}-rgb: #{red($shade-color)}, #{green($shade-color)}, #{blue($shade-color)};
90
+ --#{$name}-#{$shade}-rgb:
91
+ #{red($shade-color)}, #{green($shade-color)}, #{blue($shade-color)};
77
92
  }
78
93
  }
79
94
  }
@@ -82,83 +97,128 @@ $shade-offsets: (
82
97
  // BADGE THEME PALETTES (exposed as CSS custom properties)
83
98
  // ============================================================================
84
99
  $badge-theme-bases: (
85
- "neutral": #505A5F,
86
- "neutral-light": #8B9399,
87
- "red": #CF0026,
88
- "orange": #B93600,
100
+ "neutral": #505a5f,
101
+ "neutral-light": #8b9399,
102
+ "red": #cf0026,
103
+ "orange": #b93600,
89
104
  "yellow": #995500,
90
- "lime": #2E7600,
105
+ "lime": #2e7600,
91
106
  "green": #008345,
92
107
  "ocean": #008692,
93
- "blue": #007DD7,
94
- "indigo": #2461E2,
95
- "violet": #9D3ABB,
96
- "pink": #BC1D92
108
+ "blue": #007dd7,
109
+ "indigo": #2461e2,
110
+ "violet": #9d3abb,
111
+ "pink": #bc1d92,
97
112
  );
98
113
 
99
114
  :root {
100
115
  @each $name, $base-color in $badge-theme-bases {
101
116
  --theme-#{$name}-color: #{$base-color};
102
- --theme-#{$name}-color-rgb: #{red($base-color)}, #{green($base-color)}, #{blue($base-color)};
117
+ --theme-#{$name}-color-rgb:
118
+ #{red($base-color)}, #{green($base-color)}, #{blue($base-color)};
103
119
 
104
120
  @each $shade, $offset in $shade-offsets {
105
121
  $shade-color: generate-shade($base-color, $offset);
106
122
  --theme-#{$name}-#{$shade}: #{$shade-color};
107
- --theme-#{$name}-#{$shade}-rgb: #{red($shade-color)}, #{green($shade-color)}, #{blue($shade-color)};
123
+ --theme-#{$name}-#{$shade}-rgb:
124
+ #{red($shade-color)}, #{green($shade-color)}, #{blue($shade-color)};
108
125
  }
109
126
  }
110
127
  }
111
128
 
112
- $theme-types: ('red', 'orange', 'yellow', 'lime', 'green', 'ocean', 'blue', 'indigo', 'violet', 'pink');
129
+ $theme-types: (
130
+ "red",
131
+ "orange",
132
+ "yellow",
133
+ "lime",
134
+ "green",
135
+ "ocean",
136
+ "blue",
137
+ "indigo",
138
+ "violet",
139
+ "pink"
140
+ );
113
141
  @each $type in $theme-types {
114
142
  // Backgrounds
115
- .bg-#{$type}-canvas { background-color: var(--theme-#{$type}-10) !important; }
116
- .bg-#{$type}-soft { background-color: var(--theme-#{$type}-25) !important; }
117
- .bg-#{$type}-sub { background-color: var(--theme-#{$type}-50) !important; }
118
- .bg-#{$type}-accent { background-color: var(--theme-#{$type}-600) !important; }
143
+ .bg-#{$type}-canvas {
144
+ background-color: var(--theme-#{$type}-10) !important;
145
+ }
146
+ .bg-#{$type}-soft {
147
+ background-color: var(--theme-#{$type}-25) !important;
148
+ }
149
+ .bg-#{$type}-sub {
150
+ background-color: var(--theme-#{$type}-50) !important;
151
+ }
152
+ .bg-#{$type}-accent {
153
+ background-color: var(--theme-#{$type}-600) !important;
154
+ }
119
155
 
120
156
  // Texts
121
- .text-#{$type}-soft { color: var(--theme-#{$type}-400) !important; }
122
- .text-#{$type}-sub { color: var(--theme-#{$type}-700) !important; }
123
- .text-#{$type}-strong { color: var(--theme-#{$type}-850) !important; }
124
- .text-#{$type}-white { color: #FFFFFF !important; }
157
+ .text-#{$type}-soft {
158
+ color: var(--theme-#{$type}-400) !important;
159
+ }
160
+ .text-#{$type}-sub {
161
+ color: var(--theme-#{$type}-700) !important;
162
+ }
163
+ .text-#{$type}-strong {
164
+ color: var(--theme-#{$type}-850) !important;
165
+ }
166
+ .text-#{$type}-white {
167
+ color: #ffffff !important;
168
+ }
125
169
 
126
170
  // Strokes
127
- .stroke-#{$type}-soft { border-color: var(--theme-#{$type}-50) !important; }
128
- .stroke-#{$type}-sub { border-color: var(--theme-#{$type}-100) !important; }
129
- .stroke-#{$type}-strong { border-color: var(--theme-#{$type}-500) !important; }
130
- .stroke-#{$type}-strong-alpha { border-color: rgba(var(--theme-#{$type}-500-rgb), 0.5) !important; }
171
+ .stroke-#{$type}-soft {
172
+ border-color: var(--theme-#{$type}-50) !important;
173
+ }
174
+ .stroke-#{$type}-sub {
175
+ border-color: var(--theme-#{$type}-100) !important;
176
+ }
177
+ .stroke-#{$type}-strong {
178
+ border-color: var(--theme-#{$type}-500) !important;
179
+ }
180
+ .stroke-#{$type}-strong-alpha {
181
+ border-color: rgba(var(--theme-#{$type}-500-rgb), 0.5) !important;
182
+ }
131
183
 
132
184
  // Icons
133
- .icon-#{$type}-soft { fill: var(--theme--#{$type}-300) !important; }
134
- .icon-#{$type}-sub { fill: var(--theme-#{$type}-600) !important; }
135
- .icon-#{$type}-strong { fill: var(--theme-#{$type}-800) !important; }
136
- .icon-#{$type}-white { fill: #FFFFFF !important; }
185
+ .icon-#{$type}-soft {
186
+ fill: var(--theme--#{$type}-300) !important;
187
+ }
188
+ .icon-#{$type}-sub {
189
+ fill: var(--theme-#{$type}-600) !important;
190
+ }
191
+ .icon-#{$type}-strong {
192
+ fill: var(--theme-#{$type}-800) !important;
193
+ }
194
+ .icon-#{$type}-white {
195
+ fill: #ffffff !important;
196
+ }
137
197
  }
138
198
 
139
199
  // ============================================================================
140
200
  // 4. NEUTRAL PALETTE (Static SCSS - RGB Mix)
141
201
  // ============================================================================
142
202
  $neutral-B: #000000;
143
- $neutral-W: #FFFFFF;
203
+ $neutral-W: #ffffff;
144
204
 
145
205
  $neutral-shades: (
146
206
  "black": $neutral-B,
147
207
  "white": $neutral-W,
148
208
  "900": #161819,
149
- "875": #1E2225,
150
- "850": #2A3034,
151
- "800": #343D41,
152
- "700": #41494E,
209
+ "875": #1e2225,
210
+ "850": #2a3034,
211
+ "800": #343d41,
212
+ "700": #41494e,
153
213
  "600": $neutral-color-default,
154
- "500": #69757C,
155
- "400": #828F96,
156
- "300": #A3AEB5,
157
- "200": #C5CDD2,
158
- "100": #DEE3E7,
159
- "50": #E9EDF1,
160
- "25": #F1F4F6,
161
- "10": #F8F9FB
214
+ "500": #69757c,
215
+ "400": #828f96,
216
+ "300": #a3aeb5,
217
+ "200": #c5cdd2,
218
+ "100": #dee3e7,
219
+ "50": #e9edf1,
220
+ "25": #f1f4f6,
221
+ "10": #f8f9fb,
162
222
  );
163
223
 
164
224
  :root {
@@ -173,9 +233,9 @@ $neutral-shades: (
173
233
  --neutral-color-300: #{map-get($neutral-shades, "300")};
174
234
  --neutral-color-200: #{map-get($neutral-shades, "200")};
175
235
  --neutral-color-100: #{map-get($neutral-shades, "100")};
176
- --neutral-color-50: #{map-get($neutral-shades, "50")};
177
- --neutral-color-25: #{map-get($neutral-shades, "25")};
178
- --neutral-color-10: #{map-get($neutral-shades, "10")};
236
+ --neutral-color-50: #{map-get($neutral-shades, "50")};
237
+ --neutral-color-25: #{map-get($neutral-shades, "25")};
238
+ --neutral-color-10: #{map-get($neutral-shades, "10")};
179
239
  }
180
240
 
181
241
  // Helper function để thay thế logic lighten/darken cũ
@@ -191,60 +251,134 @@ $neutral-shades: (
191
251
  // ============================================================================
192
252
 
193
253
  // --- NEUTRAL SEMANTIC ---
194
- .bg-neutral-disable { background-color: #FFFFFF !important; }
195
- .bg-neutral-canvas { background-color: #FFFFFF !important; }
196
- .bg-neutral-soft { background-color: #F8F9FB !important; }
197
- .bg-neutral-sub { background-color: #E9EDF1 !important; }
198
- .bg-neutral-accent { background-color: #E9EDF1 !important; }
199
-
200
- .text-neutral-disable { color: #C5CDD2 !important; }
201
- .text-neutral-soft { color: #828F96 !important; }
202
- .text-neutral-sub { color: #505A5F !important; }
203
- .text-neutral-strong { color: #1E2225 !important; }
204
-
205
- .stroke-neutral-disable { border-color: rgba(2, 48, 94, 0.09) !important; } // #02305E 8.7%
206
- .stroke-neutral-soft { border-color: rgba(10, 47, 77, 0.14) !important; } // #0A2F4D 13.5%
207
- .stroke-neutral-sub { border-color: rgba(13, 46, 67, 0.24) !important; } // #0D2E43 24%
208
- .stroke-neutral-strong { border-color: rgba(0, 21, 32, 0.59) !important; } // #001520 59%
209
-
210
- .icon-neutral-disable { fill: #C5CDD2 !important; }
211
- .icon-neutral-soft { fill: #A3AEB5 !important; }
212
- .icon-neutral-sub { fill: #505A5F !important; }
213
- .icon-neutral-strong { fill: #343D41 !important; }
254
+ .bg-neutral-disable {
255
+ background-color: #ffffff !important;
256
+ }
257
+ .bg-neutral-canvas {
258
+ background-color: #ffffff !important;
259
+ }
260
+ .bg-neutral-soft {
261
+ background-color: #f8f9fb !important;
262
+ }
263
+ .bg-neutral-sub {
264
+ background-color: #e9edf1 !important;
265
+ }
266
+ .bg-neutral-accent {
267
+ background-color: #e9edf1 !important;
268
+ }
269
+
270
+ .text-neutral-disable {
271
+ color: #c5cdd2 !important;
272
+ }
273
+ .text-neutral-soft {
274
+ color: #828f96 !important;
275
+ }
276
+ .text-neutral-sub {
277
+ color: #505a5f !important;
278
+ }
279
+ .text-neutral-strong {
280
+ color: #1e2225 !important;
281
+ }
282
+
283
+ .stroke-neutral-disable {
284
+ border-color: rgba(2, 48, 94, 0.09) !important;
285
+ } // #02305E 8.7%
286
+ .stroke-neutral-soft {
287
+ border-color: rgba(10, 47, 77, 0.14) !important;
288
+ } // #0A2F4D 13.5%
289
+ .stroke-neutral-sub {
290
+ border-color: rgba(13, 46, 67, 0.24) !important;
291
+ } // #0D2E43 24%
292
+ .stroke-neutral-strong {
293
+ border-color: rgba(0, 21, 32, 0.59) !important;
294
+ } // #001520 59%
295
+
296
+ .icon-neutral-disable {
297
+ fill: #c5cdd2 !important;
298
+ }
299
+ .icon-neutral-soft {
300
+ fill: #a3aeb5 !important;
301
+ }
302
+ .icon-neutral-sub {
303
+ fill: #505a5f !important;
304
+ }
305
+ .icon-neutral-strong {
306
+ fill: #343d41 !important;
307
+ }
214
308
 
215
309
  // --- DYNAMIC SEMANTIC (Brand, Functional, Utility) ---
216
310
  $semantic-types: ("brand", "functional", "utility");
217
311
 
218
312
  .bg-default {
219
- background-color: #F2F5FF !important;
313
+ background-color: #f2f5ff !important;
220
314
  }
221
315
 
222
316
  @each $type in $semantic-types {
223
317
  // Backgrounds
224
- .bg-#{$type}-canvas { background-color: var(--#{$type}-10) !important; }
225
- .bg-#{$type}-soft { background-color: var(--#{$type}-25) !important; }
226
- .bg-#{$type}-sub { background-color: var(--#{$type}-50) !important; }
227
- .bg-#{$type}-accent { background-color: var(--#{$type}-600) !important; }
228
- @if $type != "brand" { .bg-#{$type}-disable { background-color: var(--#{$type}-10) !important; } }
318
+ .bg-#{$type}-canvas {
319
+ background-color: var(--#{$type}-10) !important;
320
+ }
321
+ .bg-#{$type}-soft {
322
+ background-color: var(--#{$type}-25) !important;
323
+ }
324
+ .bg-#{$type}-sub {
325
+ background-color: var(--#{$type}-50) !important;
326
+ }
327
+ .bg-#{$type}-accent {
328
+ background-color: var(--#{$type}-600) !important;
329
+ }
330
+ @if $type != "brand" {
331
+ .bg-#{$type}-disable {
332
+ background-color: var(--#{$type}-10) !important;
333
+ }
334
+ }
229
335
 
230
336
  // Texts
231
- .text-#{$type}-soft { color: var(--#{$type}-400) !important; }
232
- .text-#{$type}-sub { color: var(--#{$type}-700) !important; }
233
- .text-#{$type}-strong { color: var(--#{$type}-850) !important; }
234
- .text-#{$type}-white { color: #FFFFFF !important; }
235
- @if $type != "brand" { .text-#{$type}-disable { color: var(--#{$type}-200) !important; } }
337
+ .text-#{$type}-soft {
338
+ color: var(--#{$type}-400) !important;
339
+ }
340
+ .text-#{$type}-sub {
341
+ color: var(--#{$type}-700) !important;
342
+ }
343
+ .text-#{$type}-strong {
344
+ color: var(--#{$type}-850) !important;
345
+ }
346
+ .text-#{$type}-white {
347
+ color: #ffffff !important;
348
+ }
349
+ @if $type != "brand" {
350
+ .text-#{$type}-disable {
351
+ color: var(--#{$type}-200) !important;
352
+ }
353
+ }
236
354
 
237
355
  // Strokes
238
- .stroke-#{$type}-soft { border-color: var(--#{$type}-50) !important; }
239
- .stroke-#{$type}-sub { border-color: var(--#{$type}-100) !important; }
240
- .stroke-#{$type}-strong { border-color: var(--#{$type}-500) !important; }
241
- .stroke-#{$type}-strong-alpha { border-color: rgba(var(--#{$type}-500-rgb), 0.5) !important; }
356
+ .stroke-#{$type}-soft {
357
+ border-color: var(--#{$type}-50) !important;
358
+ }
359
+ .stroke-#{$type}-sub {
360
+ border-color: var(--#{$type}-100) !important;
361
+ }
362
+ .stroke-#{$type}-strong {
363
+ border-color: var(--#{$type}-500) !important;
364
+ }
365
+ .stroke-#{$type}-strong-alpha {
366
+ border-color: rgba(var(--#{$type}-500-rgb), 0.5) !important;
367
+ }
242
368
 
243
369
  // Icons
244
- .icon-#{$type}-soft { fill: var(--#{$type}-300) !important; }
245
- .icon-#{$type}-sub { fill: var(--#{$type}-600) !important; }
246
- .icon-#{$type}-strong { fill: var(--#{$type}-800) !important; }
247
- .icon-#{$type}-white { fill: #FFFFFF !important; }
370
+ .icon-#{$type}-soft {
371
+ fill: var(--#{$type}-300) !important;
372
+ }
373
+ .icon-#{$type}-sub {
374
+ fill: var(--#{$type}-600) !important;
375
+ }
376
+ .icon-#{$type}-strong {
377
+ fill: var(--#{$type}-800) !important;
378
+ }
379
+ .icon-#{$type}-white {
380
+ fill: #ffffff !important;
381
+ }
248
382
  }
249
383
 
250
384
  // ============================================================================
@@ -252,20 +386,37 @@ $semantic-types: ("brand", "functional", "utility");
252
386
  // ============================================================================
253
387
 
254
388
  // --- NEUTRAL CLASSES ---
255
- .color-text-neutral-black { color: $neutral-B !important; }
256
- .color-text-neutral-white { color: $neutral-W !important; }
389
+ .color-text-neutral-black {
390
+ color: $neutral-B !important;
391
+ }
392
+ .color-text-neutral-white {
393
+ color: $neutral-W !important;
394
+ }
257
395
  @each $shade, $value in $neutral-shades {
258
- .color-text-neutral-#{$shade} { color: $value !important; }
259
- .color-bg-neutral-#{$shade} { background-color: $value !important; }
260
- .color-stroke-neutral-#{$shade} { border-color: $value !important; }
261
- .color-icon-neutral-#{$shade} { fill: $value !important; }
396
+ .color-text-neutral-#{$shade} {
397
+ color: $value !important;
398
+ }
399
+ .color-bg-neutral-#{$shade} {
400
+ background-color: $value !important;
401
+ }
402
+ .color-stroke-neutral-#{$shade} {
403
+ border-color: $value !important;
404
+ }
405
+ .color-icon-neutral-#{$shade} {
406
+ fill: $value !important;
407
+ }
262
408
  }
263
409
 
264
410
  // ALPHA NEUTRAL STROKE CLASSES
265
411
  $neutral-alphas: (90, 80, 70, 60, 50, 40, 30, 20, 10, 5);
266
412
  @each $a in $neutral-alphas {
267
413
  .color-stroke-neutral-alpha-#{$a} {
268
- border-color: rgba(red($neutral-color-default), green($neutral-color-default), blue($neutral-color-default), $a * 0.01) !important;
414
+ border-color: rgba(
415
+ red($neutral-color-default),
416
+ green($neutral-color-default),
417
+ blue($neutral-color-default),
418
+ $a * 0.01
419
+ ) !important;
269
420
  }
270
421
  }
271
422
 
@@ -274,19 +425,35 @@ $dynamic-types: ("brand", "primary", "secondary");
274
425
 
275
426
  @each $type in $dynamic-types {
276
427
  // Base Alias
277
- .color-text-#{$type} { color: var(--#{$type}-color) !important; }
278
- .color-bg-#{$type} { background-color: var(--#{$type}-color) !important; }
279
- .color-stroke-#{$type} { border-color: var(--#{$type}-color) !important; }
280
- .color-icon-#{$type} { fill: var(--#{$type}-color) !important; }
428
+ .color-text-#{$type} {
429
+ color: var(--#{$type}-color) !important;
430
+ }
431
+ .color-bg-#{$type} {
432
+ background-color: var(--#{$type}-color) !important;
433
+ }
434
+ .color-stroke-#{$type} {
435
+ border-color: var(--#{$type}-color) !important;
436
+ }
437
+ .color-icon-#{$type} {
438
+ fill: var(--#{$type}-color) !important;
439
+ }
281
440
 
282
441
  // Shades
283
442
  @each $shade, $offset in $shade-offsets {
284
- .color-text-#{$type}-#{$shade} { color: var(--#{$type}-#{$shade}) !important; }
285
- .color-bg-#{$type}-#{$shade} { background-color: var(--#{$type}-#{$shade}) !important; }
286
- .color-stroke-#{$type}-#{$shade} { border-color: var(--#{$type}-#{$shade}) !important; }
443
+ .color-text-#{$type}-#{$shade} {
444
+ color: var(--#{$type}-#{$shade}) !important;
445
+ }
446
+ .color-bg-#{$type}-#{$shade} {
447
+ background-color: var(--#{$type}-#{$shade}) !important;
448
+ }
449
+ .color-stroke-#{$type}-#{$shade} {
450
+ border-color: var(--#{$type}-#{$shade}) !important;
451
+ }
287
452
 
288
453
  @if $shade == "700" or $shade == "300" {
289
- .color-icon-#{$type}-#{$shade} { fill: var(--#{$type}-#{$shade}) !important; }
454
+ .color-icon-#{$type}-#{$shade} {
455
+ fill: var(--#{$type}-#{$shade}) !important;
456
+ }
290
457
  }
291
458
  }
292
459
 
@@ -310,15 +477,23 @@ $dynamic-types: ("brand", "primary", "secondary");
310
477
  // 7. UTILITY MIXINS
311
478
  // ============================================================================
312
479
  @mixin text-neutral($shade) {
313
- @if $shade == 'B' { color: $neutral-B !important; }
314
- @else if $shade == 'W' { color: $neutral-W !important; }
315
- @else { color: map-get($neutral-shades, $shade) !important; }
480
+ @if $shade == "B" {
481
+ color: $neutral-B !important;
482
+ } @else if $shade == "W" {
483
+ color: $neutral-W !important;
484
+ } @else {
485
+ color: map-get($neutral-shades, $shade) !important;
486
+ }
316
487
  }
317
488
 
318
489
  @mixin bg-neutral($shade) {
319
- @if $shade == 'B' { background-color: $neutral-B !important; }
320
- @else if $shade == 'W' { background-color: $neutral-W !important; }
321
- @else { background-color: map-get($neutral-shades, $shade) !important; }
490
+ @if $shade == "B" {
491
+ background-color: $neutral-B !important;
492
+ } @else if $shade == "W" {
493
+ background-color: $neutral-W !important;
494
+ } @else {
495
+ background-color: map-get($neutral-shades, $shade) !important;
496
+ }
322
497
  }
323
498
 
324
499
  // ============================================================================
@@ -329,7 +504,7 @@ $widths: (
329
504
  "xs": 24px,
330
505
  "sm": 28px,
331
506
  "md": 36px,
332
- "lg": 44px
507
+ "lg": 44px,
333
508
  );
334
509
 
335
510
  $heights: (
@@ -337,7 +512,7 @@ $heights: (
337
512
  "xs": 24px,
338
513
  "sm": 28px,
339
514
  "md": 36px,
340
- "lg": 44px
515
+ "lg": 44px,
341
516
  );
342
517
 
343
518
  $font-sizes: (
@@ -345,7 +520,7 @@ $font-sizes: (
345
520
  "sm": 14px,
346
521
  "md": 14px,
347
522
  "lg": 16px,
348
- "xl": 20px
523
+ "xl": 20px,
349
524
  );
350
525
 
351
526
  $radius: (
@@ -353,7 +528,7 @@ $radius: (
353
528
  "sm": 6px,
354
529
  "md": 8px,
355
530
  "lg": 12px,
356
- "full": 999px
531
+ "full": 999px,
357
532
  );
358
533
 
359
534
  :root {
@@ -364,19 +539,27 @@ $radius: (
364
539
 
365
540
  // --- Helper Classes cho Sizing ---
366
541
  @each $name, $val in $heights {
367
- .h-#{$name} { height: $val !important; }
542
+ .h-#{$name} {
543
+ height: $val !important;
544
+ }
368
545
  }
369
546
 
370
547
  @each $name, $val in $widths {
371
- .w-#{$name} { width: $val !important; }
548
+ .w-#{$name} {
549
+ width: $val !important;
550
+ }
372
551
  }
373
552
 
374
553
  @each $name, $val in $font-sizes {
375
- .text-#{$name} { font-size: $val !important; }
554
+ .text-#{$name} {
555
+ font-size: $val !important;
556
+ }
376
557
  }
377
558
 
378
559
  @each $name, $val in $radius {
379
- .rounded-#{$name} { border-radius: $val !important; }
560
+ .rounded-#{$name} {
561
+ border-radius: $val !important;
562
+ }
380
563
  }
381
564
 
382
565
  // ============================================================================
@@ -394,3 +577,8 @@ $radius: (
394
577
  .rounded-default-gray {
395
578
  border-color: #344054 !important;
396
579
  }
580
+
581
+ // ============================================================================
582
+ // 10. ICON SYSTEM
583
+ // ============================================================================
584
+ @import "icons";