@stn-uiux/pub-ui 0.1.73 → 0.1.76

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.
Files changed (55) hide show
  1. package/dist/{chunk-KLIYAEJA.js → chunk-2LRCGTKQ.js} +7 -17
  2. package/dist/chunk-2LRCGTKQ.js.map +1 -0
  3. package/dist/chunk-3CYSR7V4.js +149 -0
  4. package/dist/chunk-3CYSR7V4.js.map +1 -0
  5. package/dist/{chunk-WN7FYFIO.js → chunk-AJLP3Y53.js} +3 -1
  6. package/dist/chunk-AJLP3Y53.js.map +1 -0
  7. package/dist/chunk-RY53LLWK.js +9 -0
  8. package/dist/chunk-RY53LLWK.js.map +1 -0
  9. package/dist/{chunk-NB4NJQYE.js → chunk-YJLOIDKY.js} +24 -24
  10. package/dist/chunk-YJLOIDKY.js.map +1 -0
  11. package/dist/cli.js +1 -1
  12. package/dist/data/index.d.ts +1 -1
  13. package/dist/data/index.js +7 -5
  14. package/dist/data/stnCard.d.ts +3 -1
  15. package/dist/data/stnCard.js +3 -1
  16. package/dist/data/stnChip.d.ts +2 -3
  17. package/dist/data/stnChip.js +1 -1
  18. package/dist/data/stnLogin.d.ts +2 -2
  19. package/dist/data/stnLogin.js +2 -1
  20. package/dist/data/stnPackageVersion.d.ts +2 -2
  21. package/dist/data/stnPackageVersion.js +1 -1
  22. package/dist/data/stnTextField.d.ts +2 -2
  23. package/dist/data/stnTextField.js +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +7 -5
  26. package/package.json +1 -1
  27. package/styles/components/stn-breadcrumb.css +37 -34
  28. package/styles/components/stn-card.css +24 -3
  29. package/styles/components/stn-date-picker.css +1 -1
  30. package/styles/components/stn-drawer.css +182 -0
  31. package/styles/components/stn-event-banner.css +18 -18
  32. package/styles/components/stn-pagination.css +9 -8
  33. package/styles/components/stn-progress-bar.css +5 -5
  34. package/styles/components/stn-side-nav.css +55 -31
  35. package/styles/components/stn-status.css +22 -22
  36. package/styles/components/stn-table.css +42 -0
  37. package/styles/components/stn-tabs.css +3 -3
  38. package/styles/components/stn-tooltip.css +1 -1
  39. package/styles/components/stn-widget.css +3 -3
  40. package/styles/patterns/stn-alert-center.css +6 -6
  41. package/styles/patterns/stn-header.css +7 -7
  42. package/styles/style-pub.css +1 -0
  43. package/styles/tokens/stn-breakpoint.css +0 -12
  44. package/styles/tokens/stn-colors-semantic.css +15 -13
  45. package/styles/tokens/stn-elevation.css +5 -1
  46. package/styles/tokens/stn-radius-semantic.css +1 -1
  47. package/styles/tokens/stn-size-semantic.css +8 -0
  48. package/styles/tokens/stn-spacing-semantic.css +25 -0
  49. package/dist/chunk-AWJXDCX2.js +0 -151
  50. package/dist/chunk-AWJXDCX2.js.map +0 -1
  51. package/dist/chunk-KLIYAEJA.js.map +0 -1
  52. package/dist/chunk-NB4NJQYE.js.map +0 -1
  53. package/dist/chunk-Q363EBGR.js +0 -9
  54. package/dist/chunk-Q363EBGR.js.map +0 -1
  55. package/dist/chunk-WN7FYFIO.js.map +0 -1
@@ -12,13 +12,13 @@
12
12
  */
13
13
 
