@stn-uiux/pub-ui-react 0.1.55 → 0.1.58

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -406,7 +406,7 @@ var StnSlider = forwardRef3(function StnSlider2({
406
406
  customGradient = gradient;
407
407
  }
408
408
  }
409
- const sizeClass4 = size !== "md" ? size : "";
409
+ const sizeClass5 = size !== "md" ? size : "";
410
410
  const style = {
411
411
  ["--stn-slider-pct"]: `${pct}%`,
412
412
  ["--stn-slider-pct-num"]: String(pct / 100),
@@ -462,7 +462,7 @@ var StnSlider = forwardRef3(function StnSlider2({
462
462
  {
463
463
  className: cn(
464
464
  "stn-slider",
465
- sizeClass4,
465
+ sizeClass5,
466
466
  toneClass,
467
467
  gradientClass,
468
468
  hasGradient && "gradient-fill stn-slider--gradient-fill",
@@ -639,7 +639,7 @@ var StnPagination = forwardRef4(function StnPagination2({
639
639
  ] });
640
640
  });
641
641
 
642
- // src/components/StnPopup.tsx
642
+ // src/components/StnModal.tsx
643
643
  import { forwardRef as forwardRef6, useEffect as useEffect2 } from "react";
644
644
  import { createPortal } from "react-dom";
645
645
 
@@ -730,29 +730,28 @@ StnLayer2.Content = StnLayerContent;
730
730
  StnLayer2.Dim = StnLayerDim;
731
731
  StnLayer2.Modal = StnLayerModal;
732
732
 
733
- // src/components/StnPopup.tsx
733
+ // src/components/StnModal.tsx
734
734
  import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
735
735
  var SIZE_CLASS = {
736
736
  xs: "stn-pop--xs",
737
- s: "stn-pop--sm",
738
737
  sm: "stn-pop--sm",
739
- m: "stn-pop--md",
740
738
  md: "stn-pop--md",
741
- l: "stn-pop--lg",
742
739
  lg: "stn-pop--lg",
743
740
  xl: "stn-pop--xl",
744
- xxl: "stn-pop--xxl",
745
- "2xl": "stn-pop--2xl",
746
741
  full: "stn-pop--full"
747
742
  };
748
- var StnPopup = forwardRef6(function StnPopup2({
743
+ var StnModal = forwardRef6(function StnModal2({
749
744
  open,
750
745
  onClose,
751
746
  title,
747
+ subtitle,
748
+ headerExtra,
752
749
  size = "md",
753
750
  children,
754
751
  actions,
752
+ actionAlign = "right",
755
753
  className,
754
+ bodyClassName,
756
755
  portal = true,
757
756
  closeOnScrimClick = true,
758
757
  dim = true,
@@ -768,7 +767,7 @@ var StnPopup = forwardRef6(function StnPopup2({
768
767
  };
769
768
  }, [open, portal]);
770
769
  if (!open) return null;
771
- const titleId = rest.id ? `${rest.id}-title` : "stn-pop-title";
770
+ const titleId = rest.id ? `${rest.id}-title` : "stn-modal-title";
772
771
  const dialog = /* @__PURE__ */ jsx9(
773
772
  "div",
774
773
  {
@@ -779,7 +778,13 @@ var StnPopup = forwardRef6(function StnPopup2({
779
778
  className: cn("stn-pop", SIZE_CLASS[size], "stn-pop--open", className),
780
779
  ...rest,
781
780
  children: /* @__PURE__ */ jsx9("div", { className: "stn-pop__cont", children: /* @__PURE__ */ jsxs5("div", { className: "stn-pop__panel", children: [
782
- /* @__PURE__ */ jsx9("div", { className: "stn-pop__head", id: titleId, children: /* @__PURE__ */ jsx9("h4", { children: title }) }),
781
+ /* @__PURE__ */ jsxs5("div", { className: "stn-pop__head", id: titleId, children: [
782
+ /* @__PURE__ */ jsxs5("div", { className: "stn-pop__head-row", children: [
783
+ /* @__PURE__ */ jsx9("h4", { children: title }),
784
+ headerExtra ? /* @__PURE__ */ jsx9("div", { className: "stn-pop__head-extra", children: headerExtra }) : null
785
+ ] }),
786
+ subtitle ? /* @__PURE__ */ jsx9("p", { className: "stn-pop__subtitle", children: subtitle }) : null
787
+ ] }),
783
788
  /* @__PURE__ */ jsx9(
784
789
  StnButton,
785
790
  {
@@ -791,8 +796,19 @@ var StnPopup = forwardRef6(function StnPopup2({
791
796
  onClick: onClose
792
797
  }
793
798
  ),
794
- /* @__PURE__ */ jsx9("div", { className: "stn-pop__body", children }),
795
- actions ? /* @__PURE__ */ jsx9("div", { className: "stn-pop__actions", children: actions }) : null
799
+ /* @__PURE__ */ jsx9("div", { className: cn("stn-pop__body", bodyClassName), children }),
800
+ actions ? /* @__PURE__ */ jsx9(
801
+ "div",
802
+ {
803
+ className: cn(
804
+ "stn-pop__actions",
805
+ actionAlign === "center" && "stn-pop__actions--center",
806
+ actionAlign === "right" && "stn-pop__actions--right",
807
+ actionAlign === "between" && "stn-pop__actions--between"
808
+ ),
809
+ children: actions
810
+ }
811
+ ) : null
796
812
  ] }) })
797
813
  }
798
814
  );
@@ -816,6 +832,7 @@ var StnPopup = forwardRef6(function StnPopup2({
816
832
  document.body
817
833
  );
818
834
  });
835
+ var StnPopup = StnModal;
819
836
 
820
837
  // src/components/toast/StnToastCloseButton.tsx
821
838
  import { jsx as jsx10 } from "react/jsx-runtime";
@@ -1632,10 +1649,10 @@ StnTable.RowActions = StnTableRowActions;
1632
1649
 
1633
1650
  // src/components/StnTree.tsx
1634
1651
  import {
1635
- forwardRef as forwardRef12,
1636
- useCallback as useCallback3,
1652
+ forwardRef as forwardRef13,
1653
+ useCallback as useCallback4,
1637
1654
  useMemo as useMemo2,
1638
- useState as useState4
1655
+ useState as useState5
1639
1656
  } from "react";
1640
1657
 
1641
1658
  // src/components/StnTreeNode.tsx
@@ -1685,11 +1702,13 @@ function walk(nodes, depth, ancestorIsLast, expanded, out) {
1685
1702
  id: node.id,
1686
1703
  label: node.label,
1687
1704
  kind,
1705
+ bold: Boolean(node.bold),
1688
1706
  depth,
1689
1707
  cells: buildPrefixCells(depth, kind, ancestorIsLast, isLast, hasChildren, isExpanded),
1690
1708
  hasChildren,
1691
1709
  expanded: isExpanded,
1692
- isLast
1710
+ isLast,
1711
+ visible: node.visible !== false
1693
1712
  });
1694
1713
  if (hasChildren && isExpanded) {
1695
1714
  walk(node.children, depth + 1, [...ancestorIsLast, isLast], expanded, out);
@@ -1724,7 +1743,9 @@ var ICON = {
1724
1743
  vertical: resolveSystemIconSrcFromName2("line/vertical_line") ?? "",
1725
1744
  connectorMid: resolveSystemIconSrcFromName2("line/tree_connector_midium") ?? "",
1726
1745
  connectorEnd: resolveSystemIconSrcFromName2("line/tree_connector") ?? "",
1727
- chevron: resolveSystemIconSrcFromName2("line/arrow-left") ?? ""
1746
+ chevron: resolveSystemIconSrcFromName2("line/arrow-left") ?? "",
1747
+ eye: resolveSystemIconSrcFromName2("line/eye") ?? "",
1748
+ eyeOff: resolveSystemIconSrcFromName2("line/eye-off") ?? ""
1728
1749
  };
1729
1750
  function maskStyle(src) {
1730
1751
  return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
@@ -1800,6 +1821,7 @@ function TreeNodeIcon({ kind, expanded }) {
1800
1821
  var StnTreeNode = forwardRef11(function StnTreeNode2({
1801
1822
  label,
1802
1823
  kind = "folder",
1824
+ bold = false,
1803
1825
  depth = 0,
1804
1826
  expanded = false,
1805
1827
  selected = false,
@@ -1807,6 +1829,10 @@ var StnTreeNode = forwardRef11(function StnTreeNode2({
1807
1829
  isLast = true,
1808
1830
  ancestorIsLast,
1809
1831
  cells: cellsProp,
1832
+ showIcon = true,
1833
+ visible = true,
1834
+ showVisibilityToggle = false,
1835
+ onVisibilityChange,
1810
1836
  docState = "default",
1811
1837
  onSelect,
1812
1838
  onToggle,
@@ -1815,6 +1841,7 @@ var StnTreeNode = forwardRef11(function StnTreeNode2({
1815
1841
  onKeyDown,
1816
1842
  ...rest
1817
1843
  }, ref) {
1844
+ const labelText = typeof label === "string" ? label : "";
1818
1845
  const resolvedHasChildren = hasChildren ?? kind !== "server";
1819
1846
  const cells = cellsProp ?? buildStnTreeNodeCells({
1820
1847
  depth,
@@ -1843,9 +1870,11 @@ var StnTreeNode = forwardRef11(function StnTreeNode2({
1843
1870
  "aria-expanded": resolvedHasChildren ? expanded : void 0,
1844
1871
  className: cn(
1845
1872
  "stn-tree__row",
1873
+ bold && "is-bold",
1846
1874
  isSelected && "is-selected",
1847
1875
  docState === "hover" && "is-hover",
1848
1876
  docState === "pressed" && "is-pressed",
1877
+ !visible && "is-hidden-node",
1849
1878
  `stn-tree__row--${kind}`,
1850
1879
  className
1851
1880
  ),
@@ -1865,7 +1894,7 @@ var StnTreeNode = forwardRef11(function StnTreeNode2({
1865
1894
  {
1866
1895
  type: "button",
1867
1896
  className: "stn-tree__cell stn-tree__cell--toggle stn-tree__toggle",
1868
- "aria-label": cell.expanded ? `${label} \uC811\uAE30` : `${label} \uD3BC\uCE58\uAE30`,
1897
+ "aria-label": cell.expanded ? `${labelText} \uC811\uAE30` : `${labelText} \uD3BC\uCE58\uAE30`,
1869
1898
  "aria-expanded": cell.expanded,
1870
1899
  onClick: (event) => {
1871
1900
  event.stopPropagation();
@@ -1884,99 +1913,44 @@ var StnTreeNode = forwardRef11(function StnTreeNode2({
1884
1913
  }
1885
1914
  return /* @__PURE__ */ jsx16(TreeGuideCell, { cell }, `c-${index}`);
1886
1915
  }),
1887
- /* @__PURE__ */ jsx16(TreeNodeIcon, { kind, expanded }),
1888
- /* @__PURE__ */ jsx16("span", { className: "stn-tree__label", children: label })
1916
+ showIcon && /* @__PURE__ */ jsx16(TreeNodeIcon, { kind, expanded }),
1917
+ /* @__PURE__ */ jsx16("span", { className: cn("stn-tree__label", bold && "is-bold"), children: label }),
1918
+ showVisibilityToggle && /* @__PURE__ */ jsx16(
1919
+ "button",
1920
+ {
1921
+ type: "button",
1922
+ className: "stn-tree__visibility-btn",
1923
+ "aria-label": visible ? `${labelText} \uC228\uAE30\uAE30` : `${labelText} \uD45C\uC2DC\uD558\uAE30`,
1924
+ title: visible ? "\uC228\uAE30\uAE30" : "\uD45C\uC2DC\uD558\uAE30",
1925
+ onClick: (event) => {
1926
+ event.stopPropagation();
1927
+ onVisibilityChange?.(!visible);
1928
+ },
1929
+ children: /* @__PURE__ */ jsx16(
1930
+ "span",
1931
+ {
1932
+ className: cn("stn-tree__visibility-glyph", !visible && "is-off"),
1933
+ style: maskStyle(visible ? ICON.eye : ICON.eyeOff)
1934
+ }
1935
+ )
1936
+ }
1937
+ )
1889
1938
  ]
1890
1939
  }
1891
1940
  );
1892
1941
  });
1893
-
1894
- // src/components/StnTree.tsx
1895
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1896
- function useControllableSet(controlled, defaultIds, allExpandable) {
1897
- const [internal, setInternal] = useState4(() => defaultIds ?? allExpandable);
1898
- const value = controlled ?? internal;
1899
- const setValue = useCallback3(
1900
- (next) => {
1901
- const resolved = typeof next === "function" ? next(controlled ?? internal) : next;
1902
- if (controlled == null) setInternal(resolved);
1903
- },
1904
- [controlled, internal]
1905
- );
1906
- return [value, setValue];
1907
- }
1908
- var StnTree = forwardRef12(function StnTree2({
1909
- nodes,
1910
- heading = "FOLDER STRUCTURE",
1911
- defaultExpandedIds,
1912
- expandedIds,
1913
- onExpandedChange,
1914
- selectedId,
1915
- defaultSelectedId = null,
1916
- onSelect,
1917
- docRowState,
1918
- className,
1919
- ...rest
1920
- }, ref) {
1921
- const expandableIds = useMemo2(() => collectExpandableIds(nodes), [nodes]);
1922
- const [expanded, setExpanded] = useControllableSet(expandedIds, defaultExpandedIds, expandableIds);
1923
- const [internalSelected, setInternalSelected] = useState4(defaultSelectedId);
1924
- const selected = selectedId ?? internalSelected;
1925
- const rows = useMemo2(() => flattenStnTree(nodes, expanded), [nodes, expanded]);
1926
- const setExpandedIds = useCallback3(
1927
- (next) => {
1928
- setExpanded(next);
1929
- onExpandedChange?.(next);
1930
- },
1931
- [onExpandedChange, setExpanded]
1932
- );
1933
- const handleToggle = useCallback3(
1934
- (id) => {
1935
- setExpandedIds(
1936
- expanded.includes(id) ? expanded.filter((item) => item !== id) : [...expanded, id]
1937
- );
1938
- },
1939
- [expanded, setExpandedIds]
1940
- );
1941
- const handleSelect = useCallback3(
1942
- (id) => {
1943
- if (selectedId == null) setInternalSelected(id);
1944
- onSelect?.(id);
1945
- },
1946
- [onSelect, selectedId]
1947
- );
1948
- return /* @__PURE__ */ jsxs11("div", { ref, className: cn("stn-tree", className), ...rest, children: [
1949
- heading ? /* @__PURE__ */ jsx17("p", { className: "stn-tree__heading", children: heading }) : null,
1950
- /* @__PURE__ */ jsx17("div", { className: "stn-tree__rows", role: "tree", "aria-label": heading || "folder tree", children: rows.map((row) => /* @__PURE__ */ jsx17(
1951
- StnTreeNode,
1952
- {
1953
- label: row.label,
1954
- kind: row.kind,
1955
- depth: row.depth,
1956
- expanded: row.expanded,
1957
- selected: selected === row.id,
1958
- hasChildren: row.hasChildren,
1959
- isLast: row.isLast,
1960
- cells: row.cells,
1961
- docState: docRowState?.id === row.id ? docRowState.state : "default",
1962
- onToggle: () => handleToggle(row.id),
1963
- onSelect: () => handleSelect(row.id)
1964
- },
1965
- row.id
1966
- )) })
1967
- ] });
1968
- });
1942
+ var StnTreeItem = StnTreeNode;
1969
1943
 
1970
1944
  // src/components/StnScroll.tsx
1971
1945
  import {
1972
- forwardRef as forwardRef13,
1973
- useCallback as useCallback4,
1946
+ forwardRef as forwardRef12,
1947
+ useCallback as useCallback3,
1974
1948
  useEffect as useEffect6,
1975
1949
  useId as useId4,
1976
1950
  useRef as useRef4,
1977
- useState as useState5
1951
+ useState as useState4
1978
1952
  } from "react";
1979
- import { Fragment, jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1953
+ import { Fragment, jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1980
1954
  function assignRef(ref, value) {
1981
1955
  if (typeof ref === "function") ref(value);
1982
1956
  else if (ref) ref.current = value;
@@ -1987,7 +1961,7 @@ function barWidth(size, scrollWidth) {
1987
1961
  if (size === "thick") return "12px";
1988
1962
  return "8px";
1989
1963
  }
1990
- var StnScroll = forwardRef13(function StnScroll2({
1964
+ var StnScroll = forwardRef12(function StnScroll2({
1991
1965
  orientation = "vertical",
1992
1966
  variant = "default",
1993
1967
  showArrows = false,
@@ -2006,7 +1980,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2006
1980
  const rawId = useId4();
2007
1981
  const customId = `stn-scr-${rawId.replace(/[^a-zA-Z0-9_-]/g, "")}`;
2008
1982
  const innerRef = useRef4(null);
2009
- const [edges, setEdges] = useState5({ top: true, bottom: false, left: true, right: false });
1983
+ const [edges, setEdges] = useState4({ top: true, bottom: false, left: true, right: false });
2010
1984
  const hasArrows = variant === "arrows" || showArrows;
2011
1985
  const hasCustomStyling = Boolean(thumbColor || trackColor || scrollWidth != null);
2012
1986
  const showY = orientation !== "horizontal";
@@ -2016,7 +1990,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2016
1990
  const w = scrollWidth != null ? typeof scrollWidth === "number" ? `${scrollWidth}px` : scrollWidth : void 0;
2017
1991
  const thumb = thumbColor;
2018
1992
  const track = trackColor || "rgba(255, 255, 255, 0.05)";
2019
- dynamicStyleTag = /* @__PURE__ */ jsx18("style", { children: `
1993
+ dynamicStyleTag = /* @__PURE__ */ jsx17("style", { children: `
2020
1994
  .${customId}::-webkit-scrollbar {
2021
1995
  ${w ? `width: ${w} !important; height: ${w} !important;` : ""}
2022
1996
  ${track ? `background: ${track} !important;` : ""}
@@ -2038,7 +2012,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2038
2012
  ...thumbColor && { scrollbarColor: `${thumbColor} ${trackColor || "transparent"}` },
2039
2013
  ...style
2040
2014
  };
2041
- const syncEdges = useCallback4(() => {
2015
+ const syncEdges = useCallback3(() => {
2042
2016
  const el = innerRef.current;
2043
2017
  if (!el) return;
2044
2018
  setEdges({
@@ -2075,7 +2049,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2075
2049
  behavior: "smooth"
2076
2050
  });
2077
2051
  };
2078
- const scrollElement = /* @__PURE__ */ jsx18(
2052
+ const scrollElement = /* @__PURE__ */ jsx17(
2079
2053
  "div",
2080
2054
  {
2081
2055
  ref: setNode,
@@ -2094,7 +2068,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2094
2068
  }
2095
2069
  );
2096
2070
  if (!hasArrows) {
2097
- return /* @__PURE__ */ jsxs12(Fragment, { children: [
2071
+ return /* @__PURE__ */ jsxs11(Fragment, { children: [
2098
2072
  dynamicStyleTag,
2099
2073
  scrollElement
2100
2074
  ] });
@@ -2102,11 +2076,11 @@ var StnScroll = forwardRef13(function StnScroll2({
2102
2076
  const shellStyle = {
2103
2077
  "--stn-scroll-width": barWidth(size, scrollWidth)
2104
2078
  };
2105
- return /* @__PURE__ */ jsxs12(Fragment, { children: [
2079
+ return /* @__PURE__ */ jsxs11(Fragment, { children: [
2106
2080
  dynamicStyleTag,
2107
- /* @__PURE__ */ jsxs12("div", { className: cn("stn-scroll-shell", `stn-scroll-shell--${orientation}`), style: shellStyle, children: [
2108
- showY ? /* @__PURE__ */ jsxs12(Fragment, { children: [
2109
- /* @__PURE__ */ jsx18(
2081
+ /* @__PURE__ */ jsxs11("div", { className: cn("stn-scroll-shell", `stn-scroll-shell--${orientation}`), style: shellStyle, children: [
2082
+ showY ? /* @__PURE__ */ jsxs11(Fragment, { children: [
2083
+ /* @__PURE__ */ jsx17(
2110
2084
  ScrollArrow,
2111
2085
  {
2112
2086
  direction: "up",
@@ -2115,7 +2089,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2115
2089
  onClick: () => scrollByAxis("y", -1)
2116
2090
  }
2117
2091
  ),
2118
- /* @__PURE__ */ jsx18(
2092
+ /* @__PURE__ */ jsx17(
2119
2093
  ScrollArrow,
2120
2094
  {
2121
2095
  direction: "down",
@@ -2126,8 +2100,8 @@ var StnScroll = forwardRef13(function StnScroll2({
2126
2100
  )
2127
2101
  ] }) : null,
2128
2102
  scrollElement,
2129
- showX ? /* @__PURE__ */ jsxs12(Fragment, { children: [
2130
- /* @__PURE__ */ jsx18(
2103
+ showX ? /* @__PURE__ */ jsxs11(Fragment, { children: [
2104
+ /* @__PURE__ */ jsx17(
2131
2105
  ScrollArrow,
2132
2106
  {
2133
2107
  direction: "left",
@@ -2136,7 +2110,7 @@ var StnScroll = forwardRef13(function StnScroll2({
2136
2110
  onClick: () => scrollByAxis("x", -1)
2137
2111
  }
2138
2112
  ),
2139
- /* @__PURE__ */ jsx18(
2113
+ /* @__PURE__ */ jsx17(
2140
2114
  ScrollArrow,
2141
2115
  {
2142
2116
  direction: "right",
@@ -2155,7 +2129,7 @@ function ScrollArrow({
2155
2129
  label,
2156
2130
  ...rest
2157
2131
  }) {
2158
- return /* @__PURE__ */ jsxs12(
2132
+ return /* @__PURE__ */ jsxs11(
2159
2133
  "button",
2160
2134
  {
2161
2135
  type: "button",
@@ -2163,15 +2137,161 @@ function ScrollArrow({
2163
2137
  "aria-label": label,
2164
2138
  ...rest,
2165
2139
  children: [
2166
- direction === "up" && /* @__PURE__ */ jsx18("svg", { width: "7", height: "6", viewBox: "0 0 7 6", fill: "currentColor", children: /* @__PURE__ */ jsx18("path", { d: "M2.78 1.13a0.85 0.85 0 0 1 1.44 0l2.12 3.18A0.85 0.85 0 0 1 5.64 5.6H1.36a0.85 0.85 0 0 1-.7-1.29l2.12-3.18z" }) }),
2167
- direction === "down" && /* @__PURE__ */ jsx18("svg", { width: "7", height: "6", viewBox: "0 0 7 6", fill: "currentColor", children: /* @__PURE__ */ jsx18("path", { d: "M2.78 4.87a0.85 0.85 0 0 0 1.44 0l2.12-3.18A0.85 0.85 0 0 0 5.64 0.4H1.36a0.85 0.85 0 0 0-.7 1.29l2.12 3.18z" }) }),
2168
- direction === "left" && /* @__PURE__ */ jsx18("svg", { width: "6", height: "7", viewBox: "0 0 6 7", fill: "currentColor", children: /* @__PURE__ */ jsx18("path", { d: "M1.13 4.22a0.85 0.85 0 0 1 0-1.44l3.18-2.12A0.85 0.85 0 0 1 5.6 1.36v4.28a0.85 0.85 0 0 1-1.29.7L1.13 4.22z" }) }),
2169
- direction === "right" && /* @__PURE__ */ jsx18("svg", { width: "6", height: "7", viewBox: "0 0 6 7", fill: "currentColor", children: /* @__PURE__ */ jsx18("path", { d: "M4.87 4.22a0.85 0.85 0 0 0 0-1.44L1.69 0.66A0.85 0.85 0 0 0 0.4 1.36v4.28a0.85 0.85 0 0 0 1.29.7l3.18-2.12z" }) })
2140
+ direction === "up" && /* @__PURE__ */ jsx17("svg", { width: "7", height: "6", viewBox: "0 0 7 6", fill: "currentColor", children: /* @__PURE__ */ jsx17("path", { d: "M2.78 1.13a0.85 0.85 0 0 1 1.44 0l2.12 3.18A0.85 0.85 0 0 1 5.64 5.6H1.36a0.85 0.85 0 0 1-.7-1.29l2.12-3.18z" }) }),
2141
+ direction === "down" && /* @__PURE__ */ jsx17("svg", { width: "7", height: "6", viewBox: "0 0 7 6", fill: "currentColor", children: /* @__PURE__ */ jsx17("path", { d: "M2.78 4.87a0.85 0.85 0 0 0 1.44 0l2.12-3.18A0.85 0.85 0 0 0 5.64 0.4H1.36a0.85 0.85 0 0 0-.7 1.29l2.12 3.18z" }) }),
2142
+ direction === "left" && /* @__PURE__ */ jsx17("svg", { width: "6", height: "7", viewBox: "0 0 6 7", fill: "currentColor", children: /* @__PURE__ */ jsx17("path", { d: "M1.13 4.22a0.85 0.85 0 0 1 0-1.44l3.18-2.12A0.85 0.85 0 0 1 5.6 1.36v4.28a0.85 0.85 0 0 1-1.29.7L1.13 4.22z" }) }),
2143
+ direction === "right" && /* @__PURE__ */ jsx17("svg", { width: "6", height: "7", viewBox: "0 0 6 7", fill: "currentColor", children: /* @__PURE__ */ jsx17("path", { d: "M4.87 4.22a0.85 0.85 0 0 0 0-1.44L1.69 0.66A0.85 0.85 0 0 0 0.4 1.36v4.28a0.85 0.85 0 0 0 1.29.7l3.18-2.12z" }) })
2170
2144
  ]
2171
2145
  }
2172
2146
  );
2173
2147
  }
2174
2148
 
2149
+ // src/components/StnTree.tsx
2150
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
2151
+ function useControllableSet(controlled, defaultIds, defaultExpandAll, allExpandable) {
2152
+ const [internal, setInternal] = useState5(() => {
2153
+ if (defaultIds != null) return defaultIds;
2154
+ if (defaultExpandAll) return allExpandable;
2155
+ return [];
2156
+ });
2157
+ const value = controlled ?? internal;
2158
+ const setValue = useCallback4(
2159
+ (next) => {
2160
+ const resolved = typeof next === "function" ? next(controlled ?? internal) : next;
2161
+ if (controlled == null) setInternal(resolved);
2162
+ },
2163
+ [controlled, internal]
2164
+ );
2165
+ return [value, setValue];
2166
+ }
2167
+ var StnTree = forwardRef13(function StnTree2({
2168
+ nodes,
2169
+ heading,
2170
+ defaultExpandAll = false,
2171
+ defaultExpandedIds,
2172
+ expandedIds,
2173
+ onExpandedChange,
2174
+ selectedId,
2175
+ defaultSelectedId = null,
2176
+ onSelect,
2177
+ size = "sm",
2178
+ width = "full",
2179
+ radius = "sm",
2180
+ guides = true,
2181
+ showIcons = true,
2182
+ showVisibilityToggle = false,
2183
+ onVisibilityChange,
2184
+ hiddenIds: controlledHiddenIds,
2185
+ defaultHiddenIds,
2186
+ docRowState,
2187
+ maxHeight,
2188
+ scrollVariant = "default",
2189
+ scrollSize = "thin",
2190
+ scrollColor = "fade",
2191
+ className,
2192
+ ...rest
2193
+ }, ref) {
2194
+ const expandableIds = useMemo2(() => collectExpandableIds(nodes), [nodes]);
2195
+ const [expanded, setExpanded] = useControllableSet(
2196
+ expandedIds,
2197
+ defaultExpandedIds,
2198
+ defaultExpandAll,
2199
+ expandableIds
2200
+ );
2201
+ const [internalSelected, setInternalSelected] = useState5(defaultSelectedId);
2202
+ const selected = selectedId ?? internalSelected;
2203
+ const [internalHidden, setInternalHidden] = useState5(() => defaultHiddenIds ?? []);
2204
+ const hidden = controlledHiddenIds ?? internalHidden;
2205
+ const handleVisibilityToggle = useCallback4(
2206
+ (id, nextVisible) => {
2207
+ if (controlledHiddenIds == null) {
2208
+ setInternalHidden(
2209
+ (prev) => nextVisible ? prev.filter((item) => item !== id) : [...prev, id]
2210
+ );
2211
+ }
2212
+ onVisibilityChange?.(id, nextVisible);
2213
+ },
2214
+ [controlledHiddenIds, onVisibilityChange]
2215
+ );
2216
+ const rows = useMemo2(() => flattenStnTree(nodes, expanded), [nodes, expanded]);
2217
+ const setExpandedIds = useCallback4(
2218
+ (next) => {
2219
+ setExpanded(next);
2220
+ onExpandedChange?.(next);
2221
+ },
2222
+ [onExpandedChange, setExpanded]
2223
+ );
2224
+ const handleToggle = useCallback4(
2225
+ (id) => {
2226
+ setExpandedIds(
2227
+ expanded.includes(id) ? expanded.filter((item) => item !== id) : [...expanded, id]
2228
+ );
2229
+ },
2230
+ [expanded, setExpandedIds]
2231
+ );
2232
+ const handleSelect = useCallback4(
2233
+ (id) => {
2234
+ if (selectedId == null) setInternalSelected(id);
2235
+ onSelect?.(id);
2236
+ },
2237
+ [onSelect, selectedId]
2238
+ );
2239
+ const rowsContent = /* @__PURE__ */ jsx18("div", { className: "stn-tree__rows", role: "tree", "aria-label": heading || "folder tree", children: rows.map((row) => {
2240
+ const isHidden = hidden.includes(row.id) || !row.visible;
2241
+ return /* @__PURE__ */ jsx18(
2242
+ StnTreeNode,
2243
+ {
2244
+ label: row.label,
2245
+ kind: row.kind,
2246
+ bold: row.bold,
2247
+ depth: row.depth,
2248
+ expanded: row.expanded,
2249
+ selected: selected === row.id,
2250
+ hasChildren: row.hasChildren,
2251
+ isLast: row.isLast,
2252
+ cells: row.cells,
2253
+ showIcon: showIcons,
2254
+ visible: !isHidden,
2255
+ showVisibilityToggle,
2256
+ onVisibilityChange: (nextVisible) => handleVisibilityToggle(row.id, nextVisible),
2257
+ docState: docRowState?.id === row.id ? docRowState.state : "default",
2258
+ onToggle: () => handleToggle(row.id),
2259
+ onSelect: () => handleSelect(row.id)
2260
+ },
2261
+ row.id
2262
+ );
2263
+ }) });
2264
+ return /* @__PURE__ */ jsxs12(
2265
+ "div",
2266
+ {
2267
+ ref,
2268
+ className: cn(
2269
+ "stn-tree",
2270
+ size !== "sm" && `stn-tree--${size}`,
2271
+ width !== "full" && `stn-tree--${width}`,
2272
+ radius !== "sm" && `stn-tree--radius-${radius}`,
2273
+ !guides && "stn-tree--no-guides",
2274
+ className
2275
+ ),
2276
+ ...rest,
2277
+ children: [
2278
+ heading ? /* @__PURE__ */ jsx18("p", { className: "stn-tree__heading", children: heading }) : null,
2279
+ maxHeight != null ? /* @__PURE__ */ jsx18(
2280
+ StnScroll,
2281
+ {
2282
+ orientation: "vertical",
2283
+ maxHeight,
2284
+ variant: scrollVariant,
2285
+ size: scrollSize,
2286
+ color: scrollColor,
2287
+ children: rowsContent
2288
+ }
2289
+ ) : rowsContent
2290
+ ]
2291
+ }
2292
+ );
2293
+ });
2294
+
2175
2295
  // src/components/StnCard.tsx
2176
2296
  import { forwardRef as forwardRef14 } from "react";
2177
2297
  import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
@@ -2571,7 +2691,7 @@ function StnChip(props) {
2571
2691
  const resolvedShape = rawShape === "rounded" || rawShape === "square" ? "square" : rawShape;
2572
2692
  const isOutline = variant === "outline" || variant === "outlined" || variant === "border";
2573
2693
  const isSubtle = bgOpacity === 50 || bgOpacity === "50" || bgOpacity === "50%" || bgOpacity === 0.5 || variant === "subtle" || variant === "soft" || variant === "tinted" || variant === "contained-50" || variant === "filled-50";
2574
- const variantClass4 = isOutline ? "outline" : isSubtle ? "subtle contained-50 bg-50" : "filled";
2694
+ const variantClass6 = isOutline ? "outline" : isSubtle ? "subtle contained-50 bg-50" : "filled";
2575
2695
  const resolvedColor = color ?? grade;
2576
2696
  let content = children ?? label;
2577
2697
  if (!content && grade && STN_GRADE_SOURCE[grade]) {
@@ -2628,7 +2748,7 @@ function StnChip(props) {
2628
2748
  tabIndex,
2629
2749
  className: cn(
2630
2750
  "stn-chip",
2631
- variantClass4,
2751
+ variantClass6,
2632
2752
  size,
2633
2753
  resolvedShape,
2634
2754
  resolvedColor,
@@ -3032,13 +3152,13 @@ var StnSwitch = forwardRef20(function StnSwitch2({
3032
3152
  } : color && !isKnownTone ? {
3033
3153
  "--stn-switch-track-checked": color
3034
3154
  } : void 0;
3035
- const sizeClass4 = size !== "md" ? size : "";
3155
+ const sizeClass5 = size !== "md" ? size : "";
3036
3156
  return /* @__PURE__ */ jsxs22(
3037
3157
  "label",
3038
3158
  {
3039
3159
  className: cn(
3040
3160
  "stn-switch",
3041
- sizeClass4,
3161
+ sizeClass5,
3042
3162
  toneClass,
3043
3163
  gradientClass,
3044
3164
  positionClass,
@@ -3100,7 +3220,7 @@ var StnRadio = forwardRef21(function StnRadio2({
3100
3220
  "warning"
3101
3221
  ].includes(color);
3102
3222
  const toneClass = isKnownTone ? color : "";
3103
- const sizeClass4 = size !== "md" ? size : "";
3223
+ const sizeClass5 = size !== "md" ? size : "";
3104
3224
  const inlineStyle = color && !isKnownTone ? {
3105
3225
  "--stn-radio-dot": color,
3106
3226
  "--stn-radio-checked-border": color
@@ -3111,7 +3231,7 @@ var StnRadio = forwardRef21(function StnRadio2({
3111
3231
  className: cn(
3112
3232
  "radio",
3113
3233
  "stn-radio",
3114
- sizeClass4,
3234
+ sizeClass5,
3115
3235
  toneClass,
3116
3236
  placementClass,
3117
3237
  isControlOnly && "control-only",
@@ -3311,6 +3431,10 @@ function resolveInputWidthProps(_prefix, fullWidth, width) {
3311
3431
 
3312
3432
  // src/components/StnDropdown.tsx
3313
3433
  import { jsx as jsx33, jsxs as jsxs25 } from "react/jsx-runtime";
3434
+ function resolveGlyph(node) {
3435
+ if (typeof node === "string") return /* @__PURE__ */ jsx33(StnIcon, { name: node, size: 16, color: "currentColor" });
3436
+ return node;
3437
+ }
3314
3438
  function modifierClass(modifier) {
3315
3439
  if (modifier === "pageSize") return "stn-table__page-size";
3316
3440
  if (modifier === "serverFilter") return "server_filter";
@@ -3331,6 +3455,7 @@ function menuSizeClass(size, prominent) {
3331
3455
  function variantClass(variant = "outline") {
3332
3456
  if (variant === "standard") return "standard";
3333
3457
  if (variant === "filled") return "filled";
3458
+ if (variant === "transparent") return "transparent";
3334
3459
  return "outline";
3335
3460
  }
3336
3461
  function useControllable(controlled, defaultValue, onChange) {
@@ -3358,6 +3483,11 @@ function StnDropdown({
3358
3483
  error = false,
3359
3484
  readOnly = false,
3360
3485
  placeholder,
3486
+ label,
3487
+ labelIcon,
3488
+ icon,
3489
+ labelPosition = "left",
3490
+ required = false,
3361
3491
  helperText,
3362
3492
  helperTextPosition = "bottom",
3363
3493
  prominent = false,
@@ -3490,29 +3620,46 @@ function StnDropdown({
3490
3620
  ]
3491
3621
  }
3492
3622
  );
3493
- if (!hasHelper) return dropdownNode;
3623
+ const hasLabel = label != null && label !== "";
3624
+ const hasWrap = hasLabel || hasHelper;
3625
+ if (!hasWrap) return dropdownNode;
3626
+ const resolvedLabelIcon = labelIcon ?? icon;
3627
+ const labelElement = hasLabel ? /* @__PURE__ */ jsxs25("label", { htmlFor: rootId, className: "stn-dropdown__label", children: [
3628
+ resolvedLabelIcon ? /* @__PURE__ */ jsx33("span", { className: "stn-dropdown__label-icon", "aria-hidden": "true", children: resolveGlyph(resolvedLabelIcon) }) : null,
3629
+ /* @__PURE__ */ jsx33("span", { className: "stn-dropdown__label-text", children: label }),
3630
+ required && /* @__PURE__ */ jsx33("span", { className: "stn-dropdown__required", "aria-hidden": "true", children: "*" })
3631
+ ] }) : null;
3632
+ const isRow = labelPosition === "left" || labelPosition === "right";
3494
3633
  return /* @__PURE__ */ jsxs25(
3495
3634
  "div",
3496
3635
  {
3497
3636
  className: cn(
3498
- "stn-dropdown-field",
3499
- `stn-dropdown-field--pos-${helperTextPosition}`,
3637
+ "stn-dropdown-wrap",
3638
+ hasLabel && (isRow ? "stn-dropdown-wrap--row" : "stn-dropdown-wrap--col"),
3639
+ hasLabel && labelPosition === "left" && "stn-dropdown-wrap--label-left",
3640
+ hasLabel && labelPosition === "right" && "stn-dropdown-wrap--label-right",
3641
+ hasLabel && labelPosition === "top" && "stn-dropdown-wrap--label-top",
3642
+ !hasLabel && hasHelper && `stn-dropdown-field--pos-${helperTextPosition}`,
3500
3643
  error && "is-error",
3501
- !isHorizontalHelper && widthProps.className,
3644
+ widthProps.className,
3502
3645
  className
3503
3646
  ),
3504
- style: !isHorizontalHelper ? widthProps.style : void 0,
3647
+ style: widthProps.style,
3505
3648
  ...divRest,
3506
3649
  children: [
3507
- dropdownNode,
3508
- /* @__PURE__ */ jsx33(
3509
- "span",
3510
- {
3511
- id: helperId,
3512
- className: cn("stn-dropdown-field__helper", error && "stn-dropdown-field__helper--error"),
3513
- children: helperText
3514
- }
3515
- )
3650
+ hasLabel && (labelPosition === "left" || labelPosition === "top") ? labelElement : null,
3651
+ /* @__PURE__ */ jsxs25("div", { className: "stn-dropdown-wrap__body", children: [
3652
+ dropdownNode,
3653
+ hasHelper && /* @__PURE__ */ jsx33(
3654
+ "span",
3655
+ {
3656
+ id: helperId,
3657
+ className: cn("stn-dropdown__helper", error && "stn-dropdown__helper--error"),
3658
+ children: helperText
3659
+ }
3660
+ )
3661
+ ] }),
3662
+ hasLabel && labelPosition === "right" ? labelElement : null
3516
3663
  ]
3517
3664
  }
3518
3665
  );
@@ -3555,13 +3702,14 @@ function sizeClass2(size) {
3555
3702
  function variantClass2(variant) {
3556
3703
  if (variant === "filled") return "filled";
3557
3704
  if (variant === "standard") return "standard";
3705
+ if (variant === "transparent") return "transparent";
3558
3706
  return "outlined";
3559
3707
  }
3560
3708
  function colorClass(color) {
3561
3709
  if (!color || color === "primary" || color === "secondary") return void 0;
3562
3710
  return color;
3563
3711
  }
3564
- function resolveGlyph(node) {
3712
+ function resolveGlyph2(node) {
3565
3713
  if (typeof node === "string") return /* @__PURE__ */ jsx35(StnIcon, { name: node, size: 16, color: "currentColor" });
3566
3714
  return node;
3567
3715
  }
@@ -3573,10 +3721,9 @@ var StnTextField = forwardRef22(function StnTextField2({
3573
3721
  fullWidth,
3574
3722
  width,
3575
3723
  label,
3724
+ labelIcon,
3576
3725
  labelPosition = "left",
3577
3726
  required,
3578
- prefix,
3579
- suffix,
3580
3727
  icon,
3581
3728
  iconPosition,
3582
3729
  helperText,
@@ -3591,10 +3738,8 @@ var StnTextField = forwardRef22(function StnTextField2({
3591
3738
  const autoId = useId10();
3592
3739
  const id = idProp ?? autoId;
3593
3740
  const resolvedIconPos = iconPosition ?? "left";
3594
- const leftFromIcon = icon != null && resolvedIconPos === "left" ? icon : void 0;
3595
- const rightFromIcon = icon != null && resolvedIconPos === "right" ? icon : void 0;
3596
- const leftNode = prefix ?? leftFromIcon;
3597
- const rightNode = suffix ?? rightFromIcon;
3741
+ const leftNode = icon != null && resolvedIconPos === "left" ? icon : void 0;
3742
+ const rightNode = icon != null && resolvedIconPos === "right" ? icon : void 0;
3598
3743
  const hasLeft = leftNode != null && leftNode !== false;
3599
3744
  const hasRight = rightNode != null && rightNode !== false;
3600
3745
  const hasSlot = hasLeft || hasRight;
@@ -3611,7 +3756,6 @@ var StnTextField = forwardRef22(function StnTextField2({
3611
3756
  colorClass(color),
3612
3757
  !hasWrap && widthProps.className,
3613
3758
  invalid && "stn-text-field--invalid",
3614
- Boolean(prefix) && "stn-text-field--with-prefix",
3615
3759
  hasSlot && "stn-text-field--with-icon",
3616
3760
  className
3617
3761
  );
@@ -3631,12 +3775,13 @@ var StnTextField = forwardRef22(function StnTextField2({
3631
3775
  }
3632
3776
  );
3633
3777
  const field = hasSlot ? /* @__PURE__ */ jsxs26("div", { className: fieldClass, style: hasWrap ? void 0 : widthProps.style, children: [
3634
- hasLeft ? /* @__PURE__ */ jsx35("span", { className: "stn-text-field__prefix", "aria-hidden": true, children: /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-box", children: resolveGlyph(leftNode) }) }) : null,
3778
+ hasLeft ? /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-left", "aria-hidden": true, children: /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-box", children: resolveGlyph2(leftNode) }) }) : null,
3635
3779
  input,
3636
- hasRight ? /* @__PURE__ */ jsx35("span", { className: "stn-text-field__suffix", "aria-hidden": true, children: /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-box", children: resolveGlyph(rightNode) }) }) : null
3780
+ hasRight ? /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-right", "aria-hidden": true, children: /* @__PURE__ */ jsx35("span", { className: "stn-text-field__icon-box", children: resolveGlyph2(rightNode) }) }) : null
3637
3781
  ] }) : input;
3638
3782
  if (!hasWrap) return field;
3639
3783
  const labelElement = hasLabel ? /* @__PURE__ */ jsxs26("label", { htmlFor: id, className: "stn-text-field__label", children: [
3784
+ labelIcon ? /* @__PURE__ */ jsx35("span", { className: "stn-text-field__label-icon", "aria-hidden": "true", children: resolveGlyph2(labelIcon) }) : null,
3640
3785
  /* @__PURE__ */ jsx35("span", { className: "stn-text-field__label-text", children: label }),
3641
3786
  required && /* @__PURE__ */ jsx35("span", { className: "stn-text-field__required", "aria-hidden": "true", children: "*" })
3642
3787
  ] }) : null;
@@ -3673,21 +3818,30 @@ var StnTextField = forwardRef22(function StnTextField2({
3673
3818
  });
3674
3819
 
3675
3820
  // src/components/StnDateRangeField.tsx
3676
- import { forwardRef as forwardRef23 } from "react";
3821
+ import { forwardRef as forwardRef23, useId as useId11 } from "react";
3677
3822
  import {
3678
3823
  formatStnDateRangeFieldValue
3679
3824
  } from "@stn-uiux/pub-ui/data/stnDateRangeField";
3680
3825
  import { jsx as jsx36, jsxs as jsxs27 } from "react/jsx-runtime";
3826
+ function resolveGlyph3(node) {
3827
+ if (typeof node === "string") return /* @__PURE__ */ jsx36(StnIcon, { name: node, size: 16, color: "currentColor" });
3828
+ return node;
3829
+ }
3681
3830
  function normalizeSize2(size) {
3682
3831
  if (!size) return "md";
3683
3832
  const s = String(size).toLowerCase();
3684
3833
  if (s === "s" || s === "sm") return "sm";
3685
3834
  if (s === "l" || s === "lg") return "lg";
3835
+ if (s === "xl") return "xl";
3686
3836
  return "md";
3687
3837
  }
3688
3838
  function sizeClass3(size) {
3689
3839
  return normalizeSize2(size);
3690
3840
  }
3841
+ function variantClass3(variant = "outline") {
3842
+ if (variant === "transparent") return "transparent";
3843
+ return "";
3844
+ }
3691
3845
  function resolveValue(value, format) {
3692
3846
  if (value == null) return null;
3693
3847
  if (value instanceof Date) return format(value);
@@ -3696,53 +3850,212 @@ function resolveValue(value, format) {
3696
3850
  }
3697
3851
  var StnDateRangeField = forwardRef23(function StnDateRangeField2({
3698
3852
  size = "md",
3853
+ variant = "outline",
3699
3854
  start,
3700
3855
  end,
3701
3856
  format = formatStnDateRangeFieldValue,
3702
3857
  startPlaceholder = "Start",
3703
3858
  endPlaceholder = "End",
3859
+ label,
3860
+ labelIcon,
3861
+ icon,
3862
+ labelPosition = "left",
3863
+ required = false,
3864
+ helperText,
3704
3865
  invalid,
3705
3866
  fullWidth,
3706
3867
  width,
3707
3868
  className,
3708
3869
  style,
3709
3870
  disabled,
3871
+ id: idProp,
3710
3872
  type = "button",
3711
3873
  "aria-invalid": ariaInvalid,
3712
3874
  ...rest
3713
3875
  }, ref) {
3876
+ const autoId = useId11();
3877
+ const rootId = idProp ?? `stn-date-range-${autoId.replace(/:/g, "")}`;
3714
3878
  const startText = resolveValue(start, format);
3715
3879
  const endText = resolveValue(end, format);
3716
3880
  const isEmpty = !startText && !endText;
3717
- const resolvedStyle = width !== void 0 ? { ...style, width: typeof width === "number" ? `${width}px` : width } : style;
3718
- return /* @__PURE__ */ jsx36(
3881
+ const widthProps = resolveInputWidthProps("stn-date-range-field", fullWidth, width);
3882
+ const hasLabel = label != null && label !== "";
3883
+ const hasHelper = helperText != null && helperText !== "";
3884
+ const hasWrap = hasLabel || hasHelper;
3885
+ const buttonNode = /* @__PURE__ */ jsx36(
3719
3886
  "button",
3720
3887
  {
3721
3888
  ref,
3889
+ id: rootId,
3722
3890
  type,
3723
3891
  disabled,
3724
3892
  "aria-invalid": invalid ? true : ariaInvalid,
3725
3893
  className: cn(
3726
- "stn-date-range-field",
3727
- sizeClass3(size),
3728
- fullWidth && "stn-date-range-field--full w100p",
3729
- invalid && "stn-date-range-field--invalid",
3730
- isEmpty && "is-empty",
3894
+ "stn-date-range-field",
3895
+ sizeClass3(size),
3896
+ variantClass3(variant),
3897
+ !hasWrap && widthProps.className,
3898
+ fullWidth && "stn-date-range-field--full w100p",
3899
+ invalid && "stn-date-range-field--invalid",
3900
+ isEmpty && "is-empty",
3901
+ !hasWrap && className
3902
+ ),
3903
+ style: !hasWrap ? widthProps.style ?? style : void 0,
3904
+ ...rest,
3905
+ children: /* @__PURE__ */ jsxs27("span", { className: "stn-date-range-field__inner", children: [
3906
+ /* @__PURE__ */ jsxs27("span", { className: "stn-date-range-field__text", children: [
3907
+ /* @__PURE__ */ jsx36("span", { className: cn("stn-date-range-field__value", !startText && "is-placeholder"), children: startText ?? startPlaceholder }),
3908
+ /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__sep", "aria-hidden": "true", children: "~" }),
3909
+ /* @__PURE__ */ jsx36("span", { className: cn("stn-date-range-field__value", !endText && "is-placeholder"), children: endText ?? endPlaceholder })
3910
+ ] }),
3911
+ /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__icon", "aria-hidden": "true" })
3912
+ ] })
3913
+ }
3914
+ );
3915
+ if (!hasWrap) return buttonNode;
3916
+ const resolvedLabelIcon = labelIcon ?? icon;
3917
+ const labelElement = hasLabel ? /* @__PURE__ */ jsxs27("label", { htmlFor: rootId, className: "stn-date-range-field__label", children: [
3918
+ resolvedLabelIcon ? /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__label-icon", "aria-hidden": "true", children: resolveGlyph3(resolvedLabelIcon) }) : null,
3919
+ /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__label-text", children: label }),
3920
+ required && /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__required", "aria-hidden": "true", children: "*" })
3921
+ ] }) : null;
3922
+ const isRow = labelPosition === "left" || labelPosition === "right";
3923
+ return /* @__PURE__ */ jsxs27(
3924
+ "div",
3925
+ {
3926
+ className: cn(
3927
+ "stn-date-range-field-wrap",
3928
+ hasLabel && (isRow ? "stn-date-range-field-wrap--row" : "stn-date-range-field-wrap--col"),
3929
+ hasLabel && labelPosition === "left" && "stn-date-range-field-wrap--label-left",
3930
+ hasLabel && labelPosition === "right" && "stn-date-range-field-wrap--label-right",
3931
+ hasLabel && labelPosition === "top" && "stn-date-range-field-wrap--label-top",
3932
+ invalid && "is-error",
3933
+ widthProps.className,
3934
+ className
3935
+ ),
3936
+ style: widthProps.style ?? style,
3937
+ children: [
3938
+ hasLabel && (labelPosition === "left" || labelPosition === "top") ? labelElement : null,
3939
+ /* @__PURE__ */ jsxs27("div", { className: "stn-date-range-field-wrap__body", children: [
3940
+ buttonNode,
3941
+ hasHelper && /* @__PURE__ */ jsx36(
3942
+ "span",
3943
+ {
3944
+ id: `${rootId}-helper`,
3945
+ className: cn(
3946
+ "stn-date-range-field__helper",
3947
+ invalid && "stn-date-range-field__helper--error"
3948
+ ),
3949
+ children: helperText
3950
+ }
3951
+ )
3952
+ ] }),
3953
+ hasLabel && labelPosition === "right" ? labelElement : null
3954
+ ]
3955
+ }
3956
+ );
3957
+ });
3958
+
3959
+ // src/components/StnLabelPrefix.tsx
3960
+ import { useId as useId12 } from "react";
3961
+ import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
3962
+ function sizeClass4(size) {
3963
+ return size;
3964
+ }
3965
+ function variantClass4(variant) {
3966
+ return variant;
3967
+ }
3968
+ function StnLabelPrefix({
3969
+ label,
3970
+ labelIcon,
3971
+ labelPosition = "prefix",
3972
+ required = false,
3973
+ size = "md",
3974
+ variant = "outline",
3975
+ color,
3976
+ error = false,
3977
+ invalid = false,
3978
+ radius,
3979
+ fullWidth = false,
3980
+ width,
3981
+ helperText,
3982
+ disabled = false,
3983
+ children,
3984
+ className,
3985
+ id: idProp,
3986
+ ...rest
3987
+ }) {
3988
+ const autoId = useId12();
3989
+ const id = idProp ?? autoId;
3990
+ const isError = error || invalid || color === "error";
3991
+ const hasHelper = helperText != null && helperText !== "";
3992
+ const helperId = hasHelper ? `${id}-helper` : void 0;
3993
+ const widthProps = resolveInputWidthProps("stn-label-prefix", fullWidth, width);
3994
+ const rootClass = cn(
3995
+ "stn-label-prefix",
3996
+ sizeClass4(size),
3997
+ variantClass4(variant),
3998
+ color && color !== "error" && color,
3999
+ labelPosition === "suffix" && "stn-label-prefix--suffix",
4000
+ radius && `radius-${radius}`,
4001
+ !hasHelper && widthProps.className,
4002
+ disabled && "is-disabled",
4003
+ isError && "is-error",
4004
+ !hasHelper && className
4005
+ );
4006
+ const labelSection = /* @__PURE__ */ jsxs28("span", { className: "stn-label-prefix__label", children: [
4007
+ labelIcon != null && /* @__PURE__ */ jsx37("span", { className: "stn-label-prefix__icon", "aria-hidden": "true", children: labelIcon }),
4008
+ /* @__PURE__ */ jsxs28("span", { className: "stn-label-prefix__text", children: [
4009
+ label,
4010
+ required && /* @__PURE__ */ jsx37("span", { className: "stn-label-prefix__required", "aria-hidden": "true", children: "*" })
4011
+ ] }),
4012
+ /* @__PURE__ */ jsx37("span", { className: "stn-label-prefix__divider", "aria-hidden": "true" })
4013
+ ] });
4014
+ const prefixNode = /* @__PURE__ */ jsxs28(
4015
+ "div",
4016
+ {
4017
+ id: !hasHelper ? id : void 0,
4018
+ className: rootClass,
4019
+ style: !hasHelper ? widthProps.style : void 0,
4020
+ "aria-disabled": disabled || void 0,
4021
+ "aria-invalid": isError || void 0,
4022
+ "aria-describedby": helperId,
4023
+ ...!hasHelper ? rest : {},
4024
+ children: [
4025
+ labelSection,
4026
+ /* @__PURE__ */ jsx37("span", { className: "stn-label-prefix__control", children })
4027
+ ]
4028
+ }
4029
+ );
4030
+ if (!hasHelper) {
4031
+ return prefixNode;
4032
+ }
4033
+ return /* @__PURE__ */ jsxs28(
4034
+ "div",
4035
+ {
4036
+ id,
4037
+ className: cn(
4038
+ "stn-label-prefix-wrap",
4039
+ isError && "is-error",
4040
+ widthProps.className,
3731
4041
  className
3732
4042
  ),
3733
- style: resolvedStyle,
4043
+ style: widthProps.style,
3734
4044
  ...rest,
3735
- children: /* @__PURE__ */ jsxs27("span", { className: "stn-date-range-field__inner", children: [
3736
- /* @__PURE__ */ jsxs27("span", { className: "stn-date-range-field__text", children: [
3737
- /* @__PURE__ */ jsx36("span", { className: cn("stn-date-range-field__value", !startText && "is-placeholder"), children: startText ?? startPlaceholder }),
3738
- /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__sep", "aria-hidden": "true", children: "~" }),
3739
- /* @__PURE__ */ jsx36("span", { className: cn("stn-date-range-field__value", !endText && "is-placeholder"), children: endText ?? endPlaceholder })
3740
- ] }),
3741
- /* @__PURE__ */ jsx36("span", { className: "stn-date-range-field__icon", "aria-hidden": "true" })
3742
- ] })
4045
+ children: [
4046
+ prefixNode,
4047
+ /* @__PURE__ */ jsx37(
4048
+ "p",
4049
+ {
4050
+ id: helperId,
4051
+ className: cn("stn-label-prefix__helper", isError && "stn-label-prefix__helper--error"),
4052
+ children: helperText
4053
+ }
4054
+ )
4055
+ ]
3743
4056
  }
3744
4057
  );
3745
- });
4058
+ }
3746
4059
 
3747
4060
  // src/index.ts
3748
4061
  import {
@@ -3797,18 +4110,19 @@ import {
3797
4110
  } from "@stn-uiux/pub-ui/data/stnSearchRequirement";
3798
4111
 
3799
4112
  // src/patterns/search/StnSearchRequirementBar.tsx
3800
- import { jsx as jsx37, jsxs as jsxs28 } from "react/jsx-runtime";
4113
+ import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
3801
4114
  function StnSearchRequirementBar({
3802
4115
  children,
3803
4116
  className,
3804
4117
  density = "default",
3805
4118
  ...rest
3806
4119
  }) {
3807
- return /* @__PURE__ */ jsx37(
4120
+ return /* @__PURE__ */ jsx38(
3808
4121
  "div",
3809
4122
  {
3810
4123
  className: cn(
3811
4124
  "stn-search-requirement",
4125
+ density === "compact" && "compact",
3812
4126
  density === "compact" && "stn-search-requirement--compact",
3813
4127
  className
3814
4128
  ),
@@ -3819,7 +4133,7 @@ function StnSearchRequirementBar({
3819
4133
  );
3820
4134
  }
3821
4135
  function StnSearchRequirementBarFields({ children, className, ...rest }) {
3822
- return /* @__PURE__ */ jsx37("div", { className: cn("stn-search-requirement__fields", className), "data-stn-search-requirement": "fields", ...rest, children });
4136
+ return /* @__PURE__ */ jsx38("div", { className: cn("stn-search-requirement__fields", className), "data-stn-search-requirement": "fields", ...rest, children });
3823
4137
  }
3824
4138
  function StnSearchRequirementBarField({
3825
4139
  label,
@@ -3829,19 +4143,19 @@ function StnSearchRequirementBarField({
3829
4143
  controlClassName,
3830
4144
  ...rest
3831
4145
  }) {
3832
- return /* @__PURE__ */ jsxs28("div", { className: cn("stn-search-requirement__field", className), "data-stn-search-requirement": "field", ...rest, children: [
3833
- /* @__PURE__ */ jsx37("span", { className: cn("stn-search-requirement__label", labelClassName), children: label }),
3834
- /* @__PURE__ */ jsx37("div", { className: cn("stn-search-requirement__control", controlClassName), children })
4146
+ return /* @__PURE__ */ jsxs29("div", { className: cn("stn-search-requirement__field", className), "data-stn-search-requirement": "field", ...rest, children: [
4147
+ /* @__PURE__ */ jsx38("span", { className: cn("stn-search-requirement__label", labelClassName), children: label }),
4148
+ /* @__PURE__ */ jsx38("div", { className: cn("stn-search-requirement__control", controlClassName), children })
3835
4149
  ] });
3836
4150
  }
3837
4151
  function StnSearchRequirementBarSearchButton({
3838
4152
  children = "\uAC80\uC0C9",
3839
- size = "M",
3840
- icon = /* @__PURE__ */ jsx37(StnIcon, { name: "line/search", size: 16, color: "currentColor" }),
4153
+ size = "md",
4154
+ icon = /* @__PURE__ */ jsx38(StnIcon, { name: "line/search", size: 16, color: "currentColor" }),
3841
4155
  className,
3842
4156
  ...rest
3843
4157
  }) {
3844
- return /* @__PURE__ */ jsx37(
4158
+ return /* @__PURE__ */ jsx38(
3845
4159
  StnButton,
3846
4160
  {
3847
4161
  size,
@@ -3863,10 +4177,10 @@ function StnSearchRequirementBarExport({
3863
4177
  "aria-label": ariaLabel = "Excel\uBCF4\uB0B4\uAE30",
3864
4178
  ...rest
3865
4179
  }) {
3866
- return /* @__PURE__ */ jsx37(
4180
+ return /* @__PURE__ */ jsx38(
3867
4181
  StnButton,
3868
4182
  {
3869
- icon: icon ?? /* @__PURE__ */ jsx37(StnIcon, { name, size: 24, color: "currentColor" }),
4183
+ icon: icon ?? /* @__PURE__ */ jsx38(StnIcon, { name, size: 24, color: "currentColor" }),
3870
4184
  variant,
3871
4185
  size,
3872
4186
  "aria-label": ariaLabel,
@@ -3877,7 +4191,7 @@ function StnSearchRequirementBarExport({
3877
4191
  );
3878
4192
  }
3879
4193
  function StnSearchRequirementBarDivider({ className, ...rest }) {
3880
- return /* @__PURE__ */ jsx37(
4194
+ return /* @__PURE__ */ jsx38(
3881
4195
  "span",
3882
4196
  {
3883
4197
  className: cn("stn-search-requirement__divider", className),
@@ -3909,7 +4223,7 @@ import { createPortal as createPortal2 } from "react-dom";
3909
4223
  import { formatStnDateRangeFieldValue as formatStnDateRangeFieldValue2 } from "@stn-uiux/pub-ui/data/stnDateRangeField";
3910
4224
 
3911
4225
  // src/components/datePicker/StnDateRangePicker.tsx
3912
- import { useCallback as useCallback6, useEffect as useEffect8, useId as useId11, useMemo as useMemo3, useState as useState8 } from "react";
4226
+ import { useCallback as useCallback6, useEffect as useEffect8, useId as useId13, useMemo as useMemo3, useState as useState8 } from "react";
3913
4227
  import {
3914
4228
  STN_DATE_PICKER_WEEKDAYS
3915
4229
  } from "@stn-uiux/pub-ui/data/stnDatePicker";
@@ -3969,7 +4283,7 @@ function normalizeRange(start, end) {
3969
4283
  }
3970
4284
 
3971
4285
  // src/components/datePicker/StnDateRangePicker.tsx
3972
- import { jsx as jsx38, jsxs as jsxs29 } from "react/jsx-runtime";
4286
+ import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
3973
4287
  function useDraftRange(value, open) {
3974
4288
  const [draft, setDraft] = useState8(value);
3975
4289
  useEffect8(() => {
@@ -3980,19 +4294,19 @@ function useDraftRange(value, open) {
3980
4294
  function CalendarPanel({ month, range, onPick, onPrev, onNext, showPrev = true, showNext = true }) {
3981
4295
  const days = useMemo3(() => buildMonthGrid(month), [month]);
3982
4296
  const { start, end } = range;
3983
- return /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-panel", children: [
3984
- /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-panel__header", children: [
3985
- showPrev ? /* @__PURE__ */ jsx38("button", { type: "button", className: "stn-date-picker-panel__nav", onClick: onPrev, "aria-label": "Previous month", children: "\u2039" }) : /* @__PURE__ */ jsx38("span", { className: "stn-date-picker-panel__nav", "aria-hidden": "true" }),
3986
- /* @__PURE__ */ jsx38("p", { className: "stn-date-picker-panel__title", children: formatMonthTitle(month) }),
3987
- showNext ? /* @__PURE__ */ jsx38("button", { type: "button", className: "stn-date-picker-panel__nav", onClick: onNext, "aria-label": "Next month", children: "\u203A" }) : /* @__PURE__ */ jsx38("span", { className: "stn-date-picker-panel__nav", "aria-hidden": "true" })
4297
+ return /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-panel", children: [
4298
+ /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-panel__header", children: [
4299
+ showPrev ? /* @__PURE__ */ jsx39("button", { type: "button", className: "stn-date-picker-panel__nav", onClick: onPrev, "aria-label": "Previous month", children: "\u2039" }) : /* @__PURE__ */ jsx39("span", { className: "stn-date-picker-panel__nav", "aria-hidden": "true" }),
4300
+ /* @__PURE__ */ jsx39("p", { className: "stn-date-picker-panel__title", children: formatMonthTitle(month) }),
4301
+ showNext ? /* @__PURE__ */ jsx39("button", { type: "button", className: "stn-date-picker-panel__nav", onClick: onNext, "aria-label": "Next month", children: "\u203A" }) : /* @__PURE__ */ jsx39("span", { className: "stn-date-picker-panel__nav", "aria-hidden": "true" })
3988
4302
  ] }),
3989
- /* @__PURE__ */ jsxs29("table", { className: "stn-date-picker-content", children: [
3990
- /* @__PURE__ */ jsx38("thead", { children: /* @__PURE__ */ jsx38("tr", { children: STN_DATE_PICKER_WEEKDAYS.map((label) => /* @__PURE__ */ jsx38("th", { scope: "col", children: label }, label)) }) }),
3991
- /* @__PURE__ */ jsx38("tbody", { children: Array.from({ length: 6 }, (_, row) => /* @__PURE__ */ jsx38("tr", { children: days.slice(row * 7, row * 7 + 7).map((cell) => {
4303
+ /* @__PURE__ */ jsxs30("table", { className: "stn-date-picker-content", children: [
4304
+ /* @__PURE__ */ jsx39("thead", { children: /* @__PURE__ */ jsx39("tr", { children: STN_DATE_PICKER_WEEKDAYS.map((label) => /* @__PURE__ */ jsx39("th", { scope: "col", children: label }, label)) }) }),
4305
+ /* @__PURE__ */ jsx39("tbody", { children: Array.from({ length: 6 }, (_, row) => /* @__PURE__ */ jsx39("tr", { children: days.slice(row * 7, row * 7 + 7).map((cell) => {
3992
4306
  const inRange = start && end && isBetweenDays(cell.date, start, end);
3993
4307
  const isStart = start ? isSameDay(cell.date, start) : false;
3994
4308
  const isEnd = end ? isSameDay(cell.date, end) : false;
3995
- return /* @__PURE__ */ jsx38(
4309
+ return /* @__PURE__ */ jsx39(
3996
4310
  "td",
3997
4311
  {
3998
4312
  className: cn(
@@ -4002,7 +4316,7 @@ function CalendarPanel({ month, range, onPick, onPrev, onNext, showPrev = true,
4002
4316
  isStart && "stn-date-picker-cell--range-start",
4003
4317
  isEnd && "stn-date-picker-cell--range-end"
4004
4318
  ),
4005
- children: /* @__PURE__ */ jsx38(
4319
+ children: /* @__PURE__ */ jsx39(
4006
4320
  "button",
4007
4321
  {
4008
4322
  type: "button",
@@ -4024,16 +4338,16 @@ function TimeColumns({ label, value, onChange }) {
4024
4338
  const seconds = value?.getSeconds() ?? 0;
4025
4339
  const base = value ?? /* @__PURE__ */ new Date();
4026
4340
  const patch = (h, m, s) => onChange(setTimePart(base, h, m, s));
4027
- return /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-time__side", children: [
4028
- /* @__PURE__ */ jsx38("span", { className: "stn-date-picker-time__label", children: label }),
4029
- /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-time__columns", children: [
4030
- /* @__PURE__ */ jsx38(
4341
+ return /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-time__side", children: [
4342
+ /* @__PURE__ */ jsx39("span", { className: "stn-date-picker-time__label", children: label }),
4343
+ /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-time__columns", children: [
4344
+ /* @__PURE__ */ jsx39(
4031
4345
  StnScroll,
4032
4346
  {
4033
4347
  variant: "arrows",
4034
4348
  size: "thin",
4035
4349
  className: "stn-date-picker-time__scroll",
4036
- children: /* @__PURE__ */ jsx38("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} hour`, children: Array.from({ length: 24 }, (_, h) => /* @__PURE__ */ jsx38("li", { children: /* @__PURE__ */ jsx38(
4350
+ children: /* @__PURE__ */ jsx39("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} hour`, children: Array.from({ length: 24 }, (_, h) => /* @__PURE__ */ jsx39("li", { children: /* @__PURE__ */ jsx39(
4037
4351
  "button",
4038
4352
  {
4039
4353
  type: "button",
@@ -4044,13 +4358,13 @@ function TimeColumns({ label, value, onChange }) {
4044
4358
  ) }, h)) })
4045
4359
  }
4046
4360
  ),
4047
- /* @__PURE__ */ jsx38(
4361
+ /* @__PURE__ */ jsx39(
4048
4362
  StnScroll,
4049
4363
  {
4050
4364
  variant: "arrows",
4051
4365
  size: "thin",
4052
4366
  className: "stn-date-picker-time__scroll",
4053
- children: /* @__PURE__ */ jsx38("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} minute`, children: Array.from({ length: 60 }, (_, m) => /* @__PURE__ */ jsx38("li", { children: /* @__PURE__ */ jsx38(
4367
+ children: /* @__PURE__ */ jsx39("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} minute`, children: Array.from({ length: 60 }, (_, m) => /* @__PURE__ */ jsx39("li", { children: /* @__PURE__ */ jsx39(
4054
4368
  "button",
4055
4369
  {
4056
4370
  type: "button",
@@ -4061,13 +4375,13 @@ function TimeColumns({ label, value, onChange }) {
4061
4375
  ) }, m)) })
4062
4376
  }
4063
4377
  ),
4064
- /* @__PURE__ */ jsx38(
4378
+ /* @__PURE__ */ jsx39(
4065
4379
  StnScroll,
4066
4380
  {
4067
4381
  variant: "arrows",
4068
4382
  size: "thin",
4069
4383
  className: "stn-date-picker-time__scroll",
4070
- children: /* @__PURE__ */ jsx38("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} second`, children: Array.from({ length: 60 }, (_, s) => /* @__PURE__ */ jsx38("li", { children: /* @__PURE__ */ jsx38(
4384
+ children: /* @__PURE__ */ jsx39("ul", { className: "stn-date-picker-time__column", "aria-label": `${label} second`, children: Array.from({ length: 60 }, (_, s) => /* @__PURE__ */ jsx39("li", { children: /* @__PURE__ */ jsx39(
4071
4385
  "button",
4072
4386
  {
4073
4387
  type: "button",
@@ -4092,7 +4406,7 @@ function StnDateRangePicker({
4092
4406
  style,
4093
4407
  anchorRect
4094
4408
  }) {
4095
- const titleId = useId11();
4409
+ const titleId = useId13();
4096
4410
  const [draft, setDraft] = useDraftRange(value, open);
4097
4411
  const [leftMonth, setLeftMonth] = useState8(() => startOfMonth(draft.start ?? draft.end ?? /* @__PURE__ */ new Date()));
4098
4412
  useEffect8(() => {
@@ -4146,7 +4460,7 @@ function StnDateRangePicker({
4146
4460
  left: anchorRect.left,
4147
4461
  ...style
4148
4462
  } : style ?? {};
4149
- return /* @__PURE__ */ jsx38(
4463
+ return /* @__PURE__ */ jsx39(
4150
4464
  "div",
4151
4465
  {
4152
4466
  className: cn("stn-date-picker-dropdown", className),
@@ -4154,10 +4468,10 @@ function StnDateRangePicker({
4154
4468
  role: "dialog",
4155
4469
  "aria-modal": "false",
4156
4470
  "aria-labelledby": titleId,
4157
- children: /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-dropdown__body", children: [
4158
- /* @__PURE__ */ jsx38("span", { id: titleId, className: "stn-sf__visually-hidden", children: "Date range picker" }),
4159
- /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-dropdown__panels", children: [
4160
- /* @__PURE__ */ jsx38(
4471
+ children: /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-dropdown__body", children: [
4472
+ /* @__PURE__ */ jsx39("span", { id: titleId, className: "stn-sf__visually-hidden", children: "Date range picker" }),
4473
+ /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-dropdown__panels", children: [
4474
+ /* @__PURE__ */ jsx39(
4161
4475
  CalendarPanel,
4162
4476
  {
4163
4477
  month: leftMonth,
@@ -4168,7 +4482,7 @@ function StnDateRangePicker({
4168
4482
  showNext: false
4169
4483
  }
4170
4484
  ),
4171
- /* @__PURE__ */ jsx38(
4485
+ /* @__PURE__ */ jsx39(
4172
4486
  CalendarPanel,
4173
4487
  {
4174
4488
  month: rightMonth,
@@ -4180,8 +4494,8 @@ function StnDateRangePicker({
4180
4494
  }
4181
4495
  )
4182
4496
  ] }),
4183
- showTime ? /* @__PURE__ */ jsxs29("div", { className: "stn-date-picker-time", children: [
4184
- /* @__PURE__ */ jsx38(
4497
+ showTime ? /* @__PURE__ */ jsxs30("div", { className: "stn-date-picker-time", children: [
4498
+ /* @__PURE__ */ jsx39(
4185
4499
  TimeColumns,
4186
4500
  {
4187
4501
  label: "\uC2DC\uC791",
@@ -4189,7 +4503,7 @@ function StnDateRangePicker({
4189
4503
  onChange: (start) => updateDraft({ ...draft, start })
4190
4504
  }
4191
4505
  ),
4192
- /* @__PURE__ */ jsx38(
4506
+ /* @__PURE__ */ jsx39(
4193
4507
  TimeColumns,
4194
4508
  {
4195
4509
  label: "\uC885\uB8CC",
@@ -4198,14 +4512,14 @@ function StnDateRangePicker({
4198
4512
  }
4199
4513
  )
4200
4514
  ] }) : null,
4201
- /* @__PURE__ */ jsx38("div", { className: "stn-date-picker-footer", children: /* @__PURE__ */ jsx38(StnButton, { size: "md", variant: "contained", onClick: handleApply, disabled: !draft.start || !draft.end, children: "\uD655\uC778" }) })
4515
+ /* @__PURE__ */ jsx39("div", { className: "stn-date-picker-footer", children: /* @__PURE__ */ jsx39(StnButton, { size: "md", variant: "contained", onClick: handleApply, disabled: !draft.start || !draft.end, children: "\uD655\uC778" }) })
4202
4516
  ] })
4203
4517
  }
4204
4518
  );
4205
4519
  }
4206
4520
 
4207
4521
  // src/components/datePicker/StnDateRangePickerField.tsx
4208
- import { jsx as jsx39, jsxs as jsxs30 } from "react/jsx-runtime";
4522
+ import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
4209
4523
  function useControllableRange(controlled, defaultValue, onChange) {
4210
4524
  const [internal, setInternal] = useState9(defaultValue);
4211
4525
  const value = controlled ?? internal;
@@ -4219,18 +4533,25 @@ function useControllableRange(controlled, defaultValue, onChange) {
4219
4533
  return [value, setValue];
4220
4534
  }
4221
4535
  var EMPTY_RANGE = { start: null, end: null };
4536
+ function formatDateOnly(date) {
4537
+ const y = date.getFullYear();
4538
+ const m = String(date.getMonth() + 1).padStart(2, "0");
4539
+ const d = String(date.getDate()).padStart(2, "0");
4540
+ return `${y}-${m}-${d}`;
4541
+ }
4222
4542
  function StnDateRangePickerField({
4223
4543
  value: valueProp,
4224
4544
  defaultValue = EMPTY_RANGE,
4225
4545
  onChange,
4226
4546
  showTime = true,
4227
- format = formatStnDateRangeFieldValue2,
4547
+ format: formatProp,
4228
4548
  className,
4229
4549
  pickerClassName,
4230
4550
  pickerStyle,
4231
4551
  disabled,
4232
4552
  ...fieldProps
4233
4553
  }) {
4554
+ const format = formatProp ?? (showTime ? formatStnDateRangeFieldValue2 : formatDateOnly);
4234
4555
  const [value, setValue] = useControllableRange(valueProp, defaultValue, onChange);
4235
4556
  const [open, setOpen] = useState9(false);
4236
4557
  const [anchorRect, setAnchorRect] = useState9(null);
@@ -4270,8 +4591,8 @@ function StnDateRangePickerField({
4270
4591
  document.addEventListener("keydown", onKeyDown);
4271
4592
  return () => document.removeEventListener("keydown", onKeyDown);
4272
4593
  }, [open]);
4273
- return /* @__PURE__ */ jsxs30("div", { ref: rootRef, className: cn("stn-date-picker-field", className), children: [
4274
- /* @__PURE__ */ jsx39(
4594
+ return /* @__PURE__ */ jsxs31("div", { ref: rootRef, className: cn("stn-date-picker-field", className), children: [
4595
+ /* @__PURE__ */ jsx40(
4275
4596
  StnDateRangeField,
4276
4597
  {
4277
4598
  ref: triggerRef,
@@ -4291,7 +4612,7 @@ function StnDateRangePickerField({
4291
4612
  }
4292
4613
  ),
4293
4614
  open && typeof document !== "undefined" ? createPortal2(
4294
- /* @__PURE__ */ jsx39("div", { ref: panelRef, children: /* @__PURE__ */ jsx39(
4615
+ /* @__PURE__ */ jsx40("div", { ref: panelRef, children: /* @__PURE__ */ jsx40(
4295
4616
  StnDateRangePicker,
4296
4617
  {
4297
4618
  open: true,
@@ -4310,45 +4631,49 @@ function StnDateRangePickerField({
4310
4631
  }
4311
4632
 
4312
4633
  // src/patterns/search/StnSearchRequirementBarDemo.tsx
4313
- import { jsx as jsx40, jsxs as jsxs31 } from "react/jsx-runtime";
4634
+ import { jsx as jsx41, jsxs as jsxs32 } from "react/jsx-runtime";
4314
4635
  var ALL_OPTIONS = [{ value: "", label: "\uC804\uCCB4" }];
4315
4636
  function StnSearchRequirementBarDemo({ onSearch, onExport, className }) {
4316
4637
  const demo = STN_SEARCH_REQUIREMENT_DEMO_FIELDS;
4317
- return /* @__PURE__ */ jsxs31(StnSearchRequirementBar, { className, children: [
4318
- /* @__PURE__ */ jsxs31(StnSearchRequirementBar.Fields, { children: [
4319
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.Field, { label: demo.reportTypeText.label, children: /* @__PURE__ */ jsx40(
4638
+ return /* @__PURE__ */ jsxs32(StnSearchRequirementBar, { className, children: [
4639
+ /* @__PURE__ */ jsxs32(StnSearchRequirementBar.Fields, { children: [
4640
+ /* @__PURE__ */ jsx41(
4320
4641
  StnTextField,
4321
4642
  {
4322
- size: "M",
4643
+ label: demo.reportTypeText.label,
4644
+ size: "md",
4323
4645
  defaultValue: demo.reportTypeText.value,
4324
- width: 140,
4646
+ width: "w140",
4325
4647
  "aria-label": demo.reportTypeText.label
4326
4648
  }
4327
- ) }),
4328
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.Field, { label: demo.reportTypeSelect.label, children: /* @__PURE__ */ jsx40(
4649
+ ),
4650
+ /* @__PURE__ */ jsx41(
4329
4651
  StnDropdown,
4330
4652
  {
4653
+ label: demo.reportTypeSelect.label,
4331
4654
  size: "md",
4332
- width: 130,
4655
+ width: "w140",
4333
4656
  options: ALL_OPTIONS,
4334
4657
  defaultValue: demo.reportTypeSelect.value,
4335
4658
  "aria-label": demo.reportTypeSelect.label
4336
4659
  }
4337
- ) }),
4338
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.Field, { label: demo.periodType.label, children: /* @__PURE__ */ jsx40(
4660
+ ),
4661
+ /* @__PURE__ */ jsx41(
4339
4662
  StnDropdown,
4340
4663
  {
4664
+ label: demo.periodType.label,
4341
4665
  size: "md",
4342
- width: 130,
4666
+ width: "w140",
4343
4667
  options: ALL_OPTIONS,
4344
4668
  defaultValue: demo.periodType.value,
4345
4669
  "aria-label": demo.periodType.label
4346
4670
  }
4347
- ) }),
4348
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.Field, { label: demo.period.label, children: /* @__PURE__ */ jsx40(
4671
+ ),
4672
+ /* @__PURE__ */ jsx41(
4349
4673
  StnDateRangePickerField,
4350
4674
  {
4351
- size: "M",
4675
+ label: demo.period.label,
4676
+ size: "md",
4352
4677
  defaultValue: {
4353
4678
  start: parseStnDateRangeFieldValue(STN_DATE_RANGE_FIELD_DEMO.start),
4354
4679
  end: parseStnDateRangeFieldValue(STN_DATE_RANGE_FIELD_DEMO.end)
@@ -4356,10 +4681,10 @@ function StnSearchRequirementBarDemo({ onSearch, onExport, className }) {
4356
4681
  showTime: true,
4357
4682
  "aria-label": demo.period.label
4358
4683
  }
4359
- ) })
4684
+ )
4360
4685
  ] }),
4361
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.SearchButton, { onClick: onSearch }),
4362
- /* @__PURE__ */ jsx40(StnSearchRequirementBar.Export, { onClick: onExport })
4686
+ /* @__PURE__ */ jsx41(StnSearchRequirementBar.SearchButton, { onClick: onSearch }),
4687
+ /* @__PURE__ */ jsx41(StnSearchRequirementBar.Export, { onClick: onExport })
4363
4688
  ] });
4364
4689
  }
4365
4690
 
@@ -4373,8 +4698,8 @@ import {
4373
4698
  } from "@stn-uiux/pub-ui/data/stnHeader";
4374
4699
 
4375
4700
  // src/patterns/header/StnHeader.tsx
4376
- import { jsx as jsx41 } from "react/jsx-runtime";
4377
- function variantClass3(variant) {
4701
+ import { jsx as jsx42 } from "react/jsx-runtime";
4702
+ function variantClass5(variant) {
4378
4703
  if (variant === "page") return "stn-header--page";
4379
4704
  return void 0;
4380
4705
  }
@@ -4400,12 +4725,12 @@ function StnHeader({
4400
4725
  ...dynamicStyles,
4401
4726
  ...style
4402
4727
  };
4403
- return /* @__PURE__ */ jsx41(
4728
+ return /* @__PURE__ */ jsx42(
4404
4729
  "header",
4405
4730
  {
4406
4731
  className: cn(
4407
4732
  "stn-header",
4408
- variantClass3(variant),
4733
+ variantClass5(variant),
4409
4734
  isNamedPadding ? `padding-${padding}` : void 0,
4410
4735
  isNamedGap ? `gap-${gap}` : void 0,
4411
4736
  className
@@ -4418,20 +4743,20 @@ function StnHeader({
4418
4743
  );
4419
4744
  }
4420
4745
  function StnHeaderLeft({ children, className, ...rest }) {
4421
- return /* @__PURE__ */ jsx41("div", { className: cn("stn-header__left", className), "data-stn-header-region": "left", ...rest, children });
4746
+ return /* @__PURE__ */ jsx42("div", { className: cn("stn-header__left", className), "data-stn-header-region": "left", ...rest, children });
4422
4747
  }
4423
4748
  function StnHeaderCenter({ children, className, ...rest }) {
4424
- return /* @__PURE__ */ jsx41("div", { className: cn("stn-header__center", className), "data-stn-header-region": "center", ...rest, children });
4749
+ return /* @__PURE__ */ jsx42("div", { className: cn("stn-header__center", className), "data-stn-header-region": "center", ...rest, children });
4425
4750
  }
4426
4751
  function StnHeaderRight({ children, className, ...rest }) {
4427
- return /* @__PURE__ */ jsx41("div", { className: cn("stn-header__right", className), "data-stn-header-region": "right", ...rest, children });
4752
+ return /* @__PURE__ */ jsx42("div", { className: cn("stn-header__right", className), "data-stn-header-region": "right", ...rest, children });
4428
4753
  }
4429
4754
  StnHeader.Left = StnHeaderLeft;
4430
4755
  StnHeader.Center = StnHeaderCenter;
4431
4756
  StnHeader.Right = StnHeaderRight;
4432
4757
  function StnHeaderPageTitle({ children, className, title, ...rest }) {
4433
4758
  const autoTitle = typeof children === "string" ? children : void 0;
4434
- return /* @__PURE__ */ jsx41(
4759
+ return /* @__PURE__ */ jsx42(
4435
4760
  "h1",
4436
4761
  {
4437
4762
  className: cn("stn-header__page-title", className),
@@ -4443,7 +4768,7 @@ function StnHeaderPageTitle({ children, className, title, ...rest }) {
4443
4768
  }
4444
4769
  function StnHeaderSubTitle({ children, className, title, ...rest }) {
4445
4770
  const autoTitle = typeof children === "string" ? children : void 0;
4446
- return /* @__PURE__ */ jsx41(
4771
+ return /* @__PURE__ */ jsx42(
4447
4772
  "span",
4448
4773
  {
4449
4774
  className: cn("stn-header__subtitle", className),
@@ -4455,7 +4780,7 @@ function StnHeaderSubTitle({ children, className, title, ...rest }) {
4455
4780
  }
4456
4781
  function StnHeaderContextTitle({ children, className, title, ...rest }) {
4457
4782
  const autoTitle = typeof children === "string" ? children : void 0;
4458
- return /* @__PURE__ */ jsx41(
4783
+ return /* @__PURE__ */ jsx42(
4459
4784
  "span",
4460
4785
  {
4461
4786
  className: cn("stn-header__context-title", className),
@@ -4466,7 +4791,7 @@ function StnHeaderContextTitle({ children, className, title, ...rest }) {
4466
4791
  );
4467
4792
  }
4468
4793
  function StnHeaderToolbar({ children, className, ...rest }) {
4469
- return /* @__PURE__ */ jsx41("div", { className: cn("stn-header-toolbar", className), "data-stn-header-toolbar": true, ...rest, children });
4794
+ return /* @__PURE__ */ jsx42("div", { className: cn("stn-header-toolbar", className), "data-stn-header-toolbar": true, ...rest, children });
4470
4795
  }
4471
4796
 
4472
4797
  // src/index.ts
@@ -4484,7 +4809,7 @@ import {
4484
4809
  STN_LAYER0_BACKGROUND_DEMO_IMAGES,
4485
4810
  STN_LAYER0_MAP_LIGHT_OVERLAY
4486
4811
  } from "@stn-uiux/pub-ui/data/stnLayer0Background";
4487
- import { jsx as jsx42, jsxs as jsxs32 } from "react/jsx-runtime";
4812
+ import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
4488
4813
  function overlayStyle(overlay) {
4489
4814
  if (overlay == null || overlay <= 0) return void 0;
4490
4815
  const pct = `${Math.min(100, Math.max(0, overlay * 100))}%`;
@@ -4533,15 +4858,15 @@ function StnLayer0Background({
4533
4858
  const isImage = kind === "image" || Boolean(src || srcDark);
4534
4859
  if (isImage) {
4535
4860
  const paired = Boolean(src && srcDark);
4536
- return /* @__PURE__ */ jsx42(
4861
+ return /* @__PURE__ */ jsx43(
4537
4862
  "div",
4538
4863
  {
4539
4864
  className: cn("stn-layer0-bg", "image", className),
4540
4865
  "aria-hidden": alt === "" ? true : void 0,
4541
4866
  style: { ...overlayStyle(overlay), ...style },
4542
4867
  ...rest,
4543
- children: /* @__PURE__ */ jsxs32("div", { className: "stn-layer0-bg__media", children: [
4544
- src ? /* @__PURE__ */ jsx42(
4868
+ children: /* @__PURE__ */ jsxs33("div", { className: "stn-layer0-bg__media", children: [
4869
+ src ? /* @__PURE__ */ jsx43(
4545
4870
  "img",
4546
4871
  {
4547
4872
  className: cn("stn-layer0-bg__img", paired && "light"),
@@ -4550,7 +4875,7 @@ function StnLayer0Background({
4550
4875
  decoding: "async"
4551
4876
  }
4552
4877
  ) : null,
4553
- srcDark ? /* @__PURE__ */ jsx42(
4878
+ srcDark ? /* @__PURE__ */ jsx43(
4554
4879
  "img",
4555
4880
  {
4556
4881
  className: cn("stn-layer0-bg__img", paired ? "dark" : void 0),
@@ -4559,13 +4884,13 @@ function StnLayer0Background({
4559
4884
  decoding: "async"
4560
4885
  }
4561
4886
  ) : null,
4562
- overlay != null && overlay > 0 ? /* @__PURE__ */ jsx42("div", { className: "stn-layer0-bg__overlay", "aria-hidden": "true" }) : null,
4563
- overlayDarkRadial ? /* @__PURE__ */ jsx42("div", { className: "stn-layer0-bg__overlay radial", "aria-hidden": "true" }) : null
4887
+ overlay != null && overlay > 0 ? /* @__PURE__ */ jsx43("div", { className: "stn-layer0-bg__overlay", "aria-hidden": "true" }) : null,
4888
+ overlayDarkRadial ? /* @__PURE__ */ jsx43("div", { className: "stn-layer0-bg__overlay radial", "aria-hidden": "true" }) : null
4564
4889
  ] })
4565
4890
  }
4566
4891
  );
4567
4892
  }
4568
- return /* @__PURE__ */ jsx42(
4893
+ return /* @__PURE__ */ jsx43(
4569
4894
  "div",
4570
4895
  {
4571
4896
  className: cn("stn-layer0-bg", "color", color, className),
@@ -4602,7 +4927,7 @@ import {
4602
4927
 
4603
4928
  // src/components/StnEventBanner.tsx
4604
4929
  import React3 from "react";
4605
- import { jsx as jsx43, jsxs as jsxs33 } from "react/jsx-runtime";
4930
+ import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
4606
4931
  var SEVERITY_ICONS2 = {
4607
4932
  critical: "fill/alert4",
4608
4933
  major: "fill/alert3",
@@ -4610,7 +4935,7 @@ var SEVERITY_ICONS2 = {
4610
4935
  warning: "fill/alert1"
4611
4936
  };
4612
4937
  function DefaultTriangleIcon() {
4613
- return /* @__PURE__ */ jsxs33(
4938
+ return /* @__PURE__ */ jsxs34(
4614
4939
  "svg",
4615
4940
  {
4616
4941
  width: "20",
@@ -4620,7 +4945,7 @@ function DefaultTriangleIcon() {
4620
4945
  xmlns: "http://www.w3.org/2000/svg",
4621
4946
  "aria-hidden": "true",
4622
4947
  children: [
4623
- /* @__PURE__ */ jsx43(
4948
+ /* @__PURE__ */ jsx44(
4624
4949
  "path",
4625
4950
  {
4626
4951
  d: "M10.29 3.86L1.82 18A2 2 0 0 0 3.54 21H20.46A2 2 0 0 0 22.18 18L13.71 3.86A2 2 0 0 0 10.29 3.86Z",
@@ -4630,17 +4955,17 @@ function DefaultTriangleIcon() {
4630
4955
  strokeLinejoin: "round"
4631
4956
  }
4632
4957
  ),
4633
- /* @__PURE__ */ jsx43("line", { x1: "12", y1: "9", x2: "12", y2: "13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4634
- /* @__PURE__ */ jsx43("circle", { cx: "12", cy: "17", r: "1", fill: "currentColor" })
4958
+ /* @__PURE__ */ jsx44("line", { x1: "12", y1: "9", x2: "12", y2: "13", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round" }),
4959
+ /* @__PURE__ */ jsx44("circle", { cx: "12", cy: "17", r: "1", fill: "currentColor" })
4635
4960
  ]
4636
4961
  }
4637
4962
  );
4638
4963
  }
4639
4964
  function resolveDefaultIcon(severity) {
4640
4965
  if (severity === "critical") {
4641
- return /* @__PURE__ */ jsx43(DefaultTriangleIcon, {});
4966
+ return /* @__PURE__ */ jsx44(DefaultTriangleIcon, {});
4642
4967
  }
4643
- return /* @__PURE__ */ jsx43(StnIcon, { name: SEVERITY_ICONS2[severity] || "fill/alert4", size: 20 });
4968
+ return /* @__PURE__ */ jsx44(StnIcon, { name: SEVERITY_ICONS2[severity] || "fill/alert4", size: 20 });
4644
4969
  }
4645
4970
  var StnEventBanner = React3.forwardRef(
4646
4971
  ({
@@ -4659,7 +4984,7 @@ var StnEventBanner = React3.forwardRef(
4659
4984
  id,
4660
4985
  ...restProps
4661
4986
  }, ref) => {
4662
- return /* @__PURE__ */ jsxs33(
4987
+ return /* @__PURE__ */ jsxs34(
4663
4988
  "div",
4664
4989
  {
4665
4990
  ref,
@@ -4676,16 +5001,16 @@ var StnEventBanner = React3.forwardRef(
4676
5001
  ),
4677
5002
  ...restProps,
4678
5003
  children: [
4679
- /* @__PURE__ */ jsxs33("div", { className: "stn-event-banner__left", children: [
4680
- /* @__PURE__ */ jsx43("div", { className: "stn-event-banner__icon-wrap", children: icon ?? resolveDefaultIcon(severity) }),
4681
- /* @__PURE__ */ jsxs33("div", { className: "stn-event-banner__text", children: [
4682
- title && /* @__PURE__ */ jsx43("span", { className: "stn-event-banner__title", title: typeof title === "string" ? title : void 0, children: title }),
4683
- time && /* @__PURE__ */ jsx43("span", { className: "stn-event-banner__time", title: typeof time === "string" ? time : void 0, children: time })
5004
+ /* @__PURE__ */ jsxs34("div", { className: "stn-event-banner__left", children: [
5005
+ /* @__PURE__ */ jsx44("div", { className: "stn-event-banner__icon-wrap", children: icon ?? resolveDefaultIcon(severity) }),
5006
+ /* @__PURE__ */ jsxs34("div", { className: "stn-event-banner__text", children: [
5007
+ title && /* @__PURE__ */ jsx44("span", { className: "stn-event-banner__title", title: typeof title === "string" ? title : void 0, children: title }),
5008
+ time && /* @__PURE__ */ jsx44("span", { className: "stn-event-banner__time", title: typeof time === "string" ? time : void 0, children: time })
4684
5009
  ] })
4685
5010
  ] }),
4686
- /* @__PURE__ */ jsxs33("div", { className: "stn-event-banner__actions", children: [
5011
+ /* @__PURE__ */ jsxs34("div", { className: "stn-event-banner__actions", children: [
4687
5012
  actions,
4688
- actionText && /* @__PURE__ */ jsx43(
5013
+ actionText && /* @__PURE__ */ jsx44(
4689
5014
  "button",
4690
5015
  {
4691
5016
  type: "button",
@@ -4694,7 +5019,7 @@ var StnEventBanner = React3.forwardRef(
4694
5019
  children: actionText
4695
5020
  }
4696
5021
  ),
4697
- onClose && /* @__PURE__ */ jsx43(
5022
+ onClose && /* @__PURE__ */ jsx44(
4698
5023
  "button",
4699
5024
  {
4700
5025
  type: "button",
@@ -4713,9 +5038,9 @@ var StnEventBanner = React3.forwardRef(
4713
5038
  StnEventBanner.displayName = "StnEventBanner";
4714
5039
 
4715
5040
  // src/patterns/scaffold/StnLoadingSkeleton.tsx
4716
- import { jsx as jsx44, jsxs as jsxs34 } from "react/jsx-runtime";
5041
+ import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
4717
5042
  function StnLoadingSkeletonLine({ width = "full", className, style, ...rest }) {
4718
- return /* @__PURE__ */ jsx44(
5043
+ return /* @__PURE__ */ jsx45(
4719
5044
  "div",
4720
5045
  {
4721
5046
  className: cn(
@@ -4731,7 +5056,7 @@ function StnLoadingSkeletonLine({ width = "full", className, style, ...rest }) {
4731
5056
  );
4732
5057
  }
4733
5058
  function StnLoadingSkeletonBlock({ minHeight = 48, className, style, ...rest }) {
4734
- return /* @__PURE__ */ jsx44(
5059
+ return /* @__PURE__ */ jsx45(
4735
5060
  "div",
4736
5061
  {
4737
5062
  className: cn("stn-loading-skeleton__block", className),
@@ -4742,7 +5067,7 @@ function StnLoadingSkeletonBlock({ minHeight = 48, className, style, ...rest })
4742
5067
  );
4743
5068
  }
4744
5069
  function StnLoadingSkeletonCircle({ size = 40, className, style, ...rest }) {
4745
- return /* @__PURE__ */ jsx44(
5070
+ return /* @__PURE__ */ jsx45(
4746
5071
  "div",
4747
5072
  {
4748
5073
  className: cn("stn-loading-skeleton__circle", className),
@@ -4753,7 +5078,7 @@ function StnLoadingSkeletonCircle({ size = 40, className, style, ...rest }) {
4753
5078
  );
4754
5079
  }
4755
5080
  function StnLoadingSkeletonProfile({ avatarSize = 40, className, style, ...rest }) {
4756
- return /* @__PURE__ */ jsxs34(
5081
+ return /* @__PURE__ */ jsxs35(
4757
5082
  "div",
4758
5083
  {
4759
5084
  className: cn("stn-loading-skeleton--profile", className),
@@ -4762,17 +5087,17 @@ function StnLoadingSkeletonProfile({ avatarSize = 40, className, style, ...rest
4762
5087
  "aria-label": "\uD504\uB85C\uD544 \uB85C\uB529 \uC911",
4763
5088
  ...rest,
4764
5089
  children: [
4765
- /* @__PURE__ */ jsx44(StnLoadingSkeletonCircle, { size: avatarSize }),
4766
- /* @__PURE__ */ jsxs34("div", { className: "stn-loading-skeleton__profile-content", children: [
4767
- /* @__PURE__ */ jsx44(StnLoadingSkeletonLine, { width: "medium" }),
4768
- /* @__PURE__ */ jsx44(StnLoadingSkeletonLine, { width: "short" })
5090
+ /* @__PURE__ */ jsx45(StnLoadingSkeletonCircle, { size: avatarSize }),
5091
+ /* @__PURE__ */ jsxs35("div", { className: "stn-loading-skeleton__profile-content", children: [
5092
+ /* @__PURE__ */ jsx45(StnLoadingSkeletonLine, { width: "medium" }),
5093
+ /* @__PURE__ */ jsx45(StnLoadingSkeletonLine, { width: "short" })
4769
5094
  ] })
4770
5095
  ]
4771
5096
  }
4772
5097
  );
4773
5098
  }
4774
5099
  function StnLoadingSkeletonWidget({ lines = 4, className, style, ...rest }) {
4775
- return /* @__PURE__ */ jsx44(
5100
+ return /* @__PURE__ */ jsx45(
4776
5101
  "div",
4777
5102
  {
4778
5103
  className: cn("stn-loading-skeleton", "stn-loading-skeleton--widget", className),
@@ -4780,12 +5105,12 @@ function StnLoadingSkeletonWidget({ lines = 4, className, style, ...rest }) {
4780
5105
  "aria-busy": "true",
4781
5106
  "aria-label": "\uB85C\uB529 \uC911",
4782
5107
  ...rest,
4783
- children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx44(StnLoadingSkeletonLine, { width: i % 3 === 0 ? "short" : i % 2 === 0 ? "medium" : "full" }, i))
5108
+ children: Array.from({ length: lines }, (_, i) => /* @__PURE__ */ jsx45(StnLoadingSkeletonLine, { width: i % 3 === 0 ? "short" : i % 2 === 0 ? "medium" : "full" }, i))
4784
5109
  }
4785
5110
  );
4786
5111
  }
4787
5112
  function StnLoadingSkeletonTable({ rows = 5, cols = 4, className, style, ...rest }) {
4788
- return /* @__PURE__ */ jsx44(
5113
+ return /* @__PURE__ */ jsx45(
4789
5114
  "div",
4790
5115
  {
4791
5116
  className: cn("stn-loading-skeleton", "stn-loading-skeleton--table", className),
@@ -4793,7 +5118,7 @@ function StnLoadingSkeletonTable({ rows = 5, cols = 4, className, style, ...rest
4793
5118
  "aria-busy": "true",
4794
5119
  "aria-label": "\uD14C\uC774\uBE14 \uB85C\uB529 \uC911",
4795
5120
  ...rest,
4796
- children: Array.from({ length: rows }, (_, row) => /* @__PURE__ */ jsx44("div", { className: "stn-loading-skeleton__table-row", children: Array.from({ length: cols }, (_2, col) => /* @__PURE__ */ jsx44(StnLoadingSkeletonLine, {}, col)) }, row))
5121
+ children: Array.from({ length: rows }, (_, row) => /* @__PURE__ */ jsx45("div", { className: "stn-loading-skeleton__table-row", children: Array.from({ length: cols }, (_2, col) => /* @__PURE__ */ jsx45(StnLoadingSkeletonLine, {}, col)) }, row))
4797
5122
  }
4798
5123
  );
4799
5124
  }
@@ -4812,23 +5137,23 @@ function StnLoadingSkeletonRoot({
4812
5137
  ...rest
4813
5138
  }) {
4814
5139
  if (children != null) {
4815
- return /* @__PURE__ */ jsx44("div", { className: cn("stn-loading-skeleton", className), style, "aria-busy": "true", ...rest, children });
5140
+ return /* @__PURE__ */ jsx45("div", { className: cn("stn-loading-skeleton", className), style, "aria-busy": "true", ...rest, children });
4816
5141
  }
4817
5142
  const resolvedVariant = variant ?? "line";
4818
5143
  switch (resolvedVariant) {
4819
5144
  case "circle":
4820
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonCircle, { size, className, style, ...rest });
5145
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonCircle, { size, className, style, ...rest });
4821
5146
  case "block":
4822
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonBlock, { minHeight, className, style, ...rest });
5147
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonBlock, { minHeight, className, style, ...rest });
4823
5148
  case "profile":
4824
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonProfile, { avatarSize: avatarSize ?? size, className, style, ...rest });
5149
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonProfile, { avatarSize: avatarSize ?? size, className, style, ...rest });
4825
5150
  case "widget":
4826
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonWidget, { lines, className, style, ...rest });
5151
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonWidget, { lines, className, style, ...rest });
4827
5152
  case "table":
4828
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonTable, { rows, cols, className, style, ...rest });
5153
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonTable, { rows, cols, className, style, ...rest });
4829
5154
  case "line":
4830
5155
  default:
4831
- return /* @__PURE__ */ jsx44(StnLoadingSkeletonLine, { width, className, style, ...rest });
5156
+ return /* @__PURE__ */ jsx45(StnLoadingSkeletonLine, { width, className, style, ...rest });
4832
5157
  }
4833
5158
  }
4834
5159
  var StnLoadingSkeleton = Object.assign(StnLoadingSkeletonRoot, {
@@ -4841,7 +5166,7 @@ var StnLoadingSkeleton = Object.assign(StnLoadingSkeletonRoot, {
4841
5166
  });
4842
5167
 
4843
5168
  // src/components/topology/StnTopologyRing.tsx
4844
- import { useId as useId12 } from "react";
5169
+ import { useId as useId14 } from "react";
4845
5170
 
4846
5171
  // src/components/topology/stnTopologyShared.ts
4847
5172
  var STN_TOPOLOGY_NODE_SHAPES = [
@@ -4949,7 +5274,7 @@ function ringOrbitRadius(orbit, ringCount, baseRadius, gap = 36) {
4949
5274
  }
4950
5275
 
4951
5276
  // src/components/topology/StnTopologyNodeMark.tsx
4952
- import { jsx as jsx45, jsxs as jsxs35 } from "react/jsx-runtime";
5277
+ import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
4953
5278
  function renderTopologyIcon(icon, color, px) {
4954
5279
  if (!icon) return null;
4955
5280
  if (typeof icon !== "string") return icon;
@@ -4965,56 +5290,56 @@ function renderTopologyIcon(icon, color, px) {
4965
5290
  };
4966
5291
  switch (icon) {
4967
5292
  case "server":
4968
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
4969
- /* @__PURE__ */ jsx45("rect", { x: "2", y: "2", width: "20", height: "8", rx: "2", ry: "2" }),
4970
- /* @__PURE__ */ jsx45("rect", { x: "2", y: "14", width: "20", height: "8", rx: "2", ry: "2" }),
4971
- /* @__PURE__ */ jsx45("line", { x1: "6", y1: "6", x2: "6.01", y2: "6" }),
4972
- /* @__PURE__ */ jsx45("line", { x1: "6", y1: "18", x2: "6.01", y2: "18" })
5293
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5294
+ /* @__PURE__ */ jsx46("rect", { x: "2", y: "2", width: "20", height: "8", rx: "2", ry: "2" }),
5295
+ /* @__PURE__ */ jsx46("rect", { x: "2", y: "14", width: "20", height: "8", rx: "2", ry: "2" }),
5296
+ /* @__PURE__ */ jsx46("line", { x1: "6", y1: "6", x2: "6.01", y2: "6" }),
5297
+ /* @__PURE__ */ jsx46("line", { x1: "6", y1: "18", x2: "6.01", y2: "18" })
4973
5298
  ] });
4974
5299
  case "cloud":
4975
- return /* @__PURE__ */ jsx45("svg", { ...iconProps, children: /* @__PURE__ */ jsx45("path", { d: "M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z" }) });
5300
+ return /* @__PURE__ */ jsx46("svg", { ...iconProps, children: /* @__PURE__ */ jsx46("path", { d: "M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z" }) });
4976
5301
  case "ai":
4977
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
4978
- /* @__PURE__ */ jsx45("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2" }),
4979
- /* @__PURE__ */ jsx45("rect", { x: "9", y: "9", width: "6", height: "6" }),
4980
- /* @__PURE__ */ jsx45("line", { x1: "9", y1: "1", x2: "9", y2: "4" }),
4981
- /* @__PURE__ */ jsx45("line", { x1: "15", y1: "1", x2: "15", y2: "4" }),
4982
- /* @__PURE__ */ jsx45("line", { x1: "9", y1: "20", x2: "9", y2: "23" }),
4983
- /* @__PURE__ */ jsx45("line", { x1: "15", y1: "20", x2: "15", y2: "23" }),
4984
- /* @__PURE__ */ jsx45("line", { x1: "20", y1: "9", x2: "23", y2: "9" }),
4985
- /* @__PURE__ */ jsx45("line", { x1: "20", y1: "14", x2: "23", y2: "14" }),
4986
- /* @__PURE__ */ jsx45("line", { x1: "1", y1: "9", x2: "4", y2: "9" }),
4987
- /* @__PURE__ */ jsx45("line", { x1: "1", y1: "14", x2: "4", y2: "14" })
5302
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5303
+ /* @__PURE__ */ jsx46("rect", { x: "4", y: "4", width: "16", height: "16", rx: "2" }),
5304
+ /* @__PURE__ */ jsx46("rect", { x: "9", y: "9", width: "6", height: "6" }),
5305
+ /* @__PURE__ */ jsx46("line", { x1: "9", y1: "1", x2: "9", y2: "4" }),
5306
+ /* @__PURE__ */ jsx46("line", { x1: "15", y1: "1", x2: "15", y2: "4" }),
5307
+ /* @__PURE__ */ jsx46("line", { x1: "9", y1: "20", x2: "9", y2: "23" }),
5308
+ /* @__PURE__ */ jsx46("line", { x1: "15", y1: "20", x2: "15", y2: "23" }),
5309
+ /* @__PURE__ */ jsx46("line", { x1: "20", y1: "9", x2: "23", y2: "9" }),
5310
+ /* @__PURE__ */ jsx46("line", { x1: "20", y1: "14", x2: "23", y2: "14" }),
5311
+ /* @__PURE__ */ jsx46("line", { x1: "1", y1: "9", x2: "4", y2: "9" }),
5312
+ /* @__PURE__ */ jsx46("line", { x1: "1", y1: "14", x2: "4", y2: "14" })
4988
5313
  ] });
4989
5314
  case "network":
4990
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
4991
- /* @__PURE__ */ jsx45("rect", { x: "2", y: "2", width: "6", height: "6", rx: "1" }),
4992
- /* @__PURE__ */ jsx45("rect", { x: "16", y: "2", width: "6", height: "6", rx: "1" }),
4993
- /* @__PURE__ */ jsx45("rect", { x: "9", y: "16", width: "6", height: "6", rx: "1" }),
4994
- /* @__PURE__ */ jsx45("line", { x1: "5", y1: "8", x2: "5", y2: "12" }),
4995
- /* @__PURE__ */ jsx45("line", { x1: "19", y1: "8", x2: "19", y2: "12" }),
4996
- /* @__PURE__ */ jsx45("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
4997
- /* @__PURE__ */ jsx45("line", { x1: "12", y1: "12", x2: "12", y2: "16" })
5315
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5316
+ /* @__PURE__ */ jsx46("rect", { x: "2", y: "2", width: "6", height: "6", rx: "1" }),
5317
+ /* @__PURE__ */ jsx46("rect", { x: "16", y: "2", width: "6", height: "6", rx: "1" }),
5318
+ /* @__PURE__ */ jsx46("rect", { x: "9", y: "16", width: "6", height: "6", rx: "1" }),
5319
+ /* @__PURE__ */ jsx46("line", { x1: "5", y1: "8", x2: "5", y2: "12" }),
5320
+ /* @__PURE__ */ jsx46("line", { x1: "19", y1: "8", x2: "19", y2: "12" }),
5321
+ /* @__PURE__ */ jsx46("line", { x1: "5", y1: "12", x2: "19", y2: "12" }),
5322
+ /* @__PURE__ */ jsx46("line", { x1: "12", y1: "12", x2: "12", y2: "16" })
4998
5323
  ] });
4999
5324
  case "shield":
5000
- return /* @__PURE__ */ jsx45("svg", { ...iconProps, children: /* @__PURE__ */ jsx45("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) });
5325
+ return /* @__PURE__ */ jsx46("svg", { ...iconProps, children: /* @__PURE__ */ jsx46("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }) });
5001
5326
  case "user":
5002
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
5003
- /* @__PURE__ */ jsx45("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
5004
- /* @__PURE__ */ jsx45("circle", { cx: "12", cy: "7", r: "4" })
5327
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5328
+ /* @__PURE__ */ jsx46("path", { d: "M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2" }),
5329
+ /* @__PURE__ */ jsx46("circle", { cx: "12", cy: "7", r: "4" })
5005
5330
  ] });
5006
5331
  case "database":
5007
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
5008
- /* @__PURE__ */ jsx45("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3" }),
5009
- /* @__PURE__ */ jsx45("path", { d: "M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" }),
5010
- /* @__PURE__ */ jsx45("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" })
5332
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5333
+ /* @__PURE__ */ jsx46("ellipse", { cx: "12", cy: "5", rx: "9", ry: "3" }),
5334
+ /* @__PURE__ */ jsx46("path", { d: "M21 12c0 1.66-4 3-9 3s-9-1.34-9-3" }),
5335
+ /* @__PURE__ */ jsx46("path", { d: "M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5" })
5011
5336
  ] });
5012
5337
  case "wifi":
5013
- return /* @__PURE__ */ jsxs35("svg", { ...iconProps, children: [
5014
- /* @__PURE__ */ jsx45("path", { d: "M5 12.55a11 11 0 0 1 14.08 0" }),
5015
- /* @__PURE__ */ jsx45("path", { d: "M1.42 9a16 16 0 0 1 21.16 0" }),
5016
- /* @__PURE__ */ jsx45("path", { d: "M8.53 16.11a6 6 0 0 1 6.95 0" }),
5017
- /* @__PURE__ */ jsx45("line", { x1: "12", y1: "20", x2: "12.01", y2: "20" })
5338
+ return /* @__PURE__ */ jsxs36("svg", { ...iconProps, children: [
5339
+ /* @__PURE__ */ jsx46("path", { d: "M5 12.55a11 11 0 0 1 14.08 0" }),
5340
+ /* @__PURE__ */ jsx46("path", { d: "M1.42 9a16 16 0 0 1 21.16 0" }),
5341
+ /* @__PURE__ */ jsx46("path", { d: "M8.53 16.11a6 6 0 0 1 6.95 0" }),
5342
+ /* @__PURE__ */ jsx46("line", { x1: "12", y1: "20", x2: "12.01", y2: "20" })
5018
5343
  ] });
5019
5344
  default:
5020
5345
  return null;
@@ -5032,11 +5357,11 @@ function NodeShape({
5032
5357
  }) {
5033
5358
  const filter = glow ? `drop-shadow(0 0 8px ${glow})` : "drop-shadow(0 2px 4px rgba(0, 0, 0, 0.4))";
5034
5359
  if (shape === "circle") {
5035
- return /* @__PURE__ */ jsx45("circle", { cx: x, cy: y, r, fill, stroke, strokeWidth, style: { filter } });
5360
+ return /* @__PURE__ */ jsx46("circle", { cx: x, cy: y, r, fill, stroke, strokeWidth, style: { filter } });
5036
5361
  }
5037
5362
  if (shape === "square") {
5038
5363
  const size = r * 2;
5039
- return /* @__PURE__ */ jsx45(
5364
+ return /* @__PURE__ */ jsx46(
5040
5365
  "rect",
5041
5366
  {
5042
5367
  x: x - r,
@@ -5051,7 +5376,7 @@ function NodeShape({
5051
5376
  }
5052
5377
  );
5053
5378
  }
5054
- return /* @__PURE__ */ jsx45(
5379
+ return /* @__PURE__ */ jsx46(
5055
5380
  "polygon",
5056
5381
  {
5057
5382
  points: topologyShapePoints(shape, x, y, r),
@@ -5094,7 +5419,7 @@ function StnTopologyNodeMark({
5094
5419
  const countText = formatTopologyCount(count);
5095
5420
  const iconPx = metrics.icon;
5096
5421
  const showCornerBadge = !isCount && count != null && count !== "";
5097
- return /* @__PURE__ */ jsxs35(
5422
+ return /* @__PURE__ */ jsxs36(
5098
5423
  "g",
5099
5424
  {
5100
5425
  className: cn("stn-topology-node", selected && "stn-topology-node--selected", className),
@@ -5106,7 +5431,7 @@ function StnTopologyNodeMark({
5106
5431
  style: { cursor: onClick ? "pointer" : "default" },
5107
5432
  ...rest,
5108
5433
  children: [
5109
- isAlert && /* @__PURE__ */ jsxs35(
5434
+ isAlert && /* @__PURE__ */ jsxs36(
5110
5435
  "circle",
5111
5436
  {
5112
5437
  className: "stn-topology-node__pulse",
@@ -5118,13 +5443,13 @@ function StnTopologyNodeMark({
5118
5443
  strokeWidth: "1.5",
5119
5444
  opacity: "0.55",
5120
5445
  children: [
5121
- /* @__PURE__ */ jsx45("animate", { attributeName: "r", values: `${r + 4};${r + 12};${r + 4}`, dur: "2s", repeatCount: "indefinite" }),
5122
- /* @__PURE__ */ jsx45("animate", { attributeName: "opacity", values: "0.75;0.15;0.75", dur: "2s", repeatCount: "indefinite" })
5446
+ /* @__PURE__ */ jsx46("animate", { attributeName: "r", values: `${r + 4};${r + 12};${r + 4}`, dur: "2s", repeatCount: "indefinite" }),
5447
+ /* @__PURE__ */ jsx46("animate", { attributeName: "opacity", values: "0.75;0.15;0.75", dur: "2s", repeatCount: "indefinite" })
5123
5448
  ]
5124
5449
  }
5125
5450
  ),
5126
- selected && /* @__PURE__ */ jsx45("circle", { cx: x, cy: y, r: r + 6, fill: "none", stroke: "#00e5ff", strokeWidth: "1.5", strokeDasharray: "3 3" }),
5127
- /* @__PURE__ */ jsx45(
5451
+ selected && /* @__PURE__ */ jsx46("circle", { cx: x, cy: y, r: r + 6, fill: "none", stroke: "#00e5ff", strokeWidth: "1.5", strokeDasharray: "3 3" }),
5452
+ /* @__PURE__ */ jsx46(
5128
5453
  NodeShape,
5129
5454
  {
5130
5455
  shape,
@@ -5137,7 +5462,7 @@ function StnTopologyNodeMark({
5137
5462
  glow: isAlert || isCount ? tone.glow : ""
5138
5463
  }
5139
5464
  ),
5140
- isCount ? /* @__PURE__ */ jsx45(
5465
+ isCount ? /* @__PURE__ */ jsx46(
5141
5466
  "text",
5142
5467
  {
5143
5468
  x,
@@ -5150,10 +5475,10 @@ function StnTopologyNodeMark({
5150
5475
  style: { textShadow: "0 1px 2px rgba(0, 0, 0, 0.85)" },
5151
5476
  children: countText
5152
5477
  }
5153
- ) : /* @__PURE__ */ jsx45("g", { transform: `translate(${x - iconPx / 2}, ${y - iconPx / 2})`, children: renderTopologyIcon(icon, stroke, iconPx) }),
5154
- showCornerBadge && /* @__PURE__ */ jsxs35("g", { className: "stn-topology-node__badge", children: [
5155
- /* @__PURE__ */ jsx45("circle", { cx: x + r * 0.72, cy: y - r * 0.72, r: Math.max(6, r * 0.38), fill: stroke, stroke: "rgba(6,7,15,0.9)", strokeWidth: "1" }),
5156
- /* @__PURE__ */ jsx45(
5478
+ ) : /* @__PURE__ */ jsx46("g", { transform: `translate(${x - iconPx / 2}, ${y - iconPx / 2})`, children: renderTopologyIcon(icon, stroke, iconPx) }),
5479
+ showCornerBadge && /* @__PURE__ */ jsxs36("g", { className: "stn-topology-node__badge", children: [
5480
+ /* @__PURE__ */ jsx46("circle", { cx: x + r * 0.72, cy: y - r * 0.72, r: Math.max(6, r * 0.38), fill: stroke, stroke: "rgba(6,7,15,0.9)", strokeWidth: "1" }),
5481
+ /* @__PURE__ */ jsx46(
5157
5482
  "text",
5158
5483
  {
5159
5484
  x: x + r * 0.72,
@@ -5167,7 +5492,7 @@ function StnTopologyNodeMark({
5167
5492
  }
5168
5493
  )
5169
5494
  ] }),
5170
- showLabel && label && /* @__PURE__ */ jsx45(
5495
+ showLabel && label && /* @__PURE__ */ jsx46(
5171
5496
  "text",
5172
5497
  {
5173
5498
  x,
@@ -5180,7 +5505,7 @@ function StnTopologyNodeMark({
5180
5505
  children: label
5181
5506
  }
5182
5507
  ),
5183
- showStatus && resolvedStatusLabel && /* @__PURE__ */ jsxs35(
5508
+ showStatus && resolvedStatusLabel && /* @__PURE__ */ jsxs36(
5184
5509
  "text",
5185
5510
  {
5186
5511
  x,
@@ -5211,11 +5536,11 @@ function StnTopologyNodePreview({
5211
5536
  const r = STN_TOPOLOGY_NODE_SIZE[size].r;
5212
5537
  const w = width ?? r * 2 + (showLabel ? 88 : 28);
5213
5538
  const h = height ?? r * 2 + (showLabel || showStatus ? 56 : 28);
5214
- return /* @__PURE__ */ jsx45("svg", { className: "stn-topology-node-preview", width: w, height: h, viewBox: `0 0 ${w} ${h}`, overflow: "visible", children: /* @__PURE__ */ jsx45(StnTopologyNodeMark, { x: w / 2, y: h / 2, size, showLabel, showStatus, ...rest }) });
5539
+ return /* @__PURE__ */ jsx46("svg", { className: "stn-topology-node-preview", width: w, height: h, viewBox: `0 0 ${w} ${h}`, overflow: "visible", children: /* @__PURE__ */ jsx46(StnTopologyNodeMark, { x: w / 2, y: h / 2, size, showLabel, showStatus, ...rest }) });
5215
5540
  }
5216
5541
 
5217
5542
  // src/components/topology/StnTopologyRing.tsx
5218
- import { jsx as jsx46, jsxs as jsxs36 } from "react/jsx-runtime";
5543
+ import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
5219
5544
  function StnTopologyRing({
5220
5545
  core = {
5221
5546
  title: "\uC5D0\uC2A4\uD2F0\uC5D4\uC778\uD3EC\uD14D",
@@ -5236,8 +5561,8 @@ function StnTopologyRing({
5236
5561
  style,
5237
5562
  ...rest
5238
5563
  }) {
5239
- const gradientId = useId12();
5240
- const coreGlowId = useId12();
5564
+ const gradientId = useId14();
5565
+ const coreGlowId = useId14();
5241
5566
  const safeRingCount = Math.max(1, ringCount);
5242
5567
  const radii = Array.from(
5243
5568
  { length: safeRingCount },
@@ -5274,17 +5599,17 @@ function StnTopologyRing({
5274
5599
  };
5275
5600
  });
5276
5601
  if (loading) {
5277
- return /* @__PURE__ */ jsx46(
5602
+ return /* @__PURE__ */ jsx47(
5278
5603
  "div",
5279
5604
  {
5280
5605
  className: cn("stn-topology-ring", "stn-topology-ring--loading", className),
5281
5606
  style,
5282
5607
  ...rest,
5283
- children: /* @__PURE__ */ jsx46("div", { className: "stn-topology-ring__loading-label", children: "\uD1A0\uD3F4\uB85C\uC9C0 \uB9C1 \uB370\uC774\uD130\uB97C \uBD88\uB7EC\uC624\uB294 \uC911..." })
5608
+ children: /* @__PURE__ */ jsx47("div", { className: "stn-topology-ring__loading-label", children: "\uD1A0\uD3F4\uB85C\uC9C0 \uB9C1 \uB370\uC774\uD130\uB97C \uBD88\uB7EC\uC624\uB294 \uC911..." })
5284
5609
  }
5285
5610
  );
5286
5611
  }
5287
- return /* @__PURE__ */ jsx46(
5612
+ return /* @__PURE__ */ jsx47(
5288
5613
  "div",
5289
5614
  {
5290
5615
  className: cn("stn-topology-ring", className),
@@ -5292,7 +5617,7 @@ function StnTopologyRing({
5292
5617
  "data-stn-topology-ring": true,
5293
5618
  "data-ring-count": safeRingCount,
5294
5619
  ...rest,
5295
- children: /* @__PURE__ */ jsxs36(
5620
+ children: /* @__PURE__ */ jsxs37(
5296
5621
  "svg",
5297
5622
  {
5298
5623
  className: "stn-topology-ring__svg",
@@ -5301,19 +5626,19 @@ function StnTopologyRing({
5301
5626
  viewBox: `0 0 ${vb} ${vb}`,
5302
5627
  overflow: "visible",
5303
5628
  children: [
5304
- /* @__PURE__ */ jsxs36("defs", { children: [
5305
- /* @__PURE__ */ jsxs36("radialGradient", { id: coreGlowId, cx: "50%", cy: "50%", r: "50%", children: [
5306
- /* @__PURE__ */ jsx46("stop", { offset: "0%", stopColor: "#722ed1", stopOpacity: "0.8" }),
5307
- /* @__PURE__ */ jsx46("stop", { offset: "100%", stopColor: "#120338", stopOpacity: "0" })
5629
+ /* @__PURE__ */ jsxs37("defs", { children: [
5630
+ /* @__PURE__ */ jsxs37("radialGradient", { id: coreGlowId, cx: "50%", cy: "50%", r: "50%", children: [
5631
+ /* @__PURE__ */ jsx47("stop", { offset: "0%", stopColor: "#722ed1", stopOpacity: "0.8" }),
5632
+ /* @__PURE__ */ jsx47("stop", { offset: "100%", stopColor: "#120338", stopOpacity: "0" })
5308
5633
  ] }),
5309
- /* @__PURE__ */ jsxs36("linearGradient", { id: gradientId, x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
5310
- /* @__PURE__ */ jsx46("stop", { offset: "0%", stopColor: "#00e5ff", stopOpacity: "0.4" }),
5311
- /* @__PURE__ */ jsx46("stop", { offset: "100%", stopColor: "#722ed1", stopOpacity: "0.4" })
5634
+ /* @__PURE__ */ jsxs37("linearGradient", { id: gradientId, x1: "0%", y1: "0%", x2: "100%", y2: "100%", children: [
5635
+ /* @__PURE__ */ jsx47("stop", { offset: "0%", stopColor: "#00e5ff", stopOpacity: "0.4" }),
5636
+ /* @__PURE__ */ jsx47("stop", { offset: "100%", stopColor: "#722ed1", stopOpacity: "0.4" })
5312
5637
  ] })
5313
5638
  ] }),
5314
5639
  radii.map((r, idx) => {
5315
5640
  const isMain = idx + 1 === mainOrbit;
5316
- return /* @__PURE__ */ jsx46(
5641
+ return /* @__PURE__ */ jsx47(
5317
5642
  "circle",
5318
5643
  {
5319
5644
  cx: centerX,
@@ -5327,7 +5652,7 @@ function StnTopologyRing({
5327
5652
  `orbit-${idx}`
5328
5653
  );
5329
5654
  }),
5330
- connectionLineStyle !== "none" && calculatedNodes.map((node) => /* @__PURE__ */ jsx46(
5655
+ connectionLineStyle !== "none" && calculatedNodes.map((node) => /* @__PURE__ */ jsx47(
5331
5656
  "line",
5332
5657
  {
5333
5658
  x1: centerX,
@@ -5340,9 +5665,9 @@ function StnTopologyRing({
5340
5665
  },
5341
5666
  `line-${node.id}`
5342
5667
  )),
5343
- /* @__PURE__ */ jsxs36("g", { className: "stn-topology-ring__core", children: [
5344
- /* @__PURE__ */ jsx46("circle", { cx: centerX, cy: centerY, r: 54, fill: `url(#${coreGlowId})` }),
5345
- /* @__PURE__ */ jsx46(
5668
+ /* @__PURE__ */ jsxs37("g", { className: "stn-topology-ring__core", children: [
5669
+ /* @__PURE__ */ jsx47("circle", { cx: centerX, cy: centerY, r: 54, fill: `url(#${coreGlowId})` }),
5670
+ /* @__PURE__ */ jsx47(
5346
5671
  "circle",
5347
5672
  {
5348
5673
  cx: centerX,
@@ -5354,7 +5679,7 @@ function StnTopologyRing({
5354
5679
  style: { filter: "drop-shadow(0 0 12px rgba(114, 46, 209, 0.6))" }
5355
5680
  }
5356
5681
  ),
5357
- core.subTitle && /* @__PURE__ */ jsx46(
5682
+ core.subTitle && /* @__PURE__ */ jsx47(
5358
5683
  "text",
5359
5684
  {
5360
5685
  x: centerX,
@@ -5367,13 +5692,13 @@ function StnTopologyRing({
5367
5692
  children: core.subTitle
5368
5693
  }
5369
5694
  ),
5370
- core.title && /* @__PURE__ */ jsx46("text", { x: centerX, y: centerY + 8, textAnchor: "middle", fill: "#f0f2f5", fontSize: "10", fontWeight: "600", children: core.title }),
5371
- /* @__PURE__ */ jsxs36("text", { x: centerX, y: centerY + 22, textAnchor: "middle", fill: coreColor, fontSize: "9", fontWeight: "500", children: [
5695
+ core.title && /* @__PURE__ */ jsx47("text", { x: centerX, y: centerY + 8, textAnchor: "middle", fill: "#f0f2f5", fontSize: "10", fontWeight: "600", children: core.title }),
5696
+ /* @__PURE__ */ jsxs37("text", { x: centerX, y: centerY + 22, textAnchor: "middle", fill: coreColor, fontSize: "9", fontWeight: "500", children: [
5372
5697
  "\u25CF ",
5373
5698
  coreStatusLabel
5374
5699
  ] })
5375
5700
  ] }),
5376
- calculatedNodes.map((node) => /* @__PURE__ */ jsx46(
5701
+ calculatedNodes.map((node) => /* @__PURE__ */ jsx47(
5377
5702
  StnTopologyNodeMark,
5378
5703
  {
5379
5704
  x: node.x,
@@ -5402,7 +5727,7 @@ function StnTopologyRing({
5402
5727
 
5403
5728
  // src/components/topology/StnTopologyGraph.tsx
5404
5729
  import { useState as useState10 } from "react";
5405
- import { jsx as jsx47, jsxs as jsxs37 } from "react/jsx-runtime";
5730
+ import { jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
5406
5731
  var DEFAULT_GRAPH_NODES = [
5407
5732
  { id: "n1", x: 200, y: 58, status: "minor", label: "GW-01", shape: "circle", content: "icon", icon: "wifi" },
5408
5733
  { id: "n2", x: 118, y: 118, status: "critical", label: "BACKUP", shape: "hexagon", content: "count", count: 4, pulse: true },
@@ -5438,10 +5763,10 @@ function StnTopologyGraph({
5438
5763
  }) {
5439
5764
  const [viewMode, setViewMode] = useState10(defaultMode);
5440
5765
  if (loading) {
5441
- return /* @__PURE__ */ jsx47("div", { className: cn("stn-topology-graph", "stn-topology-graph--loading", className), style, ...rest, children: /* @__PURE__ */ jsx47("div", { className: "stn-topology-graph__loading-label", children: "\uD1A0\uD3F4\uB85C\uC9C0 \uCE94\uBC84\uC2A4 \uB370\uC774\uD130\uB97C \uBD88\uB7EC\uC624\uB294 \uC911..." }) });
5766
+ return /* @__PURE__ */ jsx48("div", { className: cn("stn-topology-graph", "stn-topology-graph--loading", className), style, ...rest, children: /* @__PURE__ */ jsx48("div", { className: "stn-topology-graph__loading-label", children: "\uD1A0\uD3F4\uB85C\uC9C0 \uCE94\uBC84\uC2A4 \uB370\uC774\uD130\uB97C \uBD88\uB7EC\uC624\uB294 \uC911..." }) });
5442
5767
  }
5443
5768
  const nodeMap = new Map(nodes.map((n) => [n.id, n]));
5444
- return /* @__PURE__ */ jsxs37(
5769
+ return /* @__PURE__ */ jsxs38(
5445
5770
  "div",
5446
5771
  {
5447
5772
  className: cn("stn-topology-graph", className),
@@ -5450,7 +5775,7 @@ function StnTopologyGraph({
5450
5775
  "data-view-mode": viewMode,
5451
5776
  ...rest,
5452
5777
  children: [
5453
- showModeToggle && /* @__PURE__ */ jsx47("div", { className: "stn-topology-graph__mode", children: /* @__PURE__ */ jsx47(
5778
+ showModeToggle && /* @__PURE__ */ jsx48("div", { className: "stn-topology-graph__mode", children: /* @__PURE__ */ jsx48(
5454
5779
  StnSegmented,
5455
5780
  {
5456
5781
  size: "sm",
@@ -5462,23 +5787,23 @@ function StnTopologyGraph({
5462
5787
  ]
5463
5788
  }
5464
5789
  ) }),
5465
- /* @__PURE__ */ jsxs37("svg", { className: "stn-topology-graph__svg", width: "100%", height: "100%", viewBox: "0 0 400 300", overflow: "visible", children: [
5466
- viewMode === "3D" ? /* @__PURE__ */ jsxs37("g", { opacity: "0.6", children: [
5467
- /* @__PURE__ */ jsx47("line", { x1: "60", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.06)", strokeDasharray: "3 3" }),
5468
- /* @__PURE__ */ jsx47("line", { x1: "130", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "3 3" }),
5469
- /* @__PURE__ */ jsx47("line", { x1: "200", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.14)", strokeDasharray: "3 3" }),
5470
- /* @__PURE__ */ jsx47("line", { x1: "270", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "3 3" }),
5471
- /* @__PURE__ */ jsx47("line", { x1: "340", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.06)", strokeDasharray: "3 3" }),
5472
- /* @__PURE__ */ jsx47("line", { x1: "100", y1: "230", x2: "300", y2: "230", stroke: "rgba(255,255,255,0.06)" }),
5473
- /* @__PURE__ */ jsx47("line", { x1: "130", y1: "190", x2: "270", y2: "190", stroke: "rgba(255,255,255,0.06)" }),
5474
- /* @__PURE__ */ jsx47("line", { x1: "160", y1: "140", x2: "240", y2: "140", stroke: "rgba(255,255,255,0.06)" })
5475
- ] }) : /* @__PURE__ */ jsxs37("g", { opacity: "0.3", children: [
5476
- /* @__PURE__ */ jsx47("line", { x1: "40", y1: "60", x2: "360", y2: "60", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5477
- /* @__PURE__ */ jsx47("line", { x1: "40", y1: "150", x2: "360", y2: "150", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5478
- /* @__PURE__ */ jsx47("line", { x1: "40", y1: "240", x2: "360", y2: "240", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5479
- /* @__PURE__ */ jsx47("line", { x1: "100", y1: "20", x2: "100", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5480
- /* @__PURE__ */ jsx47("line", { x1: "200", y1: "20", x2: "200", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5481
- /* @__PURE__ */ jsx47("line", { x1: "300", y1: "20", x2: "300", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" })
5790
+ /* @__PURE__ */ jsxs38("svg", { className: "stn-topology-graph__svg", width: "100%", height: "100%", viewBox: "0 0 400 300", overflow: "visible", children: [
5791
+ viewMode === "3D" ? /* @__PURE__ */ jsxs38("g", { opacity: "0.6", children: [
5792
+ /* @__PURE__ */ jsx48("line", { x1: "60", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.06)", strokeDasharray: "3 3" }),
5793
+ /* @__PURE__ */ jsx48("line", { x1: "130", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "3 3" }),
5794
+ /* @__PURE__ */ jsx48("line", { x1: "200", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.14)", strokeDasharray: "3 3" }),
5795
+ /* @__PURE__ */ jsx48("line", { x1: "270", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "3 3" }),
5796
+ /* @__PURE__ */ jsx48("line", { x1: "340", y1: "260", x2: "200", y2: "80", stroke: "rgba(255,255,255,0.06)", strokeDasharray: "3 3" }),
5797
+ /* @__PURE__ */ jsx48("line", { x1: "100", y1: "230", x2: "300", y2: "230", stroke: "rgba(255,255,255,0.06)" }),
5798
+ /* @__PURE__ */ jsx48("line", { x1: "130", y1: "190", x2: "270", y2: "190", stroke: "rgba(255,255,255,0.06)" }),
5799
+ /* @__PURE__ */ jsx48("line", { x1: "160", y1: "140", x2: "240", y2: "140", stroke: "rgba(255,255,255,0.06)" })
5800
+ ] }) : /* @__PURE__ */ jsxs38("g", { opacity: "0.3", children: [
5801
+ /* @__PURE__ */ jsx48("line", { x1: "40", y1: "60", x2: "360", y2: "60", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5802
+ /* @__PURE__ */ jsx48("line", { x1: "40", y1: "150", x2: "360", y2: "150", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5803
+ /* @__PURE__ */ jsx48("line", { x1: "40", y1: "240", x2: "360", y2: "240", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5804
+ /* @__PURE__ */ jsx48("line", { x1: "100", y1: "20", x2: "100", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5805
+ /* @__PURE__ */ jsx48("line", { x1: "200", y1: "20", x2: "200", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" }),
5806
+ /* @__PURE__ */ jsx48("line", { x1: "300", y1: "20", x2: "300", y2: "280", stroke: "rgba(255,255,255,0.08)", strokeDasharray: "4 4" })
5482
5807
  ] }),
5483
5808
  links.map((link, idx) => {
5484
5809
  const s = nodeMap.get(link.source);
@@ -5486,7 +5811,7 @@ function StnTopologyGraph({
5486
5811
  if (!s || !t) return null;
5487
5812
  const isAlert = s.status === "critical" || t.status === "critical" || link.status === "critical";
5488
5813
  const strokeColor = isAlert ? "rgba(255, 77, 79, 0.65)" : "rgba(255, 255, 255, 0.2)";
5489
- return /* @__PURE__ */ jsx47(
5814
+ return /* @__PURE__ */ jsx48(
5490
5815
  "line",
5491
5816
  {
5492
5817
  x1: s.x,
@@ -5503,7 +5828,7 @@ function StnTopologyGraph({
5503
5828
  nodes.map((node) => {
5504
5829
  const status = node.status ?? "normal";
5505
5830
  const isCore = Boolean(node.isCore);
5506
- return /* @__PURE__ */ jsx47(
5831
+ return /* @__PURE__ */ jsx48(
5507
5832
  StnTopologyNodeMark,
5508
5833
  {
5509
5834
  x: node.x,
@@ -5526,17 +5851,17 @@ function StnTopologyGraph({
5526
5851
  );
5527
5852
  })
5528
5853
  ] }),
5529
- showMinimap && /* @__PURE__ */ jsxs37("div", { className: "stn-topology-graph__minimap", children: [
5530
- /* @__PURE__ */ jsxs37("div", { className: "stn-topology-graph__minimap-head", children: [
5531
- /* @__PURE__ */ jsx47("span", { children: "\uBBF8\uB9AC\uBCF4\uAE30" }),
5532
- /* @__PURE__ */ jsx47("span", { children: "\u2014" })
5854
+ showMinimap && /* @__PURE__ */ jsxs38("div", { className: "stn-topology-graph__minimap", children: [
5855
+ /* @__PURE__ */ jsxs38("div", { className: "stn-topology-graph__minimap-head", children: [
5856
+ /* @__PURE__ */ jsx48("span", { children: "\uBBF8\uB9AC\uBCF4\uAE30" }),
5857
+ /* @__PURE__ */ jsx48("span", { children: "\u2014" })
5533
5858
  ] }),
5534
- /* @__PURE__ */ jsxs37("svg", { width: "100%", height: "40", viewBox: "0 0 100 50", children: [
5535
- /* @__PURE__ */ jsx47("polyline", { points: "50,10 40,25 50,40 60,30", fill: "none", stroke: "rgba(255,77,79,0.5)", strokeWidth: "1" }),
5536
- /* @__PURE__ */ jsx47("circle", { cx: "50", cy: "10", r: "2", fill: STN_TOPOLOGY_STATUS_COLORS.critical.main }),
5537
- /* @__PURE__ */ jsx47("circle", { cx: "40", cy: "25", r: "2.5", fill: STN_TOPOLOGY_STATUS_COLORS.critical.main }),
5538
- /* @__PURE__ */ jsx47("circle", { cx: "50", cy: "40", r: "2", fill: "#00e5ff" }),
5539
- /* @__PURE__ */ jsx47("circle", { cx: "60", cy: "30", r: "2", fill: STN_TOPOLOGY_STATUS_COLORS.normal.main })
5859
+ /* @__PURE__ */ jsxs38("svg", { width: "100%", height: "40", viewBox: "0 0 100 50", children: [
5860
+ /* @__PURE__ */ jsx48("polyline", { points: "50,10 40,25 50,40 60,30", fill: "none", stroke: "rgba(255,77,79,0.5)", strokeWidth: "1" }),
5861
+ /* @__PURE__ */ jsx48("circle", { cx: "50", cy: "10", r: "2", fill: STN_TOPOLOGY_STATUS_COLORS.critical.main }),
5862
+ /* @__PURE__ */ jsx48("circle", { cx: "40", cy: "25", r: "2.5", fill: STN_TOPOLOGY_STATUS_COLORS.critical.main }),
5863
+ /* @__PURE__ */ jsx48("circle", { cx: "50", cy: "40", r: "2", fill: "#00e5ff" }),
5864
+ /* @__PURE__ */ jsx48("circle", { cx: "60", cy: "30", r: "2", fill: STN_TOPOLOGY_STATUS_COLORS.normal.main })
5540
5865
  ] })
5541
5866
  ] })
5542
5867
  ]
@@ -5545,7 +5870,7 @@ function StnTopologyGraph({
5545
5870
  }
5546
5871
 
5547
5872
  // src/components/StnWidget.tsx
5548
- import { Fragment as Fragment4, jsx as jsx48, jsxs as jsxs38 } from "react/jsx-runtime";
5873
+ import { Fragment as Fragment4, jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
5549
5874
  var SHELL_PUB_CLASS = {
5550
5875
  card: "",
5551
5876
  "fault-panel": "",
@@ -5628,20 +5953,20 @@ function StnWidgetPeriodText({
5628
5953
  className,
5629
5954
  ...rest
5630
5955
  }) {
5631
- return /* @__PURE__ */ jsx48("span", { className: cn("stn-widget__period-text", className), ...rest, children });
5956
+ return /* @__PURE__ */ jsx49("span", { className: cn("stn-widget__period-text", className), ...rest, children });
5632
5957
  }
5633
5958
  function StnWidgetPeriodSelect({
5634
5959
  label,
5635
5960
  className,
5636
5961
  ...rest
5637
5962
  }) {
5638
- return /* @__PURE__ */ jsx48(
5963
+ return /* @__PURE__ */ jsx49(
5639
5964
  StnButton,
5640
5965
  {
5641
5966
  variant: "ghost",
5642
5967
  size: "sm",
5643
5968
  shape: "square",
5644
- icon: /* @__PURE__ */ jsx48(StnIcon, { name: "line/chevron-down" }),
5969
+ icon: /* @__PURE__ */ jsx49(StnIcon, { name: "line/chevron-down" }),
5645
5970
  iconPosition: "right",
5646
5971
  className,
5647
5972
  ...rest,
@@ -5658,26 +5983,26 @@ function StnWidgetPeriodPager({
5658
5983
  nextLabel = "\uB2E4\uC74C",
5659
5984
  ...rest
5660
5985
  }) {
5661
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__period-pager", className), ...rest, children: [
5662
- /* @__PURE__ */ jsx48(
5986
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__period-pager", className), ...rest, children: [
5987
+ /* @__PURE__ */ jsx49(
5663
5988
  StnButton,
5664
5989
  {
5665
5990
  variant: "ghost",
5666
5991
  size: "sm",
5667
5992
  shape: "square",
5668
- icon: /* @__PURE__ */ jsx48(StnIcon, { name: "line/arrow-narrow-left" }),
5993
+ icon: /* @__PURE__ */ jsx49(StnIcon, { name: "line/arrow-narrow-left" }),
5669
5994
  onClick: onPrev,
5670
5995
  "aria-label": prevLabel
5671
5996
  }
5672
5997
  ),
5673
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__period-pager-label", children: label }),
5674
- /* @__PURE__ */ jsx48(
5998
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__period-pager-label", children: label }),
5999
+ /* @__PURE__ */ jsx49(
5675
6000
  StnButton,
5676
6001
  {
5677
6002
  variant: "ghost",
5678
6003
  size: "sm",
5679
6004
  shape: "square",
5680
- icon: /* @__PURE__ */ jsx48(StnIcon, { name: "line/arrow-narrow-right" }),
6005
+ icon: /* @__PURE__ */ jsx49(StnIcon, { name: "line/arrow-narrow-right" }),
5681
6006
  onClick: onNext,
5682
6007
  "aria-label": nextLabel
5683
6008
  }
@@ -5697,18 +6022,18 @@ function StnWidgetHeaderInner({
5697
6022
  wrapActions = false
5698
6023
  }) {
5699
6024
  const resolvedIconName = headerIconName ?? defaultHeaderIconName(appearance);
5700
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
5701
- /* @__PURE__ */ jsxs38("div", { className: "stn-widget__head-start", children: [
5702
- showHeaderIcon ? headerIcon != null ? /* @__PURE__ */ jsx48(StnWidgetInsetIcon, { size: "sm", children: headerIcon }) : resolvedIconName ? /* @__PURE__ */ jsx48(StnWidgetInsetIcon, { size: "sm", icon: resolvedIconName }) : null : null,
5703
- title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */ jsxs38("div", { className: "stn-widget__title-wrap", children: [
5704
- typeof title === "string" ? /* @__PURE__ */ jsx48("p", { className: "stn-widget__title", title, children: title }) : null,
6025
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
6026
+ /* @__PURE__ */ jsxs39("div", { className: "stn-widget__head-start", children: [
6027
+ showHeaderIcon ? headerIcon != null ? /* @__PURE__ */ jsx49(StnWidgetInsetIcon, { size: "sm", children: headerIcon }) : resolvedIconName ? /* @__PURE__ */ jsx49(StnWidgetInsetIcon, { size: "sm", icon: resolvedIconName }) : null : null,
6028
+ title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */ jsxs39("div", { className: "stn-widget__title-wrap", children: [
6029
+ typeof title === "string" ? /* @__PURE__ */ jsx49("p", { className: "stn-widget__title", title, children: title }) : null,
5705
6030
  badge
5706
- ] }) : /* @__PURE__ */ jsxs38(Fragment4, { children: [
6031
+ ] }) : /* @__PURE__ */ jsxs39(Fragment4, { children: [
5707
6032
  title,
5708
6033
  badge
5709
6034
  ] }) : null
5710
6035
  ] }),
5711
- titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx48("div", { className: "stn-widget__head-end", children: titleActions ?? (periodActions != null ? periodActions : periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx48(StnWidgetPeriodText, { children: periodLabel }) : null) }) : null
6036
+ titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx49("div", { className: "stn-widget__head-end", children: titleActions ?? (periodActions != null ? periodActions : periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx49(StnWidgetPeriodText, { children: periodLabel }) : null) }) : null
5712
6037
  ] });
5713
6038
  }
5714
6039
  function StnWidgetRoot({
@@ -5788,10 +6113,10 @@ function StnWidgetRoot({
5788
6113
  ...rest
5789
6114
  };
5790
6115
  const slots = partitionWidgetChildren(children);
5791
- const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */ jsxs38("div", { className: "app_bar", children: [
5792
- /* @__PURE__ */ jsx48("div", { className: "fault_title_box", children: typeof title === "string" ? /* @__PURE__ */ jsx48("span", { children: title }) : title }),
6116
+ const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */ jsxs39("div", { className: "app_bar", children: [
6117
+ /* @__PURE__ */ jsx49("div", { className: "fault_title_box", children: typeof title === "string" ? /* @__PURE__ */ jsx49("span", { children: title }) : title }),
5793
6118
  titleActions
5794
- ] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */ jsx48("div", { className: "stn-widget__head", children: typeof title === "string" ? /* @__PURE__ */ jsx48("p", { children: title }) : title }) : null : isFigmaShell ? /* @__PURE__ */ jsx48(
6119
+ ] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */ jsx49("div", { className: "stn-widget__head", children: typeof title === "string" ? /* @__PURE__ */ jsx49("p", { children: title }) : title }) : null : isFigmaShell ? /* @__PURE__ */ jsx49(
5795
6120
  StnWidgetHeaderInner,
5796
6121
  {
5797
6122
  appearance,
@@ -5805,48 +6130,48 @@ function StnWidgetRoot({
5805
6130
  headerIcon,
5806
6131
  wrapActions
5807
6132
  }
5808
- ) : title != null || badge != null || titleActions ? /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
5809
- /* @__PURE__ */ jsxs38("div", { className: "stn-widget__head-start", children: [
5810
- title != null ? typeof title === "string" ? /* @__PURE__ */ jsx48("p", { className: "stn-widget__title", title, children: title }) : title : null,
6133
+ ) : title != null || badge != null || titleActions ? /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
6134
+ /* @__PURE__ */ jsxs39("div", { className: "stn-widget__head-start", children: [
6135
+ title != null ? typeof title === "string" ? /* @__PURE__ */ jsx49("p", { className: "stn-widget__title", title, children: title }) : title : null,
5811
6136
  badge
5812
6137
  ] }),
5813
- titleActions ? /* @__PURE__ */ jsx48("div", { className: "stn-widget__head-end", children: titleActions }) : null
6138
+ titleActions ? /* @__PURE__ */ jsx49("div", { className: "stn-widget__head-end", children: titleActions }) : null
5814
6139
  ] }) : null;
5815
6140
  const head = slots.headers.length > 0 ? slots.headers : propHead;
5816
6141
  const autoBodyClass = shell === "fault-panel" && !isFigmaShell ? "table_area" : void 0;
5817
6142
  let body;
5818
6143
  if (loading) {
5819
- body = /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__body", autoBodyClass, contentClassName), children: /* @__PURE__ */ jsx48(StnWidgetLoading, {}) });
6144
+ body = /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__body", autoBodyClass, contentClassName), children: /* @__PURE__ */ jsx49(StnWidgetLoading, {}) });
5820
6145
  } else if (slots.bodies.length > 0) {
5821
6146
  body = slots.bodies.map(
5822
6147
  (slot, index) => mergeBodySlot(slot, index === 0 ? slots.rest : [], contentClassName, isEmptyState, emptyStyle)
5823
6148
  );
5824
6149
  } else {
5825
- body = /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__body", autoBodyClass, isEmptyState && "empty", contentClassName), style: emptyStyle, children: slots.rest });
6150
+ body = /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__body", autoBodyClass, isEmptyState && "empty", contentClassName), style: emptyStyle, children: slots.rest });
5826
6151
  }
5827
- const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */ jsx48("div", { className: "stn-widget__footer", children: footer }) : null;
5828
- const card = /* @__PURE__ */ jsxs38("div", { ...rootProps, children: [
5829
- isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */ jsx48("div", { className: "stn-widget__map-deco", "aria-hidden": true }) : null,
6152
+ const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */ jsx49("div", { className: "stn-widget__footer", children: footer }) : null;
6153
+ const card = /* @__PURE__ */ jsxs39("div", { ...rootProps, children: [
6154
+ isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */ jsx49("div", { className: "stn-widget__map-deco", "aria-hidden": true }) : null,
5830
6155
  head,
5831
6156
  body,
5832
6157
  footerNode
5833
6158
  ] });
5834
6159
  if (banner == null || banner === false) return card;
5835
- return /* @__PURE__ */ jsxs38("div", { className: "stn-widget-anchor", children: [
6160
+ return /* @__PURE__ */ jsxs39("div", { className: "stn-widget-anchor", children: [
5836
6161
  withBannerSeverity(banner, bannerSeverityFromStatus(status, isCritical)),
5837
6162
  card
5838
6163
  ] });
5839
6164
  }
5840
6165
  function StnWidgetHeader({ className, wrap = false, children, ...rest }) {
5841
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__head", wrap && "stn-widget__head--wrap", className), ...rest, children });
6166
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__head", wrap && "stn-widget__head--wrap", className), ...rest, children });
5842
6167
  }
5843
6168
  markWidgetSlot(StnWidgetHeader, "header");
5844
6169
  function StnWidgetTitle({ className, children, title, ...rest }) {
5845
6170
  const titleAttr = title ?? (typeof children === "string" ? children : void 0);
5846
- return /* @__PURE__ */ jsx48("p", { className: cn("stn-widget__title", className), title: titleAttr, ...rest, children });
6171
+ return /* @__PURE__ */ jsx49("p", { className: cn("stn-widget__title", className), title: titleAttr, ...rest, children });
5847
6172
  }
5848
6173
  function StnWidgetActions({ className, children, ...rest }) {
5849
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__head-end", className), ...rest, children });
6174
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__head-end", className), ...rest, children });
5850
6175
  }
5851
6176
  function StnWidgetBody({
5852
6177
  padding,
@@ -5860,7 +6185,7 @@ function StnWidgetBody({
5860
6185
  }) {
5861
6186
  const emptyText = typeof empty === "string" ? empty : void 0;
5862
6187
  const mergedStyle = emptyText ? { ["--stn-widget-empty-text"]: `"${emptyText}"`, ...style } : style;
5863
- return /* @__PURE__ */ jsx48(
6188
+ return /* @__PURE__ */ jsx49(
5864
6189
  "div",
5865
6190
  {
5866
6191
  className: cn(
@@ -5882,7 +6207,7 @@ function StnWidgetBody({
5882
6207
  }
5883
6208
  markWidgetSlot(StnWidgetBody, "body");
5884
6209
  function StnWidgetChartSlot({ label = "select chart", className, children, ...rest }) {
5885
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__chart-slot", className), "data-stn-widget-chart-slot": true, ...rest, children: children ?? /* @__PURE__ */ jsx48("span", { className: "stn-widget__chart-slot-label", children: label }) });
6210
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__chart-slot", className), "data-stn-widget-chart-slot": true, ...rest, children: children ?? /* @__PURE__ */ jsx49("span", { className: "stn-widget__chart-slot-label", children: label }) });
5886
6211
  }
5887
6212
  function StnWidgetStatusItem({
5888
6213
  label,
@@ -5894,9 +6219,9 @@ function StnWidgetStatusItem({
5894
6219
  ...rest
5895
6220
  }) {
5896
6221
  const grade = gradeProp ?? (status === "warning" ? "minor" : status) ?? "normal";
5897
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__status-item", className), ...rest, children: [
5898
- /* @__PURE__ */ jsxs38("span", { className: "stn-widget__status-label", children: [
5899
- showDot ? /* @__PURE__ */ jsx48(
6222
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__status-item", className), ...rest, children: [
6223
+ /* @__PURE__ */ jsxs39("span", { className: "stn-widget__status-label", children: [
6224
+ showDot ? /* @__PURE__ */ jsx49(
5900
6225
  "span",
5901
6226
  {
5902
6227
  className: cn("stn-widget__status-dot", `stn-widget__status-dot--${grade}`),
@@ -5905,23 +6230,23 @@ function StnWidgetStatusItem({
5905
6230
  ) : null,
5906
6231
  label
5907
6232
  ] }),
5908
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__status-val", children: value })
6233
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__status-val", children: value })
5909
6234
  ] });
5910
6235
  }
5911
6236
  function StnWidgetStatusList({ className, children, ...rest }) {
5912
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__status-list", className), ...rest, children });
6237
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__status-list", className), ...rest, children });
5913
6238
  }
5914
6239
  function StnWidgetStatGroup({ className, children, ...rest }) {
5915
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__stat-group", className), ...rest, children });
6240
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__stat-group", className), ...rest, children });
5916
6241
  }
5917
6242
  function StnWidgetStatCard({ label, count, className, ...rest }) {
5918
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__stat-card", className), ...rest, children: [
5919
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__stat-label", children: label }),
5920
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__stat-count", children: count })
6243
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__stat-card", className), ...rest, children: [
6244
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__stat-label", children: label }),
6245
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__stat-count", children: count })
5921
6246
  ] });
5922
6247
  }
5923
6248
  function StnWidgetPlaceholder({ label = "\uCF58\uD150\uCE20 \uC601\uC5ED" }) {
5924
- return /* @__PURE__ */ jsx48("div", { className: "stn-widget__placeholder", children: label });
6249
+ return /* @__PURE__ */ jsx49("div", { className: "stn-widget__placeholder", children: label });
5925
6250
  }
5926
6251
  var GRADE_ROW_ICON = {
5927
6252
  critical: "fill/alert4",
@@ -5944,42 +6269,42 @@ function StnWidgetGradeRow({
5944
6269
  }) {
5945
6270
  const clamped = Math.max(0, Math.min(100, percent));
5946
6271
  const resolvedPercentLabel = percentLabel ?? formatGradePercent(clamped);
5947
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__grade-row", `stn-widget__grade-row--${grade}`, className), ...rest, children: [
5948
- /* @__PURE__ */ jsxs38("div", { className: "stn-widget__grade-row-left", children: [
5949
- /* @__PURE__ */ jsxs38("span", { className: "stn-widget__grade-row-label", children: [
5950
- /* @__PURE__ */ jsx48(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-widget__grade-row-icon", "aria-hidden": true }),
6272
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__grade-row", `stn-widget__grade-row--${grade}`, className), ...rest, children: [
6273
+ /* @__PURE__ */ jsxs39("div", { className: "stn-widget__grade-row-left", children: [
6274
+ /* @__PURE__ */ jsxs39("span", { className: "stn-widget__grade-row-label", children: [
6275
+ /* @__PURE__ */ jsx49(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-widget__grade-row-icon", "aria-hidden": true }),
5951
6276
  label
5952
6277
  ] }),
5953
- /* @__PURE__ */ jsx48("div", { className: "stn-widget__grade-row-track", "aria-hidden": true, children: /* @__PURE__ */ jsx48("span", { className: "stn-widget__grade-row-fill", style: { width: `${clamped}%` } }) })
6278
+ /* @__PURE__ */ jsx49("div", { className: "stn-widget__grade-row-track", "aria-hidden": true, children: /* @__PURE__ */ jsx49("span", { className: "stn-widget__grade-row-fill", style: { width: `${clamped}%` } }) })
5954
6279
  ] }),
5955
- /* @__PURE__ */ jsxs38("div", { className: "stn-widget__grade-row-right", children: [
5956
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__grade-row-value", children: value }),
5957
- /* @__PURE__ */ jsx48("span", { className: "stn-widget__grade-row-percent", children: resolvedPercentLabel })
6280
+ /* @__PURE__ */ jsxs39("div", { className: "stn-widget__grade-row-right", children: [
6281
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__grade-row-value", children: value }),
6282
+ /* @__PURE__ */ jsx49("span", { className: "stn-widget__grade-row-percent", children: resolvedPercentLabel })
5958
6283
  ] })
5959
6284
  ] });
5960
6285
  }
5961
6286
  function StnWidgetGradeRowList({ className, children, ...rest }) {
5962
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__grade-row-list", className), ...rest, children });
6287
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__grade-row-list", className), ...rest, children });
5963
6288
  }
5964
6289
  function StnWidgetFooter({ className, children, ...rest }) {
5965
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__footer", className), ...rest, children });
6290
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__footer", className), ...rest, children });
5966
6291
  }
5967
6292
  markWidgetSlot(StnWidgetFooter, "footer");
5968
6293
  function StnWidgetEmpty({ className, children, ...rest }) {
5969
- return /* @__PURE__ */ jsxs38("div", { className: cn("stn-widget__empty", className), ...rest, children: [
5970
- /* @__PURE__ */ jsxs38("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", style: { opacity: 0.6 }, children: [
5971
- /* @__PURE__ */ jsx48("circle", { cx: "12", cy: "12", r: "10" }),
5972
- /* @__PURE__ */ jsx48("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
5973
- /* @__PURE__ */ jsx48("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
6294
+ return /* @__PURE__ */ jsxs39("div", { className: cn("stn-widget__empty", className), ...rest, children: [
6295
+ /* @__PURE__ */ jsxs39("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", style: { opacity: 0.6 }, children: [
6296
+ /* @__PURE__ */ jsx49("circle", { cx: "12", cy: "12", r: "10" }),
6297
+ /* @__PURE__ */ jsx49("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
6298
+ /* @__PURE__ */ jsx49("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
5974
6299
  ] }),
5975
- /* @__PURE__ */ jsx48("div", { children: children ?? "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." })
6300
+ /* @__PURE__ */ jsx49("div", { children: children ?? "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." })
5976
6301
  ] });
5977
6302
  }
5978
6303
  function StnWidgetLoading({ lines = 3, className, children, ...rest }) {
5979
- return /* @__PURE__ */ jsx48("div", { className: cn("stn-widget__loading", className), ...rest, children: children ?? /* @__PURE__ */ jsx48(StnLoadingSkeleton.Widget, { lines }) });
6304
+ return /* @__PURE__ */ jsx49("div", { className: cn("stn-widget__loading", className), ...rest, children: children ?? /* @__PURE__ */ jsx49(StnLoadingSkeleton.Widget, { lines }) });
5980
6305
  }
5981
6306
  function StnWidgetInsetIcon({ className, size = "sm", ...rest }) {
5982
- return /* @__PURE__ */ jsx48(StnIconBox, { size, className: cn("stn-widget__inset-icon", className), ...rest });
6307
+ return /* @__PURE__ */ jsx49(StnIconBox, { size, className: cn("stn-widget__inset-icon", className), ...rest });
5983
6308
  }
5984
6309
  var StnWidget = Object.assign(StnWidgetRoot, {
5985
6310
  Header: StnWidgetHeader,
@@ -6030,7 +6355,7 @@ import {
6030
6355
  Fragment as Fragment5,
6031
6356
  isValidElement as isValidElement5
6032
6357
  } from "react";
6033
- import { jsx as jsx49, jsxs as jsxs39 } from "react/jsx-runtime";
6358
+ import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
6034
6359
  var BREAKPOINTS = ["xs", "sm", "md", "lg", "xl"];
6035
6360
  var DIRECTION_CLASS = /* @__PURE__ */ new Set(["row", "row-reverse", "column", "column-reverse"]);
6036
6361
  var STACK_SPACE_TOKENS = /* @__PURE__ */ new Set([2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 32, 36, 40, 44, 48, 56, 64, 80, 84]);
@@ -6149,12 +6474,12 @@ var StnStack = forwardRef24(function StnStack2({
6149
6474
  const validChildren = Children3.toArray(children).filter(Boolean);
6150
6475
  const renderedChildren = divider ? validChildren.map((child, index) => {
6151
6476
  const key = isValidElement5(child) && child.key != null ? child.key : index;
6152
- return /* @__PURE__ */ jsxs39(Fragment5, { children: [
6477
+ return /* @__PURE__ */ jsxs40(Fragment5, { children: [
6153
6478
  index > 0 ? divider : null,
6154
6479
  child
6155
6480
  ] }, key);
6156
6481
  }) : children;
6157
- return /* @__PURE__ */ jsx49(
6482
+ return /* @__PURE__ */ jsx50(
6158
6483
  Component,
6159
6484
  {
6160
6485
  ref,
@@ -6178,7 +6503,7 @@ var StnStack = forwardRef24(function StnStack2({
6178
6503
  });
6179
6504
 
6180
6505
  // src/patterns/dashboard/AlertCenterDashboard.tsx
6181
- import { jsx as jsx50, jsxs as jsxs40 } from "react/jsx-runtime";
6506
+ import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
6182
6507
  var TOP5_ROWS = [
6183
6508
  { label: "\uADF8\uB791\uC2DC\uC544", percent: 80, value: "80\uAC74", grade: "critical" },
6184
6509
  { label: "\uC5F0\uB9BD\uC8FC\uD0DD 15\uC138\uB300", percent: 74, value: "74\uAC74", grade: "major" },
@@ -6187,7 +6512,7 @@ var TOP5_ROWS = [
6187
6512
  { label: "PRADA", percent: 68, value: "68\uAC74", grade: "default" }
6188
6513
  ];
6189
6514
  function AlertCenterDashboard({ className, appearance = "translucent", loading = false }) {
6190
- return /* @__PURE__ */ jsxs40(
6515
+ return /* @__PURE__ */ jsxs41(
6191
6516
  StnStack,
6192
6517
  {
6193
6518
  direction: "column",
@@ -6196,17 +6521,17 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
6196
6521
  style: { flex: "1 1 0%", minHeight: 0, height: "100%", width: "100%" },
6197
6522
  "data-stn-dashboard": "alert-widgets",
6198
6523
  children: [
6199
- /* @__PURE__ */ jsx50(StnWidget, { title: "\uC2DC\uC124 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx50(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs40(StnWidget.StatusList, { children: [
6200
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "PTN", value: "179", showDot: false }),
6201
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "MSPP", value: "63", showDot: false }),
6202
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "L3\uC2A4\uC704\uCE58", value: "27", showDot: false })
6524
+ /* @__PURE__ */ jsx51(StnWidget, { title: "\uC2DC\uC124 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx51(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs41(StnWidget.StatusList, { children: [
6525
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "PTN", value: "179", showDot: false }),
6526
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "MSPP", value: "63", showDot: false }),
6527
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "L3\uC2A4\uC704\uCE58", value: "27", showDot: false })
6203
6528
  ] }) }),
6204
- /* @__PURE__ */ jsx50(StnWidget, { title: "\uC7A5\uC560 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx50(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs40(StnWidget.StatusList, { children: [
6205
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "Critical", value: "43", grade: "critical" }),
6206
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "Major", value: "79", grade: "major" }),
6207
- /* @__PURE__ */ jsx50(StnWidget.StatusItem, { label: "Minor", value: "3", grade: "minor" })
6529
+ /* @__PURE__ */ jsx51(StnWidget, { title: "\uC7A5\uC560 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx51(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs41(StnWidget.StatusList, { children: [
6530
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "Critical", value: "43", grade: "critical" }),
6531
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "Major", value: "79", grade: "major" }),
6532
+ /* @__PURE__ */ jsx51(StnWidget.StatusItem, { label: "Minor", value: "3", grade: "minor" })
6208
6533
  ] }) }),
6209
- /* @__PURE__ */ jsx50(StnWidget, { title: "\uC77C\uC77C \uC7A5\uBE44\uBCC4 \uC7A5\uC560 TOP5", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx50(StnLoadingSkeleton.Widget, { lines: 4 }) : /* @__PURE__ */ jsx50(StnWidget.GradeRowList, { children: TOP5_ROWS.map((row) => /* @__PURE__ */ jsx50(
6534
+ /* @__PURE__ */ jsx51(StnWidget, { title: "\uC77C\uC77C \uC7A5\uBE44\uBCC4 \uC7A5\uC560 TOP5", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx51(StnLoadingSkeleton.Widget, { lines: 4 }) : /* @__PURE__ */ jsx51(StnWidget.GradeRowList, { children: TOP5_ROWS.map((row) => /* @__PURE__ */ jsx51(
6210
6535
  StnWidget.GradeRow,
6211
6536
  {
6212
6537
  grade: row.grade,
@@ -6216,50 +6541,50 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
6216
6541
  },
6217
6542
  row.label
6218
6543
  )) }) }),
6219
- /* @__PURE__ */ jsx50(StnWidget, { title: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx50(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsx50(StnWidget.ChartSlot, { label: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4 \uCC28\uD2B8" }) })
6544
+ /* @__PURE__ */ jsx51(StnWidget, { title: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx51(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsx51(StnWidget.ChartSlot, { label: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4 \uCC28\uD2B8" }) })
6220
6545
  ]
6221
6546
  }
6222
6547
  );
6223
6548
  }
6224
6549
 
6225
6550
  // src/patterns/dashboard/PubDashboardWidgetBodies.tsx
6226
- import { jsx as jsx51, jsxs as jsxs41 } from "react/jsx-runtime";
6551
+ import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
6227
6552
  function PubDisabilityStatusList({ items, summary }) {
6228
- return /* @__PURE__ */ jsxs41("div", { className: "ds-disability-status", children: [
6229
- /* @__PURE__ */ jsx51("ul", { className: "ds-disability-status__list", children: items.map((item, i) => /* @__PURE__ */ jsxs41(
6553
+ return /* @__PURE__ */ jsxs42("div", { className: "ds-disability-status", children: [
6554
+ /* @__PURE__ */ jsx52("ul", { className: "ds-disability-status__list", children: items.map((item, i) => /* @__PURE__ */ jsxs42(
6230
6555
  "li",
6231
6556
  {
6232
6557
  className: ["ds-disability-status__item", item.grade].filter(Boolean).join(" "),
6233
6558
  children: [
6234
- /* @__PURE__ */ jsxs41("span", { children: [
6235
- item.showDot !== false && item.grade ? /* @__PURE__ */ jsx51("span", { className: "dot", "aria-hidden": true }) : null,
6559
+ /* @__PURE__ */ jsxs42("span", { children: [
6560
+ item.showDot !== false && item.grade ? /* @__PURE__ */ jsx52("span", { className: "dot", "aria-hidden": true }) : null,
6236
6561
  item.label
6237
6562
  ] }),
6238
- /* @__PURE__ */ jsx51("p", { children: item.value })
6563
+ /* @__PURE__ */ jsx52("p", { children: item.value })
6239
6564
  ]
6240
6565
  },
6241
6566
  i
6242
6567
  )) }),
6243
- summary && summary.length > 0 ? /* @__PURE__ */ jsx51("div", { className: "ds-disability-status__summary", children: summary.map((row, i) => /* @__PURE__ */ jsxs41("p", { className: "ds-disability-status__value", children: [
6568
+ summary && summary.length > 0 ? /* @__PURE__ */ jsx52("div", { className: "ds-disability-status__summary", children: summary.map((row, i) => /* @__PURE__ */ jsxs42("p", { className: "ds-disability-status__value", children: [
6244
6569
  row.label,
6245
- /* @__PURE__ */ jsx51("span", { children: row.value })
6570
+ /* @__PURE__ */ jsx52("span", { children: row.value })
6246
6571
  ] }, i)) }) : null
6247
6572
  ] });
6248
6573
  }
6249
6574
  function PubTrafficTop5Bars({ rows }) {
6250
6575
  const maxPercent = Math.max(...rows.map((row) => row.percent), 0);
6251
- return /* @__PURE__ */ jsx51("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsxs41("div", { className: ["ds-bar", row.percent === maxPercent ? "max" : ""].filter(Boolean).join(" "), children: [
6252
- /* @__PURE__ */ jsx51("p", { className: "ds-bar-name", title: row.label, children: row.label }),
6253
- /* @__PURE__ */ jsx51("div", { className: "ds-bar-con", title: `${row.percent}%`, children: /* @__PURE__ */ jsx51("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }) }),
6254
- /* @__PURE__ */ jsx51("p", { className: "ds-bar-value", title: row.value, children: row.value })
6576
+ return /* @__PURE__ */ jsx52("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsxs42("div", { className: ["ds-bar", row.percent === maxPercent ? "max" : ""].filter(Boolean).join(" "), children: [
6577
+ /* @__PURE__ */ jsx52("p", { className: "ds-bar-name", title: row.label, children: row.label }),
6578
+ /* @__PURE__ */ jsx52("div", { className: "ds-bar-con", title: `${row.percent}%`, children: /* @__PURE__ */ jsx52("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }) }),
6579
+ /* @__PURE__ */ jsx52("p", { className: "ds-bar-value", title: row.value, children: row.value })
6255
6580
  ] }, row.label)) });
6256
6581
  }
6257
6582
  function PubTop5EquipmentBars({ rows }) {
6258
- return /* @__PURE__ */ jsxs41("div", { className: "ds-group", children: [
6259
- /* @__PURE__ */ jsx51("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx51("div", { className: "ds-equipment-ico", children: /* @__PURE__ */ jsx51("span", { className: "blind", children: "\uC7A5\uBE44 \uC774\uBBF8\uC9C0" }) }) }),
6260
- /* @__PURE__ */ jsx51("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx51("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsx51("div", { className: "ds-bar type-2", children: /* @__PURE__ */ jsxs41("div", { className: "ds-bar-con", title: `${row.percent}%`, children: [
6261
- /* @__PURE__ */ jsx51("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }),
6262
- /* @__PURE__ */ jsx51("div", { className: "ds-bar-status", children: row.status })
6583
+ return /* @__PURE__ */ jsxs42("div", { className: "ds-group", children: [
6584
+ /* @__PURE__ */ jsx52("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx52("div", { className: "ds-equipment-ico", children: /* @__PURE__ */ jsx52("span", { className: "blind", children: "\uC7A5\uBE44 \uC774\uBBF8\uC9C0" }) }) }),
6585
+ /* @__PURE__ */ jsx52("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx52("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsx52("div", { className: "ds-bar type-2", children: /* @__PURE__ */ jsxs42("div", { className: "ds-bar-con", title: `${row.percent}%`, children: [
6586
+ /* @__PURE__ */ jsx52("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }),
6587
+ /* @__PURE__ */ jsx52("div", { className: "ds-bar-status", children: row.status })
6263
6588
  ] }) }, row.label)) }) })
6264
6589
  ] });
6265
6590
  }
@@ -6268,7 +6593,7 @@ function PubChartSample({
6268
6593
  alt = "\uCC28\uD2B8",
6269
6594
  onError
6270
6595
  }) {
6271
- return /* @__PURE__ */ jsx51("div", { className: "ds-chart", children: /* @__PURE__ */ jsx51("img", { src, alt, className: "chart_sample", onError }) });
6596
+ return /* @__PURE__ */ jsx52("div", { className: "ds-chart", children: /* @__PURE__ */ jsx52("img", { src, alt, className: "chart_sample", onError }) });
6272
6597
  }
6273
6598
 
6274
6599
  // src/patterns/alertCenter/StnAlertCenterPanel.tsx
@@ -6276,7 +6601,7 @@ import { useState as useState11 } from "react";
6276
6601
  import {
6277
6602
  STN_ALERT_CENTER_TABS
6278
6603
  } from "@stn-uiux/pub-ui/data/stnAlertCenter";
6279
- import { jsx as jsx52, jsxs as jsxs42 } from "react/jsx-runtime";
6604
+ import { jsx as jsx53, jsxs as jsxs43 } from "react/jsx-runtime";
6280
6605
  function resolveAlertIcon(item) {
6281
6606
  if (item.icon) {
6282
6607
  if (item.icon === "line/arrow-down") return "line/arrow-narrow-down";
@@ -6294,6 +6619,97 @@ function resolveGradeLabel(grade) {
6294
6619
  if (grade === "warning") return "WR";
6295
6620
  return grade.toUpperCase();
6296
6621
  }
6622
+ function StnAlertCard({
6623
+ item,
6624
+ titleOverflow = "wrap",
6625
+ descOverflow = "wrap",
6626
+ onClick,
6627
+ className
6628
+ }) {
6629
+ const iconNode = resolveAlertIcon(item);
6630
+ const gradeLabel = resolveGradeLabel(item.grade);
6631
+ return /* @__PURE__ */ jsx53(
6632
+ StnCard,
6633
+ {
6634
+ variant: "elevated",
6635
+ radius: "md",
6636
+ padding: "md",
6637
+ interactive: true,
6638
+ className: cn("stn-alert-card", className),
6639
+ onClick,
6640
+ children: /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__row", children: [
6641
+ /* @__PURE__ */ jsx53(
6642
+ StnIcon,
6643
+ {
6644
+ name: iconNode,
6645
+ size: 24,
6646
+ color: `var(--stn-grade-${item.grade}, var(--stn-primary))`,
6647
+ className: "stn-alert-card__icon"
6648
+ }
6649
+ ),
6650
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__body", children: [
6651
+ /* @__PURE__ */ jsxs43(StnStack, { direction: "row", alignItems: "center", spacing: 1, className: "stn-alert-card__header-line", children: [
6652
+ /* @__PURE__ */ jsx53(
6653
+ StnChip,
6654
+ {
6655
+ shape: "pill",
6656
+ size: "sm",
6657
+ variant: "filled",
6658
+ color: item.grade,
6659
+ children: gradeLabel
6660
+ }
6661
+ ),
6662
+ /* @__PURE__ */ jsx53(
6663
+ "span",
6664
+ {
6665
+ className: cn("stn-alert-card__title", titleOverflow),
6666
+ title: item.title,
6667
+ children: /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__text-inner", children: item.title })
6668
+ }
6669
+ )
6670
+ ] }),
6671
+ /* @__PURE__ */ jsxs43(StnStack, { direction: "row", alignItems: "center", spacing: 2, wrap: "wrap", className: "stn-alert-card__desc-line", children: [
6672
+ /* @__PURE__ */ jsx53(
6673
+ "span",
6674
+ {
6675
+ className: cn("stn-alert-card__desc", descOverflow),
6676
+ title: item.description,
6677
+ children: /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__text-inner", children: item.description })
6678
+ }
6679
+ ),
6680
+ item.occurredAt && /* @__PURE__ */ jsxs43(
6681
+ StnChip,
6682
+ {
6683
+ shape: "pill",
6684
+ size: "sm",
6685
+ variant: "subtle",
6686
+ color: "critical",
6687
+ className: "stn-alert-card__time-chip",
6688
+ children: [
6689
+ "\uBC1C\uC0DD\uC2DC\uAC04: ",
6690
+ item.occurredAt
6691
+ ]
6692
+ }
6693
+ )
6694
+ ] })
6695
+ ] }),
6696
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__meta", children: [
6697
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__time", children: item.time }),
6698
+ item.unread !== false && /* @__PURE__ */ jsx53(
6699
+ "span",
6700
+ {
6701
+ className: cn(
6702
+ "stn-alert-card__dot",
6703
+ `stn-alert-card__dot--${item.grade}`
6704
+ ),
6705
+ "aria-hidden": true
6706
+ }
6707
+ )
6708
+ ] })
6709
+ ] })
6710
+ }
6711
+ );
6712
+ }
6297
6713
  function StnAlertCenterPanel({
6298
6714
  title = "\uC54C\uB9BC\uC13C\uD130",
6299
6715
  alerts = [],
@@ -6301,6 +6717,9 @@ function StnAlertCenterPanel({
6301
6717
  deployItems = [],
6302
6718
  defaultTab = "error",
6303
6719
  size = "md",
6720
+ textOverflow = "wrap",
6721
+ titleOverflow,
6722
+ descOverflow,
6304
6723
  tabIds,
6305
6724
  tabName: _tabName,
6306
6725
  onClose,
@@ -6312,167 +6731,121 @@ function StnAlertCenterPanel({
6312
6731
  }) {
6313
6732
  const [activeTab, setActiveTab] = useState11(defaultTab);
6314
6733
  const alertCount = alerts.length;
6315
- return /* @__PURE__ */ jsxs42("div", { className: cn("stn-alert-center", size, className), "data-stn-alert-center": true, children: [
6316
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-center__header", children: [
6317
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-center__header-left", children: [
6318
- /* @__PURE__ */ jsx52(StnIcon, { name: "line/bell", size: 20, color: "var(--stn-primary)" }),
6319
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-center__title", children: title }),
6320
- alertCount > 0 && /* @__PURE__ */ jsx52(StnChip, { shape: "pill", size: "sm", variant: "subtle", color: "primary", children: alertCount })
6321
- ] }),
6322
- /* @__PURE__ */ jsx52(
6323
- StnSegmented,
6324
- {
6325
- size: "md",
6326
- value: activeTab,
6327
- onChange: (val) => setActiveTab(val),
6328
- options: STN_ALERT_CENTER_TABS.map((tab) => ({
6329
- value: tab.id,
6330
- label: tab.label,
6331
- id: tabIds?.[tab.id]
6332
- }))
6333
- }
6734
+ const resolvedTitleOverflow = titleOverflow ?? textOverflow;
6735
+ const resolvedDescOverflow = descOverflow ?? textOverflow;
6736
+ return /* @__PURE__ */ jsxs43(
6737
+ "div",
6738
+ {
6739
+ className: cn(
6740
+ "stn-alert-center",
6741
+ size,
6742
+ `title-${resolvedTitleOverflow}`,
6743
+ `desc-${resolvedDescOverflow}`,
6744
+ className
6334
6745
  ),
6335
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-center__header-right", children: [
6336
- /* @__PURE__ */ jsx52(
6337
- StnButton,
6338
- {
6339
- variant: "text",
6340
- size: "sm",
6341
- icon: "line/check-circle",
6342
- onClick: onMarkAllAsRead,
6343
- children: "\uBAA8\uB450 \uC77D\uC74C"
6344
- }
6345
- ),
6346
- /* @__PURE__ */ jsx52("div", { className: "stn-alert-center__divider", "aria-hidden": true }),
6347
- /* @__PURE__ */ jsx52(
6348
- StnButton,
6349
- {
6350
- icon: "line/x",
6351
- variant: "text",
6352
- size: "sm",
6353
- "aria-label": closeLabel,
6354
- onClick: onClose
6355
- }
6356
- )
6357
- ] })
6358
- ] }),
6359
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-center__list-wrap", children: [
6360
- activeTab === "error" && /* @__PURE__ */ jsx52("ul", { className: "stn-alert-center__list", children: alerts.map((item) => {
6361
- const iconNode = resolveAlertIcon(item);
6362
- const gradeLabel = resolveGradeLabel(item.grade);
6363
- return /* @__PURE__ */ jsx52("li", { children: /* @__PURE__ */ jsx52(
6364
- StnCard,
6365
- {
6366
- variant: "elevated",
6367
- radius: "md",
6368
- padding: "md",
6369
- interactive: true,
6370
- className: "stn-alert-card",
6371
- onClick: () => onItemClick?.(item),
6372
- children: /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__row", children: [
6373
- /* @__PURE__ */ jsx52(
6374
- StnIcon,
6375
- {
6376
- name: iconNode,
6377
- size: 24,
6378
- color: `var(--stn-grade-${item.grade}, var(--stn-primary))`,
6379
- className: "stn-alert-card__icon"
6380
- }
6381
- ),
6382
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__body", children: [
6383
- /* @__PURE__ */ jsxs42(StnStack, { direction: "row", alignItems: "center", spacing: 1, children: [
6384
- /* @__PURE__ */ jsx52(
6385
- StnChip,
6386
- {
6387
- shape: "pill",
6388
- size: "sm",
6389
- variant: "filled",
6390
- color: item.grade,
6391
- children: gradeLabel
6392
- }
6393
- ),
6394
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__title", children: item.title })
6395
- ] }),
6396
- /* @__PURE__ */ jsxs42(StnStack, { direction: "row", alignItems: "center", spacing: 2, wrap: "wrap", children: [
6397
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__desc", children: item.description }),
6398
- item.occurredAt && /* @__PURE__ */ jsxs42(
6399
- StnChip,
6400
- {
6401
- shape: "pill",
6402
- size: "sm",
6403
- variant: "subtle",
6404
- color: "critical",
6405
- children: [
6406
- "\uBC1C\uC0DD\uC2DC\uAC04: ",
6407
- item.occurredAt
6408
- ]
6409
- }
6410
- )
6411
- ] })
6412
- ] }),
6413
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__meta", children: [
6414
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__time", children: item.time }),
6415
- item.unread !== false && /* @__PURE__ */ jsx52(
6416
- "span",
6417
- {
6418
- className: cn(
6419
- "stn-alert-card__dot",
6420
- `stn-alert-card__dot--${item.grade}`
6421
- ),
6422
- "aria-hidden": true
6423
- }
6424
- )
6425
- ] })
6426
- ] })
6427
- }
6428
- ) }, item.id ?? item.title);
6429
- }) }),
6430
- activeTab === "work" && /* @__PURE__ */ jsx52("ul", { className: "stn-alert-center__list", children: workItems.map((row) => /* @__PURE__ */ jsx52("li", { children: /* @__PURE__ */ jsx52(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__row", children: [
6431
- /* @__PURE__ */ jsx52(StnIcon, { name: "line/clock", size: 24, color: "var(--stn-text-secondary)", className: "stn-alert-card__icon" }),
6432
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__body", children: [
6433
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--work", children: row.typeLabel }),
6434
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__desc", children: row.text })
6746
+ "data-stn-alert-center": true,
6747
+ children: [
6748
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-center__header", children: [
6749
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-center__header-left", children: [
6750
+ /* @__PURE__ */ jsx53(StnIcon, { name: "line/bell", size: 20, color: "var(--stn-primary)" }),
6751
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-center__title", children: title }),
6752
+ alertCount > 0 && /* @__PURE__ */ jsx53(StnChip, { shape: "pill", size: "sm", variant: "subtle", color: "primary", children: alertCount })
6753
+ ] }),
6754
+ /* @__PURE__ */ jsx53(
6755
+ StnSegmented,
6756
+ {
6757
+ size: "md",
6758
+ value: activeTab,
6759
+ onChange: (val) => setActiveTab(val),
6760
+ options: STN_ALERT_CENTER_TABS.map((tab) => ({
6761
+ value: tab.id,
6762
+ label: tab.label,
6763
+ id: tabIds?.[tab.id]
6764
+ }))
6765
+ }
6766
+ ),
6767
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-center__header-right", children: [
6768
+ /* @__PURE__ */ jsx53(
6769
+ StnButton,
6770
+ {
6771
+ variant: "text",
6772
+ size: "sm",
6773
+ icon: "line/check-circle",
6774
+ onClick: onMarkAllAsRead,
6775
+ children: "\uBAA8\uB450 \uC77D\uC74C"
6776
+ }
6777
+ ),
6778
+ /* @__PURE__ */ jsx53("div", { className: "stn-alert-center__divider", "aria-hidden": true }),
6779
+ /* @__PURE__ */ jsx53(
6780
+ StnButton,
6781
+ {
6782
+ icon: "line/x",
6783
+ variant: "text",
6784
+ size: "sm",
6785
+ "aria-label": closeLabel,
6786
+ onClick: onClose
6787
+ }
6788
+ )
6789
+ ] })
6435
6790
  ] }),
6436
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__time", children: row.time })
6437
- ] }) }) }, row.id ?? row.text)) }),
6438
- activeTab === "deploy" && /* @__PURE__ */ jsx52("ul", { className: "stn-alert-center__list", children: deployItems.map((row) => /* @__PURE__ */ jsx52("li", { children: /* @__PURE__ */ jsx52(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__row", children: [
6439
- /* @__PURE__ */ jsx52(StnIcon, { name: "line/settings", size: 24, color: "var(--stn-secondary)", className: "stn-alert-card__icon" }),
6440
- /* @__PURE__ */ jsxs42("div", { className: "stn-alert-card__body", children: [
6441
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--deploy", children: row.typeLabel }),
6442
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__desc", children: row.text })
6791
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-center__list-wrap", children: [
6792
+ activeTab === "error" && /* @__PURE__ */ jsx53("ul", { className: "stn-alert-center__list", children: alerts.map((item) => /* @__PURE__ */ jsx53("li", { children: /* @__PURE__ */ jsx53(
6793
+ StnAlertCard,
6794
+ {
6795
+ item,
6796
+ titleOverflow: resolvedTitleOverflow,
6797
+ descOverflow: resolvedDescOverflow,
6798
+ onClick: () => onItemClick?.(item)
6799
+ }
6800
+ ) }, item.id ?? item.title)) }),
6801
+ activeTab === "work" && /* @__PURE__ */ jsx53("ul", { className: "stn-alert-center__list", children: workItems.map((row) => /* @__PURE__ */ jsx53("li", { children: /* @__PURE__ */ jsx53(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__row", children: [
6802
+ /* @__PURE__ */ jsx53(StnIcon, { name: "line/clock", size: 24, color: "var(--stn-text-secondary)", className: "stn-alert-card__icon" }),
6803
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__body", children: [
6804
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--work", children: row.typeLabel }),
6805
+ /* @__PURE__ */ jsx53("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__text-inner", children: row.text }) })
6806
+ ] }),
6807
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__time", children: row.time })
6808
+ ] }) }) }, row.id ?? row.text)) }),
6809
+ activeTab === "deploy" && /* @__PURE__ */ jsx53("ul", { className: "stn-alert-center__list", children: deployItems.map((row) => /* @__PURE__ */ jsx53("li", { children: /* @__PURE__ */ jsx53(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__row", children: [
6810
+ /* @__PURE__ */ jsx53(StnIcon, { name: "line/settings", size: 24, color: "var(--stn-secondary)", className: "stn-alert-card__icon" }),
6811
+ /* @__PURE__ */ jsxs43("div", { className: "stn-alert-card__body", children: [
6812
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--deploy", children: row.typeLabel }),
6813
+ /* @__PURE__ */ jsx53("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__text-inner", children: row.text }) })
6814
+ ] }),
6815
+ /* @__PURE__ */ jsx53("span", { className: "stn-alert-card__time", children: row.time })
6816
+ ] }) }) }, row.id ?? row.text)) })
6443
6817
  ] }),
6444
- /* @__PURE__ */ jsx52("span", { className: "stn-alert-card__time", children: row.time })
6445
- ] }) }) }, row.id ?? row.text)) })
6446
- ] }),
6447
- /* @__PURE__ */ jsx52("div", { className: "stn-alert-center__footer", children: /* @__PURE__ */ jsxs42(
6448
- "button",
6449
- {
6450
- type: "button",
6451
- className: "stn-alert-center__footer-link",
6452
- onClick: onManageSettings,
6453
- children: [
6454
- /* @__PURE__ */ jsx52("span", { children: "\uC54C\uB9BC \uC124\uC815 \uAD00\uB9AC" }),
6455
- /* @__PURE__ */ jsx52(StnIcon, { name: "line/settings", size: 14 }),
6456
- /* @__PURE__ */ jsx52(StnIcon, { name: "line/chevron-right", size: 14 })
6457
- ]
6458
- }
6459
- ) })
6460
- ] });
6818
+ /* @__PURE__ */ jsx53("div", { className: "stn-alert-center__footer", children: /* @__PURE__ */ jsxs43(
6819
+ "button",
6820
+ {
6821
+ type: "button",
6822
+ className: "stn-alert-center__footer-link",
6823
+ onClick: onManageSettings,
6824
+ children: [
6825
+ /* @__PURE__ */ jsx53("span", { children: "\uC54C\uB9BC \uC124\uC815 \uAD00\uB9AC" }),
6826
+ /* @__PURE__ */ jsx53(StnIcon, { name: "line/settings", size: 14 }),
6827
+ /* @__PURE__ */ jsx53(StnIcon, { name: "line/chevron-right", size: 14 })
6828
+ ]
6829
+ }
6830
+ ) })
6831
+ ]
6832
+ }
6833
+ );
6461
6834
  }
6462
6835
 
6463
6836
  // src/patterns/alertCenter/StnAlertCenterDocPreview.tsx
6464
- import { jsx as jsx53 } from "react/jsx-runtime";
6837
+ import { jsx as jsx54 } from "react/jsx-runtime";
6465
6838
  function StnAlertCenterDocPreview({
6466
6839
  theme = "light",
6467
6840
  withDocChrome = true,
6468
6841
  children,
6469
6842
  ...panelProps
6470
6843
  }) {
6471
- const panel = children ?? /* @__PURE__ */ jsx53(StnAlertCenterPanel, { ...panelProps });
6844
+ const panel = children ?? /* @__PURE__ */ jsx54(StnAlertCenterPanel, { ...panelProps });
6472
6845
  if (!withDocChrome) {
6473
- return /* @__PURE__ */ jsx53(StnProvider, { theme, applyThemeToDocument: false, children: panel });
6846
+ return /* @__PURE__ */ jsx54(StnProvider, { theme, applyThemeToDocument: false, children: panel });
6474
6847
  }
6475
- return /* @__PURE__ */ jsx53("div", { className: "stn-doc-frame stn-doc-frame--alert-center", "data-theme": theme, children: /* @__PURE__ */ jsx53("div", { className: "stn-alert-center-preview-shell", children: panel }) });
6848
+ return /* @__PURE__ */ jsx54("div", { className: "stn-doc-frame stn-doc-frame--alert-center", "data-theme": theme, children: /* @__PURE__ */ jsx54("div", { className: "stn-alert-center-preview-shell", children: panel }) });
6476
6849
  }
6477
6850
 
6478
6851
  // src/index.ts
@@ -6484,6 +6857,7 @@ import {
6484
6857
  STN_ALERT_CENTER_DEMO_WORK as STN_ALERT_CENTER_DEMO_WORK2,
6485
6858
  STN_ALERT_CENTER_DEMO_DEPLOY as STN_ALERT_CENTER_DEMO_DEPLOY2,
6486
6859
  STN_ALERT_CENTER_USAGE,
6860
+ STN_ALERT_CENTER_USAGE_HTML,
6487
6861
  STN_GNB_ALERT_INTEGRATION_USAGE
6488
6862
  } from "@stn-uiux/pub-ui/data/stnAlertCenter";
6489
6863
 
@@ -6498,7 +6872,7 @@ var useSideNav = () => useContext3(SideNavContext);
6498
6872
  // src/components/sideNav/StnSideNavItem.tsx
6499
6873
  import { forwardRef as forwardRef25 } from "react";
6500
6874
  import { STN_NAV_MENU_SUB_ICON } from "@stn-uiux/pub-ui/data/stnSideNavItem";
6501
- import { jsx as jsx54, jsxs as jsxs43 } from "react/jsx-runtime";
6875
+ import { jsx as jsx55, jsxs as jsxs44 } from "react/jsx-runtime";
6502
6876
  function maskStyle2(src) {
6503
6877
  return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
6504
6878
  }
@@ -6545,13 +6919,13 @@ var StnSideNavItem = forwardRef25(function StnSideNavItem2({
6545
6919
  sideNav.onSelect(id);
6546
6920
  }
6547
6921
  };
6548
- const iconElement = hasIcon && !isSub ? /* @__PURE__ */ jsxs43("span", { className: "stn-side-nav-item__icon-wrap", children: [
6549
- /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }),
6550
- showDot ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__dot-wrap", "aria-hidden": "true", children: /* @__PURE__ */ jsx54(StnBadge, { variant: "dot", color: "error" }) }) : null
6922
+ const iconElement = hasIcon && !isSub ? /* @__PURE__ */ jsxs44("span", { className: "stn-side-nav-item__icon-wrap", children: [
6923
+ /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }),
6924
+ showDot ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__dot-wrap", "aria-hidden": "true", children: /* @__PURE__ */ jsx55(StnBadge, { variant: "dot", color: "error" }) }) : null
6551
6925
  ] }) : null;
6552
- const subIconElement = hasIcon && isSub ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__sub-icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }) : null;
6926
+ const subIconElement = hasIcon && isSub ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__sub-icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }) : null;
6553
6927
  const activeIconElement = isSub ? subIconElement : iconElement;
6554
- return /* @__PURE__ */ jsx54(
6928
+ return /* @__PURE__ */ jsx55(
6555
6929
  "button",
6556
6930
  {
6557
6931
  ref,
@@ -6570,10 +6944,10 @@ var StnSideNavItem = forwardRef25(function StnSideNavItem2({
6570
6944
  title: collapsed ? label : void 0,
6571
6945
  onClick: handleClick,
6572
6946
  ...rest,
6573
- children: /* @__PURE__ */ jsxs43("span", { className: cn("stn-side-nav-item__inner", spreadTrail && "spread"), children: [
6574
- /* @__PURE__ */ jsxs43("span", { className: "stn-side-nav-item__lead", children: [
6575
- isSub && showSubIndent ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__sub-indent", "aria-hidden": "true" }) : null,
6576
- shouldShowSubDot ? /* @__PURE__ */ jsx54(
6947
+ children: /* @__PURE__ */ jsxs44("span", { className: cn("stn-side-nav-item__inner", spreadTrail && "spread"), children: [
6948
+ /* @__PURE__ */ jsxs44("span", { className: "stn-side-nav-item__lead", children: [
6949
+ isSub && showSubIndent ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__sub-indent", "aria-hidden": "true" }) : null,
6950
+ shouldShowSubDot ? /* @__PURE__ */ jsx55(
6577
6951
  "span",
6578
6952
  {
6579
6953
  className: cn(
@@ -6581,14 +6955,14 @@ var StnSideNavItem = forwardRef25(function StnSideNavItem2({
6581
6955
  hasIcon && iconPosition === "left" && "compact"
6582
6956
  ),
6583
6957
  "aria-hidden": "true",
6584
- children: /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__sub-dot-glyph", style: maskStyle2(STN_NAV_MENU_SUB_ICON) })
6958
+ children: /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__sub-dot-glyph", style: maskStyle2(STN_NAV_MENU_SUB_ICON) })
6585
6959
  }
6586
6960
  ) : null,
6587
6961
  iconPosition === "left" ? activeIconElement : null,
6588
- /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__label", children: label })
6962
+ /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__label", children: label })
6589
6963
  ] }),
6590
6964
  iconPosition === "right" ? activeIconElement : null,
6591
- renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */ jsx54(
6965
+ renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */ jsx55(
6592
6966
  StnBadge,
6593
6967
  {
6594
6968
  badgeContent: badge,
@@ -6596,7 +6970,7 @@ var StnSideNavItem = forwardRef25(function StnSideNavItem2({
6596
6970
  appearance: "subtle",
6597
6971
  className: "stn-side-nav-item__badge"
6598
6972
  }
6599
- ) : badge ? /* @__PURE__ */ jsx54("span", { className: "stn-side-nav-item__badge", children: badge }) : showBadgeDot ? /* @__PURE__ */ jsx54(
6973
+ ) : badge ? /* @__PURE__ */ jsx55("span", { className: "stn-side-nav-item__badge", children: badge }) : showBadgeDot ? /* @__PURE__ */ jsx55(
6600
6974
  StnBadge,
6601
6975
  {
6602
6976
  variant: "dot",
@@ -6604,7 +6978,7 @@ var StnSideNavItem = forwardRef25(function StnSideNavItem2({
6604
6978
  className: "stn-side-nav-item__badge"
6605
6979
  }
6606
6980
  ) : null : null,
6607
- !isSub && showChevron && !collapsed ? /* @__PURE__ */ jsx54(
6981
+ !isSub && showChevron && !collapsed ? /* @__PURE__ */ jsx55(
6608
6982
  "span",
6609
6983
  {
6610
6984
  className: cn(
@@ -6625,11 +6999,11 @@ import { forwardRef as forwardRef27 } from "react";
6625
6999
 
6626
7000
  // src/components/sideNav/StnSideNavLogo.tsx
6627
7001
  import { forwardRef as forwardRef26 } from "react";
6628
- import { jsx as jsx55 } from "react/jsx-runtime";
7002
+ import { jsx as jsx56 } from "react/jsx-runtime";
6629
7003
  var StnSideNavLogo = forwardRef26(
6630
7004
  function StnSideNavLogo2({ className, logoProps, ...rest }, ref) {
6631
7005
  const { collapsed } = useSideNav();
6632
- return /* @__PURE__ */ jsx55(
7006
+ return /* @__PURE__ */ jsx56(
6633
7007
  "div",
6634
7008
  {
6635
7009
  ref,
@@ -6640,7 +7014,7 @@ var StnSideNavLogo = forwardRef26(
6640
7014
  ),
6641
7015
  title: "InfoMap",
6642
7016
  ...rest,
6643
- children: /* @__PURE__ */ jsx55(
7017
+ children: /* @__PURE__ */ jsx56(
6644
7018
  StnLogo,
6645
7019
  {
6646
7020
  variant: collapsed ? "onlyimg" : "horizontal",
@@ -6654,7 +7028,7 @@ var StnSideNavLogo = forwardRef26(
6654
7028
  );
6655
7029
 
6656
7030
  // src/components/sideNav/StnSideNavHeader.tsx
6657
- import { Fragment as Fragment6, jsx as jsx56, jsxs as jsxs44 } from "react/jsx-runtime";
7031
+ import { Fragment as Fragment6, jsx as jsx57, jsxs as jsxs45 } from "react/jsx-runtime";
6658
7032
  var StnSideNavHeader = forwardRef27(function StnSideNavHeader2({
6659
7033
  children,
6660
7034
  border = false,
@@ -6667,7 +7041,7 @@ var StnSideNavHeader = forwardRef27(function StnSideNavHeader2({
6667
7041
  const { collapsed, onToggleCollapse, isDrawer, setMobileOpen } = useSideNav();
6668
7042
  const withBorder = Boolean(border || hasBorder);
6669
7043
  const shouldShowClose = showClose ?? Boolean(isDrawer);
6670
- return /* @__PURE__ */ jsx56(
7044
+ return /* @__PURE__ */ jsx57(
6671
7045
  "div",
6672
7046
  {
6673
7047
  ref,
@@ -6678,9 +7052,9 @@ var StnSideNavHeader = forwardRef27(function StnSideNavHeader2({
6678
7052
  className
6679
7053
  ),
6680
7054
  ...rest,
6681
- children: children ?? /* @__PURE__ */ jsxs44(Fragment6, { children: [
6682
- /* @__PURE__ */ jsx56(StnSideNavLogo, {}),
6683
- shouldShowClose ? /* @__PURE__ */ jsx56(
7055
+ children: children ?? /* @__PURE__ */ jsxs45(Fragment6, { children: [
7056
+ /* @__PURE__ */ jsx57(StnSideNavLogo, {}),
7057
+ shouldShowClose ? /* @__PURE__ */ jsx57(
6684
7058
  StnButton,
6685
7059
  {
6686
7060
  size: "sm",
@@ -6692,7 +7066,7 @@ var StnSideNavHeader = forwardRef27(function StnSideNavHeader2({
6692
7066
  className: "stn-side-nav__collapse-btn",
6693
7067
  onClick: () => setMobileOpen?.(false)
6694
7068
  }
6695
- ) : showToggle ? /* @__PURE__ */ jsx56(
7069
+ ) : showToggle ? /* @__PURE__ */ jsx57(
6696
7070
  StnButton,
6697
7071
  {
6698
7072
  size: "sm",
@@ -6712,7 +7086,7 @@ var StnSideNavHeader = forwardRef27(function StnSideNavHeader2({
6712
7086
 
6713
7087
  // src/components/sideNav/StnSideNavMenu.tsx
6714
7088
  import { forwardRef as forwardRef28 } from "react";
6715
- import { jsx as jsx57 } from "react/jsx-runtime";
7089
+ import { jsx as jsx58 } from "react/jsx-runtime";
6716
7090
  var StnSideNavMenu = forwardRef28(function StnSideNavMenu2({
6717
7091
  children,
6718
7092
  className,
@@ -6720,7 +7094,7 @@ var StnSideNavMenu = forwardRef28(function StnSideNavMenu2({
6720
7094
  scrollColor = "fade",
6721
7095
  ...rest
6722
7096
  }, ref) {
6723
- return /* @__PURE__ */ jsx57(
7097
+ return /* @__PURE__ */ jsx58(
6724
7098
  "nav",
6725
7099
  {
6726
7100
  ref,
@@ -6746,7 +7120,7 @@ import {
6746
7120
  useRef as useRef7,
6747
7121
  useState as useState12
6748
7122
  } from "react";
6749
- import { jsx as jsx58, jsxs as jsxs45 } from "react/jsx-runtime";
7123
+ import { jsx as jsx59, jsxs as jsxs46 } from "react/jsx-runtime";
6750
7124
  var StnSideNavGroup = forwardRef29(function StnSideNavGroup2({
6751
7125
  label,
6752
7126
  parent,
@@ -6791,7 +7165,7 @@ var StnSideNavGroup = forwardRef29(function StnSideNavGroup2({
6791
7165
  }
6792
7166
  onOpenChange?.(next);
6793
7167
  };
6794
- const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */ jsx58(
7168
+ const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */ jsx59(
6795
7169
  "div",
6796
7170
  {
6797
7171
  className: cn(
@@ -6806,7 +7180,7 @@ var StnSideNavGroup = forwardRef29(function StnSideNavGroup2({
6806
7180
  children
6807
7181
  }
6808
7182
  ) : null;
6809
- return /* @__PURE__ */ jsxs45(
7183
+ return /* @__PURE__ */ jsxs46(
6810
7184
  "div",
6811
7185
  {
6812
7186
  ref: (node) => {
@@ -6827,7 +7201,7 @@ var StnSideNavGroup = forwardRef29(function StnSideNavGroup2({
6827
7201
  "aria-label": typeof label === "string" ? label : void 0,
6828
7202
  ...rest,
6829
7203
  children: [
6830
- label && !collapsed ? /* @__PURE__ */ jsx58("span", { className: "stn-side-nav__group-label", onClick: handleToggle, children: label }) : null,
7204
+ label && !collapsed ? /* @__PURE__ */ jsx59("span", { className: "stn-side-nav__group-label", onClick: handleToggle, children: label }) : null,
6831
7205
  isUp ? subnavNode : null,
6832
7206
  parent,
6833
7207
  !isUp ? subnavNode : null
@@ -6838,9 +7212,9 @@ var StnSideNavGroup = forwardRef29(function StnSideNavGroup2({
6838
7212
 
6839
7213
  // src/components/sideNav/StnSideNavSpacer.tsx
6840
7214
  import { forwardRef as forwardRef30 } from "react";
6841
- import { jsx as jsx59 } from "react/jsx-runtime";
7215
+ import { jsx as jsx60 } from "react/jsx-runtime";
6842
7216
  var StnSideNavSpacer = forwardRef30(function StnSideNavSpacer2({ className, style, ...rest }, ref) {
6843
- return /* @__PURE__ */ jsx59(
7217
+ return /* @__PURE__ */ jsx60(
6844
7218
  "div",
6845
7219
  {
6846
7220
  ref,
@@ -6854,9 +7228,9 @@ var StnSideNavSpacer = forwardRef30(function StnSideNavSpacer2({ className, styl
6854
7228
 
6855
7229
  // src/components/sideNav/StnSideNavFooter.tsx
6856
7230
  import { forwardRef as forwardRef31 } from "react";
6857
- import { jsx as jsx60 } from "react/jsx-runtime";
7231
+ import { jsx as jsx61 } from "react/jsx-runtime";
6858
7232
  var StnSideNavFooter = forwardRef31(function StnSideNavFooter2({ curved = false, children, className, ...rest }, ref) {
6859
- return /* @__PURE__ */ jsx60(
7233
+ return /* @__PURE__ */ jsx61(
6860
7234
  "nav",
6861
7235
  {
6862
7236
  ref,
@@ -6870,11 +7244,11 @@ var StnSideNavFooter = forwardRef31(function StnSideNavFooter2({ curved = false,
6870
7244
 
6871
7245
  // src/components/sideNav/StnSideNavToggle.tsx
6872
7246
  import { forwardRef as forwardRef32 } from "react";
6873
- import { jsx as jsx61 } from "react/jsx-runtime";
7247
+ import { jsx as jsx62 } from "react/jsx-runtime";
6874
7248
  var StnSideNavToggle = forwardRef32(
6875
7249
  function StnSideNavToggle2({ className, onClick, ...rest }, ref) {
6876
7250
  const { collapsed, onToggleCollapse } = useSideNav();
6877
- return /* @__PURE__ */ jsx61(
7251
+ return /* @__PURE__ */ jsx62(
6878
7252
  "button",
6879
7253
  {
6880
7254
  ref,
@@ -6887,7 +7261,7 @@ var StnSideNavToggle = forwardRef32(
6887
7261
  "aria-label": collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
6888
7262
  title: collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
6889
7263
  ...rest,
6890
- children: /* @__PURE__ */ jsx61(
7264
+ children: /* @__PURE__ */ jsx62(
6891
7265
  "svg",
6892
7266
  {
6893
7267
  width: "12",
@@ -6898,7 +7272,7 @@ var StnSideNavToggle = forwardRef32(
6898
7272
  strokeWidth: "2.5",
6899
7273
  strokeLinecap: "round",
6900
7274
  strokeLinejoin: "round",
6901
- children: /* @__PURE__ */ jsx61("path", { d: "M9 18l6-6-6-6" })
7275
+ children: /* @__PURE__ */ jsx62("path", { d: "M9 18l6-6-6-6" })
6902
7276
  }
6903
7277
  )
6904
7278
  }
@@ -6908,17 +7282,17 @@ var StnSideNavToggle = forwardRef32(
6908
7282
 
6909
7283
  // src/components/sideNav/StnSideNavWatermark.tsx
6910
7284
  import { forwardRef as forwardRef33 } from "react";
6911
- import { jsx as jsx62 } from "react/jsx-runtime";
7285
+ import { jsx as jsx63 } from "react/jsx-runtime";
6912
7286
  var StnSideNavWatermark = forwardRef33(
6913
7287
  function StnSideNavWatermark2({ size = "xl", theme, className, ...rest }, ref) {
6914
- return /* @__PURE__ */ jsx62(
7288
+ return /* @__PURE__ */ jsx63(
6915
7289
  "div",
6916
7290
  {
6917
7291
  ref,
6918
7292
  className: cn("stn-side-nav__watermark", className),
6919
7293
  "aria-hidden": "true",
6920
7294
  ...rest,
6921
- children: /* @__PURE__ */ jsx62(StnLogo, { variant: "watermark", size, theme })
7295
+ children: /* @__PURE__ */ jsx63(StnLogo, { variant: "watermark", size, theme })
6922
7296
  }
6923
7297
  );
6924
7298
  }
@@ -6926,11 +7300,11 @@ var StnSideNavWatermark = forwardRef33(
6926
7300
 
6927
7301
  // src/components/sideNav/StnSideNavMobileTrigger.tsx
6928
7302
  import { forwardRef as forwardRef34 } from "react";
6929
- import { jsx as jsx63, jsxs as jsxs46 } from "react/jsx-runtime";
7303
+ import { jsx as jsx64, jsxs as jsxs47 } from "react/jsx-runtime";
6930
7304
  var StnSideNavMobileTrigger = forwardRef34(
6931
7305
  function StnSideNavMobileTrigger2({ floating = false, className, children, onClick, ...rest }, ref) {
6932
7306
  const { onToggleMobileOpen, mobileOpen } = useSideNav();
6933
- return /* @__PURE__ */ jsx63(
7307
+ return /* @__PURE__ */ jsx64(
6934
7308
  "button",
6935
7309
  {
6936
7310
  ref,
@@ -6948,10 +7322,10 @@ var StnSideNavMobileTrigger = forwardRef34(
6948
7322
  onToggleMobileOpen?.();
6949
7323
  },
6950
7324
  ...rest,
6951
- children: children ?? /* @__PURE__ */ jsxs46("span", { className: "stn-side-nav__hamburger-bars", "aria-hidden": "true", children: [
6952
- /* @__PURE__ */ jsx63("span", {}),
6953
- /* @__PURE__ */ jsx63("span", {}),
6954
- /* @__PURE__ */ jsx63("span", {})
7325
+ children: children ?? /* @__PURE__ */ jsxs47("span", { className: "stn-side-nav__hamburger-bars", "aria-hidden": "true", children: [
7326
+ /* @__PURE__ */ jsx64("span", {}),
7327
+ /* @__PURE__ */ jsx64("span", {}),
7328
+ /* @__PURE__ */ jsx64("span", {})
6955
7329
  ] })
6956
7330
  }
6957
7331
  );
@@ -6962,10 +7336,10 @@ var StnSideNavMobileTrigger = forwardRef34(
6962
7336
  import {
6963
7337
  forwardRef as forwardRef35
6964
7338
  } from "react";
6965
- import { jsx as jsx64 } from "react/jsx-runtime";
7339
+ import { jsx as jsx65 } from "react/jsx-runtime";
6966
7340
  var StnSideNavSub = forwardRef35(
6967
7341
  function StnSideNavSub2({ children, className, ...rest }, ref) {
6968
- return /* @__PURE__ */ jsx64(
7342
+ return /* @__PURE__ */ jsx65(
6969
7343
  "div",
6970
7344
  {
6971
7345
  ref,
@@ -6994,14 +7368,14 @@ var StnSideNavSubItem = forwardRef35(
6994
7368
  const { collapsed } = useSideNav();
6995
7369
  const content = children ?? label;
6996
7370
  const computedTitle = title ?? (typeof content === "string" ? content : void 0);
6997
- const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */ jsx64("span", { className: "stn-side-nav__sub-icon", children: /* @__PURE__ */ jsx64(
7371
+ const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav__sub-icon", children: /* @__PURE__ */ jsx65(
6998
7372
  "span",
6999
7373
  {
7000
7374
  className: "stn-side-nav__sub-glyph",
7001
7375
  style: { maskImage: `url('${iconSrc}')`, WebkitMaskImage: `url('${iconSrc}')` }
7002
7376
  }
7003
7377
  ) }) : null);
7004
- return /* @__PURE__ */ jsx64(
7378
+ return /* @__PURE__ */ jsx65(
7005
7379
  StnButton,
7006
7380
  {
7007
7381
  ref,
@@ -7021,7 +7395,7 @@ var StnSideNavSubItem = forwardRef35(
7021
7395
 
7022
7396
  // src/components/sideNav/StnSideNavSubNav.tsx
7023
7397
  import { forwardRef as forwardRef36 } from "react";
7024
- import { jsx as jsx65 } from "react/jsx-runtime";
7398
+ import { jsx as jsx66 } from "react/jsx-runtime";
7025
7399
  var StnSideNavSubNav = forwardRef36(
7026
7400
  function StnSideNavSubNav2({
7027
7401
  dropdown = false,
@@ -7034,7 +7408,7 @@ var StnSideNavSubNav = forwardRef36(
7034
7408
  }, ref) {
7035
7409
  const isUp = direction === "up";
7036
7410
  const isTransparent = variant === "transparent" || background === false;
7037
- return /* @__PURE__ */ jsx65(
7411
+ return /* @__PURE__ */ jsx66(
7038
7412
  "div",
7039
7413
  {
7040
7414
  ref,
@@ -7062,7 +7436,7 @@ import {
7062
7436
  useMemo as useMemo4,
7063
7437
  useState as useState13
7064
7438
  } from "react";
7065
- import { jsx as jsx66, jsxs as jsxs47 } from "react/jsx-runtime";
7439
+ import { jsx as jsx67, jsxs as jsxs48 } from "react/jsx-runtime";
7066
7440
  function useControllableState(controlledValue, defaultValue, onChange) {
7067
7441
  const [internalState, setInternalState] = useState13(defaultValue);
7068
7442
  const isControlled = controlledValue !== void 0;
@@ -7139,9 +7513,9 @@ var StnSideNavigationRoot = forwardRef37(function StnSideNavigationRoot2({
7139
7513
  }),
7140
7514
  [isEffectiveCollapsed, activeId, setActiveId, handleToggleCollapse, mobileOpen, handleToggleMobileOpen, setMobileOpen, isDrawerMode]
7141
7515
  );
7142
- return /* @__PURE__ */ jsxs47(SideNavContext.Provider, { value: contextValue, children: [
7143
- showMobileTrigger && /* @__PURE__ */ jsx66(StnSideNavMobileTrigger, { floating: true }),
7144
- (drawer || responsiveDrawer) && /* @__PURE__ */ jsx66(
7516
+ return /* @__PURE__ */ jsxs48(SideNavContext.Provider, { value: contextValue, children: [
7517
+ showMobileTrigger && /* @__PURE__ */ jsx67(StnSideNavMobileTrigger, { floating: true }),
7518
+ (drawer || responsiveDrawer) && /* @__PURE__ */ jsx67(
7145
7519
  "div",
7146
7520
  {
7147
7521
  className: cn("stn-side-nav__backdrop", mobileOpen && "is-open"),
@@ -7149,7 +7523,7 @@ var StnSideNavigationRoot = forwardRef37(function StnSideNavigationRoot2({
7149
7523
  "aria-hidden": !mobileOpen
7150
7524
  }
7151
7525
  ),
7152
- /* @__PURE__ */ jsx66(
7526
+ /* @__PURE__ */ jsx67(
7153
7527
  "aside",
7154
7528
  {
7155
7529
  ref,
@@ -7191,14 +7565,14 @@ var StnSideNavigation = Object.assign(StnSideNavigationRoot, {
7191
7565
  import {
7192
7566
  Fragment as Fragment7,
7193
7567
  useEffect as useEffect11,
7194
- useId as useId13,
7568
+ useId as useId15,
7195
7569
  useRef as useRef8,
7196
7570
  useState as useState14
7197
7571
  } from "react";
7198
7572
  import {
7199
7573
  STN_BREADCRUMB_ICON_SRC
7200
7574
  } from "@stn-uiux/pub-ui/data/stnBreadcrumb";
7201
- import { Fragment as Fragment8, jsx as jsx67, jsxs as jsxs48 } from "react/jsx-runtime";
7575
+ import { Fragment as Fragment8, jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
7202
7576
  function maskStyle3(src) {
7203
7577
  return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
7204
7578
  }
@@ -7211,13 +7585,13 @@ function hasSegmentMenu(item) {
7211
7585
  return Boolean(item.menu || item.menuItems && item.menuItems.length > 0);
7212
7586
  }
7213
7587
  function BreadcrumbSeparator() {
7214
- return /* @__PURE__ */ jsx67("li", { className: "separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx67("span", { style: maskStyle3(STN_BREADCRUMB_ICON_SRC.separator) }) });
7588
+ return /* @__PURE__ */ jsx68("li", { className: "separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx68("span", { style: maskStyle3(STN_BREADCRUMB_ICON_SRC.separator) }) });
7215
7589
  }
7216
7590
  function BreadcrumbIcon({ src }) {
7217
- return /* @__PURE__ */ jsx67("span", { className: "stn-breadcrumb__icon-glyph", style: maskStyle3(src), "aria-hidden": "true" });
7591
+ return /* @__PURE__ */ jsx68("span", { className: "stn-breadcrumb__icon-glyph", style: maskStyle3(src), "aria-hidden": "true" });
7218
7592
  }
7219
7593
  function BreadcrumbCaret() {
7220
- return /* @__PURE__ */ jsx67(
7594
+ return /* @__PURE__ */ jsx68(
7221
7595
  "span",
7222
7596
  {
7223
7597
  className: "stn-breadcrumb__caret",
@@ -7231,10 +7605,10 @@ function SegmentContent({
7231
7605
  label,
7232
7606
  menu
7233
7607
  }) {
7234
- return /* @__PURE__ */ jsxs48(Fragment8, { children: [
7235
- iconSrc ? /* @__PURE__ */ jsx67(BreadcrumbIcon, { src: iconSrc }) : null,
7236
- /* @__PURE__ */ jsx67("span", { className: "stn-breadcrumb__label", children: label }),
7237
- menu ? /* @__PURE__ */ jsx67(BreadcrumbCaret, {}) : null
7608
+ return /* @__PURE__ */ jsxs49(Fragment8, { children: [
7609
+ iconSrc ? /* @__PURE__ */ jsx68(BreadcrumbIcon, { src: iconSrc }) : null,
7610
+ /* @__PURE__ */ jsx68("span", { className: "stn-breadcrumb__label", children: label }),
7611
+ menu ? /* @__PURE__ */ jsx68(BreadcrumbCaret, {}) : null
7238
7612
  ] });
7239
7613
  }
7240
7614
  function BreadcrumbMenuList({
@@ -7242,7 +7616,7 @@ function BreadcrumbMenuList({
7242
7616
  items,
7243
7617
  onPick
7244
7618
  }) {
7245
- return /* @__PURE__ */ jsx67("ul", { id, className: "stn-breadcrumb__menu", role: "menu", children: items.map((option) => /* @__PURE__ */ jsx67("li", { role: "none", children: option.href ? /* @__PURE__ */ jsx67(
7619
+ return /* @__PURE__ */ jsx68("ul", { id, className: "stn-breadcrumb__menu", role: "menu", children: items.map((option) => /* @__PURE__ */ jsx68("li", { role: "none", children: option.href ? /* @__PURE__ */ jsx68(
7246
7620
  "a",
7247
7621
  {
7248
7622
  role: "menuitem",
@@ -7254,7 +7628,7 @@ function BreadcrumbMenuList({
7254
7628
  },
7255
7629
  children: option.label
7256
7630
  }
7257
- ) : /* @__PURE__ */ jsx67(
7631
+ ) : /* @__PURE__ */ jsx68(
7258
7632
  "button",
7259
7633
  {
7260
7634
  type: "button",
@@ -7291,20 +7665,20 @@ function BreadcrumbSegment({
7291
7665
  item,
7292
7666
  isCurrent
7293
7667
  }) {
7294
- const menuId = useId13();
7668
+ const menuId = useId15();
7295
7669
  const [open, setOpen] = useState14(false);
7296
7670
  const menuItems = item.menuItems ?? [];
7297
7671
  const showMenu = hasSegmentMenu(item) && !isCurrent;
7298
7672
  const canOpenMenu = showMenu && menuItems.length > 0;
7299
7673
  const rootRef = useDismissibleMenu(open, () => setOpen(false));
7300
7674
  const iconSrc = resolveIconSrc(item);
7301
- const content = /* @__PURE__ */ jsx67(SegmentContent, { iconSrc, label: item.label, menu: showMenu });
7675
+ const content = /* @__PURE__ */ jsx68(SegmentContent, { iconSrc, label: item.label, menu: showMenu });
7302
7676
  if (isCurrent) {
7303
- return /* @__PURE__ */ jsx67("span", { className: "stn-breadcrumb__segment", "aria-current": "page", "aria-label": item.label, children: content });
7677
+ return /* @__PURE__ */ jsx68("span", { className: "stn-breadcrumb__segment", "aria-current": "page", "aria-label": item.label, children: content });
7304
7678
  }
7305
7679
  if (canOpenMenu) {
7306
- return /* @__PURE__ */ jsxs48("span", { ref: rootRef, className: "stn-breadcrumb__segment-wrap", children: [
7307
- /* @__PURE__ */ jsx67(
7680
+ return /* @__PURE__ */ jsxs49("span", { ref: rootRef, className: "stn-breadcrumb__segment-wrap", children: [
7681
+ /* @__PURE__ */ jsx68(
7308
7682
  "button",
7309
7683
  {
7310
7684
  type: "button",
@@ -7320,7 +7694,7 @@ function BreadcrumbSegment({
7320
7694
  children: content
7321
7695
  }
7322
7696
  ),
7323
- open ? /* @__PURE__ */ jsx67(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
7697
+ open ? /* @__PURE__ */ jsx68(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
7324
7698
  ] });
7325
7699
  }
7326
7700
  if (item.menu || item.onClick) {
@@ -7332,7 +7706,7 @@ function BreadcrumbSegment({
7332
7706
  "aria-haspopup": item.menu ? "menu" : void 0,
7333
7707
  "aria-expanded": item.menu ? false : void 0
7334
7708
  };
7335
- return /* @__PURE__ */ jsx67("button", { ...buttonProps, children: content });
7709
+ return /* @__PURE__ */ jsx68("button", { ...buttonProps, children: content });
7336
7710
  }
7337
7711
  if (item.href) {
7338
7712
  const linkProps = {
@@ -7341,17 +7715,17 @@ function BreadcrumbSegment({
7341
7715
  onClick: item.onClick,
7342
7716
  "aria-label": item.label
7343
7717
  };
7344
- return /* @__PURE__ */ jsx67("a", { ...linkProps, children: content });
7718
+ return /* @__PURE__ */ jsx68("a", { ...linkProps, children: content });
7345
7719
  }
7346
- return /* @__PURE__ */ jsx67("span", { className: "stn-breadcrumb__segment", "aria-label": item.label, children: content });
7720
+ return /* @__PURE__ */ jsx68("span", { className: "stn-breadcrumb__segment", "aria-label": item.label, children: content });
7347
7721
  }
7348
7722
  function BreadcrumbBack({
7349
7723
  label,
7350
7724
  href,
7351
7725
  onClick
7352
7726
  }) {
7353
- const content = /* @__PURE__ */ jsxs48(Fragment8, { children: [
7354
- /* @__PURE__ */ jsx67(
7727
+ const content = /* @__PURE__ */ jsxs49(Fragment8, { children: [
7728
+ /* @__PURE__ */ jsx68(
7355
7729
  "span",
7356
7730
  {
7357
7731
  className: "stn-breadcrumb__back-glyph",
@@ -7359,12 +7733,12 @@ function BreadcrumbBack({
7359
7733
  "aria-hidden": "true"
7360
7734
  }
7361
7735
  ),
7362
- /* @__PURE__ */ jsx67("span", { className: "stn-breadcrumb__label", children: label })
7736
+ /* @__PURE__ */ jsx68("span", { className: "stn-breadcrumb__label", children: label })
7363
7737
  ] });
7364
7738
  if (href) {
7365
- return /* @__PURE__ */ jsx67("a", { className: "stn-breadcrumb__back", href, onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
7739
+ return /* @__PURE__ */ jsx68("a", { className: "stn-breadcrumb__back", href, onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
7366
7740
  }
7367
- return /* @__PURE__ */ jsx67("button", { type: "button", className: "stn-breadcrumb__back", onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
7741
+ return /* @__PURE__ */ jsx68("button", { type: "button", className: "stn-breadcrumb__back", onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
7368
7742
  }
7369
7743
  function splitCollapsedItems(items, maxItems, itemsBeforeCollapse, itemsAfterCollapse) {
7370
7744
  if (!maxItems || items.length <= maxItems) {
@@ -7395,8 +7769,8 @@ function BreadcrumbCollapsed({
7395
7769
  onClick: item.onClick,
7396
7770
  current: item.current
7397
7771
  }));
7398
- return /* @__PURE__ */ jsxs48("li", { className: "stn-breadcrumb__item", ref: rootRef, children: [
7399
- /* @__PURE__ */ jsx67(
7772
+ return /* @__PURE__ */ jsxs49("li", { className: "stn-breadcrumb__item", ref: rootRef, children: [
7773
+ /* @__PURE__ */ jsx68(
7400
7774
  "button",
7401
7775
  {
7402
7776
  type: "button",
@@ -7409,7 +7783,7 @@ function BreadcrumbCollapsed({
7409
7783
  children: "\u22EF"
7410
7784
  }
7411
7785
  ),
7412
- open ? /* @__PURE__ */ jsx67(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
7786
+ open ? /* @__PURE__ */ jsx68(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
7413
7787
  ] });
7414
7788
  }
7415
7789
  function StnBreadcrumb({
@@ -7426,7 +7800,7 @@ function StnBreadcrumb({
7426
7800
  homeLabel = "\uD648",
7427
7801
  renderItem
7428
7802
  }) {
7429
- const menuId = useId13();
7803
+ const menuId = useId15();
7430
7804
  const currentIndex = items.findIndex((item, index) => item.current ?? index === items.length - 1);
7431
7805
  const currentItem = currentIndex >= 0 ? items[currentIndex] : items[items.length - 1];
7432
7806
  const previousItem = currentIndex > 0 ? items[currentIndex - 1] : null;
@@ -7441,8 +7815,8 @@ function StnBreadcrumb({
7441
7815
  const lastId = items[items.length - 1]?.id;
7442
7816
  const renderTrailItem = (item) => {
7443
7817
  const isCurrent = Boolean(item.current) || item.id === lastId;
7444
- const segment = /* @__PURE__ */ jsx67(BreadcrumbSegment, { item, isCurrent });
7445
- return /* @__PURE__ */ jsx67(
7818
+ const segment = /* @__PURE__ */ jsx68(BreadcrumbSegment, { item, isCurrent });
7819
+ return /* @__PURE__ */ jsx68(
7446
7820
  "li",
7447
7821
  {
7448
7822
  className: cn(
@@ -7453,27 +7827,27 @@ function StnBreadcrumb({
7453
7827
  }
7454
7828
  );
7455
7829
  };
7456
- return /* @__PURE__ */ jsx67(
7830
+ return /* @__PURE__ */ jsx68(
7457
7831
  "nav",
7458
7832
  {
7459
7833
  className: cn("stn-breadcrumb", size, variant === "chip" && "chip", className),
7460
7834
  "aria-label": "Breadcrumb",
7461
- children: /* @__PURE__ */ jsxs48("ol", { className: "stn-breadcrumb__list", children: [
7462
- currentItem ? /* @__PURE__ */ jsx67("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--back", children: /* @__PURE__ */ jsx67(BreadcrumbBack, { label: currentItem.label, href: backHref, onClick: backOnClick }) }) : null,
7463
- showHome ? /* @__PURE__ */ jsx67("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs48("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
7464
- /* @__PURE__ */ jsx67(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
7465
- /* @__PURE__ */ jsx67("span", { className: "blind", children: homeLabel })
7835
+ children: /* @__PURE__ */ jsxs49("ol", { className: "stn-breadcrumb__list", children: [
7836
+ currentItem ? /* @__PURE__ */ jsx68("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--back", children: /* @__PURE__ */ jsx68(BreadcrumbBack, { label: currentItem.label, href: backHref, onClick: backOnClick }) }) : null,
7837
+ showHome ? /* @__PURE__ */ jsx68("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs49("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
7838
+ /* @__PURE__ */ jsx68(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
7839
+ /* @__PURE__ */ jsx68("span", { className: "blind", children: homeLabel })
7466
7840
  ] }) }) : null,
7467
- head.map((item, index) => /* @__PURE__ */ jsxs48(Fragment7, { children: [
7468
- showHome || index > 0 ? /* @__PURE__ */ jsx67(BreadcrumbSeparator, {}) : null,
7841
+ head.map((item, index) => /* @__PURE__ */ jsxs49(Fragment7, { children: [
7842
+ showHome || index > 0 ? /* @__PURE__ */ jsx68(BreadcrumbSeparator, {}) : null,
7469
7843
  renderTrailItem(item)
7470
7844
  ] }, item.id)),
7471
- hidden.length > 0 ? /* @__PURE__ */ jsxs48(Fragment8, { children: [
7472
- /* @__PURE__ */ jsx67(BreadcrumbSeparator, {}),
7473
- /* @__PURE__ */ jsx67(BreadcrumbCollapsed, { items: hidden, menuId })
7845
+ hidden.length > 0 ? /* @__PURE__ */ jsxs49(Fragment8, { children: [
7846
+ /* @__PURE__ */ jsx68(BreadcrumbSeparator, {}),
7847
+ /* @__PURE__ */ jsx68(BreadcrumbCollapsed, { items: hidden, menuId })
7474
7848
  ] }) : null,
7475
- tail.map((item) => /* @__PURE__ */ jsxs48(Fragment7, { children: [
7476
- /* @__PURE__ */ jsx67(BreadcrumbSeparator, {}),
7849
+ tail.map((item) => /* @__PURE__ */ jsxs49(Fragment7, { children: [
7850
+ /* @__PURE__ */ jsx68(BreadcrumbSeparator, {}),
7477
7851
  renderTrailItem(item)
7478
7852
  ] }, item.id))
7479
7853
  ] })
@@ -7484,7 +7858,7 @@ function StnBreadcrumb({
7484
7858
  // src/components/StnHeaderTitle.tsx
7485
7859
  import { useEffect as useEffect12, useState as useState15 } from "react";
7486
7860
  import { STN_HEADER_TITLE_FRAME } from "@stn-uiux/pub-ui/data/stnHeaderTitle";
7487
- import { jsx as jsx68, jsxs as jsxs49 } from "react/jsx-runtime";
7861
+ import { jsx as jsx69, jsxs as jsxs50 } from "react/jsx-runtime";
7488
7862
  var KO_WEEKDAY_SHORT = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
7489
7863
  var KO_WEEKDAY_LONG = [
7490
7864
  "\uC77C\uC694\uC77C",
@@ -7523,8 +7897,8 @@ function formatStnHeaderTitleTime(date, options) {
7523
7897
  }
7524
7898
  function HeaderTitleFrame({ preview = false }) {
7525
7899
  const frameClass = preview ? "stn-header-title__frame-preview" : "stn-header-title__frame";
7526
- return /* @__PURE__ */ jsxs49("div", { className: frameClass, "aria-hidden": "true", children: [
7527
- /* @__PURE__ */ jsx68("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--outer", children: /* @__PURE__ */ jsx68(
7900
+ return /* @__PURE__ */ jsxs50("div", { className: frameClass, "aria-hidden": "true", children: [
7901
+ /* @__PURE__ */ jsx69("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--outer", children: /* @__PURE__ */ jsx69(
7528
7902
  "img",
7529
7903
  {
7530
7904
  className: "stn-header-title__frame-img",
@@ -7533,8 +7907,8 @@ function HeaderTitleFrame({ preview = false }) {
7533
7907
  draggable: false
7534
7908
  }
7535
7909
  ) }),
7536
- /* @__PURE__ */ jsxs49("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--inner", children: [
7537
- /* @__PURE__ */ jsx68(
7910
+ /* @__PURE__ */ jsxs50("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--inner", children: [
7911
+ /* @__PURE__ */ jsx69(
7538
7912
  "img",
7539
7913
  {
7540
7914
  className: "stn-header-title__frame-img stn-header-title__frame-img--dark",
@@ -7543,7 +7917,7 @@ function HeaderTitleFrame({ preview = false }) {
7543
7917
  draggable: false
7544
7918
  }
7545
7919
  ),
7546
- /* @__PURE__ */ jsx68(
7920
+ /* @__PURE__ */ jsx69(
7547
7921
  "img",
7548
7922
  {
7549
7923
  className: "stn-header-title__frame-img stn-header-title__frame-img--light",
@@ -7556,7 +7930,7 @@ function HeaderTitleFrame({ preview = false }) {
7556
7930
  ] });
7557
7931
  }
7558
7932
  function StnHeaderTitleFramePreview({ className }) {
7559
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-header-title__frame-only", className), children: /* @__PURE__ */ jsx68(HeaderTitleFrame, { preview: true }) });
7933
+ return /* @__PURE__ */ jsx69("div", { className: cn("stn-header-title__frame-only", className), children: /* @__PURE__ */ jsx69(HeaderTitleFrame, { preview: true }) });
7560
7934
  }
7561
7935
  function useLiveClock(enabled) {
7562
7936
  const [now, setNow] = useState15(() => /* @__PURE__ */ new Date());
@@ -7572,35 +7946,35 @@ function StnHeaderTitleMainText({
7572
7946
  children,
7573
7947
  ...rest
7574
7948
  }) {
7575
- return /* @__PURE__ */ jsx68("h1", { className: cn("stn-header-title__text", className), ...rest, children });
7949
+ return /* @__PURE__ */ jsx69("h1", { className: cn("stn-header-title__text", className), ...rest, children });
7576
7950
  }
7577
7951
  function StnHeaderTitleSubText({
7578
7952
  className,
7579
7953
  children,
7580
7954
  ...rest
7581
7955
  }) {
7582
- return /* @__PURE__ */ jsx68("span", { className: cn("stn-header-title__sub-text", className), ...rest, children });
7956
+ return /* @__PURE__ */ jsx69("span", { className: cn("stn-header-title__sub-text", className), ...rest, children });
7583
7957
  }
7584
7958
  function StnHeaderTitleDate({
7585
7959
  className,
7586
7960
  children,
7587
7961
  ...rest
7588
7962
  }) {
7589
- return /* @__PURE__ */ jsx68("time", { className: cn("stn-header-title__date", className), ...rest, children });
7963
+ return /* @__PURE__ */ jsx69("time", { className: cn("stn-header-title__date", className), ...rest, children });
7590
7964
  }
7591
7965
  function StnHeaderTitleWeekday({
7592
7966
  className,
7593
7967
  children,
7594
7968
  ...rest
7595
7969
  }) {
7596
- return /* @__PURE__ */ jsx68("span", { className: cn("stn-header-title__weekday", className), ...rest, children });
7970
+ return /* @__PURE__ */ jsx69("span", { className: cn("stn-header-title__weekday", className), ...rest, children });
7597
7971
  }
7598
7972
  function StnHeaderTitleTime({
7599
7973
  className,
7600
7974
  children,
7601
7975
  ...rest
7602
7976
  }) {
7603
- return /* @__PURE__ */ jsx68("span", { className: cn("stn-header-title__time", className), "aria-label": "\uD604\uC7AC \uC2DC\uAC01", ...rest, children });
7977
+ return /* @__PURE__ */ jsx69("span", { className: cn("stn-header-title__time", className), "aria-label": "\uD604\uC7AC \uC2DC\uAC01", ...rest, children });
7604
7978
  }
7605
7979
  function StnHeaderTitleClock({
7606
7980
  className,
@@ -7623,7 +7997,7 @@ function StnHeaderTitleClock({
7623
7997
  }) {
7624
7998
  const now = useLiveClock(live);
7625
7999
  if (children != null) {
7626
- return /* @__PURE__ */ jsxs49(
8000
+ return /* @__PURE__ */ jsxs50(
7627
8001
  "header",
7628
8002
  {
7629
8003
  className: cn(
@@ -7635,8 +8009,8 @@ function StnHeaderTitleClock({
7635
8009
  ),
7636
8010
  ...rest,
7637
8011
  children: [
7638
- framed ? /* @__PURE__ */ jsx68(HeaderTitleFrame, {}) : null,
7639
- /* @__PURE__ */ jsx68("div", { className: "stn-header-title__content", children })
8012
+ framed ? /* @__PURE__ */ jsx69(HeaderTitleFrame, {}) : null,
8013
+ /* @__PURE__ */ jsx69("div", { className: "stn-header-title__content", children })
7640
8014
  ]
7641
8015
  }
7642
8016
  );
@@ -7666,7 +8040,7 @@ function StnHeaderTitleClock({
7666
8040
  resolvedTime = formatStnHeaderTitleTime(now, { showSeconds });
7667
8041
  }
7668
8042
  }
7669
- return /* @__PURE__ */ jsxs49(
8043
+ return /* @__PURE__ */ jsxs50(
7670
8044
  "header",
7671
8045
  {
7672
8046
  className: cn(
@@ -7678,11 +8052,11 @@ function StnHeaderTitleClock({
7678
8052
  ),
7679
8053
  ...rest,
7680
8054
  children: [
7681
- framed ? /* @__PURE__ */ jsx68(HeaderTitleFrame, {}) : null,
7682
- /* @__PURE__ */ jsxs49("div", { className: "stn-header-title__content", children: [
7683
- resolvedDate ? /* @__PURE__ */ jsx68("time", { className: "stn-header-title__date", dateTime: resolvedDate, children: resolvedDate }) : null,
7684
- showWeekdayOnly ? /* @__PURE__ */ jsx68("span", { className: "stn-header-title__weekday", children: resolvedWeekday }) : null,
7685
- resolvedTime ? /* @__PURE__ */ jsx68("span", { className: "stn-header-title__time", "aria-label": "\uD604\uC7AC \uC2DC\uAC01", children: resolvedTime }) : null
8055
+ framed ? /* @__PURE__ */ jsx69(HeaderTitleFrame, {}) : null,
8056
+ /* @__PURE__ */ jsxs50("div", { className: "stn-header-title__content", children: [
8057
+ resolvedDate ? /* @__PURE__ */ jsx69("time", { className: "stn-header-title__date", dateTime: resolvedDate, children: resolvedDate }) : null,
8058
+ showWeekdayOnly ? /* @__PURE__ */ jsx69("span", { className: "stn-header-title__weekday", children: resolvedWeekday }) : null,
8059
+ resolvedTime ? /* @__PURE__ */ jsx69("span", { className: "stn-header-title__time", "aria-label": "\uD604\uC7AC \uC2DC\uAC01", children: resolvedTime }) : null
7686
8060
  ] })
7687
8061
  ]
7688
8062
  }
@@ -7699,7 +8073,7 @@ function StnHeaderTitleDual({
7699
8073
  ...rest
7700
8074
  }) {
7701
8075
  const resolvedMain = mainText ?? title ?? children;
7702
- return /* @__PURE__ */ jsxs49(
8076
+ return /* @__PURE__ */ jsxs50(
7703
8077
  "header",
7704
8078
  {
7705
8079
  className: cn(
@@ -7711,10 +8085,10 @@ function StnHeaderTitleDual({
7711
8085
  ),
7712
8086
  ...rest,
7713
8087
  children: [
7714
- framed ? /* @__PURE__ */ jsx68(HeaderTitleFrame, {}) : null,
7715
- /* @__PURE__ */ jsxs49("div", { className: "stn-header-title__content", children: [
7716
- subText != null ? /* @__PURE__ */ jsx68("span", { className: "stn-header-title__sub-text", children: subText }) : null,
7717
- resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */ jsx68("h1", { className: "stn-header-title__text", children: resolvedMain }) : resolvedMain : null
8088
+ framed ? /* @__PURE__ */ jsx69(HeaderTitleFrame, {}) : null,
8089
+ /* @__PURE__ */ jsxs50("div", { className: "stn-header-title__content", children: [
8090
+ subText != null ? /* @__PURE__ */ jsx69("span", { className: "stn-header-title__sub-text", children: subText }) : null,
8091
+ resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */ jsx69("h1", { className: "stn-header-title__text", children: resolvedMain }) : resolvedMain : null
7718
8092
  ] })
7719
8093
  ]
7720
8094
  }
@@ -7729,7 +8103,7 @@ function StnHeaderTitleText({
7729
8103
  ...rest
7730
8104
  }) {
7731
8105
  const resolved = title ?? children;
7732
- return /* @__PURE__ */ jsxs49(
8106
+ return /* @__PURE__ */ jsxs50(
7733
8107
  "header",
7734
8108
  {
7735
8109
  className: cn(
@@ -7741,20 +8115,20 @@ function StnHeaderTitleText({
7741
8115
  ),
7742
8116
  ...rest,
7743
8117
  children: [
7744
- framed ? /* @__PURE__ */ jsx68(HeaderTitleFrame, {}) : null,
7745
- /* @__PURE__ */ jsx68("div", { className: "stn-header-title__content", children: typeof resolved === "string" || typeof resolved === "number" ? /* @__PURE__ */ jsx68("h1", { className: "stn-header-title__text", children: resolved }) : resolved })
8118
+ framed ? /* @__PURE__ */ jsx69(HeaderTitleFrame, {}) : null,
8119
+ /* @__PURE__ */ jsx69("div", { className: "stn-header-title__content", children: typeof resolved === "string" || typeof resolved === "number" ? /* @__PURE__ */ jsx69("h1", { className: "stn-header-title__text", children: resolved }) : resolved })
7746
8120
  ]
7747
8121
  }
7748
8122
  );
7749
8123
  }
7750
8124
  function StnHeaderTitleRoot(props) {
7751
8125
  if (props.variant === "clock") {
7752
- return /* @__PURE__ */ jsx68(StnHeaderTitleClock, { ...props });
8126
+ return /* @__PURE__ */ jsx69(StnHeaderTitleClock, { ...props });
7753
8127
  }
7754
8128
  if (props.variant === "dual" || "subText" in props && props.subText != null) {
7755
- return /* @__PURE__ */ jsx68(StnHeaderTitleDual, { ...props });
8129
+ return /* @__PURE__ */ jsx69(StnHeaderTitleDual, { ...props });
7756
8130
  }
7757
- return /* @__PURE__ */ jsx68(StnHeaderTitleText, { ...props });
8131
+ return /* @__PURE__ */ jsx69(StnHeaderTitleText, { ...props });
7758
8132
  }
7759
8133
  var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
7760
8134
  Text: StnHeaderTitleMainText,
@@ -7769,7 +8143,7 @@ var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
7769
8143
  import {
7770
8144
  forwardRef as forwardRef38
7771
8145
  } from "react";
7772
- import { jsx as jsx69 } from "react/jsx-runtime";
8146
+ import { jsx as jsx70 } from "react/jsx-runtime";
7773
8147
  var StnContainer = forwardRef38(function StnContainer2({
7774
8148
  component,
7775
8149
  as,
@@ -7785,7 +8159,7 @@ var StnContainer = forwardRef38(function StnContainer2({
7785
8159
  const Component = component ?? as ?? "div";
7786
8160
  const maxWidthClass = maxWidth ? `stn-container--${maxWidth} stn-container--max-width-${maxWidth}` : "stn-container--fluid stn-container--max-width-false";
7787
8161
  const classKey = maxWidth ? `maxWidth${maxWidth.charAt(0).toUpperCase() + maxWidth.slice(1)}` : "maxWidthFalse";
7788
- return /* @__PURE__ */ jsx69(
8162
+ return /* @__PURE__ */ jsx70(
7789
8163
  Component,
7790
8164
  {
7791
8165
  ref,
@@ -7809,7 +8183,7 @@ var StnContainer = forwardRef38(function StnContainer2({
7809
8183
 
7810
8184
  // src/layouts/StnGrid.tsx
7811
8185
  import { forwardRef as forwardRef39 } from "react";
7812
- import { jsx as jsx70 } from "react/jsx-runtime";
8186
+ import { jsx as jsx71 } from "react/jsx-runtime";
7813
8187
  var BREAKPOINTS2 = ["xs", "sm", "md", "lg", "xl"];
7814
8188
  var SPACING_CLASS = {
7815
8189
  "0": "0",
@@ -7895,7 +8269,7 @@ var StnGrid = forwardRef39(function StnGrid2({
7895
8269
  const Component = component ?? as ?? "div";
7896
8270
  const justify = typeof justifyContent === "string" && JUSTIFY_CLASS2.has(justifyContent) ? justifyContent : void 0;
7897
8271
  const align = typeof alignItems === "string" && ALIGN_CLASS2.has(alignItems) ? alignItems : void 0;
7898
- return /* @__PURE__ */ jsx70(
8272
+ return /* @__PURE__ */ jsx71(
7899
8273
  Component,
7900
8274
  {
7901
8275
  ref,
@@ -7919,7 +8293,7 @@ var StnGrid = forwardRef39(function StnGrid2({
7919
8293
  });
7920
8294
 
7921
8295
  // src/layouts/StnLayerShell.tsx
7922
- import { jsx as jsx71, jsxs as jsxs50 } from "react/jsx-runtime";
8296
+ import { jsx as jsx72, jsxs as jsxs51 } from "react/jsx-runtime";
7923
8297
  function StnLayerShell({
7924
8298
  gnb,
7925
8299
  gnbSide = "left",
@@ -7940,7 +8314,7 @@ function StnLayerShell({
7940
8314
  const resolvedMainContent = layer1 ?? children;
7941
8315
  const resolvedModal = layer2;
7942
8316
  const isGnbRight = gnbSide === "right";
7943
- return /* @__PURE__ */ jsxs50(
8317
+ return /* @__PURE__ */ jsxs51(
7944
8318
  "div",
7945
8319
  {
7946
8320
  id: wrapId,
@@ -7949,8 +8323,8 @@ function StnLayerShell({
7949
8323
  className: cn("stn-wrap", isGnbRight && "stn-wrap--gnb-right", wrapClassName),
7950
8324
  children: [
7951
8325
  layer0,
7952
- utilities ? /* @__PURE__ */ jsx71("div", { className: "stn-page-utilities", "data-stn-layer-role": "utility", children: utilities }) : null,
7953
- /* @__PURE__ */ jsxs50(
8326
+ utilities ? /* @__PURE__ */ jsx72("div", { className: "stn-page-utilities", "data-stn-layer-role": "utility", children: utilities }) : null,
8327
+ /* @__PURE__ */ jsxs51(
7954
8328
  "main",
7955
8329
  {
7956
8330
  id: containerId,
@@ -7959,9 +8333,9 @@ function StnLayerShell({
7959
8333
  className: cn("stn-layer-1", scrollable && "scroll", containerClassName),
7960
8334
  children: [
7961
8335
  !isGnbRight && gnb,
7962
- /* @__PURE__ */ jsxs50("div", { className: "stn-layer-1__main", children: [
7963
- header ? /* @__PURE__ */ jsx71("header", { className: "stn-layer-1__header", children: header }) : null,
7964
- /* @__PURE__ */ jsx71("div", { className: cn("stn-layer-1__body", scrollable && "stn-scroll", contentClassName), children: resolvedMainContent })
8336
+ /* @__PURE__ */ jsxs51("div", { className: "stn-layer-1__main", children: [
8337
+ header ? /* @__PURE__ */ jsx72("header", { className: "stn-layer-1__header", children: header }) : null,
8338
+ /* @__PURE__ */ jsx72("div", { className: cn("stn-layer-1__body", scrollable && "stn-scroll", contentClassName), children: resolvedMainContent })
7965
8339
  ] }),
7966
8340
  isGnbRight && gnb
7967
8341
  ]
@@ -7974,13 +8348,13 @@ function StnLayerShell({
7974
8348
  }
7975
8349
 
7976
8350
  // src/patterns/dashboard/StnMapCanvas.tsx
7977
- import { jsx as jsx72 } from "react/jsx-runtime";
8351
+ import { jsx as jsx73 } from "react/jsx-runtime";
7978
8352
  function StnMapCanvas({
7979
8353
  children,
7980
8354
  className,
7981
8355
  ...rest
7982
8356
  }) {
7983
- return /* @__PURE__ */ jsx72(
8357
+ return /* @__PURE__ */ jsx73(
7984
8358
  "div",
7985
8359
  {
7986
8360
  className: cn("stn-map-canvas", className),
@@ -7992,7 +8366,7 @@ function StnMapCanvas({
7992
8366
  }
7993
8367
 
7994
8368
  // src/patterns/dashboard/StnDashboard.tsx
7995
- import { jsx as jsx73 } from "react/jsx-runtime";
8369
+ import { jsx as jsx74 } from "react/jsx-runtime";
7996
8370
  var fillStyle = {
7997
8371
  flex: "1 1 0%",
7998
8372
  minHeight: 0,
@@ -8011,7 +8385,7 @@ function StnDashboardRoot({
8011
8385
  }) {
8012
8386
  const isLeft = widgetPosition === "left";
8013
8387
  const isBoth = widgetPosition === "both";
8014
- return /* @__PURE__ */ jsx73(
8388
+ return /* @__PURE__ */ jsx74(
8015
8389
  "div",
8016
8390
  {
8017
8391
  className: cn(
@@ -8040,7 +8414,7 @@ function StnDashboardLeft({
8040
8414
  style,
8041
8415
  ...rest
8042
8416
  }) {
8043
- return /* @__PURE__ */ jsx73(
8417
+ return /* @__PURE__ */ jsx74(
8044
8418
  "div",
8045
8419
  {
8046
8420
  className: cn("stn-dashboard__left", className),
@@ -8066,7 +8440,7 @@ function StnDashboardRight({
8066
8440
  style,
8067
8441
  ...rest
8068
8442
  }) {
8069
- return /* @__PURE__ */ jsx73(
8443
+ return /* @__PURE__ */ jsx74(
8070
8444
  "div",
8071
8445
  {
8072
8446
  className: cn("stn-dashboard__right", className),
@@ -8094,7 +8468,7 @@ function StnDashboardTopRight({
8094
8468
  className,
8095
8469
  ...rest
8096
8470
  }) {
8097
- return /* @__PURE__ */ jsx73(
8471
+ return /* @__PURE__ */ jsx74(
8098
8472
  "div",
8099
8473
  {
8100
8474
  className: cn("stn-dashboard__top-right", className),
@@ -8113,9 +8487,9 @@ var StnDashboard = Object.assign(StnDashboardRoot, {
8113
8487
  });
8114
8488
 
8115
8489
  // src/patterns/scaffold/StnPageScaffold.tsx
8116
- import { jsx as jsx74, jsxs as jsxs51 } from "react/jsx-runtime";
8490
+ import { jsx as jsx75, jsxs as jsxs52 } from "react/jsx-runtime";
8117
8491
  function StnPageScaffoldRoot({ children, className, ...rest }) {
8118
- return /* @__PURE__ */ jsx74(
8492
+ return /* @__PURE__ */ jsx75(
8119
8493
  "div",
8120
8494
  {
8121
8495
  className: cn("stn-page-scaffold", className),
@@ -8132,9 +8506,9 @@ function StnPageScaffoldRegion({
8132
8506
  className,
8133
8507
  ...rest
8134
8508
  }) {
8135
- return /* @__PURE__ */ jsxs51("div", { className: cn("stn-page-scaffold__region", className), "data-stn-page-scaffold": "region", ...rest, children: [
8136
- /* @__PURE__ */ jsx74("span", { className: "stn-page-scaffold__region-label", children: label }),
8137
- hint ? /* @__PURE__ */ jsx74("span", { className: "stn-page-scaffold__region-hint", children: hint }) : null,
8509
+ return /* @__PURE__ */ jsxs52("div", { className: cn("stn-page-scaffold__region", className), "data-stn-page-scaffold": "region", ...rest, children: [
8510
+ /* @__PURE__ */ jsx75("span", { className: "stn-page-scaffold__region-label", children: label }),
8511
+ hint ? /* @__PURE__ */ jsx75("span", { className: "stn-page-scaffold__region-hint", children: hint }) : null,
8138
8512
  children
8139
8513
  ] });
8140
8514
  }
@@ -8145,7 +8519,7 @@ function StnPageScaffoldMapPlaceholder({
8145
8519
  children,
8146
8520
  ...rest
8147
8521
  }) {
8148
- return /* @__PURE__ */ jsx74("div", { className: "stn-widget shell-canvas stn-map-canvas", "data-stn-dashboard": "canvas", children: /* @__PURE__ */ jsxs51(
8522
+ return /* @__PURE__ */ jsx75("div", { className: "stn-widget shell-canvas stn-map-canvas", "data-stn-dashboard": "canvas", children: /* @__PURE__ */ jsxs52(
8149
8523
  "div",
8150
8524
  {
8151
8525
  className: cn("stn-page-scaffold__canvas-placeholder", className),
@@ -8153,8 +8527,8 @@ function StnPageScaffoldMapPlaceholder({
8153
8527
  role: "status",
8154
8528
  ...rest,
8155
8529
  children: [
8156
- /* @__PURE__ */ jsx74("p", { className: "stn-page-scaffold__canvas-placeholder-title", children: message }),
8157
- note ? /* @__PURE__ */ jsx74("p", { className: "stn-page-scaffold__canvas-placeholder-note", children: note }) : null,
8530
+ /* @__PURE__ */ jsx75("p", { className: "stn-page-scaffold__canvas-placeholder-title", children: message }),
8531
+ note ? /* @__PURE__ */ jsx75("p", { className: "stn-page-scaffold__canvas-placeholder-note", children: note }) : null,
8158
8532
  children
8159
8533
  ]
8160
8534
  }
@@ -8165,7 +8539,7 @@ function StnPageScaffoldMapCanvas({
8165
8539
  children,
8166
8540
  ...rest
8167
8541
  }) {
8168
- return /* @__PURE__ */ jsx74(
8542
+ return /* @__PURE__ */ jsx75(
8169
8543
  "div",
8170
8544
  {
8171
8545
  className: cn("stn-widget", "shell-canvas", "stn-map-canvas", "stn-page-scaffold__canvas", className),
@@ -8178,7 +8552,7 @@ function StnPageScaffoldMapCanvas({
8178
8552
  }
8179
8553
  function StnPageScaffoldLayer({ label, hint, children, className, ...layerProps }) {
8180
8554
  const labelText = label ? hint ? `${label} \xB7 ${hint}` : label : void 0;
8181
- return /* @__PURE__ */ jsx74(
8555
+ return /* @__PURE__ */ jsx75(
8182
8556
  StnLayer2,
8183
8557
  {
8184
8558
  className: cn(
@@ -8221,16 +8595,16 @@ function ListPageScaffold({
8221
8595
  ...shellProps
8222
8596
  }) {
8223
8597
  const lnbClass = listPageLnbClass(lnbSide);
8224
- const lnbAside = showLnb ? /* @__PURE__ */ jsx74("aside", { className: lnbClass, children: lnb ?? /* @__PURE__ */ jsx74(StnPageScaffold.Region, { label: "LNB", hint: lnbHint }) }) : null;
8598
+ const lnbAside = showLnb ? /* @__PURE__ */ jsx75("aside", { className: lnbClass, children: lnb ?? /* @__PURE__ */ jsx75(StnPageScaffold.Region, { label: "LNB", hint: lnbHint }) }) : null;
8225
8599
  const resolvedContent = layer1 ?? children;
8226
- const body = /* @__PURE__ */ jsxs51(StnPageScaffold, { children: [
8600
+ const body = /* @__PURE__ */ jsxs52(StnPageScaffold, { children: [
8227
8601
  lnbSide === "left" ? lnbAside : null,
8228
- showSearch ? /* @__PURE__ */ jsx74("div", { className: "stn-page-scaffold__search search_area", children: search ?? /* @__PURE__ */ jsx74(StnPageScaffold.Region, { label: "Search", hint: searchHint }) }) : null,
8229
- /* @__PURE__ */ jsx74("div", { className: cn("stn-page-scaffold__content content_box", scrollable && "is-scrollable"), children: resolvedContent ?? /* @__PURE__ */ jsx74("div", { className: "stn-table stn-table--fill", children: /* @__PURE__ */ jsx74(StnPageScaffold.Region, { label: "Table", hint: tableHint }) }) }),
8602
+ showSearch ? /* @__PURE__ */ jsx75("div", { className: "stn-page-scaffold__search search_area", children: search ?? /* @__PURE__ */ jsx75(StnPageScaffold.Region, { label: "Search", hint: searchHint }) }) : null,
8603
+ /* @__PURE__ */ jsx75("div", { className: cn("stn-page-scaffold__content content_box", scrollable && "is-scrollable"), children: resolvedContent ?? /* @__PURE__ */ jsx75("div", { className: "stn-table stn-table--fill", children: /* @__PURE__ */ jsx75(StnPageScaffold.Region, { label: "Table", hint: tableHint }) }) }),
8230
8604
  lnbSide === "right" ? lnbAside : null
8231
8605
  ] });
8232
- const resolvedHeader = header === null ? void 0 : header ?? /* @__PURE__ */ jsx74(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx74(StnHeader.Left, { children: /* @__PURE__ */ jsx74(StnHeaderPageTitle, { children: title }) }) });
8233
- return /* @__PURE__ */ jsx74(
8606
+ const resolvedHeader = header === null ? void 0 : header ?? /* @__PURE__ */ jsx75(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx75(StnHeader.Left, { children: /* @__PURE__ */ jsx75(StnHeaderPageTitle, { children: title }) }) });
8607
+ return /* @__PURE__ */ jsx75(
8234
8608
  StnLayerShell,
8235
8609
  {
8236
8610
  gnb,
@@ -8271,25 +8645,25 @@ function DashboardPageScaffold({
8271
8645
  const isLeft = widgetPosition === "left";
8272
8646
  const isBoth = widgetPosition === "both";
8273
8647
  const isNone = widgetPosition === "none" || !showRightRegion;
8274
- const mapColumn = /* @__PURE__ */ jsxs51(StnDashboard.Left, { children: [
8275
- /* @__PURE__ */ jsx74(StnPageScaffold.MapPlaceholder, { message: finalMapMessage, note: finalMapNote }),
8648
+ const mapColumn = /* @__PURE__ */ jsxs52(StnDashboard.Left, { children: [
8649
+ /* @__PURE__ */ jsx75(StnPageScaffold.MapPlaceholder, { message: finalMapMessage, note: finalMapNote }),
8276
8650
  faultPanel
8277
8651
  ] });
8278
- const rightWidgets = right ?? /* @__PURE__ */ jsx74(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
8279
- const leftWidgets = left ?? right ?? /* @__PURE__ */ jsx74(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC88C\uCE21 \uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
8280
- const dashboardGrid = bodyEmpty ? /* @__PURE__ */ jsx74(StnDashboard, { empty: true, widgetPosition, "data-stn-page-scaffold": "dashboard-empty" }) : isBoth ? /* @__PURE__ */ jsxs51(StnDashboard, { widgetPosition: "both", children: [
8281
- /* @__PURE__ */ jsx74(StnDashboard.Right, { children: leftWidgets }),
8652
+ const rightWidgets = right ?? /* @__PURE__ */ jsx75(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
8653
+ const leftWidgets = left ?? right ?? /* @__PURE__ */ jsx75(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC88C\uCE21 \uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
8654
+ const dashboardGrid = bodyEmpty ? /* @__PURE__ */ jsx75(StnDashboard, { empty: true, widgetPosition, "data-stn-page-scaffold": "dashboard-empty" }) : isBoth ? /* @__PURE__ */ jsxs52(StnDashboard, { widgetPosition: "both", children: [
8655
+ /* @__PURE__ */ jsx75(StnDashboard.Right, { children: leftWidgets }),
8282
8656
  mapColumn,
8283
- /* @__PURE__ */ jsx74(StnDashboard.Right, { children: rightWidgets })
8284
- ] }) : isLeft ? /* @__PURE__ */ jsxs51(StnDashboard, { widgetPosition: "left", children: [
8285
- /* @__PURE__ */ jsx74(StnDashboard.Right, { children: leftWidgets }),
8657
+ /* @__PURE__ */ jsx75(StnDashboard.Right, { children: rightWidgets })
8658
+ ] }) : isLeft ? /* @__PURE__ */ jsxs52(StnDashboard, { widgetPosition: "left", children: [
8659
+ /* @__PURE__ */ jsx75(StnDashboard.Right, { children: leftWidgets }),
8286
8660
  mapColumn
8287
- ] }) : /* @__PURE__ */ jsxs51(StnDashboard, { widgetPosition: isNone ? "none" : "right", children: [
8661
+ ] }) : /* @__PURE__ */ jsxs52(StnDashboard, { widgetPosition: isNone ? "none" : "right", children: [
8288
8662
  mapColumn,
8289
- !isNone ? /* @__PURE__ */ jsx74(StnDashboard.Right, { children: rightWidgets }) : null
8663
+ !isNone ? /* @__PURE__ */ jsx75(StnDashboard.Right, { children: rightWidgets }) : null
8290
8664
  ] });
8291
8665
  const contentNode = children ?? dashboardGrid;
8292
- return /* @__PURE__ */ jsx74(
8666
+ return /* @__PURE__ */ jsx75(
8293
8667
  StnLayerShell,
8294
8668
  {
8295
8669
  gnb,
@@ -8298,7 +8672,7 @@ function DashboardPageScaffold({
8298
8672
  layer0,
8299
8673
  layer2,
8300
8674
  ...shellProps,
8301
- children: /* @__PURE__ */ jsx74(
8675
+ children: /* @__PURE__ */ jsx75(
8302
8676
  StnContainer,
8303
8677
  {
8304
8678
  maxWidth: false,
@@ -8312,7 +8686,7 @@ function DashboardPageScaffold({
8312
8686
  }
8313
8687
 
8314
8688
  // src/layouts/StnListViewLayout.tsx
8315
- import { jsx as jsx75, jsxs as jsxs52 } from "react/jsx-runtime";
8689
+ import { jsx as jsx76, jsxs as jsxs53 } from "react/jsx-runtime";
8316
8690
  function StnListViewLayoutBody({
8317
8691
  search,
8318
8692
  sidebar,
@@ -8323,14 +8697,14 @@ function StnListViewLayoutBody({
8323
8697
  className
8324
8698
  }) {
8325
8699
  const lnbClass = lnbSide === "right" ? "stn-page-scaffold__lnb lnb_box lnb_box_right" : "stn-page-scaffold__lnb lnb_box";
8326
- return /* @__PURE__ */ jsxs52(StnPageScaffold, { className: cn("stn-list-view-layout__body", className), children: [
8327
- lnbSide === "left" && sidebar ? /* @__PURE__ */ jsx75("aside", { className: lnbClass, children: sidebar }) : null,
8328
- search ? /* @__PURE__ */ jsx75("div", { className: "stn-page-scaffold__search search_area", children: search }) : null,
8329
- /* @__PURE__ */ jsx75("div", { className: "stn-page-scaffold__content content_box", children: children ?? /* @__PURE__ */ jsxs52("div", { className: "stn-table stn-table--fill", children: [
8700
+ return /* @__PURE__ */ jsxs53(StnPageScaffold, { className: cn("stn-list-view-layout__body", className), children: [
8701
+ lnbSide === "left" && sidebar ? /* @__PURE__ */ jsx76("aside", { className: lnbClass, children: sidebar }) : null,
8702
+ search ? /* @__PURE__ */ jsx76("div", { className: "stn-page-scaffold__search search_area", children: search }) : null,
8703
+ /* @__PURE__ */ jsx76("div", { className: "stn-page-scaffold__content content_box", children: children ?? /* @__PURE__ */ jsxs53("div", { className: "stn-table stn-table--fill", children: [
8330
8704
  table,
8331
8705
  pagination
8332
8706
  ] }) }),
8333
- lnbSide === "right" && sidebar ? /* @__PURE__ */ jsx75("aside", { className: lnbClass, children: sidebar }) : null
8707
+ lnbSide === "right" && sidebar ? /* @__PURE__ */ jsx76("aside", { className: lnbClass, children: sidebar }) : null
8334
8708
  ] });
8335
8709
  }
8336
8710
  function StnListViewLayoutRoot({
@@ -8349,7 +8723,7 @@ function StnListViewLayoutRoot({
8349
8723
  }) {
8350
8724
  const bare = bareProp ?? noShell ?? false;
8351
8725
  const hasLnbClass = lnbSide === "right" ? "has_lnb_right" : "has_lnb";
8352
- const body = /* @__PURE__ */ jsx75(
8726
+ const body = /* @__PURE__ */ jsx76(
8353
8727
  StnListViewLayoutBody,
8354
8728
  {
8355
8729
  search,
@@ -8364,10 +8738,10 @@ function StnListViewLayoutRoot({
8364
8738
  if (bare) {
8365
8739
  return body;
8366
8740
  }
8367
- const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */ jsx75("div", { className: "stn-layer-1__header", children: /* @__PURE__ */ jsx75(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx75(StnHeader.Left, { children: /* @__PURE__ */ jsx75(StnHeaderPageTitle, { children: title }) }) }) });
8368
- return /* @__PURE__ */ jsxs52("div", { className: cn("stn-list-view-layout", "stn-layer-1", className), ...rest, children: [
8741
+ const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */ jsx76("div", { className: "stn-layer-1__header", children: /* @__PURE__ */ jsx76(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx76(StnHeader.Left, { children: /* @__PURE__ */ jsx76(StnHeaderPageTitle, { children: title }) }) }) });
8742
+ return /* @__PURE__ */ jsxs53("div", { className: cn("stn-list-view-layout", "stn-layer-1", className), ...rest, children: [
8369
8743
  renderedHeader,
8370
- /* @__PURE__ */ jsx75(
8744
+ /* @__PURE__ */ jsx76(
8371
8745
  "div",
8372
8746
  {
8373
8747
  className: cn("stn-content-area", sidebar ? hasLnbClass : null, search ? "has_sch" : null),
@@ -8377,10 +8751,10 @@ function StnListViewLayoutRoot({
8377
8751
  ] });
8378
8752
  }
8379
8753
  function StnListViewLayoutHeader({ className, children, ...rest }) {
8380
- return /* @__PURE__ */ jsx75("div", { className: cn("stn-layer-1__header", className), ...rest, children });
8754
+ return /* @__PURE__ */ jsx76("div", { className: cn("stn-layer-1__header", className), ...rest, children });
8381
8755
  }
8382
8756
  function StnListViewLayoutSearch({ className, children, ...rest }) {
8383
- return /* @__PURE__ */ jsx75("div", { className: cn("search_area", className), ...rest, children });
8757
+ return /* @__PURE__ */ jsx76("div", { className: cn("search_area", className), ...rest, children });
8384
8758
  }
8385
8759
  function StnListViewLayoutSidebar({
8386
8760
  side = "left",
@@ -8389,16 +8763,16 @@ function StnListViewLayoutSidebar({
8389
8763
  ...rest
8390
8764
  }) {
8391
8765
  const lnbClass = side === "right" ? "lnb_box_right" : "lnb_box";
8392
- return /* @__PURE__ */ jsx75("aside", { className: cn(lnbClass, className), ...rest, children });
8766
+ return /* @__PURE__ */ jsx76("aside", { className: cn(lnbClass, className), ...rest, children });
8393
8767
  }
8394
8768
  function StnListViewLayoutContent({ className, children, ...rest }) {
8395
- return /* @__PURE__ */ jsx75("div", { className: cn("content_box", className), ...rest, children });
8769
+ return /* @__PURE__ */ jsx76("div", { className: cn("content_box", className), ...rest, children });
8396
8770
  }
8397
8771
  function StnListViewLayoutTable({ className, children, ...rest }) {
8398
- return /* @__PURE__ */ jsx75("div", { className: cn("stn-table", className), ...rest, children });
8772
+ return /* @__PURE__ */ jsx76("div", { className: cn("stn-table", className), ...rest, children });
8399
8773
  }
8400
8774
  function StnListViewLayoutPagination({ className, children, ...rest }) {
8401
- return /* @__PURE__ */ jsx75("div", { className: cn("stn-list-view-layout__pagination-wrap", className), ...rest, children });
8775
+ return /* @__PURE__ */ jsx76("div", { className: cn("stn-list-view-layout__pagination-wrap", className), ...rest, children });
8402
8776
  }
8403
8777
  var StnListViewLayout = Object.assign(StnListViewLayoutRoot, {
8404
8778
  Body: StnListViewLayoutBody,
@@ -8439,9 +8813,9 @@ import {
8439
8813
  STN_ALERT_CENTER_DEMO_WORK
8440
8814
  } from "@stn-uiux/pub-ui/data/stnAlertCenter";
8441
8815
  import { systemIconSrc } from "@stn-uiux/pub-ui/data/stnSystemIcons";
8442
- import { Fragment as Fragment9, jsx as jsx76, jsxs as jsxs53 } from "react/jsx-runtime";
8816
+ import { Fragment as Fragment9, jsx as jsx77, jsxs as jsxs54 } from "react/jsx-runtime";
8443
8817
  function defaultTopologyHeader(_clock) {
8444
- return /* @__PURE__ */ jsx76(StnHeader, { variant: "widget" });
8818
+ return /* @__PURE__ */ jsx77(StnHeader, { variant: "widget" });
8445
8819
  }
8446
8820
  function AlertCenterPageScaffold({
8447
8821
  gnbAlertPanel,
@@ -8460,7 +8834,7 @@ function AlertCenterPageScaffold({
8460
8834
  }) {
8461
8835
  const [gnbOpen, setGnbOpen] = useState16(defaultGnbOpen);
8462
8836
  const panel = useMemo5(
8463
- () => gnbAlertPanel ?? /* @__PURE__ */ jsx76(
8837
+ () => gnbAlertPanel ?? /* @__PURE__ */ jsx77(
8464
8838
  StnAlertCenterPanel,
8465
8839
  {
8466
8840
  alerts: STN_ALERT_CENTER_DEMO_ALERTS,
@@ -8471,26 +8845,26 @@ function AlertCenterPageScaffold({
8471
8845
  [gnbAlertPanel]
8472
8846
  );
8473
8847
  const sideNav = useMemo5(
8474
- () => gnbProp ?? /* @__PURE__ */ jsxs53(Fragment9, { children: [
8475
- /* @__PURE__ */ jsxs53(
8848
+ () => gnbProp ?? /* @__PURE__ */ jsxs54(Fragment9, { children: [
8849
+ /* @__PURE__ */ jsxs54(
8476
8850
  StnSideNavigation,
8477
8851
  {
8478
8852
  collapsed: !gnbOpen,
8479
8853
  onCollapseChange: (col) => setGnbOpen(!col),
8480
8854
  children: [
8481
- /* @__PURE__ */ jsxs53(StnSideNavigation.Header, { children: [
8482
- /* @__PURE__ */ jsx76(StnSideNavigation.Logo, {}),
8483
- /* @__PURE__ */ jsx76(StnSideNavigation.Toggle, {})
8855
+ /* @__PURE__ */ jsxs54(StnSideNavigation.Header, { children: [
8856
+ /* @__PURE__ */ jsx77(StnSideNavigation.Logo, {}),
8857
+ /* @__PURE__ */ jsx77(StnSideNavigation.Toggle, {})
8484
8858
  ] }),
8485
- /* @__PURE__ */ jsxs53(StnSideNavigation.Menu, { children: [
8486
- /* @__PURE__ */ jsx76(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/layout-grid"), label: "\uBA54\uC778 \uB300\uC2DC\uBCF4\uB4DC", active: true }),
8487
- /* @__PURE__ */ jsx76(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/server_2"), label: "\uC11C\uBC84 \uBAA8\uB2C8\uD130\uB9C1" }),
8488
- /* @__PURE__ */ jsx76(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/activity"), label: "\uB124\uD2B8\uC6CC\uD06C \uBD84\uC11D" })
8859
+ /* @__PURE__ */ jsxs54(StnSideNavigation.Menu, { children: [
8860
+ /* @__PURE__ */ jsx77(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/layout-grid"), label: "\uBA54\uC778 \uB300\uC2DC\uBCF4\uB4DC", active: true }),
8861
+ /* @__PURE__ */ jsx77(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/server_2"), label: "\uC11C\uBC84 \uBAA8\uB2C8\uD130\uB9C1" }),
8862
+ /* @__PURE__ */ jsx77(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/activity"), label: "\uB124\uD2B8\uC6CC\uD06C \uBD84\uC11D" })
8489
8863
  ] }),
8490
- /* @__PURE__ */ jsx76(StnSideNavigation.Spacer, {}),
8491
- /* @__PURE__ */ jsxs53(StnSideNavigation.Footer, { curved: true, children: [
8492
- /* @__PURE__ */ jsx76(StnSideNavigation.Watermark, {}),
8493
- /* @__PURE__ */ jsx76(
8864
+ /* @__PURE__ */ jsx77(StnSideNavigation.Spacer, {}),
8865
+ /* @__PURE__ */ jsxs54(StnSideNavigation.Footer, { curved: true, children: [
8866
+ /* @__PURE__ */ jsx77(StnSideNavigation.Watermark, {}),
8867
+ /* @__PURE__ */ jsx77(
8494
8868
  StnSideNavigation.Item,
8495
8869
  {
8496
8870
  iconSrc: systemIconSrc("line/bell"),
@@ -8499,7 +8873,7 @@ function AlertCenterPageScaffold({
8499
8873
  onClick: void 0
8500
8874
  }
8501
8875
  ),
8502
- /* @__PURE__ */ jsx76(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/settings"), label: "\uC124\uC815" })
8876
+ /* @__PURE__ */ jsx77(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/settings"), label: "\uC124\uC815" })
8503
8877
  ] })
8504
8878
  ]
8505
8879
  }
@@ -8508,8 +8882,8 @@ function AlertCenterPageScaffold({
8508
8882
  ] }),
8509
8883
  [gnbProp, gnbOpen, panel]
8510
8884
  );
8511
- const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */ jsx76("div", { className: "wrap_real_time stn-page-scaffold__fault-ph", children: /* @__PURE__ */ jsx76(StnPageScaffold.Region, { label: "\uC2E4\uC2DC\uAC04 \uC7A5\uC560 \uD604\uD669", hint: "StnWidget shell=fault-panel \xB7 \uC120\uD0DD" }) }) : null);
8512
- return /* @__PURE__ */ jsx76(
8885
+ const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */ jsx77("div", { className: "wrap_real_time stn-page-scaffold__fault-ph", children: /* @__PURE__ */ jsx77(StnPageScaffold.Region, { label: "\uC2E4\uC2DC\uAC04 \uC7A5\uC560 \uD604\uD669", hint: "StnWidget shell=fault-panel \xB7 \uC120\uD0DD" }) }) : null);
8886
+ return /* @__PURE__ */ jsx77(
8513
8887
  DashboardPageScaffold,
8514
8888
  {
8515
8889
  gnb: sideNav,
@@ -8517,7 +8891,7 @@ function AlertCenterPageScaffold({
8517
8891
  mapMessage,
8518
8892
  mapNote,
8519
8893
  faultPanel: faultSlot,
8520
- right: right ?? /* @__PURE__ */ jsx76(AlertCenterDashboard, {}),
8894
+ right: right ?? /* @__PURE__ */ jsx77(AlertCenterDashboard, {}),
8521
8895
  wrapId,
8522
8896
  wrapClassName: "stn-page--map-bg",
8523
8897
  ...shellProps
@@ -8527,7 +8901,7 @@ function AlertCenterPageScaffold({
8527
8901
 
8528
8902
  // src/patterns/scaffold/LoginPageScaffold.tsx
8529
8903
  import { useState as useState17 } from "react";
8530
- import { jsx as jsx77, jsxs as jsxs54 } from "react/jsx-runtime";
8904
+ import { jsx as jsx78, jsxs as jsxs55 } from "react/jsx-runtime";
8531
8905
  var LOGIN_TABS = [
8532
8906
  { value: "normal", label: "\uC77C\uBC18 \uB85C\uADF8\uC778" },
8533
8907
  { value: "social", label: "\uC18C\uC15C \uB85C\uADF8\uC778" }
@@ -8545,8 +8919,8 @@ function DefaultLoginForm({
8545
8919
  e.preventDefault();
8546
8920
  onLogin?.(userId, password);
8547
8921
  }
8548
- return /* @__PURE__ */ jsxs54(StnLoginFormStack, { onSubmit: handleSubmit, children: [
8549
- /* @__PURE__ */ jsx77(
8922
+ return /* @__PURE__ */ jsxs55(StnLoginFormStack, { onSubmit: handleSubmit, children: [
8923
+ /* @__PURE__ */ jsx78(
8550
8924
  StnSegmented,
8551
8925
  {
8552
8926
  "aria-label": "\uB85C\uADF8\uC778 \uBC29\uC2DD",
@@ -8555,8 +8929,8 @@ function DefaultLoginForm({
8555
8929
  options: LOGIN_TABS
8556
8930
  }
8557
8931
  ),
8558
- mode === "normal" ? /* @__PURE__ */ jsxs54(StnLoginFormFields, { children: [
8559
- /* @__PURE__ */ jsx77(
8932
+ mode === "normal" ? /* @__PURE__ */ jsxs55(StnLoginFormFields, { children: [
8933
+ /* @__PURE__ */ jsx78(
8560
8934
  StnLoginTextField,
8561
8935
  {
8562
8936
  icon: "line/user",
@@ -8568,7 +8942,7 @@ function DefaultLoginForm({
8568
8942
  "aria-label": "\uC544\uC774\uB514"
8569
8943
  }
8570
8944
  ),
8571
- /* @__PURE__ */ jsx77(
8945
+ /* @__PURE__ */ jsx78(
8572
8946
  StnLoginTextField,
8573
8947
  {
8574
8948
  icon: "line/lock",
@@ -8581,11 +8955,11 @@ function DefaultLoginForm({
8581
8955
  "aria-label": "\uBE44\uBC00\uBC88\uD638"
8582
8956
  }
8583
8957
  )
8584
- ] }) : socialContent ?? /* @__PURE__ */ jsx77(StnLoginPlaceholder, {}),
8585
- /* @__PURE__ */ jsx77(StnButton, { type: "submit", size: "xl", fullWidth: true, children: "\uB85C\uADF8\uC778" }),
8586
- /* @__PURE__ */ jsxs54(StnLoginFormLinks, { children: [
8587
- /* @__PURE__ */ jsx77("a", { href: signUpHref, children: "\uD68C\uC6D0\uAC00\uC785" }),
8588
- /* @__PURE__ */ jsx77("a", { href: recoverHref, children: "\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30" })
8958
+ ] }) : socialContent ?? /* @__PURE__ */ jsx78(StnLoginPlaceholder, {}),
8959
+ /* @__PURE__ */ jsx78(StnButton, { type: "submit", size: "xl", fullWidth: true, children: "\uB85C\uADF8\uC778" }),
8960
+ /* @__PURE__ */ jsxs55(StnLoginFormLinks, { children: [
8961
+ /* @__PURE__ */ jsx78("a", { href: signUpHref, children: "\uD68C\uC6D0\uAC00\uC785" }),
8962
+ /* @__PURE__ */ jsx78("a", { href: recoverHref, children: "\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30" })
8589
8963
  ] })
8590
8964
  ] });
8591
8965
  }
@@ -8599,16 +8973,16 @@ function DefaultLoginCard({
8599
8973
  signUpHref,
8600
8974
  recoverHref
8601
8975
  }) {
8602
- return /* @__PURE__ */ jsx77(
8976
+ return /* @__PURE__ */ jsx78(
8603
8977
  StnLoginCard,
8604
8978
  {
8605
8979
  glow,
8606
8980
  variant,
8607
- brand: /* @__PURE__ */ jsxs54(StnLoginBrandStack, { children: [
8608
- logo ?? /* @__PURE__ */ jsx77(StnLogo, { variant: "vertical", size: "xl" }),
8609
- /* @__PURE__ */ jsx77("p", { className: "stn-login-card__caption", children: productCaption })
8981
+ brand: /* @__PURE__ */ jsxs55(StnLoginBrandStack, { children: [
8982
+ logo ?? /* @__PURE__ */ jsx78(StnLogo, { variant: "vertical", size: "xl" }),
8983
+ /* @__PURE__ */ jsx78("p", { className: "stn-login-card__caption", children: productCaption })
8610
8984
  ] }),
8611
- children: /* @__PURE__ */ jsx77(
8985
+ children: /* @__PURE__ */ jsx78(
8612
8986
  DefaultLoginForm,
8613
8987
  {
8614
8988
  onLogin,
@@ -8634,8 +9008,8 @@ function LoginPageScaffold({
8634
9008
  recoverHref,
8635
9009
  ...shellProps
8636
9010
  }) {
8637
- const resolvedLayer0 = layer0 ?? /* @__PURE__ */ jsx77(StnLayer0Background, { variant: "login" });
8638
- const resolvedCard = children ?? /* @__PURE__ */ jsx77(
9011
+ const resolvedLayer0 = layer0 ?? /* @__PURE__ */ jsx78(StnLayer0Background, { variant: "login" });
9012
+ const resolvedCard = children ?? /* @__PURE__ */ jsx78(
8639
9013
  DefaultLoginCard,
8640
9014
  {
8641
9015
  logo,
@@ -8648,7 +9022,7 @@ function LoginPageScaffold({
8648
9022
  recoverHref
8649
9023
  }
8650
9024
  );
8651
- return /* @__PURE__ */ jsxs54(
9025
+ return /* @__PURE__ */ jsxs55(
8652
9026
  "div",
8653
9027
  {
8654
9028
  className: cn("stn-wrap stn-page--login", wrapClassName),
@@ -8656,7 +9030,7 @@ function LoginPageScaffold({
8656
9030
  ...shellProps,
8657
9031
  children: [
8658
9032
  resolvedLayer0,
8659
- /* @__PURE__ */ jsx77("div", { className: "stn-login", children: resolvedCard })
9033
+ /* @__PURE__ */ jsx78("div", { className: "stn-login", children: resolvedCard })
8660
9034
  ]
8661
9035
  }
8662
9036
  );
@@ -8685,7 +9059,7 @@ import {
8685
9059
 
8686
9060
  // src/patterns/toolbar/StnFloatingToolbar.tsx
8687
9061
  import React4 from "react";
8688
- import { jsx as jsx78, jsxs as jsxs55 } from "react/jsx-runtime";
9062
+ import { jsx as jsx79, jsxs as jsxs56 } from "react/jsx-runtime";
8689
9063
  var DEFAULT_MAP_MODES = [
8690
9064
  { value: "sphere", label: "\uAD6C\uBA74" },
8691
9065
  { value: "plane", label: "\uD3C9\uBA74" },
@@ -8695,7 +9069,7 @@ var StnFloatingToolbar = React4.forwardRef(
8695
9069
  ({ placement = "none", orientation = "horizontal", className, children, ...restProps }, ref) => {
8696
9070
  const placementClass = placement !== "none" ? `stn-floating-toolbar--${placement}` : "";
8697
9071
  const orientationClass = orientation === "vertical" ? "stn-floating-toolbar--vertical" : "";
8698
- return /* @__PURE__ */ jsx78(
9072
+ return /* @__PURE__ */ jsx79(
8699
9073
  "div",
8700
9074
  {
8701
9075
  ref,
@@ -8728,7 +9102,7 @@ var StnMapToolbar = React4.forwardRef(
8728
9102
  children,
8729
9103
  ...restProps
8730
9104
  }, ref) => {
8731
- return /* @__PURE__ */ jsxs55(
9105
+ return /* @__PURE__ */ jsxs56(
8732
9106
  StnFloatingToolbar,
8733
9107
  {
8734
9108
  ref,
@@ -8738,7 +9112,7 @@ var StnMapToolbar = React4.forwardRef(
8738
9112
  "aria-label": "\uC9C0\uB3C4 \uBC0F \uD1A0\uD3F4\uB85C\uC9C0 \uB3C4\uAD6C \uBAA8\uC74C",
8739
9113
  ...restProps,
8740
9114
  children: [
8741
- modeOptions && modeOptions.length > 0 && /* @__PURE__ */ jsx78(
9115
+ modeOptions && modeOptions.length > 0 && /* @__PURE__ */ jsx79(
8742
9116
  StnDropdown,
8743
9117
  {
8744
9118
  size: "md",
@@ -8749,75 +9123,75 @@ var StnMapToolbar = React4.forwardRef(
8749
9123
  "aria-label": "\uD22C\uC601 \uBAA8\uB4DC \uC120\uD0DD"
8750
9124
  }
8751
9125
  ),
8752
- onRestore && /* @__PURE__ */ jsx78(
9126
+ onRestore && /* @__PURE__ */ jsx79(
8753
9127
  StnButton,
8754
9128
  {
8755
9129
  variant: buttonVariant,
8756
9130
  size: "md",
8757
9131
  shape: "square",
8758
- icon: /* @__PURE__ */ jsxs55("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
8759
- /* @__PURE__ */ jsx78("path", { d: "M3.06006 13C3.30547 15.1939 4.34865 17.221 5.9912 18.696C7.63374 20.1709 9.76108 20.9907 11.9686 20.9994C14.1762 21.0081 16.3099 20.2052 17.9641 18.7434C19.6183 17.2815 20.6775 15.2627 20.9403 13.0708C21.2031 10.879 20.6511 8.66696 19.3894 6.85551C18.1276 5.04406 16.2441 3.75951 14.0971 3.24618C11.95 2.73284 9.68922 3.02652 7.74457 4.07135C5.79993 5.11619 4.30712 6.83931 3.55006 8.913" }),
8760
- /* @__PURE__ */ jsx78("path", { d: "M3 4.00098V9.00098H8" }),
8761
- /* @__PURE__ */ jsx78("circle", { cx: "12", cy: "12", r: "1", fill: "currentColor" })
9132
+ icon: /* @__PURE__ */ jsxs56("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9133
+ /* @__PURE__ */ jsx79("path", { d: "M3.06006 13C3.30547 15.1939 4.34865 17.221 5.9912 18.696C7.63374 20.1709 9.76108 20.9907 11.9686 20.9994C14.1762 21.0081 16.3099 20.2052 17.9641 18.7434C19.6183 17.2815 20.6775 15.2627 20.9403 13.0708C21.2031 10.879 20.6511 8.66696 19.3894 6.85551C18.1276 5.04406 16.2441 3.75951 14.0971 3.24618C11.95 2.73284 9.68922 3.02652 7.74457 4.07135C5.79993 5.11619 4.30712 6.83931 3.55006 8.913" }),
9134
+ /* @__PURE__ */ jsx79("path", { d: "M3 4.00098V9.00098H8" }),
9135
+ /* @__PURE__ */ jsx79("circle", { cx: "12", cy: "12", r: "1", fill: "currentColor" })
8762
9136
  ] }),
8763
9137
  "aria-label": "\uCD08\uAE30\uD654 (Restore)",
8764
9138
  title: "\uCD08\uAE30\uD654 (Restore)",
8765
9139
  onClick: onRestore
8766
9140
  }
8767
9141
  ),
8768
- onFullscreen && /* @__PURE__ */ jsx78(
9142
+ onFullscreen && /* @__PURE__ */ jsx79(
8769
9143
  StnButton,
8770
9144
  {
8771
9145
  variant: buttonVariant,
8772
9146
  size: "md",
8773
9147
  shape: "square",
8774
- icon: /* @__PURE__ */ jsxs55("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
8775
- /* @__PURE__ */ jsx78("path", { d: "M16 4H20V8" }),
8776
- /* @__PURE__ */ jsx78("path", { d: "M14 10L20 4" }),
8777
- /* @__PURE__ */ jsx78("path", { d: "M8 20H4V16" }),
8778
- /* @__PURE__ */ jsx78("path", { d: "M4 20L10 14" })
9148
+ icon: /* @__PURE__ */ jsxs56("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9149
+ /* @__PURE__ */ jsx79("path", { d: "M16 4H20V8" }),
9150
+ /* @__PURE__ */ jsx79("path", { d: "M14 10L20 4" }),
9151
+ /* @__PURE__ */ jsx79("path", { d: "M8 20H4V16" }),
9152
+ /* @__PURE__ */ jsx79("path", { d: "M4 20L10 14" })
8779
9153
  ] }),
8780
9154
  "aria-label": "\uC804\uCCB4\uD654\uBA74",
8781
9155
  title: "\uC804\uCCB4\uD654\uBA74",
8782
9156
  onClick: onFullscreen
8783
9157
  }
8784
9158
  ),
8785
- onZoomIn && /* @__PURE__ */ jsx78(
9159
+ onZoomIn && /* @__PURE__ */ jsx79(
8786
9160
  StnButton,
8787
9161
  {
8788
9162
  variant: buttonVariant,
8789
9163
  size: "md",
8790
9164
  shape: "square",
8791
- icon: /* @__PURE__ */ jsxs55("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
8792
- /* @__PURE__ */ jsx78("path", { d: "M12 5V19" }),
8793
- /* @__PURE__ */ jsx78("path", { d: "M5 12H19" })
9165
+ icon: /* @__PURE__ */ jsxs56("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9166
+ /* @__PURE__ */ jsx79("path", { d: "M12 5V19" }),
9167
+ /* @__PURE__ */ jsx79("path", { d: "M5 12H19" })
8794
9168
  ] }),
8795
9169
  "aria-label": "\uD655\uB300",
8796
9170
  title: "\uD655\uB300",
8797
9171
  onClick: onZoomIn
8798
9172
  }
8799
9173
  ),
8800
- onZoomOut && /* @__PURE__ */ jsx78(
9174
+ onZoomOut && /* @__PURE__ */ jsx79(
8801
9175
  StnButton,
8802
9176
  {
8803
9177
  variant: buttonVariant,
8804
9178
  size: "md",
8805
9179
  shape: "square",
8806
- icon: /* @__PURE__ */ jsx78("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx78("path", { d: "M5 12H19" }) }),
9180
+ icon: /* @__PURE__ */ jsx79("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx79("path", { d: "M5 12H19" }) }),
8807
9181
  "aria-label": "\uCD95\uC18C",
8808
9182
  title: "\uCD95\uC18C",
8809
9183
  onClick: onZoomOut
8810
9184
  }
8811
9185
  ),
8812
- onRefresh && /* @__PURE__ */ jsx78(
9186
+ onRefresh && /* @__PURE__ */ jsx79(
8813
9187
  StnButton,
8814
9188
  {
8815
9189
  variant: buttonVariant,
8816
9190
  size: "md",
8817
9191
  shape: "square",
8818
- icon: /* @__PURE__ */ jsxs55("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
8819
- /* @__PURE__ */ jsx78("path", { d: "M20 11C19.7554 9.24023 18.9391 7.60967 17.6766 6.35951C16.4142 5.10934 14.7758 4.30893 13.0137 4.08156C11.2516 3.8542 9.46362 4.21249 7.9252 5.10126C6.38678 5.99002 5.18325 7.35995 4.5 9.00001M4 5.00001V9.00001H8" }),
8820
- /* @__PURE__ */ jsx78("path", { d: "M4 13C4.24456 14.7598 5.06093 16.3903 6.32336 17.6405C7.58579 18.8907 9.22424 19.6911 10.9863 19.9184C12.7484 20.1458 14.5364 19.7875 16.0748 18.8988C17.6132 18.01 18.8168 16.6401 19.5 15M20 19V15H16" })
9192
+ icon: /* @__PURE__ */ jsxs56("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.6", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
9193
+ /* @__PURE__ */ jsx79("path", { d: "M20 11C19.7554 9.24023 18.9391 7.60967 17.6766 6.35951C16.4142 5.10934 14.7758 4.30893 13.0137 4.08156C11.2516 3.8542 9.46362 4.21249 7.9252 5.10126C6.38678 5.99002 5.18325 7.35995 4.5 9.00001M4 5.00001V9.00001H8" }),
9194
+ /* @__PURE__ */ jsx79("path", { d: "M4 13C4.24456 14.7598 5.06093 16.3903 6.32336 17.6405C7.58579 18.8907 9.22424 19.6911 10.9863 19.9184C12.7484 20.1458 14.5364 19.7875 16.0748 18.8988C17.6132 18.01 18.8168 16.6401 19.5 15M20 19V15H16" })
8821
9195
  ] }),
8822
9196
  "aria-label": "\uC0C8\uB85C\uACE0\uCE68",
8823
9197
  title: "\uC0C8\uB85C\uACE0\uCE68",
@@ -8853,6 +9227,7 @@ export {
8853
9227
  STN_ALERT_CENTER_TABS2 as STN_ALERT_CENTER_TABS,
8854
9228
  STN_ALERT_CENTER_TAB_IDS,
8855
9229
  STN_ALERT_CENTER_USAGE,
9230
+ STN_ALERT_CENTER_USAGE_HTML,
8856
9231
  STN_DATE_PICKER_INTRO,
8857
9232
  STN_DATE_PICKER_KO_NAME,
8858
9233
  STN_DATE_PICKER_NAME,
@@ -8958,6 +9333,7 @@ export {
8958
9333
  STN_WIDGET_SHELL_ROWS,
8959
9334
  STN_WIDGET_USAGE,
8960
9335
  SideNavContext,
9336
+ StnAlertCard,
8961
9337
  StnAlertCenterDocPreview,
8962
9338
  StnAlertCenterPanel,
8963
9339
  StnBadge,
@@ -8996,6 +9372,7 @@ export {
8996
9372
  StnHeaderToolbar,
8997
9373
  StnIcon,
8998
9374
  StnIconBox,
9375
+ StnLabelPrefix,
8999
9376
  StnLayer2 as StnLayer,
9000
9377
  StnLayer0Background,
9001
9378
  StnLayerBackground,
@@ -9029,6 +9406,7 @@ export {
9029
9406
  StnLogo,
9030
9407
  StnMapCanvas,
9031
9408
  StnMapToolbar,
9409
+ StnModal,
9032
9410
  StnPageScaffold,
9033
9411
  StnPageScaffoldLayer,
9034
9412
  StnPageScaffoldMapCanvas,
@@ -9087,6 +9465,7 @@ export {
9087
9465
  StnTopologyNodePreview,
9088
9466
  StnTopologyRing,
9089
9467
  StnTree,
9468
+ StnTreeItem,
9090
9469
  StnTreeNode,
9091
9470
  StnWidget,
9092
9471
  StnWidgetActions,