@stn-uiux/pub-ui 0.1.67 → 0.1.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/{chunk-HJCUNRB3.js → chunk-FSSMH6VS.js} +17 -1
  2. package/dist/chunk-FSSMH6VS.js.map +1 -0
  3. package/dist/{chunk-LKVTW54X.js → chunk-IZRGNUH6.js} +1 -1
  4. package/dist/chunk-IZRGNUH6.js.map +1 -0
  5. package/dist/{chunk-XBFXX3D6.js → chunk-NGUMR3D6.js} +15 -3
  6. package/dist/chunk-NGUMR3D6.js.map +1 -0
  7. package/dist/chunk-QQYDH4WU.js +9 -0
  8. package/dist/chunk-QQYDH4WU.js.map +1 -0
  9. package/dist/cli.js +3 -3
  10. package/dist/data/index.js +4 -4
  11. package/dist/data/stnDropdown.d.ts +1 -1
  12. package/dist/data/stnDropdown.js +1 -1
  13. package/dist/data/stnLayer0Background.d.ts +15 -3
  14. package/dist/data/stnLayer0Background.js +2 -2
  15. package/dist/data/stnLayer0BackgroundAssets.d.ts +12 -0
  16. package/dist/data/stnLayer0BackgroundAssets.js +1 -1
  17. package/dist/data/stnPackageVersion.d.ts +2 -2
  18. package/dist/data/stnPackageVersion.js +1 -1
  19. package/dist/index.js +4 -4
  20. package/package.json +1 -1
  21. package/styles/components/stn-card.css +44 -0
  22. package/styles/components/stn-chip.css +10 -34
  23. package/styles/components/stn-dropdown.css +20 -0
  24. package/styles/components/stn-status.css +26 -26
  25. package/styles/components/stn-toast.css +2 -2
  26. package/styles/components/stn-widget.css +33 -1
  27. package/styles/layouts/stn-layer1-content.css +7 -7
  28. package/styles/tokens/stn-colors-semantic.css +12 -6
  29. package/styles/tokens/stn-size-semantic.css +1 -0
  30. package/styles/tokens/stn-spacing-semantic.css +4 -0
  31. package/dist/chunk-HJCUNRB3.js.map +0 -1
  32. package/dist/chunk-LKVTW54X.js.map +0 -1
  33. package/dist/chunk-OGCKPHGD.js +0 -9
  34. package/dist/chunk-OGCKPHGD.js.map +0 -1
  35. package/dist/chunk-XBFXX3D6.js.map +0 -1
@@ -29,6 +29,20 @@ var STN_LAYER0_BACKGROUND_VARIANT_ROWS = [
29
29
  figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,
30
30
  note: "Dashboard \xB7 light/dark pair"
31
31
  },
32
+ {
33
+ preset: "infomap",
34
+ kind: "image",
35
+ figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,
36
+ figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,
37
+ note: "Infomap 3D Graphic \xB7 light/dark pair"
38
+ },
39
+ {
40
+ preset: "infomap-none",
41
+ kind: "image",
42
+ figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,
43
+ figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,
44
+ note: "Infomap 3D Graphic (None/\uD14D\uC2A4\uD2B8 \uC5C6\uC74C) \xB7 light/dark pair"
45
+ },
32
46
  {
33
47
  preset: "showroom-a",
34
48
  kind: "image",
@@ -116,6 +130,8 @@ var STN_LAYER0_BACKGROUND_USAGE_HTML = `<!-- L0 background \u2014 color / image
116
130
  var STN_LAYER0_MAP_LIGHT_OVERLAY = 0.2;
117
131
  var STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS = [
118
132
  { id: "dashboard", label: "dashboard", asset: "\uB300\uC2DC\uBCF4\uB4DC \uBC30\uACBD (dashboard-light / dark)", variant: "dashboard" },
133
+ { id: "infomap", label: "infomap", asset: "\uC778\uD3EC\uB9F5 3D \uBC30\uACBD (infomap-light / dark)", variant: "infomap" },
134
+ { id: "infomap-none", label: "infomap-none", asset: "\uC778\uD3EC\uB9F5 3D (None/\uD14D\uC2A4\uD2B8 \uC5C6\uC74C)", variant: "infomap-none" },
119
135
  { id: "color", label: "color", asset: "\uB2E8\uC0C9 \uD14C\uB9C8 \uBC30\uACBD (solid default)", variant: "none" },
120
136
  { id: "gradient", label: "gradient", asset: "\uACF5\uC2DD \uC570\uBE44\uC5B8\uD2B8 \uADF8\uB77C\uB370\uC774\uC158 (\uC6CC\uC2DC/\uC2EC\uB3C4)", variant: "gradient" },
121
137
  { id: "map", label: "map", asset: "GIS \uC9C0\uB3C4 \uBC30\uACBD (map-light)", variant: "map-light" },
@@ -132,4 +148,4 @@ export {
132
148
  STN_LAYER0_MAP_LIGHT_OVERLAY,
133
149
  STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS
134
150
  };
135
- //# sourceMappingURL=chunk-HJCUNRB3.js.map
151
+ //# sourceMappingURL=chunk-FSSMH6VS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/stnLayer0Background.ts"],"sourcesContent":["/**\n * Infomap Layer 0 background pattern\n * Light: 41267 · 186876 · 186860 · 202895\n * Dark: 80488 · 35369 · 84014 · 91183\n * @see StnLayer0Background · layouts/stn-layer0-bg.css\n */\n\nexport const STN_LAYER0_BACKGROUND_FIGMA = {\n none: '40000040:41267',\n noneDark: '40000040:80488',\n showroomA: '40000042:186876',\n showroomADark: '40002117:35369',\n showroomB: '40000042:186860',\n showroomBDark: '40000040:84014',\n mapLight: '40000042:202895',\n mapDark: '40000040:91183',\n login: '40004209:78293',\n loginDark: '40004209:78293',\n dashboard: '40004209:78300',\n dashboardDark: '40004209:78300',\n} as const\n\nexport type StnLayer0BackgroundKind = 'color' | 'gradient' | 'image'\n\n/** Figma 예제 프리셋 — color 1종 · gradient 1종 · image 7종 (light/dark 자동 전환) */\nexport type StnLayer0BackgroundPreset = 'none' | 'gradient' | 'showroom-a' | 'showroom-b' | 'map-light' | 'login' | 'dashboard' | 'infomap' | 'infomap-none'\n\n/** Doc site · Pub HTML 기준 경로 — 앱에서는 동일 경로 또는 자산 URL로 교체 */\nexport {\n STN_LAYER0_BACKGROUND_ASSET_PATHS,\n STN_LAYER0_BACKGROUND_DEMO_IMAGES,\n} from './stnLayer0BackgroundAssets'\n\nexport const STN_LAYER0_BACKGROUND_INTRO =\n '페이지 최하단 레벨(Level 0)에 위치하는 시스템 바닥면 배경 패턴입니다. 단색 컬러 및 맵·토폴로지 캔버스 배경 이미지를 `StnLayer0BackgroundPreset`으로 손쉽게 적용할 수 있습니다.'\n\nexport const STN_LAYER0_BACKGROUND_VARIANT_ROWS = [\n {\n preset: 'none',\n kind: 'color',\n figma: STN_LAYER0_BACKGROUND_FIGMA.none,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.noneDark,\n note: 'Light gradient · Dark elevation surface-0 (gray-950)',\n },\n {\n preset: 'dashboard',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,\n note: 'Dashboard · light/dark pair',\n },\n {\n preset: 'infomap',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,\n note: 'Infomap 3D Graphic · light/dark pair',\n },\n {\n preset: 'infomap-none',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,\n note: 'Infomap 3D Graphic (None/텍스트 없음) · light/dark pair',\n },\n {\n preset: 'showroom-a',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.showroomA,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.showroomADark,\n note: 'Showroom A · dark logo stage',\n },\n {\n preset: 'showroom-b',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.showroomB,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.showroomBDark,\n note: 'Showroom B · dark + radial vignette',\n },\n {\n preset: 'map-light',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.mapLight,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.mapDark,\n note: 'Map light(+20% white) · Map dark',\n },\n {\n preset: 'login',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.login,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.loginDark,\n note: 'Login · light/dark pair',\n },\n] as const satisfies ReadonlyArray<{\n preset: StnLayer0BackgroundPreset\n kind: StnLayer0BackgroundKind\n figma: string\n figmaDark: string\n note: string\n}>\n\nexport const STN_LAYER0_BACKGROUND_USAGE = `import {\n StnLayer,\n StnLayer0Background,\n StnLayer0BackgroundPreset,\n DashboardPageScaffold,\n} from '@stn-uiux/pub-ui-react'\n\n/** Map / Topology — wrapClassName만 (맵 배경은 elevation CSS) */\n<DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={…}\n header={…}\n/>\n\n/** 일반 페이지 — L0 color (default = elevation-surface-0) */\n<StnLayer.Background>\n <StnLayer0Background color=\"default\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n/** Figma image 프리셋 — showroom · map · login */\n<StnLayer.Background>\n <StnLayer0BackgroundPreset variant=\"map-light\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n<StnLayer.Background>\n <StnLayer0BackgroundPreset variant=\"login\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n/** 직접 조합 — light/dark 이미지 */\n<StnLayer.Background>\n <StnLayer0Background\n kind=\"image\"\n src=\"/assets/bg-light.png\"\n srcDark=\"/assets/bg-dark.png\"\n />\n <StnLayer.Content>…</StnLayer.Content>\n</StnLayer.Background>`\n\nexport const STN_LAYER0_BACKGROUND_USAGE_HTML = `<!-- L0 background — color / image -->\n<div class=\"stn-elev-0 stn-layer0-bg\">\n <!-- color -->\n <div class=\"stn-layer0-bg color default\" aria-hidden=\"true\"></div>\n\n <!-- 또는 image -->\n <div\n class=\"stn-layer0-bg image\"\n style=\"--stn-layer0-bg-image: url('/assets/bg-light.png')\"\n aria-hidden=\"true\"\n ></div>\n\n <main class=\"stn-elev-1\"><!-- L1 content --></main>\n</div>`\n\nexport const STN_LAYER0_MAP_LIGHT_OVERLAY = 0.2\n\n/** Patterns → Background playground 프리셋 (UI 라벨 · 내부 variant) */\nexport type StnLayer0BackgroundPlaygroundPresetId =\n | 'dashboard'\n | 'infomap'\n | 'infomap-none'\n | 'color'\n | 'gradient'\n | 'map'\n | 'topology'\n | 'none'\n\nexport const STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS: {\n id: StnLayer0BackgroundPlaygroundPresetId\n label: string\n asset: string\n variant?: StnLayer0BackgroundPreset\n}[] = [\n { id: 'dashboard', label: 'dashboard', asset: '대시보드 배경 (dashboard-light / dark)', variant: 'dashboard' },\n { id: 'infomap', label: 'infomap', asset: '인포맵 3D 배경 (infomap-light / dark)', variant: 'infomap' },\n { id: 'infomap-none', label: 'infomap-none', asset: '인포맵 3D (None/텍스트 없음)', variant: 'infomap-none' },\n { id: 'color', label: 'color', asset: '단색 테마 배경 (solid default)', variant: 'none' },\n { id: 'gradient', label: 'gradient', asset: '공식 앰비언트 그라데이션 (워시/심도)', variant: 'gradient' },\n { id: 'map', label: 'map', asset: 'GIS 지도 배경 (map-light)', variant: 'map-light' },\n { id: 'topology', label: 'topology', asset: '토폴로지 배경 (showroom-b)', variant: 'showroom-b' },\n { id: 'none', label: 'none', asset: 'L0 배경 없음 (외부 캔버스 전용)', variant: 'none' },\n]\n"],"mappings":";AAOO,IAAM,8BAA8B;AAAA,EACzC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AACjB;AAaO,IAAM,8BACX;AAEK,IAAM,qCAAqC;AAAA,EAChD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AACF;AAQO,IAAM,8BAA8B;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CpC,IAAM,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAezC,IAAM,+BAA+B;AAarC,IAAM,2CAKP;AAAA,EACJ,EAAE,IAAI,aAAa,OAAO,aAAa,OAAO,kEAAoC,SAAS,YAAY;AAAA,EACvG,EAAE,IAAI,WAAW,OAAO,WAAW,OAAO,6DAAoC,SAAS,UAAU;AAAA,EACjG,EAAE,IAAI,gBAAgB,OAAO,gBAAgB,OAAO,gEAAwB,SAAS,eAAe;AAAA,EACpG,EAAE,IAAI,SAAS,OAAO,SAAS,OAAO,0DAA4B,SAAS,OAAO;AAAA,EAClF,EAAE,IAAI,YAAY,OAAO,YAAY,OAAO,oGAAyB,SAAS,WAAW;AAAA,EACzF,EAAE,IAAI,OAAO,OAAO,OAAO,OAAO,6CAAyB,SAAS,YAAY;AAAA,EAChF,EAAE,IAAI,YAAY,OAAO,YAAY,OAAO,sDAAwB,SAAS,aAAa;AAAA,EAC1F,EAAE,IAAI,QAAQ,OAAO,QAAQ,OAAO,+EAAwB,SAAS,OAAO;AAC9E;","names":[]}
@@ -174,4 +174,4 @@ export {
174
174
  STN_DROPDOWN_MENU_INTRO,
175
175
  STN_DROPDOWN_MENU_USAGE
176
176
  };