14
14
  .stn-breadcrumb {
15
- --stn-breadcrumb-gap: var(--stn-space-16, 16px);
16
- --stn-breadcrumb-segment-gap: var(--stn-space-8, 8px);
17
- --stn-breadcrumb-font-size: var(--stn-font-size-14, 14px);
18
- --stn-breadcrumb-icon-size: var(--stn-size-16, 16px);
19
- --stn-breadcrumb-sep-size: var(--stn-size-12, 12px);
15
+ --stn-breadcrumb-gap: var(--stn-breadcrumb-gap-md, var(--stn-space-16, 16px));
16
+ --stn-breadcrumb-segment-gap: var(--stn-breadcrumb-segment-gap-md, var(--stn-space-8, 8px));
17
+ --stn-breadcrumb-font-size: var(--stn-text-body-medium-size, var(--stn-font-size-14, 14px));
18
+ --stn-breadcrumb-icon-size: var(--stn-breadcrumb-icon-size-md, var(--stn-size-16, 16px));
19
+ --stn-breadcrumb-sep-size: var(--stn-breadcrumb-sep-size-md, var(--stn-size-12, 12px));
20
20
  --stn-breadcrumb-chip-height: var(--stn-chip-height-md, var(--stn-size-24, 24px));
21
- --stn-breadcrumb-chip-pad-x: var(--stn-space-8, 8px);
21
+ --stn-breadcrumb-chip-pad-x: var(--stn-breadcrumb-chip-pad-x-md, var(--stn-space-8, 8px));
22
22
 
23
23
  box-sizing: border-box;
24
24
  color: var(--stn-breadcrumb-fg);
@@ -26,33 +26,33 @@
26
26
  }
27
27
 
28
28
  .stn-breadcrumb.sm {
29
- --stn-breadcrumb-gap: var(--stn-space-8, 8px);
30
- --stn-breadcrumb-segment-gap: var(--stn-space-4, 4px);
31
- --stn-breadcrumb-font-size: var(--stn-font-size-12, 12px);
32
- --stn-breadcrumb-icon-size: var(--stn-size-14, 14px);
33
- --stn-breadcrumb-sep-size: var(--stn-size-10, 10px);
29
+ --stn-breadcrumb-gap: var(--stn-breadcrumb-gap-sm, var(--stn-space-8, 8px));
30
+ --stn-breadcrumb-segment-gap: var(--stn-breadcrumb-segment-gap-sm, var(--stn-space-4, 4px));
31
+ --stn-breadcrumb-font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
32
+ --stn-breadcrumb-icon-size: var(--stn-breadcrumb-icon-size-sm, var(--stn-size-14, 14px));
33
+ --stn-breadcrumb-sep-size: var(--stn-breadcrumb-sep-size-sm, var(--stn-size-10, 10px));
34
34
  --stn-breadcrumb-chip-height: var(--stn-chip-height-sm, var(--stn-size-20, 20px));
35
- --stn-breadcrumb-chip-pad-x: var(--stn-space-6, 6px);
35
+ --stn-breadcrumb-chip-pad-x: var(--stn-breadcrumb-chip-pad-x-sm, var(--stn-space-6, 6px));
36
36
  }
37
37
 
38
38
  .stn-breadcrumb.md {
39
- --stn-breadcrumb-gap: var(--stn-space-16, 16px);
40
- --stn-breadcrumb-segment-gap: var(--stn-space-8, 8px);
41
- --stn-breadcrumb-font-size: var(--stn-font-size-14, 14px);
42
- --stn-breadcrumb-icon-size: var(--stn-size-16, 16px);
43
- --stn-breadcrumb-sep-size: var(--stn-size-12, 12px);
39
+ --stn-breadcrumb-gap: var(--stn-breadcrumb-gap-md, var(--stn-space-16, 16px));
40
+ --stn-breadcrumb-segment-gap: var(--stn-breadcrumb-segment-gap-md, var(--stn-space-8, 8px));
41
+ --stn-breadcrumb-font-size: var(--stn-text-body-medium-size, var(--stn-font-size-14, 14px));
42
+ --stn-breadcrumb-icon-size: var(--stn-breadcrumb-icon-size-md, var(--stn-size-16, 16px));
43
+ --stn-breadcrumb-sep-size: var(--stn-breadcrumb-sep-size-md, var(--stn-size-12, 12px));
44
44
  --stn-breadcrumb-chip-height: var(--stn-chip-height-md, var(--stn-size-24, 24px));
45
- --stn-breadcrumb-chip-pad-x: var(--stn-space-8, 8px);
45
+ --stn-breadcrumb-chip-pad-x: var(--stn-breadcrumb-chip-pad-x-md, var(--stn-space-8, 8px));
46
46
  }
47
47
 
