@stn-uiux/pub-ui 0.1.59 → 0.1.60

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 (44) hide show
  1. package/dist/{chunk-36BAGMYT.js → chunk-2ZYBBVBT.js} +53 -28
  2. package/dist/chunk-2ZYBBVBT.js.map +1 -0
  3. package/dist/{chunk-JPILTFLI.js → chunk-3RYAWLME.js} +2 -2
  4. package/dist/{chunk-DNMZJS65.js → chunk-IOBNIUK3.js} +2 -2
  5. package/dist/{chunk-DNMZJS65.js.map → chunk-IOBNIUK3.js.map} +1 -1
  6. package/dist/{chunk-EQTZA7I2.js → chunk-NHYZ7AWK.js} +2 -1
  7. package/dist/{chunk-EQTZA7I2.js.map → chunk-NHYZ7AWK.js.map} +1 -1
  8. package/dist/{chunk-XEG4WDUD.js → chunk-Q4QXONXL.js} +2 -2
  9. package/dist/{chunk-SKZOEF3H.js → chunk-XQ7UUG7Y.js} +2 -2
  10. package/dist/{chunk-H4ZJQ5YW.js → chunk-YMWHZNBT.js} +2 -2
  11. package/dist/cli.js +5 -5
  12. package/dist/data/index.js +7 -7
  13. package/dist/data/stnBreadcrumb.js +3 -3
  14. package/dist/data/stnHeader.js +3 -3
  15. package/dist/data/stnLayout.d.ts +3 -3
  16. package/dist/data/stnLayout.js +1 -1
  17. package/dist/data/stnSideNavItem.js +3 -3
  18. package/dist/data/stnSystemIcons.js +2 -2
  19. package/dist/data/stnSystemIconsData.generated.js +1 -1
  20. package/dist/data/stnTable.d.ts +1 -1
  21. package/dist/data/stnTable.js +1 -1
  22. package/dist/index.js +7 -7
  23. package/package.json +1 -1
  24. package/styles/@assets/svg/system/line/chevron-left.svg +3 -0
  25. package/styles/components/stn-label-prefix.css +1 -0
  26. package/styles/components/stn-popup.css +1 -1
  27. package/styles/components/stn-status.css +3 -5
  28. package/styles/components/stn-table.css +77 -11
  29. package/styles/components/stn-widget.css +16 -8
  30. package/styles/layouts/stn-container.css +6 -11
  31. package/styles/layouts/stn-layer1-content.css +63 -86
  32. package/styles/patterns/stn-section-side.css +16 -30
  33. package/styles/patterns/stn-tree.css +96 -73
  34. package/styles/tokens/stn-colors-semantic.css +2 -2
  35. package/styles/tokens/stn-radius-semantic.css +11 -0
  36. package/styles/tokens/stn-size-semantic.css +31 -4
  37. package/styles/tokens/stn-size.css +2 -0
  38. package/styles/tokens/stn-spacing-semantic.css +7 -3
  39. package/styles/tokens/stn-typography-semantic.css +10 -0
  40. package/dist/chunk-36BAGMYT.js.map +0 -1
  41. /package/dist/{chunk-JPILTFLI.js.map → chunk-3RYAWLME.js.map} +0 -0
  42. /package/dist/{chunk-XEG4WDUD.js.map → chunk-Q4QXONXL.js.map} +0 -0
  43. /package/dist/{chunk-SKZOEF3H.js.map → chunk-XQ7UUG7Y.js.map} +0 -0
  44. /package/dist/{chunk-H4ZJQ5YW.js.map → chunk-YMWHZNBT.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SYSTEM_ICON_DATA_URLS
3
- } from "./chunk-EQTZA7I2.js";
3
+ } from "./chunk-NHYZ7AWK.js";
4
4
 
5
5
  // src/data/stnSystemIcons.ts
6
6
  function styleFromSlug(slug) {
@@ -195,4 +195,4 @@ export {
195
195
  systemIconSrc,
196
196
  resolveSystemIconSrcFromName
197
197
  };
198
- //# sourceMappingURL=chunk-XEG4WDUD.js.map
198
+ //# sourceMappingURL=chunk-Q4QXONXL.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  systemIconSrc
3
- } from "./chunk-XEG4WDUD.js";
3
+ } from "./chunk-Q4QXONXL.js";
4
4
 
5
5
  // src/data/stnBreadcrumb.ts
6
6
  var STN_BREADCRUMB_FIGMA = "40002093:31845";
@@ -57,4 +57,4 @@ export {
57
57
  STN_BREADCRUMB_DEMO_ITEMS,
58
58
  STN_BREADCRUMB_PARTS
59
59
  };
60
- //# sourceMappingURL=chunk-SKZOEF3H.js.map
60
+ //# sourceMappingURL=chunk-XQ7UUG7Y.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  systemIconSrc
3
- } from "./chunk-XEG4WDUD.js";
3
+ } from "./chunk-Q4QXONXL.js";
4
4
 
5
5
  // src/data/stnSideNavItem.ts
