@stn-uiux/pub-ui 0.1.81 → 0.1.84

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 (112) hide show
  1. package/dist/{chunk-6FEWLKVE.js → chunk-2TRZNWCA.js} +32 -2
  2. package/dist/chunk-2TRZNWCA.js.map +1 -0
  3. package/dist/{chunk-AJLP3Y53.js → chunk-2VSSPMZ3.js} +2 -2
  4. package/dist/{chunk-AJLP3Y53.js.map → chunk-2VSSPMZ3.js.map} +1 -1
  5. package/dist/{chunk-AOS3IX4T.js → chunk-65B7YUTE.js} +2 -1
  6. package/dist/{chunk-AOS3IX4T.js.map → chunk-65B7YUTE.js.map} +1 -1
  7. package/dist/chunk-APXT43OG.js +232 -0
  8. package/dist/chunk-APXT43OG.js.map +1 -0
  9. package/dist/chunk-C5WP6UQO.js +107 -0
  10. package/dist/chunk-C5WP6UQO.js.map +1 -0
  11. package/dist/chunk-ERZPIKPF.js +1 -0
  12. package/dist/chunk-FLKGJJD5.js +45 -0
  13. package/dist/chunk-FLKGJJD5.js.map +1 -0
  14. package/dist/{chunk-N46UQH6L.js → chunk-K6TWXWIO.js} +11 -2
  15. package/dist/chunk-K6TWXWIO.js.map +1 -0
  16. package/dist/chunk-N4PVFFKV.js +38 -0
  17. package/dist/chunk-N4PVFFKV.js.map +1 -0
  18. package/dist/chunk-NYZMUDVK.js +12 -0
  19. package/dist/chunk-NYZMUDVK.js.map +1 -0
  20. package/dist/chunk-P22H2BFQ.js +9 -0
  21. package/dist/chunk-P22H2BFQ.js.map +1 -0
  22. package/dist/chunk-QJN2Z6RG.js +160 -0
  23. package/dist/chunk-QJN2Z6RG.js.map +1 -0
  24. package/dist/chunk-W7K3FSAX.js +24 -0
  25. package/dist/chunk-W7K3FSAX.js.map +1 -0
  26. package/dist/cli.js +17 -17
  27. package/dist/components.d.ts +1 -1
  28. package/dist/components.js +1 -1
  29. package/dist/data/index.d.ts +8 -3
  30. package/dist/data/index.js +148 -94
  31. package/dist/data/stnCard.d.ts +1 -1
  32. package/dist/data/stnCard.js +1 -1
  33. package/dist/data/stnChart.d.ts +35 -1
  34. package/dist/data/stnChart.js +7 -3
  35. package/dist/data/stnDatePicker.d.ts +41 -10
  36. package/dist/data/stnDatePicker.js +9 -3
  37. package/dist/data/stnEmptyState.d.ts +35 -0
  38. package/dist/data/stnEmptyState.js +19 -0
  39. package/dist/data/stnEmptyState.js.map +1 -0
  40. package/dist/data/stnPackageVersion.d.ts +2 -2
  41. package/dist/data/stnPackageVersion.js +1 -1
  42. package/dist/data/stnPopover.d.ts +18 -0
  43. package/dist/data/stnPopover.js +9 -0
  44. package/dist/data/stnPopover.js.map +1 -0
  45. package/dist/data/stnSplitView.d.ts +16 -0
  46. package/dist/data/stnSplitView.js +11 -0
  47. package/dist/data/stnSplitView.js.map +1 -0
  48. package/dist/data/stnStepCards.d.ts +32 -0
  49. package/dist/data/stnStepCards.js +7 -0
  50. package/dist/data/stnStepCards.js.map +1 -0
  51. package/dist/data/stnStepper.d.ts +78 -0
  52. package/dist/data/stnStepper.js +7 -0
  53. package/dist/data/stnStepper.js.map +1 -0
  54. package/dist/data/stnTree.d.ts +3 -0
  55. package/dist/data/stnTree.js +1 -1
  56. package/dist/data/stnTypography.d.ts +17 -1
  57. package/dist/data/stnTypography.js +7 -1
  58. package/dist/index.d.ts +8 -3
  59. package/dist/index.js +149 -95
  60. package/package.json +1 -1
  61. package/styles/@assets/images/empty-state/forbidden.png +0 -0
  62. package/styles/@assets/images/empty-state/load-failed.png +0 -0
  63. package/styles/@assets/images/empty-state/maintenance.png +0 -0
  64. package/styles/@assets/images/empty-state/network.png +0 -0
  65. package/styles/@assets/images/empty-state/no-data.png +0 -0
  66. package/styles/@assets/images/empty-state/not-found.png +0 -0
  67. package/styles/@assets/images/empty-state/search-empty.png +0 -0
  68. package/styles/@assets/images/empty-state/server-error.png +0 -0
  69. package/styles/@assets/images/empty-state/timeout.png +0 -0
  70. package/styles/@assets/images/empty-state/unauthorized.png +0 -0
  71. package/styles/components/stn-bar-chart.css +394 -0
  72. package/styles/components/stn-card.css +49 -13
  73. package/styles/components/stn-chart-common.css +243 -0
  74. package/styles/components/stn-chart.css +20 -0
  75. package/styles/components/stn-checkbox.css +1 -1
  76. package/styles/components/stn-combo-chart.css +279 -0
  77. package/styles/components/stn-date-picker.css +251 -44
  78. package/styles/components/stn-drawer.css +2 -2
  79. package/styles/components/stn-empty-state.css +238 -0
  80. package/styles/components/stn-line-chart.css +125 -0
  81. package/styles/components/stn-pie-chart.css +112 -0
  82. package/styles/components/stn-popover.css +52 -0
  83. package/styles/components/stn-radio.css +1 -1
  84. package/styles/components/stn-slider.css +1 -1
  85. package/styles/components/stn-stepper.css +570 -0
  86. package/styles/components/stn-switch.css +1 -1
  87. package/styles/components/stn-table.css +30 -0
  88. package/styles/components/stn-tooltip.css +1 -1
  89. package/styles/components/stn-widget.css +3 -116
  90. package/styles/layouts/stn-container.css +8 -0
  91. package/styles/layouts/stn-layer0-bg.css +18 -17
  92. package/styles/patterns/stn-split-view.css +130 -0
  93. package/styles/patterns/stn-step-cards.css +60 -0
  94. package/styles/patterns/stn-tree.css +9 -0
  95. package/styles/patterns/stn-widget-patterns.css +294 -0
  96. package/styles/style-pub.css +7 -0
  97. package/styles/tokens/stn-colors-semantic.css +194 -0
  98. package/styles/tokens/stn-size-semantic.css +84 -0
  99. package/styles/tokens/stn-size.css +1 -0
  100. package/styles/tokens/stn-spacing-semantic.css +55 -0
  101. package/styles/tokens/stn-typography-semantic.css +3 -0
  102. package/styles/tokens/stn-typography.css +16 -0
  103. package/dist/chunk-6FEWLKVE.js.map +0 -1
  104. package/dist/chunk-DGZVOSEM.js +0 -7
  105. package/dist/chunk-DGZVOSEM.js.map +0 -1
  106. package/dist/chunk-N46UQH6L.js.map +0 -1
  107. package/dist/chunk-PSVPO4FH.js +0 -9
  108. package/dist/chunk-PSVPO4FH.js.map +0 -1
  109. package/dist/chunk-WKQLAHIG.js +0 -1
  110. package/dist/chunk-YBNEQ5LB.js +0 -75
  111. package/dist/chunk-YBNEQ5LB.js.map +0 -1
  112. /package/dist/{chunk-WKQLAHIG.js.map → chunk-ERZPIKPF.js.map} +0 -0
