@stn-uiux/pub-ui 0.1.82 → 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 (98) 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-ERZPIKPF.js +1 -0
  10. package/dist/chunk-FLKGJJD5.js +45 -0
  11. package/dist/chunk-FLKGJJD5.js.map +1 -0
  12. package/dist/{chunk-N46UQH6L.js → chunk-K6TWXWIO.js} +11 -2
  13. package/dist/chunk-K6TWXWIO.js.map +1 -0
  14. package/dist/chunk-N4PVFFKV.js +38 -0
  15. package/dist/chunk-N4PVFFKV.js.map +1 -0
  16. package/dist/chunk-NYZMUDVK.js +12 -0
  17. package/dist/chunk-NYZMUDVK.js.map +1 -0
  18. package/dist/chunk-P22H2BFQ.js +9 -0
  19. package/dist/chunk-P22H2BFQ.js.map +1 -0
  20. package/dist/chunk-QJN2Z6RG.js +160 -0
  21. package/dist/chunk-QJN2Z6RG.js.map +1 -0
  22. package/dist/chunk-W7K3FSAX.js +24 -0
  23. package/dist/chunk-W7K3FSAX.js.map +1 -0
  24. package/dist/cli.js +17 -17
  25. package/dist/components.d.ts +1 -1
  26. package/dist/components.js +1 -1
  27. package/dist/data/index.d.ts +7 -2
  28. package/dist/data/index.js +142 -92
  29. package/dist/data/stnCard.d.ts +1 -1
  30. package/dist/data/stnCard.js +1 -1
  31. package/dist/data/stnDatePicker.d.ts +41 -10
  32. package/dist/data/stnDatePicker.js +9 -3
  33. package/dist/data/stnEmptyState.d.ts +35 -0
  34. package/dist/data/stnEmptyState.js +19 -0
  35. package/dist/data/stnEmptyState.js.map +1 -0
  36. package/dist/data/stnPackageVersion.d.ts +2 -2
  37. package/dist/data/stnPackageVersion.js +1 -1
  38. package/dist/data/stnPopover.d.ts +18 -0
  39. package/dist/data/stnPopover.js +9 -0
  40. package/dist/data/stnPopover.js.map +1 -0
  41. package/dist/data/stnSplitView.d.ts +16 -0
  42. package/dist/data/stnSplitView.js +11 -0
  43. package/dist/data/stnSplitView.js.map +1 -0
  44. package/dist/data/stnStepCards.d.ts +32 -0
  45. package/dist/data/stnStepCards.js +7 -0
  46. package/dist/data/stnStepCards.js.map +1 -0
  47. package/dist/data/stnStepper.d.ts +78 -0
  48. package/dist/data/stnStepper.js +7 -0
  49. package/dist/data/stnStepper.js.map +1 -0
  50. package/dist/data/stnTree.d.ts +3 -0
  51. package/dist/data/stnTree.js +1 -1
  52. package/dist/data/stnTypography.d.ts +17 -1
  53. package/dist/data/stnTypography.js +7 -1
  54. package/dist/index.d.ts +7 -2
  55. package/dist/index.js +143 -93
  56. package/package.json +1 -1
  57. package/styles/@assets/images/empty-state/forbidden.png +0 -0
  58. package/styles/@assets/images/empty-state/load-failed.png +0 -0
  59. package/styles/@assets/images/empty-state/maintenance.png +0 -0
  60. package/styles/@assets/images/empty-state/network.png +0 -0
  61. package/styles/@assets/images/empty-state/no-data.png +0 -0
  62. package/styles/@assets/images/empty-state/not-found.png +0 -0
  63. package/styles/@assets/images/empty-state/search-empty.png +0 -0
  64. package/styles/@assets/images/empty-state/server-error.png +0 -0
  65. package/styles/@assets/images/empty-state/timeout.png +0 -0
  66. package/styles/@assets/images/empty-state/unauthorized.png +0 -0
  67. package/styles/components/stn-card.css +49 -13
  68. package/styles/components/stn-checkbox.css +1 -1
  69. package/styles/components/stn-date-picker.css +251 -44
  70. package/styles/components/stn-drawer.css +2 -2
  71. package/styles/components/stn-empty-state.css +238 -0
  72. package/styles/components/stn-popover.css +52 -0
  73. package/styles/components/stn-radio.css +1 -1
  74. package/styles/components/stn-slider.css +1 -1
  75. package/styles/components/stn-stepper.css +570 -0
  76. package/styles/components/stn-switch.css +1 -1
  77. package/styles/components/stn-table.css +30 -0
  78. package/styles/components/stn-tooltip.css +1 -1
  79. package/styles/layouts/stn-container.css +8 -0
  80. package/styles/layouts/stn-layer0-bg.css +18 -17
  81. package/styles/patterns/stn-split-view.css +130 -0
  82. package/styles/patterns/stn-step-cards.css +60 -0
  83. package/styles/patterns/stn-tree.css +9 -0
  84. package/styles/style-pub.css +5 -0
  85. package/styles/tokens/stn-colors-semantic.css +54 -0
  86. package/styles/tokens/stn-size-semantic.css +37 -0
  87. package/styles/tokens/stn-size.css +1 -0
  88. package/styles/tokens/stn-spacing-semantic.css +11 -0
  89. package/styles/tokens/stn-typography-semantic.css +3 -0
  90. package/styles/tokens/stn-typography.css +16 -0
  91. package/dist/chunk-6FEWLKVE.js.map +0 -1
  92. package/dist/chunk-N46UQH6L.js.map +0 -1
  93. package/dist/chunk-THTVXGTK.js +0 -9
  94. package/dist/chunk-THTVXGTK.js.map +0 -1
  95. package/dist/chunk-WKQLAHIG.js +0 -1
  96. package/dist/chunk-YBNEQ5LB.js +0 -75
  97. package/dist/chunk-YBNEQ5LB.js.map +0 -1
  98. /package/dist/{chunk-WKQLAHIG.js.map → chunk-ERZPIKPF.js.map} +0 -0