48
48
  .stn-breadcrumb.lg {
49
- --stn-breadcrumb-gap: var(--stn-space-24, 24px);
50
- --stn-breadcrumb-segment-gap: var(--stn-space-12, 12px);
51
- --stn-breadcrumb-font-size: var(--stn-font-size-16, 16px);
52
- --stn-breadcrumb-icon-size: var(--stn-size-18, 18px);
53
- --stn-breadcrumb-sep-size: var(--stn-size-14, 14px);
49
+ --stn-breadcrumb-gap: var(--stn-breadcrumb-gap-lg, var(--stn-space-24, 24px));
50
+ --stn-breadcrumb-segment-gap: var(--stn-breadcrumb-segment-gap-lg, var(--stn-space-12, 12px));
51
+ --stn-breadcrumb-font-size: var(--stn-text-title-small-size, var(--stn-font-size-16, 16px));
52
+ --stn-breadcrumb-icon-size: var(--stn-breadcrumb-icon-size-lg, var(--stn-size-18, 18px));
53
+ --stn-breadcrumb-sep-size: var(--stn-breadcrumb-sep-size-lg, var(--stn-size-14, 14px));
54
54
  --stn-breadcrumb-chip-height: var(--stn-chip-height-lg, var(--stn-size-28, 28px));
55
- --stn-breadcrumb-chip-pad-x: var(--stn-space-12, 12px);
55
+ --stn-breadcrumb-chip-pad-x: var(--stn-breadcrumb-chip-pad-x-lg, var(--stn-space-12, 12px));
56
56
  }
57
57
 
58
58
  .stn-breadcrumb__list {
@@ -89,7 +89,7 @@
89
89
  margin: 0;
90
90
  padding: 0;
91
91
  border: 0;
92
- border-radius: var(--stn-radius-4, 4px);
92
+ border-radius: var(--stn-radius-sm, var(--stn-radius-4, 4px));
93
93
  background: transparent;
94
94
  color: inherit;
95
95
  font: inherit;
@@ -131,8 +131,8 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
131
131
  .stn-breadcrumb__segment:focus-visible,
132
132
  .stn-breadcrumb .collapsed:focus-visible,
133
133
  .stn-breadcrumb__back:focus-visible {
134
- outline: 2px solid var(--stn-focus-ring);
135
- outline-offset: 1px;
134
+ outline: var(--stn-focus-ring-width, 2px) solid var(--stn-focus-ring);
135
+ outline-offset: var(--stn-focus-ring-offset, 1px);
136
136
  }
137
137
 
138
138
  .stn-breadcrumb__icon-glyph {
@@ -214,12 +214,12 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
214
214
  z-index: var(--stn-dropdown-menu-z, 150);
215
215
  display: flex;
216
216
  flex-direction: column;
217
- min-width: var(--stn-size-120, 120px);
217
+ min-width: var(--stn-input-w120, var(--stn-size-120, 120px));
218
218
  margin: 0;
219
219
  padding: var(--stn-space-4, 4px);
220
220
  list-style: none;
221
221
  border: 1px solid var(--stn-pop-border);
222
- border-radius: var(--stn-radius-4, 4px);
222
+ border-radius: var(--stn-radius-sm, var(--stn-radius-4, 4px));
223
223
  background: var(--stn-dropdown-menu-bg, var(--stn-pop-surface));
224
224
  box-shadow: var(--stn-pop-shadow);
225
225
  }
@@ -233,7 +233,7 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
233
233
  margin: 0;
234
234
  padding: var(--stn-space-8, 8px);
235
235
  border: 0;
236
- border-radius: var(--stn-radius-4, 4px);
236
+ border-radius: var(--stn-radius-sm, var(--stn-radius-4, 4px));
237
237
  background: transparent;
238
238
  color: var(--stn-pop-title, inherit);
239
239
  font: inherit;
@@ -313,7 +313,7 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
313
313
  background: color-mix(in srgb, var(--stn-breadcrumb-fg) 16%, transparent);
314
314
  }
315
315
 
316
- /* Compact — 좁은 폭: 아이콘만 (라벨 숨김). 아이콘 없는 세그먼트는 라벨 유지 */
316
+ /* Compact — STN Breakpoint md (1024px) 미만 좁은 화면: 아이콘만 (라벨 숨김). 아이콘 없는 세그먼트는 라벨 유지 */
317
317
  .stn-breadcrumb--icon-only .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph) .stn-breadcrumb__label,
318
318
  .stn-breadcrumb--icon-only .stn-breadcrumb__back .stn-breadcrumb__label {
319
319
  position: absolute;
@@ -334,9 +334,10 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
334
334
 
335
335
  .stn-breadcrumb--icon-only.chip .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph),
