@stn-uiux/pub-ui 0.1.57 → 0.1.59

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 (130) hide show
  1. package/dist/{chunk-L7DYM4V7.js → chunk-2FHXIAM3.js} +10 -28
  2. package/dist/{chunk-L7DYM4V7.js.map → chunk-2FHXIAM3.js.map} +1 -1
  3. package/dist/chunk-2WKT7X65.js +407 -0
  4. package/dist/chunk-2WKT7X65.js.map +1 -0
  5. package/dist/{chunk-7ASY5YJ6.js → chunk-36BAGMYT.js} +3 -3
  6. package/dist/chunk-36BAGMYT.js.map +1 -0
  7. package/dist/{chunk-THCCTVUM.js → chunk-5F63CMM7.js} +11 -1
  8. package/dist/chunk-5F63CMM7.js.map +1 -0
  9. package/dist/{chunk-Q3W7QA7N.js → chunk-75GHU6VI.js} +24 -43
  10. package/dist/chunk-75GHU6VI.js.map +1 -0
  11. package/dist/chunk-A5KLX6NX.js +1 -0
  12. package/dist/{chunk-4C7ABT2K.js → chunk-AE4CKAEK.js} +3 -3
  13. package/dist/chunk-AE4CKAEK.js.map +1 -0
  14. package/dist/{chunk-UPXSNRIJ.js → chunk-AOS3IX4T.js} +2 -2
  15. package/dist/chunk-AOS3IX4T.js.map +1 -0
  16. package/dist/{chunk-XNGYRPZI.js → chunk-CHJATVOT.js} +4 -4
  17. package/dist/{chunk-XNGYRPZI.js.map → chunk-CHJATVOT.js.map} +1 -1
  18. package/dist/{chunk-XZ3JOUX2.js → chunk-EQTZA7I2.js} +2 -14
  19. package/dist/chunk-EQTZA7I2.js.map +1 -0
  20. package/dist/{chunk-P5V6SFR7.js → chunk-H4ZJQ5YW.js} +2 -2
  21. package/dist/{chunk-GR76L7M7.js → chunk-JPILTFLI.js} +5 -5
  22. package/dist/chunk-JPILTFLI.js.map +1 -0
  23. package/dist/{chunk-WRGBYWRV.js → chunk-LKVTW54X.js} +1 -1
  24. package/dist/chunk-LKVTW54X.js.map +1 -0
  25. package/dist/{chunk-OMCBVK57.js → chunk-SKZOEF3H.js} +2 -2
  26. package/dist/chunk-SQJPE6HH.js +12 -0
  27. package/dist/chunk-SQJPE6HH.js.map +1 -0
  28. package/dist/{chunk-V7HD6SBG.js → chunk-XEG4WDUD.js} +7 -18
  29. package/dist/chunk-XEG4WDUD.js.map +1 -0
  30. package/dist/chunk-XPARWRVD.js +9 -0
  31. package/dist/chunk-XPARWRVD.js.map +1 -0
  32. package/dist/{chunk-S4YA4H2S.js → chunk-YBNEQ5LB.js} +2 -2
  33. package/dist/cli.js +15 -15
  34. package/dist/data/index.d.ts +2 -1
  35. package/dist/data/index.js +31 -27
  36. package/dist/data/stnAlertCenter.d.ts +4 -3
  37. package/dist/data/stnAlertCenter.js +1 -1
  38. package/dist/data/stnBreadcrumb.js +3 -3
  39. package/dist/data/stnDatePicker.js +2 -2
  40. package/dist/data/stnDateRangeField.d.ts +1 -1
  41. package/dist/data/stnDateRangeField.js +1 -1
  42. package/dist/data/stnDropdown.d.ts +1 -1
  43. package/dist/data/stnDropdown.js +1 -1
  44. package/dist/data/stnHeader.d.ts +2 -2
  45. package/dist/data/stnHeader.js +3 -3
  46. package/dist/data/stnLayout.d.ts +1 -1
  47. package/dist/data/stnLayout.js +1 -1
  48. package/dist/data/stnPackageVersion.d.ts +2 -2
  49. package/dist/data/stnPackageVersion.js +1 -1
  50. package/dist/data/stnPopup.d.ts +19 -41
  51. package/dist/data/stnPopup.js +1 -1
  52. package/dist/data/stnScroll.d.ts +1 -1
  53. package/dist/data/stnScroll.js +1 -1
  54. package/dist/data/stnSearchRequirement.d.ts +4 -4
  55. package/dist/data/stnSearchRequirement.js +1 -1
  56. package/dist/data/stnSideNavItem.js +3 -3
  57. package/dist/data/stnSizeSemantic.js +1 -1
  58. package/dist/data/stnStatus.d.ts +11 -0
  59. package/dist/data/stnStatus.js +7 -0
  60. package/dist/data/stnStatus.js.map +1 -0
  61. package/dist/data/stnSystemIcons.d.ts +1 -1
  62. package/dist/data/stnSystemIcons.js +2 -2
  63. package/dist/data/stnSystemIconsData.generated.js +1 -1
  64. package/dist/data/stnTree.d.ts +1 -1
  65. package/dist/data/stnTree.js +1 -1
  66. package/dist/index.d.ts +2 -1
  67. package/dist/index.js +31 -27
  68. package/package.json +1 -1
  69. package/styles/@assets/svg/system/line/eye-off.svg +5 -0
  70. package/styles/components/stn-btn.css +10 -1
  71. package/styles/components/stn-date-picker.css +13 -5
  72. package/styles/components/stn-date-range-field.css +153 -16
  73. package/styles/components/stn-dropdown.css +161 -42
  74. package/styles/components/stn-label-prefix.css +356 -0
  75. package/styles/components/stn-pagination.css +113 -5
  76. package/styles/components/stn-popup.css +78 -132
  77. package/styles/components/stn-scroll.css +51 -66
  78. package/styles/components/stn-search-requirement.css +27 -20
  79. package/styles/components/stn-segmented.css +3 -1
  80. package/styles/components/stn-status.css +853 -0
  81. package/styles/components/stn-table.css +32 -5
  82. package/styles/components/stn-text-field.css +396 -374
  83. package/styles/components/stn-toast.css +17 -0
  84. package/styles/components/stn-toggle-button.css +37 -0
  85. package/styles/layouts/stn-container.css +9 -0
  86. package/styles/layouts/stn-layer1-content.css +105 -0
  87. package/styles/patterns/stn-alert-center.css +114 -4
  88. package/styles/patterns/stn-header.css +7 -145
  89. package/styles/patterns/stn-section-side.css +64 -0
  90. package/styles/patterns/stn-tree.css +193 -2
  91. package/styles/style-pub.css +2 -1
  92. package/styles/tokens/stn-breakpoint.css +12 -0
  93. package/styles/tokens/stn-colors-semantic.css +13 -7
  94. package/styles/tokens/stn-radius-semantic.css +4 -3
  95. package/styles/tokens/stn-size-semantic.css +19 -6
  96. package/styles/tokens/stn-size.css +2 -0
  97. package/styles/tokens/stn-spacing-semantic.css +12 -0
  98. package/styles/tokens/stn-typography.css +1 -0
  99. package/dist/chunk-4C7ABT2K.js.map +0 -1
  100. package/dist/chunk-7ASY5YJ6.js.map +0 -1
  101. package/dist/chunk-GR76L7M7.js.map +0 -1
  102. package/dist/chunk-LHV26PEP.js +0 -1
  103. package/dist/chunk-Q3W7QA7N.js.map +0 -1
  104. package/dist/chunk-QT4HHVZH.js +0 -9
  105. package/dist/chunk-QT4HHVZH.js.map +0 -1
  106. package/dist/chunk-THCCTVUM.js.map +0 -1
  107. package/dist/chunk-UPXSNRIJ.js.map +0 -1
  108. package/dist/chunk-V7HD6SBG.js.map +0 -1
  109. package/dist/chunk-WRGBYWRV.js.map +0 -1
  110. package/dist/chunk-XZ3JOUX2.js.map +0 -1
  111. package/dist/chunk-ZI6EF4XD.js +0 -209
  112. package/dist/chunk-ZI6EF4XD.js.map +0 -1
  113. package/styles/@assets/svg/system/3d/print.png +0 -0
  114. package/styles/@assets/svg/system/3d/print_1.png +0 -0
  115. package/styles/@assets/svg/system/3d/server1.png +0 -0
  116. package/styles/@assets/svg/system/3d/server1_1.png +0 -0
  117. package/styles/@assets/svg/system/3d/server2.png +0 -0
  118. package/styles/@assets/svg/system/3d/server2_1.png +0 -0
  119. package/styles/@assets/svg/system/3d/signal.png +0 -0
  120. package/styles/@assets/svg/system/3d/signal_1.png +0 -0
  121. package/styles/@assets/svg/system/3d/wifi.png +0 -0
  122. package/styles/@assets/svg/system/3d/wifi_1.png +0 -0
  123. package/styles/@assets/svg/system/ai_agent.png +0 -0
  124. package/styles/@assets/svg/system/line/input.svg +0 -3
  125. package/styles/@assets/svg/system/line/radio.svg +0 -3
  126. package/styles/components/stn-severity-badge.css +0 -227
  127. /package/dist/{chunk-LHV26PEP.js.map → chunk-A5KLX6NX.js.map} +0 -0
  128. /package/dist/{chunk-P5V6SFR7.js.map → chunk-H4ZJQ5YW.js.map} +0 -0
  129. /package/dist/{chunk-OMCBVK57.js.map → chunk-SKZOEF3H.js.map} +0 -0
  130. /package/dist/{chunk-S4YA4H2S.js.map → chunk-YBNEQ5LB.js.map} +0 -0