6
6
  var STN_SIDE_NAV_ITEM_INTRO = '\uC0AC\uC774\uB4DC\uBC14 \uBA54\uB274 \uD589 \u2014 Figma `menu`(184:63009). `StnSideNavItem` + `.stn-side-nav-item`. \uD3BC\uCE68(Default) \xB7 \uC811\uD798(Collapsed) \xB7 2depth(`variant="sub"`).';
@@ -33,4 +33,4 @@ export {
33
33
  STN_SIDE_NAV_SUB_ICON,
34
34
  STN_SIDE_NAV_ITEM_STATES
35
35
  };
36
- //# sourceMappingURL=chunk-H4ZJQ5YW.js.map
36
+ //# sourceMappingURL=chunk-YMWHZNBT.js.map
package/dist/cli.js CHANGED
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-JBOXRPR7.js";
11
11
  import {
12
12
  STN_TABLE_REACT_EXAMPLE
13
- } from "./chunk-DNMZJS65.js";
13
+ } from "./chunk-IOBNIUK3.js";
14
14
  import {
15
15
  STN_TEXT_FIELD_USAGE
16
16
  } from "./chunk-NB4NJQYE.js";
@@ -36,7 +36,7 @@ import {
36
36
  import "./chunk-XBFXX3D6.js";
37
37
  import {
38
38
  STN_LAYOUT_LIST_VIEW_USAGE
39
- } from "./chunk-36BAGMYT.js";
39
+ } from "./chunk-2ZYBBVBT.js";
40
40
  import {
41
41
  STN_LOADING_SKELETON_USAGE
42
42
  } from "./chunk-5BGXBJXN.js";
@@ -45,7 +45,7 @@ import {
45
45
  } from "./chunk-LKVTW54X.js";
46
46
  import {
47
47
  STN_HEADER_USAGE
48
- } from "./chunk-JPILTFLI.js";
48
+ } from "./chunk-3RYAWLME.js";
49
49
  import "./chunk-BYGKJSDN.js";