@@ -18,12 +18,12 @@
18
18
  /* Variants */
19
19
  .stn-card.flat {
20
20
  background-color: var(--stn-card-bg-flat);
21
- border: 1px solid transparent;
21
+ border: var(--stn-size-1, 1px) solid transparent;
22
22
  }
23
23
 
24
24
  .stn-card.outlined {
25
25
  background-color: transparent;
26
- border: 1px solid var(--stn-card-border-color);
26
+ border: var(--stn-size-1, 1px) solid var(--stn-card-border-color);
27
27
  }
28
28
 
29
29
  .stn-card.elevated {
@@ -33,23 +33,23 @@
33
33
 
34
34
  /* Severity Tint Surfaces (critical · major · minor · warning) */
35
35
  .stn-card.severity-critical {
36
- background-color: var(--stn-severity-critical-bg);
37
- border: 1px solid var(--stn-severity-critical-border);
36
+ background-color: var(--stn-card-severity-critical-bg);
37
+ border: var(--stn-size-1, 1px) solid var(--stn-severity-critical-border);
38
38
  }
39
39
 
40
40
  .stn-card.severity-major {
41
- background-color: var(--stn-severity-major-bg);
42
- border: 1px solid var(--stn-severity-major-border);
41
+ background-color: var(--stn-card-severity-major-bg);
42
+ border: var(--stn-size-1, 1px) solid var(--stn-severity-major-border);
43
43
  }
44
44
 
45
45
  .stn-card.severity-minor {
46
- background-color: var(--stn-severity-minor-bg);
47
- border: 1px solid var(--stn-severity-minor-border);
46
+ background-color: var(--stn-card-severity-minor-bg);
47
+ border: var(--stn-size-1, 1px) solid var(--stn-severity-minor-border);
48
48
  }
49
49
 
50
50
  .stn-card.severity-warning {
51
- background-color: var(--stn-severity-warning-bg);
52
- border: 1px solid var(--stn-severity-warning-border);
51
+ background-color: var(--stn-card-severity-warning-bg);
52
+ border: var(--stn-size-1, 1px) solid var(--stn-severity-warning-border);
53
53
  }
54
54
 
55
55
  /* Radius */
@@ -85,6 +85,31 @@
85
85
  flex-direction: column;
86
86
  }