336
336
  .stn-breadcrumb--icon-only.chip .stn-breadcrumb__back {
337
- padding-inline: var(--stn-space-6, 6px);
337
+ padding-inline: var(--stn-space-6);
338
338
  }
339
339
 
340
+ /* STN Viewport Breakpoint md (1024px) 미만 기준 - CSS media query는 var() 미지원이므로 1023px 리터럴 명시 */
340
341
  @media (max-width: 1023px) {
341
342
  .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph) .stn-breadcrumb__label,
342
343
  .stn-breadcrumb__back .stn-breadcrumb__label {
@@ -358,10 +359,11 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
358
359
 
359
360
  .stn-breadcrumb.chip .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph),
360
361
  .stn-breadcrumb.chip .stn-breadcrumb__back {
361
- padding-inline: var(--stn-space-6, 6px);
362
+ padding-inline: var(--stn-space-6);
362
363
  }
363
364
  }
364
365
 
366
+ /* Container Query: stn-header 컨테이너 1024px(md) 미만 */
365
367
  @container stn-header (max-width: 1023px) {
366
368
  .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph) .stn-breadcrumb__label,
367
369
  .stn-breadcrumb__back .stn-breadcrumb__label {
@@ -383,6 +385,7 @@ a.stn-breadcrumb__segment:hover .stn-breadcrumb__label {
383
385
 
384
386
  .stn-breadcrumb.chip .stn-breadcrumb__segment:has(.stn-breadcrumb__icon-glyph),
385
387
  .stn-breadcrumb.chip .stn-breadcrumb__back {
386
- padding-inline: var(--stn-space-6, 6px);
388
+ padding-inline: var(--stn-space-6);
387
389
  }
388
390
  }
391
+
@@ -31,6 +31,27 @@
31
31
  box-shadow: var(--stn-card-shadow);
32
32
  }
33
33
 
34
+ /* Severity Tint Surfaces (critical · major · minor · warning) */
35
+ .stn-card.severity-critical {
36
+ background-color: var(--stn-severity-critical-bg);
37
+ border: 1px solid var(--stn-severity-critical-border);
38
+ }
39
+
40
+ .stn-card.severity-major {
41
+ background-color: var(--stn-severity-major-bg);
42
+ border: 1px solid var(--stn-severity-major-border);
43
+ }
44
+
45
+ .stn-card.severity-minor {
46
+ background-color: var(--stn-severity-minor-bg);
47
+ border: 1px solid var(--stn-severity-minor-border);
48
+ }
49
+
50
+ .stn-card.severity-warning {
51
+ background-color: var(--stn-severity-warning-bg);
52
+ border: 1px solid var(--stn-severity-warning-border);
53
+ }
54
+
34
55
  /* Radius */
35
56
  .stn-card.radius-sm { border-radius: var(--stn-radius-8, 8px); }
36
57
  .stn-card.radius-md { border-radius: var(--stn-radius-12, 12px); }
@@ -99,9 +120,9 @@
99
120
  }
100
121
 
101
122
  /* Card title size modifiers */
102
- .stn-card__header-title.sm { font-size: var(--stn-font-size-14, 14px); }
103
- .stn-card__header-title.md { font-size: var(--stn-font-size-16, 16px); }
104
- .stn-card__header-title.lg { font-size: var(--stn-font-size-18, 18px); }
123
+ .stn-card__header-title.sm { font-size: var(--stn-text-body-medium-size, var(--stn-font-size-14, 14px)); }
124
+ .stn-card__header-title.md { font-size: var(--stn-text-title-small-size, var(--stn-font-size-16, 16px)); }
125
+ .stn-card__header-title.lg { font-size: var(--stn-text-title-medium-size, var(--stn-font-size-18, 18px)); }
105
126
 
106
127
  /* Card title weight modifiers */
107
128
  .stn-card__header-title.regular { font-weight: var(--stn-font-weight-regular, 400); }
@@ -16,7 +16,7 @@
16
16
  --calendar-disabled-font: var(--stn-date-picker-disabled-fg);
17
17
 
18
18
  position: fixed;
19
- z-index: 1300;
19
+ z-index: var(--stn-elevation-z-dropdown);
20
20
  box-sizing: border-box;
21
21
  border: var(--stn-size-1) solid var(--calendar-border);
22
22
  border-radius: var(--stn-radius-8);