50
50
  import {
51
51
  STN_DATE_PICKER_USAGE
@@ -54,8 +54,8 @@ import "./chunk-5F63CMM7.js";
54
54
  import {
55
55
  STN_ALERT_CENTER_USAGE
56
56
  } from "./chunk-2WKT7X65.js";
57
- import "./chunk-XEG4WDUD.js";
58
- import "./chunk-EQTZA7I2.js";
57
+ import "./chunk-Q4QXONXL.js";
58
+ import "./chunk-NHYZ7AWK.js";
59
59
 
60
60
  // src/cli/index.ts
61
61
  import { createRequire } from "module";
@@ -40,7 +40,7 @@ import {
40
40
  STN_SIDE_NAV_ITEM_INTRO,
41
41
  STN_SIDE_NAV_ITEM_STATES,
42
42
  STN_SIDE_NAV_SUB_ICON
43
- } from "../chunk-H4ZJQ5YW.js";
43
+ } from "../chunk-YMWHZNBT.js";
44
44
  import {
45
45
  STN_SIZE_INTRO,
46
46
  STN_SIZE_ROWS,
@@ -352,7 +352,7 @@ import {
352
352
  STN_TABLE_TH_CHECK_EXAMPLE,
353
353
  STN_TABLE_TH_CHECK_FIGMA,
354
354
  STN_TABLE_TH_LABEL_FIGMA
355
- } from "../chunk-DNMZJS65.js";
355
+ } from "../chunk-IOBNIUK3.js";
356
356
  import {
357
357
  STN_TEXT_FIELD_FIGMA,
358
358
  STN_TEXT_FIELD_HTML,
@@ -450,7 +450,7 @@ import {
450
450
  applyLnbSideToModifiers,
451
451
  pubContentAreaClasses,
452
452
  pubLayoutRegionClass
453
- } from "../chunk-36BAGMYT.js";
453
+ } from "../chunk-2ZYBBVBT.js";
454
454
  import {
455
455
  STN_LOADING_SKELETON_COLORS,
456
456
  STN_LOADING_SKELETON_INTRO,
@@ -476,7 +476,7 @@ import {
476
476
  STN_HEADER_USAGE_HTML,
477
477
  STN_HEADER_VARIANT_ROWS,
478
478
  STN_SYSTEM_CHIP_DEMO
479
- } from "../chunk-JPILTFLI.js";
479
+ } from "../chunk-3RYAWLME.js";
480
480
  import {
481
481
  STN_FEEDBACK_BY_KIND,
482
482
  STN_FEEDBACK_SEMANTIC_ROWS,
@@ -526,17 +526,17 @@ import {
526
526
  STN_BREADCRUMB_ICON_SRC,
527
527
  STN_BREADCRUMB_INTRO,
528
528
  STN_BREADCRUMB_PARTS
529
- } from "../chunk-SKZOEF3H.js";
529
+ } from "../chunk-XQ7UUG7Y.js";
530
530
  import {
531
531
  STN_SYSTEM_ICON_INTRO,
532
532
  STN_SYSTEM_ICON_ROWS,
533
533
  resolveSystemIconSrcFromName,
534
534
  systemIconPublicPath,
535
535
  systemIconSrc
536
- } from "../chunk-XEG4WDUD.js";
536
+ } from "../chunk-Q4QXONXL.js";
537
537
  import {
538
538
  SYSTEM_ICON_DATA_URLS
539
- } from "../chunk-EQTZA7I2.js";
539
+ } from "../chunk-NHYZ7AWK.js";
540
540
  import {
541
541
  STN_BREAKPOINT_INTRO,
542
542
  STN_BREAKPOINT_MEDIA,
@@ -5,9 +5,9 @@ import {
5
5
  STN_BREADCRUMB_ICON_SRC,
6
6
  STN_BREADCRUMB_INTRO,
7
7
  STN_BREADCRUMB_PARTS
8
- } from "../chunk-SKZOEF3H.js";
9
- import "../chunk-XEG4WDUD.js";
10
- import "../chunk-EQTZA7I2.js";
8
+ } from "../chunk-XQ7UUG7Y.js";
9
+ import "../chunk-Q4QXONXL.js";
10
+ import "../chunk-NHYZ7AWK.js";
11
11
  export {
12
12
  STN_BREADCRUMB_DEMO_ITEMS,
13
13
  STN_BREADCRUMB_FIGMA,
@@ -6,9 +6,9 @@ import {
6
6
  STN_HEADER_USAGE_HTML,
7
7
  STN_HEADER_VARIANT_ROWS,
8
8
  STN_SYSTEM_CHIP_DEMO
9
- } from "../chunk-JPILTFLI.js";
10
- import "../chunk-XEG4WDUD.js";
11
- import "../chunk-EQTZA7I2.js";
9
+ } from "../chunk-3RYAWLME.js";
10
+ import "../chunk-Q4QXONXL.js";
11
+ import "../chunk-NHYZ7AWK.js";
12
12
  export {
13
13
  STN_HEADER_INTRO,
14
14
  STN_HEADER_PAGE_TITLE_DEMO,
@@ -11,8 +11,8 @@ declare const STN_LAYOUT_PLAYGROUND_TABS: readonly {
11
11
  shellProps: string;
12
12
  assemble: string;
13
13
  }[];
14
- declare const STN_LAYOUT_LIST_VIEW_INTRO = "List view\uB294 \uBC30\uACBD \u00B7 Side Navigation\u00B7\uD398\uC774\uC9C0 \uD5E4\uB354 \u00B7 \uD2B8\uB9AC LNB \u00B7 \uAC80\uC0C9 \u00B7 \uD45C\uB85C \uAD6C\uC131\uB429\uB2C8\uB2E4. `ListPageScaffold`\uC5D0 gnb \u00B7 header \u00B7 lnb \u00B7 search \u00B7 children(\uD45C) \uC2AC\uB86F\uB9CC \uB118\uAE30\uBA74 \uB429\uB2C8\uB2E4. Playground\uC5D0\uC11C \uC635\uC158\uC744 \uACE0\uB978 \uB4A4 \uC0DD\uC131\uB41C React/HTML \uCF54\uB4DC\uB97C \uBCF5\uC0AC\uD558\uC138\uC694.";
15
- /** 라이브러리 내부 조립 참고 — 제품 화면은 `STN_LAYOUT_LIST_VIEW_USAGE`(`ListPageScaffold`)만 사용 */
14
+ declare const STN_LAYOUT_LIST_VIEW_INTRO = "List view\uB294 \uBC30\uACBD \u00B7 Side Navigation \u00B7 \uD398\uC774\uC9C0 \uD5E4\uB354 \u00B7 \uD2B8\uB9AC LNB \u00B7 \uAC80\uC0C9 \u00B7 \uD45C\uB85C \uAD6C\uC131\uB429\uB2C8\uB2E4. StnLayerShell \uC544\uB798 StnContainer + StnStack\uC73C\uB85C \uB808\uC774\uC544\uC6C3\uC744 \uD22C\uBA85\uD558\uAC8C \uC870\uB9BD\uD569\uB2C8\uB2E4. Playground\uC5D0\uC11C \uC635\uC158\uC744 \uACE0\uB978 \uB4A4 \uC0DD\uC131\uB41C React/HTML \uCF54\uB4DC\uB97C \uBCF5\uC0AC\uD558\uC138\uC694.";
15
+ /** 라이브러리 내부 조립 참고 — 제품 화면은 `STN_LAYOUT_LIST_VIEW_USAGE` 참고 */
16
16
  declare 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 \uC548 \u2014 L1 listview \uADF8\uB9AC\uB4DC\uB9CC (\uC774\uC911 L0/L2 \uC5C6\uC74C) */\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 \u00B7 SearchButton */}</StnSearchRequirementBar>\n }\n >\n <StnTable summary=\"\uBAA9\uB85D\" />\n </StnListViewLayout>\n </StnLayerShell>\n )\n}";
17
17
  /** List view 문서 탭 */
18
18
  type StnLayoutListLayerTabId = 'live' | 'l0' | 'l1' | 'l2';