@@ -15,6 +15,23 @@
15
15
  --calendar-range-dash: var(--stn-date-picker-accent);
16
16
  --calendar-disabled-font: var(--stn-date-picker-disabled-fg);
17
17
 
18
+ /* md — 기본 달력 스케일 */
19
+ --stn-date-picker-cell-w: var(--stn-size-32);
20
+ --stn-date-picker-cell-h: var(--stn-size-28);
21
+ --stn-date-picker-col-w: var(--stn-size-36);
22
+ --stn-date-picker-row-h: var(--stn-size-28);
23
+ --stn-date-picker-nav-size: var(--stn-size-24);
24
+ --stn-date-picker-panel-pad-y: var(--stn-space-8);
25
+ --stn-date-picker-panel-pad-x: var(--stn-space-12);
26
+ --stn-date-picker-panel-pad-bottom: var(--stn-space-4);
27
+ --stn-date-picker-cell-pad-y: var(--stn-space-2);
28
+ --stn-date-picker-section-pad-y: var(--stn-space-8);
29
+ --stn-date-picker-section-pad-x: var(--stn-space-12);
30
+ --stn-date-picker-footer-pad-y: var(--stn-space-12);
31
+ --stn-date-picker-title-size: var(--stn-text-body-medium-size);
32
+ --stn-date-picker-day-size: var(--stn-text-body-small-size);
33
+ --stn-date-picker-weekday-size: var(--stn-text-caption-medium-size);
34
+
18
35
  position: fixed;
19
36
  z-index: var(--stn-elevation-z-dropdown);
20
37
  box-sizing: border-box;
@@ -25,9 +42,141 @@
25
42
  color: var(--stn-text-primary);
26
43
  }
27
44
 