177
- //# sourceMappingURL=chunk-LKVTW54X.js.map
177
+ //# sourceMappingURL=chunk-IZRGNUH6.js.map
@@ -0,0 +1 @@
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' | 'transparent' | 'translucent'\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":[]}
@@ -14,7 +14,13 @@ var STN_LAYER0_BACKGROUND_DEMO_IMAGES = {
14
14
  mapDark: `${STN_CDN_ASSET_BASE}/map-dark.png`,
15
15
  login: `${STN_CDN_ASSET_BASE}/login-light.png`,
16
16
  loginLight: `${STN_CDN_ASSET_BASE}/login-light.png`,
17
- loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`
17
+ loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`,
18
+ infomap: `${STN_CDN_ASSET_BASE}/infomap-light.png`,
19
+ infomapLight: `${STN_CDN_ASSET_BASE}/infomap-light.png`,
20
+ infomapDark: `${STN_CDN_ASSET_BASE}/infomap-dark.png`,
21
+ infomapNone: `${STN_CDN_ASSET_BASE}/infomap-light-none.png`,
22
+ infomapNoneLight: `${STN_CDN_ASSET_BASE}/infomap-light-none.png`,
23
+ infomapNoneDark: `${STN_CDN_ASSET_BASE}/infomap-dark-none.png`
18
24
  };
19
25
  var STN_LAYER0_BACKGROUND_ASSET_PATHS = {
20
26
  dashboard: "@assets/images/layer0/dashboard-light.png",
@@ -30,7 +36,13 @@ var STN_LAYER0_BACKGROUND_ASSET_PATHS = {
30
36
  mapDark: "@assets/images/layer0/map-dark.png",
31
37
  login: "@assets/images/layer0/login-light.png",
32
38
  loginLight: "@assets/images/layer0/login-light.png",
33
- loginDark: "@assets/images/layer0/login-dark.png"
39
+ loginDark: "@assets/images/layer0/login-dark.png",
40
+ infomap: "@assets/images/layer0/infomap-light.png",
41
+ infomapLight: "@assets/images/layer0/infomap-light.png",
42
+ infomapDark: "@assets/images/layer0/infomap-dark.png",
43
+ infomapNone: "@assets/images/layer0/infomap-light-none.png",
44
+ infomapNoneLight: "@assets/images/layer0/infomap-light-none.png",
45
+ infomapNoneDark: "@assets/images/layer0/infomap-dark-none.png"
34
46
  };
35
47
 
36
48
  export {
@@ -38,4 +50,4 @@ export {
38
50
  STN_LAYER0_BACKGROUND_DEMO_IMAGES,
39
51
  STN_LAYER0_BACKGROUND_ASSET_PATHS
40
52
  };
41
- //# sourceMappingURL=chunk-XBFXX3D6.js.map
53
+ //# sourceMappingURL=chunk-NGUMR3D6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/stnLayer0BackgroundAssets.ts"],"sourcesContent":["/**\n * L0 preset images — Hosted on STN Official Vercel CDN for zero-setup & instant loading.\n */\nexport const STN_CDN_ASSET_BASE = 'https://stn-design.vercel.app/images/layer0'\n\nexport const STN_LAYER0_BACKGROUND_DEMO_IMAGES = {\n dashboard: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardLight: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardDark: `${STN_CDN_ASSET_BASE}/dashboard-dark.png`,\n showroomA: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomALight: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomADark: `${STN_CDN_ASSET_BASE}/showroom-a-dark.png`,\n showroomB: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBLight: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBDark: `${STN_CDN_ASSET_BASE}/showroom-b-dark.png`,\n mapLight: `${STN_CDN_ASSET_BASE}/map-light.png`,\n mapDark: `${STN_CDN_ASSET_BASE}/map-dark.png`,\n login: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginLight: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`,\n infomap: `${STN_CDN_ASSET_BASE}/infomap-light.png`,\n infomapLight: `${STN_CDN_ASSET_BASE}/infomap-light.png`,\n infomapDark: `${STN_CDN_ASSET_BASE}/infomap-dark.png`,\n infomapNone: `${STN_CDN_ASSET_BASE}/infomap-light-none.png`,\n infomapNoneLight: `${STN_CDN_ASSET_BASE}/infomap-light-none.png`,\n infomapNoneDark: `${STN_CDN_ASSET_BASE}/infomap-dark-none.png`,\n} as const\n\n/** Pub CSS @assets 경로 — HTML·vanilla 소비자용 */\nexport const STN_LAYER0_BACKGROUND_ASSET_PATHS = {\n dashboard: '@assets/images/layer0/dashboard-light.png',\n dashboardLight: '@assets/images/layer0/dashboard-light.png',\n dashboardDark: '@assets/images/layer0/dashboard-dark.png',\n showroomA: '@assets/images/layer0/showroom-a-light.png',\n showroomALight: '@assets/images/layer0/showroom-a-light.png',\n showroomADark: '@assets/images/layer0/showroom-a-dark.png',\n showroomB: '@assets/images/layer0/showroom-b-light.png',\n showroomBLight: '@assets/images/layer0/showroom-b-light.png',\n showroomBDark: '@assets/images/layer0/showroom-b-dark.png',\n mapLight: '@assets/images/layer0/map-light.png',\n mapDark: '@assets/images/layer0/map-dark.png',\n login: '@assets/images/layer0/login-light.png',\n loginLight: '@assets/images/layer0/login-light.png',\n loginDark: '@assets/images/layer0/login-dark.png',\n infomap: '@assets/images/layer0/infomap-light.png',\n infomapLight: '@assets/images/layer0/infomap-light.png',\n infomapDark: '@assets/images/layer0/infomap-dark.png',\n infomapNone: '@assets/images/layer0/infomap-light-none.png',\n infomapNoneLight: '@assets/images/layer0/infomap-light-none.png',\n infomapNoneDark: '@assets/images/layer0/infomap-dark-none.png',\n} as const\n"],"mappings":";AAGO,IAAM,qBAAqB;AAE3B,IAAM,oCAAoC;AAAA,EAC/C,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,UAAU,GAAG,kBAAkB;AAAA,EAC/B,SAAS,GAAG,kBAAkB;AAAA,EAC9B,OAAO,GAAG,kBAAkB;AAAA,EAC5B,YAAY,GAAG,kBAAkB;AAAA,EACjC,WAAW,GAAG,kBAAkB;AAAA,EAChC,SAAS,GAAG,kBAAkB;AAAA,EAC9B,cAAc,GAAG,kBAAkB;AAAA,EACnC,aAAa,GAAG,kBAAkB;AAAA,EAClC,aAAa,GAAG,kBAAkB;AAAA,EAClC,kBAAkB,GAAG,kBAAkB;AAAA,EACvC,iBAAiB,GAAG,kBAAkB;AACxC;AAGO,IAAM,oCAAoC;AAAA,EAC/C,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,SAAS;AAAA,EACT,cAAc;AAAA,EACd,aAAa;AAAA,EACb,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,iBAAiB;AACnB;","names":[]}
@@ -0,0 +1,9 @@
1
+ // src/data/stnPackageVersion.ts
2
+ var STN_UI_VERSION = "0.1.68";
3
+ var STN_UI_VERSION_LABEL = "v0.1.68";
4
+
5
+ export {
6
+ STN_UI_VERSION,
7
+ STN_UI_VERSION_LABEL
8
+ };
9
+ //# sourceMappingURL=chunk-QQYDH4WU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.68'\nexport const STN_UI_VERSION_LABEL = 'v0.1.68'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
package/dist/cli.js CHANGED
@@ -32,8 +32,8 @@ import {
32
32
  } from "./chunk-EQ6LUBD6.js";
33
33
  import {
34
34
  STN_LAYER0_BACKGROUND_USAGE
35
- } from "./chunk-HJCUNRB3.js";
36
- import "./chunk-XBFXX3D6.js";
35
+ } from "./chunk-FSSMH6VS.js";
36
+ import "./chunk-NGUMR3D6.js";
37
37
  import {
38
38
  STN_LAYOUT_LIST_VIEW_USAGE
39
39
  } from "./chunk-2ZYBBVBT.js";
@@ -42,7 +42,7 @@ import {
42
42
  } from "./chunk-5BGXBJXN.js";
43
43
  import {
44
44
  STN_DROPDOWN_USAGE
45
- } from "./chunk-LKVTW54X.js";
45
+ } from "./chunk-IZRGNUH6.js";
46
46
  import {
47
47
  STN_HEADER_USAGE
48
48
  } from "./chunk-ESH5VDHX.js";