@@ -20,7 +20,7 @@ declare const STN_LAYOUT_LIST_LAYER_TABS: {
20
20
  id: StnLayoutListLayerTabId;
21
21
  label: string;
22
22
  }[];
23
- declare 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 \u00B7 SearchButton */}</StnSearchRequirementBar>\n }\n >\n <StnTable\n summary=\"\uCD1D 128\uAC1C (1 to 20)\"\n footerCenter={<StnPagination page={1} count={8} />}\n footerRight={\n <>\n <StnButton size=\"md\">\uB4F1\uB85D</StnButton>\n <StnButton size=\"md\" variant=\"ghost\">\uC218\uC815</StnButton>\n </>\n }\n >\n <StnTable.Grid>{/* \u2026 */}</StnTable.Grid>\n </StnTable>\n </ListPageScaffold>\n )\n}";
23
+ declare const STN_LAYOUT_LIST_VIEW_USAGE = "import {\n StnLayerShell,\n StnContainer,\n StnStack,\n StnHeader,\n StnSideNavigation,\n StnSectionSide,\n StnTree,\n StnSearchRequirementBar,\n StnTable,\n StnPagination,\n StnButton,\n} from '@stn-uiux/pub-ui-react'\n\nexport function InterfaceListPage() {\n return (\n <StnLayerShell\n lnbSide=\"left\"\n gnb={<StnSideNavigation collapsed />}\n header={<StnHeader variant=\"page\" />}\n >\n {/* 2\uB2E8\uACC4: \uCD5C\uC0C1\uC704 \uBCF8\uBB38 \uCEE8\uD14C\uC774\uB108 */}\n <StnContainer maxWidth={false}>\n {/* 3\uB2E8\uACC4: \uD0DC\uBE14\uB9BF/\uBAA8\uBC14\uC77C(<1280px)=\uC138\uB85C \uC313\uAE30 / \uB370\uC2A4\uD06C\uD1B1(lg \u2265 1280px)=\uAC00\uB85C 2\uBD84\uD560 */}\n <StnStack direction={{ xs: 'column', lg: 'row' }} spacing={2}>\n {/* [LNB] \uBAA8\uBC14\uC77C: \uC0C1\uB2E8 full-width / \uB370\uC2A4\uD06C\uD1B1: 264px \uACE0\uC815 (StnSectionSide CSS) */}\n <aside style={{ display: 'flex', flexDirection: 'column' }}>\n <StnSectionSide fill fullWidth>\n <StnTree size=\"md\" nodes={treeNodes} />\n </StnSectionSide>\n </aside>\n\n {/* [\uC6B0\uCE21 \uBCF8\uBB38] \uAC80\uC0C9\uBC14 + \uD45C \uB370\uC774\uD130 \uADF8\uB9AC\uB4DC \uC138\uB85C \uC2A4\uD0DD */}\n <StnStack\n direction=\"column\"\n spacing={2}\n style={{ flex: 1, minWidth: 0, minHeight: 0 }}\n >\n <StnSearchRequirementBar>\n {/* Fields \u00B7 SearchButton \u00B7 Export */}\n </StnSearchRequirementBar>\n\n <StnTable\n fill\n trackVisited\n summary=\"\uCD1D 128\uAC1C (1 to 20)\"\n footerCenter={<StnPagination page={1} count={8} />}\n footerRight={\n <>\n <StnButton size=\"md\" variant=\"contained\">\uB4F1\uB85D</StnButton>\n <StnButton size=\"md\" variant=\"ghost\">\uC218\uC815</StnButton>\n </>\n }\n >\n <StnTable.Grid>{/* StnTable.Head + Body */}</StnTable.Grid>\n </StnTable>\n </StnStack>\n </StnStack>\n </StnContainer>\n </StnLayerShell>\n )\n}";
24
24
  declare const STN_LAYOUT_MAP_DASHBOARD_INTRO = "\uB300\uC2DC\uBCF4\uB4DC\uB294 L0 \uBC30\uACBD \u00B7 L1(header \uD06C\uB86C + content \uBCF8\uBB38 \uB2E8 \uD558\uB098) \u00B7 L2 \uBAA8\uB2EC\uC785\uB2C8\uB2E4. \uBCF8\uBB38\uC740 `layer1` \uC2AC\uB86F\uC774 \uC544\uB2C8\uB77C `left`/`right`/`children`\uC73C\uB85C \uC870\uB9BD\uD569\uB2C8\uB2E4. `DashboardPageScaffold` (type=\"map\" | \"topology\" | \"widget-grid\").";
25
25
  /** Map / Dashboard 문서 탭 — List view와 동일 층 모델 */
26
26
  type StnLayoutMapLayerTabId = StnLayoutListLayerTabId;