45
+ .stn-date-picker-dropdown.sm {
46
+ --stn-date-picker-cell-w: var(--stn-size-28);
47
+ --stn-date-picker-cell-h: var(--stn-size-24);
48
+ --stn-date-picker-col-w: var(--stn-size-32);
49
+ --stn-date-picker-row-h: var(--stn-size-24);
50
+ --stn-date-picker-nav-size: var(--stn-size-20);
51
+ --stn-date-picker-panel-pad-y: var(--stn-space-4);
52
+ --stn-date-picker-panel-pad-x: var(--stn-space-8);
53
+ --stn-date-picker-panel-pad-bottom: var(--stn-space-2);
54
+ --stn-date-picker-cell-pad-y: var(--stn-space-0);
55
+ --stn-date-picker-section-pad-y: var(--stn-space-4);
56
+ --stn-date-picker-section-pad-x: var(--stn-space-8);
57
+ --stn-date-picker-footer-pad-y: var(--stn-space-8);
58
+ --stn-date-picker-title-size: var(--stn-text-body-small-size);
59
+ --stn-date-picker-day-size: var(--stn-text-caption-medium-size);
60
+ --stn-date-picker-weekday-size: var(--stn-text-caption-medium-size);
61
+ }
62
+
63
+ .stn-date-picker-dropdown.md {
64
+ --stn-date-picker-cell-w: var(--stn-size-32);
65
+ --stn-date-picker-cell-h: var(--stn-size-28);
66
+ --stn-date-picker-col-w: var(--stn-size-36);
67
+ --stn-date-picker-row-h: var(--stn-size-28);
68
+ --stn-date-picker-nav-size: var(--stn-size-24);
69
+ --stn-date-picker-panel-pad-y: var(--stn-space-8);
70
+ --stn-date-picker-panel-pad-x: var(--stn-space-12);
71
+ --stn-date-picker-panel-pad-bottom: var(--stn-space-4);
72
+ --stn-date-picker-cell-pad-y: var(--stn-space-2);
73
+ --stn-date-picker-section-pad-y: var(--stn-space-8);
74
+ --stn-date-picker-section-pad-x: var(--stn-space-12);
75
+ --stn-date-picker-footer-pad-y: var(--stn-space-12);
76
+ --stn-date-picker-title-size: var(--stn-text-body-medium-size);
77
+ --stn-date-picker-day-size: var(--stn-text-body-small-size);
78
+ --stn-date-picker-weekday-size: var(--stn-text-caption-medium-size);
79
+ }
80
+
81
+ .stn-date-picker-dropdown.lg {
82
+ --stn-date-picker-cell-w: var(--stn-size-36);
83
+ --stn-date-picker-cell-h: var(--stn-size-32);
84
+ --stn-date-picker-col-w: var(--stn-size-40);
85
+ --stn-date-picker-row-h: var(--stn-size-32);
86
+ --stn-date-picker-nav-size: var(--stn-size-28);
87
+ --stn-date-picker-panel-pad-y: var(--stn-space-12);
88
+ --stn-date-picker-panel-pad-x: var(--stn-space-16);
89
+ --stn-date-picker-panel-pad-bottom: var(--stn-space-8);
90
+ --stn-date-picker-cell-pad-y: var(--stn-space-4);
91
+ --stn-date-picker-section-pad-y: var(--stn-space-12);
92
+ --stn-date-picker-section-pad-x: var(--stn-space-16);
93
+ --stn-date-picker-footer-pad-y: var(--stn-space-16);
94
+ --stn-date-picker-title-size: var(--stn-text-body-medium-size);
95
+ --stn-date-picker-day-size: var(--stn-text-body-medium-size);
96
+ --stn-date-picker-weekday-size: var(--stn-text-body-small-size);
97
+ }
98
+
28
99
  .stn-date-picker-dropdown__body {
29
100
  display: flex;
30
101
  flex-direction: column;
102
+ width: max-content;
103
+ max-width: 100%;
104
+ }
105
+
106
+ .stn-date-picker-dropdown__main {
107
+ display: flex;
108
+ align-items: stretch;
109
+ min-width: 0;
110
+ }
111
+
112
+ .stn-date-picker-dropdown--side-time .stn-date-picker-dropdown__main {
113
+ display: grid;
114
+ grid-template-columns: max-content max-content;
115
+ align-items: stretch;
116
+ }
117
+
118
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time {
119
+ height: 0;
120
+ min-height: 100%;
121
+ overflow: hidden;
122
+ border-top: none;
123
+ border-left: var(--stn-size-1) solid var(--calendar-border);
124
+ }
125
+
126
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__side--stack {
127
+ flex-direction: column;
128
+ align-items: stretch;
129
+ box-sizing: border-box;
130
+ width: calc(var(--stn-date-picker-col-w) * 3 + var(--stn-space-8) * 2);
131
+ height: 100%;
132
+ min-height: 0;
133
+ overflow: hidden;
134
+ padding: var(--stn-date-picker-panel-pad-y) var(--stn-date-picker-panel-pad-x) var(--stn-date-picker-panel-pad-bottom);
135
+ border-right: none;
136
+ gap: var(--stn-space-8);
137
+ }
138
+
139
+ .stn-date-picker-time__head {
140
+ display: grid;
141
+ grid-template-columns: repeat(3, minmax(0, 1fr));
142
+ align-items: center;
143
+ min-height: var(--stn-date-picker-row-h);
144
+ margin: var(--stn-space-0);
145
+ }
146
+
147
+ .stn-date-picker-time__head > span {
148
+ font-size: var(--stn-date-picker-weekday-size);
149
+ font-weight: var(--stn-font-weight-medium);
150
+ line-height: var(--stn-date-picker-row-h);
151
+ text-align: center;
152
+ color: var(--stn-text-secondary);
153
+ }
154
+
155
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__columns {
156
+ display: grid;
157
+ grid-template-columns: repeat(3, minmax(0, 1fr));
158
+ gap: var(--stn-space-4);
159
+ flex: 1 1 auto;
160
+ width: auto;
161
+ height: auto;
162
+ min-height: 0;
163
+ max-height: none;
164
+ }
165
+
166
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__scroll {
167
+ width: auto;
168
+ height: 100%;
169
+ min-height: 0;
170
+ }
171
+
172
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__option {
173
+ display: flex;
174
+ align-items: center;
175
+ justify-content: center;
176
+ height: var(--stn-date-picker-cell-h);
177
+ padding: var(--stn-space-0);
178
+ border-radius: var(--stn-radius-4);
179
+ line-height: var(--stn-date-picker-cell-h);
31
180
  }