@@ -0,0 +1,182 @@
1
+ /**
2
+ * STN Drawer Component (L2 Side Sheet)
3
+ *
4
+ * - L1.8 Side Sheet 계층 (z-index: var(--stn-elevation-z-drawer))
5
+ * - non-dimming (dim={false}) 및 dimming (dim={true}) 두 가지 모드 완벽 지원
6
+ * - 표준 크기 스케일 (sm, md, lg, xl, full)
7
+ * - 방향 (right, left, bottom) 지원
8
+ */
9
+
10
+ /* ── 1. Drawer Stack Root ── */
11
+ .stn-drawer-stack {
12
+ position: fixed;
13
+ inset: 0;
14
+ z-index: var(--stn-elevation-z-drawer); /* L1.8 Side Sheet 계층 (z-180, Dropdown 150 초과 / Modal 200 미만) */
15
+ display: flex;
16
+ visibility: hidden;
17
+ pointer-events: none;
18
+ transition: visibility var(--stn-motion-duration-fast, 0.25s) ease;
19
+ }
20
+
21
+ .stn-drawer-stack.is-open {
22
+ visibility: visible;
23
+ }
24
+
25
+ /* Dim (Backdrop) 모드 */
26
+ .stn-drawer-stack--dim.is-open {
27
+ pointer-events: auto;
28
+ }
29
+
30
+ /* ── 2. Dim Scrim ── */
31
+ .stn-drawer-stack__dim {
32
+ position: absolute;
33
+ inset: 0;
34
+ background: var(--stn-dim-bg);
35
+ backdrop-filter: blur(var(--stn-dim-blur));
36
+ opacity: 0;
37
+ pointer-events: auto;
38
+ transition: opacity var(--stn-motion-duration-fast, 0.25s) ease;
39
+ }
40
+
41
+ .stn-drawer-stack.is-open .stn-drawer-stack__dim {
42
+ opacity: 1;
43
+ }
44
+
45
+ /* ── 3. Drawer Panel ── */
46
+ .stn-drawer {
47
+ position: absolute;
48
+ display: flex;
49
+ flex-direction: column;
50
+ background: var(--stn-drawer-bg);
51
+ border-color: var(--stn-border-subtle);
52
+ border-style: solid;
53
+ border-width: 0;
54
+ box-shadow: var(--stn-shadow-xl);
55
+ pointer-events: auto;
56
+ transition: transform var(--stn-motion-duration-fast, 0.25s) var(--stn-motion-ease-out, cubic-bezier(0.16, 1, 0.3, 1));
57
+ will-change: transform;
58
+ }
59
+
60
+ /* Drawer Panel Padding Scale (.padding-none, .padding-xs ~ .padding-xl) */
61
+ .stn-drawer.padding-none { padding: var(--stn-drawer-padding-none); }
62
+ .stn-drawer.padding-xs { padding: var(--stn-drawer-padding-xs); }
63
+ .stn-drawer.padding-sm { padding: var(--stn-drawer-padding-sm); }
64
+ .stn-drawer.padding-md { padding: var(--stn-drawer-padding-md); }
65
+ .stn-drawer.padding-lg { padding: var(--stn-drawer-padding-lg); }
66
+ .stn-drawer.padding-xl { padding: var(--stn-drawer-padding-xl); }
67
+
68
+ /* Drawer Panel Gap Scale (Header, Body, Footer 간격 조절) */
69
+ .stn-drawer.gap-none { gap: var(--stn-drawer-gap-none); }
70
+ .stn-drawer.gap-xs { gap: var(--stn-drawer-gap-xs); }
71
+ .stn-drawer.gap-sm { gap: var(--stn-drawer-gap-sm); }
72
+ .stn-drawer.gap-md { gap: var(--stn-drawer-gap-md); }
73
+ .stn-drawer.gap-lg { gap: var(--stn-drawer-gap-lg); }
74
+ .stn-drawer.gap-xl { gap: var(--stn-drawer-gap-xl); }
75
+
76
+ /* ── 4. Placement (방향) ── */
77
+ /* Right (기본) */
78
+ .stn-drawer--right {
79
+ top: 0;
80
+ bottom: 0;
81
+ right: 0;
82
+ height: 100%;
83
+ width: min(var(--stn-drawer-active-width, 480px), 100vw);
84
+ border-left-width: 1px;
85
+ transform: translateX(100%);
86
+ }
87
+
88
+ .stn-drawer-stack.is-open .stn-drawer--right {
89
+ transform: translateX(0);
90
+ }
91
+
92
+ /* Left */
93
+ .stn-drawer--left {
94
+ top: 0;
95
+ bottom: 0;
96
+ left: 0;
97
+ height: 100%;
98
+ width: min(var(--stn-drawer-active-width, 480px), 100vw);
99
+ border-right-width: 1px;
100
+ transform: translateX(-100%);
101
+ }
102
+
103
+ .stn-drawer-stack.is-open .stn-drawer--left {
104
+ transform: translateX(0);
105
+ }
106
+
107
+ /* Bottom */
108
+ .stn-drawer--bottom {
109
+ left: 0;
110
+ right: 0;
111
+ bottom: 0;
112
+ width: 100%;
113
+ height: min(var(--stn-drawer-active-height, 480px), 100vh);
114
+ border-top-width: 1px;
115
+ transform: translateY(100%);
116
+ }
117
+
118
+ .stn-drawer-stack.is-open .stn-drawer--bottom {
119
+ transform: translateY(0);
120
+ }
121
+
122
+ /* ── 5. Size Variants (표준 스케일) ── */
123
+ .stn-drawer--sm { --stn-drawer-active-width: var(--stn-drawer-width-sm, 360px); --stn-drawer-active-height: var(--stn-drawer-height-sm, 360px); }
124
+ .stn-drawer--md { --stn-drawer-active-width: var(--stn-drawer-width-md, 480px); --stn-drawer-active-height: var(--stn-drawer-height-md, 480px); }
125
+ .stn-drawer--lg { --stn-drawer-active-width: var(--stn-drawer-width-lg, 640px); --stn-drawer-active-height: var(--stn-drawer-height-lg, 640px); }
126
+ .stn-drawer--xl { --stn-drawer-active-width: var(--stn-drawer-width-xl, 800px); --stn-drawer-active-height: var(--stn-drawer-height-xl, 800px); }
127
+
128
+ /* ── 6. Header, Body, Footer Subcomponents ── */
129
+ .stn-drawer__head {
130
+ display: flex;
131
+ align-items: center;
132
+ justify-content: space-between;
133
+ padding: var(--stn-space-4) var(--stn-space-5);
134
+ background: var(--stn-drawer-bg);
135
+ }
136
+
137
+ .stn-drawer__head-title {
138
+ margin: 0;
139
+ font-size: var(--stn-text-h4-size);
140
+ font-weight: var(--stn-font-weight-semibold);
141
+ color: var(--stn-text-primary);
142
+ line-height: var(--stn-text-h4-line-height);
143
+ }
144
+
145
+ .stn-drawer__subtitle {
146
+ margin: var(--stn-space-1) 0 0;
147
+ font-size: var(--stn-text-body-small-size);
148
+ color: var(--stn-text-secondary);
149
+ }
150
+
151
+ .stn-drawer__close {
152
+ flex-shrink: 0;
153
+ }
154
+
155
+ .stn-drawer__body {
156
+ flex: 1;
157
+ overflow-y: auto;
158
+ padding: var(--stn-space-5);
159
+ color: var(--stn-text-primary);
160
+ display: flex;
161
+ flex-direction: column;
162
+ }
163
+
164
+ .stn-drawer__footer {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: var(--stn-space-2);
168
+ padding: var(--stn-space-3) var(--stn-space-5);
169
+ background: var(--stn-elevation-surface-1);
170
+ }
171
+
172
+ .stn-drawer__footer--right {
173
+ justify-content: flex-end;
174
+ }
175
+
176
+ .stn-drawer__footer--center {
177
+ justify-content: center;
178
+ }
179
+
180
+ .stn-drawer__footer--between {
181
+ justify-content: space-between;
182
+ }
@@ -80,14 +80,14 @@
80
80
  padding: var(--stn-space-12, 12px) var(--stn-space-16, 16px);
