@stn-uiux/pub-ui 0.1.58 → 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.
- package/dist/{chunk-7ASY5YJ6.js → chunk-36BAGMYT.js} +3 -3
- package/dist/chunk-36BAGMYT.js.map +1 -0
- package/dist/chunk-A5KLX6NX.js +1 -0
- package/dist/{chunk-UPXSNRIJ.js → chunk-AOS3IX4T.js} +2 -2
- package/dist/chunk-AOS3IX4T.js.map +1 -0
- package/dist/{chunk-XNGYRPZI.js → chunk-CHJATVOT.js} +4 -4
- package/dist/{chunk-XNGYRPZI.js.map → chunk-CHJATVOT.js.map} +1 -1
- package/dist/{chunk-TDLGKV4C.js → chunk-EQTZA7I2.js} +1 -14
- package/dist/chunk-EQTZA7I2.js.map +1 -0
- package/dist/{chunk-EDXSK54U.js → chunk-H4ZJQ5YW.js} +2 -2
- package/dist/{chunk-EQVFEZEQ.js → chunk-JPILTFLI.js} +5 -5
- package/dist/chunk-JPILTFLI.js.map +1 -0
- package/dist/{chunk-J46EPVSY.js → chunk-SKZOEF3H.js} +2 -2
- package/dist/chunk-SQJPE6HH.js +12 -0
- package/dist/chunk-SQJPE6HH.js.map +1 -0
- package/dist/{chunk-PVF77NHZ.js → chunk-XEG4WDUD.js} +4 -17
- package/dist/chunk-XEG4WDUD.js.map +1 -0
- package/dist/cli.js +9 -9
- package/dist/data/index.d.ts +1 -0
- package/dist/data/index.js +23 -19
- package/dist/data/stnBreadcrumb.js +3 -3
- package/dist/data/stnHeader.d.ts +2 -2
- package/dist/data/stnHeader.js +3 -3
- package/dist/data/stnLayout.d.ts +1 -1
- package/dist/data/stnLayout.js +1 -1
- package/dist/data/stnScroll.d.ts +1 -1
- package/dist/data/stnScroll.js +1 -1
- package/dist/data/stnSideNavItem.js +3 -3
- package/dist/data/stnStatus.d.ts +11 -0
- package/dist/data/stnStatus.js +7 -0
- package/dist/data/stnStatus.js.map +1 -0
- package/dist/data/stnSystemIcons.d.ts +1 -1
- package/dist/data/stnSystemIcons.js +2 -2
- package/dist/data/stnSystemIconsData.generated.js +1 -1
- package/dist/data/stnTree.d.ts +1 -1
- package/dist/data/stnTree.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +23 -19
- package/package.json +1 -1
- package/styles/components/stn-btn.css +9 -0
- package/styles/components/stn-dropdown.css +11 -4
- package/styles/components/stn-label-prefix.css +37 -0
- package/styles/components/stn-pagination.css +113 -5
- package/styles/components/stn-scroll.css +51 -66
- package/styles/components/stn-segmented.css +3 -1
- package/styles/components/stn-status.css +853 -0
- package/styles/components/stn-table.css +32 -5
- package/styles/components/stn-text-field.css +30 -35
- package/styles/layouts/stn-container.css +9 -0
- package/styles/layouts/stn-layer1-content.css +105 -0
- package/styles/patterns/stn-alert-center.css +29 -4
- package/styles/patterns/stn-header.css +7 -145
- package/styles/patterns/stn-section-side.css +64 -0
- package/styles/patterns/stn-tree.css +73 -39
- package/styles/style-pub.css +1 -1
- package/styles/tokens/stn-breakpoint.css +12 -0
- package/styles/tokens/stn-colors-semantic.css +6 -6
- package/styles/tokens/stn-radius-semantic.css +1 -1
- package/dist/chunk-7ASY5YJ6.js.map +0 -1
- package/dist/chunk-EQVFEZEQ.js.map +0 -1
- package/dist/chunk-LHV26PEP.js +0 -1
- package/dist/chunk-PVF77NHZ.js.map +0 -1
- package/dist/chunk-TDLGKV4C.js.map +0 -1
- package/dist/chunk-UPXSNRIJ.js.map +0 -1
- package/styles/@assets/svg/system/3d/print.png +0 -0
- package/styles/@assets/svg/system/3d/print_1.png +0 -0
- package/styles/@assets/svg/system/3d/server1.png +0 -0
- package/styles/@assets/svg/system/3d/server1_1.png +0 -0
- package/styles/@assets/svg/system/3d/server2.png +0 -0
- package/styles/@assets/svg/system/3d/server2_1.png +0 -0
- package/styles/@assets/svg/system/3d/signal.png +0 -0
- package/styles/@assets/svg/system/3d/signal_1.png +0 -0
- package/styles/@assets/svg/system/3d/wifi.png +0 -0
- package/styles/@assets/svg/system/3d/wifi_1.png +0 -0
- package/styles/@assets/svg/system/ai_agent.png +0 -0
- package/styles/@assets/svg/system/line/input.svg +0 -3
- package/styles/@assets/svg/system/line/radio.svg +0 -3
- package/styles/components/stn-severity-badge.css +0 -227
- /package/dist/{chunk-LHV26PEP.js.map → chunk-A5KLX6NX.js.map} +0 -0
- /package/dist/{chunk-EDXSK54U.js.map → chunk-H4ZJQ5YW.js.map} +0 -0
- /package/dist/{chunk-J46EPVSY.js.map → chunk-SKZOEF3H.js.map} +0 -0
|
@@ -35,8 +35,11 @@
|
|
|
35
35
|
min-height: 24px;
|
|
36
36
|
width: 100%;
|
|
37
37
|
border-radius: var(--stn-radius-4, 4px);
|
|
38
|
+
border: 1px solid transparent;
|
|
39
|
+
box-sizing: border-box;
|
|
38
40
|
cursor: pointer;
|
|
39
41
|
user-select: none;
|
|
42
|
+
transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
|
|
40
43
|
}
|
|
41
44
|
|
|
42
45
|
.stn-tree__row:focus-visible {
|
|
@@ -60,7 +63,8 @@
|
|
|
60
63
|
.stn-tree__row.is-selected.is-hover,
|
|
61
64
|
.stn-tree__row.is-selected:active,
|
|
62
65
|
.stn-tree__row.is-selected.is-pressed {
|
|
63
|
-
background: var(--stn-
|
|
66
|
+
background: color-mix(in srgb, var(--stn-primary) 10%, transparent);
|
|
67
|
+
border-color: var(--stn-nav-menu-active-border);
|
|
64
68
|
}
|
|
65
69
|
|
|
66
70
|
.stn-tree__cell {
|
|
@@ -144,7 +148,6 @@
|
|
|
144
148
|
display: block;
|
|
145
149
|
width: 16px;
|
|
146
150
|
height: 16px;
|
|
147
|
-
background-color: var(--stn-tree-icon-default);
|
|
148
151
|
mask-position: center;
|
|
149
152
|
mask-size: contain;
|
|
150
153
|
mask-repeat: no-repeat;
|
|
@@ -196,6 +199,7 @@
|
|
|
196
199
|
}
|
|
197
200
|
|
|
198
201
|
.stn-tree__label {
|
|
202
|
+
flex: 1 1 auto;
|
|
199
203
|
min-width: 0;
|
|
200
204
|
padding: 0 var(--stn-spacing-tree-label-pad-inline);
|
|
201
205
|
overflow: hidden;
|
|
@@ -248,36 +252,36 @@
|
|
|
248
252
|
color: var(--stn-tree-label-folder-nested);
|
|
249
253
|
}
|
|
250
254
|
|
|
251
|
-
/* ── 가이드 라인 숨김 수식어 (
|
|
255
|
+
/* ── 가이드 라인 숨김 수식어 (.no-guides) ─────────────────────
|
|
252
256
|
* 인덴트 공간은 유지하고 연결선(connector · vertical) 글리프만 숨깁니다.
|
|
253
|
-
* 사용법: <StnTree guides={false} /> 또는 <StnTree className="
|
|
257
|
+
* 사용법: <StnTree guides={false} /> 또는 <StnTree className="no-guides" />
|
|
254
258
|
* ──────────────────────────────────────────────────────── */
|
|
255
|
-
.stn-tree
|
|
256
|
-
.stn-tree
|
|
259
|
+
.stn-tree.no-guides .stn-tree__guide-glyph,
|
|
260
|
+
.stn-tree.no-guides .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
257
261
|
display: none !important;
|
|
258
262
|
}
|
|
259
263
|
|
|
260
|
-
/* ── 너비 규격 수식어 (Tree 권장 표준 규격:
|
|
261
|
-
*
|
|
264
|
+
/* ── 너비 규격 수식어 (Tree 권장 표준 규격: w80~w240, full) ──
|
|
265
|
+
* STN 표준 규격: .w80, .w100, .w120, .w140, .w160, .w180, .w200, .w220, .w240, .full
|
|
262
266
|
* ──────────────────────────────────────────────────────── */
|
|
263
|
-
.stn-tree
|
|
264
|
-
.stn-tree
|
|
265
|
-
.stn-tree
|
|
266
|
-
.stn-tree
|
|
267
|
-
.stn-tree
|
|
268
|
-
.stn-tree
|
|
269
|
-
.stn-tree
|
|
270
|
-
.stn-tree
|
|
271
|
-
.stn-tree
|
|
272
|
-
.stn-tree
|
|
267
|
+
.stn-tree.w80 { width: var(--stn-size-80, 80px); }
|
|
268
|
+
.stn-tree.w100 { width: var(--stn-size-100, 100px); }
|
|
269
|
+
.stn-tree.w120 { width: var(--stn-size-120, 120px); }
|
|
270
|
+
.stn-tree.w140 { width: var(--stn-size-140, 140px); }
|
|
271
|
+
.stn-tree.w160 { width: var(--stn-size-160, 160px); }
|
|
272
|
+
.stn-tree.w180 { width: var(--stn-size-180, 180px); }
|
|
273
|
+
.stn-tree.w200 { width: var(--stn-size-200, 200px); }
|
|
274
|
+
.stn-tree.w220 { width: var(--stn-size-220, 220px); }
|
|
275
|
+
.stn-tree.w240 { width: var(--stn-size-240, 240px); }
|
|
276
|
+
.stn-tree.full { width: 100%; }
|
|
273
277
|
|
|
274
278
|
/* ── 선택/호버 테두리 곡률 수식어 (Border Radius) ────────────
|
|
275
|
-
* radius prop → .
|
|
279
|
+
* radius prop → .radius-none, .radius-sm, .radius-md, .radius-full
|
|
276
280
|
* ──────────────────────────────────────────────────────── */
|
|
277
|
-
.stn-tree
|
|
278
|
-
.stn-tree
|
|
279
|
-
.stn-tree
|
|
280
|
-
.stn-tree
|
|
281
|
+
.stn-tree.radius-none .stn-tree__row { border-radius: var(--stn-radius-0, 0px); }
|
|
282
|
+
.stn-tree.radius-sm .stn-tree__row { border-radius: var(--stn-radius-4, 4px); }
|
|
283
|
+
.stn-tree.radius-md .stn-tree__row { border-radius: var(--stn-radius-8, 8px); }
|
|
284
|
+
.stn-tree.radius-full .stn-tree__row { border-radius: var(--stn-radius-circle, 9999px); }
|
|
281
285
|
|
|
282
286
|
/* ── 가시성(눈) 토글 버튼 및 숨김 상태 ──────────────────────
|
|
283
287
|
* showVisibilityToggle={true} 일 때 행 우측 끝에 표시됩니다.
|
|
@@ -331,53 +335,83 @@
|
|
|
331
335
|
opacity: 0.38;
|
|
332
336
|
}
|
|
333
337
|
|
|
338
|
+
/* ── 카운트 표시 (Node Count) ──────────────────────────────
|
|
339
|
+
* count prop → 노드 우측에 표시되는 개수 숫자
|
|
340
|
+
* ──────────────────────────────────────────────────────── */
|
|
341
|
+
.stn-tree__count {
|
|
342
|
+
display: inline-flex;
|
|
343
|
+
align-items: center;
|
|
344
|
+
justify-content: center;
|
|
345
|
+
font-family: var(--stn-font-number, var(--stn-font-body));
|
|
346
|
+
font-size: var(--stn-font-size-11, 11px);
|
|
347
|
+
font-weight: var(--stn-font-weight-medium, 500);
|
|
348
|
+
line-height: 1;
|
|
349
|
+
color: var(--stn-text-tertiary, var(--stn-gray-400));
|
|
350
|
+
margin-left: auto;
|
|
351
|
+
margin-right: var(--stn-space-6, 6px);
|
|
352
|
+
flex-shrink: 0;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.stn-tree__count + .stn-tree__visibility-btn {
|
|
356
|
+
margin-left: 0;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.stn-tree__icon--custom .stn-icon {
|
|
360
|
+
display: flex;
|
|
361
|
+
align-items: center;
|
|
362
|
+
justify-content: center;
|
|
363
|
+
}
|
|
334
364
|
|
|
335
365
|
/* ── 행 높이 크기 수식어 (Row Size) ─────────────────────────
|
|
336
|
-
*
|
|
337
|
-
* 기본값: sm
|
|
366
|
+
* STN 표준 규격: .xs · .sm · .md · .lg · .xl
|
|
367
|
+
* (기본값: sm 24px)
|
|
338
368
|
*
|
|
339
369
|
* Guide cell: align-self:stretch + guide-glyph height:100% 로
|
|
340
370
|
* 행이 높아져도 vertical 연결선이 끊기지 않게 유지합니다.
|
|
341
371
|
* ──────────────────────────────────────────────────────── */
|
|
342
372
|
|
|
343
373
|
/* xs — 20px: 초밀집 사이드바 목록 */
|
|
344
|
-
.stn-tree
|
|
345
|
-
.stn-tree
|
|
374
|
+
.stn-tree.xs .stn-tree__row { min-height: 20px; }
|
|
375
|
+
.stn-tree.xs .stn-tree__cell { height: 20px; }
|
|
376
|
+
|
|
377
|
+
/* sm — 24px: 기본 콤팩트 */
|
|
378
|
+
.stn-tree.sm .stn-tree__row { min-height: 24px; }
|
|
379
|
+
.stn-tree.sm .stn-tree__cell { height: 24px; }
|
|
346
380
|
|
|
347
381
|
/* md — 32px: comfortable */
|
|
348
|
-
.stn-tree
|
|
349
|
-
.stn-tree
|
|
350
|
-
.stn-tree
|
|
382
|
+
.stn-tree.md .stn-tree__row { min-height: 32px; }
|
|
383
|
+
.stn-tree.md .stn-tree__cell { height: 32px; }
|
|
384
|
+
.stn-tree.md .stn-tree__cell--guide {
|
|
351
385
|
align-self: stretch;
|
|
352
386
|
height: auto;
|
|
353
387
|
}
|
|
354
|
-
.stn-tree
|
|
388
|
+
.stn-tree.md .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
355
389
|
height: 100%;
|
|
356
390
|
mask-size: 100% 100%;
|
|
357
391
|
-webkit-mask-size: 100% 100%;
|
|
358
392
|
}
|
|
359
393
|
|
|
360
394
|
/* lg — 40px: spacious */
|
|
361
|
-
.stn-tree
|
|
362
|
-
.stn-tree
|
|
363
|
-
.stn-tree
|
|
395
|
+
.stn-tree.lg .stn-tree__row { min-height: 40px; }
|
|
396
|
+
.stn-tree.lg .stn-tree__cell { height: 40px; }
|
|
397
|
+
.stn-tree.lg .stn-tree__cell--guide {
|
|
364
398
|
align-self: stretch;
|
|
365
399
|
height: auto;
|
|
366
400
|
}
|
|
367
|
-
.stn-tree
|
|
401
|
+
.stn-tree.lg .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
368
402
|
height: 100%;
|
|
369
403
|
mask-size: 100% 100%;
|
|
370
404
|
-webkit-mask-size: 100% 100%;
|
|
371
405
|
}
|
|
372
406
|
|
|
373
407
|
/* xl — 48px: extra spacious */
|
|
374
|
-
.stn-tree
|
|
375
|
-
.stn-tree
|
|
376
|
-
.stn-tree
|
|
408
|
+
.stn-tree.xl .stn-tree__row { min-height: 48px; }
|
|
409
|
+
.stn-tree.xl .stn-tree__cell { height: 48px; }
|
|
410
|
+
.stn-tree.xl .stn-tree__cell--guide {
|
|
377
411
|
align-self: stretch;
|
|
378
412
|
height: auto;
|
|
379
413
|
}
|
|
380
|
-
.stn-tree
|
|
414
|
+
.stn-tree.xl .stn-tree__cell--guide .stn-tree__guide-glyph {
|
|
381
415
|
height: 100%;
|
|
382
416
|
mask-size: 100% 100%;
|
|
383
417
|
-webkit-mask-size: 100% 100%;
|
package/styles/style-pub.css
CHANGED
|
@@ -42,7 +42,6 @@
|
|
|
42
42
|
@import './components/stn-chip.css';
|
|
43
43
|
@import './components/stn-breadcrumb.css';
|
|
44
44
|
@import './components/stn-badge.css';
|
|
45
|
-
@import './components/stn-severity-badge.css';
|
|
46
45
|
@import './components/stn-side-nav.css';
|
|
47
46
|
@import './components/stn-header-title.css';
|
|
48
47
|
@import './components/stn-popup.css';
|
|
@@ -69,6 +68,7 @@
|
|
|
69
68
|
@import './components/stn-icon.css';
|
|
70
69
|
@import './components/stn-card.css';
|
|
71
70
|
@import './components/stn-topology.css';
|
|
71
|
+
@import './components/stn-status.css';
|
|
72
72
|
|
|
73
73
|
/* --- 5. Patterns (Composite UI Recipes) --- */
|
|
74
74
|
@import './patterns/stn-section-side.css';
|
|
@@ -15,4 +15,16 @@
|
|
|
15
15
|
--stn-bp-md: 1024px;
|
|
16
16
|
--stn-bp-lg: 1280px;
|
|
17
17
|
--stn-bp-xl: 1440px;
|
|
18
|
+
|
|
19
|
+
/* Semantic Layout & Responsive Aliases */
|
|
20
|
+
--stn-layout-list-split-breakpoint: var(--stn-bp-md);
|
|
21
|
+
--stn-layout-list-tree-top-max-height: 240px;
|
|
22
|
+
--stn-table-footer-collapse-breakpoint: var(--stn-bp-sm);
|
|
23
|
+
|
|
24
|
+
/* Pagination — 좁은 화면 컴팩트 모드 (@media 480px 기준; CSS @media에서는 리터럴 사용) */
|
|
25
|
+
--stn-pagination-compact-breakpoint: 480px;
|
|
26
|
+
--stn-pagination-compact-size: var(--stn-size-28, 28px);
|
|
27
|
+
--stn-pagination-compact-padding: var(--stn-space-6, 6px);
|
|
28
|
+
--stn-pagination-compact-font-size: var(--stn-font-size-12, 12px);
|
|
29
|
+
--stn-pagination-compact-gap: var(--stn-space-4, 4px);
|
|
18
30
|
}
|
|
@@ -135,16 +135,16 @@
|
|
|
135
135
|
--stn-table-pill-shadow: 1px 1px 4px color-mix(in srgb, var(--stn-static-black) 10%, transparent);
|
|
136
136
|
--stn-table-row-hover: var(--stn-gray-900);
|
|
137
137
|
--stn-table-td-fg: var(--stn-gray-50);
|
|
138
|
-
--stn-table-th-bg: var(--stn-
|
|
138
|
+
--stn-table-th-bg: var(--stn-opacity-white-5);
|
|
139
139
|
--stn-table-th-fg: var(--stn-gray-350);
|
|
140
140
|
--stn-table-th-radius: 8px;
|
|
141
|
-
--stn-pagination-active-bg:
|
|
141
|
+
--stn-pagination-active-bg: var(--stn-opacity-white-10);
|
|
142
142
|
--stn-pagination-active-color: var(--stn-gray-50);
|
|
143
143
|
--stn-pagination-color: var(--stn-gray-50);
|
|
144
144
|
--stn-pagination-font-size: var(--stn-font-size-13);
|
|
145
145
|
--stn-pagination-font-weight: var(--stn-font-weight-regular, 400);
|
|
146
146
|
--stn-search-requirement-bg: transparent;
|
|
147
|
-
--stn-search-requirement-border: var(--stn-gray-
|
|
147
|
+
--stn-search-requirement-border: var(--stn-gray-750);
|
|
148
148
|
--stn-search-requirement-export-bg: var(--stn-gray-800);
|
|
149
149
|
--stn-search-requirement-label: var(--stn-gray-100);
|
|
150
150
|
--stn-search-requirement-shadow: var(--stn-shadow-1);
|
|
@@ -704,11 +704,11 @@
|
|
|
704
704
|
--stn-table-pill-shadow: 1px 1px 2px color-mix(in srgb, var(--stn-static-black) 10%, transparent);
|
|
705
705
|
--stn-table-row-hover: var(--stn-gray-25);
|
|
706
706
|
--stn-table-td-fg: var(--stn-gray-750);
|
|
707
|
-
--stn-table-th-bg: var(--stn-
|
|
707
|
+
--stn-table-th-bg: var(--stn-opacity-black-5);
|
|
708
708
|
--stn-table-th-fg: var(--stn-gray-700);
|
|
709
709
|
--stn-table-th-radius: 4px;
|
|
710
|
-
--stn-pagination-active-bg: var(--stn-
|
|
711
|
-
--stn-pagination-active-color: var(--stn-gray-
|
|
710
|
+
--stn-pagination-active-bg: var(--stn-opacity-black-5);
|
|
711
|
+
--stn-pagination-active-color: var(--stn-gray-900);
|
|
712
712
|
--stn-pagination-color: var(--stn-gray-700);
|
|
713
713
|
--stn-pagination-font-size: var(--stn-font-size-14);
|
|
714
714
|
--stn-pagination-font-weight: var(--stn-font-weight-medium, 500);
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
--stn-radius-chip-pill: var(--stn-radius-circle);
|
|
47
47
|
--stn-radius-checkbox: var(--stn-radius-3);
|
|
48
48
|
--stn-pagination-radius-active: var(--stn-radius-circle);
|
|
49
|
-
--stn-pagination-radius-idle: var(--stn-radius-
|
|
49
|
+
--stn-pagination-radius-idle: var(--stn-radius-circle);
|
|
50
50
|
--stn-switch-radius: var(--stn-radius-circle);
|
|
51
51
|
--stn-progress-radius: var(--stn-radius-circle);
|
|
52
52
|
--stn-progress-radius-square: var(--stn-radius-0);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnLayout.ts"],"sourcesContent":["/**\n * Pub page layout — `.stn-wrap` · `.stn-container` · `.stn-content-area` · 대시보드 region\n * @see layout.css · StnLayerShell (@stn-uiux/pub-ui-react)\n */\n\nexport const STN_LAYOUT_INTRO = ''\n\n/** 라이브 예제 탭 — shell 종류 + 대표 화면 레시피 */\nexport const STN_LAYOUT_PLAYGROUND_TABS: readonly {\n id: 'list' | 'dashboard' | 'alert-center'\n label: string\n screen: string\n shellProps: string\n assemble: string\n}[] = [\n {\n id: 'list',\n label: '리스트·상세',\n screen: 'interface_list.html · syslog_status.html',\n shellProps: \"contentModifiers={['has_lnb', 'has_sch']}\",\n assemble: 'ListPageScaffold shell=\"layer\" — gnb · header · lnb · search · table',\n },\n {\n id: 'dashboard',\n label: '맵·대시보드',\n screen: 'basic/map.html · dashboard_map …',\n shellProps: \"bodyWrapper='none'\",\n assemble: 'DashboardPageScaffold · MapPlaceholder + dashboard_right',\n },\n {\n id: 'alert-center',\n label: '알림센터',\n screen: 'basic/alert_center.html',\n shellProps: \"bodyWrapper='none' · network_topology_header · GNB 알림패널\",\n assemble: 'AlertCenterPageScaffold (맵 placeholder + 우측 4위젯)',\n },\n]\n\nexport const STN_LAYOUT_LIST_VIEW_INTRO =\n 'List view는 배경 · Side Navigation·페이지 헤더 · 트리 LNB · 검색 · 표로 구성됩니다. `ListPageScaffold`에 gnb · header · lnb · search · children(표) 슬롯만 넘기면 됩니다. Playground에서 옵션을 고른 뒤 생성된 React/HTML 코드를 복사하세요.'\n\n/** 라이브러리 내부 조립 참고 — 제품 화면은 `STN_LAYOUT_LIST_VIEW_USAGE`(`ListPageScaffold`)만 사용 */\nexport const STN_LAYOUT_LIST_VIEW_BARE_USAGE = `import {\n StnLayerShell,\n StnListViewLayout,\n StnSideNavigation,\n StnHeader,\n StnSearchRequirementBar,\n StnSectionSide,\n StnTable,\n} from '@stn-uiux/pub-ui-react'\n\n/** StnLayerShell 안 — L1 listview 그리드만 (이중 L0/L2 없음) */\nexport function InterfaceListPage() {\n return (\n <StnLayerShell\n gnb={<StnSideNavigation collapsed />}\n header={<StnHeader variant=\"page\" />}\n contentModifiers={['has_lnb', 'has_sch']}\n lnbSide=\"left\"\n >\n <StnListViewLayout\n bare\n sidebar={<StnSectionSide>{/* StnTree */}</StnSectionSide>}\n search={\n <StnSearchRequirementBar>{/* Fields · SearchButton */}</StnSearchRequirementBar>\n }\n >\n <StnTable summary=\"목록\" />\n </StnListViewLayout>\n </StnLayerShell>\n )\n}`\n\n/** List view 문서 탭 */\nexport type StnLayoutListLayerTabId = 'live' | 'l0' | 'l1' | 'l2'\n\nexport const STN_LAYOUT_LIST_LAYER_TABS: {\n id: StnLayoutListLayerTabId\n label: string\n}[] = [\n { id: 'live', label: '전체' },\n { id: 'l0', label: 'L0 Background' },\n { id: 'l1', label: 'L1 Main UI' },\n { id: 'l2', label: 'L2 Modal' },\n]\n\nexport const STN_LAYOUT_LIST_VIEW_USAGE = `import {\n ListPageScaffold,\n StnHeader,\n StnSideNavigation,\n StnSearchRequirementBar,\n StnTable,\n StnPagination,\n StnButton,\n} from '@stn-uiux/pub-ui-react'\n\nexport function InterfaceListPage() {\n return (\n <ListPageScaffold\n shell=\"layer\"\n lnbSide=\"left\"\n gnb={<StnSideNavigation />}\n header={<StnHeader variant=\"page\" />}\n contentModifiers={['has_lnb', 'has_sch']}\n search={\n <StnSearchRequirementBar>{/* Fields · SearchButton */}</StnSearchRequirementBar>\n }\n >\n <StnTable\n summary=\"총 128개 (1 to 20)\"\n footerCenter={<StnPagination page={1} count={8} />}\n footerRight={\n <>\n <StnButton size=\"M\">등록</StnButton>\n <StnButton size=\"M\" variant=\"ghost\">수정</StnButton>\n </>\n }\n >\n <StnTable.Grid>{/* … */}</StnTable.Grid>\n </StnTable>\n </ListPageScaffold>\n )\n}`\n\nexport const STN_LAYOUT_MAP_DASHBOARD_INTRO =\n '대시보드는 L0 배경 · L1(header 크롬 + content 본문 단 하나) · L2 모달입니다. 본문은 `layer1` 슬롯이 아니라 `left`/`right`/`children`으로 조립합니다. `DashboardPageScaffold` (type=\"map\" | \"topology\" | \"widget-grid\").'\n\n/** Map / Dashboard 문서 탭 — List view와 동일 층 모델 */\nexport type StnLayoutMapLayerTabId = StnLayoutListLayerTabId\n\nexport const STN_LAYOUT_MAP_LAYER_TABS: {\n id: StnLayoutMapLayerTabId\n label: string\n}[] = [\n { id: 'live', label: '전체' },\n { id: 'l0', label: 'L0 Background' },\n { id: 'l1', label: 'L1 Main UI' },\n { id: 'l2', label: 'L2 Modal' },\n]\n\nexport const STN_LAYOUT_MAP_DASHBOARD_USAGE = `import { DashboardPageScaffold, StnLayer0Background, StnSideNavigation, StnHeader } from '@stn-uiux/pub-ui-react'\n\nexport function TopologyMapPage() {\n return (\n <DashboardPageScaffold\n type=\"map\"\n shell=\"layer\"\n gnbSide=\"left\"\n layer0={<StnLayer0Background variant=\"map-light\" />}\n gnb={<StnSideNavigation collapsed />}\n header={<StnHeader variant=\"dashboard\" />}\n />\n )\n}`\n\nexport const STN_LAYOUT_MAP_DASHBOARD_HEADER_USAGE = `import {\n DashboardPageScaffold,\n StnHeader,\n StnSideNavigation,\n} from '@stn-uiux/pub-ui-react'\n\nexport function TopologyMapPage() {\n return (\n <DashboardPageScaffold\n type=\"topology\"\n shell=\"layer\"\n gnb={<StnSideNavigation collapsed />}\n header={<StnHeader variant=\"widget\" />}\n mapMessage=\"토폴로지 맵\"\n />\n )\n}`\n\n/** 경우의 수 — 무엇을 쓸지 */\nexport const STN_LAYOUT_WHEN_TO_USE: readonly {\n situation: string\n use: string\n export: string\n}[] = [\n {\n situation: '표준 3단계 층위 기반 페이지 구성',\n use: 'StnLayerShell — L0 Background · L1 Main UI · L2 Modal',\n export: 'StnLayerShell · lnbSide left|right',\n },\n {\n situation: '구역 라벨만 빠르게 (lnb, search, 맵 빈칸)',\n use: 'Shell + StnPageScaffold.Region / MapPlaceholder',\n export: 'StnPageScaffold.*',\n },\n {\n situation: '대표 HTML 한 장을 1단계로 (interface_list, alert_center)',\n use: '화면별 레시피 (내부에서 Shell 이미 포함)',\n export: 'ListPageScaffold · DashboardPageScaffold · AlertCenterPageScaffold',\n },\n {\n situation: 'L3 팝업 본문 자리만 표시',\n use: 'StnLayer + StnPageScaffold.Layer',\n export: 'StnPageScaffold.Layer',\n },\n {\n situation: '위젯·테이블 본문이 API 로딩 중',\n use: 'Components — Loading skeleton (Layout 아님)',\n export: 'StnLoadingSkeleton',\n },\n]\n\nexport type StnLayoutScreenKind =\n | 'list'\n | 'dashboard-map'\n | 'alert-center'\n | 'converged-dashboard'\n | 'popup-overlay'\n | 'widget-board'\n | 'standard'\n\n/** @deprecated StnLayoutScreenKind */\nexport type StnPageScaffoldKind = StnLayoutScreenKind\n\nexport const STN_LAYOUT_SCREEN_RECIPES: readonly {\n id: StnLayoutScreenKind\n label: string\n pubExamples: string\n reactRecipe: string\n layoutTab: 'list' | 'dashboard'\n note: string\n}[] = [\n {\n id: 'list',\n label: '리스트·상세',\n pubExamples: 'interface_list.html · syslog_status.html',\n reactRecipe: 'ListPageScaffold',\n layoutTab: 'list',\n note: 'L0 wrap · L1 .stn-container · L2 GNB',\n },\n {\n id: 'dashboard-map',\n label: '맵·대시보드',\n pubExamples: 'basic/map.html · dashboard_map …',\n reactRecipe: 'DashboardPageScaffold',\n layoutTab: 'dashboard',\n note: 'map(z50) · dashboard_left / dashboard_right',\n },\n {\n id: 'alert-center',\n label: '알림센터',\n pubExamples: 'basic/alert_center.html',\n reactRecipe: 'AlertCenterPageScaffold',\n layoutTab: 'dashboard',\n note: 'GNB 알림 · 맵 placeholder · 우측 4위젯',\n },\n {\n id: 'converged-dashboard',\n label: '융합망 대시',\n pubExamples: 'converged/dashboard_map.html',\n reactRecipe: 'DashboardPageScaffold (converged_header)',\n layoutTab: 'dashboard',\n note: 'wrap-converged',\n },\n {\n id: 'popup-overlay',\n label: '팝·딤',\n pubExamples: 'regist_pop.html · widget_dim.html',\n reactRecipe: 'StnPageScaffold.Layer + StnPopup',\n layoutTab: 'list',\n note: 'L3/L4',\n },\n {\n id: 'widget-board',\n label: '위젯보드',\n pubExamples: 'widgetboard/widget*.html',\n reactRecipe: 'StnWidget shell=board',\n layoutTab: 'dashboard',\n note: 'board-item',\n },\n {\n id: 'standard',\n label: '일반 콘텐츠',\n pubExamples: 'CCTV · node tools …',\n reactRecipe: 'StnLayerShell + Region',\n layoutTab: 'list',\n note: 'head_area · stn-content-area',\n },\n]\n\n/** @deprecated STN_LAYOUT_SCREEN_RECIPES */\nexport const STN_PAGE_SCAFFOLD_KINDS = STN_LAYOUT_SCREEN_RECIPES\n\nexport const STN_LAYOUT_SLOT_USAGE = `import { StnPageScaffold, StnLayer, StnPopup } from '@stn-uiux/pub-ui-react'\n\n/** Shell children 안 — 구역 라벨 */\n<StnLayerShell gnb={<StnSideNavigation />} contentModifiers={['has_lnb', 'has_sch']} header={…}>\n <StnPageScaffold.Region label=\"lnb_box\" hint=\"LNB 트리\" />\n <StnPageScaffold.Region label=\"search_area\" />\n</StnLayerShell>\n\n/** 맵 빈 칸 */\n<StnPageScaffold.MapPlaceholder message=\"맵은 추후 연동\" />\n\n/** 맵 빈 본문 — L0만 보이는 캔버스 (위젯·placeholder 없음) */\n<DashboardPageScaffold bodyEmpty shell=\"layer\" gnb={gnb} layer0={layer0} />\n\n/** L3 팝업 슬롯 */\n<StnLayer level={3} surface=\"transparent\">\n <StnPageScaffold.Layer level={3} label=\"팝업 본문\">\n <StnPopup open>…</StnPopup>\n </StnPageScaffold.Layer>\n</StnLayer>`\n\nexport const STN_LAYOUT_ALERT_CENTER_USAGE = `import { AlertCenterPageScaffold } from '@stn-uiux/pub-ui-react'\n\n<AlertCenterPageScaffold mapMessage=\"맵은 추후 연동\" showFaultPanelPlaceholder />`\n\n/** @deprecated */\nexport const STN_PAGE_SCAFFOLD_COMPOUND_USAGE = STN_LAYOUT_SLOT_USAGE\n\n/** @deprecated */\nexport const STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE = STN_LAYOUT_ALERT_CENTER_USAGE\n\n/** @deprecated */\nexport const STN_PAGE_SCAFFOLD_INTRO = STN_LAYOUT_INTRO\n\nexport const STN_LAYOUT_RECIPES: readonly {\n id: 'list' | 'dashboard'\n label: string\n screen: string\n shellProps: string\n childrenHint: string\n}[] = [\n {\n id: 'list',\n label: '리스트·상세',\n screen: 'interface_list, syslog_status …',\n shellProps: 'contentModifiers={[\\'has_lnb\\', \\'has_sch\\']} · header=<StnLayoutHeader>',\n childrenHint: 'lnb_box · search_area · stn-table (+ StnTable, StnButton)',\n },\n {\n id: 'dashboard',\n label: '맵·대시보드',\n screen: 'basic/map.html, dashboard_map …',\n shellProps: 'bodyWrapper=\"none\" · chrome=\"network_topology_header\"',\n childrenHint: '.dashboard · .dashboard_left · StnLayoutRegion(region=\"map\")',\n },\n]\n\n/** Pub `.stn-content-area` modifier */\nexport type StnContentAreaModifier =\n | 'has_lnb'\n | 'has_lnb2'\n | 'has_lnb_right'\n | 'has_lnb_right2'\n | 'has_sch'\n | 'has_sch_row2'\n | 'flexible'\n\n/** LNB·트리 열 위치 — `has_lnb*` modifier 와 조합 */\nexport type StnLnbSide = 'left' | 'right'\n\n\n\n/** 대시보드·맵 화면 내 고정 슬롯 */\nexport type StnLayoutRegion =\n | 'top_right'\n | 'dashboard'\n | 'dashboard_left'\n | 'dashboard_right'\n | 'dashboard_body'\n | 'wrap_topology'\n | 'map'\n | 'dash_canvas'\n\nexport const STN_LAYOUT_PAGE_TREE = `.stn-wrap (legacy v1: #wrap)\n├── .stn-side-nav (absolute overlay · StnSideNavigation)\n└── .stn-layer-1 (L1 · 네비 제외 영역)\n ├── .stn-layer-1__header (Header)\n └── .stn-content-area / .stn-stack\n └── .stn-stack …` as const\n\nexport const STN_LAYOUT_LAYER_PAGE_TREE = `.stn-wrap (Root Shell · data-stn-layer-mode=\"v2\")\n├── StnLayer.Background (L0 · layer0-bg)\n├── .stn-side-nav / StnSideNavigation (absolute overlay · wrap 직속)\n├── [data-stn-layer-role=\"utility\"] (toast · audio)\n└── StnLayer.Content (.stn-layer-1) (L1 — 하나)\n ├── .stn-layer-1__header\n └── .stn-content-area / .stn-stack\n └── lnb_box | content_box | .stn-stack` as const\n\nexport const STN_LAYOUT_CONTENT_ROWS: {\n modifier: StnContentAreaModifier\n pubClass: string\n label: string\n note: string\n}[] = [\n {\n modifier: 'has_lnb',\n pubClass: '.stn-content-area.has_lnb',\n label: 'LNB 1열',\n note: 'padding-left: 268px · head_area 동기화',\n },\n {\n modifier: 'has_lnb2',\n pubClass: '.stn-content-area.has_lnb2',\n label: 'LNB 2열 (좌)',\n note: 'padding-left: 536px',\n },\n {\n modifier: 'has_lnb_right',\n pubClass: '.stn-content-area.has_lnb_right',\n label: 'LNB 1열 (우)',\n note: 'padding-right: 268px · lnb_box_right',\n },\n {\n modifier: 'has_lnb_right2',\n pubClass: '.stn-content-area.has_lnb_right2',\n label: 'LNB 2열 (우)',\n note: 'padding-right: 536px',\n },\n {\n modifier: 'has_sch',\n pubClass: '.stn-content-area.has_sch',\n label: '검색 영역',\n note: 'flex column · search_area + content_box',\n },\n {\n modifier: 'has_sch_row2',\n pubClass: '.stn-content-area.has_sch_row2',\n label: '검색 2줄',\n note: 'padding-top: 94px',\n },\n {\n modifier: 'flexible',\n pubClass: '.stn-content-area.flexible',\n label: '가변 높이 테이블',\n note: 'stn-table flex fill',\n },\n]\n\n\nexport const STN_LAYOUT_REGION_ROWS: {\n region: StnLayoutRegion\n pubClass: string\n label: string\n note: string\n}[] = [\n { region: 'top_right', pubClass: '.dash-top-right-widget', label: '우상단 위젯', note: '시스템 감시·테마·시계' },\n { region: 'dashboard', pubClass: '.dashboard', label: '대시보드 루트', note: '맵·위젯 본문' },\n { region: 'dashboard_left', pubClass: '.dashboard_left', label: '좌측 열', note: '토폴로지·맵' },\n { region: 'dashboard_right', pubClass: '.dashboard_right', label: '우측 열', note: '장애·위젯 패널' },\n { region: 'dashboard_body', pubClass: '.dashboard_body', label: '융합망 본문', note: 'converged 레이아웃' },\n { region: 'wrap_topology', pubClass: '.wrap_topology', label: '토폴로지 래퍼', note: 'stn-elev-map' },\n { region: 'map', pubClass: '.map', label: '맵 영역', note: '' },\n { region: 'dash_canvas', pubClass: '.stn-widget.shell-canvas', label: '캔버스', note: '토폴로지/맵 위젯 (variant=\"canvas\")' },\n]\n\nconst CONTENT_CLASS: Record<StnContentAreaModifier, string> = {\n has_lnb: 'has_lnb',\n has_lnb2: 'has_lnb2',\n has_lnb_right: 'has_lnb_right',\n has_lnb_right2: 'has_lnb_right2',\n has_sch: 'has_sch',\n has_sch_row2: 'has_sch_row2',\n flexible: 'flexible',\n}\n\nconst REGION_CLASS: Record<StnLayoutRegion, string> = {\n top_right: 'dash-top-right-widget',\n dashboard: 'dashboard',\n dashboard_left: 'dashboard_left',\n dashboard_right: 'dashboard_right',\n dashboard_body: 'dashboard_body',\n wrap_topology: 'wrap_topology',\n map: 'map',\n dash_canvas: 'stn-widget shell-canvas',\n}\n\nfunction normalizeList<T>(value?: T | T[]): T[] {\n if (value == null) return []\n return Array.isArray(value) ? value : [value]\n}\n\nexport function pubContentAreaClasses(\n modifiers?: StnContentAreaModifier | StnContentAreaModifier[],\n): string[] {\n return normalizeList(modifiers).map((m) => CONTENT_CLASS[m])\n}\n\nexport function pubLayoutRegionClass(region: StnLayoutRegion): string {\n return REGION_CLASS[region]\n}\n\n/** `lnbSide` — `has_lnb` / `has_lnb2` 를 좌·우 modifier 로 치환 */\nexport function applyLnbSideToModifiers(\n modifiers?: StnContentAreaModifier | StnContentAreaModifier[],\n lnbSide: StnLnbSide = 'left',\n): StnContentAreaModifier[] {\n const list = normalizeList(modifiers)\n if (lnbSide === 'left') return list\n return list.map((m) => {\n if (m === 'has_lnb') return 'has_lnb_right'\n if (m === 'has_lnb2') return 'has_lnb_right2'\n return m\n })\n}\n\nexport const STN_LAYER_SHELL_USAGE = `import { StnSideNavigation, StnLayerShell } from '@stn-uiux/pub-ui-react'\n\n/** StnLayer role 페이지 셸 — 컨테이너(.stn-container)를 StnLayer.Content 가 겸함 */\nexport function ListPage({ gnb, title, children }) {\n return (\n <StnLayerShell\n gnb={gnb}\n lnbSide=\"left\"\n contentModifiers={['has_lnb', 'has_sch']}\n header={\n <StnLayoutHeader>\n <h3 className=\"title\">{title}</h3>\n </StnLayoutHeader>\n }\n >\n <aside className=\"lnb_box\">…트리·LNB…</aside>\n <div className=\"content_box\">{children}</div>\n </StnLayerShell>\n )\n}\n\n/** 데이터 구조(트리)를 오른쪽에 */\n<StnLayerShell lnbSide=\"right\" contentModifiers={['has_lnb', 'has_sch']} …>\n <div className=\"content_box\">…</div>\n <aside className=\"lnb_box_right\">…</aside>\n</StnLayerShell>`\n\nexport const STN_LAYOUT_SHELL_USAGE = `import '@stn-uiux/pub-ui/styles.css'\n\nimport { StnSideNavigation, StnHeader, StnLayerShell, StnStack } from '@stn-uiux/pub-ui-react'\n\n/** interface_list 골격 */\nexport function InterfaceListPage({ gnb, title, children }) {\n return (\n <StnLayerShell\n gnb={gnb}\n header={\n <StnHeader variant=\"page\">\n <StnHeader.Left>\n <h3 className=\"title\">{title}</h3>\n </StnHeader.Left>\n </StnHeader>\n }\n >\n {children}\n </StnLayerShell>\n )\n}\n\n/** 대시보드 골격 */\nexport function MapDashboardPage({ gnb, header, children }) {\n return (\n <StnLayerShell gnb={gnb} header={header}>\n <StnStack direction=\"column\">\n {children}\n </StnStack>\n </StnLayerShell>\n )\n}`\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnHeader.ts"],"sourcesContent":["/**\n * Infomap header pattern — Figma 43377 · 43521 · 211938\n * @see StnHeader · patterns/stn-header.css\n */\n\nimport { systemIconSrc } from './stnSystemIcons'\n\nexport type StnHeaderVariant = 'dashboard' | 'widget' | 'page'\nexport type StnHeaderPadding = 'none' | 'sm' | 'md' | 'lg'\nexport type StnHeaderGap = 'none' | 'sm' | 'md' | 'lg'\n\nexport const STN_HEADER_INTRO =\n '페이지 최상단에 배치되어 시스템 상태, 타이틀, 실시간 시계, 툴바 액션, 브레드크럼을 표출하는 상단 헤더 패턴입니다. 좌측(Left) · 중앙(Center) · 우측(Right) 3개 슬롯을 유연하게 조립하여 구성할 수 있으며, Center 슬롯 유무에 따라 반응형 그리드 레이아웃이 자동으로 최적화됩니다. 폭이 줄면 Right만 먼저 축약(≤1280 툴바 아이콘화)되고, Center StnHeaderTitle은 md(32px)에서 sm(≤1280), compact(≤720)으로 점진 축소됩니다.'\n\nexport const STN_HEADER_VARIANT_ROWS = [\n {\n variant: 'dashboard',\n layout: 'Left(1fr · hug) · Center(auto) · Right(1fr · hug)',\n example: 'Alert status + Header title + System chips',\n },\n {\n variant: 'widget',\n layout: 'Left(1fr · hug) · Center(auto clock) · Right(1fr · hug)',\n example: 'Breadcrumb + Clock + Action buttons',\n },\n {\n variant: 'page',\n layout: 'Left title · Right',\n example: 'Page title + Breadcrumb',\n },\n] as const\n\nexport const STN_HEADER_USAGE = `import {\n StnSystemChip,\n StnHeader,\n StnBreadcrumb,\n StnButton,\n StnHeaderTitle,\n StnHeaderToolbar,\n StnIcon,\n} from '@stn-uiux/pub-ui-react'\n\n<StnHeader>\n <StnHeader.Left>\n <StnSystemChip items={[{ id: 'c', tone: 'critical', count: 0 }, ...]} />\n </StnHeader.Left>\n <StnHeader.Center>\n <StnHeaderTitle>통합 관제 솔루션</StnHeaderTitle>\n </StnHeader.Center>\n <StnHeader.Right>\n <StnHeaderToolbar>\n <StnButton size=\"M\" variant=\"ghost\" icon={<StnIcon name=\"fill/system_status_on\" size={16} className=\"stn-icon--color\" />}>\n 시스템 감시\n </StnButton>\n <StnButton size=\"M\" variant=\"ghost\" icon={<StnIcon name=\"line/sun-high\" size={16} />}>\n 라이트모드\n </StnButton>\n </StnHeaderToolbar>\n </StnHeader.Right>\n</StnHeader>`\n\nexport const STN_HEADER_USAGE_HTML = `<!-- Left · Center · Right 슬롯 조립 -->\n<header class=\"stn-header\">\n <div class=\"stn-header__left\">\n <!-- StnSystemChip / .stn-system-chip -->\n </div>\n <div class=\"stn-header__center\">\n <div class=\"stn-header-title\">\n <span class=\"stn-header-title__text\">통합 관제 솔루션</span>\n </div>\n </div>\n <div class=\"stn-header__right\">\n <div class=\"stn-header-toolbar\">\n <!-- system monitor · theme buttons -->\n </div>\n </div>\n</header>`\n\nexport const STN_SYSTEM_CHIP_DEMO = [\n { id: 'critical', tone: 'critical' as const, count: 0 },\n { id: 'major', tone: 'major' as const, count: 12 },\n { id: 'minor', tone: 'minor' as const, count: 2 },\n { id: 'info', tone: 'info' as const, count: 3 },\n]\n\nexport const STN_HEADER_PAGE_TITLE_DEMO = '장애코드 관리'\n\n/** Figma map toolbar 40000040:75034 — leading icon + label */\nexport const STN_HEADER_TOOLBAR_DEMO_ACTIONS = [\n {\n id: 'reset',\n label: '기본값으로 초기화',\n iconSrc: systemIconSrc('line/refresh'),\n tertiaryStyle: 'outline' as const,\n },\n {\n id: 'edit',\n label: '편집',\n iconSrc: systemIconSrc('line/pencil-minus'),\n tertiaryStyle: 'ghost' as const,\n },\n {\n id: 'prev-day',\n label: '전일 현황',\n iconSrc: systemIconSrc('line/report'),\n tertiaryStyle: 'ghost' as const,\n },\n] as const\n"],"mappings":";;;;;AAWO,IAAM,mBACX;AAEK,IAAM,0BAA0B;AAAA,EACrC;AAAA,IACE,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA;AAAA,IACE,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,SAAS;AAAA,EACX;AACF;AAEO,IAAM,mBAAmB;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;AAAA;AA6BzB,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiB9B,IAAM,uBAAuB;AAAA,EAClC,EAAE,IAAI,YAAY,MAAM,YAAqB,OAAO,EAAE;AAAA,EACtD,EAAE,IAAI,SAAS,MAAM,SAAkB,OAAO,GAAG;AAAA,EACjD,EAAE,IAAI,SAAS,MAAM,SAAkB,OAAO,EAAE;AAAA,EAChD,EAAE,IAAI,QAAQ,MAAM,QAAiB,OAAO,EAAE;AAChD;AAEO,IAAM,6BAA6B;AAGnC,IAAM,kCAAkC;AAAA,EAC7C;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS,cAAc,cAAc;AAAA,IACrC,eAAe;AAAA,EACjB;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS,cAAc,mBAAmB;AAAA,IAC1C,eAAe;AAAA,EACjB;AAAA,EACA;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS,cAAc,aAAa;AAAA,IACpC,eAAe;AAAA,EACjB;AACF;","names":[]}
|
package/dist/chunk-LHV26PEP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=chunk-LHV26PEP.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/stnSystemIcons.ts"],"sourcesContent":["/**\n * Infomap Figma 스타일가이드 — 시스템 아이콘 카탈로그\n * Source: aM4VC49NEejqjOPd7DYkCr / icon component (40002193:30716)\n * Assets: styles/@assets/svg/system/{slug}.{ext}\n */\n\nimport { SYSTEM_ICON_DATA_URLS } from './stnSystemIconsData.generated'\n\nexport type StnSystemIconStyle = 'line' | 'fill' | 'other'\n\nexport type StnSystemIconExt = 'svg' | 'png'\n\n\nexport type StnSystemIconRow = {\n id: string\n name: string\n /** path under /@assets/svg/system/ without extension */\n slug: string\n label: string\n style: StnSystemIconStyle\n ext: StnSystemIconExt\n}\n\nfunction styleFromSlug(slug: string): StnSystemIconStyle {\n if (slug.startsWith('line/')) return 'line'\n if (slug.startsWith('fill/')) return 'fill'\n return 'other'\n}\n\nfunction labelFromName(name: string): string {\n return name.replace(/^icon\\/(line|fill|3d)\\//, '').replace(/^icon\\//, '')\n}\n\nconst RAW: Array<{ id: string; name: string; slug: string; ext?: StnSystemIconExt }> = [\n { id: '40002193:30717', name: 'icon/blank', slug: 'blank' },\n { id: '40002193:30721', name: 'icon/line/server_3', slug: 'line/server_3' },\n { id: '40002193:30732', name: 'icon/line/server_2', slug: 'line/server_2' },\n { id: '40002193:30740', name: 'icon/line/server_1', slug: 'line/server_1' },\n { id: '40002193:30745', name: 'icon/line/home', slug: 'line/home' },\n { id: '40002193:30749', name: 'icon/fill/ractangle_up', slug: 'fill/ractangle_up' },\n { id: '40002193:30752', name: 'icon/fill/ractangle_down', slug: 'fill/ractangle_down' },\n { id: '40002193:30755', name: 'icon/line/arrow right', slug: 'line/arrow-right' },\n { id: '40002193:30757', name: 'icon/line/arrow left', slug: 'line/arrow-left' },\n { id: '40002193:30759', name: 'icon/line/apps', slug: 'line/apps' },\n { id: '40002193:30766', name: 'icon/line/refresh', slug: 'line/refresh' },\n { id: '40002193:30770', name: 'icon/line/battery-4', slug: 'line/battery-4' },\n { id: '40002193:30777', name: 'icon/line/terminal', slug: 'line/terminal' },\n { id: '40002193:30782', name: 'icon/line/bettery_2', slug: 'line/bettery_2' },\n { id: '40002193:30787', name: 'icon/line/settings', slug: 'line/settings' },\n { id: '40002193:30791', name: 'icon/line/plus', slug: 'line/plus' },\n { id: '40002193:30795', name: 'icon/line/activity', slug: 'line/activity' },\n { id: '40002193:30798', name: 'icon/line/clipboard', slug: 'line/clipboard' },\n { id: '40002193:30806', name: 'icon/line/alert-triangle', slug: 'line/alert-triangle' },\n { id: '40002193:30811', name: 'icon/line/chart-histogram', slug: 'line/chart-histogram' },\n { id: '40002193:30815', name: 'icon/line/world', slug: 'line/world' },\n { id: '40002193:30822', name: 'icon/line/detect', slug: 'line/detect' },\n { id: '40002193:30827', name: 'icon/line/detect', slug: 'line/detect-alt' },\n { id: '40002193:30835', name: 'icon/line/package', slug: 'line/package' },\n { id: '40002193:30842', name: 'icon/line/database', slug: 'line/database' },\n { id: '40002193:30847', name: 'icon/fill/exclamation-mark', slug: 'fill/exclamation-mark' },\n { id: '40002193:30851', name: 'icon/line/vertical_line', slug: 'line/vertical_line' },\n { id: '40002193:30854', name: 'icon/line/tree_connector', slug: 'line/tree_connector' },\n { id: '40002193:30857', name: 'icon/line/tree_connector_midium', slug: 'line/tree_connector_midium' },\n { id: '40002193:30860', name: 'icon/line/bell', slug: 'line/bell' },\n { id: '40002193:30864', name: 'icon/line/bell-ring', slug: 'line/bell-ring' },\n { id: '40002193:30870', name: 'icon/line/logout', slug: 'line/logout' },\n { id: '40002193:30875', name: 'icon/line/user', slug: 'line/user' },\n { id: 'stn:line/lock', name: 'icon/line/lock', slug: 'line/lock' },\n { id: '40002193:30879', name: 'icon/line/arrows-up-down', slug: 'line/arrows-up-down' },\n { id: '40002193:30885', name: 'icon/line/search', slug: 'line/search' },\n { id: '40002193:30889', name: 'icon/line/adjustments-horizontal 1', slug: 'line/adjustments-horizontal' },\n { id: '40002193:30900', name: 'icon/line/chart-bar', slug: 'line/chart-bar' },\n { id: '40002193:30906', name: 'icon/line/chart-bar2', slug: 'line/chart-bar2' },\n { id: '40002193:30912', name: 'icon/line/chart-bar-popular', slug: 'line/chart-bar-popular' },\n { id: '40002193:30918', name: 'icon/line/layout-grid', slug: 'line/layout-grid' },\n { id: '40002193:30924', name: 'icon/line/cpu', slug: 'line/cpu' },\n { id: '40002193:30936', name: 'icon/line/arrow-narrow-up', slug: 'line/arrow-narrow-up' },\n { id: '40002193:30941', name: 'icon/line/arrow-narrow-down', slug: 'line/arrow-narrow-down' },\n { id: '40002193:30946', name: 'icon/line/chart-pie 1', slug: 'line/chart-pie' },\n { id: '40002193:30950', name: 'icon/line/pencil-minus', slug: 'line/pencil-minus' },\n { id: 'stn:line/trash', name: 'icon/line/trash', slug: 'line/trash' },\n { id: 'stn:line/dots-vertical', name: 'icon/line/dots-vertical', slug: 'line/dots-vertical' },\n { id: 'stn:line/minimize', name: 'icon/line/minimize', slug: 'line/minimize' },\n { id: 'stn:line/panel-open', name: 'icon/line/panel-open', slug: 'line/panel-open' },\n { id: 'stn:line/wifi', name: 'icon/line/wifi', slug: 'line/wifi' },\n { id: 'stn:line/check-circle', name: 'icon/line/check-circle', slug: 'line/check-circle' },\n { id: '40002193:30955', name: 'icon/line/report', slug: 'line/report' },\n { id: '40002193:30964', name: 'icon/line/file-analytics 1', slug: 'line/file-analytics' },\n { id: '40002193:30971', name: 'icon/line/restore', slug: 'line/restore' },\n { id: '40002193:30976', name: 'icon/fill/server_3', slug: 'fill/server_3' },\n { id: '40002193:30987', name: 'icon/fill/server_2', slug: 'fill/server_2' },\n { id: '40002193:30995', name: 'icon/fill/server_1', slug: 'fill/server_1' },\n { id: '40002193:31000', name: 'icon/fill/folder', slug: 'fill/folder' },\n { id: '40002193:31003', name: 'icon/fill/folder-open', slug: 'fill/folder-open' },\n { id: '40002193:31006', name: 'icon/fill/cloud-data-connection', slug: 'fill/cloud-data-connection' },\n { id: '40002193:31009', name: 'icon/fill/exclamation-circle2', slug: 'fill/exclamation-circle2' },\n { id: '40002193:31016', name: 'icon/fill/exclamation-circle', slug: 'fill/exclamation-circle' },\n { id: '40002193:31023', name: 'icon/fill/type1', slug: 'fill/type1' },\n { id: '40002193:31028', name: 'icon/fill/type2', slug: 'fill/type2' },\n { id: '40002193:31036', name: 'icon/fill/info-hexagon 1', slug: 'fill/info-hexagon' },\n { id: '40002193:31039', name: 'icon/fill/info-hexagon4', slug: 'fill/info-hexagon4' },\n { id: '40002193:31046', name: 'icon/fill/info-hexagon_none', slug: 'fill/info-hexagon_none' },\n { id: '40002193:31049', name: 'icon/fill/info-hexagon1', slug: 'fill/info-hexagon1' },\n { id: '40002193:31056', name: 'icon/fill/info-hexagon3', slug: 'fill/info-hexagon3' },\n { id: '40002193:31063', name: 'icon/fill/info-hexagon2', slug: 'fill/info-hexagon2' },\n { id: '40002193:31071', name: 'icon/fill/exclamation-circle 1', slug: 'fill/exclamation-circle-alt' },\n { id: '40002193:31074', name: 'icon/fill/alert1', slug: 'fill/alert1' },\n { id: '40002193:31082', name: 'icon/fill/circle_none', slug: 'fill/circle_none' },\n { id: '40002193:31085', name: 'icon/line/shield 1', slug: 'line/shield' },\n { id: '40002193:31089', name: 'icon/fill/brightness-up 1', slug: 'fill/brightness-up' },\n { id: '40002193:31100', name: 'icon/fill/system_status_on', slug: 'fill/system_status_on' },\n { id: '40002193:31103', name: 'icon/fill/system_status_off', slug: 'fill/system_status_off' },\n { id: '40002193:31106', name: 'icon/fill/alert4', slug: 'fill/alert4' },\n { id: '40002193:31116', name: 'icon/fill/alert3', slug: 'fill/alert3' },\n { id: '40002193:31124', name: 'icon/fill/alert2', slug: 'fill/alert2' },\n { id: '40002193:31132', name: 'icon/line/shield-check 1', slug: 'line/shield-check' },\n { id: '40002193:31136', name: 'icon/line/volume 1', slug: 'line/volume' },\n { id: '40002193:31141', name: 'icon/fill/circle-dot 1', slug: 'fill/circle-dot' },\n { id: '40002193:31144', name: 'icon/ai_agent', slug: 'ai_agent', ext: 'png' },\n { id: '40002193:31146', name: 'icon/fill/moon 1', slug: 'fill/moon' },\n { id: '40002193:31149', name: 'icon/line/map 1', slug: 'line/map' },\n { id: '40002193:31155', name: 'icon/line/topology-ring-3 1', slug: 'line/topology-ring-3' },\n { id: '40002193:31166', name: 'icon/line/sun-high 1', slug: 'line/sun-high' },\n { id: '40002193:31177', name: 'icon/line/moon (1) 1', slug: 'line/moon' },\n { id: '40002193:31180', name: 'icon/line/chart', slug: 'line/chart' },\n { id: '40002193:31194', name: 'icon/line/bookmark 1', slug: 'line/bookmark' },\n { id: '40002193:31197', name: 'icon/line/calendar-week 1', slug: 'line/calendar-week' },\n { id: '40002193:31210', name: 'icon/line/player-pause (1) 1', slug: 'line/player-pause' },\n { id: '40002193:31214', name: 'icon/fill/player-skip-forward (1) 1', slug: 'fill/player-skip-forward' },\n { id: '40002193:31218', name: 'icon/line/ai-gateway 1', slug: 'line/ai-gateway' },\n { id: '40002193:31225', name: 'icon/line/database (1) 1', slug: 'line/database-alt' },\n { id: '40002193:31230', name: 'icon/fill/player-pause 1', slug: 'fill/player-pause' },\n { id: '40002193:31234', name: 'icon/fill/player-play (1) 1', slug: 'fill/player-play' },\n { id: '40002193:31237', name: 'icon/line/network 1', slug: 'line/network' },\n { id: '40002193:31247', name: 'icon/line/player-skip-forward 1', slug: 'line/player-skip-forward' },\n { id: '40002193:31251', name: 'icon/line/player-play 1', slug: 'line/player-play' },\n { id: '40002193:31254', name: 'icon/line/affiliate 1', slug: 'line/affiliate' },\n { id: '40002193:31262', name: 'icon/line/pin', slug: 'line/pin' },\n { id: '40002193:31267', name: 'icon/line/eye', slug: 'line/eye' },\n { id: '40002193:31271', name: 'icon/fill/square-rounded-letter-n 1', slug: 'fill/square-rounded-letter-n' },\n { id: '40002193:31274', name: 'icon/fill/square-rounded-letter-n 2', slug: 'fill/square-rounded-letter-n-alt' },\n { id: '40002193:31278', name: 'icon/line/clock 1', slug: 'line/clock' },\n { id: '40002193:31281', name: 'icon/line/gamma', slug: 'line/gamma' },\n { id: '40002193:31287', name: 'icon/line/brightness-2 1', slug: 'line/brightness-2' },\n { id: '40002193:31290', name: 'icon/3d/print', slug: '3d/print', ext: 'png' },\n { id: '40002193:31292', name: 'icon/3d/wifi', slug: '3d/wifi', ext: 'png' },\n { id: '40002193:31295', name: 'icon/3d/server1', slug: '3d/server1', ext: 'png' },\n { id: '40002193:31298', name: 'icon/3d/server2', slug: '3d/server2', ext: 'png' },\n { id: '40002193:31301', name: 'icon/3d/signal', slug: '3d/signal', ext: 'png' },\n { id: '40002193:31304', name: 'icon/3d/print_1', slug: '3d/print_1', ext: 'png' },\n { id: '40002193:31306', name: 'icon/3d/wif_1', slug: '3d/wifi_1', ext: 'png' },\n { id: '40002193:31309', name: 'icon/3d/werver2_1', slug: '3d/server2_1', ext: 'png' },\n { id: '40002193:31312', name: 'icon/3d/signal_1', slug: '3d/signal_1', ext: 'png' },\n { id: '40002193:31315', name: 'icon/3d/server1_1', slug: '3d/server1_1', ext: 'png' },\n { id: '40002193:31318', name: 'icon/line/x 1', slug: 'line/x' },\n { id: '40002193:31322', name: 'icon/fill/sparkles-2 (1) 1', slug: 'fill/sparkles-2' },\n { id: 'stn:fill/dashboard', name: 'icon/fill/dashboard', slug: 'fill/dashboard' },\n { id: 'stn:line/Organization', name: 'icon/line/Organization', slug: 'line/Organization' },\n { id: 'stn:line/antenna-bars-1 1', name: 'icon/line/antenna-bars-1 1', slug: 'line/antenna-bars-1 1' },\n { id: 'stn:line/arrows-diagonal 1', name: 'icon/line/arrows-diagonal 1', slug: 'line/arrows-diagonal 1' },\n { id: 'stn:line/arrows-diagonal 2', name: 'icon/line/arrows-diagonal 2', slug: 'line/arrows-diagonal 2' },\n { id: 'stn:line/arrows-maximize 1', name: 'icon/line/arrows-maximize 1', slug: 'line/arrows-maximize 1' },\n { id: 'stn:line/arrows-minimize 1', name: 'icon/line/arrows-minimize 1', slug: 'line/arrows-minimize 1' },\n { id: 'stn:line/brand-redhat 1', name: 'icon/line/brand-redhat 1', slug: 'line/brand-redhat 1' },\n { id: 'stn:line/brand-windows 1', name: 'icon/line/brand-windows 1', slug: 'line/brand-windows 1' },\n { id: 'stn:line/etc', name: 'icon/line/etc', slug: 'line/etc' },\n { id: 'stn:line/exclamation-circle 6', name: 'icon/line/exclamation-circle 6', slug: 'line/exclamation-circle 6' },\n { id: 'stn:line/input', name: 'icon/line/input', slug: 'line/input' },\n { id: 'stn:line/input-check-mark', name: 'icon/line/input-check-mark', slug: 'line/input-check-mark' },\n { id: 'stn:line/minus 2', name: 'icon/line/minus 2', slug: 'line/minus 2' },\n { id: 'stn:line/radio', name: 'icon/line/radio', slug: 'line/radio' },\n { id: 'stn:line/refresh 1', name: 'icon/line/refresh 1', slug: 'line/refresh 1' },\n { id: 'stn:line/rotate-clockwise 1', name: 'icon/line/rotate-clockwise 1', slug: 'line/rotate-clockwise 1' },\n { id: 'stn:line/chevron-down', name: 'icon/line/chevron-down', slug: 'line/chevron-down' },\n { id: 'stn:line/chevron-up', name: 'icon/line/chevron-up', slug: 'line/chevron-up' },\n { id: 'stn:fill/danger', name: 'icon/fill/danger', slug: 'fill/danger' },\n { id: 'stn:fill/detect-knob', name: 'icon/fill/detect-knob', slug: 'fill/detect-knob' },\n { id: 'stn:fill/realtime', name: 'icon/fill/realtime', slug: 'fill/realtime' },\n { id: 'stn:fill/report', name: 'icon/fill/report', slug: 'fill/report' },\n { id: 'stn:fill/server_2_tree_light', name: 'icon/fill/server_2_tree_light', slug: 'fill/server_2_tree_light' },\n { id: 'stn:fill/trend', name: 'icon/fill/trend', slug: 'fill/trend' },\n { id: 'stn:fill/under_alarm', name: 'icon/fill/under_alarm', slug: 'fill/under_alarm' },\n { id: 'stn:fill/under_exit', name: 'icon/fill/under_exit', slug: 'fill/under_exit' },\n { id: 'stn:fill/under_setting', name: 'icon/fill/under_setting', slug: 'fill/under_setting' },\n { id: 'stn:line/help-circle', name: 'icon/line/help-circle', slug: 'line/help-circle' },\n { id: 'stn:line/alert-circle', name: 'icon/line/alert-circle', slug: 'line/alert-circle' },\n { id: 'stn:line/chevron-right', name: 'icon/line/chevron-right', slug: 'line/chevron-right' },\n { id: 'stn:line/star', name: 'icon/line/star', slug: 'line/star' },\n { id: 'stn:line/external-link', name: 'icon/line/external-link', slug: 'line/external-link' },\n { id: 'stn:line/check', name: 'icon/line/check', slug: 'line/check' },\n { id: 'stn:line/eye', name: 'icon/line/eye', slug: 'line/eye' },\n { id: 'stn:line/eye-off', name: 'icon/line/eye-off', slug: 'line/eye-off' },\n]\n\nexport const STN_SYSTEM_ICON_INTRO =\n '시스템 아이콘은 화면에서 주요 기능과 정보를 직관적으로 전달하여 사용자 경험의 일관성을 유지합니다. Figma Infomap 스타일가이드 icon component 세트입니다. npm 패키지는 SVG를 번들하며, 문서 사이트는 /@assets/svg/system/ 정적 경로도 사용합니다.'\n\nexport const STN_SYSTEM_ICON_ROWS: StnSystemIconRow[] = RAW.map((row) => ({\n ...row,\n ext: row.ext ?? 'svg',\n label: labelFromName(row.name),\n style: styleFromSlug(row.slug),\n}))\n\n/** 문서·정적 HTML용 사이트 루트 경로 */\nexport function systemIconPublicPath(slug: string, ext: StnSystemIconExt = 'svg'): string {\n return `/@assets/svg/system/${slug}.${ext}`\n}\n\nfunction normalizeIconSlug(name: string): string {\n return name\n .replace(/^icon\\//, '')\n .replace(/^\\/?(@assets\\/svg\\/system\\/|svg\\/system\\/)/, '')\n .replace(/\\.(svg|png)$/, '')\n}\n\n/**\n * 런타임 src — 기본적으로 번들된 Base64 Data URL을 반환하며, 없을 경우 정적 경로로 폴백\n */\nexport function systemIconSrc(slug: string, ext: StnSystemIconExt = 'svg'): string {\n const norm = normalizeIconSlug(slug)\n return SYSTEM_ICON_DATA_URLS[norm] ?? SYSTEM_ICON_DATA_URLS[slug] ?? systemIconPublicPath(slug, ext)\n}\n\nconst SYSTEM_ICON_BY_SLUG = new Map(STN_SYSTEM_ICON_ROWS.map((row) => [row.slug, row]))\n\n/**\n * Iconography slug → 런타임 src (Base64 Data URL 또는 폴백 경로).\n * - `line/home` · `fill/folder` · `3d/print` · `blank` …\n */\nexport function resolveSystemIconSrcFromName(name: string): string | null {\n const norm = normalizeIconSlug(name)\n if (SYSTEM_ICON_DATA_URLS[norm]) return SYSTEM_ICON_DATA_URLS[norm]\n if (SYSTEM_ICON_DATA_URLS[name]) return SYSTEM_ICON_DATA_URLS[name]\n\n const row = SYSTEM_ICON_BY_SLUG.get(name) || SYSTEM_ICON_BY_SLUG.get(norm)\n if (row) return systemIconSrc(row.slug, row.ext)\n if (\n norm.startsWith('line/') ||\n norm.startsWith('fill/') ||\n norm.startsWith('3d/')\n ) {\n return systemIconSrc(norm, norm.startsWith('3d/') ? 'png' : 'svg')\n }\n return null\n}\n\nexport { SYSTEM_ICON_DATA_URLS }\n"],"mappings":"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","names":[]}
|