@@ -40,9 +40,9 @@
40
40
  flex-direction: column;
41
41
  overflow: hidden;
42
42
  box-sizing: border-box;
43
- background-color: var(--stn-pop-surface, var(--box-bg));
44
- border: 1px solid var(--stn-pop-border, var(--border));
45
- border-radius: var(--stn-radius-pop-wrap, var(--stn-radius-10));
43
+ background-color: var(--stn-pop-surface);
44
+ border: 1px solid var(--stn-pop-border);
45
+ border-radius: var(--stn-radius-pop-wrap, var(--stn-radius-8));
46
46
  box-shadow: var(--stn-pop-shadow);
47
47
  }
48
48
 
@@ -52,31 +52,52 @@
52
52
  display: flex;
53
53
  flex-direction: column;
54
54
  justify-content: center;
55
- min-height: var(--stn-pop-header-height);
56
- height: var(--stn-pop-header-height);
57
- padding: 8px 44px 8px 16px;
55
+ min-height: var(--stn-pop-header-height, var(--stn-size-56));
56
+ height: auto;
57
+ padding: 12px 48px 12px 20px;
58
58
  margin: 0;
59
- border-bottom: none;
59
+ border-bottom: 1px solid var(--stn-pop-divider);
60
+ }
61
+
62
+ .stn-pop__head-row {
63
+ display: flex;
64
+ align-items: center;
65
+ gap: var(--stn-space-8, 8px);
66
+ flex-wrap: wrap;
60
67
  }