81
81
  border-radius: var(--stn-radius-8, 8px);
82
82
  background: var(--stn-event-banner-bg);
83
- backdrop-filter: blur(24px);
84
- -webkit-backdrop-filter: blur(24px);
83
+ backdrop-filter: blur(var(--stn-dim-blur, 8px));
84
+ -webkit-backdrop-filter: blur(var(--stn-dim-blur, 8px));
85
85
  isolation: isolate;
86
86
  transform: translateZ(0);
87
87
  overflow: hidden;
88
- z-index: 1000;
89
- font-family: var(--stn-font-family-pretendard, var(--Typography-font-family-pretendard, sans-serif));
90
- gap: var(--stn-space-12, 12px);
88
+ z-index: var(--stn-elevation-z-banner);
89
+ font-family: var(--stn-font-body);
90
+ gap: var(--stn-space-12);
91
91
  border: 1px solid var(--stn-event-banner-cr-border);
92
92
  border-left: 2px solid var(--stn-event-banner-cr-accent);
93
93
  box-shadow: var(--stn-event-banner-cr-shadow);
@@ -286,8 +286,8 @@
286
286
 
287
287
  /* Alert Icon */
288
288
  .stn-event-banner__icon-wrap {
289
- width: 24px;
290
- height: 24px;
289
+ width: var(--stn-event-banner-icon-size, var(--stn-size-24, 24px));
290
+ height: var(--stn-event-banner-icon-size, var(--stn-size-24, 24px));
291
291
  display: flex;
292
292
  align-items: center;
293
293
  justify-content: center;
@@ -298,7 +298,7 @@
298
298
  .stn-event-banner__text {
299
299
  display: flex;
300
300
  flex-direction: column;
301
- gap: 3px;
301
+ gap: var(--stn-event-banner-text-gap, var(--stn-space-4, 4px));
302
302
  align-items: stretch;
303
303
  min-width: 0;
304
304
  flex: 1 1 auto;
@@ -317,24 +317,24 @@
317
317
  }
318
318
 
319
319
  .stn-event-banner__title {
320
- font-size: var(--stn-font-size-14, 14px);
320
+ font-size: var(--stn-text-body-medium-size, var(--stn-font-size-14, 14px));
321
321
  font-weight: var(--stn-font-weight-semibold, 600);
322
322
  color: var(--stn-event-banner-title);
323
- line-height: 1.2;
323
+ line-height: var(--stn-line-height-tight, 1.2);
324
324
  }
325
325
 
326
326
  .stn-event-banner__time {
327
- font-size: var(--stn-font-size-12, 12px);
327
+ font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
328
328
  font-weight: var(--stn-font-weight-regular, 400);
329
329
  color: var(--stn-event-banner-time);
330
- line-height: 1.2;
330
+ line-height: var(--stn-line-height-tight, 1.2);
331
331
  }
332
332
 
333
333
  /* Action Group */
334
334
  .stn-event-banner__actions {
335
335
  display: flex;
336
336
  align-items: center;
337
- gap: 8px;
337
+ gap: var(--stn-event-banner-actions-gap, var(--stn-space-8, 8px));
338
338
  flex-shrink: 0;
339
339
  }
340
340
 
@@ -344,11 +344,11 @@
344
344
  display: inline-flex;
345
345
  align-items: center;
346
346
  justify-content: center;
347
- height: 30px;
348
- padding: 4px 14px;
349
- border-radius: var(--stn-radius-circle, 9999px);
350
- font-family: var(--stn-font-family-pretendard, var(--Typography-font-family-pretendard, sans-serif));
351
- font-size: 13px;
347
+ height: var(--stn-event-banner-btn-height, var(--stn-size-28, 28px));
348
+ padding: var(--stn-event-banner-btn-padding-block, var(--stn-space-4, 4px)) var(--stn-event-banner-btn-padding-inline, var(--stn-space-14, 14px));
349
+ border-radius: var(--stn-radius-chip-pill, var(--stn-radius-circle, 9999px));
350
+ font-family: var(--stn-font-body);
351
+ font-size: var(--stn-text-body-small-size, var(--stn-font-size-13, 13px));
352
352
  font-weight: var(--stn-font-weight-semibold, 600);
353
353
  line-height: 1;
354
354
  white-space: nowrap;
@@ -68,7 +68,7 @@
68
68
  cursor: pointer;
69
69
  appearance: none;
70
70
  -webkit-appearance: none;
71
- box-shadow: none !important;
71
+ box-shadow: none;
72
72
  vertical-align: middle;
73
73
  transition: all 0.15s ease;
74
74
  }
