@stn-uiux/pub-ui 0.1.57 → 0.1.58
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.
- package/dist/{chunk-L7DYM4V7.js → chunk-2FHXIAM3.js} +10 -28
- package/dist/{chunk-L7DYM4V7.js.map → chunk-2FHXIAM3.js.map} +1 -1
- package/dist/chunk-2WKT7X65.js +407 -0
- package/dist/chunk-2WKT7X65.js.map +1 -0
- package/dist/{chunk-THCCTVUM.js → chunk-5F63CMM7.js} +11 -1
- package/dist/chunk-5F63CMM7.js.map +1 -0
- package/dist/{chunk-Q3W7QA7N.js → chunk-75GHU6VI.js} +24 -43
- package/dist/chunk-75GHU6VI.js.map +1 -0
- package/dist/{chunk-4C7ABT2K.js → chunk-AE4CKAEK.js} +3 -3
- package/dist/chunk-AE4CKAEK.js.map +1 -0
- package/dist/{chunk-P5V6SFR7.js → chunk-EDXSK54U.js} +2 -2
- package/dist/{chunk-GR76L7M7.js → chunk-EQVFEZEQ.js} +2 -2
- package/dist/{chunk-OMCBVK57.js → chunk-J46EPVSY.js} +2 -2
- package/dist/{chunk-WRGBYWRV.js → chunk-LKVTW54X.js} +1 -1
- package/dist/chunk-LKVTW54X.js.map +1 -0
- package/dist/{chunk-V7HD6SBG.js → chunk-PVF77NHZ.js} +5 -3
- package/dist/{chunk-V7HD6SBG.js.map → chunk-PVF77NHZ.js.map} +1 -1
- package/dist/{chunk-XZ3JOUX2.js → chunk-TDLGKV4C.js} +2 -1
- package/dist/{chunk-XZ3JOUX2.js.map → chunk-TDLGKV4C.js.map} +1 -1
- package/dist/chunk-XPARWRVD.js +9 -0
- package/dist/chunk-XPARWRVD.js.map +1 -0
- package/dist/{chunk-S4YA4H2S.js → chunk-YBNEQ5LB.js} +2 -2
- package/dist/cli.js +9 -9
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +13 -13
- package/dist/data/stnAlertCenter.d.ts +4 -3
- package/dist/data/stnAlertCenter.js +1 -1
- package/dist/data/stnBreadcrumb.js +3 -3
- package/dist/data/stnDatePicker.js +2 -2
- package/dist/data/stnDateRangeField.d.ts +1 -1
- package/dist/data/stnDateRangeField.js +1 -1
- package/dist/data/stnDropdown.d.ts +1 -1
- package/dist/data/stnDropdown.js +1 -1
- package/dist/data/stnHeader.js +3 -3
- package/dist/data/stnPackageVersion.d.ts +2 -2
- package/dist/data/stnPackageVersion.js +1 -1
- package/dist/data/stnPopup.d.ts +19 -41
- package/dist/data/stnPopup.js +1 -1
- package/dist/data/stnSearchRequirement.d.ts +4 -4
- package/dist/data/stnSearchRequirement.js +1 -1
- package/dist/data/stnSideNavItem.js +3 -3
- package/dist/data/stnSizeSemantic.js +1 -1
- package/dist/data/stnSystemIcons.js +2 -2
- package/dist/data/stnSystemIconsData.generated.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -13
- package/package.json +1 -1
- package/styles/@assets/svg/system/line/eye-off.svg +5 -0
- package/styles/components/stn-btn.css +1 -1
- package/styles/components/stn-date-picker.css +13 -5
- package/styles/components/stn-date-range-field.css +153 -16
- package/styles/components/stn-dropdown.css +150 -38
- package/styles/components/stn-label-prefix.css +319 -0
- package/styles/components/stn-popup.css +78 -132
- package/styles/components/stn-search-requirement.css +27 -20
- package/styles/components/stn-text-field.css +401 -374
- package/styles/components/stn-toast.css +17 -0
- package/styles/components/stn-toggle-button.css +37 -0
- package/styles/patterns/stn-alert-center.css +85 -0
- package/styles/patterns/stn-tree.css +157 -0
- package/styles/style-pub.css +1 -0
- package/styles/tokens/stn-colors-semantic.css +7 -1
- package/styles/tokens/stn-radius-semantic.css +3 -2
- package/styles/tokens/stn-size-semantic.css +19 -6
- package/styles/tokens/stn-size.css +2 -0
- package/styles/tokens/stn-spacing-semantic.css +12 -0
- package/styles/tokens/stn-typography.css +1 -0
- package/dist/chunk-4C7ABT2K.js.map +0 -1
- package/dist/chunk-Q3W7QA7N.js.map +0 -1
- package/dist/chunk-QT4HHVZH.js +0 -9
- package/dist/chunk-QT4HHVZH.js.map +0 -1
- package/dist/chunk-THCCTVUM.js.map +0 -1
- package/dist/chunk-WRGBYWRV.js.map +0 -1
- package/dist/chunk-ZI6EF4XD.js +0 -209
- package/dist/chunk-ZI6EF4XD.js.map +0 -1
- /package/dist/{chunk-P5V6SFR7.js.map → chunk-EDXSK54U.js.map} +0 -0
- /package/dist/{chunk-GR76L7M7.js.map → chunk-EQVFEZEQ.js.map} +0 -0
- /package/dist/{chunk-OMCBVK57.js.map → chunk-J46EPVSY.js.map} +0 -0
- /package/dist/{chunk-S4YA4H2S.js.map → chunk-YBNEQ5LB.js.map} +0 -0
|
@@ -176,6 +176,23 @@
|
|
|
176
176
|
display: block;
|
|
177
177
|
}
|
|
178
178
|
|
|
179
|
+
/* --- Metric / Extra Info Box Slot --- */
|
|
180
|
+
.stn-toast__metric-box {
|
|
181
|
+
background-color: var(--stn-surface-subtle, rgba(0, 0, 0, 0.25));
|
|
182
|
+
border: 1px solid var(--stn-border-subtle);
|
|
183
|
+
border-radius: var(--stn-radius-4, 4px);
|
|
184
|
+
padding: var(--stn-space-8, 8px) var(--stn-space-10, 10px);
|
|
185
|
+
font-size: var(--stn-text-body-small-size, 12px);
|
|
186
|
+
color: var(--stn-text-primary);
|
|
187
|
+
box-sizing: border-box;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.stn-toast__metric-grid {
|
|
191
|
+
display: grid;
|
|
192
|
+
grid-template-columns: repeat(2, 1fr);
|
|
193
|
+
gap: var(--stn-space-8, 8px);
|
|
194
|
+
}
|
|
195
|
+
|
|
179
196
|
/* --- Close Button Slot --- */
|
|
180
197
|
.stn-toast .stn-toast-close,
|
|
181
198
|
.stn-toast > .stn-btn.icon {
|
|
@@ -232,6 +232,43 @@
|
|
|
232
232
|
outline-offset: 2px;
|
|
233
233
|
}
|
|
234
234
|
|
|
235
|
+
/* ==========================================================================
|
|
236
|
+
Size Scale — 표준 통일 스케일: sm(24px) · md(32px, 기본값) · lg(40px) · xl(56px)
|
|
237
|
+
8px 그리드 — TextField / Button / Dropdown과 완벽 정렬
|
|
238
|
+
========================================================================== */
|
|
239
|
+
|
|
240
|
+
/* sm (24px) */
|
|
241
|
+
.stn-toggle-btn.sm {
|
|
242
|
+
--stn-toggle-height: var(--stn-btn-height-sm);
|
|
243
|
+
--stn-toggle-font-size: var(--stn-btn-font-size-sm);
|
|
244
|
+
--stn-toggle-icon-size: var(--stn-icon-size-sm, 14px);
|
|
245
|
+
--stn-toggle-padding: 0 var(--stn-btn-padding-x-sm);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/* md (32px) — 기본값, 별도 클래스 없이 베이스 스타일 적용 */
|
|
249
|
+
.stn-toggle-btn.md {
|
|
250
|
+
--stn-toggle-height: var(--stn-btn-height-md);
|
|
251
|
+
--stn-toggle-font-size: var(--stn-btn-font-size-md);
|
|
252
|
+
--stn-toggle-icon-size: var(--stn-icon-size-md, 16px);
|
|
253
|
+
--stn-toggle-padding: 0 var(--stn-btn-padding-x-md);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/* lg (40px) */
|
|
257
|
+
.stn-toggle-btn.lg {
|
|
258
|
+
--stn-toggle-height: var(--stn-btn-height-lg);
|
|
259
|
+
--stn-toggle-font-size: var(--stn-btn-font-size-lg);
|
|
260
|
+
--stn-toggle-icon-size: var(--stn-icon-size-lg, 18px);
|
|
261
|
+
--stn-toggle-padding: 0 var(--stn-btn-padding-x-lg);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* xl (56px) */
|
|
265
|
+
.stn-toggle-btn.xl {
|
|
266
|
+
--stn-toggle-height: var(--stn-btn-height-xl);
|
|
267
|
+
--stn-toggle-font-size: var(--stn-btn-font-size-xl);
|
|
268
|
+
--stn-toggle-icon-size: var(--stn-icon-size-xl, 20px);
|
|
269
|
+
--stn-toggle-padding: 0 var(--stn-btn-padding-x-xl);
|
|
270
|
+
}
|
|
271
|
+
|
|
235
272
|
/* ==========================================================================
|
|
236
273
|
Width Presets (.w80 ~ .w200 / .full)
|
|
237
274
|
토글 버튼은 버튼 특성상 '최소 고정 너비(min-width)'로 작용하여,
|
|
@@ -302,6 +302,91 @@
|
|
|
302
302
|
line-height: var(--stn-line-height-reading);
|
|
303
303
|
}
|
|
304
304
|
|
|
305
|
+
/* ==========================================================================
|
|
306
|
+
5-1. Text Overflow Modes (wrap · ellipsis · marquee)
|
|
307
|
+
========================================================================== */
|
|
308
|
+
|
|
309
|
+
/* 공통: flex 컨테이너 오버플로우 축소 방지 */
|
|
310
|
+
.stn-alert-card__title,
|
|
311
|
+
.stn-alert-card__desc {
|
|
312
|
+
min-width: 0;
|
|
313
|
+
max-width: 100%;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/* 1) Wrap (줄바꿈) */
|
|
317
|
+
.stn-alert-card__title.wrap,
|
|
318
|
+
.stn-alert-card__desc.wrap,
|
|
319
|
+
:is(.stn-alert-center.wrap, .stn-alert-center.title-wrap) .stn-alert-card__title,
|
|
320
|
+
:is(.stn-alert-center.wrap, .stn-alert-center.desc-wrap) .stn-alert-card__desc {
|
|
321
|
+
white-space: normal;
|
|
322
|
+
word-break: break-all;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
/* 2) Ellipsis (말줄임표 `...`) */
|
|
326
|
+
.stn-alert-card__title.ellipsis,
|
|
327
|
+
.stn-alert-card__desc.ellipsis,
|
|
328
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.title-ellipsis) .stn-alert-card__title,
|
|
329
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.desc-ellipsis) .stn-alert-card__desc {
|
|
330
|
+
display: block;
|
|
331
|
+
white-space: nowrap;
|
|
332
|
+
overflow: hidden;
|
|
333
|
+
text-overflow: ellipsis;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
.stn-alert-card__title.ellipsis .stn-alert-card__text-inner,
|
|
337
|
+
.stn-alert-card__desc.ellipsis .stn-alert-card__text-inner,
|
|
338
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.title-ellipsis) .stn-alert-card__title .stn-alert-card__text-inner,
|
|
339
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.desc-ellipsis) .stn-alert-card__desc .stn-alert-card__text-inner {
|
|
340
|
+
display: inline;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/* 3) Marquee (전광판 롤링 흘러가기) */
|
|
344
|
+
.stn-alert-card__title.marquee,
|
|
345
|
+
.stn-alert-card__desc.marquee,
|
|
346
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.title-marquee) .stn-alert-card__title,
|
|
347
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.desc-marquee) .stn-alert-card__desc {
|
|
348
|
+
display: block;
|
|
349
|
+
white-space: nowrap;
|
|
350
|
+
overflow: hidden;
|
|
351
|
+
position: relative;
|
|
352
|
+
mask-image: linear-gradient(90deg, transparent 0%, #000 4%, #000 96%, transparent 100%);
|
|
353
|
+
-webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 4%, #000 96%, transparent 100%);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
:is(.stn-alert-card__title, .stn-alert-card__desc).marquee .stn-alert-card__text-inner,
|
|
357
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.title-marquee) .stn-alert-card__title .stn-alert-card__text-inner,
|
|
358
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.desc-marquee) .stn-alert-card__desc .stn-alert-card__text-inner {
|
|
359
|
+
display: inline-block;
|
|
360
|
+
white-space: nowrap;
|
|
361
|
+
will-change: transform;
|
|
362
|
+
animation: stn-alert-marquee 12s linear infinite alternate;
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.stn-alert-card:hover :is(.stn-alert-card__title, .stn-alert-card__desc).marquee .stn-alert-card__text-inner,
|
|
366
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.title-marquee) .stn-alert-card:hover .stn-alert-card__title .stn-alert-card__text-inner,
|
|
367
|
+
:is(.stn-alert-center.marquee, .stn-alert-center.desc-marquee) .stn-alert-card:hover .stn-alert-card__desc .stn-alert-card__text-inner {
|
|
368
|
+
animation-play-state: paused;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
/* Single-line tweaks for description line */
|
|
372
|
+
.stn-alert-card__desc:is(.ellipsis, .marquee),
|
|
373
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.marquee, .stn-alert-center.desc-ellipsis, .stn-alert-center.desc-marquee) .stn-alert-card__body .stn-alert-card__desc-line {
|
|
374
|
+
flex-wrap: nowrap;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
:is(.stn-alert-center.ellipsis, .stn-alert-center.marquee, .stn-alert-center.desc-ellipsis, .stn-alert-center.desc-marquee) .stn-alert-card__time-chip {
|
|
378
|
+
flex-shrink: 0;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
@keyframes stn-alert-marquee {
|
|
382
|
+
0%, 15% {
|
|
383
|
+
transform: translateX(0);
|
|
384
|
+
}
|
|
385
|
+
85%, 100% {
|
|
386
|
+
transform: translateX(-40%);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
305
390
|
/* 시간 + 읽음 dot 묶음 */
|
|
306
391
|
.stn-alert-card__meta {
|
|
307
392
|
display: flex;
|
|
@@ -206,6 +206,11 @@
|
|
|
206
206
|
line-height: 1;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
.stn-tree__row.is-bold .stn-tree__label,
|
|
210
|
+
.stn-tree__label.is-bold {
|
|
211
|
+
font-weight: var(--stn-font-weight-bold, 700);
|
|
212
|
+
}
|
|
213
|
+
|
|
209
214
|
.stn-tree__row--root .stn-tree__label {
|
|
210
215
|
color: var(--stn-tree-label-root);
|
|
211
216
|
}
|
|
@@ -225,3 +230,155 @@
|
|
|
225
230
|
.stn-tree__row--folder[data-depth='3'] .stn-tree__label {
|
|
226
231
|
color: var(--stn-tree-label-folder-nested);
|
|
227
232
|
}
|
|
233
|
+
|
|
234
|
+
/* 4depth+ folder — nested 토큰 그대로 유지 */
|
|
235
|
+
.stn-tree__row--folder[data-depth='4'] .stn-tree__icon--folder .stn-tree__icon-glyph {
|
|
236
|
+
background-color: var(--stn-tree-icon-folder-nested);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.stn-tree__row--folder[data-depth='5'] .stn-tree__icon--folder .stn-tree__icon-glyph {
|
|
240
|
+
background-color: var(--stn-tree-icon-folder-nested);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.stn-tree__row--folder[data-depth='4'] .stn-tree__label {
|
|
244
|
+
color: var(--stn-tree-label-folder-nested);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.stn-tree__row--folder[data-depth='5'] .stn-tree__label {
|
|
248
|
+
color: var(--stn-tree-label-folder-nested);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/* ── 가이드 라인 숨김 수식어 (--no-guides) ──────────────────
|
|
252
|
+
* 인덴트 공간은 유지하고 연결선(connector · vertical) 글리프만 숨깁니다.
|
|
253
|
+
* 사용법: <StnTree guides={false} /> 또는 <StnTree className="stn-tree--no-guides" />
|
|
254
|
+
* ──────────────────────────────────────────────────────── */
|
|
255
|
+
.stn-tree--no-guides .stn-tree__guide-glyph,
|
|
256
|
+
.stn-tree--no-guides .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
257
|
+
display: none !important;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/* ── 너비 규격 수식어 (Tree 권장 표준 규격: w160~w240, full) ──
|
|
261
|
+
* width prop → .stn-tree--{w160|w180|w200|w220|w240|full}
|
|
262
|
+
* ──────────────────────────────────────────────────────── */
|
|
263
|
+
.stn-tree--w80 { width: var(--stn-size-80, 80px); }
|
|
264
|
+
.stn-tree--w100 { width: var(--stn-size-100, 100px); }
|
|
265
|
+
.stn-tree--w120 { width: var(--stn-size-120, 120px); }
|
|
266
|
+
.stn-tree--w140 { width: var(--stn-size-140, 140px); }
|
|
267
|
+
.stn-tree--w160 { width: var(--stn-size-160, 160px); }
|
|
268
|
+
.stn-tree--w180 { width: var(--stn-size-180, 180px); }
|
|
269
|
+
.stn-tree--w200 { width: var(--stn-size-200, 200px); }
|
|
270
|
+
.stn-tree--w220 { width: var(--stn-size-220, 220px); }
|
|
271
|
+
.stn-tree--w240 { width: var(--stn-size-240, 240px); }
|
|
272
|
+
.stn-tree--full { width: 100%; }
|
|
273
|
+
|
|
274
|
+
/* ── 선택/호버 테두리 곡률 수식어 (Border Radius) ────────────
|
|
275
|
+
* radius prop → .stn-tree--radius-{none|sm|md|full}
|
|
276
|
+
* ──────────────────────────────────────────────────────── */
|
|
277
|
+
.stn-tree--radius-none .stn-tree__row { border-radius: var(--stn-radius-0, 0px); }
|
|
278
|
+
.stn-tree--radius-sm .stn-tree__row { border-radius: var(--stn-radius-4, 4px); }
|
|
279
|
+
.stn-tree--radius-md .stn-tree__row { border-radius: var(--stn-radius-8, 8px); }
|
|
280
|
+
.stn-tree--radius-full .stn-tree__row { border-radius: var(--stn-radius-circle, 9999px); }
|
|
281
|
+
|
|
282
|
+
/* ── 가시성(눈) 토글 버튼 및 숨김 상태 ──────────────────────
|
|
283
|
+
* showVisibilityToggle={true} 일 때 행 우측 끝에 표시됩니다.
|
|
284
|
+
* ──────────────────────────────────────────────────────── */
|
|
285
|
+
.stn-tree__visibility-btn {
|
|
286
|
+
display: inline-flex;
|
|
287
|
+
align-items: center;
|
|
288
|
+
justify-content: center;
|
|
289
|
+
margin-left: auto;
|
|
290
|
+
margin-right: var(--stn-space-4, 4px);
|
|
291
|
+
padding: 0;
|
|
292
|
+
width: 20px;
|
|
293
|
+
height: 20px;
|
|
294
|
+
border: none;
|
|
295
|
+
background: transparent;
|
|
296
|
+
cursor: pointer;
|
|
297
|
+
border-radius: var(--stn-radius-2, 2px);
|
|
298
|
+
opacity: 0.7;
|
|
299
|
+
transition: opacity 0.15s ease;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
.stn-tree__visibility-btn:hover {
|
|
303
|
+
opacity: 1;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
.stn-tree__visibility-btn:focus-visible {
|
|
307
|
+
outline: 2px solid var(--stn-tree-focus);
|
|
308
|
+
outline-offset: 1px;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.stn-tree__visibility-glyph {
|
|
312
|
+
display: block;
|
|
313
|
+
width: 14px;
|
|
314
|
+
height: 14px;
|
|
315
|
+
background-color: var(--stn-text-tertiary, #8b93a1);
|
|
316
|
+
mask-position: center;
|
|
317
|
+
mask-size: contain;
|
|
318
|
+
mask-repeat: no-repeat;
|
|
319
|
+
-webkit-mask-position: center;
|
|
320
|
+
-webkit-mask-size: contain;
|
|
321
|
+
-webkit-mask-repeat: no-repeat;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
.stn-tree__visibility-glyph.is-off {
|
|
325
|
+
background-color: var(--stn-text-disabled, #a0aec0);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/* 숨김/미사용 처리된 노드 — 텍스트/아이콘 반투명(dimmed) */
|
|
329
|
+
.stn-tree__row.is-hidden-node .stn-tree__label,
|
|
330
|
+
.stn-tree__row.is-hidden-node .stn-tree__icon {
|
|
331
|
+
opacity: 0.38;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
/* ── 행 높이 크기 수식어 (Row Size) ─────────────────────────
|
|
336
|
+
* size prop → .stn-tree--{xs|md|lg|xl} 수식어로 자동 적용.
|
|
337
|
+
* 기본값: sm (24px) — 수식어 없음.
|
|
338
|
+
*
|
|
339
|
+
* Guide cell: align-self:stretch + guide-glyph height:100% 로
|
|
340
|
+
* 행이 높아져도 vertical 연결선이 끊기지 않게 유지합니다.
|
|
341
|
+
* ──────────────────────────────────────────────────────── */
|
|
342
|
+
|
|
343
|
+
/* xs — 20px: 초밀집 사이드바 목록 */
|
|
344
|
+
.stn-tree--xs .stn-tree__row { min-height: 20px; }
|
|
345
|
+
.stn-tree--xs .stn-tree__cell { height: 20px; }
|
|
346
|
+
|
|
347
|
+
/* md — 32px: comfortable */
|
|
348
|
+
.stn-tree--md .stn-tree__row { min-height: 32px; }
|
|
349
|
+
.stn-tree--md .stn-tree__cell { height: 32px; }
|
|
350
|
+
.stn-tree--md .stn-tree__cell--guide {
|
|
351
|
+
align-self: stretch;
|
|
352
|
+
height: auto;
|
|
353
|
+
}
|
|
354
|
+
.stn-tree--md .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
355
|
+
height: 100%;
|
|
356
|
+
mask-size: 100% 100%;
|
|
357
|
+
-webkit-mask-size: 100% 100%;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
/* lg — 40px: spacious */
|
|
361
|
+
.stn-tree--lg .stn-tree__row { min-height: 40px; }
|
|
362
|
+
.stn-tree--lg .stn-tree__cell { height: 40px; }
|
|
363
|
+
.stn-tree--lg .stn-tree__cell--guide {
|
|
364
|
+
align-self: stretch;
|
|
365
|
+
height: auto;
|
|
366
|
+
}
|
|
367
|
+
.stn-tree--lg .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
368
|
+
height: 100%;
|
|
369
|
+
mask-size: 100% 100%;
|
|
370
|
+
-webkit-mask-size: 100% 100%;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* xl — 48px: extra spacious */
|
|
374
|
+
.stn-tree--xl .stn-tree__row { min-height: 48px; }
|
|
375
|
+
.stn-tree--xl .stn-tree__cell { height: 48px; }
|
|
376
|
+
.stn-tree--xl .stn-tree__cell--guide {
|
|
377
|
+
align-self: stretch;
|
|
378
|
+
height: auto;
|
|
379
|
+
}
|
|
380
|
+
.stn-tree--xl .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
381
|
+
height: 100%;
|
|
382
|
+
mask-size: 100% 100%;
|
|
383
|
+
-webkit-mask-size: 100% 100%;
|
|
384
|
+
}
|
package/styles/style-pub.css
CHANGED
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
@import './components/stn-loading-skeleton.css';
|
|
58
58
|
@import './components/stn-search-requirement.css';
|
|
59
59
|
@import './components/stn-text-field.css';
|
|
60
|
+
@import './components/stn-label-prefix.css';
|
|
60
61
|
@import './components/stn-segmented.css';
|
|
61
62
|
@import './components/stn-toast.css';
|
|
62
63
|
@import './components/stn-scroll.css';
|
|
@@ -66,6 +66,9 @@
|
|
|
66
66
|
--stn-input-focus-bg: color-mix(in srgb, var(--stn-blue-250) 10%, transparent);
|
|
67
67
|
--stn-input-focus-fg: var(--stn-blue-300);
|
|
68
68
|
--stn-input-placeholder: var(--stn-gray-600);
|
|
69
|
+
--stn-label-prefix-label-bg: var(--stn-gray-800);
|
|
70
|
+
--stn-label-prefix-divider: var(--stn-gray-600);
|
|
71
|
+
--stn-label-prefix-label-color: var(--stn-gray-400);
|
|
69
72
|
--stn-input-disabled-opacity: 0.55;
|
|
70
73
|
--stn-input-filled-bg: var(--stn-gray-900);
|
|
71
74
|
--stn-input-filled-border: transparent;
|
|
@@ -110,7 +113,7 @@
|
|
|
110
113
|
--stn-tree-label-folder-nested: var(--stn-gray-200);
|
|
111
114
|
--stn-tree-label-root: var(--stn-static-white);
|
|
112
115
|
--stn-tree-label-server: var(--stn-gray-400);
|
|
113
|
-
--stn-tree-selected: var(--stn-gray-
|
|
116
|
+
--stn-tree-selected: var(--stn-gray-800);
|
|
114
117
|
--stn-tree-server-icon: var(--stn-gray-400);
|
|
115
118
|
--stn-scroll-thumb: var(--stn-gray-250);
|
|
116
119
|
--stn-section-side-bg: var(--stn-gray-900);
|
|
@@ -632,6 +635,9 @@
|
|
|
632
635
|
--stn-input-focus-bg: var(--stn-static-white);
|
|
633
636
|
--stn-input-focus-fg: var(--stn-gray-600);
|
|
634
637
|
--stn-input-placeholder: var(--stn-gray-400);
|
|
638
|
+
--stn-label-prefix-label-bg: var(--stn-gray-50);
|
|
639
|
+
--stn-label-prefix-divider: var(--stn-gray-200);
|
|
640
|
+
--stn-label-prefix-label-color: var(--stn-gray-500);
|
|
635
641
|
--stn-input-disabled-opacity: 0.55;
|
|
636
642
|
--stn-input-filled-bg: var(--stn-gray-50);
|
|
637
643
|
--stn-input-filled-border: transparent;
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
--stn-radius-control: var(--stn-radius-8);
|
|
24
24
|
--stn-radius-input-sm: var(--stn-radius-4);
|
|
25
25
|
--stn-radius-input-md: var(--stn-radius-4);
|
|
26
|
-
--stn-radius-input-lg: var(--stn-radius-
|
|
26
|
+
--stn-radius-input-lg: var(--stn-radius-8);
|
|
27
27
|
--stn-radius-input-xl: var(--stn-radius-16);
|
|
28
28
|
--stn-radius-dropdown-sm: var(--stn-radius-4);
|
|
29
29
|
--stn-radius-dropdown-md: var(--stn-radius-4);
|
|
30
|
-
--stn-radius-dropdown-lg: var(--stn-radius-
|
|
30
|
+
--stn-radius-dropdown-lg: var(--stn-radius-8);
|
|
31
31
|
--stn-radius-dropdown-prominent: var(--stn-radius-8);
|
|
32
32
|
--stn-radius-segmented: var(--stn-radius-circle);
|
|
33
33
|
--stn-radius-segmented-item: var(--stn-radius-16);
|
|
@@ -67,4 +67,5 @@
|
|
|
67
67
|
--stn-widget-stat-card-radius: var(--stn-radius-8);
|
|
68
68
|
--stn-widget-appearance-radius: var(--stn-radius-8);
|
|
69
69
|
--stn-widget-scrollbar-radius: var(--stn-radius-4);
|
|
70
|
+
--stn-search-requirement-radius: var(--stn-radius-8);
|
|
70
71
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
:root {
|
|
10
10
|
--stn-btn-height-xl: var(--stn-size-56);
|
|
11
|
-
--stn-btn-height-lg: var(--stn-size-
|
|
11
|
+
--stn-btn-height-lg: var(--stn-size-40);
|
|
12
12
|
--stn-btn-height-md: var(--stn-size-32);
|
|
13
13
|
--stn-btn-height-sm: var(--stn-size-24);
|
|
14
14
|
--stn-btn-height-xs: var(--stn-size-16);
|
|
@@ -37,7 +37,22 @@
|
|
|
37
37
|
--stn-dropdown-height-sm: var(--stn-size-24);
|
|
38
38
|
--stn-dropdown-height-md: var(--stn-size-32);
|
|
39
39
|
--stn-dropdown-height-lg: var(--stn-size-40);
|
|
40
|
-
--stn-dropdown-height-
|
|
40
|
+
--stn-dropdown-height-xl: var(--stn-size-56);
|
|
41
|
+
--stn-date-range-field-height-sm: var(--stn-size-24);
|
|
42
|
+
--stn-date-range-field-height-md: var(--stn-size-32);
|
|
43
|
+
--stn-date-range-field-height-lg: var(--stn-size-40);
|
|
44
|
+
--stn-date-range-field-height-xl: var(--stn-size-56);
|
|
45
|
+
--stn-date-range-field-min-width-sm: var(--stn-size-280);
|
|
46
|
+
--stn-date-range-field-min-width-md: var(--stn-size-340);
|
|
47
|
+
--stn-date-range-field-min-width-lg: var(--stn-size-360);
|
|
48
|
+
--stn-date-range-field-min-width-xl: var(--stn-size-400);
|
|
49
|
+
--stn-date-range-field-icon-size-sm: var(--stn-size-14);
|
|
50
|
+
--stn-date-range-field-icon-size-md: var(--stn-size-16);
|
|
51
|
+
--stn-date-range-field-icon-size-lg: var(--stn-size-16);
|
|
52
|
+
--stn-date-range-field-icon-size-xl: var(--stn-size-20);
|
|
53
|
+
--stn-search-requirement-border-width: var(--stn-size-1);
|
|
54
|
+
--stn-search-requirement-divider-height: var(--stn-size-18);
|
|
55
|
+
--stn-search-requirement-divider-width: var(--stn-size-1);
|
|
41
56
|
--stn-text-field-icon-box-size: var(--stn-size-28);
|
|
42
57
|
--stn-icon-box-size: var(--stn-size-28);
|
|
43
58
|
--stn-icon-box-size-xs: var(--stn-size-20);
|
|
@@ -45,8 +60,8 @@
|
|
|
45
60
|
--stn-icon-box-size-md: var(--stn-size-28);
|
|
46
61
|
--stn-icon-box-size-lg: var(--stn-size-36);
|
|
47
62
|
--stn-icon-box-size-xl: var(--stn-size-44);
|
|
48
|
-
--stn-pop-header-height: var(--stn-size-
|
|
49
|
-
--stn-pop-footer-height: var(--stn-size-
|
|
63
|
+
--stn-pop-header-height: var(--stn-size-56);
|
|
64
|
+
--stn-pop-footer-height: var(--stn-size-56);
|
|
50
65
|
--stn-segmented-item-height: var(--stn-size-32);
|
|
51
66
|
--stn-segmented-item-height-sm: var(--stn-size-26);
|
|
52
67
|
--stn-segmented-item-height-lg: var(--stn-size-40);
|
|
@@ -57,8 +72,6 @@
|
|
|
57
72
|
--stn-pop-width-md: var(--stn-size-480);
|
|
58
73
|
--stn-pop-width-lg: var(--stn-size-640);
|
|
59
74
|
--stn-pop-width-xl: var(--stn-size-940);
|
|
60
|
-
--stn-pop-width-xxl: var(--stn-size-1200);
|
|
61
|
-
--stn-pop-width-2xl: var(--stn-size-1500);
|
|
62
75
|
--stn-switch-track-w-sm: var(--stn-size-28);
|
|
63
76
|
--stn-switch-track-w-md: var(--stn-size-36);
|
|
64
77
|
--stn-switch-track-w-lg: var(--stn-size-44);
|
|
@@ -224,4 +224,16 @@
|
|
|
224
224
|
--stn-widget-stat-card-padding: var(--stn-space-12);
|
|
225
225
|
--stn-widget-head-bottom-compact: var(--stn-space-6);
|
|
226
226
|
--stn-widget-panel-padding-end: var(--stn-space-2);
|
|
227
|
+
--stn-search-requirement-padding: var(--stn-space-16);
|
|
228
|
+
--stn-search-requirement-padding-y: var(--stn-space-16);
|
|
229
|
+
--stn-search-requirement-padding-x: var(--stn-space-16);
|
|
230
|
+
--stn-search-requirement-gap-row: var(--stn-space-20);
|
|
231
|
+
--stn-search-requirement-gap-col: var(--stn-space-16);
|
|
232
|
+
--stn-search-requirement-fields-gap: var(--stn-space-16);
|
|
233
|
+
--stn-search-requirement-field-gap: var(--stn-space-8);
|
|
234
|
+
--stn-search-requirement-compact-padding: var(--stn-space-12);
|
|
235
|
+
--stn-search-requirement-compact-padding-y: var(--stn-space-12);
|
|
236
|
+
--stn-search-requirement-compact-padding-x: var(--stn-space-12);
|
|
237
|
+
--stn-search-requirement-compact-gap: var(--stn-space-12);
|
|
238
|
+
--stn-search-requirement-divider-margin-x: var(--stn-space-4);
|
|
227
239
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnSearchRequirement.ts"],"sourcesContent":["/**\n * Infomap 검색조건 패턴 — Figma 40000042:186893\n * @see StnSearchRequirementBar · `.search_area` (Pub HTML)\n */\n\nexport const STN_SEARCH_REQUIREMENT_FIGMA = '40000042:186893'\n\nexport const STN_SEARCH_REQUIREMENT_NAME = 'Search requirement bar'\n\n/** 한글 UI 라벨 (Infomap 제품) */\nexport const STN_SEARCH_REQUIREMENT_KO_NAME = '검색조건'\n\nexport const STN_SEARCH_REQUIREMENT_INTRO =\n '목록 · 상세 조회 화면 상단에서 조건 필터링과 검색을 실행하는 검색바 패턴입니다. 텍스트 입력, 드롭다운, 날짜 선택과 엑셀 다운로드 버튼을 자유롭게 조합할 수 있습니다.'\n\nexport const STN_SEARCH_REQUIREMENT_SPEC = [\n { property: 'Shell padding (Default)', value: '8px 16px', note: 'Figma py/px 표준' },\n { property: 'Shell padding (Compact)', value: '6px 12px', note: '밀집형 바 (`density=\"compact\"`), gap 12px' },\n { property: 'Shell radius', value: '8px', note: 'rounded card' },\n {\n property: 'Shell border',\n value: 'Light gray-75 · Dark gray-700',\n note: '`--stn-search-requirement-border`',\n },\n {\n property: 'Shell bg',\n value: 'transparent',\n note: '`--stn-search-requirement-bg` · Figma list — no fill',\n },\n {\n property: 'Shell shadow',\n value: 'Light gray-75 · Dark black/35%',\n note: '`--stn-search-requirement-shadow`',\n },\n { property: 'Main gap', value: '20px 16px', note: 'row-gap 20px, col-gap 16px' },\n { property: 'Fields gap', value: '16px (Compact 12px)', note: 'field items inline gap' },\n { property: 'Group divider', value: '1px × 18px', note: '`StnSearchRequirementBar.Divider` (수직 구분선)' },\n { property: 'Label–control gap', value: '8px', note: 'inline gap between label and control' },\n {\n property: 'Label',\n value: 'Light gray-850 · Dark gray-100',\n note: '`--stn-search-requirement-label` · 14px semibold',\n },\n { property: 'Controls', value: '32px (M)', note: 'TextField · Dropdown · DateRangeField' },\n { property: 'Search btn', value: 'StnButton primary M · 32px', note: 'search icon + label' },\n {\n property: 'Export',\n value: 'StnButton ghost · line/file-analytics',\n note: 'root 직속 · `margin-left: auto` 우측 정렬 · 트레이 없음',\n },\n] as const\n\nexport const STN_SEARCH_REQUIREMENT_DEMO_FIELDS = {\n reportTypeText: { label: '보고서 종류', value: '전체' },\n reportTypeSelect: { label: '보고서 종류', value: '' },\n periodType: { label: '기간 유형', value: '' },\n period: {\n label: '기간',\n start: '2024-02-07 09:22:34',\n end: '2024-03-07 09:22:34',\n },\n} as const\n\nexport const STN_SEARCH_REQUIREMENT_USAGE = `import {\n StnDateRangePickerField,\n StnDropdown,\n StnSearchRequirementBar,\n StnTextField,\n} from '@stn-uiux/pub-ui-react'\n\nconst options = [{ value: '', label: '전체' }]\n\n<StnSearchRequirementBar>\n <StnSearchRequirementBar.Fields>\n <StnSearchRequirementBar.Field label=\"보고서 종류\">\n <StnTextField size=\"M\" defaultValue=\"전체\" width={140} aria-label=\"Report type\" />\n </StnSearchRequirementBar.Field>\n <StnSearchRequirementBar.Field label=\"보고서 종류\">\n <StnDropdown size=\"md\" width={130} options={options} defaultValue=\"\" aria-label=\"Report type\" />\n </StnSearchRequirementBar.Field>\n <StnSearchRequirementBar.Field label=\"기간 유형\">\n <StnDropdown size=\"md\" width={130} options={options} defaultValue=\"\" aria-label=\"Period type\" />\n </StnSearchRequirementBar.Field>\n <StnSearchRequirementBar.Field label=\"기간\">\n <StnDateRangePickerField size=\"M\" showTime defaultValue={{ start: null, end: null }} aria-label=\"Period\" />\n </StnSearchRequirementBar.Field>\n </StnSearchRequirementBar.Fields>\n <StnSearchRequirementBar.SearchButton onClick={() => {}}>검색</StnSearchRequirementBar.SearchButton>\n <StnSearchRequirementBar.Export onClick={() => {}} />\n</StnSearchRequirementBar>`\n\nexport const STN_SEARCH_REQUIREMENT_USAGE_HTML = `<!-- Pub .search_area — 검색조건 -->\n<section class=\"search_area stn-search-requirement\">\n <div class=\"stn-search-requirement__fields\">\n <div class=\"stn-search-requirement__field\">\n <label class=\"stn-search-requirement__label\">보고서 종류</label>\n <input type=\"text\" class=\"stn-text-field md\" value=\"전체\" />\n </div>\n <div class=\"stn-search-requirement__field\">\n <label class=\"stn-search-requirement__label\">기간 유형</label>\n <div class=\"stn-dropdown md\"></div>\n </div>\n <div class=\"stn-search-requirement__field\">\n <label class=\"stn-search-requirement__label\">기간</label>\n <button type=\"button\" class=\"stn-date-range-field\"></button>\n </div>\n </div>\n <button type=\"button\" class=\"stn-btn contained md\">검색</button>\n <button type=\"button\" class=\"stn-btn ghost md icon\" aria-label=\"Excel보내기\">\n <!-- StnIcon line/file-analytics -->\n </button>\n</section>`\n"],"mappings":";AAKO,IAAM,+BAA+B;AAErC,IAAM,8BAA8B;AAGpC,IAAM,iCAAiC;AAEvC,IAAM,+BACX;AAEK,IAAM,8BAA8B;AAAA,EACzC,EAAE,UAAU,2BAA2B,OAAO,YAAY,MAAM,2BAAiB;AAAA,EACjF,EAAE,UAAU,2BAA2B,OAAO,YAAY,MAAM,4DAAwC;AAAA,EACxG,EAAE,UAAU,gBAAgB,OAAO,OAAO,MAAM,eAAe;AAAA,EAC/D;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,EAAE,UAAU,YAAY,OAAO,aAAa,MAAM,6BAA6B;AAAA,EAC/E,EAAE,UAAU,cAAc,OAAO,uBAAuB,MAAM,yBAAyB;AAAA,EACvF,EAAE,UAAU,iBAAiB,OAAO,iBAAc,MAAM,sEAA6C;AAAA,EACrG,EAAE,UAAU,0BAAqB,OAAO,OAAO,MAAM,uCAAuC;AAAA,EAC5F;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,EAAE,UAAU,YAAY,OAAO,YAAY,MAAM,8CAAwC;AAAA,EACzF,EAAE,UAAU,cAAc,OAAO,iCAA8B,MAAM,sBAAsB;AAAA,EAC3F;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,IACP,MAAM;AAAA,EACR;AACF;AAEO,IAAM,qCAAqC;AAAA,EAChD,gBAAgB,EAAE,OAAO,mCAAU,OAAO,eAAK;AAAA,EAC/C,kBAAkB,EAAE,OAAO,mCAAU,OAAO,GAAG;AAAA,EAC/C,YAAY,EAAE,OAAO,6BAAS,OAAO,GAAG;AAAA,EACxC,QAAQ;AAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK;AAAA,EACP;AACF;AAEO,IAAM,+BAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4BrC,IAAM,oCAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnPopup.ts"],"sourcesContent":["/**\n * Pub HTML Popup (.stn-pop) — StnPopup shell · sizes · pattern\n */\n\nexport const STN_POPUP_INTRO =\n '사용자의 주의를 환기시키거나 추가 입력을 받는 팝업/모달 패턴입니다. React에서는 `<StnPopup>` 컴포넌트 하나만 사용하면 내부에서 배경 딤(Overlay)과 레이어 층을 자동으로 내장 처리해 줍니다.'\n\nexport const STN_POPUP_STACK_HTML = `<div class=\"stn-pop-stack\">\n <div\n class=\"stn-layer stn-elev-3 stn-elev--shell stn-elev--dim stn-pop-stack__dim\"\n data-stn-layer=\"3\"\n data-stn-layer-role=\"dim\"\n data-stn-layer-surface=\"dim\"\n >\n <button type=\"button\" class=\"stn-layer__dim-hit\" aria-label=\"닫기\"></button>\n </div>\n <div\n class=\"stn-layer stn-elev-4 stn-elev--shell stn-pop-stack__modal\"\n data-stn-layer=\"4\"\n data-stn-layer-role=\"modal\"\n data-stn-layer-surface=\"transparent\"\n >\n <!-- .stn-pop — 패널 셸 -->\n </div>\n</div>`\n\nexport const STN_POPUP_USAGE_HTML = `${STN_POPUP_STACK_HTML.replace(' <!-- .stn-pop — 패널 셸 -->', `<div class=\"stn-pop stn-pop--md stn-pop--open\">\n <div class=\"stn-pop__cont\">\n <div class=\"stn-pop__panel\">\n <div class=\"stn-pop__head\">\n <h4>제목</h4>\n </div>\n <button type=\"button\" class=\"stn-pop__close\" aria-label=\"닫기\"></button>\n <div class=\"stn-pop__body\"><!-- 본문 --></div>\n <div class=\"stn-pop__actions\"><!-- StnButton primary · secondary --></div>\n </div>\n </div>\n </div>`)}`\n\nexport const STN_POPUP_USAGE = `import { StnButton, StnPopup } from '@stn-uiux/pub-ui-react'\nimport { useState } from 'react'\n\nconst [open, setOpen] = useState(false)\n\n<StnButton size=\"M\" variant=\"contained\" onClick={() => setOpen(true)}>열기</StnButton>\n<StnPopup\n open={open}\n onClose={() => setOpen(false)}\n size=\"md\"\n title=\"제목\"\n actions={\n <StnButton size=\"S\" variant=\"contained\" onClick={() => setOpen(false)}>\n 확인\n </StnButton>\n }\n>\n 본문\n</StnPopup>`\n\nexport const STN_POPUP_RESPONSIVE_NOTE =\n '가로: `width: min(var(--stn-pop-active-width), calc(100vw - var(--stn-pop-gutter) * 2))` · `--full`: `calc(100vw - gutter×2)`. 세로: `.pop_con` overflow + `--stn-pop-max-height`.'\n\nexport const STN_POPUP_SHELL_PARTIAL =\n '01 PC_HTML_Revision/html/_partials/popup-shell.partial.html'\n\nexport const STN_POPUP_SYNC_CSS = [\n 'packages/stn-pub-ui/css/stn-pub-popup.css',\n '01 PC_HTML_Revision/resource/css/stn-pub-popup.css',\n 'style-pub.css · style.css → @import stn-popup.css',\n] as const\n\nexport const STN_POPUP_SIZES = [\n {\n id: 'xs',\n label: 'Extra Small',\n className: 'stn-pop--xs',\n width: '400px',\n token: '--stn-pop-width-xs',\n usage: '단순 확인 · 삭제/경고 확인 얼럿 · 상태 변경',\n },\n {\n id: 'sm',\n label: 'Small',\n className: 'stn-pop--sm',\n width: '520px',\n token: '--stn-pop-width-sm',\n usage: '1~2개 입력 숏 폼 · 단축 검색 · 명칭 변경',\n },\n {\n id: 'md',\n label: 'Medium',\n className: 'stn-pop--md',\n width: '680px',\n token: '--stn-pop-width-md',\n usage: '단일 입력 폼 · 사용자 설정 · 저장 확인 (권장 기본)',\n },\n {\n id: 'lg',\n label: 'Large',\n className: 'stn-pop--lg',\n width: '920px',\n token: '--stn-pop-width-lg',\n usage: '복합 필터 · 2열 폼 · 짧은 테이블 목록',\n },\n {\n id: 'xl',\n label: 'XL',\n className: 'stn-pop--xl',\n width: '1200px',\n token: '--stn-pop-width-xl',\n usage: '대형 데이터 테이블 · 다열 프로비저닝 폼 · 대형 상세',\n },\n {\n id: 'xxl',\n label: 'XXL',\n className: 'stn-pop--xxl',\n width: '1440px',\n token: '--stn-pop-width-xxl',\n usage: '대시보드 축약 뷰 · 대형 모니터링/관제 팝업',\n },\n {\n id: '2xl',\n label: '2XL',\n className: 'stn-pop--2xl',\n width: '1600px',\n token: '--stn-pop-width-2xl',\n usage: '실시간 관제 상세 · 대규모 토폴로지 매핑 팝업',\n },\n {\n id: 'full',\n label: 'Full bleed',\n className: 'stn-pop--full',\n width: 'calc(100vw − 40px)',\n token: '(viewport − gutter)',\n usage: '배치 장비·전체 화면 테이블 (1780px 등 → full 권장)',\n },\n] as const\n\nexport type StnPopupSizeId = (typeof STN_POPUP_SIZES)[number]['id']\n\n/** 레거시 `content.css` 고정 px → 권장 modifier (마이그레이션 참고) */\nexport function resolveStnPopupSizeFromWidth(px: number): StnPopupSizeId {\n if (px <= 360) return 'sm'\n if (px <= 480) return 'md'\n if (px <= 640) return 'lg'\n if (px <= 934) return 'xl'\n if (px <= 1200) return 'xxl'\n if (px <= 1500) return '2xl'\n return 'full'\n}\n\nexport const STN_POPUP_LEGACY_WIDTH_SAMPLES = [\n { popClass: 'batch_equip_pop', widthPx: 1780, suggested: 'full' as const },\n { popClass: 'template_history_pop', widthPx: 1565, suggested: '2xl' as const },\n { popClass: 'real_time_view_pop', widthPx: 1500, suggested: '2xl' as const },\n { popClass: 'select_equip_pop', widthPx: 1412, suggested: '2xl' as const },\n { popClass: 'equip_regist_pop', widthPx: 1070, suggested: 'xxl' as const },\n { popClass: 'fail_measure_pop', widthPx: 1100, suggested: 'xxl' as const },\n] as const\n\nexport const STN_POPUP_PARTS = [\n { part: 'Stack', selector: '.stn-pop-stack', note: 'Dim + Modal 래퍼 · StnLayer.Modal (L2)' },\n { part: 'Dim', selector: '.stn-layer-dim · .stn-elev--dim', note: 'L2 내장 scrim · blur · dim-hit 클릭 닫기' },\n { part: 'Modal host', selector: '.stn-pop', note: 'L2 모달 도화지 · 중앙 정렬' },\n { part: 'Width host', selector: '.stn-pop__cont', note: 'size modifier · responsive min()' },\n {\n part: 'Panel',\n selector: '.stn-pop__panel',\n note: 'gray.850 · gray.700 border · radius 10 · shadow · overflow',\n },\n {\n part: 'Header',\n selector: '.stn-pop__head',\n note: '48px · h4 18 SemiBold · theme title token',\n },\n {\n part: 'Close',\n selector: '.stn-pop__close',\n note: 'StnButton icon=\"line/x\" size=xsmall (16) · top 10 / right 8',\n },\n { part: 'Body', selector: '.stn-pop__body', note: 'padding 0 8px · overflow auto · 화면별 슬롯' },\n {\n part: 'Actions',\n selector: '.stn-pop__actions',\n note: '64px · center · gap 8 · StnButton primary→secondary',\n },\n] as const\n\nexport const STN_POPUP_TOKEN_ROWS = [\n { token: '--stn-pop-gutter', resolvesTo: '20px', usage: '좌우·portal padding' },\n { token: '--stn-pop-width-xs', resolvesTo: '400px', usage: '.stn-pop--xs · 단순 확인/얼럿' },\n { token: '--stn-pop-width-sm', resolvesTo: '520px', usage: '.stn-pop--sm · 1~2개 입력 폼' },\n { token: '--stn-pop-width-md', resolvesTo: '680px', usage: '.stn-pop--md · 기본 표준' },\n { token: '--stn-pop-width-lg', resolvesTo: '920px', usage: '.stn-pop--lg · 2열 폼/상세' },\n { token: '--stn-pop-width-xl', resolvesTo: '1200px', usage: '.stn-pop--xl · 대형 테이블/그리드' },\n { token: '--stn-pop-width-xxl', resolvesTo: '1440px', usage: '.stn-pop--xxl · 대시보드/관제' },\n { token: '--stn-pop-width-2xl', resolvesTo: '1600px', usage: '.stn-pop--2xl · 초대형 토폴로지' },\n { token: '.stn-pop--full', resolvesTo: '100vw − gutter×2', usage: 'full-bleed · alias --full-bleed' },\n { token: '--stn-pop-max-height', resolvesTo: 'min(85dvh, …)', usage: '.stn-pop 본문 스크롤' },\n { token: '--stn-pop-header-height', resolvesTo: '48px', usage: '.stn-pop__head min-height' },\n { token: '--stn-pop-footer-height', resolvesTo: '64px', usage: '.stn-pop__actions' },\n { token: '--stn-pop-close-size', resolvesTo: 'icon-size.xsmall (16px)', usage: '.stn-pop__close hit' },\n { token: '--stn-pop-close-icon', resolvesTo: 'icon-size.xsmall (16px)', usage: '.stn-pop__close glyph' },\n { token: '--stn-pop-surface', resolvesTo: 'gray.850 (dark) · white (light)', usage: '.stn-pop__panel background' },\n { token: '--stn-pop-border', resolvesTo: 'gray.700 (dark) · gray.100 (light)', usage: '.stn-pop__panel border' },\n { token: '--stn-pop-title', resolvesTo: 'static.white (dark) · gray.650 (light)', usage: '.stn-pop__head h4' },\n { token: '--stn-pop-shadow', resolvesTo: '0 0 10px black (dark) · 0 4px 10px / 25% (light)', usage: '팝업 패널' },\n { token: '--stn-radius-pop-wrap', resolvesTo: 'radius.10', usage: '.stn-pop__panel border-radius' },\n {\n token: '--stn-dim-bg',\n resolvesTo: 'Dark gray-950/50 · Light gray-900/20',\n usage: 'StnLayer.Dim scrim',\n },\n {\n token: '--stn-dim-blur',\n resolvesTo: 'Dark 4px · Light 2px',\n usage: 'backdrop-filter on scrim',\n },\n] as const\n\nexport const STN_POPUP_INVENTORY_ROWS = [\n {\n pattern: 'Popup panel shell',\n pubClass: '.stn-pop .stn-pop__panel',\n size: 'radius 10 · 934 xl',\n status: 'implemented' as const,\n },\n {\n pattern: 'Size SM–Full',\n pubClass: '.stn-pop--sm … --full',\n size: 'responsive min(토큰, 100vw−40px)',\n status: 'implemented' as const,\n },\n {\n pattern: '화면별 width',\n pubClass: '.equip_regist_pop .stn-pop__cont 등',\n size: 'content.css override → xxl/2xl/full로 이전 권장',\n status: 'partial' as const,\n },\n {\n pattern: 'MUI Dialog (migrated)',\n pubClass: '.stn-pop',\n size: 'sm–full',\n status: 'implemented' as const,\n },\n] as const\n"],"mappings":";AAIO,IAAM,kBACX;AAEK,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmB7B,IAAM,uBAAuB,GAAG,qBAAqB,QAAQ,oDAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAWzF,CAAC;AAEL,IAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBxB,IAAM,4BACX;AAEK,IAAM,0BACX;AAEK,IAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,WAAW;AAAA,IACX,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,EACT;AACF;AAKO,SAAS,6BAA6B,IAA4B;AACvE,MAAI,MAAM,IAAK,QAAO;AACtB,MAAI,MAAM,IAAK,QAAO;AACtB,MAAI,MAAM,IAAK,QAAO;AACtB,MAAI,MAAM,IAAK,QAAO;AACtB,MAAI,MAAM,KAAM,QAAO;AACvB,MAAI,MAAM,KAAM,QAAO;AACvB,SAAO;AACT;AAEO,IAAM,iCAAiC;AAAA,EAC5C,EAAE,UAAU,mBAAmB,SAAS,MAAM,WAAW,OAAgB;AAAA,EACzE,EAAE,UAAU,wBAAwB,SAAS,MAAM,WAAW,MAAe;AAAA,EAC7E,EAAE,UAAU,sBAAsB,SAAS,MAAM,WAAW,MAAe;AAAA,EAC3E,EAAE,UAAU,oBAAoB,SAAS,MAAM,WAAW,MAAe;AAAA,EACzE,EAAE,UAAU,oBAAoB,SAAS,MAAM,WAAW,MAAe;AAAA,EACzE,EAAE,UAAU,oBAAoB,SAAS,MAAM,WAAW,MAAe;AAC3E;AAEO,IAAM,kBAAkB;AAAA,EAC7B,EAAE,MAAM,SAAS,UAAU,kBAAkB,MAAM,oDAAuC;AAAA,EAC1F,EAAE,MAAM,OAAO,UAAU,sCAAmC,MAAM,yEAAqC;AAAA,EACvG,EAAE,MAAM,cAAc,UAAU,YAAY,MAAM,oEAAoB;AAAA,EACtE,EAAE,MAAM,cAAc,UAAU,kBAAkB,MAAM,sCAAmC;AAAA,EAC3F;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AAAA,EACA,EAAE,MAAM,QAAQ,UAAU,kBAAkB,MAAM,wEAAyC;AAAA,EAC3F;AAAA,IACE,MAAM;AAAA,IACN,UAAU;AAAA,IACV,MAAM;AAAA,EACR;AACF;AAEO,IAAM,uBAAuB;AAAA,EAClC,EAAE,OAAO,oBAAoB,YAAY,QAAQ,OAAO,iCAAoB;AAAA,EAC5E,EAAE,OAAO,sBAAsB,YAAY,SAAS,OAAO,2DAA0B;AAAA,EACrF,EAAE,OAAO,sBAAsB,YAAY,SAAS,OAAO,kDAA2B;AAAA,EACtF,EAAE,OAAO,sBAAsB,YAAY,SAAS,OAAO,8CAAuB;AAAA,EAClF,EAAE,OAAO,sBAAsB,YAAY,SAAS,OAAO,gDAAyB;AAAA,EACpF,EAAE,OAAO,sBAAsB,YAAY,UAAU,OAAO,uEAA4B;AAAA,EACxF,EAAE,OAAO,uBAAuB,YAAY,UAAU,OAAO,2DAA0B;AAAA,EACvF,EAAE,OAAO,uBAAuB,YAAY,UAAU,OAAO,iEAA2B;AAAA,EACxF,EAAE,OAAO,kBAAkB,YAAY,4BAAoB,OAAO,qCAAkC;AAAA,EACpG,EAAE,OAAO,wBAAwB,YAAY,sBAAiB,OAAO,2CAAkB;AAAA,EACvF,EAAE,OAAO,2BAA2B,YAAY,QAAQ,OAAO,4BAA4B;AAAA,EAC3F,EAAE,OAAO,2BAA2B,YAAY,QAAQ,OAAO,oBAAoB;AAAA,EACnF,EAAE,OAAO,wBAAwB,YAAY,2BAA2B,OAAO,sBAAsB;AAAA,EACrG,EAAE,OAAO,wBAAwB,YAAY,2BAA2B,OAAO,wBAAwB;AAAA,EACvG,EAAE,OAAO,qBAAqB,YAAY,sCAAmC,OAAO,6BAA6B;AAAA,EACjH,EAAE,OAAO,oBAAoB,YAAY,yCAAsC,OAAO,yBAAyB;AAAA,EAC/G,EAAE,OAAO,mBAAmB,YAAY,6CAA0C,OAAO,oBAAoB;AAAA,EAC7G,EAAE,OAAO,oBAAoB,YAAY,uDAAoD,OAAO,4BAAQ;AAAA,EAC5G,EAAE,OAAO,yBAAyB,YAAY,aAAa,OAAO,gCAAgC;AAAA,EAClG;AAAA,IACE,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AAAA,EACA;AAAA,IACE,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,OAAO;AAAA,EACT;AACF;AAEO,IAAM,2BAA2B;AAAA,EACtC;AAAA,IACE,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,UAAU;AAAA,IACV,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AACF;","names":[]}
|
package/dist/chunk-QT4HHVZH.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.57'\nexport const STN_UI_VERSION_LABEL = 'v0.1.57'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnDateRangeField.ts"],"sourcesContent":["/**\n * Pub datetime range field — Infomap `input` (Figma 40000042:186907)\n * @see common.css `.date_box` · Ant Design RangePicker\n */\n\nexport type StnDateRangeFieldSize = 'sm' | 'md' | 'lg' | 'S' | 'M' | 'L'\n\nexport const STN_DATE_RANGE_FIELD_FIGMA = '40000042:186907'\n\n/** DS·Figma 영문명 — Date range field (datetime 포함 시 DateTime range field) */\nexport const STN_DATE_RANGE_FIELD_NAME = 'Date range field'\n\nexport const STN_DATE_RANGE_FIELD_INTRO =\n '검색·로그 필터용 **기간 선택**입니다. 트리거는 `StnDateRangeField` · 팝업 달력은 `StnDateRangePicker` / 통합 `StnDateRangePickerField`. Pub HTML `.date_box` · `ant-picker-dropdown` · `--calendar-*` 토큰.'\n\nexport const STN_DATE_RANGE_FIELD_DEMO = {\n start: '2024-02-07 09:22:34',\n end: '2024-03-07 09:22:34',\n} as const\n\nexport const STN_DATE_RANGE_FIELD_SIZE_ROWS: readonly {\n size: StnDateRangeFieldSize\n height: string\n radius: string\n fontSize: string\n paddingX: string\n iconSize: string\n pubClass: string\n usedIn: string\n}[] = [\n {\n size: 'sm',\n height: '24px',\n radius: '4px',\n fontSize: '13px',\n paddingX: '10px',\n iconSize: '14px',\n pubClass: 'stn-date-range-field sm',\n usedIn: '좁은 검색줄',\n },\n {\n size: 'md',\n height: '32px',\n radius: '4px',\n fontSize: '13px',\n paddingX: '12px',\n iconSize: '16px',\n pubClass: 'stn-date-range-field md',\n usedIn: '검색영역 기간 (Figma)',\n },\n {\n size: 'lg',\n height: '40px',\n radius: '6px',\n fontSize: '14px',\n paddingX: '12px',\n iconSize: '16px',\n pubClass: 'stn-date-range-field lg',\n usedIn: '강조 검색',\n },\n] as const\n\nexport const STN_DATE_RANGE_FIELD_USAGE = `import { StnDateRangeField } from '@stn-uiux/pub-ui-react'\n\n<StnDateRangeField\n size=\"md\"\n start={new Date('2024-02-07T09:22:34')}\n end={new Date('2024-03-07T09:22:34')}\n onClick={() => openRangePicker()}\n aria-label=\"Search period\"\n/>`\n\nexport const STN_DATE_RANGE_FIELD_HTML = `<button\n type=\"button\"\n class=\"stn-date-range-field md\"\n aria-label=\"Search period\"\n>\n <span class=\"stn-date-range-field__inner\">\n <span class=\"stn-date-range-field__text\">\n <span class=\"stn-date-range-field__value\">2024-02-07 09:22:34</span>\n <span class=\"stn-date-range-field__sep\" aria-hidden=\"true\">~</span>\n <span class=\"stn-date-range-field__value\">2024-03-07 09:22:34</span>\n </span>\n <span class=\"stn-date-range-field__icon\" aria-hidden=\"true\"></span>\n </span>\n</button>`\n\nexport function formatStnDateRangeFieldValue(date: Date): string {\n const y = date.getFullYear()\n const m = String(date.getMonth() + 1).padStart(2, '0')\n const d = String(date.getDate()).padStart(2, '0')\n const h = String(date.getHours()).padStart(2, '0')\n const min = String(date.getMinutes()).padStart(2, '0')\n const s = String(date.getSeconds()).padStart(2, '0')\n return `${y}-${m}-${d} ${h}:${min}:${s}`\n}\n\nexport function parseStnDateRangeFieldValue(value: string): Date | null {\n const trimmed = value.trim()\n if (!trimmed) return null\n const normalized = trimmed.replace(' ', 'T')\n const parsed = new Date(normalized)\n return Number.isNaN(parsed.getTime()) ? null : parsed\n}\n"],"mappings":";AAOO,IAAM,6BAA6B;AAGnC,IAAM,4BAA4B;AAElC,IAAM,6BACX;AAEK,IAAM,4BAA4B;AAAA,EACvC,OAAO;AAAA,EACP,KAAK;AACP;AAEO,IAAM,iCASP;AAAA,EACJ;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,UAAU;AAAA,IACV,QAAQ;AAAA,EACV;AACF;AAEO,IAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUnC,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAelC,SAAS,6BAA6B,MAAoB;AAC/D,QAAM,IAAI,KAAK,YAAY;AAC3B,QAAM,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,EAAE,SAAS,GAAG,GAAG;AACrD,QAAM,IAAI,OAAO,KAAK,QAAQ,CAAC,EAAE,SAAS,GAAG,GAAG;AAChD,QAAM,IAAI,OAAO,KAAK,SAAS,CAAC,EAAE,SAAS,GAAG,GAAG;AACjD,QAAM,MAAM,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACrD,QAAM,IAAI,OAAO,KAAK,WAAW,CAAC,EAAE,SAAS,GAAG,GAAG;AACnD,SAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACxC;AAEO,SAAS,4BAA4B,OAA4B;AACtE,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,aAAa,QAAQ,QAAQ,KAAK,GAAG;AAC3C,QAAM,SAAS,IAAI,KAAK,UAAU;AAClC,SAAO,OAAO,MAAM,OAAO,QAAQ,CAAC,IAAI,OAAO;AACjD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnDropdown.ts"],"sourcesContent":["/**\n * StnDropdown — native `<select>` · custom menu (`div.selected` + `ul.select_option`)\n * @see common.css · content.css (cctv-header, simple_board_area, ip_mpls)\n */\n\nexport type StnDropdownMode = 'native' | 'menu'\n\nexport type StnDropdownSize = 'sm' | 'md' | 'lg' | 'xl'\n\nexport type StnDropdownVariant = 'outline' | 'standard' | 'filled'\nexport type StnDropdownHelperTextPosition = 'top' | 'bottom' | 'left' | 'right'\nexport type StnDropdownDirection = 'down' | 'up'\n\n/** native: select에 class 직접 · wrapper: div.stn-dropdown > select.selected */\nexport type StnDropdownNativeLayout = 'inline' | 'wrapper'\n\nexport type StnDropdownModifier =\n | 'pageSize'\n | 'serverFilter'\n | 'networkArea'\n | 'fullWidth'\n\nexport type StnDropdownOption = {\n value: string\n label: string\n disabled?: boolean\n}\n\n/** StnDropdown menu sm/md/lg/xl — height only · width는 `width`/`fullWidth` */\nexport const STN_DROPDOWN_SIZE_ROWS: readonly {\n size: StnDropdownSize\n height: string\n radius: string\n fontSize: string\n pubClass: string\n typicalWidth: string\n usedIn: string\n}[] = [\n {\n size: 'sm',\n height: '24px',\n radius: '4px (radius-4)',\n fontSize: '13px',\n pubClass: 'stn-dropdown sm',\n typicalWidth: 'width 프리셋 · 기본 180px · fullWidth=100%',\n usedIn: '폼·테이블 셀 · 좁은 검색',\n },\n {\n size: 'md',\n height: '32px',\n radius: '4px (radius-4)',\n fontSize: '13px',\n pubClass: 'stn-dropdown md',\n typicalWidth: 'width 프리셋 · 기본 180px · fullWidth=100%',\n usedIn: '검색영역 · interface_list',\n },\n {\n size: 'lg',\n height: '40px',\n radius: '6px (radius-6)',\n fontSize: '14px',\n pubClass: 'stn-dropdown lg',\n typicalWidth: 'width 프리셋 · 기본 180px · fullWidth=100%',\n usedIn: '강조 검색 · 넓은 라벨 열',\n },\n {\n size: 'xl',\n height: '52px',\n radius: '8px (radius-8)',\n fontSize: '15px',\n pubClass: 'stn-dropdown xl',\n typicalWidth: 'width 프리셋 · 기본 180px · fullWidth=100%',\n usedIn: 'CCTV 헤더 검색 · 대형 대시보드 메뉴 (기존 prominent 통합)',\n },\n] as const\n\nexport const STN_DROPDOWN_INTRO =\n 'Infomap **input** 크롬 + `.stn-dropdown` 계약입니다. **Light** (`40000042:186901`) — white · gray-200 · gray-600. **Dark** (modal `40000040:75056`) — TextField와 동일 `--stn-input-*`. Chevron: Figma `40000040:101798` `icon/line/arrow-right` 12px (`/@assets/svg/system/line/arrow-right.svg` · rotate 90°). React 표준 **`StnDropdown` menu** — sm/md/lg(24·32·40px) · width 프리셋/fullWidth.'\n\nexport const STN_DROPDOWN_INVENTORY: readonly {\n id: string\n mode: StnDropdownMode\n size: StnDropdownSize\n pubClass: string\n height: string\n typicalWidth: string\n usedIn: string\n exampleHtml: string\n}[] = [\n {\n id: 'native-search-md',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown stn-dropdown--size-md',\n height: '32px',\n typicalWidth: '130px (.search_area) · 기본 180px',\n usedIn: '검색영역 — interface_list, device_detail',\n exampleHtml: 'ip_mpls/interface_list.html',\n },\n {\n id: 'native-form-sm',\n mode: 'native',\n size: 'sm',\n pubClass: 'stn-dropdown stn-dropdown--size-sm',\n height: '24px',\n typicalWidth: '100% (.w100p) · 60–100px 인라인',\n usedIn: '등록/상세 폼, IP-MPLS 테이블 셀',\n exampleHtml: 'ip_mpls/interface_regist.html',\n },\n {\n id: 'native-wrapper',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown > select.selected',\n height: '32px',\n typicalWidth: '130px',\n usedIn: '처리상태 등 — wrapper 안에 select',\n exampleHtml: 'dev_version/device_detail.html',\n },\n {\n id: 'native-search-field',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown > select.selected.select_search',\n height: '32px',\n typicalWidth: 'auto',\n usedIn: '검색분야 선택 + 텍스트 input 조합',\n exampleHtml: 'dev_version/access_log.html',\n },\n {\n id: 'menu-cctv-prominent',\n mode: 'menu',\n size: 'md',\n pubClass: 'stn-dropdown stn-dropdown--prominent · .selected · .select_option',\n height: '52px (prominent)',\n typicalWidth: '110px (cctv-header) · 200px (simple_board)',\n usedIn: 'CCTV 헤더 검색 — React `StnDropdownMenu`',\n exampleHtml: 'koscom/honeycomb.html',\n },\n {\n id: 'menu-board-prominent',\n mode: 'menu',\n size: 'md',\n pubClass: 'simple_board_area .search_area .stn-dropdown.stn-dropdown--prominent',\n height: '52px (prominent)',\n typicalWidth: '200px',\n usedIn: '간편 게시판 검색 — `StnDropdownMenu`',\n exampleHtml: 'basic/simple_dashboard.html',\n },\n {\n id: 'native-page-size',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown stn-table__page-size',\n height: '32px',\n typicalWidth: 'min 72px',\n usedIn: '테이블 footer 페이지 크기',\n exampleHtml: 'dev_version/device_detail.html',\n },\n {\n id: 'native-server-filter',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown server_filter',\n height: '32px',\n typicalWidth: 'default',\n usedIn: '프로세스 팝업 검색',\n exampleHtml: 'dev_version/process (pop)',\n },\n {\n id: 'native-network-area',\n mode: 'native',\n size: 'md',\n pubClass: 'stn-dropdown network_area_box',\n height: '32px',\n typicalWidth: 'default',\n usedIn: '토폴로지·망영역 선택',\n exampleHtml: 'config topology screens',\n },\n] as const\n\nexport const STN_DROPDOWN_HTML_COUNTS = {\n nativeSelectBoxFiles: 56,\n customMenuFiles: 12,\n smallTysFiles: 17,\n wrapperSelectFiles: 13,\n} as const\n\nexport const STN_DROPDOWN_USAGE = `import { StnDropdown } from '@stn-uiux/pub-ui-react'\n\n// size = 높이 · width = 별도 (80·100·140·180·200 · fullWidth)\n<StnDropdown size=\"sm\" width={100} options={gradeOptions} value={grade} onChange={setGrade} />\n<StnDropdown size=\"md\" width={180} options={shutdownOptions} value={shutdown} onChange={setShutdown} />\n<StnDropdown size=\"lg\" fullWidth options={statusOptions} value={status} onChange={setStatus} />`\n\nexport const STN_DROPDOWN_HTML = `<!-- StnDropdown · 커스텀 드롭다운 -->\n<div class=\"stn-dropdown md\">\n <div class=\"selected\">선택값</div>\n <ul class=\"select_option\">\n <li>옵션 1</li>\n </ul>\n</div>`\n\nexport const STN_DROPDOWN_MENU_INTRO =\n '검색줄·대시보드용 **두꺼운 커스텀 메뉴**(52px, radius 8px). Pub `cctv-header` / `simple_board_area`와 동일 계열입니다. React는 `StnDropdownMenu`(`stn-dropdown--prominent`)를 쓰고, 일반 드롭다운 sm/md/lg는 `StnDropdown`입니다.'\n\nexport const STN_DROPDOWN_MENU_USAGE = `import { StnDropdownMenu } from '@stn-uiux/pub-ui-react'\n\n<StnDropdownMenu\n width={110}\n options={[\n { value: 'all', label: '전체' },\n { value: 'group', label: '그룹명' },\n { value: 'device', label: '장비명' },\n ]}\n value={field}\n onChange={setField}\n aria-label=\"검색 필드\"\n/>`\n"],"mappings":"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","names":[]}
|