61
68
 
62
69
  .stn-pop__head h4 {
63
70
  margin: 0;
64
- color: var(--stn-pop-title, var(--font));
71
+ color: var(--stn-pop-title);
65
72
  font-family: var(--stn-font-body);
66
73
  font-size: var(--stn-text-title-medium-size);
67
- line-height: 1;
74
+ line-height: var(--stn-line-height-tight, 1.25);
68
75
  font-weight: var(--stn-font-weight-semibold);
69
76
  letter-spacing: 0;
70
77
  }
71
78
 
79
+ .stn-pop__subtitle {
80
+ margin: 4px 0 0 0;
81
+ font-family: var(--stn-font-body);
82
+ font-size: var(--stn-text-body-small-size);
83
+ color: var(--stn-text-subtle);
84
+ line-height: var(--stn-line-height-normal, 1.5);
85
+ }
86
+
72
87
  /* Body */
73
88
  .stn-pop__body {
74
89
  flex: 1 1 auto;
75
90
  min-height: 0;
76
- padding: 0 8px;
91
+ padding: var(--stn-space-20, 20px);
77
92
  overflow: auto;
78
93
  -webkit-overflow-scrolling: touch;
79
94
  background: transparent;
95
+ color: var(--stn-text-primary);
96
+ box-sizing: border-box;
97
+ }
98
+
99
+ .stn-pop__body--no-padding {
100
+ padding: 0;
80
101
  }
81
102
 
82
103
  /* 본문 레이아웃 — 배경은 .stn-pop__panel 만 (내부 투명) */
@@ -88,11 +109,11 @@
88
109
  box-shadow: none !important;
89
110
  }
90
111
 
91
- /* Close button — Icon Button xsmall (16) · top 10 · right 8 */
112
+ /* Close button — centered vertically in 56px header (top 14, right 16) */
92
113
  .stn-pop__close {
93
114
  position: absolute;
94
- top: 10px;
95
- right: 8px;
115
+ top: 14px;
116
+ right: 16px;
96
117
  box-sizing: border-box;
97
118
  width: var(--stn-pop-close-size) !important;
98
119
  height: var(--stn-pop-close-size) !important;
@@ -100,11 +121,11 @@
100
121
  min-height: var(--stn-pop-close-size);
101
122
  padding: 0;
102
123
  border: none;
103
- border-radius: var(--stn-radius-4, 4px);
124
+ border-radius: var(--stn-radius-sm);
104
125
  background-color: transparent;
105
126
  background-image: none;
106
127
  opacity: 1;
107
- color: var(--stn-pop-title, var(--colunm-font));
128
+ color: var(--stn-pop-title);
108
129
  transition: background-color 0.15s ease, color 0.15s ease;
109
130
  }
110
131
 
@@ -120,7 +141,7 @@
120
141
  background-image: none;
121
142
  -webkit-mask: none;
122
143
  mask: none;
123
- color: var(--stn-pop-title, var(--colunm-font));
144
+ color: var(--stn-pop-title);
124
145
  }
125
146
 
126
147
  .stn-pop__close:not(.icon, .stn-btn--icon):not(.stn-icon-btn--with-glyph)::before {
@@ -178,28 +199,17 @@
178
199
  --stn-pop-active-width: var(--stn-pop-width-xl);
179
200
  }
180
201
 
181
- .stn-pop--xxl {
182
- --stn-pop-active-width: var(--stn-pop-width-xxl);
183
- }
184
-
185
- .stn-pop--2xl {
186
- --stn-pop-active-width: var(--stn-pop-width-2xl);
187
- }
188
-
189
202
  .stn-pop--xs .stn-pop__cont,