@@ -118,21 +118,21 @@
118
118
  /* Size variations (STN 규격: sm · md · lg) */
119
119
  .stn-pagination--sm {
120
120
  --stn-pagination-size: var(--stn-size-28, 28px);
121
- --stn-pagination-font-size: var(--stn-font-size-12, 12px);
121
+ --stn-pagination-font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
122
122
  --stn-pagination-gap: var(--stn-space-4, 4px);
123
123
  --stn-pagination-arrow-gap: var(--stn-space-8, 8px);
124
124
  }
125
125
 
126
126
  .stn-pagination--md {
127
127
  --stn-pagination-size: var(--stn-size-32, 32px);
128
- --stn-pagination-font-size: var(--stn-font-size-13, 13px);
128
+ --stn-pagination-font-size: var(--stn-text-body-small-size, var(--stn-font-size-13, 13px));
129
129
  --stn-pagination-gap: var(--stn-space-8, 8px);
130
130
  --stn-pagination-arrow-gap: var(--stn-space-12, 12px);
131
131
  }
132
132
 
133
133
  .stn-pagination--lg {
134
134
  --stn-pagination-size: var(--stn-size-36, 36px);
135
- --stn-pagination-font-size: var(--stn-font-size-14, 14px);
135
+ --stn-pagination-font-size: var(--stn-text-body-medium-size, var(--stn-font-size-14, 14px));
136
136
  --stn-pagination-gap: var(--stn-space-8, 8px);
137
137
  --stn-pagination-arrow-gap: var(--stn-space-16, 16px);
138
138
  }