@@ -27,7 +27,7 @@ import {
27
27
  applyLnbSideToModifiers,
28
28
  pubContentAreaClasses,
29
29
  pubLayoutRegionClass
30
- } from "../chunk-36BAGMYT.js";
30
+ } from "../chunk-2ZYBBVBT.js";
31
31
  export {
32
32
  STN_ALERT_CENTER_PAGE_SCAFFOLD_USAGE,
33
33
  STN_LAYER_SHELL_USAGE,
@@ -3,9 +3,9 @@ import {
3
3
  STN_SIDE_NAV_ITEM_INTRO,
4
4
  STN_SIDE_NAV_ITEM_STATES,
5
5
  STN_SIDE_NAV_SUB_ICON
6
- } from "../chunk-H4ZJQ5YW.js";
7
- import "../chunk-XEG4WDUD.js";
8
- import "../chunk-EQTZA7I2.js";
6
+ } from "../chunk-YMWHZNBT.js";
7
+ import "../chunk-Q4QXONXL.js";
8
+ import "../chunk-NHYZ7AWK.js";
9
9
  export {
10
10
  STN_NAV_MENU_SUB_ICON,
11
11
  STN_SIDE_NAV_ITEM_INTRO,
@@ -4,10 +4,10 @@ import {
4
4
  resolveSystemIconSrcFromName,
5
5
  systemIconPublicPath,
6
6
  systemIconSrc
7
- } from "../chunk-XEG4WDUD.js";
7
+ } from "../chunk-Q4QXONXL.js";
8
8
  import {
9
9
  SYSTEM_ICON_DATA_URLS
10
- } from "../chunk-EQTZA7I2.js";
10
+ } from "../chunk-NHYZ7AWK.js";
11
11
  export {
12
12
  STN_SYSTEM_ICON_INTRO,
13
13
  STN_SYSTEM_ICON_ROWS,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SYSTEM_ICON_DATA_URLS
3
- } from "../chunk-EQTZA7I2.js";
3
+ } from "../chunk-NHYZ7AWK.js";
4
4
  export {
5
5
  SYSTEM_ICON_DATA_URLS
6
6
  };
@@ -35,7 +35,7 @@ declare const STN_TABLE_PARTS: readonly [{
35
35
  readonly role: "데이터 테이블 (`StnTable.Grid`)";
36
36
  }, {
37
37
  readonly part: "thead / .stn-table__thead";
38
- readonly role: "헤더 · Light gray-50 / Dark white/5 (`--stn-table-th-bg`) · th Light gray-700 / Dark gray-350 · 높이 36 · radius Light 4 / Dark 8";
38
+ readonly role: "헤더 · Light gray-50 / Dark gray-800 (`--stn-table-th-bg`) · th Light gray-700 / Dark gray-350 · 높이 36 · radius Light 4 / Dark 8";
39
39
  }, {
40
40
  readonly part: "tbody / .stn-table__tbody";
41
41
  readonly role: "본문 · 행 36 · border Light gray-100 / Dark gray-800 (`--stn-table-border`) · td Light gray-750 / Dark gray-50";
@@ -13,7 +13,7 @@ import {
13
13
  STN_TABLE_TH_CHECK_EXAMPLE,
14
14
  STN_TABLE_TH_CHECK_FIGMA,
15
15
  STN_TABLE_TH_LABEL_FIGMA
16
- } from "../chunk-DNMZJS65.js";
16
+ } from "../chunk-IOBNIUK3.js";
17
17
  export {
18
18
  STN_TABLE_EXAMPLE,
19
19
  STN_TABLE_EXAMPLE_HTML,
package/dist/index.js CHANGED
@@ -45,7 +45,7 @@ import {
45
45
  STN_SIDE_NAV_ITEM_INTRO,
46
46
  STN_SIDE_NAV_ITEM_STATES,
47
47
  STN_SIDE_NAV_SUB_ICON
48
- } from "./chunk-H4ZJQ5YW.js";
48
+ } from "./chunk-YMWHZNBT.js";
49
49
  import {
50
50
  STN_SIZE_INTRO,
51
51
  STN_SIZE_ROWS,
@@ -357,7 +357,7 @@ import {
357
357
  STN_TABLE_TH_CHECK_EXAMPLE,
358
358
  STN_TABLE_TH_CHECK_FIGMA,
359
359
  STN_TABLE_TH_LABEL_FIGMA
360
- } from "./chunk-DNMZJS65.js";
360
+ } from "./chunk-IOBNIUK3.js";
361
361
  import {
362
362
  STN_TEXT_FIELD_FIGMA,
363
363
  STN_TEXT_FIELD_HTML,
@@ -455,7 +455,7 @@ import {
455
455
  applyLnbSideToModifiers,
456
456
  pubContentAreaClasses,
457
457
  pubLayoutRegionClass
458
- } from "./chunk-36BAGMYT.js";
458
+ } from "./chunk-2ZYBBVBT.js";
459
459
  import {
460
460
  STN_LOADING_SKELETON_COLORS,
461
461
  STN_LOADING_SKELETON_INTRO,
@@ -481,7 +481,7 @@ import {
481
481
  STN_HEADER_USAGE_HTML,
482
482
  STN_HEADER_VARIANT_ROWS,
483
483
  STN_SYSTEM_CHIP_DEMO
484
- } from "./chunk-JPILTFLI.js";
484
+ } from "./chunk-3RYAWLME.js";
485
485
  import {
486
486
  STN_FEEDBACK_BY_KIND,
487
487
  STN_FEEDBACK_SEMANTIC_ROWS,
@@ -531,17 +531,17 @@ import {
531
531
  STN_BREADCRUMB_ICON_SRC,
532
532
  STN_BREADCRUMB_INTRO,
533
533
  STN_BREADCRUMB_PARTS
534
- } from "./chunk-SKZOEF3H.js";
534
+ } from "./chunk-XQ7UUG7Y.js";
535
535
  import {
536
536
  STN_SYSTEM_ICON_INTRO,
537
537
  STN_SYSTEM_ICON_ROWS,
538
538
  resolveSystemIconSrcFromName,
539
539
  systemIconPublicPath,
540
540
  systemIconSrc
541
- } from "./chunk-XEG4WDUD.js";
541
+ } from "./chunk-Q4QXONXL.js";
542
542
  import {
543
543
  SYSTEM_ICON_DATA_URLS
544
- } from "./chunk-EQTZA7I2.js";
544
+ } from "./chunk-NHYZ7AWK.js";
545
545
  import {
546
546
  STN_BREAKPOINT_INTRO,
547
547
  STN_BREAKPOINT_MEDIA,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stn-uiux/pub-ui",
3
- "version": "0.1.59",
3
+ "version": "0.1.60",
4
4
  "description": "STN Pub design system — tokens, specs, and CSS for product HTML / React apps",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -0,0 +1,3 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M15.55 5.4L8.45 12L15.55 18.6" stroke="#40474F" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
3
+ </svg>
@@ -134,6 +134,7 @@
134
134
  width: 100%;
135
135
  }