32
181
 
33
182
  .stn-date-picker-dropdown__panels {
@@ -37,7 +186,7 @@
37
186
 
38
187
  .stn-date-picker-panel {
39
188
  box-sizing: border-box;
40
- padding: var(--stn-space-8) var(--stn-space-12) var(--stn-space-4);
189
+ padding: var(--stn-date-picker-panel-pad-y) var(--stn-date-picker-panel-pad-x) var(--stn-date-picker-panel-pad-bottom);
41
190
  border-right: var(--stn-size-1) solid var(--calendar-border);
42
191
  }
43
192
 
@@ -50,14 +199,14 @@
50
199
  align-items: center;
51
200
  justify-content: space-between;
52
201
  gap: var(--stn-space-8);
53
- margin-bottom: var(--stn-space-8);
54
- min-height: var(--stn-size-28);
202
+ margin-bottom: var(--stn-date-picker-panel-pad-y);
203
+ min-height: var(--stn-date-picker-row-h);
55
204
  }
56
205
 
57
206
  .stn-date-picker-panel__title {
58
207
  flex: 1;
59
208
  margin: var(--stn-space-0);
60
- font-size: var(--stn-text-body-medium-size);
209
+ font-size: var(--stn-date-picker-title-size);
61
210
  font-weight: var(--stn-font-weight-semibold);
62
211
  line-height: var(--stn-line-height-1, 1);
63
212
  text-align: center;
@@ -68,8 +217,8 @@
68
217
  display: inline-flex;
69
218
  align-items: center;
70
219
  justify-content: center;
71
- width: var(--stn-size-24);
72
- height: var(--stn-size-24);
220
+ width: var(--stn-date-picker-nav-size);
221
+ height: var(--stn-date-picker-nav-size);
73
222
  margin: var(--stn-space-0);
74
223
  padding: var(--stn-space-0);
75
224
  border: none;
@@ -89,14 +238,14 @@
89
238
  }
90
239
 
91
240
  .stn-date-picker-content {
92
- width: calc(var(--stn-size-36) * 7);
241
+ width: calc(var(--stn-date-picker-col-w) * 7);
93
242
  border-collapse: collapse;
94
243
  table-layout: fixed;
95
244
  }
96
245
 