@@ -215,12 +215,13 @@
215
215
  flex: 0 0 auto;
216
216
  }
217
217
 
218
- /* 모바일 좁은 화면 컴팩트 최적화
219
- * 브레이크포인트: --stn-pagination-compact-breakpoint (480px)
220
- * CSS @media에서 var() 사용 불가이므로 리터럴 유지; 치수는 시멘틱 토큰 참조.
221
- */
218
+ /* 모바일 좁은 화면 컴팩트 최적화 (max-width: 480px) */
222
219
  @media (max-width: 480px) {
223
220
  .stn-pagination {
221
+ --stn-pagination-compact-size: var(--stn-size-28, 28px);
222
+ --stn-pagination-compact-padding: var(--stn-space-6, 6px);
223
+ --stn-pagination-compact-font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
224
+ --stn-pagination-compact-gap: var(--stn-space-4, 4px);
224
225
  gap: var(--stn-pagination-compact-gap);
225
226
  }
226
227
 
@@ -198,7 +198,7 @@
198
198
  flex-shrink: 0;
199
199
  white-space: nowrap;
200
200
  font-family: var(--stn-font-body);
201
- font-size: var(--stn-font-size-12);
201
+ font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
202
202
  font-weight: var(--stn-font-weight-medium);
203
203
  color: var(--stn-progress-title-color);
204
204
  }
@@ -207,7 +207,7 @@
207
207
  flex-shrink: 0;
208
208
  white-space: nowrap;
209
209
  font-family: var(--stn-font-body);
210
- font-size: var(--stn-font-size-12);
210
+ font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
211
211
  font-weight: var(--stn-font-weight-medium);
212
212
  color: var(--stn-progress-value-color);
213
213
  }
@@ -217,7 +217,7 @@
217
217
  justify-content: space-between;
218
218
  align-items: center;
219
219
  font-family: var(--stn-font-body);
220
- font-size: var(--stn-font-size-12);
220
+ font-size: var(--stn-text-caption-medium-size, var(--stn-font-size-12, 12px));
221
221
  color: var(--stn-progress-label-color);
222
222
  font-weight: var(--stn-font-weight-medium);
223
223
  }
@@ -253,7 +253,7 @@
253
253
  left: 50%;
254
254
  transform: translate(-50%, -50%);
255
255
  font-family: var(--stn-font-body);
256
- font-size: var(--stn-font-size-10);
256
+ font-size: var(--stn-text-label-xsmall-size, var(--stn-font-size-10, 10px));
257
257
  font-weight: var(--stn-font-weight-bold);
258
258
  color: var(--stn-progress-inside-color);
259
259
  line-height: 1;
@@ -415,7 +415,7 @@
415
415
 
416
416
  .stn-progress-circle-wrap__label {
417
417
  font-family: var(--stn-font-body);
418
- font-size: var(--stn-font-size-13);
418
+ font-size: var(--stn-text-body-small-size, var(--stn-font-size-13, 13px));
419
419
  font-weight: var(--stn-font-weight-medium);
420
420
  color: var(--stn-progress-circle-label-color);
421
421
  line-height: 1.3;