190
203
  .stn-pop--sm .stn-pop__cont,
191
204
  .stn-pop--md .stn-pop__cont,
192
205
  .stn-pop--lg .stn-pop__cont,
193
206
  .stn-pop--xl .stn-pop__cont,
194
- .stn-pop--xxl .stn-pop__cont,
195
- .stn-pop--2xl .stn-pop__cont,
196
- .stn-pop:not(.stn-pop--full):not(.stn-pop--full-bleed) .stn-pop__cont {
207
+ .stn-pop:not(.stn-pop--full) .stn-pop__cont {
197
208
  width: min(var(--stn-pop-active-width), 100%, calc(100vw - var(--stn-pop-gutter) * 2));
198
209
  }
199
210
 
200
- /* Full bleed — 좌우 gutter만 남기고 가로 전체 */
201
- .stn-pop--full .stn-pop__cont,
202
- .stn-pop--full-bleed .stn-pop__cont {
211
+ /* Full — 좌우 gutter만 남기고 가로 전체 */
212
+ .stn-pop--full .stn-pop__cont {
203
213
  width: calc(100vw - var(--stn-pop-gutter) * 2);
204
214
  max-width: none;
205
215
  }
@@ -303,127 +313,63 @@
303
313
  pointer-events: auto;
304
314
  }
305
315
 
306
- /* Footer — 64px · center · gap 8 */
316
+ /* Footer — 56px · gap 8 · border-top */
307
317
  .stn-pop__actions {
308
318
  display: flex;
309
319
  flex-wrap: wrap;
310
320
  align-items: center;
311
- justify-content: center;
312
- gap: 8px;
321
+ justify-content: flex-end;
322
+ gap: var(--stn-space-8, 8px);
313
323
  box-sizing: border-box;
314
- min-height: var(--stn-pop-footer-height);
324
+ min-height: var(--stn-pop-footer-height, var(--stn-size-56));
315
325
  margin-top: 0;
316
- padding: 8px;
317
- border-top: none;
318
- }
319
-
320
- /* —— Map node dialog (dashboard floating panel, not fullscreen dim) —— */
321
- .stn-pop.node_dialog {
322
- display: block !important;
323
- position: absolute !important;
324
- top: 50% !important;
325
- left: 50% !important;
326
- right: auto !important;
327
- bottom: auto !important;
328
- transform: translate(-50%, -50%) !important;
329
- width: auto;
330
- height: auto;
331
- margin: 0;
332
- padding: 0;
333
- background: transparent !important;
334
- -webkit-backdrop-filter: none !important;
335
- backdrop-filter: none !important;
336
- overflow: visible;
337
- z-index: var(--stn-elevation-z-2, 200);
338
- pointer-events: none;
339
- }
340
-
341
- .stn-pop.node_dialog .stn-pop__panel,
342
- .stn-pop.node_dialog .stn-pop__close,
343
- .stn-pop.node_dialog .stn-pop__actions,
344
- .stn-pop.node_dialog .stn-pop__actions button {
345
- pointer-events: auto;
346
- }
347
-
348
- .stn-pop.node_dialog .stn-pop__cont {
349
- width: 260px;
350
- margin: 0;
351
- max-height: none;
326
+ padding: 12px 20px;
327
+ border-top: 1px solid var(--stn-pop-divider);
328
+ background-color: var(--stn-pop-surface);
352
329
  }
353
330
 
354
- /* 맵 노드 패널 — glass 면은 stn-pub-elevation-apply(맵 스코프) */
355
- .stn-pop.node_dialog .stn-pop__panel {
356
- padding: 16px 16px 12px;
357
- color: var(--font);
358
- border-radius: var(--stn-radius-pop-wrap, 10px);
359
- border: none;
360
- box-shadow: none;
361
- overflow: visible;
362
- }
363
-
364
- .stn-pop.node_dialog .stn-pop__head {
365
- min-height: 0;
366
- height: auto;
367
- padding: 0 44px 12px 0;
368
- margin: 0;
369
- border-bottom: 1px solid var(--stn-pop-divider);
370
- }
371
-
372
- .stn-pop.node_dialog .stn-pop__head h4 {
373
- margin: 0;
374
- font-size: var(--stn-text-title-medium-size);
375
- font-weight: var(--stn-font-weight-semibold);
376
- line-height: var(--stn-line-height-tight);
377
- color: var(--font);
378
- letter-spacing: -0.02em;
331
+ .stn-pop__actions--right {
332
+ justify-content: flex-end;
379
333
  }
380
334
 
381
- .stn-pop.node_dialog .stn-pop__body {
382
- padding: 12px 0 0;
335
+ .stn-pop__actions--center {
336
+ justify-content: center;
383
337
  }
384
338
 
385
- .stn-pop.node_dialog .stn-pop__close {
386
- top: 12px;
387
- right: 12px;
339
+ .stn-pop__actions--between {
340
+ justify-content: space-between;
388
341
  }
389
342
 
390
- .stn-pop.node_dialog .stn-pop__actions {
391
- min-height: 0;
392
- margin-top: 16px;
393
- padding: 12px 0 0;
394
- border-top: 1px solid var(--stn-pop-border, var(--border));
395
- justify-content: center;
343
+ /* —— Master-Detail Split Layout (.stn-pop-split) —— */
344
+ .stn-pop-split {
345
+ display: flex;
346
+ gap: var(--stn-space-20, 20px);
347
+ min-height: 400px;
348
+ height: 100%;
349
+ box-sizing: border-box;
396
350
  }
397
351
 
398
- /* 노드 목록 등급 태그 */
399
- .stn-pop.node_dialog .equip-search-table .tag {
400
- width: 28px;
401
- height: 16px;
402
- display: inline-flex;
403
- align-items: center;
404
- justify-content: center;
352
+ .stn-pop-split__aside {
353
+ width: var(--stn-pop-split-aside-width, 280px);
354
+ min-width: var(--stn-pop-split-aside-width, 280px);
355
+ max-width: 320px;
405
356
  flex-shrink: 0;
406
- font-family: var(--stn-font-body);
407
- font-size: var(--stn-text-gnb-alert-tag-size);
408
- font-weight: var(--stn-text-gnb-alert-tag-weight);
409
- border-radius: 4px;
410
- color: var(--stn-static-white);
411
- text-align: center;
412
- line-height: 1;
413
- }
414
-
415
- .stn-pop.node_dialog .equip-search-table .tag.critic {
416
- background: var(--stn-grade-critical);
357
+ border-right: 1px solid var(--stn-pop-divider);
358
+ padding-right: var(--stn-space-16, 16px);
359
+ display: flex;
360
+ flex-direction: column;
361
+ overflow-y: auto;
362
+ box-sizing: border-box;
417
363
  }
418
364
 
419
- .stn-pop.node_dialog .equip-search-table .tag.major {
420
- background: var(--stn-grade-major);
365
+ .stn-pop-split__main {
366
+ flex: 1 1 0;
367
+ min-width: 0;
368
+ display: flex;
369
+ flex-direction: column;
370
+ gap: var(--stn-space-16, 16px);
371
+ overflow-y: auto;
372
+ box-sizing: border-box;
421
373
  }
422
374
 
423
- .stn-pop.node_dialog .equip-search-table .tag.minor {
424
- background: var(--stn-grade-minor);
425
- }
426
375
 
427
- .stn-pop.node_dialog .equip-search-table .tag.warning {
428
- background: var(--stn-grade-warning);
429
- }
@@ -12,6 +12,13 @@
12
12
  :root {
13
13
  --stn-scroll-width: 8px;
14
14
  --stn-scroll-radius: 4px;
15
+ /* 두께 프리셋 (thin · default · thick) */
16
+ --stn-scroll-width-thin: 4px;
17
+ --stn-scroll-radius-thin: 2px;
18
+ --stn-scroll-width-default: 8px;
19
+ --stn-scroll-radius-default: 4px;
20
+ --stn-scroll-width-thick: 12px;
21
+ --stn-scroll-radius-thick: 6px;
15
22
  }
16
23
 
17
24
  /* ===== 2. Unified Scrollbar Base (.stn-scroll 단일화) ===== */
@@ -22,23 +29,19 @@
22
29
  scrollbar-color: var(--stn-scroll-thumb) var(--stn-scroll-track);
23
30
  }
24
31
 
25
- .stn-scroll.thick,
26
- .stn-scroll--thick {
32
+ .stn-scroll.thick {
27
33
  scrollbar-width: auto;
28
34
  }
29
35
 
30
- .stn-scroll.primary,
31
- .stn-scroll--primary {
36
+ .stn-scroll.primary {
32
37
  scrollbar-color: var(--stn-scroll-thumb-primary) var(--stn-scroll-track);
33
38
  }
34
39
 
35
- .stn-scroll.secondary,
36
- .stn-scroll--secondary {
40
+ .stn-scroll.secondary {
37
41
  scrollbar-color: var(--stn-scroll-thumb-secondary) var(--stn-scroll-track);
38
42
  }
39
43
 
40
- .stn-scroll.muted,
41
- .stn-scroll--muted {
44
+ .stn-scroll.muted {
42
45
  scrollbar-color: var(--stn-scroll-thumb-muted) var(--stn-scroll-track);
43
46
  }
44
47
  }
@@ -77,65 +80,55 @@
77
80
  overflow: hidden;
78
81
  }
79
82
 
80
- .stn-scroll.vertical,
81
- .stn-scroll--vertical {
83
+ .stn-scroll.vertical {
82
84
  overflow-y: auto;
83
85
  overflow-x: hidden;
84
86
  }
85
87
 
86
- .stn-scroll.horizontal,
87
- .stn-scroll--horizontal {
88
+ .stn-scroll.horizontal {
88
89
  overflow-x: auto;
89
90
  overflow-y: hidden;
90
91
  }
91
92
 
92
- .stn-scroll.both,
93
- .stn-scroll--both {
93
+ .stn-scroll.both {
94
94
  overflow: auto;
95
95
  }
96
96
 
97
97
  /* ===== 4. Width Variants (너비) ===== */
98
98
  /* Thin (4px) */
99
- .stn-scroll.thin,
100
- .stn-scroll--thin {
99
+ .stn-scroll.thin {
101
100
  --stn-scroll-width: 4px;
102
101
  --stn-scroll-radius: 2px;
103
102
  }
104
103
 
105
- .stn-scroll.thin::-webkit-scrollbar,
106
- .stn-scroll--thin::-webkit-scrollbar {
104
+ .stn-scroll.thin::-webkit-scrollbar {
107
105
  width: 4px;
108
106
  height: 4px;
109
107
  }
110
108
 
111
- .stn-scroll.thin::-webkit-scrollbar-thumb,
112
- .stn-scroll--thin::-webkit-scrollbar-thumb {
109
+ .stn-scroll.thin::-webkit-scrollbar-thumb {
113
110
  border-radius: 2px;
114
111
  }
115
112
 
116
113
  /* Default (8px) */
117
- .stn-scroll.default,
118
- .stn-scroll--default {
114
+ .stn-scroll.default {
119
115
  --stn-scroll-width: 8px;
120
116
  --stn-scroll-radius: 4px;
121
117
  }
122
118
 
123
119
  /* Thick (12px) */
124
- .stn-scroll.thick,
125
- .stn-scroll--thick {
120
+ .stn-scroll.thick {
126
121
  scrollbar-width: auto;
127
122
  --stn-scroll-width: 12px;
128
123
  --stn-scroll-radius: 6px;
129
124
  }
130
125
 
131
- .stn-scroll.thick::-webkit-scrollbar,
132
- .stn-scroll--thick::-webkit-scrollbar {
126
+ .stn-scroll.thick::-webkit-scrollbar {
133
127
  width: 12px;
134
128
  height: 12px;
135
129
  }
136
130
 
137
- .stn-scroll.thick::-webkit-scrollbar-thumb,
138
- .stn-scroll--thick::-webkit-scrollbar-thumb {
131
+ .stn-scroll.thick::-webkit-scrollbar-thumb {
139
132
  border-radius: 6px;
140
133
  }
141
134
 
@@ -147,19 +140,19 @@
147
140
 
148
141
  /* 화살표가 있는 스크롤 셸 내부 트랙:
149
142
  스크롤 썸(thumb)이 화살표 버튼을 덮지 않고, 화살표 바로 아래/사이에서만 움직이도록 트랙 상하/좌우에 margin 지정 */
150
- .stn-scroll-shell--vertical .stn-scroll::-webkit-scrollbar-track,
151
- .stn-scroll-shell:has(.stn-scroll__arrow--up) .stn-scroll::-webkit-scrollbar-track {
143
+ .stn-scroll-shell.vertical .stn-scroll::-webkit-scrollbar-track,
144
+ .stn-scroll-shell:has(.stn-scroll__arrow.up) .stn-scroll::-webkit-scrollbar-track {
152
145
  margin-top: 17px;
153
146
  margin-bottom: 17px;
154
147
  }
155
148
 
156
- .stn-scroll-shell--horizontal .stn-scroll::-webkit-scrollbar-track,
157
- .stn-scroll-shell:has(.stn-scroll__arrow--left) .stn-scroll::-webkit-scrollbar-track {
149
+ .stn-scroll-shell.horizontal .stn-scroll::-webkit-scrollbar-track,
150
+ .stn-scroll-shell:has(.stn-scroll__arrow.left) .stn-scroll::-webkit-scrollbar-track {
158
151
  margin-left: 17px;
159
152
  margin-right: 17px;
160
153
  }
161
154
 
162
- .stn-scroll-shell--both .stn-scroll::-webkit-scrollbar-track {
155
+ .stn-scroll-shell.both .stn-scroll::-webkit-scrollbar-track {
163
156
  margin: 17px;
164
157
  }
165
158
 
@@ -204,83 +197,75 @@
204
197
  }
205
198
 
206
199
  /* 수직 스크롤 화살표 (위/아래) */
207
- .stn-scroll-shell--vertical .stn-scroll__arrow--up,
208
- .stn-scroll-shell--vertical .stn-scroll__arrow--down,
209
- .stn-scroll-shell--both .stn-scroll__arrow--up,
210
- .stn-scroll-shell--both .stn-scroll__arrow--down {
200
+ .stn-scroll-shell.vertical .stn-scroll__arrow.up,
201
+ .stn-scroll-shell.vertical .stn-scroll__arrow.down,
202
+ .stn-scroll-shell.both .stn-scroll__arrow.up,
203
+ .stn-scroll-shell.both .stn-scroll__arrow.down {
211
204
  right: 0;
212
205
  width: var(--stn-scroll-width, 8px);
213
206
  height: 14px;
214
207
  }
215
208
 
216
- .stn-scroll-shell--vertical .stn-scroll__arrow--up,
217
- .stn-scroll-shell--both .stn-scroll__arrow--up {
209
+ .stn-scroll-shell.vertical .stn-scroll__arrow.up,
210
+ .stn-scroll-shell.both .stn-scroll__arrow.up {
218
211
  top: 1px;
219
212
  }
220
213
 
221
- .stn-scroll-shell--vertical .stn-scroll__arrow--down,
222
- .stn-scroll-shell--both .stn-scroll__arrow--down {
214
+ .stn-scroll-shell.vertical .stn-scroll__arrow.down,
215
+ .stn-scroll-shell.both .stn-scroll__arrow.down {
223
216
  bottom: 1px;
224
217
  }
225
218
 
226
219
  /* 가로 스크롤 화살표 (좌/우) */
227
- .stn-scroll-shell--horizontal .stn-scroll__arrow--left,
228
- .stn-scroll-shell--horizontal .stn-scroll__arrow--right,
229
- .stn-scroll-shell--both .stn-scroll__arrow--left,
230
- .stn-scroll-shell--both .stn-scroll__arrow--right {
220
+ .stn-scroll-shell.horizontal .stn-scroll__arrow.left,
221
+ .stn-scroll-shell.horizontal .stn-scroll__arrow.right,
222
+ .stn-scroll-shell.both .stn-scroll__arrow.left,
223
+ .stn-scroll-shell.both .stn-scroll__arrow.right {
231
224
  bottom: 0;
232
225
  width: 14px;
233
226
  height: var(--stn-scroll-width, 8px);
234
227
  }
235
228
 
236
- .stn-scroll-shell--horizontal .stn-scroll__arrow--left,
237
- .stn-scroll-shell--both .stn-scroll__arrow--left {
229
+ .stn-scroll-shell.horizontal .stn-scroll__arrow.left,
230
+ .stn-scroll-shell.both .stn-scroll__arrow.left {
238
231
  left: 1px;
239
232
  }
240
233
 
241
- .stn-scroll-shell--horizontal .stn-scroll__arrow--right,
242
- .stn-scroll-shell--both .stn-scroll__arrow--right {
234
+ .stn-scroll-shell.horizontal .stn-scroll__arrow.right,
235
+ .stn-scroll-shell.both .stn-scroll__arrow.right {
243
236
  right: 1px;
244
237
  }
245
238
 
246
- /* ===== 5. Color Variants (색상) ===== */
239
+ /* ===== 6. Color Variants (색상) ===== */
247
240
  /* Primary */
248
- .stn-scroll.primary::-webkit-scrollbar-thumb,
249
- .stn-scroll--primary::-webkit-scrollbar-thumb {
241
+ .stn-scroll.primary::-webkit-scrollbar-thumb {
250
242
  background: var(--stn-scroll-thumb-primary);
251
243
  }
252
- .stn-scroll.primary::-webkit-scrollbar-thumb:hover,
253
- .stn-scroll--primary::-webkit-scrollbar-thumb:hover {
244
+ .stn-scroll.primary::-webkit-scrollbar-thumb:hover {
254
245
  background: var(--stn-scroll-thumb-primary-hover);
255
246
  }
256
247
 
257
248
  /* Secondary */
258
- .stn-scroll.secondary::-webkit-scrollbar-thumb,
259
- .stn-scroll--secondary::-webkit-scrollbar-thumb {
249
+ .stn-scroll.secondary::-webkit-scrollbar-thumb {
260
250
  background: var(--stn-scroll-thumb-secondary);
261
251
  }
262
- .stn-scroll.secondary::-webkit-scrollbar-thumb:hover,
263
- .stn-scroll--secondary::-webkit-scrollbar-thumb:hover {
252
+ .stn-scroll.secondary::-webkit-scrollbar-thumb:hover {
264
253
  background: var(--stn-scroll-thumb-secondary-hover);
265
254
  }
266
255
 
267
256
  /* Muted */
268
- .stn-scroll.muted::-webkit-scrollbar-thumb,
269
- .stn-scroll--muted::-webkit-scrollbar-thumb {
257
+ .stn-scroll.muted::-webkit-scrollbar-thumb {
270
258
  background: var(--stn-scroll-thumb-muted);
271
259
  }
272
- .stn-scroll.muted::-webkit-scrollbar-thumb:hover,
273
- .stn-scroll--muted::-webkit-scrollbar-thumb:hover {
260
+ .stn-scroll.muted::-webkit-scrollbar-thumb:hover {
274
261
  background: var(--stn-scroll-thumb-muted-hover);
275
262
  }
276
263
 
277
264
  /* Fade on Hover */
278
- .stn-scroll.fade::-webkit-scrollbar-thumb,
279
- .stn-scroll--fade::-webkit-scrollbar-thumb {
265
+ .stn-scroll.fade::-webkit-scrollbar-thumb {
280
266
  background: transparent;
281
267
  transition: background 0.2s ease;
282
268
  }
283
- .stn-scroll.fade:hover::-webkit-scrollbar-thumb,
284
- .stn-scroll--fade:hover::-webkit-scrollbar-thumb {
269
+ .stn-scroll.fade:hover::-webkit-scrollbar-thumb {
285
270
  background: var(--stn-scroll-thumb);
286
271
  }
@@ -11,37 +11,43 @@
11
11
  display: flex;
12
12
  flex-wrap: wrap;
13
13
  align-items: center;
14
- gap: 20px 16px;
14
+ row-gap: var(--stn-search-requirement-gap-row);
15
+ column-gap: var(--stn-search-requirement-gap-col);
15
16
  box-sizing: border-box;
16
17
  width: 100%;
17
- padding: 8px 16px;
18
- border: 1px solid var(--stn-search-requirement-border);
19
- border-radius: var(--stn-radius-8, 8px);
20
- background: var(--stn-search-requirement-bg, transparent);
21
- box-shadow: var(--stn-search-requirement-shadow, var(--stn-shadow-1));
18
+ padding: var(--stn-search-requirement-padding);
19
+ border: var(--stn-search-requirement-border-width) solid var(--stn-search-requirement-border);
20
+ border-radius: var(--stn-search-requirement-radius);
21
+ background: var(--stn-search-requirement-bg);
22
+ box-shadow: var(--stn-search-requirement-shadow);
22
23
  }
23
24
 
24
25
  .stn-search-requirement__fields {
25
26
  display: flex;
26
27
  flex-wrap: wrap;
27
28
  align-items: center;
28
- gap: 16px;
29
+ gap: var(--stn-search-requirement-fields-gap);
29
30
  min-width: 0;
31
+ max-width: 100%;
32
+ }
33
+
34
+ .stn-search-requirement__fields > * {
35
+ max-width: 100%;
30
36
  }
31
37
 
32
38
  .stn-search-requirement__field {
33
39
  display: inline-flex;
34
40
  align-items: center;
35
- gap: 8px;
41
+ gap: var(--stn-search-requirement-field-gap);
36
42
  min-width: 0;
37
43
  }
38
44
 
39
45
  .stn-search-requirement__label {
40
46
  flex-shrink: 0;
41
- margin: 0;
47
+ margin: var(--stn-space-0);
42
48
  font-size: var(--stn-text-body-medium-size);
43
- font-weight: var(--stn-font-weight-semibold, 600);
44
- line-height: 1;
49
+ font-weight: var(--stn-font-weight-semibold);
50
+ line-height: var(--stn-line-height-none, 1);
45
51
  color: var(--stn-search-requirement-label);
46
52
  white-space: nowrap;
47
53
  }
@@ -50,22 +56,23 @@
50
56
  min-width: 0;
51
57
  }
52
58
 
53
- /* Compact variant (8px 12px) */
54
- .stn-search-requirement--compact {
55
- padding: 6px 12px;
56
- gap: 12px 12px;
59
+ /* Compact variant (.compact / .stn-search-requirement--compact) */
60
+ .stn-search-requirement:is(.compact, .stn-search-requirement--compact) {
61
+ padding: var(--stn-search-requirement-compact-padding);
62
+ gap: var(--stn-search-requirement-compact-gap);
57
63
  }
58
64
 
59
- .stn-search-requirement--compact .stn-search-requirement__fields {
60
- gap: 12px;
65
+ .stn-search-requirement:is(.compact, .stn-search-requirement--compact) .stn-search-requirement__fields {
66
+ gap: var(--stn-search-requirement-compact-gap);
61
67
  }
62
68
 
63
69
  /* Vertical Divider between Field Groups */
64
70
  .stn-search-requirement__divider {
65
71
  display: inline-block;
66
- width: 1px;
67
- height: 18px;
68
- margin: 0 4px;
72
+ width: var(--stn-search-requirement-divider-width);
73
+ height: var(--stn-search-requirement-divider-height);
74
+ margin-inline: var(--stn-search-requirement-divider-margin-x);
75
+ margin-block: var(--stn-space-0);
69
76
  background-color: var(--stn-border-subtle);
70
77
  flex-shrink: 0;
71
78
  align-self: center;
@@ -56,13 +56,15 @@
56
56
  justify-content: center;
57
57
  }
58
58
 
59
- /* Block / Full width */
59
+ /* Block / Full width (.full 및 레거시 .block) */
60
+ .stn-segmented.full,
60
61
  .stn-segmented.block {
61
62
  display: flex;
62
63
  width: 100%;
63
64
  align-self: stretch;
64
65
  }
65
66
 
67
+ .stn-segmented.full .stn-segmented__item,
66
68
  .stn-segmented.block .stn-segmented__item {
67
69
  flex: 1 1 0%;
68
70
  }