@@ -135,7 +135,7 @@ import {
135
135
  import {
136
136
  STN_UI_VERSION,
137
137
  STN_UI_VERSION_LABEL
138
- } from "../chunk-OGCKPHGD.js";
138
+ } from "../chunk-QQYDH4WU.js";
139
139
  import {
140
140
  STN_PAGE_ENTER_MOTION_INTRO,
141
141
  STN_PAGE_ENTER_MOTION_ROWS,
@@ -422,12 +422,12 @@ import {
422
422
  STN_LAYER0_BACKGROUND_USAGE_HTML,
423
423
  STN_LAYER0_BACKGROUND_VARIANT_ROWS,
424
424
  STN_LAYER0_MAP_LIGHT_OVERLAY
425
- } from "../chunk-HJCUNRB3.js";
425
+ } from "../chunk-FSSMH6VS.js";
426
426
  import {
427
427
  STN_CDN_ASSET_BASE,
428
428
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
429
429
  STN_LAYER0_BACKGROUND_DEMO_IMAGES
430
- } from "../chunk-XBFXX3D6.js";
430
+ } from "../chunk-NGUMR3D6.js";
431
431
  import {
432
432
  STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE,
433
433
  STN_LAYER_SHELL_USAGE,
@@ -474,7 +474,7 @@ import {
474
474
  STN_DROPDOWN_MENU_USAGE,
475
475
  STN_DROPDOWN_SIZE_ROWS,
476
476
  STN_DROPDOWN_USAGE
477
- } from "../chunk-LKVTW54X.js";
477
+ } from "../chunk-IZRGNUH6.js";
478
478
  import {
479
479
  STN_HEADER_INTRO,
480
480
  STN_HEADER_PAGE_TITLE_DEMO,
@@ -4,7 +4,7 @@
4
4
  */
5
5
  type StnDropdownMode = 'native' | 'menu';
6
6
  type StnDropdownSize = 'sm' | 'md' | 'lg' | 'xl';
7
- type StnDropdownVariant = 'outline' | 'standard' | 'filled' | 'transparent';
7
+ type StnDropdownVariant = 'outline' | 'standard' | 'filled' | 'transparent' | 'translucent';
8
8
  type StnDropdownHelperTextPosition = 'top' | 'bottom' | 'left' | 'right';
9
9
  type StnDropdownDirection = 'down' | 'up';
10
10
  /** native: select에 class 직접 · wrapper: div.stn-dropdown > select.selected */
@@ -7,7 +7,7 @@ import {
7
7
  STN_DROPDOWN_MENU_USAGE,
8
8
  STN_DROPDOWN_SIZE_ROWS,
9
9
  STN_DROPDOWN_USAGE
10
- } from "../chunk-LKVTW54X.js";
10
+ } from "../chunk-IZRGNUH6.js";
11
11
  export {
12
12
  STN_DROPDOWN_HTML,
13
13
  STN_DROPDOWN_HTML_COUNTS,
@@ -21,8 +21,8 @@ declare const STN_LAYER0_BACKGROUND_FIGMA: {
21
21
  readonly dashboardDark: "40004209:78300";
22
22
  };
23
23
  type StnLayer0BackgroundKind = 'color' | 'gradient' | 'image';
24
- /** Figma 예제 프리셋 — color 1종 · gradient 1종 · image 5종 (light/dark 자동 전환) */
25
- type StnLayer0BackgroundPreset = 'none' | 'gradient' | 'showroom-a' | 'showroom-b' | 'map-light' | 'login' | 'dashboard';
24
+ /** Figma 예제 프리셋 — color 1종 · gradient 1종 · image 7종 (light/dark 자동 전환) */
25
+ type StnLayer0BackgroundPreset = 'none' | 'gradient' | 'showroom-a' | 'showroom-b' | 'map-light' | 'login' | 'dashboard' | 'infomap' | 'infomap-none';
26
26
 
27
27
  declare const STN_LAYER0_BACKGROUND_INTRO = "\uD398\uC774\uC9C0 \uCD5C\uD558\uB2E8 \uB808\uBCA8(Level 0)\uC5D0 \uC704\uCE58\uD558\uB294 \uC2DC\uC2A4\uD15C \uBC14\uB2E5\uBA74 \uBC30\uACBD \uD328\uD134\uC785\uB2C8\uB2E4. \uB2E8\uC0C9 \uCEEC\uB7EC \uBC0F \uB9F5\u00B7\uD1A0\uD3F4\uB85C\uC9C0 \uCE94\uBC84\uC2A4 \uBC30\uACBD \uC774\uBBF8\uC9C0\uB97C `StnLayer0BackgroundPreset`\uC73C\uB85C \uC190\uC27D\uAC8C \uC801\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.";
28
28
  declare const STN_LAYER0_BACKGROUND_VARIANT_ROWS: readonly [{
@@ -37,6 +37,18 @@ declare const STN_LAYER0_BACKGROUND_VARIANT_ROWS: readonly [{
37
37
  readonly figma: "40004209:78300";
38
38
  readonly figmaDark: "40004209:78300";
39
39
  readonly note: "Dashboard · light/dark pair";
40
+ }, {
41
+ readonly preset: "infomap";
42
+ readonly kind: "image";
43
+ readonly figma: "40004209:78300";
44
+ readonly figmaDark: "40004209:78300";
45
+ readonly note: "Infomap 3D Graphic · light/dark pair";
46
+ }, {
47
+ readonly preset: "infomap-none";
48
+ readonly kind: "image";
49
+ readonly figma: "40004209:78300";
50
+ readonly figmaDark: "40004209:78300";
51
+ readonly note: "Infomap 3D Graphic (None/텍스트 없음) · light/dark pair";
40
52
  }, {
41
53
  readonly preset: "showroom-a";
42
54
  readonly kind: "image";
@@ -66,7 +78,7 @@ declare const STN_LAYER0_BACKGROUND_USAGE = "import {\n StnLayer,\n StnLayer0B
66
78
  declare const STN_LAYER0_BACKGROUND_USAGE_HTML = "<!-- L0 background \u2014 color / image -->\n<div class=\"stn-elev-0 stn-layer0-bg\">\n <!-- color -->\n <div class=\"stn-layer0-bg color default\" aria-hidden=\"true\"></div>\n\n <!-- \uB610\uB294 image -->\n <div\n class=\"stn-layer0-bg image\"\n style=\"--stn-layer0-bg-image: url('/assets/bg-light.png')\"\n aria-hidden=\"true\"\n ></div>\n\n <main class=\"stn-elev-1\"><!-- L1 content --></main>\n</div>";
67
79
  declare const STN_LAYER0_MAP_LIGHT_OVERLAY = 0.2;
68
80
  /** Patterns → Background playground 프리셋 (UI 라벨 · 내부 variant) */
69
- type StnLayer0BackgroundPlaygroundPresetId = 'dashboard' | 'color' | 'gradient' | 'map' | 'topology' | 'none';
81
+ type StnLayer0BackgroundPlaygroundPresetId = 'dashboard' | 'infomap' | 'infomap-none' | 'color' | 'gradient' | 'map' | 'topology' | 'none';
70
82
  declare const STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS: {
71
83
  id: StnLayer0BackgroundPlaygroundPresetId;
72
84
  label: string;
@@ -6,11 +6,11 @@ import {
6
6
  STN_LAYER0_BACKGROUND_USAGE_HTML,
7
7
  STN_LAYER0_BACKGROUND_VARIANT_ROWS,
8
8
  STN_LAYER0_MAP_LIGHT_OVERLAY
9
- } from "../chunk-HJCUNRB3.js";
9
+ } from "../chunk-FSSMH6VS.js";
10
10
  import {
11
11
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
12
12
  STN_LAYER0_BACKGROUND_DEMO_IMAGES
13
- } from "../chunk-XBFXX3D6.js";
13
+ } from "../chunk-NGUMR3D6.js";
14
14
  export {
15
15
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
16
16
  STN_LAYER0_BACKGROUND_DEMO_IMAGES,
@@ -17,6 +17,12 @@ declare const STN_LAYER0_BACKGROUND_DEMO_IMAGES: {
17
17
  readonly login: "https://stn-design.vercel.app/images/layer0/login-light.png";
18
18
  readonly loginLight: "https://stn-design.vercel.app/images/layer0/login-light.png";
19
19
  readonly loginDark: "https://stn-design.vercel.app/images/layer0/login-dark.png";
20
+ readonly infomap: "https://stn-design.vercel.app/images/layer0/infomap-light.png";
21
+ readonly infomapLight: "https://stn-design.vercel.app/images/layer0/infomap-light.png";
22
+ readonly infomapDark: "https://stn-design.vercel.app/images/layer0/infomap-dark.png";
23
+ readonly infomapNone: "https://stn-design.vercel.app/images/layer0/infomap-light-none.png";
24
+ readonly infomapNoneLight: "https://stn-design.vercel.app/images/layer0/infomap-light-none.png";
25
+ readonly infomapNoneDark: "https://stn-design.vercel.app/images/layer0/infomap-dark-none.png";
20
26
  };
21
27
  /** Pub CSS @assets 경로 — HTML·vanilla 소비자용 */
22
28
  declare const STN_LAYER0_BACKGROUND_ASSET_PATHS: {
@@ -34,6 +40,12 @@ declare const STN_LAYER0_BACKGROUND_ASSET_PATHS: {
34
40
  readonly login: "@assets/images/layer0/login-light.png";
35
41
  readonly loginLight: "@assets/images/layer0/login-light.png";
36
42
  readonly loginDark: "@assets/images/layer0/login-dark.png";
43
+ readonly infomap: "@assets/images/layer0/infomap-light.png";
44
+ readonly infomapLight: "@assets/images/layer0/infomap-light.png";
45
+ readonly infomapDark: "@assets/images/layer0/infomap-dark.png";
46
+ readonly infomapNone: "@assets/images/layer0/infomap-light-none.png";
47
+ readonly infomapNoneLight: "@assets/images/layer0/infomap-light-none.png";
48
+ readonly infomapNoneDark: "@assets/images/layer0/infomap-dark-none.png";
37
49
  };
38
50
 
39
51
  export { STN_CDN_ASSET_BASE, STN_LAYER0_BACKGROUND_ASSET_PATHS, STN_LAYER0_BACKGROUND_DEMO_IMAGES };
@@ -2,7 +2,7 @@ import {
2
2
  STN_CDN_ASSET_BASE,
3
3
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
4
4
  STN_LAYER0_BACKGROUND_DEMO_IMAGES
5
- } from "../chunk-XBFXX3D6.js";
5
+ } from "../chunk-NGUMR3D6.js";
6
6
  export {
7
7
  STN_CDN_ASSET_BASE,
8
8
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
@@ -1,5 +1,5 @@
1
1
  /** Package version constants */
2
- declare const STN_UI_VERSION = "0.1.67";
3
- declare const STN_UI_VERSION_LABEL = "v0.1.67";
2
+ declare const STN_UI_VERSION = "0.1.68";
3
+ declare const STN_UI_VERSION_LABEL = "v0.1.68";
4
4
 
5
5
  export { STN_UI_VERSION, STN_UI_VERSION_LABEL };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  STN_UI_VERSION,
3
3
  STN_UI_VERSION_LABEL
4
- } from "../chunk-OGCKPHGD.js";
4
+ } from "../chunk-QQYDH4WU.js";
5
5
  export {
6
6
  STN_UI_VERSION,
7
7
  STN_UI_VERSION_LABEL
package/dist/index.js CHANGED
@@ -140,7 +140,7 @@ import {
140
140
  import {
141
141
  STN_UI_VERSION,
142
142
  STN_UI_VERSION_LABEL
143
- } from "./chunk-OGCKPHGD.js";
143
+ } from "./chunk-QQYDH4WU.js";
144
144
  import {
145
145
  STN_PAGE_ENTER_MOTION_INTRO,
146
146
  STN_PAGE_ENTER_MOTION_ROWS,
@@ -427,12 +427,12 @@ import {
427
427
  STN_LAYER0_BACKGROUND_USAGE_HTML,
428
428
  STN_LAYER0_BACKGROUND_VARIANT_ROWS,
429
429
  STN_LAYER0_MAP_LIGHT_OVERLAY
430
- } from "./chunk-HJCUNRB3.js";
430
+ } from "./chunk-FSSMH6VS.js";
431
431
  import {
432
432
  STN_CDN_ASSET_BASE,
433
433
  STN_LAYER0_BACKGROUND_ASSET_PATHS,
434
434
  STN_LAYER0_BACKGROUND_DEMO_IMAGES
435
- } from "./chunk-XBFXX3D6.js";
435
+ } from "./chunk-NGUMR3D6.js";
436
436
  import {
437
437
  STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE,
438
438
  STN_LAYER_SHELL_USAGE,
@@ -479,7 +479,7 @@ import {
479
479
  STN_DROPDOWN_MENU_USAGE,
480
480
  STN_DROPDOWN_SIZE_ROWS,
481
481
  STN_DROPDOWN_USAGE
482
- } from "./chunk-LKVTW54X.js";
482
+ } from "./chunk-IZRGNUH6.js";
483
483
  import {
484
484
  STN_HEADER_INTRO,
485
485
  STN_HEADER_PAGE_TITLE_DEMO,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stn-uiux/pub-ui",
3
- "version": "0.1.67",
3
+ "version": "0.1.69",
4
4
  "description": "STN Pub design system — tokens, specs, and CSS for product HTML / React apps",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -69,6 +69,27 @@
69
69
  .stn-card.pad-md { padding: var(--stn-card-pad-md); }
70
70
  .stn-card.pad-lg { padding: var(--stn-card-pad-lg); }
71
71
 
72
+ /* Layout modifiers */
73
+ .stn-card.is-full-width,
74
+ .stn-card.full-width {
75
+ width: 100%;
76
+ }
77
+
78
+ .stn-card.is-full-height,
79
+ .stn-card.full-height {
80
+ height: 100%;
81
+ display: flex;
82
+ flex-direction: column;
83
+ }
84
+
85
+ .stn-card.is-full-height > .stn-card__body,
86
+ .stn-card.full-height > .stn-card__body {
87
+ flex: 1 1 0%;
88
+ min-height: 0;
89
+ display: flex;
90
+ flex-direction: column;
91
+ }
92
+
72
93
  /* Interactive (Hover / Click) */
73
94
  .stn-card.interactive,
74
95
  .stn-card[role='button'] {
@@ -91,6 +112,29 @@
91
112
  margin-bottom: var(--stn-space-12, 12px);
92
113
  }
93
114
 
115
+ .stn-card__header-title {
116
+ margin: 0;
117
+ min-width: 0;
118
+ font-size: var(--stn-text-title-small-size, var(--stn-font-size-16, 16px));
119
+ font-weight: var(--stn-font-weight-semibold, 600);
120
+ color: var(--stn-text-primary);
121
+ line-height: var(--stn-line-height-1, 1.2);
122
+ white-space: nowrap;
123
+ overflow: hidden;
124
+ text-overflow: ellipsis;
125
+ }
126
+
127
+ /* Card title size modifiers */
128
+ .stn-card__header-title.sm { font-size: var(--stn-font-size-14, 14px); }
129
+ .stn-card__header-title.md { font-size: var(--stn-font-size-16, 16px); }
130
+ .stn-card__header-title.lg { font-size: var(--stn-font-size-18, 18px); }
131
+
132
+ /* Card title weight modifiers */
133
+ .stn-card__header-title.regular { font-weight: var(--stn-font-weight-regular, 400); }
134
+ .stn-card__header-title.medium { font-weight: var(--stn-font-weight-medium, 500); }
135
+ .stn-card__header-title.semibold { font-weight: var(--stn-font-weight-semibold, 600); }
136
+ .stn-card__header-title.bold { font-weight: var(--stn-font-weight-bold, 700); }
137
+
94
138
  .stn-card__body {
95
139
  display: block;
96
140
  }
@@ -19,6 +19,7 @@
19
19
  * - Border accents: `accent-mint`, `accent-sky`, `accent-violet`, `accent-orange`, `accent-yellow`, `accent-gray`
20
20
  */
21
21
 
22
+
22
23
  .stn-chip-wrap {
23
24
  display: inline-flex;
24
25
  align-items: center;
@@ -203,47 +204,28 @@
203
204
  --stn-chip-color: var(--stn-grade-warning);
204
205
  }
205
206
 
206
- /* —— 4. Variants: Filled vs Outline / Border vs Contained 50% Opacity —— */
207
+ /* —— 4. Variants: Filled vs Soft vs Outline —— */
207
208
  /* Filled (Default / Contained) */
208
209
  .stn-chip.filled,
209
- .stn-chip.contained,
210
- .stn-chip:not(.outline):not(.border):not(.contained-50):not(.filled-50):not(.bg-50):not(.bg-opacity-50):not(.soft):not(.subtle):not(.tinted) {
210
+ .stn-chip:not(.outline):not(.soft) {
211
211
  --stn-chip-bg: var(--stn-chip-color);
212
212
  --stn-chip-border: transparent;
213
213
  --stn-chip-fg: var(--stn-text-re-primary);
214
214
  }
215
215
 
216
- /* Contained / Soft / Subtle (연한 배경 + 해당 색상 텍스트) */
217
- .stn-chip.subtle,
218
- .stn-chip.soft,
219
- .stn-chip.tinted,
220
- .stn-chip.contained-50,
221
- .stn-chip.filled-50,
222
- .stn-chip.bg-50,
223
- .stn-chip.bg-opacity-50,
224
- .stn-chip--bg-50 {
216
+ /* Soft (은은한 틴트 배경 + 해당 색상 텍스트 단일 통일) */
217
+ .stn-chip.soft {
225
218
  --stn-chip-bg: color-mix(in srgb, var(--stn-chip-color) 14%, transparent);
226
219
  --stn-chip-border: transparent;
227
220
  --stn-chip-fg: var(--stn-chip-color);
228
221
  }
229
222
 
230
- [data-theme='dark'] .stn-chip.subtle,
231
- [data-theme='dark'] .stn-chip.soft,
232
- [data-theme='dark'] .stn-chip.tinted,
233
- [data-theme='dark'] .stn-chip.contained-50,
234
- [data-theme='dark'] .stn-chip.filled-50,
235
- [data-theme='dark'] .stn-chip.bg-50,
236
- [data-theme='dark'] .stn-chip.bg-opacity-50,
237
- [data-theme='dark'] .stn-chip--bg-50 {
223
+ [data-theme='dark'] .stn-chip.soft {
238
224
  --stn-chip-bg: color-mix(in srgb, var(--stn-chip-color) 22%, transparent);
239
- --stn-chip-border: transparent;
240
- --stn-chip-fg: var(--stn-chip-color);
241
225
  }
242
226
 
243
- /* Outline / Border */
244
- .stn-chip.outline,
245
- .stn-chip.outlined,
246
- .stn-chip.border {
227
+ /* Outline (외곽선 테두리 단일 통일) */
228
+ .stn-chip.outline {
247
229
  --stn-chip-bg: transparent;
248
230
  --stn-chip-border: var(--stn-chip-color);
249
231
  --stn-chip-fg: var(--stn-chip-color);
@@ -330,18 +312,12 @@
330
312
  filter: brightness(1.08);
331
313
  }
332
314
 
333
- .stn-chip.clickable.outline:hover,
334
- .stn-chip.clickable.border:hover {
315
+ .stn-chip.clickable.outline:hover {
335
316
  background-color: color-mix(in srgb, var(--stn-chip-color) 12%, transparent);
336
317
  filter: none;
337
318
  }
338
319
 
339
- .stn-chip.clickable.contained-50:hover,
340
- .stn-chip.clickable.filled-50:hover,
341
- .stn-chip.clickable.bg-50:hover,
342
- .stn-chip.clickable.bg-opacity-50:hover,
343
- .stn-chip.clickable.soft:hover,
344
- .stn-chip.clickable.stn-chip--bg-50:hover {
320
+ .stn-chip.clickable.soft:hover {
345
321
  background-color: color-mix(in srgb, var(--stn-chip-color) 65%, transparent);
346
322
  filter: none;
347
323
  }
@@ -173,6 +173,26 @@
173
173
  border-bottom: var(--stn-size-1, 1px) solid var(--stn-feedback-error);
174
174
  }
175
175
 
176
+ /* 3-5. Translucent (반투명 — 배경 비침 & 블러) */
177
+ .stn-dropdown.translucent>.selected {
178
+ border: var(--stn-size-1, 1px) solid var(--stn-input-border);
179
+ background-color: var(--stn-dropdown-bg-translucent, var(--stn-opacity-black-25));
180
+ color: var(--stn-input-fg, var(--stn-text-primary));
181
+ backdrop-filter: blur(var(--stn-dropdown-translucent-blur, 8px));
182
+ -webkit-backdrop-filter: blur(var(--stn-dropdown-translucent-blur, 8px));
183
+ }
184
+
185
+ .stn-dropdown.translucent:hover:not(.is-disabled)>.selected {
186
+ border-color: var(--stn-border-strong, var(--stn-gray-400));
187
+ background-color: color-mix(in srgb, var(--stn-dropdown-bg-translucent, var(--stn-opacity-black-25)) 75%, var(--stn-static-white) 25%);
188
+ }
189
+
190
+ .stn-dropdown.translucent.on>.selected,
191
+ .stn-dropdown.translucent:focus-within>.selected {
192
+ border: var(--stn-input-focus);
193
+ background-color: color-mix(in srgb, var(--stn-dropdown-bg-translucent, var(--stn-opacity-black-25)) 80%, var(--stn-primary) 20%);
194
+ }
195
+
176
196
  /* ==========================================================================
177
197
  4. Prop: state (Normal · Focus/Open · Disabled · Error · ReadOnly)
178
198
  ========================================================================== */
@@ -36,7 +36,7 @@
36
36
  }
37
37
 
38
38
  /* Size 스케일 — STN 표준 규격: xs · sm · md(기본) · lg · xl */
39
- /* xs — 18px */
39
+ /* xs — 20px (bordered) */
40
40
  .stn-status-dot.xs {
41
41
  font-size: var(--stn-font-size-11, 11px);
42
42
  gap: var(--stn-space-4, 4px);
@@ -46,14 +46,14 @@
46
46
  height: var(--stn-size-6, 6px);
47
47
  }
48
48
  .stn-status-dot.xs.bordered {
49
- height: var(--stn-size-18, 18px);
49
+ height: var(--stn-size-20, 20px);
50
50
  padding: 0 var(--stn-space-6, 6px);
51
51
  }
52
52
  .stn-status-dot.xs .stn-status-dot__count {
53
53
  font-size: var(--stn-font-size-10, 10px);
54
54
  }
55
55
 
56
- /* sm — 20px */
56
+ /* sm — 24px (bordered: 버튼 sm과 1:1 일치) */
57
57
  .stn-status-dot.sm {
58
58
  font-size: var(--stn-font-size-12, 12px);
59
59
  gap: var(--stn-space-4, 4px);
@@ -63,14 +63,14 @@
63
63
  height: var(--stn-size-7, 7px);
64
64
  }
65
65
  .stn-status-dot.sm.bordered {
66
- height: var(--stn-size-20, 20px);
67
- padding: 0 var(--stn-space-6, 6px);
66
+ height: var(--stn-size-24, 24px);
67
+ padding: 0 var(--stn-space-8, 8px);
68
68
  }
69
69
  .stn-status-dot.sm .stn-status-dot__count {
70
70
  font-size: var(--stn-font-size-11, 11px);
71
71
  }
72
72
 
73
- /* md — 24px (기본) */
73
+ /* md — 32px (기본 · bordered: 버튼 md와 1:1 일치) */
74
74
  .stn-status-dot.md {
75
75
  font-size: var(--stn-font-size-13, 13px);
76
76
  gap: var(--stn-space-6, 6px);
@@ -80,14 +80,14 @@
80
80
  height: var(--stn-size-8, 8px);
81
81
  }
82
82
  .stn-status-dot.md.bordered {
83
- height: var(--stn-size-24, 24px);
84
- padding: 0 var(--stn-space-8, 8px);
83
+ height: var(--stn-size-32, 32px);
84
+ padding: 0 var(--stn-space-10, 10px);
85
85
  }
86
86
  .stn-status-dot.md .stn-status-dot__count {
87
87
  font-size: var(--stn-font-size-12, 12px);
88
88
  }
89
89
 
90
- /* lg — 28px */
90
+ /* lg — 40px (bordered: 버튼 lg와 1:1 일치) */
91
91
  .stn-status-dot.lg {
92
92
  font-size: var(--stn-font-size-14, 14px);
93
93
  gap: var(--stn-space-8, 8px);
@@ -97,14 +97,14 @@
97
97
  height: var(--stn-size-10, 10px);
98
98
  }
99
99
  .stn-status-dot.lg.bordered {
100
- height: var(--stn-size-28, 28px);
101
- padding: 0 var(--stn-space-10, 10px);
100
+ height: var(--stn-size-40, 40px);
101
+ padding: 0 var(--stn-space-12, 12px);
102
102
  }
103
103
  .stn-status-dot.lg .stn-status-dot__count {
104
104
  font-size: var(--stn-font-size-13, 13px);
105
105
  }
106
106
 
107
- /* xl — 32px */
107
+ /* xl — 48px (bordered) */
108
108
  .stn-status-dot.xl {
109
109
  font-size: var(--stn-font-size-15, 15px);
110
110
  gap: var(--stn-space-8, 8px);
@@ -114,8 +114,8 @@
114
114
  height: var(--stn-size-10, 10px);
115
115
  }
116
116
  .stn-status-dot.xl.bordered {
117
- height: var(--stn-size-32, 32px);
118
- padding: 0 var(--stn-space-12, 12px);
117
+ height: var(--stn-size-48, 48px);
118
+ padding: 0 var(--stn-space-14, 14px);
119
119
  }
120
120
  .stn-status-dot.xl .stn-status-dot__count {
121
121
  font-size: var(--stn-font-size-14, 14px);
@@ -128,13 +128,13 @@
128
128
  .stn-status-dot.gap-md { gap: var(--stn-space-6, 6px); }
129
129
  .stn-status-dot.gap-lg { gap: var(--stn-space-10, 10px); }
130
130
 
131
- /* 단독 테두리 캡슐 모드 (Bordered Dot) */
131
+ /* 단독 테두리 캡슐 모드 (Bordered Dot: 기본 md 32px) */
132
132
  .stn-status-dot.bordered {
133
- height: var(--stn-size-24, 24px);
134
- padding: 0 var(--stn-space-8, 8px);
133
+ height: var(--stn-size-32, 32px);
134
+ padding: 0 var(--stn-space-10, 10px);
135
135
  border-radius: var(--stn-radius-chip-pill, 9999px);
136
- border: 1px solid var(--stn-status-dot-bordered-border);
137
- background-color: var(--stn-layer-bg-card);
136
+ border: 1px solid var(--stn-status-dot-bordered-border, var(--stn-border-subtle));
137
+ background-color: var(--stn-status-dot-bordered-bg, var(--stn-layer-bg-card, transparent));
138
138
  box-sizing: border-box;
139
139
  }
140
140
 
@@ -254,8 +254,8 @@
254
254
  .stn-status-dot-group.bordered {
255
255
  height: var(--stn-size-26, 26px);
256
256
  border-radius: var(--stn-radius-chip-pill, 9999px);
257
- border: 1px solid var(--stn-status-dot-bordered-border);
258
- background-color: var(--stn-layer-bg-card);
257
+ border: 1px solid var(--stn-status-dot-bordered-border, var(--stn-border-subtle));
258
+ background-color: var(--stn-status-dot-bordered-bg, var(--stn-layer-bg-card, transparent));
259
259
  box-shadow: none;
260
260
  overflow: hidden;
261
261
  }
@@ -272,7 +272,7 @@
272
272
  font-weight: var(--stn-font-weight-medium, 500);
273
273
  color: var(--stn-text-primary);
274
274
  user-select: none;
275
- border-right: 1px solid var(--stn-status-dot-bordered-border);
275
+ border-right: 1px solid var(--stn-status-dot-bordered-border, var(--stn-border-subtle));
276
276
  transition: opacity 0.2s ease, background-color 0.15s ease;
277
277
  }
278
278
 
@@ -596,7 +596,7 @@
596
596
  display: inline-flex;
597
597
  align-items: center;
598
598
  justify-content: center;
599
- gap: var(--stn-space-2, 2px);
599
+ gap: var(--stn-severity-badge-gap, var(--stn-space-4, 4px));
600
600
  border-radius: var(--stn-radius-4, 4px);
601
601
  font-family: var(--stn-font-body, Pretendard, sans-serif);
602
602
  line-height: 1.2;
@@ -631,7 +631,7 @@
631
631
  height: var(--stn-severity-badge-height-sm, var(--stn-size-18, 18px));
632
632
  padding: var(--stn-severity-badge-padding-sm, var(--stn-space-2, 2px) var(--stn-space-4, 4px));
633
633
  font-size: var(--stn-font-size-10, 10px);
634
- gap: var(--stn-space-2, 2px);
634
+ gap: var(--stn-severity-badge-gap-sm, var(--stn-space-2, 2px));
635
635
  }
636
636
 
637
637
  .stn-status-severity.sm .stn-status-severity__icon {
@@ -644,7 +644,7 @@
644
644
  height: var(--stn-severity-badge-height-md, var(--stn-size-20, 20px));
645
645
  padding: var(--stn-severity-badge-padding-md, var(--stn-space-4, 4px) var(--stn-space-8, 8px));
646
646
  font-size: var(--stn-font-size-11, 11px);
647
- gap: var(--stn-space-2, 2px);
647
+ gap: var(--stn-severity-badge-gap-md, var(--stn-space-4, 4px));
648
648
  }
649
649
 
650
650
  .stn-status-severity.md .stn-status-severity__icon {
@@ -657,7 +657,7 @@
657
657
  height: var(--stn-severity-badge-height-lg, var(--stn-size-24, 24px));
658
658
  padding: var(--stn-severity-badge-padding-lg, var(--stn-space-4, 4px) var(--stn-space-10, 10px));
659
659
  font-size: var(--stn-font-size-12, 12px);
660
- gap: var(--stn-space-4, 4px);
660
+ gap: var(--stn-severity-badge-gap-lg, var(--stn-space-4, 4px));
661
661
  }
662
662
 
663
663
  .stn-status-severity.lg .stn-status-severity__icon {
@@ -176,9 +176,9 @@
176
176
  display: block;
177
177
  }
178
178
 
179
- /* --- Metric / Extra Info Box Slot --- */
179
+ /* --- Metric / Extra Info Box Slot (@deprecated: StnCard 사용 권장) --- */
180
180
  .stn-toast__metric-box {
181
- background-color: var(--stn-surface-subtle, rgba(0, 0, 0, 0.25));
181
+ background-color: var(--stn-elevation-surface-2);
182
182
  border: 1px solid var(--stn-border-subtle);
183
183
  border-radius: var(--stn-radius-4, 4px);
184
184
  padding: var(--stn-space-8, 8px) var(--stn-space-10, 10px);
@@ -267,6 +267,17 @@
267
267
  text-overflow: ellipsis;
268
268
  }
269
269
 
270
+ /* Widget title size modifiers */
271
+ .stn-widget .stn-widget__title.sm { font-size: var(--stn-font-size-14, 14px); }
272
+ .stn-widget .stn-widget__title.md { font-size: var(--stn-font-size-16, 16px); }
273
+ .stn-widget .stn-widget__title.lg { font-size: var(--stn-font-size-18, 18px); }
274
+
275
+ /* Widget title weight modifiers */
276
+ .stn-widget .stn-widget__title.regular { font-weight: var(--stn-font-weight-regular, 400); }
277
+ .stn-widget .stn-widget__title.medium { font-weight: var(--stn-font-weight-medium, 500); }
278
+ .stn-widget .stn-widget__title.semibold { font-weight: var(--stn-font-weight-semibold, 600); }
279
+ .stn-widget .stn-widget__title.bold { font-weight: var(--stn-font-weight-bold, 700); }
280
+
270
281
  /* 다중 액션 또는 좁은 카드에서 개행을 허용한 경우 (BEM 표준: wrapActions / .stn-widget__head--wrap) */
271
282
  .stn-widget--wrap-actions .stn-widget__head,
272
283
  .stn-widget .stn-widget__head--wrap {
@@ -645,13 +656,34 @@
645
656
  }
646
657
 
647
658
  .stn-widget__body--surface-subtle {
648
- background-color: var(--stn-surface-subtle, var(--stn-widget-footer-well-bg));
659
+ background-color: var(--stn-widget-footer-well-bg);
649
660
  }
650
661
 
662
+ .stn-widget .stn-widget__body.stn-widget__body--no-scroll,
651
663
  .stn-widget__body--no-scroll {
652
664
  overflow: hidden;
653
665
  }
654
666
 
667
+ /* ==========================================================================
668
+ StnWidget Fit Dimensions (fullHeight=false / fullWidth=false)
669
+ ========================================================================== */
670
+ .stn-widget.stn-widget--fit-height {
671
+ height: auto;
672
+ flex-grow: 0;
673
+ }
674
+
675
+ .stn-widget.stn-widget--fit-height > .stn-widget__body {
676
+ height: auto;
677
+ flex: 0 0 auto;
678
+ overflow: visible;
679
+ }
680
+
681
+ .stn-widget.stn-widget--fit-width {
682
+ width: auto;
683
+ max-width: fit-content;
684
+ flex-grow: 0;
685
+ }
686
+
655
687
  /* ==========================================================================
656
688
  StnWidget Header Period Helpers
657
689
  ========================================================================== */
@@ -332,8 +332,8 @@
332
332
  gap: var(--stn-space-8);
333
333
  }
334
334
 
335
- @media (max-width: 1279px) {
336
- /* 태블릿/모바일(column)에서는 본문 컨테이너가 스크롤되어 LNB -> 검색바 -> 테이블 순으로 전체 탐색 가능 */
335
+ @media (max-width: 768px) {
336
+ /* 모바일(column)에서는 본문 컨테이너가 스크롤되어 LNB -> 검색바 -> 테이블 순으로 전체 탐색 가능 */
337
337
  .stn-layer-1__body > .stn-container {
338
338
  overflow-y: auto !important;
339
339
  overflow-x: hidden;
@@ -350,7 +350,7 @@
350
350
  flex-shrink: 0;
351
351
  }
352
352
 
353
- /* 모바일(1280px 미만) 토글 버튼: 세로 아코디언 방향(위/아래)에 맞춰 90도 회전 */
353
+ /* 모바일(768px 이하) 토글 버튼: 세로 아코디언 방향(위/아래)에 맞춰 90도 회전 */
354
354
  .stn-list-lnb .stn-list-lnb__toggle-btn {
355
355
  transform: rotate(90deg);
356
356
  transition: transform 0.2s ease;
@@ -385,15 +385,15 @@
385
385
  justify-content: space-between !important;
386
386
  }
387
387
 
388
- /* 테이블 영역 모바일 최소 높이 보장 */
389
- .stn-layer-1__body .stn-container > .stn-stack > .stn-stack {
388
+ /* 테이블 영역 모바일 최소 높이 보장 (LNB 목록 레이아웃 전용) */
389
+ :is(.stn-layer-1:has(.stn-list-lnb), .stn-layer-1__body:has(.stn-list-lnb)) .stn-container > .stn-stack > .stn-stack {
390
390
  height: auto !important;
391
391
  min-height: var(--stn-layout-list-mobile-table-min-height);
392
392
  }
393
393
  }
394
394
 
395
- /* 데스크톱(lg ≥ 1280px): 기본 264px 고정, 접힘 시 56px 레일 */
396
- @media (min-width: 1280px) {
395
+ /* 데스크톱·태블릿(≥ 769px): 기본 264px 고정, 접힘 시 56px 레일 */
396
+ @media (min-width: 769px) {
397
397
  .stn-list-lnb {
398
398
  width: var(--stn-list-lnb-width);
399
399
  height: 100%;
@@ -64,6 +64,7 @@
64
64
  --stn-input-focus-bg: color-mix(in srgb, var(--stn-blue-250) 10%, transparent);
65
65
  --stn-input-focus-fg: var(--stn-blue-300);
66
66
  --stn-input-placeholder: var(--stn-gray-600);
67
+ --stn-dropdown-bg-translucent: var(--stn-opacity-black-25);
67
68
  --stn-label-prefix-label-bg: var(--stn-gray-800);
68
69
  --stn-tooltip-bg-neutral: var(--stn-gray-700);
69
70
  --stn-tooltip-fg-neutral: var(--stn-static-white);
@@ -376,7 +377,7 @@
376
377
  --stn-scroll-thumb-muted: var(--stn-gray-600);
377
378
  --stn-scroll-thumb-muted-hover: var(--stn-gray-500);
378
379
  --stn-chip-teal: var(--stn-teal-400);
379
- --stn-chip-neutral: var(--stn-gray-500);
380
+ --stn-chip-neutral: var(--stn-gray-400);
380
381
  --stn-chip-fg-contrast: var(--stn-gray-950);
381
382
  --stn-chip-accent-mint: var(--stn-teal-300);
382
383
  --stn-chip-accent-sky: var(--stn-blue-300);
@@ -488,7 +489,7 @@
488
489
  --stn-widget-footer-well-border: transparent;
489
490
  --stn-widget-chevron: var(--stn-gray-250);
490
491
  --stn-widget-overlay: color-mix(in srgb, var(--stn-gray-850) 92%, transparent);
491
- --stn-widget-overlay-border: var(--stn-gray-750);
492
+ --stn-widget-overlay-border: var(--stn-gray-700);
492
493
  --stn-widget-overlay-scrim: color-mix(in srgb, var(--stn-gray-850) 28%, transparent);
493
494
  --stn-widget-overlay-scrim-border: color-mix(in srgb, var(--stn-static-white) 10%, transparent);
494
495
  --stn-widget-overlay-fade: linear-gradient(115.89deg, color-mix(in srgb, var(--stn-gray-850) 85%, transparent) 0%, color-mix(in srgb, var(--stn-gray-900) 85%, transparent) 50.29%, color-mix(in srgb, var(--stn-gray-950) 85%, transparent) 100%);
@@ -597,6 +598,8 @@
597
598
  --stn-status-flow-step-color: var(--stn-gray-200);
598
599
  --stn-status-flow-connector-color: var(--stn-gray-600);
599
600
  --stn-status-flow-connector-opacity: 0.6;
601
+ --stn-status-dot-bordered-border: var(--stn-border-strong);
602
+ --stn-status-dot-bordered-bg: var(--stn-gray-800);
600
603
  }
601
604
 
602
605
  [data-theme='light'] {
@@ -639,7 +642,7 @@
639
642
  --stn-grade-neutral: var(--stn-gray-400);
640
643
  --stn-icon-fg: var(--stn-gray-600);
641
644
  --stn-icon-fg-muted: var(--stn-gray-400);
642
- --stn-elevation-surface-0: var(--stn-static-white);
645
+ --stn-elevation-surface-0: var(--stn-gray-25);
643
646
  --stn-elevation-surface-1: var(--stn-opacity-black-0);
644
647
  --stn-elevation-surface-2: var(--stn-static-white);
645
648
  --stn-elevation-surface-widget: var(--stn-static-white);
@@ -656,6 +659,7 @@
656
659
  --stn-input-focus-bg: var(--stn-static-white);
657
660
  --stn-input-focus-fg: var(--stn-gray-600);
658
661
  --stn-input-placeholder: var(--stn-gray-400);
662
+ --stn-dropdown-bg-translucent: var(--stn-opacity-white-50);
659
663
  --stn-label-prefix-label-bg: var(--stn-gray-50);
660
664
  --stn-label-prefix-divider: var(--stn-gray-200);
661
665
  --stn-label-prefix-label-color: var(--stn-gray-500);
@@ -730,7 +734,7 @@
730
734
  --stn-table-pill-shadow: 1px 1px 2px color-mix(in srgb, var(--stn-static-black) 10%, transparent);
731
735
  --stn-table-row-hover: var(--stn-gray-25);
732
736
  --stn-table-td-fg: var(--stn-gray-750);
733
- --stn-table-th-bg: var(--stn-gray-50);
737
+ --stn-table-th-bg: var(--stn-gray-75);
734
738
  --stn-table-th-fg: var(--stn-gray-700);
735
739
  --stn-table-th-radius: 4px;
736
740
  --stn-pagination-active-bg: var(--stn-opacity-black-5);
@@ -970,7 +974,7 @@
970
974
  --stn-scroll-thumb-muted: var(--stn-gray-600);
971
975
  --stn-scroll-thumb-muted-hover: var(--stn-gray-500);
972
976
  --stn-chip-teal: var(--stn-teal-500);
973
- --stn-chip-neutral: var(--stn-gray-500);
977
+ --stn-chip-neutral: var(--stn-gray-400);
974
978
  --stn-chip-fg-contrast: var(--stn-gray-950);
975
979
  --stn-chip-accent-mint: var(--stn-teal-300);
976
980
  --stn-chip-accent-sky: var(--stn-blue-300);
@@ -1074,7 +1078,7 @@
1074
1078
  --stn-widget-minor-bg: color-mix(in srgb, var(--stn-yellow-50) 65%, var(--stn-static-white));
1075
1079
  --stn-widget-minor-glow: 0 0 16px 0 color-mix(in srgb, var(--stn-yellow-400) 22%, transparent) inset, 0 2px 8px 0 color-mix(in srgb, var(--stn-yellow-400) 12%, transparent);
1076
1080
  --stn-widget-slot-border: var(--stn-gray-200);
1077
- --stn-widget-slot-bg: var(--stn-gray-50);
1081
+ --stn-widget-slot-bg: color-mix(in srgb, var(--stn-gray-900) 3%, transparent);
1078
1082
  --stn-widget-drag-bg: linear-gradient(281deg, var(--stn-gray-25) 4%, var(--stn-gray-50) 31%, var(--stn-static-white) 61%);
1079
1083
  --stn-widget-drag-shadow: 1px 1px 2px 0 var(--stn-static-white) inset, 2px 2px 4px 0 var(--stn-gray-100), 0 0 2px 0 var(--stn-gray-100);
1080
1084
  --stn-widget-drag-fg: var(--stn-blue-600);
@@ -1191,4 +1195,6 @@
1191
1195
  --stn-status-flow-step-color: var(--stn-gray-800);
1192
1196
  --stn-status-flow-connector-color: var(--stn-gray-400);
1193
1197
  --stn-status-flow-connector-opacity: 0.7;
1198
+ --stn-status-dot-bordered-border: var(--stn-border-subtle);
1199
+ --stn-status-dot-bordered-bg: var(--stn-elevation-surface-2);
1194
1200
  }
@@ -221,6 +221,7 @@
221
221
  --stn-widget-severity-border-width: var(--stn-size-4);
222
222
  --stn-header-breadcrumb-mobile-max-width: var(--stn-size-140);
223
223
  --stn-widget-translucent-blur: var(--stn-size-8);
224
+ --stn-dropdown-translucent-blur: var(--stn-size-8);
224
225
  --stn-widget-overlay-blur: var(--stn-size-4);
225
226
  --stn-widget-severity-blur: var(--stn-size-6);
226
227
  --stn-widget-dot-size: var(--stn-size-8);
@@ -203,6 +203,10 @@
203
203
  --stn-severity-badge-padding-sm: var(--stn-space-2) var(--stn-space-4);
204
204
  --stn-severity-badge-padding-md: var(--stn-space-4) var(--stn-space-8);
205
205
  --stn-severity-badge-padding-lg: var(--stn-space-4) var(--stn-space-10);
206
+ --stn-severity-badge-gap: var(--stn-space-4);
207
+ --stn-severity-badge-gap-sm: var(--stn-space-2);
208
+ --stn-severity-badge-gap-md: var(--stn-space-4);
209
+ --stn-severity-badge-gap-lg: var(--stn-space-4);
206
210
  --stn-widget-padding: var(--stn-space-12);
207
211
  --stn-widget-head-margin-bottom: var(--stn-space-8);
208
212
  --stn-widget-footer-padding: var(--stn-space-8) var(--stn-space-12);
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/stnLayer0Background.ts"],"sourcesContent":["/**\n * Infomap Layer 0 background pattern\n * Light: 41267 · 186876 · 186860 · 202895\n * Dark: 80488 · 35369 · 84014 · 91183\n * @see StnLayer0Background · layouts/stn-layer0-bg.css\n */\n\nexport const STN_LAYER0_BACKGROUND_FIGMA = {\n none: '40000040:41267',\n noneDark: '40000040:80488',\n showroomA: '40000042:186876',\n showroomADark: '40002117:35369',\n showroomB: '40000042:186860',\n showroomBDark: '40000040:84014',\n mapLight: '40000042:202895',\n mapDark: '40000040:91183',\n login: '40004209:78293',\n loginDark: '40004209:78293',\n dashboard: '40004209:78300',\n dashboardDark: '40004209:78300',\n} as const\n\nexport type StnLayer0BackgroundKind = 'color' | 'gradient' | 'image'\n\n/** Figma 예제 프리셋 — color 1종 · gradient 1종 · image 5종 (light/dark 자동 전환) */\nexport type StnLayer0BackgroundPreset = 'none' | 'gradient' | 'showroom-a' | 'showroom-b' | 'map-light' | 'login' | 'dashboard'\n\n/** Doc site · Pub HTML 기준 경로 — 앱에서는 동일 경로 또는 자산 URL로 교체 */\nexport {\n STN_LAYER0_BACKGROUND_ASSET_PATHS,\n STN_LAYER0_BACKGROUND_DEMO_IMAGES,\n} from './stnLayer0BackgroundAssets'\n\nexport const STN_LAYER0_BACKGROUND_INTRO =\n '페이지 최하단 레벨(Level 0)에 위치하는 시스템 바닥면 배경 패턴입니다. 단색 컬러 및 맵·토폴로지 캔버스 배경 이미지를 `StnLayer0BackgroundPreset`으로 손쉽게 적용할 수 있습니다.'\n\nexport const STN_LAYER0_BACKGROUND_VARIANT_ROWS = [\n {\n preset: 'none',\n kind: 'color',\n figma: STN_LAYER0_BACKGROUND_FIGMA.none,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.noneDark,\n note: 'Light gradient · Dark elevation surface-0 (gray-950)',\n },\n {\n preset: 'dashboard',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.dashboard,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.dashboardDark,\n note: 'Dashboard · light/dark pair',\n },\n {\n preset: 'showroom-a',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.showroomA,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.showroomADark,\n note: 'Showroom A · dark logo stage',\n },\n {\n preset: 'showroom-b',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.showroomB,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.showroomBDark,\n note: 'Showroom B · dark + radial vignette',\n },\n {\n preset: 'map-light',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.mapLight,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.mapDark,\n note: 'Map light(+20% white) · Map dark',\n },\n {\n preset: 'login',\n kind: 'image',\n figma: STN_LAYER0_BACKGROUND_FIGMA.login,\n figmaDark: STN_LAYER0_BACKGROUND_FIGMA.loginDark,\n note: 'Login · light/dark pair',\n },\n] as const satisfies ReadonlyArray<{\n preset: StnLayer0BackgroundPreset\n kind: StnLayer0BackgroundKind\n figma: string\n figmaDark: string\n note: string\n}>\n\nexport const STN_LAYER0_BACKGROUND_USAGE = `import {\n StnLayer,\n StnLayer0Background,\n StnLayer0BackgroundPreset,\n DashboardPageScaffold,\n} from '@stn-uiux/pub-ui-react'\n\n/** Map / Topology — wrapClassName만 (맵 배경은 elevation CSS) */\n<DashboardPageScaffold\n shell=\"layer\"\n wrapClassName=\"stn-page--map-bg\"\n gnb={…}\n header={…}\n/>\n\n/** 일반 페이지 — L0 color (default = elevation-surface-0) */\n<StnLayer.Background>\n <StnLayer0Background color=\"default\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n/** Figma image 프리셋 — showroom · map · login */\n<StnLayer.Background>\n <StnLayer0BackgroundPreset variant=\"map-light\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n<StnLayer.Background>\n <StnLayer0BackgroundPreset variant=\"login\" />\n <StnLayer.Content>{/* 본문 */}</StnLayer.Content>\n</StnLayer.Background>\n\n/** 직접 조합 — light/dark 이미지 */\n<StnLayer.Background>\n <StnLayer0Background\n kind=\"image\"\n src=\"/assets/bg-light.png\"\n srcDark=\"/assets/bg-dark.png\"\n />\n <StnLayer.Content>…</StnLayer.Content>\n</StnLayer.Background>`\n\nexport const STN_LAYER0_BACKGROUND_USAGE_HTML = `<!-- L0 background — color / image -->\n<div class=\"stn-elev-0 stn-layer0-bg\">\n <!-- color -->\n <div class=\"stn-layer0-bg color default\" aria-hidden=\"true\"></div>\n\n <!-- 또는 image -->\n <div\n class=\"stn-layer0-bg image\"\n style=\"--stn-layer0-bg-image: url('/assets/bg-light.png')\"\n aria-hidden=\"true\"\n ></div>\n\n <main class=\"stn-elev-1\"><!-- L1 content --></main>\n</div>`\n\nexport const STN_LAYER0_MAP_LIGHT_OVERLAY = 0.2\n\n/** Patterns → Background playground 프리셋 (UI 라벨 · 내부 variant) */\nexport type StnLayer0BackgroundPlaygroundPresetId =\n | 'dashboard'\n | 'color'\n | 'gradient'\n | 'map'\n | 'topology'\n | 'none'\n\nexport const STN_LAYER0_BACKGROUND_PLAYGROUND_PRESETS: {\n id: StnLayer0BackgroundPlaygroundPresetId\n label: string\n asset: string\n variant?: StnLayer0BackgroundPreset\n}[] = [\n { id: 'dashboard', label: 'dashboard', asset: '대시보드 배경 (dashboard-light / dark)', variant: 'dashboard' },\n { id: 'color', label: 'color', asset: '단색 테마 배경 (solid default)', variant: 'none' },\n { id: 'gradient', label: 'gradient', asset: '공식 앰비언트 그라데이션 (워시/심도)', variant: 'gradient' },\n { id: 'map', label: 'map', asset: 'GIS 지도 배경 (map-light)', variant: 'map-light' },\n { id: 'topology', label: 'topology', asset: '토폴로지 배경 (showroom-b)', variant: 'showroom-b' },\n { id: 'none', label: 'none', asset: 'L0 배경 없음 (외부 캔버스 전용)', variant: 'none' },\n]\n"],"mappings":";AAOO,IAAM,8BAA8B;AAAA,EACzC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,WAAW;AAAA,EACX,eAAe;AAAA,EACf,WAAW;AAAA,EACX,eAAe;AAAA,EACf,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,WAAW;AAAA,EACX,eAAe;AACjB;AAaO,IAAM,8BACX;AAEK,IAAM,qCAAqC;AAAA,EAChD;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO,4BAA4B;AAAA,IACnC,WAAW,4BAA4B;AAAA,IACvC,MAAM;AAAA,EACR;AACF;AAQO,IAAM,8BAA8B;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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0CpC,IAAM,mCAAmC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAezC,IAAM,+BAA+B;AAWrC,IAAM,2CAKP;AAAA,EACJ,EAAE,IAAI,aAAa,OAAO,aAAa,OAAO,kEAAoC,SAAS,YAAY;AAAA,EACvG,EAAE,IAAI,SAAS,OAAO,SAAS,OAAO,0DAA4B,SAAS,OAAO;AAAA,EAClF,EAAE,IAAI,YAAY,OAAO,YAAY,OAAO,oGAAyB,SAAS,WAAW;AAAA,EACzF,EAAE,IAAI,OAAO,OAAO,OAAO,OAAO,6CAAyB,SAAS,YAAY;AAAA,EAChF,EAAE,IAAI,YAAY,OAAO,YAAY,OAAO,sDAAwB,SAAS,aAAa;AAAA,EAC1F,EAAE,IAAI,QAAQ,OAAO,QAAQ,OAAO,+EAAwB,SAAS,OAAO;AAC9E;","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' | 'transparent'\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":[]}
@@ -1,9 +0,0 @@
1
- // src/data/stnPackageVersion.ts
2
- var STN_UI_VERSION = "0.1.67";
3
- var STN_UI_VERSION_LABEL = "v0.1.67";
4
-
5
- export {
6
- STN_UI_VERSION,
7
- STN_UI_VERSION_LABEL
8
- };
9
- //# sourceMappingURL=chunk-OGCKPHGD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/stnPackageVersion.ts"],"sourcesContent":["/** Package version constants */\nexport const STN_UI_VERSION = '0.1.67'\nexport const STN_UI_VERSION_LABEL = 'v0.1.67'\n"],"mappings":";AACO,IAAM,iBAAiB;AACvB,IAAM,uBAAuB;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/data/stnLayer0BackgroundAssets.ts"],"sourcesContent":["/**\n * L0 preset images — Hosted on STN Official Vercel CDN for zero-setup & instant loading.\n */\nexport const STN_CDN_ASSET_BASE = 'https://stn-design.vercel.app/images/layer0'\n\nexport const STN_LAYER0_BACKGROUND_DEMO_IMAGES = {\n dashboard: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardLight: `${STN_CDN_ASSET_BASE}/dashboard-light.png`,\n dashboardDark: `${STN_CDN_ASSET_BASE}/dashboard-dark.png`,\n showroomA: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomALight: `${STN_CDN_ASSET_BASE}/showroom-a-light.png`,\n showroomADark: `${STN_CDN_ASSET_BASE}/showroom-a-dark.png`,\n showroomB: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBLight: `${STN_CDN_ASSET_BASE}/showroom-b-light.png`,\n showroomBDark: `${STN_CDN_ASSET_BASE}/showroom-b-dark.png`,\n mapLight: `${STN_CDN_ASSET_BASE}/map-light.png`,\n mapDark: `${STN_CDN_ASSET_BASE}/map-dark.png`,\n login: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginLight: `${STN_CDN_ASSET_BASE}/login-light.png`,\n loginDark: `${STN_CDN_ASSET_BASE}/login-dark.png`,\n} as const\n\n/** Pub CSS @assets 경로 — HTML·vanilla 소비자용 */\nexport const STN_LAYER0_BACKGROUND_ASSET_PATHS = {\n dashboard: '@assets/images/layer0/dashboard-light.png',\n dashboardLight: '@assets/images/layer0/dashboard-light.png',\n dashboardDark: '@assets/images/layer0/dashboard-dark.png',\n showroomA: '@assets/images/layer0/showroom-a-light.png',\n showroomALight: '@assets/images/layer0/showroom-a-light.png',\n showroomADark: '@assets/images/layer0/showroom-a-dark.png',\n showroomB: '@assets/images/layer0/showroom-b-light.png',\n showroomBLight: '@assets/images/layer0/showroom-b-light.png',\n showroomBDark: '@assets/images/layer0/showroom-b-dark.png',\n mapLight: '@assets/images/layer0/map-light.png',\n mapDark: '@assets/images/layer0/map-dark.png',\n login: '@assets/images/layer0/login-light.png',\n loginLight: '@assets/images/layer0/login-light.png',\n loginDark: '@assets/images/layer0/login-dark.png',\n} as const\n"],"mappings":";AAGO,IAAM,qBAAqB;AAE3B,IAAM,oCAAoC;AAAA,EAC/C,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,WAAW,GAAG,kBAAkB;AAAA,EAChC,gBAAgB,GAAG,kBAAkB;AAAA,EACrC,eAAe,GAAG,kBAAkB;AAAA,EACpC,UAAU,GAAG,kBAAkB;AAAA,EAC/B,SAAS,GAAG,kBAAkB;AAAA,EAC9B,OAAO,GAAG,kBAAkB;AAAA,EAC5B,YAAY,GAAG,kBAAkB;AAAA,EACjC,WAAW,GAAG,kBAAkB;AAClC;AAGO,IAAM,oCAAoC;AAAA,EAC/C,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,UAAU;AAAA,EACV,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,WAAW;AACb;","names":[]}