136
136
 
137
+
137
138
  /* ==========================================================================
138
139
  5. Size (sm · md · lg)
139
140
  ========================================================================== */
@@ -180,7 +180,7 @@
180
180
  }
181
181
 
182
182
  .stn-pop--xs {
183
- --stn-pop-active-width: var(--stn-pop-width-xs, 400px);
183
+ --stn-pop-active-width: var(--stn-pop-width-xs);
184
184
  }
185
185
 
186
186
  .stn-pop--sm {
@@ -611,16 +611,14 @@
611
611
  }
612
612
 
613
613
  /* 4-1. 기본 뱃지 모드 (Badge - Display: sm / md / lg) */
614
- .stn-status-severity.badge,
615
614
  .stn-status-severity:not(.filter) {
616
615
  height: var(--stn-severity-badge-height-md, var(--stn-severity-badge-height, var(--stn-size-20, 20px)));
617
- padding: var(--stn-severity-badge-padding-md, var(--stn-severity-badge-padding, var(--stn-space-2, 2px) var(--stn-space-8, 8px)));
616
+ padding: var(--stn-severity-badge-padding-md, var(--stn-severity-badge-padding, var(--stn-space-4, 4px) var(--stn-space-8, 8px)));
618
617
  font-size: var(--stn-font-size-11, 11px);
619
618
  font-weight: var(--stn-font-weight-bold, 700);
620
619
  letter-spacing: -0.1px;
621
620
  }
622
621
 
623
- .stn-status-severity.badge .stn-status-severity__icon,
624
622
  .stn-status-severity:not(.filter) .stn-status-severity__icon {
625
623
  width: var(--stn-severity-badge-icon-size-md, var(--stn-severity-badge-icon-size, var(--stn-size-14, 14px)));
626
624
  height: var(--stn-severity-badge-icon-size-md, var(--stn-severity-badge-icon-size, var(--stn-size-14, 14px)));
@@ -629,7 +627,7 @@
629
627
  /* Sizes: sm (18px) */
630
628
  .stn-status-severity.sm {
631
629
  height: var(--stn-severity-badge-height-sm, var(--stn-size-18, 18px));
632
- padding: var(--stn-severity-badge-padding-sm, var(--stn-space-2, 2px) var(--stn-space-6, 6px));
630
+ padding: var(--stn-severity-badge-padding-sm, var(--stn-space-2, 2px) var(--stn-space-4, 4px));
633
631
  font-size: var(--stn-font-size-10, 10px);
634
632
  gap: var(--stn-space-2, 2px);
635
633
  }
@@ -642,7 +640,7 @@
642
640
  /* Sizes: md (20px - 기본) */
643
641
  .stn-status-severity.md {
644
642
  height: var(--stn-severity-badge-height-md, var(--stn-size-20, 20px));
645
- padding: var(--stn-severity-badge-padding-md, var(--stn-space-2, 2px) var(--stn-space-8, 8px));
643
+ padding: var(--stn-severity-badge-padding-md, var(--stn-space-4, 4px) var(--stn-space-8, 8px));
646
644
  font-size: var(--stn-font-size-11, 11px);
647
645
  gap: var(--stn-space-2, 2px);
648
646
  }
@@ -11,11 +11,44 @@
11
11
  height: 100%;
12
12
  background: transparent;
13
13
  box-shadow: none;
14
+ container-type: inline-size;
15
+ container-name: stn-table-container;
14
16
  }