97
246
  .stn-date-picker-content th {
98
- height: var(--stn-size-28);
99
- font-size: var(--stn-text-caption-medium-size);
247
+ height: var(--stn-date-picker-row-h);
248
+ font-size: var(--stn-date-picker-weekday-size);
100
249
  font-weight: var(--stn-font-weight-medium);
101
250
  color: var(--stn-text-secondary);
102
251
  text-align: center;
@@ -104,7 +253,7 @@
104
253
 
105
254
  .stn-date-picker-cell {
106
255
  position: relative;
107
- padding: var(--stn-space-2) var(--stn-space-0);
256
+ padding: var(--stn-date-picker-cell-pad-y) var(--stn-space-0);
108
257
  text-align: center;
109
258
  }
110
259
 
@@ -112,14 +261,14 @@
112
261
  display: inline-flex;
113
262
  align-items: center;
114
263
  justify-content: center;
115
- width: var(--stn-size-32);
116
- height: var(--stn-size-28);
264
+ width: var(--stn-date-picker-cell-w);
265
+ height: var(--stn-date-picker-cell-h);
117
266
  margin: var(--stn-space-0);
118
267
  padding: var(--stn-space-0);
119
268
  border: none;
120
269
  border-radius: var(--stn-radius-4);
121
270
  background: transparent;
122
- font-size: var(--stn-text-body-small-size);
271
+ font-size: var(--stn-date-picker-day-size);
123
272
  font-weight: var(--stn-font-weight-medium);
124
273
  line-height: var(--stn-line-height-1, 1);
125
274
  color: var(--stn-text-primary);
@@ -135,26 +284,39 @@
135
284
  .stn-date-picker-cell--in-range::before {
136
285
  content: '';
137
286
  position: absolute;
138
- inset: var(--stn-space-2) var(--stn-space-0);
287
+ inset: var(--stn-date-picker-cell-pad-y) var(--stn-space-0);
139
288
  background: var(--calendar-range);
140
289
  z-index: 0;
290
+ border-radius: 0;
291
+ }
292
+
293
+ .stn-date-picker-cell--range-start::before {
294
+ left: calc((100% - var(--stn-date-picker-cell-w)) / 2);
295
+ background: var(--calendar-selected-row);
296
+ border-radius: var(--stn-radius-4) 0 0 var(--stn-radius-4);
141
297
  }
142
298
 
143
- .stn-date-picker-cell--range-start::before,
144
299
  .stn-date-picker-cell--range-end::before {
300
+ right: calc((100% - var(--stn-date-picker-cell-w)) / 2);
145
301
  background: var(--calendar-selected-row);
302
+ border-radius: 0 var(--stn-radius-4) var(--stn-radius-4) 0;
146
303
  }
147
304
 
148
- .stn-date-picker-cell--range-start .stn-date-picker-cell__btn,
149
- .stn-date-picker-cell--range-end .stn-date-picker-cell__btn {
305
+ .stn-date-picker-cell--range-start.stn-date-picker-cell--range-end::before {
306
+ left: calc((100% - var(--stn-date-picker-cell-w)) / 2);
307
+ right: calc((100% - var(--stn-date-picker-cell-w)) / 2);
308
+ border-radius: var(--stn-radius-4);
309
+ }
310
+
311
+ .stn-date-picker-cell--range-start:not(.stn-date-picker-cell--in-range) .stn-date-picker-cell__btn,
312
+ .stn-date-picker-cell--range-end:not(.stn-date-picker-cell--in-range) .stn-date-picker-cell__btn {
150
313
  background: var(--calendar-selected-row);
151
314
  color: var(--calendar-font);
152
315
  }
153
316
 
154
- .stn-date-picker-cell--in-range .stn-date-picker-cell__btn:hover,
155
- .stn-date-picker-cell--range-start .stn-date-picker-cell__btn:hover,
156
- .stn-date-picker-cell--range-end .stn-date-picker-cell__btn:hover {
157
- background: var(--calendar-selected-row);
317
+ .stn-date-picker-cell--in-range.stn-date-picker-cell--range-start .stn-date-picker-cell__btn,
318
+ .stn-date-picker-cell--in-range.stn-date-picker-cell--range-end .stn-date-picker-cell__btn {
319
+ background: transparent;
158
320
  color: var(--calendar-font);
159
321
  }
160
322
 
@@ -162,6 +324,19 @@
162
324
  border: var(--stn-size-1) dashed var(--calendar-range-dash);
163
325
  }
164
326
 
327
+ .stn-date-picker-cell--range-start .stn-date-picker-cell__btn:hover,
328
+ .stn-date-picker-cell--range-end .stn-date-picker-cell__btn:hover,
329
+ .stn-date-picker-cell--in-range .stn-date-picker-cell__btn:hover,
330
+ .stn-date-picker-cell--preview .stn-date-picker-cell__btn:hover {
331
+ border: none;
332
+ }
333
+
334
+ .stn-date-picker-cell--in-range .stn-date-picker-cell__btn:hover,
335
+ .stn-date-picker-cell--preview .stn-date-picker-cell__btn:hover {
336
+ background: transparent;
337
+ color: var(--calendar-font);
338
+ }
339
+
165
340
  .stn-date-picker-cell--disabled .stn-date-picker-cell__btn {
166
341
  color: var(--calendar-disabled-font);
167
342
  cursor: not-allowed;
@@ -172,25 +347,57 @@
172
347
  border-top: var(--stn-size-1) solid var(--calendar-border);
173
348
  }
174
349
 
350
+ .stn-date-picker-dropdown--single .stn-date-picker-time {
351
+ flex-direction: column;
352
+ }
353
+
354
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time {
355
+ flex-direction: row;
356
+ align-items: stretch;
357
+ }
358
+
359
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__side--stack + .stn-date-picker-time__side--stack {
360
+ border-left: var(--stn-size-1) solid var(--calendar-border);
361
+ }
362
+
363
+ .stn-date-picker-dropdown--side-time .stn-date-picker-time__side--stack {
364
+ border-bottom: none;
365
+ }
366
+
367
+ .stn-date-picker-time__caption {
368
+ font-size: var(--stn-date-picker-weekday-size);
369
+ font-weight: var(--stn-font-weight-semibold);
370
+ line-height: var(--stn-date-picker-row-h);
371
+ text-align: center;
372
+ color: var(--stn-text-secondary);
373
+ }
374
+
175
375
  .stn-date-picker-time__side {
176
376
  flex: 1;
177
377
  display: flex;
178
378
  gap: var(--stn-space-0);
179
379
  min-width: 0;
180
- padding: var(--stn-space-8) var(--stn-space-12);
380
+ padding: var(--stn-date-picker-section-pad-y) var(--stn-date-picker-section-pad-x);
181
381
  border-right: var(--stn-size-1) solid var(--calendar-border);
182
382
  }
183
383
 
184
- .stn-date-picker-time__side:last-child {
384
+ .stn-date-picker-dropdown--single .stn-date-picker-time__side {
185
385
  border-right: none;
386
+ border-bottom: var(--stn-size-1) solid var(--calendar-border);
387
+ }
388
+
389
+ .stn-date-picker-time__side:last-child,
390
+ .stn-date-picker-dropdown--single .stn-date-picker-time__side:last-child {
391
+ border-right: none;
392
+ border-bottom: none;
186
393
  }
187
394
 
188
395
  .stn-date-picker-time__label {
189
396
  flex-shrink: 0;
190
- width: var(--stn-size-36);
191
- font-size: var(--stn-text-caption-medium-size);
397
+ width: var(--stn-date-picker-col-w);
398
+ font-size: var(--stn-date-picker-weekday-size);
192
399
  font-weight: var(--stn-font-weight-semibold);
193
- line-height: var(--stn-size-28);
400
+ line-height: var(--stn-date-picker-row-h);
194
401
  color: var(--stn-text-secondary);
195
402
  }
196
403
 
@@ -199,8 +406,8 @@
199
406
  flex: 1;
200
407
  min-width: 0;
201
408
  width: 100%;
202
- height: calc(var(--stn-size-28) * 6);
203
- max-height: calc(var(--stn-size-28) * 6);
409
+ height: calc(var(--stn-date-picker-cell-h) * 6);
410
+ max-height: calc(var(--stn-date-picker-cell-h) * 6);
204
411
  overflow: hidden;
205
412
  }
206
413
 
@@ -218,7 +425,7 @@
218
425
 
219
426
  .stn-date-picker-time__scroll {
220
427
  width: 100%;
221
- height: calc(var(--stn-size-28) * 6);
428
+ height: calc(var(--stn-date-picker-cell-h) * 6);
222
429
  }
223
430
 
224
431
  .stn-date-picker-time__column {
@@ -233,10 +440,11 @@
233
440
  margin: var(--stn-space-0);
234
441
  padding: var(--stn-space-4) var(--stn-space-4); /* 좌우 패딩 추가 — 숫자 가독성 개선 */
235
442
  border: none;
443
+ border-radius: var(--stn-radius-4);
236
444
  background: transparent;
237
445
  font-size: var(--stn-text-body-small-size);
238
446
  font-weight: var(--stn-font-weight-medium);
239
- line-height: 1.4;
447
+ line-height: var(--stn-text-body-small-line-height);
240
448
  text-align: center;
241
449
  color: var(--stn-text-primary);
242
450
  cursor: pointer;
@@ -251,12 +459,24 @@
251
459
  background: var(--calendar-range);
252
460
  }
253
461
 
462
+ .stn-date-picker-presets {
463
+ display: flex;
464
+ flex-wrap: wrap;
465
+ align-items: center;
466
+ gap: var(--stn-space-8);
467
+ width: 0;
468
+ min-width: 100%;
469
+ box-sizing: border-box;
470
+ padding: var(--stn-date-picker-section-pad-y) var(--stn-date-picker-section-pad-x);
471
+ border-top: var(--stn-size-1) solid var(--calendar-border);
472
+ }
473
+
254
474
  .stn-date-picker-footer {
255
475
  display: flex;
256
476
  align-items: center;
257
477
  justify-content: flex-end;
258
478
  gap: var(--stn-space-8);
259
- padding: var(--stn-space-8) var(--stn-space-12);
479
+ padding: var(--stn-date-picker-footer-pad-y) var(--stn-date-picker-section-pad-x);
260
480
  border-top: var(--stn-size-1) solid var(--calendar-border);
261
481
  }
262
482
 
@@ -268,16 +488,3 @@
268
488
  .stn-date-picker-field .stn-date-range-field[aria-expanded='true'] {
269
489
  border: var(--stn-input-focus);
270
490
  }
271
-
272
- /* StnDateRangePicker dialog title — screen reader only */
273
- .stn-sf__visually-hidden {
274
- position: absolute;
275
- width: var(--stn-size-1);
276
- height: var(--stn-size-1);
277
- padding: var(--stn-space-0);
278
- margin: calc(var(--stn-size-1) * -1);
279
- overflow: hidden;
280
- clip: rect(0, 0, 0, 0);
281
- white-space: nowrap;
282
- border: 0;
283
- }
@@ -136,10 +136,10 @@
136
136
 
137
137
  .stn-drawer__head-title {
138
138
  margin: 0;
139
- font-size: var(--stn-text-h4-size);
139
+ font-size: var(--stn-text-title-medium-size);
140
140
  font-weight: var(--stn-font-weight-semibold);
141
141
  color: var(--stn-text-primary);
142
- line-height: var(--stn-text-h4-line-height);
142
+ line-height: var(--stn-text-title-medium-line-height);
143
143
  }
144
144
 
145
145
  .stn-drawer__subtitle {
@@ -0,0 +1,238 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * StnEmptyState
4
+ * 공통 빈·오류 상태 표면. 아이콘 · 제목 · 설명 · 액션.
5
+ * 색·타이포·버튼은 기존 Pub 토큰 / StnIcon · StnText · StnButton에 위임.
6
+ */
7
+
8
+ :root {
9
+ --stn-empty-state-gap: var(--stn-empty-state-gap-md);
10
+ --stn-empty-state-body-gap: var(--stn-empty-state-body-gap);
11
+ --stn-empty-state-actions-gap: var(--stn-empty-state-actions-gap);
12
+ --stn-empty-state-max-width: var(--stn-empty-state-max-width-md);
13
+ --stn-empty-state-padding: var(--stn-empty-state-padding-md);
14
+ --stn-empty-state-icon-size: var(--stn-empty-state-icon-size-md);
15
+ --stn-empty-state-graphic-width: var(--stn-empty-state-graphic-width-md);
16
+ --stn-empty-state-graphic-height: var(--stn-empty-state-graphic-height-md);
17
+ --stn-empty-state-icon-color: var(--stn-text-tertiary);
18
+ --stn-empty-state-title-color: var(--stn-text-primary);
19
+ --stn-empty-state-description-color: var(--stn-text-secondary);
20
+ --stn-empty-state-code-color: var(--stn-text-tertiary);
21
+ --stn-empty-state-code-font-size: var(--stn-text-caption-size);
22
+ --stn-empty-state-code-font-weight: var(--stn-font-weight-semibold);
23
+ --stn-empty-state-page-padding-y: var(--stn-empty-state-page-padding-y);
24
+ }
25
+
26
+ .stn-empty-state {
27
+ box-sizing: border-box;
28
+ display: flex;
29
+ flex-direction: column;
30
+ align-items: center;
31
+ justify-content: center;
32
+ gap: var(--stn-empty-state-gap);
33
+ width: 100%;
34
+ max-width: var(--stn-empty-state-max-width);
35
+ margin-inline: auto;
36
+ padding: var(--stn-empty-state-padding);
37
+ text-align: center;
38
+ color: var(--stn-empty-state-title-color);
39
+ }
40
+
41
+ /* 전체 페이지 / 레이아웃 본문 중앙 */
42
+ .stn-empty-state.page {
43
+ max-width: none;
44
+ min-height: min(100%, 60vh);
45
+ flex: 1 1 auto;
46
+ padding-block: var(--stn-empty-state-page-padding-y);
47
+ }
48
+
49
+ .stn-empty-state.page > .stn-empty-state__body,
50
+ .stn-empty-state.page > .stn-empty-state__actions {
51
+ max-width: var(--stn-empty-state-max-width);
52
+ }
53
+
54
+ /* Size 규격 (xs · sm · md · lg · xl) */
55
+ .stn-empty-state.sm {
56
+ --stn-empty-state-gap: var(--stn-empty-state-gap-sm);
57
+ --stn-empty-state-icon-size: var(--stn-empty-state-icon-size-sm);
58
+ --stn-empty-state-padding: var(--stn-empty-state-padding-sm);
59
+ --stn-empty-state-max-width: var(--stn-empty-state-max-width-sm);
60
+ --stn-empty-state-graphic-width: var(--stn-empty-state-graphic-width-sm);
61
+ --stn-empty-state-graphic-height: var(--stn-empty-state-graphic-height-sm);
62
+ }
63
+
64
+ .stn-empty-state.md {
65
+ --stn-empty-state-gap: var(--stn-empty-state-gap-md);
66
+ --stn-empty-state-icon-size: var(--stn-empty-state-icon-size-md);
67
+ --stn-empty-state-padding: var(--stn-empty-state-padding-md);
68
+ --stn-empty-state-max-width: var(--stn-empty-state-max-width-md);
69
+ --stn-empty-state-graphic-width: var(--stn-empty-state-graphic-width-md);
70
+ --stn-empty-state-graphic-height: var(--stn-empty-state-graphic-height-md);
71
+ }
72
+
73
+ .stn-empty-state.lg {
74
+ --stn-empty-state-gap: var(--stn-empty-state-gap-lg);
75
+ --stn-empty-state-icon-size: var(--stn-empty-state-icon-size-lg);
76
+ --stn-empty-state-padding: var(--stn-empty-state-padding-lg);
77
+ --stn-empty-state-max-width: var(--stn-empty-state-max-width-lg);
78
+ --stn-empty-state-graphic-width: var(--stn-empty-state-graphic-width-lg);
79
+ --stn-empty-state-graphic-height: var(--stn-empty-state-graphic-height-lg);
80
+ }
81
+
82
+ /* Tone → 아이콘 색 (feedback / text 시맨틱) */
83
+ .stn-empty-state.tone-neutral {
84
+ --stn-empty-state-icon-color: var(--stn-text-tertiary);
85
+ }
86
+
87
+ .stn-empty-state.tone-info {
88
+ --stn-empty-state-icon-color: var(--stn-feedback-info);
89
+ }
90
+
91
+ .stn-empty-state.tone-warning {
92
+ --stn-empty-state-icon-color: var(--stn-feedback-warning);
93
+ }
94
+
95
+ .stn-empty-state.tone-error {
96
+ --stn-empty-state-icon-color: var(--stn-feedback-error);
97
+ }
98
+
99
+ .stn-empty-state.tone-success {
100
+ --stn-empty-state-icon-color: var(--stn-feedback-success);
101
+ }
102
+
103
+ /* 3D Graphic (Illustration) */
104
+ .stn-empty-state__graphic {
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: center;
108
+ flex-shrink: 0;
109
+ line-height: 0;
110
+ max-width: 100%;
111
+ }
112
+
113
+ .stn-empty-state__img {
114
+ display: block;
115
+ width: auto;
116
+ height: auto;
117
+ max-width: var(--stn-empty-state-graphic-width);
118
+ max-height: var(--stn-empty-state-graphic-height);
119
+ object-fit: contain;
120
+ filter: drop-shadow(0 10px 20px color-mix(in srgb, var(--stn-static-black) 16%, transparent));
121
+ user-select: none;
122
+ pointer-events: none;
123
+ }
124
+
125
+ /* Graphic sizes (~75% compact scale: sm, md, lg) */
126
+ .stn-empty-state.sm .stn-empty-state__img {
127
+ max-width: var(--stn-empty-state-graphic-width-sm);
128
+ max-height: var(--stn-empty-state-graphic-height-sm);
129
+ }
130
+
131
+ .stn-empty-state.md .stn-empty-state__img {
132
+ max-width: var(--stn-empty-state-graphic-width-md);
133
+ max-height: var(--stn-empty-state-graphic-height-md);
134
+ }
135
+
136
+ .stn-empty-state.lg .stn-empty-state__img {
137
+ max-width: var(--stn-empty-state-graphic-width-lg);
138
+ max-height: var(--stn-empty-state-graphic-height-lg);
139
+ }
140
+
141
+ .stn-empty-state__icon {
142
+ display: flex;
143
+ align-items: center;
144
+ justify-content: center;
145
+ flex-shrink: 0;
146
+ width: var(--stn-empty-state-icon-size);
147
+ height: var(--stn-empty-state-icon-size);
148
+ color: var(--stn-empty-state-icon-color);
149
+ }
150
+
151
+ .stn-empty-state__icon > .stn-icon,
152
+ .stn-empty-state__icon > svg {
153
+ width: 100%;
154
+ height: 100%;
155
+ }
156
+
157
+ /* masked 아이콘이 currentColor를 쓰도록 */
158
+ .stn-empty-state__icon > .stn-icon.stn-icon--masked {
159
+ background-color: var(--stn-empty-state-icon-color);
160
+ }
161
+
162
+ .stn-empty-state__code {
163
+ margin: 0;
164
+ color: var(--stn-empty-state-code-color);
165
+ font-size: var(--stn-empty-state-code-font-size);
166
+ font-weight: var(--stn-empty-state-code-font-weight);
167
+ letter-spacing: 0.04em;
168
+ text-transform: uppercase;
169
+ }
170
+
171
+ .stn-empty-state__body {
172
+ display: flex;
173
+ flex-direction: column;
174
+ align-items: center;
175
+ gap: var(--stn-empty-state-body-gap);
176
+ width: 100%;
177
+ min-width: 0;
178
+ }
179
+
180
+ .stn-empty-state__title {
181
+ margin: 0;
182
+ color: var(--stn-empty-state-title-color);
183
+ font-family: var(--stn-font-body);
184
+ font-size: var(--stn-text-title-medium-size);
185
+ font-weight: var(--stn-font-weight-semibold);
186
+ line-height: var(--stn-text-title-medium-line-height);
187
+ word-break: keep-all;
188
+ }
189
+
190
+ .stn-empty-state__description {
191
+ margin: 0;
192
+ color: var(--stn-empty-state-description-color);
193
+ font-family: var(--stn-font-body);
194
+ font-size: var(--stn-text-body-medium-size);
195
+ font-weight: var(--stn-font-weight-regular);
196
+ line-height: var(--stn-text-body-medium-line-height);
197
+ word-break: keep-all;
198
+ }
199
+
200
+ /* Typography scale per size */
201
+ .stn-empty-state.sm .stn-empty-state__title {
202
+ font-size: var(--stn-text-title-small-size);
203
+ line-height: var(--stn-text-title-small-line-height);
204
+ }
205
+
206
+ .stn-empty-state.sm .stn-empty-state__description {
207
+ font-size: var(--stn-text-caption-size);
208
+ line-height: var(--stn-text-caption-line-height);
209
+ }
210
+
211
+ .stn-empty-state.md .stn-empty-state__title {
212
+ font-size: var(--stn-text-title-medium-size);
213
+ line-height: var(--stn-text-title-medium-line-height);
214
+ }
215
+
216
+ .stn-empty-state.md .stn-empty-state__description {
217
+ font-size: var(--stn-text-body-medium-size);
218
+ line-height: var(--stn-text-body-medium-line-height);
219
+ }
220
+
221
+ .stn-empty-state.lg .stn-empty-state__title {
222
+ font-size: var(--stn-text-title-large-size);
223
+ line-height: var(--stn-text-title-large-line-height);
224
+ }
225
+
226
+ .stn-empty-state.lg .stn-empty-state__description {
227
+ font-size: var(--stn-text-body-medium-large-size);
228
+ line-height: var(--stn-text-body-medium-large-line-height);
229
+ }
230
+
231
+ .stn-empty-state__actions {
232
+ display: flex;
233
+ flex-wrap: wrap;
234
+ align-items: center;
235
+ justify-content: center;
236
+ gap: var(--stn-empty-state-actions-gap);
237
+ width: 100%;
238
+ }