87
87
 
88
+ /*
89
+ * Flush recipe — edge-to-edge body (Split View / store locator)
90
+ * Card padding="none" + Body flush
91
+ * Header/Footer keep horizontal inset; body margin gap removed so Side|Stage touch the divider.
92
+ */
93
+ .stn-card.pad-none > .stn-card__header {
94
+ padding-left: var(--stn-space-16, 16px);
95
+ padding-right: var(--stn-space-16, 16px);
96
+ margin-bottom: 0;
97
+ }
98
+
99
+ .stn-card.pad-none > .stn-card__footer {
100
+ padding-left: var(--stn-space-16, 16px);
101
+ padding-right: var(--stn-space-16, 16px);
102
+ padding-bottom: var(--stn-space-16, 16px);
103
+ margin-top: 0;
104
+ }
105
+
106
+ .stn-card__body.is-flush {
107
+ flex: 1 1 0%;
108
+ min-height: 0;
109
+ display: flex;
110
+ flex-direction: column;
111
+ }
112
+
88
113
  /* Interactive (Hover / Click) */
89
114
  .stn-card.interactive,
90
115
  .stn-card[role='button'] {
@@ -102,9 +127,20 @@
102
127
  align-items: center;
103
128
  justify-content: space-between;
104
129
  gap: var(--stn-space-12, 12px);
105
- padding-bottom: var(--stn-space-12, 12px);
106
- border-bottom: 1px solid var(--stn-card-border-color);
130
+ box-sizing: border-box;
131
+ /*
132
+ * 토큰: --stn-card-header-min-height
133
+ * height 고정으로 멀티 패널 디바이더 정렬.
134
+ * 세로 여백은 height 안 padding이 아니라 margin-bottom(본문 간격)으로만 —
135
+ * height + padding-bottom만 있으면(예전) content가 위로 붙고 아래만 비어 보임.
136
+ */
137
+ height: var(--stn-card-header-min-height, var(--stn-size-40, 40px));
138
+ min-height: var(--stn-card-header-min-height, var(--stn-size-40, 40px));
139
+ padding-top: 0;
140
+ padding-bottom: 0;
141
+ border-bottom: var(--stn-size-1, 1px) solid var(--stn-card-border-color);
107
142
  margin-bottom: var(--stn-space-12, 12px);
143
+ overflow: hidden;
108
144
  }
109
145
 
110
146
  .stn-card__header-title {
@@ -140,6 +176,6 @@
140
176
  justify-content: flex-end;
141
177
  gap: var(--stn-space-8, 8px);
142
178
  padding-top: var(--stn-space-12, 12px);
143
- border-top: 1px solid var(--stn-card-border-color);
179
+ border-top: var(--stn-size-1, 1px) solid var(--stn-card-border-color);
144
180
  margin-top: var(--stn-space-12, 12px);
145
181
  }
@@ -136,7 +136,7 @@
136
136
  .stn-checkbox.lg {
137
137
  --stn-checkbox-size: var(--stn-checkbox-size-lg, 22px);
138
138
  --stn-checkbox-radius: var(--stn-radius-4, 4px);
139
- font-size: var(--stn-text-body-size, 15px);
139
+ font-size: var(--stn-text-body-medium-large-size);
140
140
  }
141
141
 
142
142
  /* Colors / Semantic Tones (단일 클래스 - 체크마크/대시 색상) */
@@ -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 {