15
17
 
16
18
  .stn-table__scroll {
17
19
  overflow-x: auto;
18
20
  position: relative;
21
+ /* STN 표준 슬림 스크롤 (thin 4px) 규격 연동 */
22
+ --stn-scroll-width: var(--stn-scroll-width-thin);
23
+ --stn-scroll-radius: var(--stn-scroll-radius-thin);
24
+ scrollbar-width: thin;
25
+ scrollbar-color: var(--stn-scroll-thumb) var(--stn-scroll-track);
26
+ }
27
+
28
+ .stn-table__scroll::-webkit-scrollbar {
29
+ width: var(--stn-scroll-width-thin);
30
+ height: var(--stn-scroll-width-thin);
31
+ background: var(--stn-scroll-track);
32
+ }
33
+
34
+ .stn-table__scroll::-webkit-scrollbar-track {
35
+ background: var(--stn-scroll-track);
36
+ border-radius: var(--stn-radius-circle);
37
+ }
38
+
39
+ .stn-table__scroll::-webkit-scrollbar-thumb {
40
+ background: var(--stn-scroll-thumb);
41
+ border-radius: var(--stn-scroll-radius-thin);
42
+ }
43
+
44
+ .stn-table__scroll::-webkit-scrollbar-thumb:hover {
45
+ background: var(--stn-scroll-thumb-hover);
46
+ }
47
+
48
+ .stn-table__scroll::-webkit-scrollbar-button {
49
+ display: none;
50
+ width: 0;
51
+ height: 0;
19
52
  }
20
53
 
21
54
  /* List view — StnTable `fill` · content_box 남은 높이에 스크롤 영역 채움 */
@@ -147,6 +180,32 @@ td.stn-table__col-check .stn-checkbox {
147
180
  }
148
181
  }
149
182
 
183
+ @media (max-width: 768px) {
184
+ .stn-table__footer {
185
+ display: flex;
186
+ flex-wrap: wrap;
187
+ align-items: center;
188
+ justify-content: space-between;
189
+ row-gap: var(--stn-spacing-table-footer-gap, var(--stn-space-12));
190
+ column-gap: var(--stn-spacing-table-footer-actions-gap, var(--stn-space-8));
191
+ }
192
+ .stn-table__footer-leading {
193
+ order: 1;
194
+ flex: 0 1 auto;
195
+ }
196
+ .stn-table__footer-right {
197
+ order: 2;
198
+ flex: 0 1 auto;
199
+ margin-left: auto;
200
+ }
201
+ .stn-table__footer-center {
202
+ order: 3;
203
+ width: 100%;
204
+ flex: 1 0 100%;
205
+ justify-content: center;
206
+ }
207
+ }
208
+
150
209
 
151
210
  /* rowspan · colspan · expand-row (중첩 Path 테이블) */
152
211
  .stn-table__grid th[rowspan],
@@ -246,18 +305,20 @@ td.stn-table__col-check .stn-checkbox {
246
305
 
247
306
  .stn-table thead,
248
307
  .stn-table__thead {
249
- background: transparent !important;
308
+ position: sticky;
309
+ top: 0;
310
+ z-index: 10;
250
311
  }
251
312
 
252
313
  .stn-table thead th,
253
314
  .stn-table__thead th {
254
315
  position: relative;
255
316
  box-sizing: border-box;
256
- height: 36px;
257
- min-height: 36px;
258
- padding: 4px 8px;
259
- background: var(--stn-table-th-bg) !important;
260
- color: var(--stn-table-th-fg) !important;
317
+ height: var(--stn-table-th-height);
318
+ min-height: var(--stn-table-th-height);
319
+ padding: var(--stn-table-th-padding);
320
+ background: var(--stn-table-th-bg);
321
+ color: var(--stn-table-th-fg);
261
322
  font-family: var(--stn-font-body);
262
323
  font-size: var(--stn-text-body-small-size);
263
324
  font-weight: var(--stn-font-weight-regular);
@@ -267,12 +328,17 @@ td.stn-table__col-check .stn-checkbox {
267
328
  border: none;
268
329
  }
269
330
 
331
+ .stn-table thead th[rowspan],
332
+ .stn-table__thead th[rowspan] {
333
+ height: auto;
334
+ }
335
+
270
336
  .stn-table thead tr th:not(:last-of-type)::after,
271
337
  .stn-table__thead th:not(:last-of-type)::after {
272
338
  content: '';
273
339
  position: absolute;
274
- top: 8px;
275
- bottom: 8px;
340
+ top: var(--stn-table-th-divider-inset);
341
+ bottom: var(--stn-table-th-divider-inset);
276
342
  right: 0;
277
343
  border-right: 1px solid var(--stn-table-th-border);
278
344
  }
@@ -298,10 +364,10 @@ td.stn-table__col-check .stn-checkbox {
298
364
  .stn-table tbody td,
299
365
  .stn-table__tbody td {
300
366
  box-sizing: border-box;
301
- height: 36px;
302
- min-height: 36px;
367
+ height: var(--stn-table-row-height);
368
+ min-height: var(--stn-table-row-height);
303
369
  min-width: 0;
304
- padding: 4px 8px;
370
+ padding: var(--stn-table-cell-padding);
305
371
  border-bottom: 1px solid var(--stn-table-border);
306
372
  background: transparent;
307
373
  color: var(--stn-table-td-fg);
@@ -331,18 +331,23 @@
331
331
  color: var(--stn-text-primary);
332
332
  }
333
333
 
334
+ .stn-widget .stn-widget__body {
335
+ scrollbar-width: thin;
336
+ scrollbar-color: var(--stn-scroll-thumb) transparent;
337
+ }
334
338
  .stn-widget .stn-widget__body::-webkit-scrollbar {
335
- width: var(--stn-widget-scrollbar-width, var(--stn-size-4, 4px));
339
+ width: var(--stn-scroll-width-thin);
340
+ height: var(--stn-scroll-width-thin);
336
341
  }
337
342
  .stn-widget .stn-widget__body::-webkit-scrollbar-track {
338
343
  background: transparent;
339
344
  }
340
345
  .stn-widget .stn-widget__body::-webkit-scrollbar-thumb {
341
- background: var(--stn-widget-scrollbar);
342
- border-radius: var(--stn-widget-scrollbar-radius, var(--stn-radius-4, 4px));
346
+ background: var(--stn-scroll-thumb);
347
+ border-radius: var(--stn-scroll-radius-thin);
343
348
  }
344
349
  .stn-widget .stn-widget__body::-webkit-scrollbar-thumb:hover {
345
- background: var(--stn-widget-scrollbar-hover);
350
+ background: var(--stn-scroll-thumb-hover);
346
351
  }
347
352
 
348
353
  /* dashboard_right widget panel */
@@ -359,6 +364,8 @@
359
364
  overflow-x: hidden;
360
365
  box-sizing: border-box;
361
366
  padding-right: var(--stn-widget-panel-padding-end, var(--stn-space-2, 2px));
367
+ scrollbar-width: thin;
368
+ scrollbar-color: var(--stn-scroll-thumb) transparent;
362
369
  }
363
370
 
364
371
  .dashboard_right > .stn-stack {
@@ -373,17 +380,18 @@
373
380
  }
374
381
 
375
382
  .dashboard_right::-webkit-scrollbar {
376
- width: var(--stn-widget-panel-scrollbar-width, var(--stn-size-6, 6px));
383
+ width: var(--stn-scroll-width-thin);
384
+ height: var(--stn-scroll-width-thin);
377
385
  }
378
386
  .dashboard_right::-webkit-scrollbar-track {
379
387
  background: transparent;
380
388
  }
381
389
  .dashboard_right::-webkit-scrollbar-thumb {
382
- background: var(--stn-widget-panel-scrollbar);
383
- border-radius: var(--stn-widget-scrollbar-radius, var(--stn-radius-4, 4px));
390
+ background: var(--stn-scroll-thumb);
391
+ border-radius: var(--stn-scroll-radius-thin);
384
392
  }
385
393
  .dashboard_right::-webkit-scrollbar-thumb:hover {
386
- background: var(--stn-widget-panel-scrollbar-hover);
394
+ background: var(--stn-scroll-thumb-hover);
387
395
  }
388
396
 
389
397
  /* Interactive Hover State */
@@ -19,33 +19,28 @@
19
19
  display: block;
20
20
  }
21
21
 
22
- .stn-container--gutters,
23
- .stn-container:not(.stn-container--disable-gutters) {
22
+ .stn-container,
23
+ .stn-container--gutters {
24
24
  padding-left: var(--stn-container-gutter-mobile);
25
25
  padding-right: var(--stn-container-gutter-mobile);
26
26
  }
27
27
 
28
28
  @media (min-width: 768px) {
29
- .stn-container--gutters,
30
- .stn-container:not(.stn-container--disable-gutters) {
29
+ .stn-container,
30
+ .stn-container--gutters {
31
31
  padding-left: var(--stn-container-gutter-tablet);
32
32
  padding-right: var(--stn-container-gutter-tablet);
33
33
  }
34
34
  }
35
35
 
36
36
  @media (min-width: 1024px) {
37
- .stn-container--gutters,
38
- .stn-container:not(.stn-container--disable-gutters) {
37
+ .stn-container,
38
+ .stn-container--gutters {
39
39
  padding-left: var(--stn-container-gutter-desktop);
40
40
  padding-right: var(--stn-container-gutter-desktop);
41
41
  }
42
42
  }
43
43
 
44
- .stn-container--disable-gutters {
45
- padding-left: var(--stn-space-0, 0px) !important;
46
- padding-right: var(--stn-space-0, 0px) !important;
47
- }
48
-
49
44
  /* Fluid max-width. width 100%라서 캡에 닿기 전까지 화면과 같이 늘어난다.
50
45
  xs는 breakpoint가 없어서 444px. sm–xl은 STN breakpoint 폭. */
51
46
  .stn-container--xs,