@stn-uiux/pub-ui-react 0.1.89 → 0.1.90

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
@@ -8439,18 +8439,19 @@ var StnStack = forwardRef38(function StnStack2({
8439
8439
  });
8440
8440
 
8441
8441
  // src/components/topology/stnTopologyShared.ts
8442
- var TOPOLOGY_NODE_SIZE_MAP = {
8442
+ var TOPOLOGY_GRAPH_NODE_SIZE = {
8443
8443
  xs: 6,
8444
- // var(--stn-topology-node-radius-xs) = 6px (직경 12px, --stn-topology-node-size-xs)
8444
+ // var(--stn-topology-graph-node-radius-xs) = 6px (직경 12px, --stn-topology-graph-node-size-xs)
8445
8445
  sm: 8,
8446
- // var(--stn-topology-node-radius-sm) = 8px (직경 16px, --stn-topology-node-size-sm)
8446
+ // var(--stn-topology-graph-node-radius-sm) = 8px (직경 16px, --stn-topology-graph-node-size-sm)
8447
8447
  md: 10,
8448
- // var(--stn-topology-node-radius-md) = 10px (직경 20px, --stn-topology-node-size-md)
8448
+ // var(--stn-topology-graph-node-radius-md) = 10px (직경 20px, --stn-topology-graph-node-size-md)
8449
8449
  lg: 12,
8450
- // var(--stn-topology-node-radius-lg) = 12px (직경 24px, --stn-topology-node-size-lg)
8450
+ // var(--stn-topology-graph-node-radius-lg) = 12px (직경 24px, --stn-topology-graph-node-size-lg)
8451
8451
  xl: 14
8452
- // var(--stn-topology-node-radius-xl) = 14px (직경 28px, --stn-topology-node-size-xl)
8452
+ // var(--stn-topology-graph-node-radius-xl) = 14px (직경 28px, --stn-topology-graph-node-size-xl)
8453
8453
  };
8454
+ var TOPOLOGY_NODE_SIZE_MAP = TOPOLOGY_GRAPH_NODE_SIZE;
8454
8455
  var STN_TOPOLOGY_NODE_SHAPES = [
8455
8456
  "circle",
8456
8457
  "square",
@@ -8562,13 +8563,14 @@ var STN_TOPOLOGY_STATUS_COLORS = {
8562
8563
  }
8563
8564
  };
8564
8565
  var TOPOLOGY_NODE_STROKE = 1.2;
8565
- var STN_TOPOLOGY_NODE_SIZE = {
8566
- xs: { r: 6, icon: 8, countFont: 8, labelFont: 10, statusFont: 9, stroke: TOPOLOGY_NODE_STROKE },
8567
- sm: { r: 8, icon: 10, countFont: 8, labelFont: 10, statusFont: 9, stroke: TOPOLOGY_NODE_STROKE },
8568
- md: { r: 10, icon: 12, countFont: 9, labelFont: 11, statusFont: 10, stroke: TOPOLOGY_NODE_STROKE },
8569
- lg: { r: 12, icon: 14, countFont: 10, labelFont: 11, statusFont: 10, stroke: TOPOLOGY_NODE_STROKE },
8570
- xl: { r: 14, icon: 16, countFont: 11, labelFont: 12, statusFont: 11, stroke: TOPOLOGY_NODE_STROKE }
8566
+ var TOPOLOGY_RING_NODE_SIZE = {
8567
+ xs: { r: 12, size: 24, icon: 14, countFont: 9, labelFont: 11, statusFont: 10, stroke: TOPOLOGY_NODE_STROKE },
8568
+ sm: { r: 16, size: 32, icon: 16, countFont: 10, labelFont: 11, statusFont: 10, stroke: TOPOLOGY_NODE_STROKE },
8569
+ md: { r: 20, size: 40, icon: 18, countFont: 11, labelFont: 12, statusFont: 11, stroke: TOPOLOGY_NODE_STROKE },
8570
+ lg: { r: 24, size: 48, icon: 22, countFont: 12, labelFont: 13, statusFont: 12, stroke: TOPOLOGY_NODE_STROKE },
8571
+ xl: { r: 28, size: 56, icon: 26, countFont: 13, labelFont: 14, statusFont: 13, stroke: TOPOLOGY_NODE_STROKE }
8571
8572
  };
8573
+ var STN_TOPOLOGY_NODE_SIZE = TOPOLOGY_RING_NODE_SIZE;
8572
8574
  function formatTopologyCount(count) {
8573
8575
  if (count == null || count === "") return "0";
8574
8576
  if (typeof count === "string") return count;
@@ -8682,7 +8684,7 @@ function StnTopologyNodeItem({
8682
8684
  fontSize: metrics.countFont,
8683
8685
  fontWeight: 800,
8684
8686
  lineHeight: 1,
8685
- color: color || "var(--stn-static-white)"
8687
+ color: color || "var(--stn-text-primary)"
8686
8688
  },
8687
8689
  children: countText
8688
8690
  }
@@ -9248,17 +9250,17 @@ function renderTopologyNodeShapeGeometry({
9248
9250
  const strokeW = strokeWidth ?? 1.4;
9249
9251
  const strokeStyle = { strokeWidth: strokeW };
9250
9252
  if (shape === "square") {
9251
- const s = r * 1.6;
9253
+ const s = r * 2;
9252
9254
  const half = s / 2;
9253
- const rx = Math.max(1.5, 2 * (r / 10));
9255
+ const rx = Math.max(1.5, 2.5 * (r / 10));
9254
9256
  const sSmall = s * innerRatio;
9255
9257
  const halfSmall = sSmall / 2;
9256
9258
  const rxSmall = rx * 0.75;
9257
- const sSolid = s * solidRatio;
9258
- const halfSolid = sSolid / 2;
9259
- const rxSolid = rx * 0.85;
9259
+ const sEqual = r * 1.7;
9260
+ const halfEqual = sEqual / 2;
9261
+ const rxEqual = rx * 0.85;
9260
9262
  if (variant === "solid") {
9261
- return /* @__PURE__ */ jsx62("rect", { x: -halfSolid, y: -halfSolid, width: sSolid, height: sSolid, rx: rxSolid, fill: statusColor });
9263
+ return /* @__PURE__ */ jsx62("rect", { x: -halfEqual, y: -halfEqual, width: sEqual, height: sEqual, rx: rxEqual, fill: statusColor });
9262
9264
  }
9263
9265
  if (variant === "combined") {
9264
9266
  return /* @__PURE__ */ jsxs49("g", { children: [
@@ -9266,7 +9268,7 @@ function renderTopologyNodeShapeGeometry({
9266
9268
  /* @__PURE__ */ jsx62("rect", { x: -halfSmall, y: -halfSmall, width: sSmall, height: sSmall, rx: rxSmall, fill: statusColor })
9267
9269
  ] });
9268
9270
  }
9269
- return /* @__PURE__ */ jsx62("rect", { x: -halfSolid, y: -halfSolid, width: sSolid, height: sSolid, rx: rxSolid, fill: surfaceBg, stroke: statusColor, strokeWidth: strokeW, style: strokeStyle });
9271
+ return /* @__PURE__ */ jsx62("rect", { x: -halfEqual, y: -halfEqual, width: sEqual, height: sEqual, rx: rxEqual, fill: surfaceBg, stroke: statusColor, strokeWidth: strokeW, style: strokeStyle });
9270
9272
  }
9271
9273
  if (shape === "triangle") {
9272
9274
  const R2 = r * 1.25;
@@ -9769,6 +9771,43 @@ function StnTopologyGraphMinimap({ className, style }) {
9769
9771
  }
9770
9772
  );
9771
9773
  }
9774
+ function StnTopologyGraphZoomLevel({
9775
+ resetOnClick = true,
9776
+ targetZoom = 1,
9777
+ className,
9778
+ style
9779
+ }) {
9780
+ const { zoom, setZoom, isMinimapOpen, showMinimap } = useStnTopologyGraph();
9781
+ const percent = Math.round(zoom * 100);
9782
+ const minimapModifier = showMinimap ? isMinimapOpen ? "stn-topology-zoom-badge--with-minimap" : "stn-topology-zoom-badge--with-minimap-collapsed" : void 0;
9783
+ return /* @__PURE__ */ jsx63(
9784
+ "div",
9785
+ {
9786
+ className: cn("stn-topology-zoom-badge", minimapModifier, resetOnClick && "is-clickable", className),
9787
+ style,
9788
+ onClick: (e) => {
9789
+ e.stopPropagation();
9790
+ if (resetOnClick) {
9791
+ setZoom(targetZoom);
9792
+ }
9793
+ },
9794
+ title: `\uD604\uC7AC \uC90C \uBC30\uC728: ${percent}%${resetOnClick ? " (\uD074\uB9AD \uC2DC 100% \uB9AC\uC14B)" : ""}`,
9795
+ "aria-label": `\uD604\uC7AC \uC90C \uBC30\uC728: ${percent}%`,
9796
+ role: resetOnClick ? "button" : void 0,
9797
+ tabIndex: resetOnClick ? 0 : void 0,
9798
+ onKeyDown: (e) => {
9799
+ if (resetOnClick && (e.key === "Enter" || e.key === " ")) {
9800
+ e.preventDefault();
9801
+ setZoom(targetZoom);
9802
+ }
9803
+ },
9804
+ children: /* @__PURE__ */ jsxs50("span", { className: "stn-topology-zoom-badge__text", children: [
9805
+ percent,
9806
+ "%"
9807
+ ] })
9808
+ }
9809
+ );
9810
+ }
9772
9811
  function render3DNodeGlyph({
9773
9812
  shape,
9774
9813
  variant,
@@ -9855,13 +9894,17 @@ function renderCurrentNodeRing({
9855
9894
  }
9856
9895
  ) });
9857
9896
  }
9858
- function StnTopologyGraphViewport({ className, style }) {
9897
+ function StnTopologyGraphViewport({ className, style, viewBox: customViewBox }) {
9859
9898
  const {
9860
9899
  viewMode,
9861
9900
  renderGridLines,
9862
9901
  projectedLinks,
9863
9902
  sortedNodes,
9864
9903
  zoom,
9904
+ fixedNodeSize,
9905
+ calibrateScreenPixels,
9906
+ screenPixelsRatio = 1,
9907
+ dynamicViewBox,
9865
9908
  selectedId,
9866
9909
  onNodeClick,
9867
9910
  onNodeContextMenu,
@@ -9880,6 +9923,8 @@ function StnTopologyGraphViewport({ className, style }) {
9880
9923
  setHoveredNodeId,
9881
9924
  hasDraggedRef
9882
9925
  } = useStnTopologyGraph();
9926
+ const calibration = calibrateScreenPixels && screenPixelsRatio > 0 ? 1 / screenPixelsRatio : 1;
9927
+ const activeViewBox = customViewBox ?? dynamicViewBox ?? "-250 -250 500 500";
9883
9928
  const [hoveredLinkKey, setHoveredLinkKey] = useState17(null);
9884
9929
  const isAnyLinkHovered = hoveredLinkKey !== null;
9885
9930
  return /* @__PURE__ */ jsxs50(
@@ -9888,7 +9933,7 @@ function StnTopologyGraphViewport({ className, style }) {
9888
9933
  className: cn("stn-topology-graph__svg", className),
9889
9934
  width: "100%",
9890
9935
  height: "100%",
9891
- viewBox: "-250 -250 500 500",
9936
+ viewBox: activeViewBox,
9892
9937
  style: { display: "block", pointerEvents: "auto", ...style },
9893
9938
  onClick: (e) => {
9894
9939
  onCanvasClick?.(e);
@@ -9925,7 +9970,8 @@ function StnTopologyGraphViewport({ className, style }) {
9925
9970
  if (isDot) {
9926
9971
  const midSX = (n1.sx + n2.sx) / 2;
9927
9972
  const midSY = (n1.sy + n2.sy) / 2;
9928
- const dotRadius = Math.max(2, 3 * depthScale * Math.min(1.2, Math.max(0.6, zoom)));
9973
+ const avgScale = n1 && n2 ? (n1.scale + n2.scale) / 2 : 1;
9974
+ const dotRadius = fixedNodeSize ? 3 * calibration : Math.max(1.5, 3 * avgScale * calibration);
9929
9975
  const dotFill = link.color ?? statusColor ?? "var(--stn-topology-node-normal)";
9930
9976
  dotElement = /* @__PURE__ */ jsx63("circle", { cx: midSX, cy: midSY, r: dotRadius, fill: dotFill, opacity: effectiveLineOpacity });
9931
9977
  }
@@ -10044,7 +10090,7 @@ function StnTopologyGraphViewport({ className, style }) {
10044
10090
  ),
10045
10091
  /* @__PURE__ */ jsx63("g", { className: "stn-topology-nodes-group", children: sortedNodes.map((n) => {
10046
10092
  const depthScale = 550 / (550 + n.depth);
10047
- const scale = Math.max(0.4, n.scale);
10093
+ const scale = fixedNodeSize ? calibration : Math.max(0.3, n.scale * calibration);
10048
10094
  const baseOpacity = Math.max(0.75, Math.min(1, depthScale));
10049
10095
  const opacity = resolveTopologyOpacity(n.opacity, baseOpacity);
10050
10096
  const isSelected = (Array.isArray(selectedId) ? selectedId.some((sid) => String(sid) === String(n.id)) : selectedId !== void 0 && selectedId !== null && String(selectedId) === String(n.id)) || Boolean(n.isCurrent) || Boolean(n.isSelected);
@@ -10062,7 +10108,7 @@ function StnTopologyGraphViewport({ className, style }) {
10062
10108
  const statusColor = n.color ? n.color : isCritical ? "var(--stn-grade-critical)" : isMajor ? "var(--stn-grade-major)" : isMinor ? "var(--stn-grade-minor)" : isWarning ? "var(--stn-grade-warning)" : isPrimary || isCore ? "var(--stn-primary)" : isNormal || isNeutral ? "var(--stn-topology-node-normal)" : "var(--stn-topology-node-normal)";
10063
10109
  const baseRadius = typeof n.size === "number" ? n.size : n.size && TOPOLOGY_NODE_SIZE_MAP[n.size] ? TOPOLOGY_NODE_SIZE_MAP[n.size] : isCore ? TOPOLOGY_NODE_SIZE_MAP.lg : TOPOLOGY_NODE_SIZE_MAP.md;
10064
10110
  const r = baseRadius * scale;
10065
- const strokeWidth = "var(--stn-topology-node-stroke, 1.2px)";
10111
+ const strokeWidth = calibrateScreenPixels ? Number((1.2 * calibration).toFixed(2)) : "var(--stn-topology-node-stroke, 1.2px)";
10066
10112
  const rOuter = Math.max(baseRadius, (baseRadius + 2) * scale);
10067
10113
  const pulseRing = hasPulse && /* @__PURE__ */ jsxs50("g", { children: [
10068
10114
  /* @__PURE__ */ jsx63(
@@ -10103,9 +10149,10 @@ function StnTopologyGraphViewport({ className, style }) {
10103
10149
  if (renderBadge) {
10104
10150
  topBadgeElement = renderBadge(n, { r, position: "top", badgeText });
10105
10151
  } else {
10106
- const bW = 140;
10107
- const bH = 30;
10108
- const badgeScale = 0.62 * Math.max(0.75, Math.min(1.25, scale));
10152
+ const badgeText2 = String(n.badge);
10153
+ const bW = Math.max(140, badgeText2.length * 14 + 36);
10154
+ const badgeScale = calibrateScreenPixels ? Number((0.95 * calibration).toFixed(2)) : fixedNodeSize ? 0.6 : 0.6 * Math.max(0.65, Math.min(1.4, depthScale));
10155
+ const bH = Math.max(30, Math.round(26 * badgeScale));
10109
10156
  const badgeHalfHeight = 18 * badgeScale / 2;
10110
10157
  const posY = -r - 2.5 - badgeHalfHeight - bH / 2;
10111
10158
  topBadgeElement = /* @__PURE__ */ jsx63(
@@ -10126,7 +10173,7 @@ function StnTopologyGraphViewport({ className, style }) {
10126
10173
  {
10127
10174
  color: n.badgeColor ?? "primary",
10128
10175
  appearance: n.badgeAppearance ?? "solid",
10129
- badgeContent: badgeText,
10176
+ badgeContent: badgeText2,
10130
10177
  ...n.badgeProps
10131
10178
  }
10132
10179
  )
@@ -10147,9 +10194,9 @@ function StnTopologyGraphViewport({ className, style }) {
10147
10194
  } else if (renderBadge && n.badgePlacement === "bottom") {
10148
10195
  bottomLabelElement = renderBadge(n, { r, position: "bottom", badgeText: labelText });
10149
10196
  } else if (mode === "badge") {
10150
- const bW = 140;
10151
- const bH = 30;
10152
- const badgeScale = 0.62 * Math.max(0.75, Math.min(1.25, scale));
10197
+ const bW = Math.max(160, Math.min(360, labelText.length * 12 + 40));
10198
+ const badgeScale = calibrateScreenPixels ? Number((0.95 * calibration).toFixed(2)) : fixedNodeSize ? 0.6 : 0.6 * Math.max(0.65, Math.min(1.4, depthScale));
10199
+ const bH = Math.max(30, Math.round(24 * badgeScale));
10153
10200
  const badgeHalfHeight = 16 * badgeScale / 2;
10154
10201
  const posY = r + 2.5 + badgeHalfHeight - bH / 2;
10155
10202
  bottomLabelElement = /* @__PURE__ */ jsx63(
@@ -10180,6 +10227,7 @@ function StnTopologyGraphViewport({ className, style }) {
10180
10227
  }
10181
10228
  );
10182
10229
  } else {
10230
+ const plainFontSize = calibrateScreenPixels ? Number((9.5 * calibration).toFixed(1)) : fixedNodeSize ? TOPOLOGY_LINK_LABEL_SPEC.baseFontSize : Number((TOPOLOGY_LINK_LABEL_SPEC.baseFontSize * Math.max(0.65, Math.min(1.4, depthScale))).toFixed(1));
10183
10231
  bottomLabelElement = /* @__PURE__ */ jsx63("g", { className: "stn-topology-node__bottom-label stn-topology-node__bottom-label--plain", transform: `translate(0, ${bottomY})`, children: /* @__PURE__ */ jsx63(
10184
10232
  "text",
10185
10233
  {
@@ -10189,11 +10237,11 @@ function StnTopologyGraphViewport({ className, style }) {
10189
10237
  dominantBaseline: "middle",
10190
10238
  fill: "var(--stn-topology-node-label-fg, var(--stn-text-primary))",
10191
10239
  stroke: "var(--stn-topology-node-label-halo, var(--stn-elevation-surface-0))",
10192
- strokeWidth: 2.4,
10240
+ strokeWidth: TOPOLOGY_LINK_LABEL_SPEC.haloStrokeWidth,
10193
10241
  paintOrder: "stroke",
10194
10242
  strokeLinejoin: "round",
10195
- fontSize: 5.8,
10196
- fontWeight: 700,
10243
+ fontSize: plainFontSize,
10244
+ fontWeight: 600,
10197
10245
  letterSpacing: "-0.2px",
10198
10246
  children: labelText
10199
10247
  }
@@ -10220,7 +10268,7 @@ function StnTopologyGraphViewport({ className, style }) {
10220
10268
  if (hasDraggedRef.current) {
10221
10269
  return;
10222
10270
  }
10223
- onNodeClick?.(n);
10271
+ onNodeClick?.(n, e);
10224
10272
  },
10225
10273
  onContextMenu: (e) => {
10226
10274
  if (onNodeContextMenu) {
@@ -10244,7 +10292,7 @@ function StnTopologyGraphViewport({ className, style }) {
10244
10292
  const isTooltipVisible = Boolean(showTooltips) || hoveredNodeId === n.id;
10245
10293
  if (!isTooltipVisible || !n.label) return null;
10246
10294
  const depthScale = 550 / (550 + n.depth);
10247
- const scale = Math.max(0.4, n.scale);
10295
+ const scale = fixedNodeSize ? calibration : Math.max(0.4, n.scale * calibration);
10248
10296
  const baseRadius = typeof n.size === "number" ? n.size : n.size && TOPOLOGY_NODE_SIZE_MAP[n.size] ? TOPOLOGY_NODE_SIZE_MAP[n.size] : Boolean(n.isCore) ? TOPOLOGY_NODE_SIZE_MAP.lg : TOPOLOGY_NODE_SIZE_MAP.md;
10249
10297
  const r = baseRadius * scale;
10250
10298
  const isCritical = n.status === "critical";
@@ -10256,14 +10304,18 @@ function StnTopologyGraphViewport({ className, style }) {
10256
10304
  const tooltipBg = tone === "primary" ? "var(--stn-primary)" : tone === "critical" ? "var(--stn-grade-critical)" : tone === "warning" ? "var(--stn-grade-warning)" : tone === "major" ? "var(--stn-grade-major)" : tone === "minor" ? "var(--stn-grade-minor)" : "var(--stn-tooltip-bg-neutral)";
10257
10305
  const tooltipFg = "var(--stn-tooltip-fg-neutral)";
10258
10306
  const hasBadge = Boolean(n.badge) && (n.badgePlacement ?? "top") === "top";
10259
- const badgeHeight = hasBadge ? 14 : 0;
10260
- const tooltipH = 11;
10261
- const arrowH = 2.5;
10262
- const arrowW = 5;
10263
- const gap = 2.5;
10307
+ const topBadgeScale = calibrateScreenPixels ? Number((0.95 * calibration).toFixed(2)) : fixedNodeSize ? 0.6 : 0.6 * Math.max(0.65, Math.min(1.4, depthScale));
10308
+ const badgeHeight = hasBadge ? 18 * topBadgeScale : 0;
10309
+ const tooltipScale = calibrateScreenPixels ? calibration : fixedNodeSize ? 1 : Math.max(0.65, Math.min(1.4, depthScale));
10310
+ const tooltipH = 18 * tooltipScale;
10311
+ const arrowH = 3.5 * tooltipScale;
10312
+ const arrowW = 7 * tooltipScale;
10313
+ const gap = 3.5 * tooltipScale;
10264
10314
  const tooltipBoxY = -r - badgeHeight - gap - arrowH - tooltipH;
10265
10315
  const charCount = n.label.length;
10266
- const tooltipW = Math.max(22, Math.min(160, charCount * 4.4 + 9));
10316
+ const tooltipFontSize = Number((10 * tooltipScale).toFixed(1));
10317
+ const tooltipW = Math.max(32 * tooltipScale, charCount * 6.8 * tooltipScale + 16 * tooltipScale);
10318
+ const rx = 3 * tooltipScale;
10267
10319
  const nodeOpacity = resolveTopologyOpacity(n.opacity, Math.max(0.75, Math.min(1, depthScale)));
10268
10320
  return /* @__PURE__ */ jsx63(
10269
10321
  "g",
@@ -10284,7 +10336,7 @@ function StnTopologyGraphViewport({ className, style }) {
10284
10336
  y: 0,
10285
10337
  width: tooltipW,
10286
10338
  height: tooltipH,
10287
- rx: 2.5,
10339
+ rx,
10288
10340
  fill: tooltipBg
10289
10341
  }
10290
10342
  ),
@@ -10303,7 +10355,7 @@ function StnTopologyGraphViewport({ className, style }) {
10303
10355
  textAnchor: "middle",
10304
10356
  dominantBaseline: "central",
10305
10357
  fill: tooltipFg,
10306
- fontSize: 6.8,
10358
+ fontSize: tooltipFontSize,
10307
10359
  fontWeight: 600,
10308
10360
  letterSpacing: "-0.1px",
10309
10361
  children: n.label
@@ -10336,6 +10388,9 @@ var StnTopologyGraphInternal = forwardRef39(
10336
10388
  showModeToggle = true,
10337
10389
  showToolbar = true,
10338
10390
  showMinimap = false,
10391
+ showZoomLevel = false,
10392
+ fixedNodeSize = false,
10393
+ calibrateScreenPixels = false,
10339
10394
  showTooltips = false,
10340
10395
  showNodeLabels = true,
10341
10396
  nodeLabelMode = "badge",
@@ -10417,6 +10472,58 @@ var StnTopologyGraphInternal = forwardRef39(
10417
10472
  yawRef.current = yaw;
10418
10473
  const zoomRef = useRef11(zoom);
10419
10474
  zoomRef.current = zoom;
10475
+ const [containerDimensions, setContainerDimensions] = useState17({
10476
+ width: 500,
10477
+ height: 500
10478
+ });
10479
+ const [screenPixelsRatio, setScreenPixelsRatio] = useState17(1);
10480
+ useEffect14(() => {
10481
+ const container = containerRef.current;
10482
+ if (!container) return;
10483
+ const updateDimensionsAndScale = () => {
10484
+ const rect = container.getBoundingClientRect();
10485
+ if (rect.width > 0 && rect.height > 0) {
10486
+ setContainerDimensions({ width: rect.width, height: rect.height });
10487
+ }
10488
+ if (calibrateScreenPixels) {
10489
+ const svg = container.querySelector("svg.stn-topology-graph__svg");
10490
+ const ctm = svg?.getScreenCTM();
10491
+ if (ctm && ctm.a > 0) {
10492
+ setScreenPixelsRatio(ctm.a);
10493
+ } else if (rect.width > 0 && rect.height > 0) {
10494
+ const minDim = Math.min(rect.width, rect.height);
10495
+ setScreenPixelsRatio(minDim / 500);
10496
+ }
10497
+ }
10498
+ };
10499
+ updateDimensionsAndScale();
10500
+ const ro = new ResizeObserver(() => {
10501
+ updateDimensionsAndScale();
10502
+ });
10503
+ ro.observe(container);
10504
+ window.addEventListener("resize", updateDimensionsAndScale);
10505
+ return () => {
10506
+ ro.disconnect();
10507
+ window.removeEventListener("resize", updateDimensionsAndScale);
10508
+ };
10509
+ }, [calibrateScreenPixels]);
10510
+ const dynamicViewBox = useMemo4(() => {
10511
+ const { width, height: height2 } = containerDimensions;
10512
+ if (width <= 0 || height2 <= 0) return "-250 -250 500 500";
10513
+ const aspect = width / height2;
10514
+ let vWidth = 500;
10515
+ let vHeight = 500;
10516
+ if (aspect >= 1) {
10517
+ vWidth = 500 * aspect;
10518
+ vHeight = 500;
10519
+ } else {
10520
+ vWidth = 500;
10521
+ vHeight = 500 / aspect;
10522
+ }
10523
+ const minX = -vWidth / 2;
10524
+ const minY = -vHeight / 2;
10525
+ return `${minX.toFixed(1)} ${minY.toFixed(1)} ${vWidth.toFixed(1)} ${vHeight.toFixed(1)}`;
10526
+ }, [containerDimensions]);
10420
10527
  useEffect14(() => {
10421
10528
  setNodeList((prev) => {
10422
10529
  if (prev === effectiveNodes) return prev;
@@ -10704,6 +10811,12 @@ var StnTopologyGraphInternal = forwardRef39(
10704
10811
  setProjectionType,
10705
10812
  isMinimapOpen,
10706
10813
  setIsMinimapOpen,
10814
+ showMinimap,
10815
+ showZoomLevel,
10816
+ fixedNodeSize,
10817
+ calibrateScreenPixels,
10818
+ screenPixelsRatio,
10819
+ dynamicViewBox,
10707
10820
  handleResetWorld,
10708
10821
  handleZoom,
10709
10822
  handleToggleFullscreen,
@@ -10751,7 +10864,8 @@ var StnTopologyGraphInternal = forwardRef39(
10751
10864
  showModeToggle && /* @__PURE__ */ jsx63(StnTopologyGraphModeToggle, {}),
10752
10865
  /* @__PURE__ */ jsx63(StnTopologyGraphViewport, {}),
10753
10866
  showToolbar && /* @__PURE__ */ jsx63(StnTopologyGraphToolbar, {}),
10754
- showMinimap && /* @__PURE__ */ jsx63(StnTopologyGraphMinimap, {})
10867
+ showMinimap && /* @__PURE__ */ jsx63(StnTopologyGraphMinimap, {}),
10868
+ showZoomLevel && /* @__PURE__ */ jsx63(StnTopologyGraphZoomLevel, {})
10755
10869
  ] }),
10756
10870
  tooltip.visible && /* @__PURE__ */ jsx63(
10757
10871
  "div",
@@ -10790,6 +10904,7 @@ StnTopologyGraph2.LinkGlyph = StnTopologyLinkGlyph;
10790
10904
  StnTopologyGraph2.ModeToggle = StnTopologyGraphModeToggle;
10791
10905
  StnTopologyGraph2.Toolbar = StnTopologyGraphToolbar;
10792
10906
  StnTopologyGraph2.Minimap = StnTopologyGraphMinimap;
10907
+ StnTopologyGraph2.ZoomLevel = StnTopologyGraphZoomLevel;
10793
10908
  StnTopologyGraph2.Viewport = StnTopologyGraphViewport;
10794
10909
  StnTopologyGraph2.displayName = "StnTopologyGraph";
10795
10910
 
@@ -11009,9 +11124,595 @@ var StnTopologyNodeContextMenu = forwardRef40(
11009
11124
  );
11010
11125
  StnTopologyNodeContextMenu.displayName = "StnTopologyNodeContextMenu";
11011
11126
 
11127
+ // src/components/topology/StnTopologyNodeDetailPopover.tsx
11128
+ import { forwardRef as forwardRef41 } from "react";
11129
+ import { jsx as jsx65, jsxs as jsxs52 } from "react/jsx-runtime";
11130
+ var DEFAULT_TUNNELS = [
11131
+ { id: "t1", source: "NODE-4", target: "NODE-3", count: 6, bandwidthText: "200M / 1G", utilization: 20 },
11132
+ { id: "t2", source: "NODE-2", target: "NODE-3", count: 0, bandwidthText: "200M / 1G", utilization: 20 },
11133
+ { id: "t3", source: "NODE-6", target: "NODE-3", count: 2, bandwidthText: "100M / 1G", utilization: 10 },
11134
+ { id: "t4", source: "NODE-7", target: "NODE-3", count: 3, bandwidthText: "100M / 1G", utilization: 10 }
11135
+ ];
11136
+ var StnTopologyNodeDetailPopover = forwardRef41(function StnTopologyNodeDetailPopover2({ target, onClose, onConnectDevice, data: propData, className, ...rest }, ref) {
11137
+ if (!target) return null;
11138
+ const { node, mouseX, mouseY, data: targetData } = target;
11139
+ const data = propData ?? targetData;
11140
+ const nodeLabel = node.label ?? String(node.id);
11141
+ const nodeIp = data?.ip ?? "1.1.1.2";
11142
+ const tunnels = data?.tunnels ?? DEFAULT_TUNNELS.map((t) => ({
11143
+ ...t,
11144
+ target: nodeLabel,
11145
+ source: t.source === nodeLabel ? "NODE-1" : t.source
11146
+ }));
11147
+ const syncStatus = data?.syncStatus ?? "failure";
11148
+ const syncStatusLabel = data?.syncStatusLabel ?? (syncStatus === "failure" ? "\uC2E4\uD328" : "\uC815\uC0C1");
11149
+ const syncLastTime = data?.syncLastTime ?? "2026-11-02 15:20";
11150
+ const syncMethod = data?.syncMethod ?? "\xB7 \uC790\uB3D9(\uC8FC\uAE30 \uC218\uC9D1)";
11151
+ const syncFailureReason = data?.syncFailureReason ?? "\uC7A5\uBE44\uAC00 SNMP \uC5D0 \uC751\uB2F5\uD558\uC9C0 \uC54A\uC74C";
11152
+ return /* @__PURE__ */ jsx65(
11153
+ StnPopover,
11154
+ {
11155
+ ref,
11156
+ open: Boolean(target),
11157
+ anchorReference: "anchorPosition",
11158
+ anchorPosition: { top: mouseY, left: mouseX },
11159
+ anchorOrigin: { vertical: "top", horizontal: "left" },
11160
+ transformOrigin: { vertical: "top", horizontal: "left" },
11161
+ onClose,
11162
+ hideBackdrop: false,
11163
+ paperClassName: "stn-topology-popover__paper",
11164
+ ...rest,
11165
+ children: /* @__PURE__ */ jsx65("div", { className: "stn-topology-popover__wrapper", children: /* @__PURE__ */ jsx65(StnCard, { variant: "floating", radius: "md", padding: "md", children: /* @__PURE__ */ jsxs52(StnStack, { direction: "column", spacing: 1.25, children: [
11166
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11167
+ /* @__PURE__ */ jsx65(StnText, { variant: "body-2", weight: "bold", children: "\uB178\uB4DC \uC815\uBCF4" }),
11168
+ /* @__PURE__ */ jsx65(
11169
+ StnButton,
11170
+ {
11171
+ variant: "ghost",
11172
+ size: "sm",
11173
+ shape: "square",
11174
+ title: "\uB2EB\uAE30",
11175
+ "aria-label": "\uB178\uB4DC \uC815\uBCF4 \uB2EB\uAE30",
11176
+ icon: /* @__PURE__ */ jsx65(StnIcon, { name: "line/x", size: 14 }),
11177
+ onClick: onClose
11178
+ }
11179
+ )
11180
+ ] }),
11181
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "column", spacing: 0.25, children: [
11182
+ /* @__PURE__ */ jsx65(StnText, { variant: "heading-3", weight: "bold", children: nodeLabel }),
11183
+ /* @__PURE__ */ jsx65(StnText, { variant: "caption", color: "secondary", children: nodeIp })
11184
+ ] }),
11185
+ /* @__PURE__ */ jsx65("div", { children: /* @__PURE__ */ jsx65(
11186
+ StnButton,
11187
+ {
11188
+ variant: "contained",
11189
+ color: "primary",
11190
+ size: "sm",
11191
+ onClick: () => onConnectDevice?.(node),
11192
+ children: "\uC7A5\uBE44 \uC811\uC18D"
11193
+ }
11194
+ ) }),
11195
+ /* @__PURE__ */ jsx65(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs52(StnStack, { direction: "column", spacing: 0.75, children: [
11196
+ /* @__PURE__ */ jsx65(StnText, { variant: "caption", color: "secondary", children: "\uC7A5\uBE44 \uB3D9\uAE30\uD654" }),
11197
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "row", spacing: 0.75, alignItems: "center", children: [
11198
+ /* @__PURE__ */ jsx65(
11199
+ StnBadge,
11200
+ {
11201
+ color: syncStatus === "failure" ? "critical" : "success",
11202
+ appearance: "subtle",
11203
+ badgeContent: syncStatusLabel
11204
+ }
11205
+ ),
11206
+ /* @__PURE__ */ jsxs52(StnText, { variant: "caption", color: "secondary", children: [
11207
+ "\uB9C8\uC9C0\uB9C9 \uB3D9\uAE30\uD654 ",
11208
+ syncLastTime
11209
+ ] })
11210
+ ] }),
11211
+ /* @__PURE__ */ jsx65(StnText, { variant: "caption", color: "secondary", children: syncMethod }),
11212
+ /* @__PURE__ */ jsx65(StnText, { variant: "caption", weight: "medium", children: syncFailureReason })
11213
+ ] }) }),
11214
+ /* @__PURE__ */ jsx65(StnDivider, {}),
11215
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11216
+ /* @__PURE__ */ jsx65(StnText, { variant: "body-3", weight: "bold", children: data?.tunnelSectionTitle ?? "\uC5F0\uACB0 \uAD6C\uAC04 \uD130\uB110 \uD604\uD669" }),
11217
+ /* @__PURE__ */ jsx65(StnText, { variant: "caption", color: "secondary", children: data?.tunnelSectionCountText ?? `${tunnels.length}\uAC1C \uAD6C\uAC04` })
11218
+ ] }),
11219
+ /* @__PURE__ */ jsx65(StnStack, { direction: "column", spacing: 0.75, children: tunnels.map((tunnel) => /* @__PURE__ */ jsx65(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs52(StnStack, { direction: "column", spacing: 0.5, children: [
11220
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11221
+ /* @__PURE__ */ jsxs52(StnText, { variant: "body-3", weight: "bold", children: [
11222
+ tunnel.source,
11223
+ " \u2192 ",
11224
+ tunnel.target
11225
+ ] }),
11226
+ /* @__PURE__ */ jsx65(
11227
+ StnBadge,
11228
+ {
11229
+ color: "primary",
11230
+ appearance: "subtle",
11231
+ showZero: true,
11232
+ badgeContent: `${tunnel.count}\uAC1C`
11233
+ }
11234
+ )
11235
+ ] }),
11236
+ /* @__PURE__ */ jsxs52(StnStack, { direction: "row", spacing: 0.75, alignItems: "center", children: [
11237
+ /* @__PURE__ */ jsx65(
11238
+ StnText,
11239
+ {
11240
+ variant: "caption",
11241
+ color: "secondary",
11242
+ className: "stn-topology-popover__nowrap",
11243
+ children: tunnel.bandwidthText ?? "0M / 0M"
11244
+ }
11245
+ ),
11246
+ /* @__PURE__ */ jsx65("div", { className: "stn-topology-popover__progress-wrap", children: /* @__PURE__ */ jsx65(
11247
+ StnProgressBar,
11248
+ {
11249
+ value: tunnel.utilization ?? 0,
11250
+ max: 100,
11251
+ size: "sm",
11252
+ tone: "success"
11253
+ }
11254
+ ) }),
11255
+ /* @__PURE__ */ jsx65(
11256
+ StnText,
11257
+ {
11258
+ variant: "caption",
11259
+ weight: "bold",
11260
+ className: "stn-topology-popover__nowrap",
11261
+ children: tunnel.utilization != null ? `${tunnel.utilization}%` : "-"
11262
+ }
11263
+ )
11264
+ ] })
11265
+ ] }) }, tunnel.id)) })
11266
+ ] }) }) })
11267
+ }
11268
+ );
11269
+ });
11270
+
11271
+ // src/components/topology/StnTopologyLinkDetailPopover.tsx
11272
+ import { forwardRef as forwardRef42 } from "react";
11273
+ import { jsx as jsx66, jsxs as jsxs53 } from "react/jsx-runtime";
11274
+ var DEFAULT_LSP_LIST = [
11275
+ { id: "1", name: "test1_NODE-1_TO_NODE-6", bandwidth: "100M" },
11276
+ { id: "2", name: "test1_NODE-5_TO_NODE-8", bandwidth: "100M" },
11277
+ { id: "3", name: "test1_NODE-6_TO_NODE-1", bandwidth: "0M" }
11278
+ ];
11279
+ var StnTopologyLinkDetailPopover = forwardRef42(function StnTopologyLinkDetailPopover2({ target, onClose, onOpenDetail, data: propData, className, ...rest }, ref) {
11280
+ if (!target) return null;
11281
+ const { link, mouseX, mouseY, data: targetData } = target;
11282
+ const data = propData ?? targetData;
11283
+ const sourceName = String(link.source);
11284
+ const targetName = String(link.target);
11285
+ const startTid = data?.startTid ?? sourceName;
11286
+ const endTid = data?.endTid ?? targetName;
11287
+ const lspCount = data?.lspCount ?? 6;
11288
+ const serviceCount = data?.serviceCount ?? 2;
11289
+ const forwardDirection = data?.forwardDirection ?? {
11290
+ from: sourceName,
11291
+ to: targetName,
11292
+ utilization: 20,
11293
+ bandwidthText: "200M / 1G"
11294
+ };
11295
+ const reverseDirection = data?.reverseDirection ?? {
11296
+ from: targetName,
11297
+ to: sourceName,
11298
+ utilization: 20,
11299
+ bandwidthText: "200M / 1G"
11300
+ };
11301
+ const startInterface = data?.startInterface ?? {
11302
+ port: "p1/3/1",
11303
+ ip: "10.1.1.9"
11304
+ };
11305
+ const endInterface = data?.endInterface ?? {
11306
+ port: "p1/1/1",
11307
+ ip: "10.1.1.10"
11308
+ };
11309
+ const lspList = data?.lspList ?? DEFAULT_LSP_LIST;
11310
+ return /* @__PURE__ */ jsx66(
11311
+ StnPopover,
11312
+ {
11313
+ ref,
11314
+ open: Boolean(target),
11315
+ anchorReference: "anchorPosition",
11316
+ anchorPosition: { top: mouseY, left: mouseX },
11317
+ anchorOrigin: { vertical: "top", horizontal: "left" },
11318
+ transformOrigin: { vertical: "top", horizontal: "left" },
11319
+ onClose,
11320
+ hideBackdrop: false,
11321
+ paperClassName: "stn-topology-popover__paper",
11322
+ ...rest,
11323
+ children: /* @__PURE__ */ jsx66("div", { className: "stn-topology-popover__wrapper", children: /* @__PURE__ */ jsx66(StnCard, { variant: "floating", radius: "md", padding: "md", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 1.25, children: [
11324
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11325
+ /* @__PURE__ */ jsx66(StnText, { variant: "body-2", weight: "bold", children: "\uAD6C\uAC04 \uC815\uBCF4" }),
11326
+ /* @__PURE__ */ jsx66(
11327
+ StnButton,
11328
+ {
11329
+ variant: "ghost",
11330
+ size: "sm",
11331
+ shape: "square",
11332
+ title: "\uB2EB\uAE30",
11333
+ "aria-label": "\uAD6C\uAC04 \uC815\uBCF4 \uB2EB\uAE30",
11334
+ icon: /* @__PURE__ */ jsx66(StnIcon, { name: "line/x", size: 14 }),
11335
+ onClick: onClose
11336
+ }
11337
+ )
11338
+ ] }),
11339
+ /* @__PURE__ */ jsx66(StnCard, { variant: "flat", radius: "sm", padding: "sm", className: "stn-topology-popover__route-card", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "row", justifyContent: "space-between", children: [
11340
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11341
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: "START_TID" }),
11342
+ /* @__PURE__ */ jsx66(StnText, { variant: "body-3", weight: "bold", children: startTid }),
11343
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: startTid })
11344
+ ] }),
11345
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11346
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: "END_TID" }),
11347
+ /* @__PURE__ */ jsx66(StnText, { variant: "body-3", weight: "bold", children: endTid }),
11348
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: endTid })
11349
+ ] })
11350
+ ] }) }),
11351
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.75, children: [
11352
+ /* @__PURE__ */ jsxs53("div", { className: "stn-topology-popover__stat-grid", children: [
11353
+ /* @__PURE__ */ jsx66(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11354
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: "LSP \uC218" }),
11355
+ /* @__PURE__ */ jsxs53(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: [
11356
+ lspCount,
11357
+ "\uAC1C"
11358
+ ] })
11359
+ ] }) }),
11360
+ /* @__PURE__ */ jsx66(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11361
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", children: "\uC11C\uBE44\uC2A4 \uC218" }),
11362
+ /* @__PURE__ */ jsxs53(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: [
11363
+ serviceCount,
11364
+ "\uAC1C"
11365
+ ] })
11366
+ ] }) })
11367
+ ] }),
11368
+ /* @__PURE__ */ jsxs53("div", { className: "stn-topology-popover__stat-grid", children: [
11369
+ /* @__PURE__ */ jsx66(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11370
+ /* @__PURE__ */ jsxs53(StnText, { variant: "caption", color: "secondary", className: "stn-topology-popover__nowrap", children: [
11371
+ forwardDirection.from,
11372
+ " \u2192 ",
11373
+ forwardDirection.to
11374
+ ] }),
11375
+ /* @__PURE__ */ jsxs53(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: [
11376
+ forwardDirection.utilization,
11377
+ "%"
11378
+ ] }),
11379
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: forwardDirection.bandwidthText })
11380
+ ] }) }),
11381
+ /* @__PURE__ */ jsx66(StnCard, { variant: "flat", radius: "sm", padding: "sm", children: /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11382
+ /* @__PURE__ */ jsxs53(StnText, { variant: "caption", color: "secondary", className: "stn-topology-popover__nowrap", children: [
11383
+ reverseDirection.from,
11384
+ " \u2192 ",
11385
+ reverseDirection.to
11386
+ ] }),
11387
+ /* @__PURE__ */ jsxs53(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: [
11388
+ reverseDirection.utilization,
11389
+ "%"
11390
+ ] }),
11391
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: reverseDirection.bandwidthText })
11392
+ ] }) })
11393
+ ] })
11394
+ ] }),
11395
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.75, children: [
11396
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11397
+ /* @__PURE__ */ jsxs53(StnText, { variant: "caption", color: "secondary", children: [
11398
+ sourceName,
11399
+ " \uC778\uD130\uD398\uC774\uC2A4"
11400
+ ] }),
11401
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", weight: "medium", className: "stn-text-numeric", children: startInterface.port }),
11402
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: startInterface.ip })
11403
+ ] }),
11404
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11405
+ /* @__PURE__ */ jsxs53(StnText, { variant: "caption", color: "secondary", children: [
11406
+ targetName,
11407
+ " \uC778\uD130\uD398\uC774\uC2A4"
11408
+ ] }),
11409
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", weight: "medium", className: "stn-text-numeric", children: endInterface.port }),
11410
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: endInterface.ip })
11411
+ ] })
11412
+ ] }),
11413
+ /* @__PURE__ */ jsx66(StnDivider, {}),
11414
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.5, children: [
11415
+ /* @__PURE__ */ jsx66(StnText, { variant: "body-3", weight: "bold", children: data?.totalLspCountText ?? `LSP \uBAA9\uB85D (${lspCount}\uAC1C)` }),
11416
+ /* @__PURE__ */ jsxs53(StnStack, { direction: "column", spacing: 0.25, children: [
11417
+ lspList.map((item) => /* @__PURE__ */ jsxs53(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11418
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", className: "stn-topology-popover__ellipsis-text", children: item.name }),
11419
+ /* @__PURE__ */ jsx66(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: item.bandwidth })
11420
+ ] }, item.id)),
11421
+ /* @__PURE__ */ jsxs53(StnText, { variant: "caption", color: "secondary", children: [
11422
+ "\uC678 ",
11423
+ Math.max(0, lspCount - lspList.length),
11424
+ "\uAC74\u2026"
11425
+ ] })
11426
+ ] })
11427
+ ] }),
11428
+ /* @__PURE__ */ jsx66(
11429
+ StnButton,
11430
+ {
11431
+ variant: "contained",
11432
+ color: "primary",
11433
+ size: "sm",
11434
+ onClick: () => {
11435
+ onClose();
11436
+ onOpenDetail?.(link);
11437
+ },
11438
+ children: "\uC0C1\uC138\uBCF4\uAE30"
11439
+ }
11440
+ )
11441
+ ] }) }) })
11442
+ }
11443
+ );
11444
+ });
11445
+
11446
+ // src/components/topology/StnTopologyLinkDetailModal.tsx
11447
+ import { useState as useState19, useMemo as useMemo5, forwardRef as forwardRef43 } from "react";
11448
+ import { jsx as jsx67, jsxs as jsxs54 } from "react/jsx-runtime";
11449
+ var DEFAULT_FORWARD_LSPS = [
11450
+ {
11451
+ id: "f1",
11452
+ lspName: "test1_NODE-5_TO_NODE-8",
11453
+ aDevice: "NODE-5",
11454
+ zDevice: "NODE-8",
11455
+ bandwidth: "100M",
11456
+ utilization: "10%",
11457
+ status: "Up"
11458
+ },
11459
+ {
11460
+ id: "f2",
11461
+ lspName: "test1_NODE-6_TO_NODE-1",
11462
+ aDevice: "NODE-6",
11463
+ zDevice: "NODE-1",
11464
+ bandwidth: "0M",
11465
+ utilization: "0%",
11466
+ status: "Up"
11467
+ },
11468
+ {
11469
+ id: "f3",
11470
+ lspName: "test1_NODE-7_TO_NODE-8",
11471
+ aDevice: "NODE-7",
11472
+ zDevice: "NODE-8",
11473
+ bandwidth: "0M",
11474
+ utilization: "0%",
11475
+ status: "Up"
11476
+ },
11477
+ {
11478
+ id: "f4",
11479
+ lspName: "test5_NODE-3_TO_NODE-1",
11480
+ aDevice: "NODE-3",
11481
+ zDevice: "NODE-1",
11482
+ bandwidth: "0M",
11483
+ utilization: "0%",
11484
+ status: "Up"
11485
+ }
11486
+ ];
11487
+ var DEFAULT_REVERSE_LSPS = [
11488
+ {
11489
+ id: "r1",
11490
+ lspName: "test1_NODE-1_TO_NODE-6",
11491
+ aDevice: "NODE-1",
11492
+ zDevice: "NODE-6",
11493
+ bandwidth: "100M",
11494
+ utilization: "10%",
11495
+ status: "Up"
11496
+ },
11497
+ {
11498
+ id: "r2",
11499
+ lspName: "test1_NODE-8_TO_NODE-7",
11500
+ aDevice: "NODE-8",
11501
+ zDevice: "NODE-7",
11502
+ bandwidth: "100M",
11503
+ utilization: "10%",
11504
+ status: "Up"
11505
+ }
11506
+ ];
11507
+ var INITIAL_COLUMNS = [
11508
+ { key: "lspName", label: "LSP\uBA85", width: 260 },
11509
+ { key: "aDevice", label: "A \uC7A5\uBE44", width: 120 },
11510
+ { key: "zDevice", label: "Z \uC7A5\uBE44", width: 120 },
11511
+ { key: "bandwidth", label: "\uB300\uC5ED\uD3ED", width: 100 },
11512
+ { key: "utilization", label: "\uAD6C\uAC04 \uC810\uC720\uC728", width: 110 },
11513
+ { key: "status", label: "\uC0C1\uD0DC", width: 80 }
11514
+ ];
11515
+ var StnTopologyLinkDetailModal = forwardRef43(function StnTopologyLinkDetailModal2({ open, link, onClose, onExportExcel, exportExcelIcon = "download", ...rest }, ref) {
11516
+ const [tab, setTab] = useState19("lsp");
11517
+ const [cols1] = useState19(INITIAL_COLUMNS);
11518
+ const [cols2] = useState19(INITIAL_COLUMNS);
11519
+ const [sortKey1, setSortKey1] = useState19("lspName");
11520
+ const [sortOrder1, setSortOrder1] = useState19("none");
11521
+ const [sortKey2, setSortKey2] = useState19("lspName");
11522
+ const [sortOrder2, setSortOrder2] = useState19("none");
11523
+ const sourceName = link ? String(link.source) : "NODE-3";
11524
+ const targetName = link ? String(link.target) : "NODE-4";
11525
+ const handleToggleSort1 = (key) => {
11526
+ if (sortKey1 !== key) {
11527
+ setSortKey1(key);
11528
+ setSortOrder1("ascending");
11529
+ } else if (sortOrder1 === "ascending") {
11530
+ setSortOrder1("descending");
11531
+ } else {
11532
+ setSortOrder1("none");
11533
+ }
11534
+ };
11535
+ const handleToggleSort2 = (key) => {
11536
+ if (sortKey2 !== key) {
11537
+ setSortKey2(key);
11538
+ setSortOrder2("ascending");
11539
+ } else if (sortOrder2 === "ascending") {
11540
+ setSortOrder2("descending");
11541
+ } else {
11542
+ setSortOrder2("none");
11543
+ }
11544
+ };
11545
+ const sortedForwardLsps = useMemo5(() => {
11546
+ if (sortOrder1 === "none") return DEFAULT_FORWARD_LSPS;
11547
+ return [...DEFAULT_FORWARD_LSPS].sort((a, b) => {
11548
+ const factor = sortOrder1 === "ascending" ? 1 : -1;
11549
+ return String(a[sortKey1]) > String(b[sortKey1]) ? factor : -factor;
11550
+ });
11551
+ }, [sortKey1, sortOrder1]);
11552
+ const sortedReverseLsps = useMemo5(() => {
11553
+ if (sortOrder2 === "none") return DEFAULT_REVERSE_LSPS;
11554
+ return [...DEFAULT_REVERSE_LSPS].sort((a, b) => {
11555
+ const factor = sortOrder2 === "ascending" ? 1 : -1;
11556
+ return String(a[sortKey2]) > String(b[sortKey2]) ? factor : -factor;
11557
+ });
11558
+ }, [sortKey2, sortOrder2]);
11559
+ return /* @__PURE__ */ jsx67(
11560
+ StnModal,
11561
+ {
11562
+ ref,
11563
+ open,
11564
+ onClose,
11565
+ title: "\uAD6C\uAC04 \uC0C1\uC138",
11566
+ size: "lg",
11567
+ actionAlign: "center",
11568
+ actions: /* @__PURE__ */ jsxs54(StnStack, { direction: "row", spacing: 1, justifyContent: "center", alignItems: "center", children: [
11569
+ /* @__PURE__ */ jsx67(
11570
+ StnButton,
11571
+ {
11572
+ variant: "contained",
11573
+ color: "primary",
11574
+ size: "md",
11575
+ icon: /* @__PURE__ */ jsx67(
11576
+ StnIcon,
11577
+ {
11578
+ name: exportExcelIcon === "file-excel" ? "line/file-excel" : "line/download",
11579
+ size: 16
11580
+ }
11581
+ ),
11582
+ onClick: () => onExportExcel?.(),
11583
+ children: "\uC5D1\uC140 \uB2E4\uC6B4\uB85C\uB4DC"
11584
+ }
11585
+ ),
11586
+ /* @__PURE__ */ jsx67(
11587
+ StnButton,
11588
+ {
11589
+ variant: "outlined",
11590
+ size: "md",
11591
+ onClick: onClose,
11592
+ children: "\uB2EB\uAE30"
11593
+ }
11594
+ )
11595
+ ] }),
11596
+ ...rest,
11597
+ children: /* @__PURE__ */ jsxs54(StnStack, { direction: "column", spacing: 1.5, children: [
11598
+ /* @__PURE__ */ jsx67(StnCard, { variant: "flat", radius: "md", padding: "md", children: /* @__PURE__ */ jsxs54(StnStack, { direction: "column", spacing: 0.75, children: [
11599
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11600
+ /* @__PURE__ */ jsxs54(StnText, { variant: "body-2", weight: "bold", children: [
11601
+ sourceName,
11602
+ " \u2192 ",
11603
+ targetName
11604
+ ] }),
11605
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "row", spacing: 0.5, alignItems: "center", children: [
11606
+ /* @__PURE__ */ jsx67(StnText, { variant: "caption", color: "secondary", children: "\uD604\uC7AC" }),
11607
+ /* @__PURE__ */ jsx67(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: "20%" }),
11608
+ /* @__PURE__ */ jsx67(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: "200M / 1G" })
11609
+ ] })
11610
+ ] }),
11611
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "row", justifyContent: "space-between", alignItems: "center", children: [
11612
+ /* @__PURE__ */ jsxs54(StnText, { variant: "body-2", weight: "bold", children: [
11613
+ targetName,
11614
+ " \u2192 ",
11615
+ sourceName
11616
+ ] }),
11617
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "row", spacing: 0.5, alignItems: "center", children: [
11618
+ /* @__PURE__ */ jsx67(StnText, { variant: "caption", color: "secondary", children: "\uD604\uC7AC" }),
11619
+ /* @__PURE__ */ jsx67(StnText, { variant: "body-2", weight: "bold", className: "stn-text-numeric", children: "20%" }),
11620
+ /* @__PURE__ */ jsx67(StnText, { variant: "caption", color: "secondary", className: "stn-text-numeric", children: "200M / 1G" })
11621
+ ] })
11622
+ ] })
11623
+ ] }) }),
11624
+ /* @__PURE__ */ jsx67("div", { children: /* @__PURE__ */ jsx67(
11625
+ StnSegmented,
11626
+ {
11627
+ size: "sm",
11628
+ value: tab,
11629
+ onChange: (val) => setTab(val),
11630
+ options: [
11631
+ { value: "lsp", label: "LSP (6\uAC74)" },
11632
+ { value: "service", label: "\uC11C\uBE44\uC2A4 (2\uAC74)" }
11633
+ ]
11634
+ }
11635
+ ) }),
11636
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "column", spacing: 0.75, children: [
11637
+ /* @__PURE__ */ jsxs54(StnText, { variant: "body-2", weight: "bold", children: [
11638
+ sourceName,
11639
+ " \u2192 ",
11640
+ targetName,
11641
+ " (",
11642
+ sortedForwardLsps.length,
11643
+ "\uAC74)"
11644
+ ] }),
11645
+ /* @__PURE__ */ jsx67(StnTable, { resizable: true, children: /* @__PURE__ */ jsxs54(StnTable.Grid, { children: [
11646
+ /* @__PURE__ */ jsx67("colgroup", { children: cols1.map((c) => /* @__PURE__ */ jsx67("col", { style: { width: c.width } }, c.key)) }),
11647
+ /* @__PURE__ */ jsx67(StnTable.Head, { children: /* @__PURE__ */ jsx67(StnTable.Row, { children: cols1.map((col) => /* @__PURE__ */ jsx67(StnTable.Th, { name: col.key, children: /* @__PURE__ */ jsx67(
11648
+ StnTable.Sort,
11649
+ {
11650
+ label: col.label,
11651
+ sort: sortKey1 === col.key ? sortOrder1 : "none",
11652
+ onClick: () => handleToggleSort1(col.key)
11653
+ }
11654
+ ) }, col.key)) }) }),
11655
+ /* @__PURE__ */ jsx67(StnTable.Body, { children: sortedForwardLsps.map((row) => /* @__PURE__ */ jsxs54(StnTable.Row, { children: [
11656
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: /* @__PURE__ */ jsx67(StnText, { variant: "body-3", weight: "medium", children: row.lspName }) }),
11657
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: row.aDevice }),
11658
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: row.zDevice }),
11659
+ /* @__PURE__ */ jsx67(StnTable.Td, { className: "stn-text-numeric", children: row.bandwidth }),
11660
+ /* @__PURE__ */ jsx67(StnTable.Td, { className: "stn-text-numeric", children: row.utilization }),
11661
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: /* @__PURE__ */ jsx67(
11662
+ StnBadge,
11663
+ {
11664
+ color: row.status === "Up" ? "success" : "critical",
11665
+ appearance: "subtle",
11666
+ badgeContent: row.status
11667
+ }
11668
+ ) })
11669
+ ] }, row.id)) })
11670
+ ] }) })
11671
+ ] }),
11672
+ /* @__PURE__ */ jsxs54(StnStack, { direction: "column", spacing: 0.75, children: [
11673
+ /* @__PURE__ */ jsxs54(StnText, { variant: "body-2", weight: "bold", children: [
11674
+ targetName,
11675
+ " \u2192 ",
11676
+ sourceName,
11677
+ " (",
11678
+ sortedReverseLsps.length,
11679
+ "\uAC74)"
11680
+ ] }),
11681
+ /* @__PURE__ */ jsx67(StnTable, { resizable: true, children: /* @__PURE__ */ jsxs54(StnTable.Grid, { children: [
11682
+ /* @__PURE__ */ jsx67("colgroup", { children: cols2.map((c) => /* @__PURE__ */ jsx67("col", { style: { width: c.width } }, c.key)) }),
11683
+ /* @__PURE__ */ jsx67(StnTable.Head, { children: /* @__PURE__ */ jsx67(StnTable.Row, { children: cols2.map((col) => /* @__PURE__ */ jsx67(StnTable.Th, { name: col.key, children: /* @__PURE__ */ jsx67(
11684
+ StnTable.Sort,
11685
+ {
11686
+ label: col.label,
11687
+ sort: sortKey2 === col.key ? sortOrder2 : "none",
11688
+ onClick: () => handleToggleSort2(col.key)
11689
+ }
11690
+ ) }, col.key)) }) }),
11691
+ /* @__PURE__ */ jsx67(StnTable.Body, { children: sortedReverseLsps.map((row) => /* @__PURE__ */ jsxs54(StnTable.Row, { children: [
11692
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: /* @__PURE__ */ jsx67(StnText, { variant: "body-3", weight: "medium", children: row.lspName }) }),
11693
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: row.aDevice }),
11694
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: row.zDevice }),
11695
+ /* @__PURE__ */ jsx67(StnTable.Td, { className: "stn-text-numeric", children: row.bandwidth }),
11696
+ /* @__PURE__ */ jsx67(StnTable.Td, { className: "stn-text-numeric", children: row.utilization }),
11697
+ /* @__PURE__ */ jsx67(StnTable.Td, { children: /* @__PURE__ */ jsx67(
11698
+ StnBadge,
11699
+ {
11700
+ color: row.status === "Up" ? "success" : "critical",
11701
+ appearance: "subtle",
11702
+ badgeContent: row.status
11703
+ }
11704
+ ) })
11705
+ ] }, row.id)) })
11706
+ ] }) })
11707
+ ] })
11708
+ ] })
11709
+ }
11710
+ );
11711
+ });
11712
+
11012
11713
  // src/patterns/widget/StnGradeRow.tsx
11013
11714
  import "react";
11014
- import { jsx as jsx65, jsxs as jsxs52 } from "react/jsx-runtime";
11715
+ import { jsx as jsx68, jsxs as jsxs55 } from "react/jsx-runtime";
11015
11716
  var GRADE_ROW_ICON = {
11016
11717
  critical: "fill/alert4",
11017
11718
  major: "fill/alert3",
@@ -11037,7 +11738,7 @@ function StnGradeRow({
11037
11738
  }) {
11038
11739
  const clamped = Math.max(0, Math.min(100, percent));
11039
11740
  const resolvedPercentLabel = percentLabel ?? formatGradePercent(clamped, decimals);
11040
- return /* @__PURE__ */ jsxs52(
11741
+ return /* @__PURE__ */ jsxs55(
11041
11742
  "div",
11042
11743
  {
11043
11744
  className: cn(
@@ -11047,41 +11748,41 @@ function StnGradeRow({
11047
11748
  ),
11048
11749
  ...rest,
11049
11750
  children: [
11050
- /* @__PURE__ */ jsxs52("div", { className: "stn-grade-row__left", children: [
11051
- /* @__PURE__ */ jsxs52("span", { className: "stn-grade-row__label", children: [
11052
- /* @__PURE__ */ jsx65(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-grade-row__icon", "aria-hidden": true }),
11751
+ /* @__PURE__ */ jsxs55("div", { className: "stn-grade-row__left", children: [
11752
+ /* @__PURE__ */ jsxs55("span", { className: "stn-grade-row__label", children: [
11753
+ /* @__PURE__ */ jsx68(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-grade-row__icon", "aria-hidden": true }),
11053
11754
  label
11054
11755
  ] }),
11055
- /* @__PURE__ */ jsx65("div", { className: "stn-grade-row__track", "aria-hidden": true, children: /* @__PURE__ */ jsx65("span", { className: "stn-grade-row__fill", style: { width: `${clamped}%` } }) })
11756
+ /* @__PURE__ */ jsx68("div", { className: "stn-grade-row__track", "aria-hidden": true, children: /* @__PURE__ */ jsx68("span", { className: "stn-grade-row__fill", style: { width: `${clamped}%` } }) })
11056
11757
  ] }),
11057
- /* @__PURE__ */ jsxs52("div", { className: "stn-grade-row__right", children: [
11058
- /* @__PURE__ */ jsx65("span", { className: "stn-grade-row__value", children: value }),
11059
- /* @__PURE__ */ jsx65("span", { className: "stn-grade-row__percent", children: resolvedPercentLabel })
11758
+ /* @__PURE__ */ jsxs55("div", { className: "stn-grade-row__right", children: [
11759
+ /* @__PURE__ */ jsx68("span", { className: "stn-grade-row__value", children: value }),
11760
+ /* @__PURE__ */ jsx68("span", { className: "stn-grade-row__percent", children: resolvedPercentLabel })
11060
11761
  ] })
11061
11762
  ]
11062
11763
  }
11063
11764
  );
11064
11765
  }
11065
11766
  function StnGradeRowList({ className, children, ...rest }) {
11066
- return /* @__PURE__ */ jsx65("div", { className: cn("stn-grade-row-list", className), ...rest, children });
11767
+ return /* @__PURE__ */ jsx68("div", { className: cn("stn-grade-row-list", className), ...rest, children });
11067
11768
  }
11068
11769
 
11069
11770
  // src/patterns/widget/StnStatCard.tsx
11070
11771
  import "react";
11071
- import { jsx as jsx66, jsxs as jsxs53 } from "react/jsx-runtime";
11772
+ import { jsx as jsx69, jsxs as jsxs56 } from "react/jsx-runtime";
11072
11773
  function StnStatCard({ label, count, className, ...rest }) {
11073
- return /* @__PURE__ */ jsxs53("div", { className: cn("stn-stat-card", className), ...rest, children: [
11074
- /* @__PURE__ */ jsx66("span", { className: "stn-stat-label", children: label }),
11075
- /* @__PURE__ */ jsx66("span", { className: "stn-stat-count", children: count })
11774
+ return /* @__PURE__ */ jsxs56("div", { className: cn("stn-stat-card", className), ...rest, children: [
11775
+ /* @__PURE__ */ jsx69("span", { className: "stn-stat-label", children: label }),
11776
+ /* @__PURE__ */ jsx69("span", { className: "stn-stat-count", children: count })
11076
11777
  ] });
11077
11778
  }
11078
11779
  function StnStatGroup({ className, children, ...rest }) {
11079
- return /* @__PURE__ */ jsx66("div", { className: cn("stn-stat-group", className), ...rest, children });
11780
+ return /* @__PURE__ */ jsx69("div", { className: cn("stn-stat-group", className), ...rest, children });
11080
11781
  }
11081
11782
 
11082
11783
  // src/patterns/widget/StnStatusList.tsx
11083
11784
  import "react";
11084
- import { jsx as jsx67, jsxs as jsxs54 } from "react/jsx-runtime";
11785
+ import { jsx as jsx70, jsxs as jsxs57 } from "react/jsx-runtime";
11085
11786
  function StnStatusItem({
11086
11787
  label,
11087
11788
  value,
@@ -11092,9 +11793,9 @@ function StnStatusItem({
11092
11793
  ...rest
11093
11794
  }) {
11094
11795
  const grade = gradeProp ?? (status === "warning" ? "minor" : status) ?? "normal";
11095
- return /* @__PURE__ */ jsxs54("div", { className: cn("stn-status-item", className), ...rest, children: [
11096
- /* @__PURE__ */ jsxs54("span", { className: "stn-status-item__label", children: [
11097
- showDot ? /* @__PURE__ */ jsx67(
11796
+ return /* @__PURE__ */ jsxs57("div", { className: cn("stn-status-item", className), ...rest, children: [
11797
+ /* @__PURE__ */ jsxs57("span", { className: "stn-status-item__label", children: [
11798
+ showDot ? /* @__PURE__ */ jsx70(
11098
11799
  "span",
11099
11800
  {
11100
11801
  className: cn("stn-status-item__dot", `stn-status-item__dot--${grade}`),
@@ -11103,15 +11804,15 @@ function StnStatusItem({
11103
11804
  ) : null,
11104
11805
  label
11105
11806
  ] }),
11106
- /* @__PURE__ */ jsx67("span", { className: "stn-status-item__val", children: value })
11807
+ /* @__PURE__ */ jsx70("span", { className: "stn-status-item__val", children: value })
11107
11808
  ] });
11108
11809
  }
11109
11810
  function StnStatusList({ className, children, ...rest }) {
11110
- return /* @__PURE__ */ jsx67("div", { className: cn("stn-status-list", className), ...rest, children });
11811
+ return /* @__PURE__ */ jsx70("div", { className: cn("stn-status-list", className), ...rest, children });
11111
11812
  }
11112
11813
 
11113
11814
  // src/components/StnWidget.tsx
11114
- import { Fragment as Fragment11, jsx as jsx68, jsxs as jsxs55 } from "react/jsx-runtime";
11815
+ import { Fragment as Fragment11, jsx as jsx71, jsxs as jsxs58 } from "react/jsx-runtime";
11115
11816
  var SHELL_PUB_CLASS = {
11116
11817
  card: "",
11117
11818
  "fault-panel": "",
@@ -11194,20 +11895,20 @@ function StnWidgetPeriodText({
11194
11895
  className,
11195
11896
  ...rest
11196
11897
  }) {
11197
- return /* @__PURE__ */ jsx68("span", { className: cn("stn-widget__period-text", className), ...rest, children });
11898
+ return /* @__PURE__ */ jsx71("span", { className: cn("stn-widget__period-text", className), ...rest, children });
11198
11899
  }
11199
11900
  function StnWidgetPeriodSelect({
11200
11901
  label,
11201
11902
  className,
11202
11903
  ...rest
11203
11904
  }) {
11204
- return /* @__PURE__ */ jsx68(
11905
+ return /* @__PURE__ */ jsx71(
11205
11906
  StnButton,
11206
11907
  {
11207
11908
  variant: "ghost",
11208
11909
  size: "sm",
11209
11910
  shape: "square",
11210
- icon: /* @__PURE__ */ jsx68(StnIcon, { name: "line/chevron-down" }),
11911
+ icon: /* @__PURE__ */ jsx71(StnIcon, { name: "line/chevron-down" }),
11211
11912
  iconPosition: "right",
11212
11913
  className,
11213
11914
  ...rest,
@@ -11224,26 +11925,26 @@ function StnWidgetPeriodPager({
11224
11925
  nextLabel = "\uB2E4\uC74C",
11225
11926
  ...rest
11226
11927
  }) {
11227
- return /* @__PURE__ */ jsxs55("div", { className: cn("stn-widget__period-pager", className), ...rest, children: [
11228
- /* @__PURE__ */ jsx68(
11928
+ return /* @__PURE__ */ jsxs58("div", { className: cn("stn-widget__period-pager", className), ...rest, children: [
11929
+ /* @__PURE__ */ jsx71(
11229
11930
  StnButton,
11230
11931
  {
11231
11932
  variant: "ghost",
11232
11933
  size: "sm",
11233
11934
  shape: "square",
11234
- icon: /* @__PURE__ */ jsx68(StnIcon, { name: "line/arrow-narrow-left" }),
11935
+ icon: /* @__PURE__ */ jsx71(StnIcon, { name: "line/arrow-narrow-left" }),
11235
11936
  onClick: onPrev,
11236
11937
  "aria-label": prevLabel
11237
11938
  }
11238
11939
  ),
11239
- /* @__PURE__ */ jsx68("span", { className: "stn-widget__period-pager-label", children: label }),
11240
- /* @__PURE__ */ jsx68(
11940
+ /* @__PURE__ */ jsx71("span", { className: "stn-widget__period-pager-label", children: label }),
11941
+ /* @__PURE__ */ jsx71(
11241
11942
  StnButton,
11242
11943
  {
11243
11944
  variant: "ghost",
11244
11945
  size: "sm",
11245
11946
  shape: "square",
11246
- icon: /* @__PURE__ */ jsx68(StnIcon, { name: "line/arrow-narrow-right" }),
11947
+ icon: /* @__PURE__ */ jsx71(StnIcon, { name: "line/arrow-narrow-right" }),
11247
11948
  onClick: onNext,
11248
11949
  "aria-label": nextLabel
11249
11950
  }
@@ -11270,18 +11971,18 @@ function StnWidgetHeaderInner({
11270
11971
  return null;
11271
11972
  }
11272
11973
  const resolvedIconName = headerIconName ?? defaultHeaderIconName(appearance);
11273
- return /* @__PURE__ */ jsxs55("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
11274
- /* @__PURE__ */ jsxs55("div", { className: "stn-widget__head-start", children: [
11275
- showHeaderIcon ? headerIcon != null ? /* @__PURE__ */ jsx68(StnWidgetInsetIcon, { size: "sm", children: headerIcon }) : resolvedIconName ? /* @__PURE__ */ jsx68(StnWidgetInsetIcon, { size: "sm", icon: resolvedIconName }) : null : null,
11276
- title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */ jsxs55("div", { className: "stn-widget__title-wrap", children: [
11277
- typeof title === "string" ? /* @__PURE__ */ jsx68("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : null,
11974
+ return /* @__PURE__ */ jsxs58("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
11975
+ /* @__PURE__ */ jsxs58("div", { className: "stn-widget__head-start", children: [
11976
+ showHeaderIcon ? headerIcon != null ? /* @__PURE__ */ jsx71(StnWidgetInsetIcon, { size: "sm", children: headerIcon }) : resolvedIconName ? /* @__PURE__ */ jsx71(StnWidgetInsetIcon, { size: "sm", icon: resolvedIconName }) : null : null,
11977
+ title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */ jsxs58("div", { className: "stn-widget__title-wrap", children: [
11978
+ typeof title === "string" ? /* @__PURE__ */ jsx71("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : null,
11278
11979
  badge
11279
- ] }) : /* @__PURE__ */ jsxs55(Fragment11, { children: [
11980
+ ] }) : /* @__PURE__ */ jsxs58(Fragment11, { children: [
11280
11981
  title,
11281
11982
  badge
11282
11983
  ] }) : null
11283
11984
  ] }),
11284
- titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx68("div", { className: "stn-widget__head-end", children: titleActions ?? (periodActions != null ? periodActions : periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx68(StnWidgetPeriodText, { children: periodLabel }) : null) }) : null
11985
+ titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx71("div", { className: "stn-widget__head-end", children: titleActions ?? (periodActions != null ? periodActions : periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx71(StnWidgetPeriodText, { children: periodLabel }) : null) }) : null
11285
11986
  ] });
11286
11987
  }
11287
11988
  function StnWidgetRoot({
@@ -11364,10 +12065,10 @@ function StnWidgetRoot({
11364
12065
  ...rest
11365
12066
  };
11366
12067
  const slots = partitionWidgetChildren(children);
11367
- const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */ jsxs55("div", { className: "app_bar", children: [
11368
- /* @__PURE__ */ jsx68("div", { className: "fault_title_box", children: typeof title === "string" ? /* @__PURE__ */ jsx68("span", { children: title }) : title }),
12068
+ const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */ jsxs58("div", { className: "app_bar", children: [
12069
+ /* @__PURE__ */ jsx71("div", { className: "fault_title_box", children: typeof title === "string" ? /* @__PURE__ */ jsx71("span", { children: title }) : title }),
11369
12070
  titleActions
11370
- ] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */ jsx68("div", { className: "stn-widget__head", children: typeof title === "string" ? /* @__PURE__ */ jsx68("p", { children: title }) : title }) : null : isFigmaShell ? /* @__PURE__ */ jsx68(
12071
+ ] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */ jsx71("div", { className: "stn-widget__head", children: typeof title === "string" ? /* @__PURE__ */ jsx71("p", { children: title }) : title }) : null : isFigmaShell ? /* @__PURE__ */ jsx71(
11371
12072
  StnWidgetHeaderInner,
11372
12073
  {
11373
12074
  appearance,
@@ -11383,40 +12084,40 @@ function StnWidgetRoot({
11383
12084
  headerIcon,
11384
12085
  wrapActions
11385
12086
  }
11386
- ) : title != null || badge != null || titleActions ? /* @__PURE__ */ jsxs55("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
11387
- /* @__PURE__ */ jsxs55("div", { className: "stn-widget__head-start", children: [
11388
- title != null ? typeof title === "string" ? /* @__PURE__ */ jsx68("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : title : null,
12087
+ ) : title != null || badge != null || titleActions ? /* @__PURE__ */ jsxs58("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
12088
+ /* @__PURE__ */ jsxs58("div", { className: "stn-widget__head-start", children: [
12089
+ title != null ? typeof title === "string" ? /* @__PURE__ */ jsx71("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : title : null,
11389
12090
  badge
11390
12091
  ] }),
11391
- titleActions ? /* @__PURE__ */ jsx68("div", { className: "stn-widget__head-end", children: titleActions }) : null
12092
+ titleActions ? /* @__PURE__ */ jsx71("div", { className: "stn-widget__head-end", children: titleActions }) : null
11392
12093
  ] }) : null;
11393
12094
  const head = slots.headers.length > 0 ? slots.headers : propHead;
11394
12095
  const autoBodyClass = shell === "fault-panel" && !isFigmaShell ? "table_area" : void 0;
11395
12096
  let body;
11396
12097
  if (loading) {
11397
- body = /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__body", autoBodyClass, contentClassName), children: /* @__PURE__ */ jsx68(StnWidgetLoading, {}) });
12098
+ body = /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__body", autoBodyClass, contentClassName), children: /* @__PURE__ */ jsx71(StnWidgetLoading, {}) });
11398
12099
  } else if (slots.bodies.length > 0) {
11399
12100
  body = slots.bodies.map(
11400
12101
  (slot, index) => mergeBodySlot(slot, index === 0 ? slots.rest : [], contentClassName, isEmptyState, emptyStyle)
11401
12102
  );
11402
12103
  } else {
11403
- body = /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__body", autoBodyClass, isEmptyState && "empty", contentClassName), style: emptyStyle, children: slots.rest });
12104
+ body = /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__body", autoBodyClass, isEmptyState && "empty", contentClassName), style: emptyStyle, children: slots.rest });
11404
12105
  }
11405
- const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */ jsx68("div", { className: "stn-widget__footer", children: footer }) : null;
11406
- const card = /* @__PURE__ */ jsxs55("div", { ...rootProps, children: [
11407
- isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */ jsx68("div", { className: "stn-widget__map-deco", "aria-hidden": true }) : null,
12106
+ const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */ jsx71("div", { className: "stn-widget__footer", children: footer }) : null;
12107
+ const card = /* @__PURE__ */ jsxs58("div", { ...rootProps, children: [
12108
+ isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */ jsx71("div", { className: "stn-widget__map-deco", "aria-hidden": true }) : null,
11408
12109
  head,
11409
12110
  body,
11410
12111
  footerNode
11411
12112
  ] });
11412
12113
  if (banner == null || banner === false) return card;
11413
- return /* @__PURE__ */ jsxs55("div", { className: "stn-widget-anchor", children: [
12114
+ return /* @__PURE__ */ jsxs58("div", { className: "stn-widget-anchor", children: [
11414
12115
  withBannerSeverity(banner, bannerSeverityFromStatus(status, isCritical)),
11415
12116
  card
11416
12117
  ] });
11417
12118
  }
11418
12119
  function StnWidgetHeader({ className, wrap = false, children, ...rest }) {
11419
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__head", wrap && "stn-widget__head--wrap", className), ...rest, children });
12120
+ return /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__head", wrap && "stn-widget__head--wrap", className), ...rest, children });
11420
12121
  }
11421
12122
  markWidgetSlot(StnWidgetHeader, "header");
11422
12123
  function StnWidgetTitle({
@@ -11428,10 +12129,10 @@ function StnWidgetTitle({
11428
12129
  ...rest
11429
12130
  }) {
11430
12131
  const titleAttr = title ?? (typeof children === "string" ? children : void 0);
11431
- return /* @__PURE__ */ jsx68("p", { className: cn("stn-widget__title", size, weight, className), title: titleAttr, ...rest, children });
12132
+ return /* @__PURE__ */ jsx71("p", { className: cn("stn-widget__title", size, weight, className), title: titleAttr, ...rest, children });
11432
12133
  }
11433
12134
  function StnWidgetActions({ className, children, ...rest }) {
11434
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__head-end", className), ...rest, children });
12135
+ return /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__head-end", className), ...rest, children });
11435
12136
  }
11436
12137
  function StnWidgetBody({
11437
12138
  padding,
@@ -11445,7 +12146,7 @@ function StnWidgetBody({
11445
12146
  }) {
11446
12147
  const emptyText = typeof empty === "string" ? empty : void 0;
11447
12148
  const mergedStyle = emptyText ? { ["--stn-widget-empty-text"]: `"${emptyText}"`, ...style } : style;
11448
- return /* @__PURE__ */ jsx68(
12149
+ return /* @__PURE__ */ jsx71(
11449
12150
  "div",
11450
12151
  {
11451
12152
  className: cn(
@@ -11467,10 +12168,10 @@ function StnWidgetBody({
11467
12168
  }
11468
12169
  markWidgetSlot(StnWidgetBody, "body");
11469
12170
  function StnWidgetChartSlot({ label = "select chart", className, children, ...rest }) {
11470
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__chart-slot", className), "data-stn-widget-chart-slot": true, ...rest, children: children ?? /* @__PURE__ */ jsx68("span", { className: "stn-widget__chart-slot-label", children: label }) });
12171
+ return /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__chart-slot", className), "data-stn-widget-chart-slot": true, ...rest, children: children ?? /* @__PURE__ */ jsx71("span", { className: "stn-widget__chart-slot-label", children: label }) });
11471
12172
  }
11472
12173
  function StnWidgetPlaceholder({ label = "\uCF58\uD150\uCE20 \uC601\uC5ED" }) {
11473
- return /* @__PURE__ */ jsx68("div", { className: "stn-widget__placeholder", children: label });
12174
+ return /* @__PURE__ */ jsx71("div", { className: "stn-widget__placeholder", children: label });
11474
12175
  }
11475
12176
  var StnWidgetStatusItem = StnStatusItem;
11476
12177
  var StnWidgetStatusList = StnStatusList;
@@ -11479,24 +12180,24 @@ var StnWidgetStatCard = StnStatCard;
11479
12180
  var StnWidgetGradeRow = StnGradeRow;
11480
12181
  var StnWidgetGradeRowList = StnGradeRowList;
11481
12182
  function StnWidgetFooter({ className, children, ...rest }) {
11482
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__footer", className), ...rest, children });
12183
+ return /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__footer", className), ...rest, children });
11483
12184
  }
11484
12185
  markWidgetSlot(StnWidgetFooter, "footer");
11485
12186
  function StnWidgetEmpty({ className, children, ...rest }) {
11486
- return /* @__PURE__ */ jsxs55("div", { className: cn("stn-widget__empty", className), ...rest, children: [
11487
- /* @__PURE__ */ jsxs55("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: [
11488
- /* @__PURE__ */ jsx68("circle", { cx: "12", cy: "12", r: "10" }),
11489
- /* @__PURE__ */ jsx68("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
11490
- /* @__PURE__ */ jsx68("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
12187
+ return /* @__PURE__ */ jsxs58("div", { className: cn("stn-widget__empty", className), ...rest, children: [
12188
+ /* @__PURE__ */ jsxs58("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: [
12189
+ /* @__PURE__ */ jsx71("circle", { cx: "12", cy: "12", r: "10" }),
12190
+ /* @__PURE__ */ jsx71("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
12191
+ /* @__PURE__ */ jsx71("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
11491
12192
  ] }),
11492
- /* @__PURE__ */ jsx68("div", { children: children ?? "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." })
12193
+ /* @__PURE__ */ jsx71("div", { children: children ?? "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." })
11493
12194
  ] });
11494
12195
  }
11495
12196
  function StnWidgetLoading({ lines = 3, className, children, ...rest }) {
11496
- return /* @__PURE__ */ jsx68("div", { className: cn("stn-widget__loading", className), ...rest, children: children ?? /* @__PURE__ */ jsx68(StnLoadingSkeleton.Widget, { lines }) });
12197
+ return /* @__PURE__ */ jsx71("div", { className: cn("stn-widget__loading", className), ...rest, children: children ?? /* @__PURE__ */ jsx71(StnLoadingSkeleton.Widget, { lines }) });
11497
12198
  }
11498
12199
  function StnWidgetInsetIcon({ className, size = "sm", ...rest }) {
11499
- return /* @__PURE__ */ jsx68(StnIconBox, { size, className: cn("stn-widget__inset-icon", className), ...rest });
12200
+ return /* @__PURE__ */ jsx71(StnIconBox, { size, className: cn("stn-widget__inset-icon", className), ...rest });
11500
12201
  }
11501
12202
  var StnWidget = Object.assign(StnWidgetRoot, {
11502
12203
  Header: StnWidgetHeader,
@@ -11541,7 +12242,7 @@ import {
11541
12242
  } from "@stn-uiux/pub-ui/data/stnWidget";
11542
12243
 
11543
12244
  // src/patterns/dashboard/AlertCenterDashboard.tsx
11544
- import { jsx as jsx69, jsxs as jsxs56 } from "react/jsx-runtime";
12245
+ import { jsx as jsx72, jsxs as jsxs59 } from "react/jsx-runtime";
11545
12246
  var TOP5_ROWS = [
11546
12247
  { label: "\uADF8\uB791\uC2DC\uC544", percent: 80, value: "80\uAC74", grade: "critical" },
11547
12248
  { label: "\uC5F0\uB9BD\uC8FC\uD0DD 15\uC138\uB300", percent: 74, value: "74\uAC74", grade: "major" },
@@ -11550,7 +12251,7 @@ var TOP5_ROWS = [
11550
12251
  { label: "PRADA", percent: 68, value: "68\uAC74", grade: "default" }
11551
12252
  ];
11552
12253
  function AlertCenterDashboard({ className, appearance = "translucent", loading = false }) {
11553
- return /* @__PURE__ */ jsxs56(
12254
+ return /* @__PURE__ */ jsxs59(
11554
12255
  StnStack,
11555
12256
  {
11556
12257
  direction: "column",
@@ -11559,17 +12260,17 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
11559
12260
  style: { flex: "1 1 0%", minHeight: 0, height: "100%", width: "100%" },
11560
12261
  "data-stn-dashboard": "alert-widgets",
11561
12262
  children: [
11562
- /* @__PURE__ */ jsx69(StnWidget, { title: "\uC2DC\uC124 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx69(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs56(StnWidget.StatusList, { children: [
11563
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "PTN", value: "179", showDot: false }),
11564
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "MSPP", value: "63", showDot: false }),
11565
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "L3\uC2A4\uC704\uCE58", value: "27", showDot: false })
12263
+ /* @__PURE__ */ jsx72(StnWidget, { title: "\uC2DC\uC124 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx72(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs59(StnWidget.StatusList, { children: [
12264
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "PTN", value: "179", showDot: false }),
12265
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "MSPP", value: "63", showDot: false }),
12266
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "L3\uC2A4\uC704\uCE58", value: "27", showDot: false })
11566
12267
  ] }) }),
11567
- /* @__PURE__ */ jsx69(StnWidget, { title: "\uC7A5\uC560 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx69(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs56(StnWidget.StatusList, { children: [
11568
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "Critical", value: "43", grade: "critical" }),
11569
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "Major", value: "79", grade: "major" }),
11570
- /* @__PURE__ */ jsx69(StnWidget.StatusItem, { label: "Minor", value: "3", grade: "minor" })
12268
+ /* @__PURE__ */ jsx72(StnWidget, { title: "\uC7A5\uC560 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx72(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs59(StnWidget.StatusList, { children: [
12269
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "Critical", value: "43", grade: "critical" }),
12270
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "Major", value: "79", grade: "major" }),
12271
+ /* @__PURE__ */ jsx72(StnWidget.StatusItem, { label: "Minor", value: "3", grade: "minor" })
11571
12272
  ] }) }),
11572
- /* @__PURE__ */ jsx69(StnWidget, { title: "\uC77C\uC77C \uC7A5\uBE44\uBCC4 \uC7A5\uC560 TOP5", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx69(StnLoadingSkeleton.Widget, { lines: 4 }) : /* @__PURE__ */ jsx69(StnWidget.GradeRowList, { children: TOP5_ROWS.map((row) => /* @__PURE__ */ jsx69(
12273
+ /* @__PURE__ */ jsx72(StnWidget, { title: "\uC77C\uC77C \uC7A5\uBE44\uBCC4 \uC7A5\uC560 TOP5", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx72(StnLoadingSkeleton.Widget, { lines: 4 }) : /* @__PURE__ */ jsx72(StnWidget.GradeRowList, { children: TOP5_ROWS.map((row) => /* @__PURE__ */ jsx72(
11573
12274
  StnWidget.GradeRow,
11574
12275
  {
11575
12276
  grade: row.grade,
@@ -11579,50 +12280,50 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
11579
12280
  },
11580
12281
  row.label
11581
12282
  )) }) }),
11582
- /* @__PURE__ */ jsx69(StnWidget, { title: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx69(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsx69(StnWidget.ChartSlot, { label: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4 \uCC28\uD2B8" }) })
12283
+ /* @__PURE__ */ jsx72(StnWidget, { title: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx72(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsx72(StnWidget.ChartSlot, { label: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4 \uCC28\uD2B8" }) })
11583
12284
  ]
11584
12285
  }
11585
12286
  );
11586
12287
  }
11587
12288
 
11588
12289
  // src/patterns/dashboard/PubDashboardWidgetBodies.tsx
11589
- import { jsx as jsx70, jsxs as jsxs57 } from "react/jsx-runtime";
12290
+ import { jsx as jsx73, jsxs as jsxs60 } from "react/jsx-runtime";
11590
12291
  function PubDisabilityStatusList({ items, summary }) {
11591
- return /* @__PURE__ */ jsxs57("div", { className: "ds-disability-status", children: [
11592
- /* @__PURE__ */ jsx70("ul", { className: "ds-disability-status__list", children: items.map((item, i) => /* @__PURE__ */ jsxs57(
12292
+ return /* @__PURE__ */ jsxs60("div", { className: "ds-disability-status", children: [
12293
+ /* @__PURE__ */ jsx73("ul", { className: "ds-disability-status__list", children: items.map((item, i) => /* @__PURE__ */ jsxs60(
11593
12294
  "li",
11594
12295
  {
11595
12296
  className: ["ds-disability-status__item", item.grade].filter(Boolean).join(" "),
11596
12297
  children: [
11597
- /* @__PURE__ */ jsxs57("span", { children: [
11598
- item.showDot !== false && item.grade ? /* @__PURE__ */ jsx70("span", { className: "dot", "aria-hidden": true }) : null,
12298
+ /* @__PURE__ */ jsxs60("span", { children: [
12299
+ item.showDot !== false && item.grade ? /* @__PURE__ */ jsx73("span", { className: "dot", "aria-hidden": true }) : null,
11599
12300
  item.label
11600
12301
  ] }),
11601
- /* @__PURE__ */ jsx70("p", { children: item.value })
12302
+ /* @__PURE__ */ jsx73("p", { children: item.value })
11602
12303
  ]
11603
12304
  },
11604
12305
  i
11605
12306
  )) }),
11606
- summary && summary.length > 0 ? /* @__PURE__ */ jsx70("div", { className: "ds-disability-status__summary", children: summary.map((row, i) => /* @__PURE__ */ jsxs57("p", { className: "ds-disability-status__value", children: [
12307
+ summary && summary.length > 0 ? /* @__PURE__ */ jsx73("div", { className: "ds-disability-status__summary", children: summary.map((row, i) => /* @__PURE__ */ jsxs60("p", { className: "ds-disability-status__value", children: [
11607
12308
  row.label,
11608
- /* @__PURE__ */ jsx70("span", { children: row.value })
12309
+ /* @__PURE__ */ jsx73("span", { children: row.value })
11609
12310
  ] }, i)) }) : null
11610
12311
  ] });
11611
12312
  }
11612
12313
  function PubTrafficTop5Bars({ rows }) {
11613
12314
  const maxPercent = Math.max(...rows.map((row) => row.percent), 0);
11614
- return /* @__PURE__ */ jsx70("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsxs57("div", { className: ["ds-bar", row.percent === maxPercent ? "max" : ""].filter(Boolean).join(" "), children: [
11615
- /* @__PURE__ */ jsx70("p", { className: "ds-bar-name", title: row.label, children: row.label }),
11616
- /* @__PURE__ */ jsx70("div", { className: "ds-bar-con", title: `${row.percent}%`, children: /* @__PURE__ */ jsx70("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }) }),
11617
- /* @__PURE__ */ jsx70("p", { className: "ds-bar-value", title: row.value, children: row.value })
12315
+ return /* @__PURE__ */ jsx73("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsxs60("div", { className: ["ds-bar", row.percent === maxPercent ? "max" : ""].filter(Boolean).join(" "), children: [
12316
+ /* @__PURE__ */ jsx73("p", { className: "ds-bar-name", title: row.label, children: row.label }),
12317
+ /* @__PURE__ */ jsx73("div", { className: "ds-bar-con", title: `${row.percent}%`, children: /* @__PURE__ */ jsx73("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }) }),
12318
+ /* @__PURE__ */ jsx73("p", { className: "ds-bar-value", title: row.value, children: row.value })
11618
12319
  ] }, row.label)) });
11619
12320
  }
11620
12321
  function PubTop5EquipmentBars({ rows }) {
11621
- return /* @__PURE__ */ jsxs57("div", { className: "ds-group", children: [
11622
- /* @__PURE__ */ jsx70("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx70("div", { className: "ds-equipment-ico", children: /* @__PURE__ */ jsx70("span", { className: "blind", children: "\uC7A5\uBE44 \uC774\uBBF8\uC9C0" }) }) }),
11623
- /* @__PURE__ */ jsx70("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx70("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsx70("div", { className: "ds-bar type-2", children: /* @__PURE__ */ jsxs57("div", { className: "ds-bar-con", title: `${row.percent}%`, children: [
11624
- /* @__PURE__ */ jsx70("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }),
11625
- /* @__PURE__ */ jsx70("div", { className: "ds-bar-status", children: row.status })
12322
+ return /* @__PURE__ */ jsxs60("div", { className: "ds-group", children: [
12323
+ /* @__PURE__ */ jsx73("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx73("div", { className: "ds-equipment-ico", children: /* @__PURE__ */ jsx73("span", { className: "blind", children: "\uC7A5\uBE44 \uC774\uBBF8\uC9C0" }) }) }),
12324
+ /* @__PURE__ */ jsx73("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx73("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsx73("div", { className: "ds-bar type-2", children: /* @__PURE__ */ jsxs60("div", { className: "ds-bar-con", title: `${row.percent}%`, children: [
12325
+ /* @__PURE__ */ jsx73("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }),
12326
+ /* @__PURE__ */ jsx73("div", { className: "ds-bar-status", children: row.status })
11626
12327
  ] }) }, row.label)) }) })
11627
12328
  ] });
11628
12329
  }
@@ -11631,15 +12332,15 @@ function PubChartSample({
11631
12332
  alt = "\uCC28\uD2B8",
11632
12333
  onError
11633
12334
  }) {
11634
- return /* @__PURE__ */ jsx70("div", { className: "ds-chart", children: /* @__PURE__ */ jsx70("img", { src, alt, className: "chart_sample", onError }) });
12335
+ return /* @__PURE__ */ jsx73("div", { className: "ds-chart", children: /* @__PURE__ */ jsx73("img", { src, alt, className: "chart_sample", onError }) });
11635
12336
  }
11636
12337
 
11637
12338
  // src/patterns/alertCenter/StnAlertCenterPanel.tsx
11638
- import { useState as useState19 } from "react";
12339
+ import { useState as useState20 } from "react";
11639
12340
  import {
11640
12341
  STN_ALERT_CENTER_TABS
11641
12342
  } from "@stn-uiux/pub-ui/data/stnAlertCenter";
11642
- import { jsx as jsx71, jsxs as jsxs58 } from "react/jsx-runtime";
12343
+ import { jsx as jsx74, jsxs as jsxs61 } from "react/jsx-runtime";
11643
12344
  function resolveAlertIcon(item) {
11644
12345
  if (item.icon) {
11645
12346
  if (item.icon === "line/arrow-down") return "line/arrow-narrow-down";
@@ -11666,7 +12367,7 @@ function StnAlertCard({
11666
12367
  }) {
11667
12368
  const iconNode = resolveAlertIcon(item);
11668
12369
  const gradeLabel = resolveGradeLabel(item.grade);
11669
- return /* @__PURE__ */ jsx71(
12370
+ return /* @__PURE__ */ jsx74(
11670
12371
  StnCard,
11671
12372
  {
11672
12373
  variant: "elevated",
@@ -11675,8 +12376,8 @@ function StnAlertCard({
11675
12376
  interactive: true,
11676
12377
  className: cn("stn-alert-card", className),
11677
12378
  onClick,
11678
- children: /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__row", children: [
11679
- /* @__PURE__ */ jsx71(
12379
+ children: /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__row", children: [
12380
+ /* @__PURE__ */ jsx74(
11680
12381
  StnIcon,
11681
12382
  {
11682
12383
  name: iconNode,
@@ -11685,9 +12386,9 @@ function StnAlertCard({
11685
12386
  className: "stn-alert-card__icon"
11686
12387
  }
11687
12388
  ),
11688
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__body", children: [
11689
- /* @__PURE__ */ jsxs58(StnStack, { direction: "row", alignItems: "center", spacing: 1, className: "stn-alert-card__header-line", children: [
11690
- /* @__PURE__ */ jsx71(
12389
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__body", children: [
12390
+ /* @__PURE__ */ jsxs61(StnStack, { direction: "row", alignItems: "center", spacing: 1, className: "stn-alert-card__header-line", children: [
12391
+ /* @__PURE__ */ jsx74(
11691
12392
  StnChip,
11692
12393
  {
11693
12394
  shape: "pill",
@@ -11697,25 +12398,25 @@ function StnAlertCard({
11697
12398
  children: gradeLabel
11698
12399
  }
11699
12400
  ),
11700
- /* @__PURE__ */ jsx71(
12401
+ /* @__PURE__ */ jsx74(
11701
12402
  "span",
11702
12403
  {
11703
12404
  className: cn("stn-alert-card__title", titleOverflow),
11704
12405
  title: item.title,
11705
- children: /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__text-inner", children: item.title })
12406
+ children: /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__text-inner", children: item.title })
11706
12407
  }
11707
12408
  )
11708
12409
  ] }),
11709
- /* @__PURE__ */ jsxs58(StnStack, { direction: "row", alignItems: "center", spacing: 2, wrap: "wrap", className: "stn-alert-card__desc-line", children: [
11710
- /* @__PURE__ */ jsx71(
12410
+ /* @__PURE__ */ jsxs61(StnStack, { direction: "row", alignItems: "center", spacing: 2, wrap: "wrap", className: "stn-alert-card__desc-line", children: [
12411
+ /* @__PURE__ */ jsx74(
11711
12412
  "span",
11712
12413
  {
11713
12414
  className: cn("stn-alert-card__desc", descOverflow),
11714
12415
  title: item.description,
11715
- children: /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__text-inner", children: item.description })
12416
+ children: /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__text-inner", children: item.description })
11716
12417
  }
11717
12418
  ),
11718
- item.occurredAt && /* @__PURE__ */ jsxs58(
12419
+ item.occurredAt && /* @__PURE__ */ jsxs61(
11719
12420
  StnChip,
11720
12421
  {
11721
12422
  shape: "pill",
@@ -11731,9 +12432,9 @@ function StnAlertCard({
11731
12432
  )
11732
12433
  ] })
11733
12434
  ] }),
11734
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__meta", children: [
11735
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__time", children: item.time }),
11736
- item.unread !== false && /* @__PURE__ */ jsx71(
12435
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__meta", children: [
12436
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__time", children: item.time }),
12437
+ item.unread !== false && /* @__PURE__ */ jsx74(
11737
12438
  "span",
11738
12439
  {
11739
12440
  className: cn(
@@ -11767,11 +12468,11 @@ function StnAlertCenterPanel({
11767
12468
  closeLabel = "\uB2EB\uAE30",
11768
12469
  className
11769
12470
  }) {
11770
- const [activeTab, setActiveTab] = useState19(defaultTab);
12471
+ const [activeTab, setActiveTab] = useState20(defaultTab);
11771
12472
  const alertCount = alerts.length;
11772
12473
  const resolvedTitleOverflow = titleOverflow ?? textOverflow;
11773
12474
  const resolvedDescOverflow = descOverflow ?? textOverflow;
11774
- return /* @__PURE__ */ jsxs58(
12475
+ return /* @__PURE__ */ jsxs61(
11775
12476
  "div",
11776
12477
  {
11777
12478
  className: cn(
@@ -11783,13 +12484,13 @@ function StnAlertCenterPanel({
11783
12484
  ),
11784
12485
  "data-stn-alert-center": true,
11785
12486
  children: [
11786
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-center__header", children: [
11787
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-center__header-left", children: [
11788
- /* @__PURE__ */ jsx71(StnIcon, { name: "line/bell", size: 20, color: "var(--stn-primary)" }),
11789
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-center__title", children: title }),
11790
- alertCount > 0 && /* @__PURE__ */ jsx71(StnChip, { shape: "pill", size: "sm", variant: "subtle", color: "primary", children: alertCount })
12487
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-center__header", children: [
12488
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-center__header-left", children: [
12489
+ /* @__PURE__ */ jsx74(StnIcon, { name: "line/bell", size: 20, color: "var(--stn-primary)" }),
12490
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-center__title", children: title }),
12491
+ alertCount > 0 && /* @__PURE__ */ jsx74(StnChip, { shape: "pill", size: "sm", variant: "subtle", color: "primary", children: alertCount })
11791
12492
  ] }),
11792
- /* @__PURE__ */ jsx71(
12493
+ /* @__PURE__ */ jsx74(
11793
12494
  StnSegmented,
11794
12495
  {
11795
12496
  size: "md",
@@ -11802,8 +12503,8 @@ function StnAlertCenterPanel({
11802
12503
  }))
11803
12504
  }
11804
12505
  ),
11805
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-center__header-right", children: [
11806
- /* @__PURE__ */ jsx71(
12506
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-center__header-right", children: [
12507
+ /* @__PURE__ */ jsx74(
11807
12508
  StnButton,
11808
12509
  {
11809
12510
  variant: "text",
@@ -11813,8 +12514,8 @@ function StnAlertCenterPanel({
11813
12514
  children: "\uBAA8\uB450 \uC77D\uC74C"
11814
12515
  }
11815
12516
  ),
11816
- /* @__PURE__ */ jsx71("div", { className: "stn-alert-center__divider", "aria-hidden": true }),
11817
- /* @__PURE__ */ jsx71(
12517
+ /* @__PURE__ */ jsx74("div", { className: "stn-alert-center__divider", "aria-hidden": true }),
12518
+ /* @__PURE__ */ jsx74(
11818
12519
  StnButton,
11819
12520
  {
11820
12521
  icon: "line/x",
@@ -11826,14 +12527,14 @@ function StnAlertCenterPanel({
11826
12527
  )
11827
12528
  ] })
11828
12529
  ] }),
11829
- /* @__PURE__ */ jsxs58(
12530
+ /* @__PURE__ */ jsxs61(
11830
12531
  StnScroll,
11831
12532
  {
11832
12533
  orientation: "vertical",
11833
12534
  size: "thin",
11834
12535
  className: "stn-alert-center__list-wrap",
11835
12536
  children: [
11836
- activeTab === "error" && /* @__PURE__ */ jsx71("ul", { className: "stn-alert-center__list", children: alerts.map((item) => /* @__PURE__ */ jsx71("li", { children: /* @__PURE__ */ jsx71(
12537
+ activeTab === "error" && /* @__PURE__ */ jsx74("ul", { className: "stn-alert-center__list", children: alerts.map((item) => /* @__PURE__ */ jsx74("li", { children: /* @__PURE__ */ jsx74(
11837
12538
  StnAlertCard,
11838
12539
  {
11839
12540
  item,
@@ -11842,35 +12543,35 @@ function StnAlertCenterPanel({
11842
12543
  onClick: () => onItemClick?.(item)
11843
12544
  }
11844
12545
  ) }, item.id ?? item.title)) }),
11845
- activeTab === "work" && /* @__PURE__ */ jsx71("ul", { className: "stn-alert-center__list", children: workItems.map((row) => /* @__PURE__ */ jsx71("li", { children: /* @__PURE__ */ jsx71(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__row", children: [
11846
- /* @__PURE__ */ jsx71(StnIcon, { name: "line/clock", size: 24, color: "var(--stn-text-secondary)", className: "stn-alert-card__icon" }),
11847
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__body", children: [
11848
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__type-label work", children: row.typeLabel }),
11849
- /* @__PURE__ */ jsx71("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__text-inner", children: row.text }) })
12546
+ activeTab === "work" && /* @__PURE__ */ jsx74("ul", { className: "stn-alert-center__list", children: workItems.map((row) => /* @__PURE__ */ jsx74("li", { children: /* @__PURE__ */ jsx74(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__row", children: [
12547
+ /* @__PURE__ */ jsx74(StnIcon, { name: "line/clock", size: 24, color: "var(--stn-text-secondary)", className: "stn-alert-card__icon" }),
12548
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__body", children: [
12549
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__type-label work", children: row.typeLabel }),
12550
+ /* @__PURE__ */ jsx74("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__text-inner", children: row.text }) })
11850
12551
  ] }),
11851
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__time", children: row.time })
12552
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__time", children: row.time })
11852
12553
  ] }) }) }, row.id ?? row.text)) }),
11853
- activeTab === "deploy" && /* @__PURE__ */ jsx71("ul", { className: "stn-alert-center__list", children: deployItems.map((row) => /* @__PURE__ */ jsx71("li", { children: /* @__PURE__ */ jsx71(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__row", children: [
11854
- /* @__PURE__ */ jsx71(StnIcon, { name: "line/settings", size: 24, color: "var(--stn-secondary)", className: "stn-alert-card__icon" }),
11855
- /* @__PURE__ */ jsxs58("div", { className: "stn-alert-card__body", children: [
11856
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--deploy", children: row.typeLabel }),
11857
- /* @__PURE__ */ jsx71("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__text-inner", children: row.text }) })
12554
+ activeTab === "deploy" && /* @__PURE__ */ jsx74("ul", { className: "stn-alert-center__list", children: deployItems.map((row) => /* @__PURE__ */ jsx74("li", { children: /* @__PURE__ */ jsx74(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__row", children: [
12555
+ /* @__PURE__ */ jsx74(StnIcon, { name: "line/settings", size: 24, color: "var(--stn-secondary)", className: "stn-alert-card__icon" }),
12556
+ /* @__PURE__ */ jsxs61("div", { className: "stn-alert-card__body", children: [
12557
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--deploy", children: row.typeLabel }),
12558
+ /* @__PURE__ */ jsx74("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__text-inner", children: row.text }) })
11858
12559
  ] }),
11859
- /* @__PURE__ */ jsx71("span", { className: "stn-alert-card__time", children: row.time })
12560
+ /* @__PURE__ */ jsx74("span", { className: "stn-alert-card__time", children: row.time })
11860
12561
  ] }) }) }, row.id ?? row.text)) })
11861
12562
  ]
11862
12563
  }
11863
12564
  ),
11864
- /* @__PURE__ */ jsx71("div", { className: "stn-alert-center__footer", children: /* @__PURE__ */ jsxs58(
12565
+ /* @__PURE__ */ jsx74("div", { className: "stn-alert-center__footer", children: /* @__PURE__ */ jsxs61(
11865
12566
  "button",
11866
12567
  {
11867
12568
  type: "button",
11868
12569
  className: "stn-alert-center__footer-link",
11869
12570
  onClick: onManageSettings,
11870
12571
  children: [
11871
- /* @__PURE__ */ jsx71("span", { children: "\uC54C\uB9BC \uC124\uC815 \uAD00\uB9AC" }),
11872
- /* @__PURE__ */ jsx71(StnIcon, { name: "line/settings", size: 14 }),
11873
- /* @__PURE__ */ jsx71(StnIcon, { name: "line/chevron-right", size: 14 })
12572
+ /* @__PURE__ */ jsx74("span", { children: "\uC54C\uB9BC \uC124\uC815 \uAD00\uB9AC" }),
12573
+ /* @__PURE__ */ jsx74(StnIcon, { name: "line/settings", size: 14 }),
12574
+ /* @__PURE__ */ jsx74(StnIcon, { name: "line/chevron-right", size: 14 })
11874
12575
  ]
11875
12576
  }
11876
12577
  ) })
@@ -11880,7 +12581,7 @@ function StnAlertCenterPanel({
11880
12581
  }
11881
12582
 
11882
12583
  // src/patterns/alertCenter/StnAlertCenterDocPreview.tsx
11883
- import { jsx as jsx72 } from "react/jsx-runtime";
12584
+ import { jsx as jsx75 } from "react/jsx-runtime";
11884
12585
  function StnAlertCenterDocPreview({
11885
12586
  mode = "light",
11886
12587
  theme,
@@ -11888,11 +12589,11 @@ function StnAlertCenterDocPreview({
11888
12589
  children,
11889
12590
  ...panelProps
11890
12591
  }) {
11891
- const panel = children ?? /* @__PURE__ */ jsx72(StnAlertCenterPanel, { ...panelProps });
12592
+ const panel = children ?? /* @__PURE__ */ jsx75(StnAlertCenterPanel, { ...panelProps });
11892
12593
  if (!withDocChrome) {
11893
- return /* @__PURE__ */ jsx72(StnProvider, { mode, theme, applyModeToDocument: false, children: panel });
12594
+ return /* @__PURE__ */ jsx75(StnProvider, { mode, theme, applyModeToDocument: false, children: panel });
11894
12595
  }
11895
- return /* @__PURE__ */ jsx72("div", { className: "stn-doc-frame stn-doc-frame--alert-center", "data-mode": mode, "data-theme": theme, children: /* @__PURE__ */ jsx72("div", { className: "stn-alert-center-preview-shell", children: panel }) });
12596
+ return /* @__PURE__ */ jsx75("div", { className: "stn-doc-frame stn-doc-frame--alert-center", "data-mode": mode, "data-theme": theme, children: /* @__PURE__ */ jsx75("div", { className: "stn-alert-center-preview-shell", children: panel }) });
11896
12597
  }
11897
12598
 
11898
12599
  // src/index.ts
@@ -11917,13 +12618,13 @@ var SideNavContext = createContext7({
11917
12618
  var useSideNav = () => useContext7(SideNavContext);
11918
12619
 
11919
12620
  // src/components/sideNav/StnSideNavItem.tsx
11920
- import { forwardRef as forwardRef41 } from "react";
12621
+ import { forwardRef as forwardRef44 } from "react";
11921
12622
  import { STN_NAV_MENU_SUB_ICON } from "@stn-uiux/pub-ui/data/stnSideNavItem";
11922
- import { jsx as jsx73, jsxs as jsxs59 } from "react/jsx-runtime";
12623
+ import { jsx as jsx76, jsxs as jsxs62 } from "react/jsx-runtime";
11923
12624
  function maskStyle2(src) {
11924
12625
  return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
11925
12626
  }
11926
- var StnSideNavItem = forwardRef41(function StnSideNavItem2({
12627
+ var StnSideNavItem = forwardRef44(function StnSideNavItem2({
11927
12628
  label,
11928
12629
  id,
11929
12630
  iconSrc,
@@ -11966,13 +12667,13 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
11966
12667
  sideNav.onSelect(id);
11967
12668
  }
11968
12669
  };
11969
- const iconElement = hasIcon && !isSub ? /* @__PURE__ */ jsxs59("span", { className: "stn-side-nav-item__icon-wrap", children: [
11970
- /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }),
11971
- showDot ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__dot-wrap", "aria-hidden": "true", children: /* @__PURE__ */ jsx73(StnBadge, { variant: "dot", color: "error" }) }) : null
12670
+ const iconElement = hasIcon && !isSub ? /* @__PURE__ */ jsxs62("span", { className: "stn-side-nav-item__icon-wrap", children: [
12671
+ /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }),
12672
+ showDot ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__dot-wrap", "aria-hidden": "true", children: /* @__PURE__ */ jsx76(StnBadge, { variant: "dot", color: "error" }) }) : null
11972
12673
  ] }) : null;
11973
- const subIconElement = hasIcon && isSub ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__sub-icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }) : null;
12674
+ const subIconElement = hasIcon && isSub ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__sub-icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }) : null;
11974
12675
  const activeIconElement = isSub ? subIconElement : iconElement;
11975
- return /* @__PURE__ */ jsx73(
12676
+ return /* @__PURE__ */ jsx76(
11976
12677
  "button",
11977
12678
  {
11978
12679
  ref,
@@ -11991,10 +12692,10 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
11991
12692
  title: collapsed ? label : void 0,
11992
12693
  onClick: handleClick,
11993
12694
  ...rest,
11994
- children: /* @__PURE__ */ jsxs59("span", { className: cn("stn-side-nav-item__inner", spreadTrail && "spread"), children: [
11995
- /* @__PURE__ */ jsxs59("span", { className: "stn-side-nav-item__lead", children: [
11996
- isSub && showSubIndent ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__sub-indent", "aria-hidden": "true" }) : null,
11997
- shouldShowSubDot ? /* @__PURE__ */ jsx73(
12695
+ children: /* @__PURE__ */ jsxs62("span", { className: cn("stn-side-nav-item__inner", spreadTrail && "spread"), children: [
12696
+ /* @__PURE__ */ jsxs62("span", { className: "stn-side-nav-item__lead", children: [
12697
+ isSub && showSubIndent ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__sub-indent", "aria-hidden": "true" }) : null,
12698
+ shouldShowSubDot ? /* @__PURE__ */ jsx76(
11998
12699
  "span",
11999
12700
  {
12000
12701
  className: cn(
@@ -12002,14 +12703,14 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
12002
12703
  hasIcon && iconPosition === "left" && "compact"
12003
12704
  ),
12004
12705
  "aria-hidden": "true",
12005
- children: /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__sub-dot-glyph", style: maskStyle2(STN_NAV_MENU_SUB_ICON) })
12706
+ children: /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__sub-dot-glyph", style: maskStyle2(STN_NAV_MENU_SUB_ICON) })
12006
12707
  }
12007
12708
  ) : null,
12008
12709
  iconPosition === "left" ? activeIconElement : null,
12009
- /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__label", children: label })
12710
+ /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__label", children: label })
12010
12711
  ] }),
12011
12712
  iconPosition === "right" ? activeIconElement : null,
12012
- renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */ jsx73(
12713
+ renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */ jsx76(
12013
12714
  StnBadge,
12014
12715
  {
12015
12716
  badgeContent: badge,
@@ -12017,7 +12718,7 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
12017
12718
  appearance: "subtle",
12018
12719
  className: "stn-side-nav-item__badge"
12019
12720
  }
12020
- ) : badge ? /* @__PURE__ */ jsx73("span", { className: "stn-side-nav-item__badge", children: badge }) : showBadgeDot ? /* @__PURE__ */ jsx73(
12721
+ ) : badge ? /* @__PURE__ */ jsx76("span", { className: "stn-side-nav-item__badge", children: badge }) : showBadgeDot ? /* @__PURE__ */ jsx76(
12021
12722
  StnBadge,
12022
12723
  {
12023
12724
  variant: "dot",
@@ -12025,7 +12726,7 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
12025
12726
  className: "stn-side-nav-item__badge"
12026
12727
  }
12027
12728
  ) : null : null,
12028
- !isSub && showChevron && !collapsed ? /* @__PURE__ */ jsx73(
12729
+ !isSub && showChevron && !collapsed ? /* @__PURE__ */ jsx76(
12029
12730
  "span",
12030
12731
  {
12031
12732
  className: cn(
@@ -12042,15 +12743,15 @@ var StnSideNavItem = forwardRef41(function StnSideNavItem2({
12042
12743
  });
12043
12744
 
12044
12745
  // src/components/sideNav/StnSideNavHeader.tsx
12045
- import { forwardRef as forwardRef43 } from "react";
12746
+ import { forwardRef as forwardRef46 } from "react";
12046
12747
 
12047
12748
  // src/components/sideNav/StnSideNavLogo.tsx
12048
- import { forwardRef as forwardRef42 } from "react";
12049
- import { jsx as jsx74 } from "react/jsx-runtime";
12050
- var StnSideNavLogo = forwardRef42(
12749
+ import { forwardRef as forwardRef45 } from "react";
12750
+ import { jsx as jsx77 } from "react/jsx-runtime";
12751
+ var StnSideNavLogo = forwardRef45(
12051
12752
  function StnSideNavLogo2({ className, logoProps, ...rest }, ref) {
12052
12753
  const { collapsed } = useSideNav();
12053
- return /* @__PURE__ */ jsx74(
12754
+ return /* @__PURE__ */ jsx77(
12054
12755
  "div",
12055
12756
  {
12056
12757
  ref,
@@ -12061,7 +12762,7 @@ var StnSideNavLogo = forwardRef42(
12061
12762
  ),
12062
12763
  title: "InfoMap",
12063
12764
  ...rest,
12064
- children: /* @__PURE__ */ jsx74(
12765
+ children: /* @__PURE__ */ jsx77(
12065
12766
  StnLogo,
12066
12767
  {
12067
12768
  variant: collapsed ? "onlyimg" : "horizontal",
@@ -12075,8 +12776,8 @@ var StnSideNavLogo = forwardRef42(
12075
12776
  );
12076
12777
 
12077
12778
  // src/components/sideNav/StnSideNavHeader.tsx
12078
- import { Fragment as Fragment12, jsx as jsx75, jsxs as jsxs60 } from "react/jsx-runtime";
12079
- var StnSideNavHeader = forwardRef43(function StnSideNavHeader2({
12779
+ import { Fragment as Fragment12, jsx as jsx78, jsxs as jsxs63 } from "react/jsx-runtime";
12780
+ var StnSideNavHeader = forwardRef46(function StnSideNavHeader2({
12080
12781
  children,
12081
12782
  border = false,
12082
12783
  hasBorder = false,
@@ -12088,7 +12789,7 @@ var StnSideNavHeader = forwardRef43(function StnSideNavHeader2({
12088
12789
  const { collapsed, onToggleCollapse, isDrawer, setMobileOpen } = useSideNav();
12089
12790
  const withBorder = Boolean(border || hasBorder);
12090
12791
  const shouldShowClose = showClose ?? Boolean(isDrawer);
12091
- return /* @__PURE__ */ jsx75(
12792
+ return /* @__PURE__ */ jsx78(
12092
12793
  "div",
12093
12794
  {
12094
12795
  ref,
@@ -12099,9 +12800,9 @@ var StnSideNavHeader = forwardRef43(function StnSideNavHeader2({
12099
12800
  className
12100
12801
  ),
12101
12802
  ...rest,
12102
- children: children ?? /* @__PURE__ */ jsxs60(Fragment12, { children: [
12103
- /* @__PURE__ */ jsx75(StnSideNavLogo, {}),
12104
- shouldShowClose ? /* @__PURE__ */ jsx75(
12803
+ children: children ?? /* @__PURE__ */ jsxs63(Fragment12, { children: [
12804
+ /* @__PURE__ */ jsx78(StnSideNavLogo, {}),
12805
+ shouldShowClose ? /* @__PURE__ */ jsx78(
12105
12806
  StnButton,
12106
12807
  {
12107
12808
  size: "sm",
@@ -12113,7 +12814,7 @@ var StnSideNavHeader = forwardRef43(function StnSideNavHeader2({
12113
12814
  className: "stn-side-nav__collapse-btn",
12114
12815
  onClick: () => setMobileOpen?.(false)
12115
12816
  }
12116
- ) : showToggle ? /* @__PURE__ */ jsx75(
12817
+ ) : showToggle ? /* @__PURE__ */ jsx78(
12117
12818
  StnButton,
12118
12819
  {
12119
12820
  size: "sm",
@@ -12132,16 +12833,16 @@ var StnSideNavHeader = forwardRef43(function StnSideNavHeader2({
12132
12833
  });
12133
12834
 
12134
12835
  // src/components/sideNav/StnSideNavMenu.tsx
12135
- import { forwardRef as forwardRef44 } from "react";
12136
- import { jsx as jsx76 } from "react/jsx-runtime";
12137
- var StnSideNavMenu = forwardRef44(function StnSideNavMenu2({
12836
+ import { forwardRef as forwardRef47 } from "react";
12837
+ import { jsx as jsx79 } from "react/jsx-runtime";
12838
+ var StnSideNavMenu = forwardRef47(function StnSideNavMenu2({
12138
12839
  children,
12139
12840
  className,
12140
12841
  scrollSize = "thin",
12141
12842
  scrollColor = "fade",
12142
12843
  ...rest
12143
12844
  }, ref) {
12144
- return /* @__PURE__ */ jsx76(
12845
+ return /* @__PURE__ */ jsx79(
12145
12846
  "nav",
12146
12847
  {
12147
12848
  ref,
@@ -12162,13 +12863,13 @@ var StnSideNavMenu = forwardRef44(function StnSideNavMenu2({
12162
12863
 
12163
12864
  // src/components/sideNav/StnSideNavGroup.tsx
12164
12865
  import {
12165
- forwardRef as forwardRef45,
12866
+ forwardRef as forwardRef48,
12166
12867
  useEffect as useEffect16,
12167
12868
  useRef as useRef13,
12168
- useState as useState20
12869
+ useState as useState21
12169
12870
  } from "react";
12170
- import { jsx as jsx77, jsxs as jsxs61 } from "react/jsx-runtime";
12171
- var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12871
+ import { jsx as jsx80, jsxs as jsxs64 } from "react/jsx-runtime";
12872
+ var StnSideNavGroup = forwardRef48(function StnSideNavGroup2({
12172
12873
  label,
12173
12874
  parent,
12174
12875
  direction = "down",
@@ -12184,7 +12885,7 @@ var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12184
12885
  ...rest
12185
12886
  }, ref) {
12186
12887
  const { collapsed } = useSideNav();
12187
- const [internalOpen, setInternalOpen] = useState20(defaultOpen);
12888
+ const [internalOpen, setInternalOpen] = useState21(defaultOpen);
12188
12889
  const isOpen = openProp ?? internalOpen;
12189
12890
  const isDropdown = Boolean(dropdown || variant === "dropdown");
12190
12891
  const isTransparent = dropdownVariant === "transparent" || dropdownBackground === false;
@@ -12212,7 +12913,7 @@ var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12212
12913
  }
12213
12914
  onOpenChange?.(next);
12214
12915
  };
12215
- const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */ jsx77(
12916
+ const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */ jsx80(
12216
12917
  "div",
12217
12918
  {
12218
12919
  className: cn(
@@ -12227,7 +12928,7 @@ var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12227
12928
  children
12228
12929
  }
12229
12930
  ) : null;
12230
- return /* @__PURE__ */ jsxs61(
12931
+ return /* @__PURE__ */ jsxs64(
12231
12932
  "div",
12232
12933
  {
12233
12934
  ref: (node) => {
@@ -12248,7 +12949,7 @@ var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12248
12949
  "aria-label": typeof label === "string" ? label : void 0,
12249
12950
  ...rest,
12250
12951
  children: [
12251
- label && !collapsed ? /* @__PURE__ */ jsx77("span", { className: "stn-side-nav__group-label", onClick: handleToggle, children: label }) : null,
12952
+ label && !collapsed ? /* @__PURE__ */ jsx80("span", { className: "stn-side-nav__group-label", onClick: handleToggle, children: label }) : null,
12252
12953
  isUp ? subnavNode : null,
12253
12954
  parent,
12254
12955
  !isUp ? subnavNode : null
@@ -12258,10 +12959,10 @@ var StnSideNavGroup = forwardRef45(function StnSideNavGroup2({
12258
12959
  });
12259
12960
 
12260
12961
  // src/components/sideNav/StnSideNavSpacer.tsx
12261
- import { forwardRef as forwardRef46 } from "react";
12262
- import { jsx as jsx78 } from "react/jsx-runtime";
12263
- var StnSideNavSpacer = forwardRef46(function StnSideNavSpacer2({ className, style, ...rest }, ref) {
12264
- return /* @__PURE__ */ jsx78(
12962
+ import { forwardRef as forwardRef49 } from "react";
12963
+ import { jsx as jsx81 } from "react/jsx-runtime";
12964
+ var StnSideNavSpacer = forwardRef49(function StnSideNavSpacer2({ className, style, ...rest }, ref) {
12965
+ return /* @__PURE__ */ jsx81(
12265
12966
  "div",
12266
12967
  {
12267
12968
  ref,
@@ -12274,10 +12975,10 @@ var StnSideNavSpacer = forwardRef46(function StnSideNavSpacer2({ className, styl
12274
12975
  });
12275
12976
 
12276
12977
  // src/components/sideNav/StnSideNavFooter.tsx
12277
- import { forwardRef as forwardRef47 } from "react";
12278
- import { jsx as jsx79 } from "react/jsx-runtime";
12279
- var StnSideNavFooter = forwardRef47(function StnSideNavFooter2({ curved = false, children, className, ...rest }, ref) {
12280
- return /* @__PURE__ */ jsx79(
12978
+ import { forwardRef as forwardRef50 } from "react";
12979
+ import { jsx as jsx82 } from "react/jsx-runtime";
12980
+ var StnSideNavFooter = forwardRef50(function StnSideNavFooter2({ curved = false, children, className, ...rest }, ref) {
12981
+ return /* @__PURE__ */ jsx82(
12281
12982
  "nav",
12282
12983
  {
12283
12984
  ref,
@@ -12290,12 +12991,12 @@ var StnSideNavFooter = forwardRef47(function StnSideNavFooter2({ curved = false,
12290
12991
  });
12291
12992
 
12292
12993
  // src/components/sideNav/StnSideNavToggle.tsx
12293
- import { forwardRef as forwardRef48 } from "react";
12294
- import { jsx as jsx80 } from "react/jsx-runtime";
12295
- var StnSideNavToggle = forwardRef48(
12994
+ import { forwardRef as forwardRef51 } from "react";
12995
+ import { jsx as jsx83 } from "react/jsx-runtime";
12996
+ var StnSideNavToggle = forwardRef51(
12296
12997
  function StnSideNavToggle2({ className, onClick, ...rest }, ref) {
12297
12998
  const { collapsed, onToggleCollapse } = useSideNav();
12298
- return /* @__PURE__ */ jsx80(
12999
+ return /* @__PURE__ */ jsx83(
12299
13000
  "button",
12300
13001
  {
12301
13002
  ref,
@@ -12308,7 +13009,7 @@ var StnSideNavToggle = forwardRef48(
12308
13009
  "aria-label": collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
12309
13010
  title: collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
12310
13011
  ...rest,
12311
- children: /* @__PURE__ */ jsx80(
13012
+ children: /* @__PURE__ */ jsx83(
12312
13013
  "svg",
12313
13014
  {
12314
13015
  width: "12",
@@ -12319,7 +13020,7 @@ var StnSideNavToggle = forwardRef48(
12319
13020
  strokeWidth: "2.5",
12320
13021
  strokeLinecap: "round",
12321
13022
  strokeLinejoin: "round",
12322
- children: /* @__PURE__ */ jsx80("path", { d: "M9 18l6-6-6-6" })
13023
+ children: /* @__PURE__ */ jsx83("path", { d: "M9 18l6-6-6-6" })
12323
13024
  }
12324
13025
  )
12325
13026
  }
@@ -12328,30 +13029,30 @@ var StnSideNavToggle = forwardRef48(
12328
13029
  );
12329
13030
 
12330
13031
  // src/components/sideNav/StnSideNavWatermark.tsx
12331
- import { forwardRef as forwardRef49 } from "react";
12332
- import { jsx as jsx81 } from "react/jsx-runtime";
12333
- var StnSideNavWatermark = forwardRef49(
13032
+ import { forwardRef as forwardRef52 } from "react";
13033
+ import { jsx as jsx84 } from "react/jsx-runtime";
13034
+ var StnSideNavWatermark = forwardRef52(
12334
13035
  function StnSideNavWatermark2({ size = "xl", mode, theme, className, ...rest }, ref) {
12335
- return /* @__PURE__ */ jsx81(
13036
+ return /* @__PURE__ */ jsx84(
12336
13037
  "div",
12337
13038
  {
12338
13039
  ref,
12339
13040
  className: cn("stn-side-nav__watermark", className),
12340
13041
  "aria-hidden": "true",
12341
13042
  ...rest,
12342
- children: /* @__PURE__ */ jsx81(StnLogo, { variant: "watermark", size, mode: mode ?? theme })
13043
+ children: /* @__PURE__ */ jsx84(StnLogo, { variant: "watermark", size, mode: mode ?? theme })
12343
13044
  }
12344
13045
  );
12345
13046
  }
12346
13047
  );
12347
13048
 
12348
13049
  // src/components/sideNav/StnSideNavMobileTrigger.tsx
12349
- import { forwardRef as forwardRef50, useEffect as useEffect17, useState as useState21 } from "react";
12350
- import { jsx as jsx82, jsxs as jsxs62 } from "react/jsx-runtime";
12351
- var StnSideNavMobileTrigger = forwardRef50(
13050
+ import { forwardRef as forwardRef53, useEffect as useEffect17, useState as useState22 } from "react";
13051
+ import { jsx as jsx85, jsxs as jsxs65 } from "react/jsx-runtime";
13052
+ var StnSideNavMobileTrigger = forwardRef53(
12352
13053
  function StnSideNavMobileTrigger2({ floating = false, className, children, onClick, ...rest }, ref) {
12353
13054
  const { onToggleMobileOpen, mobileOpen: contextMobileOpen } = useSideNav();
12354
- const [fallbackMobileOpen, setFallbackMobileOpen] = useState21(false);
13055
+ const [fallbackMobileOpen, setFallbackMobileOpen] = useState22(false);
12355
13056
  useEffect17(() => {
12356
13057
  if (onToggleMobileOpen) return;
12357
13058
  const handleStateChange = (e) => {
@@ -12366,7 +13067,7 @@ var StnSideNavMobileTrigger = forwardRef50(
12366
13067
  };
12367
13068
  }, [onToggleMobileOpen]);
12368
13069
  const isMobileOpen = onToggleMobileOpen ? contextMobileOpen : fallbackMobileOpen;
12369
- return /* @__PURE__ */ jsx82(
13070
+ return /* @__PURE__ */ jsx85(
12370
13071
  "button",
12371
13072
  {
12372
13073
  ref,
@@ -12388,10 +13089,10 @@ var StnSideNavMobileTrigger = forwardRef50(
12388
13089
  }
12389
13090
  },
12390
13091
  ...rest,
12391
- children: children ?? /* @__PURE__ */ jsxs62("span", { className: "stn-side-nav__hamburger-bars", "aria-hidden": "true", children: [
12392
- /* @__PURE__ */ jsx82("span", {}),
12393
- /* @__PURE__ */ jsx82("span", {}),
12394
- /* @__PURE__ */ jsx82("span", {})
13092
+ children: children ?? /* @__PURE__ */ jsxs65("span", { className: "stn-side-nav__hamburger-bars", "aria-hidden": "true", children: [
13093
+ /* @__PURE__ */ jsx85("span", {}),
13094
+ /* @__PURE__ */ jsx85("span", {}),
13095
+ /* @__PURE__ */ jsx85("span", {})
12395
13096
  ] })
12396
13097
  }
12397
13098
  );
@@ -12400,12 +13101,12 @@ var StnSideNavMobileTrigger = forwardRef50(
12400
13101
 
12401
13102
  // src/components/sideNav/StnSideNavSub.tsx
12402
13103
  import {
12403
- forwardRef as forwardRef51
13104
+ forwardRef as forwardRef54
12404
13105
  } from "react";
12405
- import { jsx as jsx83 } from "react/jsx-runtime";
12406
- var StnSideNavSub = forwardRef51(
13106
+ import { jsx as jsx86 } from "react/jsx-runtime";
13107
+ var StnSideNavSub = forwardRef54(
12407
13108
  function StnSideNavSub2({ children, className, ...rest }, ref) {
12408
- return /* @__PURE__ */ jsx83(
13109
+ return /* @__PURE__ */ jsx86(
12409
13110
  "div",
12410
13111
  {
12411
13112
  ref,
@@ -12418,7 +13119,7 @@ var StnSideNavSub = forwardRef51(
12418
13119
  );
12419
13120
  }
12420
13121
  );
12421
- var StnSideNavSubItem = forwardRef51(
13122
+ var StnSideNavSubItem = forwardRef54(
12422
13123
  function StnSideNavSubItem2({
12423
13124
  variant = "ghost",
12424
13125
  size = "md",
@@ -12434,14 +13135,14 @@ var StnSideNavSubItem = forwardRef51(
12434
13135
  const { collapsed } = useSideNav();
12435
13136
  const content = children ?? label;
12436
13137
  const computedTitle = title ?? (typeof content === "string" ? content : void 0);
12437
- const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */ jsx83("span", { className: "stn-side-nav__sub-icon", children: /* @__PURE__ */ jsx83(
13138
+ const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */ jsx86("span", { className: "stn-side-nav__sub-icon", children: /* @__PURE__ */ jsx86(
12438
13139
  "span",
12439
13140
  {
12440
13141
  className: "stn-side-nav__sub-glyph",
12441
13142
  style: { maskImage: `url('${iconSrc}')`, WebkitMaskImage: `url('${iconSrc}')` }
12442
13143
  }
12443
13144
  ) }) : null);
12444
- return /* @__PURE__ */ jsx83(
13145
+ return /* @__PURE__ */ jsx86(
12445
13146
  StnButton,
12446
13147
  {
12447
13148
  ref,
@@ -12460,9 +13161,9 @@ var StnSideNavSubItem = forwardRef51(
12460
13161
  );
12461
13162
 
12462
13163
  // src/components/sideNav/StnSideNavSubNav.tsx
12463
- import { forwardRef as forwardRef52 } from "react";
12464
- import { jsx as jsx84 } from "react/jsx-runtime";
12465
- var StnSideNavSubNav = forwardRef52(
13164
+ import { forwardRef as forwardRef55 } from "react";
13165
+ import { jsx as jsx87 } from "react/jsx-runtime";
13166
+ var StnSideNavSubNav = forwardRef55(
12466
13167
  function StnSideNavSubNav2({
12467
13168
  dropdown = false,
12468
13169
  direction = "down",
@@ -12474,7 +13175,7 @@ var StnSideNavSubNav = forwardRef52(
12474
13175
  }, ref) {
12475
13176
  const isUp = direction === "up";
12476
13177
  const isTransparent = variant === "transparent" || background === false;
12477
- return /* @__PURE__ */ jsx84(
13178
+ return /* @__PURE__ */ jsx87(
12478
13179
  "div",
12479
13180
  {
12480
13181
  ref,
@@ -12497,15 +13198,15 @@ var StnSideNavSubNav = forwardRef52(
12497
13198
 
12498
13199
  // src/patterns/sideNav/StnSideNavigation.tsx
12499
13200
  import {
12500
- forwardRef as forwardRef53,
13201
+ forwardRef as forwardRef56,
12501
13202
  useCallback as useCallback11,
12502
13203
  useEffect as useEffect18,
12503
- useMemo as useMemo5,
12504
- useState as useState22
13204
+ useMemo as useMemo6,
13205
+ useState as useState23
12505
13206
  } from "react";
12506
- import { jsx as jsx85, jsxs as jsxs63 } from "react/jsx-runtime";
13207
+ import { jsx as jsx88, jsxs as jsxs66 } from "react/jsx-runtime";
12507
13208
  function useControllableState(controlledValue, defaultValue, onChange) {
12508
- const [internalState, setInternalState] = useState22(defaultValue);
13209
+ const [internalState, setInternalState] = useState23(defaultValue);
12509
13210
  const isControlled = controlledValue !== void 0;
12510
13211
  const value = isControlled ? controlledValue : internalState;
12511
13212
  const setValue = useCallback11(
@@ -12519,7 +13220,7 @@ function useControllableState(controlledValue, defaultValue, onChange) {
12519
13220
  );
12520
13221
  return [value, setValue];
12521
13222
  }
12522
- var StnSideNavigationRoot = forwardRef53(function StnSideNavigationRoot2({
13223
+ var StnSideNavigationRoot = forwardRef56(function StnSideNavigationRoot2({
12523
13224
  variant: variantProp,
12524
13225
  appearance,
12525
13226
  drawerVariant: drawerVariantProp,
@@ -12583,7 +13284,7 @@ var StnSideNavigationRoot = forwardRef53(function StnSideNavigationRoot2({
12583
13284
  const isEffectiveCollapsed = isDrawerMode && mobileOpen ? false : collapsed;
12584
13285
  const activeVariant = isDrawerMode && mobileOpen ? drawerVariant : variant;
12585
13286
  const isGlassmorphism = activeVariant === "glassmorphism";
12586
- const contextValue = useMemo5(
13287
+ const contextValue = useMemo6(
12587
13288
  () => ({
12588
13289
  collapsed: isEffectiveCollapsed,
12589
13290
  activeId,
@@ -12596,9 +13297,9 @@ var StnSideNavigationRoot = forwardRef53(function StnSideNavigationRoot2({
12596
13297
  }),
12597
13298
  [isEffectiveCollapsed, activeId, setActiveId, handleToggleCollapse, mobileOpen, handleToggleMobileOpen, setMobileOpen, isDrawerMode]
12598
13299
  );
12599
- return /* @__PURE__ */ jsxs63(SideNavContext.Provider, { value: contextValue, children: [
12600
- showMobileTrigger && /* @__PURE__ */ jsx85(StnSideNavMobileTrigger, { floating: true }),
12601
- (drawer || responsiveDrawer) && /* @__PURE__ */ jsx85(
13300
+ return /* @__PURE__ */ jsxs66(SideNavContext.Provider, { value: contextValue, children: [
13301
+ showMobileTrigger && /* @__PURE__ */ jsx88(StnSideNavMobileTrigger, { floating: true }),
13302
+ (drawer || responsiveDrawer) && /* @__PURE__ */ jsx88(
12602
13303
  "div",
12603
13304
  {
12604
13305
  className: cn("stn-side-nav__backdrop", mobileOpen && "is-open"),
@@ -12606,7 +13307,7 @@ var StnSideNavigationRoot = forwardRef53(function StnSideNavigationRoot2({
12606
13307
  "aria-hidden": !mobileOpen
12607
13308
  }
12608
13309
  ),
12609
- /* @__PURE__ */ jsx85(
13310
+ /* @__PURE__ */ jsx88(
12610
13311
  "aside",
12611
13312
  {
12612
13313
  ref,
@@ -12650,12 +13351,12 @@ import {
12650
13351
  useEffect as useEffect19,
12651
13352
  useId as useId17,
12652
13353
  useRef as useRef14,
12653
- useState as useState23
13354
+ useState as useState24
12654
13355
  } from "react";
12655
13356
  import {
12656
13357
  STN_BREADCRUMB_ICON_SRC
12657
13358
  } from "@stn-uiux/pub-ui/data/stnBreadcrumb";
12658
- import { Fragment as Fragment14, jsx as jsx86, jsxs as jsxs64 } from "react/jsx-runtime";
13359
+ import { Fragment as Fragment14, jsx as jsx89, jsxs as jsxs67 } from "react/jsx-runtime";
12659
13360
  function maskStyle3(src) {
12660
13361
  return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
12661
13362
  }
@@ -12668,13 +13369,13 @@ function hasSegmentMenu(item) {
12668
13369
  return Boolean(item.menu || item.menuItems && item.menuItems.length > 0);
12669
13370
  }
12670
13371
  function BreadcrumbSeparator() {
12671
- return /* @__PURE__ */ jsx86("li", { className: "separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx86("span", { style: maskStyle3(STN_BREADCRUMB_ICON_SRC.separator) }) });
13372
+ return /* @__PURE__ */ jsx89("li", { className: "separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx89("span", { style: maskStyle3(STN_BREADCRUMB_ICON_SRC.separator) }) });
12672
13373
  }
12673
13374
  function BreadcrumbIcon({ src }) {
12674
- return /* @__PURE__ */ jsx86("span", { className: "stn-breadcrumb__icon-glyph", style: maskStyle3(src), "aria-hidden": "true" });
13375
+ return /* @__PURE__ */ jsx89("span", { className: "stn-breadcrumb__icon-glyph", style: maskStyle3(src), "aria-hidden": "true" });
12675
13376
  }
12676
13377
  function BreadcrumbCaret() {
12677
- return /* @__PURE__ */ jsx86(
13378
+ return /* @__PURE__ */ jsx89(
12678
13379
  "span",
12679
13380
  {
12680
13381
  className: "stn-breadcrumb__caret",
@@ -12688,10 +13389,10 @@ function SegmentContent({
12688
13389
  label,
12689
13390
  menu
12690
13391
  }) {
12691
- return /* @__PURE__ */ jsxs64(Fragment14, { children: [
12692
- iconSrc ? /* @__PURE__ */ jsx86(BreadcrumbIcon, { src: iconSrc }) : null,
12693
- /* @__PURE__ */ jsx86("span", { className: "stn-breadcrumb__label", children: label }),
12694
- menu ? /* @__PURE__ */ jsx86(BreadcrumbCaret, {}) : null
13392
+ return /* @__PURE__ */ jsxs67(Fragment14, { children: [
13393
+ iconSrc ? /* @__PURE__ */ jsx89(BreadcrumbIcon, { src: iconSrc }) : null,
13394
+ /* @__PURE__ */ jsx89("span", { className: "stn-breadcrumb__label", children: label }),
13395
+ menu ? /* @__PURE__ */ jsx89(BreadcrumbCaret, {}) : null
12695
13396
  ] });
12696
13397
  }
12697
13398
  function BreadcrumbMenuList({
@@ -12699,7 +13400,7 @@ function BreadcrumbMenuList({
12699
13400
  items,
12700
13401
  onPick
12701
13402
  }) {
12702
- return /* @__PURE__ */ jsx86("ul", { id, className: "stn-breadcrumb__menu", role: "menu", children: items.map((option) => /* @__PURE__ */ jsx86("li", { role: "none", children: option.href ? /* @__PURE__ */ jsx86(
13403
+ return /* @__PURE__ */ jsx89("ul", { id, className: "stn-breadcrumb__menu", role: "menu", children: items.map((option) => /* @__PURE__ */ jsx89("li", { role: "none", children: option.href ? /* @__PURE__ */ jsx89(
12703
13404
  "a",
12704
13405
  {
12705
13406
  role: "menuitem",
@@ -12711,7 +13412,7 @@ function BreadcrumbMenuList({
12711
13412
  },
12712
13413
  children: option.label
12713
13414
  }
12714
- ) : /* @__PURE__ */ jsx86(
13415
+ ) : /* @__PURE__ */ jsx89(
12715
13416
  "button",
12716
13417
  {
12717
13418
  type: "button",
@@ -12749,19 +13450,19 @@ function BreadcrumbSegment({
12749
13450
  isCurrent
12750
13451
  }) {
12751
13452
  const menuId = useId17();
12752
- const [open, setOpen] = useState23(false);
13453
+ const [open, setOpen] = useState24(false);
12753
13454
  const menuItems = item.menuItems ?? [];
12754
13455
  const showMenu = hasSegmentMenu(item) && !isCurrent;
12755
13456
  const canOpenMenu = showMenu && menuItems.length > 0;
12756
13457
  const rootRef = useDismissibleMenu(open, () => setOpen(false));
12757
13458
  const iconSrc = resolveIconSrc(item);
12758
- const content = /* @__PURE__ */ jsx86(SegmentContent, { iconSrc, label: item.label, menu: showMenu });
13459
+ const content = /* @__PURE__ */ jsx89(SegmentContent, { iconSrc, label: item.label, menu: showMenu });
12759
13460
  if (isCurrent) {
12760
- return /* @__PURE__ */ jsx86("span", { className: "stn-breadcrumb__segment", "aria-current": "page", "aria-label": item.label, children: content });
13461
+ return /* @__PURE__ */ jsx89("span", { className: "stn-breadcrumb__segment", "aria-current": "page", "aria-label": item.label, children: content });
12761
13462
  }
12762
13463
  if (canOpenMenu) {
12763
- return /* @__PURE__ */ jsxs64("span", { ref: rootRef, className: "stn-breadcrumb__segment-wrap", children: [
12764
- /* @__PURE__ */ jsx86(
13464
+ return /* @__PURE__ */ jsxs67("span", { ref: rootRef, className: "stn-breadcrumb__segment-wrap", children: [
13465
+ /* @__PURE__ */ jsx89(
12765
13466
  "button",
12766
13467
  {
12767
13468
  type: "button",
@@ -12777,7 +13478,7 @@ function BreadcrumbSegment({
12777
13478
  children: content
12778
13479
  }
12779
13480
  ),
12780
- open ? /* @__PURE__ */ jsx86(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
13481
+ open ? /* @__PURE__ */ jsx89(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
12781
13482
  ] });
12782
13483
  }
12783
13484
  if (item.menu || item.onClick) {
@@ -12789,7 +13490,7 @@ function BreadcrumbSegment({
12789
13490
  "aria-haspopup": item.menu ? "menu" : void 0,
12790
13491
  "aria-expanded": item.menu ? false : void 0
12791
13492
  };
12792
- return /* @__PURE__ */ jsx86("button", { ...buttonProps, children: content });
13493
+ return /* @__PURE__ */ jsx89("button", { ...buttonProps, children: content });
12793
13494
  }
12794
13495
  if (item.href) {
12795
13496
  const linkProps = {
@@ -12798,17 +13499,17 @@ function BreadcrumbSegment({
12798
13499
  onClick: item.onClick,
12799
13500
  "aria-label": item.label
12800
13501
  };
12801
- return /* @__PURE__ */ jsx86("a", { ...linkProps, children: content });
13502
+ return /* @__PURE__ */ jsx89("a", { ...linkProps, children: content });
12802
13503
  }
12803
- return /* @__PURE__ */ jsx86("span", { className: "stn-breadcrumb__segment", "aria-label": item.label, children: content });
13504
+ return /* @__PURE__ */ jsx89("span", { className: "stn-breadcrumb__segment", "aria-label": item.label, children: content });
12804
13505
  }
12805
13506
  function BreadcrumbBack({
12806
13507
  label,
12807
13508
  href,
12808
13509
  onClick
12809
13510
  }) {
12810
- const content = /* @__PURE__ */ jsxs64(Fragment14, { children: [
12811
- /* @__PURE__ */ jsx86(
13511
+ const content = /* @__PURE__ */ jsxs67(Fragment14, { children: [
13512
+ /* @__PURE__ */ jsx89(
12812
13513
  "span",
12813
13514
  {
12814
13515
  className: "stn-breadcrumb__back-glyph",
@@ -12816,12 +13517,12 @@ function BreadcrumbBack({
12816
13517
  "aria-hidden": "true"
12817
13518
  }
12818
13519
  ),
12819
- /* @__PURE__ */ jsx86("span", { className: "stn-breadcrumb__label", children: label })
13520
+ /* @__PURE__ */ jsx89("span", { className: "stn-breadcrumb__label", children: label })
12820
13521
  ] });
12821
13522
  if (href) {
12822
- return /* @__PURE__ */ jsx86("a", { className: "stn-breadcrumb__back", href, onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
13523
+ return /* @__PURE__ */ jsx89("a", { className: "stn-breadcrumb__back", href, onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
12823
13524
  }
12824
- return /* @__PURE__ */ jsx86("button", { type: "button", className: "stn-breadcrumb__back", onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
13525
+ return /* @__PURE__ */ jsx89("button", { type: "button", className: "stn-breadcrumb__back", onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
12825
13526
  }
12826
13527
  function splitCollapsedItems(items, maxItems, itemsBeforeCollapse, itemsAfterCollapse) {
12827
13528
  if (!maxItems || items.length <= maxItems) {
@@ -12843,7 +13544,7 @@ function BreadcrumbCollapsed({
12843
13544
  items,
12844
13545
  menuId
12845
13546
  }) {
12846
- const [open, setOpen] = useState23(false);
13547
+ const [open, setOpen] = useState24(false);
12847
13548
  const rootRef = useDismissibleMenu(open, () => setOpen(false));
12848
13549
  const menuItems = items.map((item) => ({
12849
13550
  id: item.id,
@@ -12852,8 +13553,8 @@ function BreadcrumbCollapsed({
12852
13553
  onClick: item.onClick,
12853
13554
  current: item.current
12854
13555
  }));
12855
- return /* @__PURE__ */ jsxs64("li", { className: "stn-breadcrumb__item", ref: rootRef, children: [
12856
- /* @__PURE__ */ jsx86(
13556
+ return /* @__PURE__ */ jsxs67("li", { className: "stn-breadcrumb__item", ref: rootRef, children: [
13557
+ /* @__PURE__ */ jsx89(
12857
13558
  "button",
12858
13559
  {
12859
13560
  type: "button",
@@ -12866,7 +13567,7 @@ function BreadcrumbCollapsed({
12866
13567
  children: "\u22EF"
12867
13568
  }
12868
13569
  ),
12869
- open ? /* @__PURE__ */ jsx86(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
13570
+ open ? /* @__PURE__ */ jsx89(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
12870
13571
  ] });
12871
13572
  }
12872
13573
  function StnBreadcrumb({
@@ -12902,8 +13603,8 @@ function StnBreadcrumb({
12902
13603
  );
12903
13604
  const renderTrailItem = (item) => {
12904
13605
  const isCurrent = Boolean(item.current) || item.id === targetCurrentId;
12905
- const segment = /* @__PURE__ */ jsx86(BreadcrumbSegment, { item, isCurrent });
12906
- return /* @__PURE__ */ jsx86(
13606
+ const segment = /* @__PURE__ */ jsx89(BreadcrumbSegment, { item, isCurrent });
13607
+ return /* @__PURE__ */ jsx89(
12907
13608
  "li",
12908
13609
  {
12909
13610
  className: cn(
@@ -12914,7 +13615,7 @@ function StnBreadcrumb({
12914
13615
  }
12915
13616
  );
12916
13617
  };
12917
- return /* @__PURE__ */ jsx86(
13618
+ return /* @__PURE__ */ jsx89(
12918
13619
  "nav",
12919
13620
  {
12920
13621
  className: cn(
@@ -12925,29 +13626,29 @@ function StnBreadcrumb({
12925
13626
  className
12926
13627
  ),
12927
13628
  "aria-label": "Breadcrumb",
12928
- children: /* @__PURE__ */ jsxs64("ol", { className: "stn-breadcrumb__list", children: [
12929
- currentItem ? /* @__PURE__ */ jsx86("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--back", children: /* @__PURE__ */ jsx86(BreadcrumbBack, { label: currentItem.label, href: backHref, onClick: backOnClick }) }) : null,
12930
- !reverse && showHome ? /* @__PURE__ */ jsx86("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs64("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
12931
- /* @__PURE__ */ jsx86(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
12932
- /* @__PURE__ */ jsx86("span", { className: "blind", children: homeLabel })
13629
+ children: /* @__PURE__ */ jsxs67("ol", { className: "stn-breadcrumb__list", children: [
13630
+ currentItem ? /* @__PURE__ */ jsx89("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--back", children: /* @__PURE__ */ jsx89(BreadcrumbBack, { label: currentItem.label, href: backHref, onClick: backOnClick }) }) : null,
13631
+ !reverse && showHome ? /* @__PURE__ */ jsx89("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs67("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
13632
+ /* @__PURE__ */ jsx89(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
13633
+ /* @__PURE__ */ jsx89("span", { className: "blind", children: homeLabel })
12933
13634
  ] }) }) : null,
12934
- head.map((item, index) => /* @__PURE__ */ jsxs64(Fragment13, { children: [
12935
- !reverse && (showHome || index > 0 || leadSeparator) || reverse && (index > 0 || leadSeparator) ? /* @__PURE__ */ jsx86(BreadcrumbSeparator, {}) : null,
13635
+ head.map((item, index) => /* @__PURE__ */ jsxs67(Fragment13, { children: [
13636
+ !reverse && (showHome || index > 0 || leadSeparator) || reverse && (index > 0 || leadSeparator) ? /* @__PURE__ */ jsx89(BreadcrumbSeparator, {}) : null,
12936
13637
  renderTrailItem(item)
12937
13638
  ] }, item.id)),
12938
- hidden.length > 0 ? /* @__PURE__ */ jsxs64(Fragment14, { children: [
12939
- /* @__PURE__ */ jsx86(BreadcrumbSeparator, {}),
12940
- /* @__PURE__ */ jsx86(BreadcrumbCollapsed, { items: hidden, menuId })
13639
+ hidden.length > 0 ? /* @__PURE__ */ jsxs67(Fragment14, { children: [
13640
+ /* @__PURE__ */ jsx89(BreadcrumbSeparator, {}),
13641
+ /* @__PURE__ */ jsx89(BreadcrumbCollapsed, { items: hidden, menuId })
12941
13642
  ] }) : null,
12942
- tail.map((item) => /* @__PURE__ */ jsxs64(Fragment13, { children: [
12943
- /* @__PURE__ */ jsx86(BreadcrumbSeparator, {}),
13643
+ tail.map((item) => /* @__PURE__ */ jsxs67(Fragment13, { children: [
13644
+ /* @__PURE__ */ jsx89(BreadcrumbSeparator, {}),
12944
13645
  renderTrailItem(item)
12945
13646
  ] }, item.id)),
12946
- reverse && showHome ? /* @__PURE__ */ jsxs64(Fragment14, { children: [
12947
- /* @__PURE__ */ jsx86(BreadcrumbSeparator, {}),
12948
- /* @__PURE__ */ jsx86("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs64("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
12949
- /* @__PURE__ */ jsx86(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
12950
- /* @__PURE__ */ jsx86("span", { className: "blind", children: homeLabel })
13647
+ reverse && showHome ? /* @__PURE__ */ jsxs67(Fragment14, { children: [
13648
+ /* @__PURE__ */ jsx89(BreadcrumbSeparator, {}),
13649
+ /* @__PURE__ */ jsx89("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs67("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
13650
+ /* @__PURE__ */ jsx89(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
13651
+ /* @__PURE__ */ jsx89("span", { className: "blind", children: homeLabel })
12951
13652
  ] }) })
12952
13653
  ] }) : null
12953
13654
  ] })
@@ -12956,9 +13657,9 @@ function StnBreadcrumb({
12956
13657
  }
12957
13658
 
12958
13659
  // src/components/StnHeaderTitle.tsx
12959
- import { useEffect as useEffect20, useState as useState24 } from "react";
13660
+ import { useEffect as useEffect20, useState as useState25 } from "react";
12960
13661
  import { STN_HEADER_TITLE_FRAME } from "@stn-uiux/pub-ui/data/stnHeaderTitle";
12961
- import { jsx as jsx87, jsxs as jsxs65 } from "react/jsx-runtime";
13662
+ import { jsx as jsx90, jsxs as jsxs68 } from "react/jsx-runtime";
12962
13663
  var KO_WEEKDAY_SHORT = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
12963
13664
  var KO_WEEKDAY_LONG = [
12964
13665
  "\uC77C\uC694\uC77C",
@@ -12997,8 +13698,8 @@ function formatStnHeaderTitleTime(date, options) {
12997
13698
  }
12998
13699
  function HeaderTitleFrame({ preview = false }) {
12999
13700
  const frameClass = preview ? "stn-header-title__frame-preview" : "stn-header-title__frame";
13000
- return /* @__PURE__ */ jsxs65("div", { className: frameClass, "aria-hidden": "true", children: [
13001
- /* @__PURE__ */ jsx87("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--outer", children: /* @__PURE__ */ jsx87(
13701
+ return /* @__PURE__ */ jsxs68("div", { className: frameClass, "aria-hidden": "true", children: [
13702
+ /* @__PURE__ */ jsx90("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--outer", children: /* @__PURE__ */ jsx90(
13002
13703
  "img",
13003
13704
  {
13004
13705
  className: "stn-header-title__frame-img",
@@ -13007,8 +13708,8 @@ function HeaderTitleFrame({ preview = false }) {
13007
13708
  draggable: false
13008
13709
  }
13009
13710
  ) }),
13010
- /* @__PURE__ */ jsxs65("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--inner", children: [
13011
- /* @__PURE__ */ jsx87(
13711
+ /* @__PURE__ */ jsxs68("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--inner", children: [
13712
+ /* @__PURE__ */ jsx90(
13012
13713
  "img",
13013
13714
  {
13014
13715
  className: "stn-header-title__frame-img stn-header-title__frame-img--dark",
@@ -13017,7 +13718,7 @@ function HeaderTitleFrame({ preview = false }) {
13017
13718
  draggable: false
13018
13719
  }
13019
13720
  ),
13020
- /* @__PURE__ */ jsx87(
13721
+ /* @__PURE__ */ jsx90(
13021
13722
  "img",
13022
13723
  {
13023
13724
  className: "stn-header-title__frame-img stn-header-title__frame-img--light",
@@ -13030,10 +13731,10 @@ function HeaderTitleFrame({ preview = false }) {
13030
13731
  ] });
13031
13732
  }
13032
13733
  function StnHeaderTitleFramePreview({ className }) {
13033
- return /* @__PURE__ */ jsx87("div", { className: cn("stn-header-title__frame-only", className), children: /* @__PURE__ */ jsx87(HeaderTitleFrame, { preview: true }) });
13734
+ return /* @__PURE__ */ jsx90("div", { className: cn("stn-header-title__frame-only", className), children: /* @__PURE__ */ jsx90(HeaderTitleFrame, { preview: true }) });
13034
13735
  }
13035
13736
  function useLiveClock(enabled) {
13036
- const [now, setNow] = useState24(() => /* @__PURE__ */ new Date());
13737
+ const [now, setNow] = useState25(() => /* @__PURE__ */ new Date());
13037
13738
  useEffect20(() => {
13038
13739
  if (!enabled) return;
13039
13740
  const id = window.setInterval(() => setNow(/* @__PURE__ */ new Date()), 1e3);
@@ -13046,35 +13747,35 @@ function StnHeaderTitleMainText({
13046
13747
  children,
13047
13748
  ...rest
13048
13749
  }) {
13049
- return /* @__PURE__ */ jsx87("h1", { className: cn("stn-header-title__text", className), ...rest, children });
13750
+ return /* @__PURE__ */ jsx90("h1", { className: cn("stn-header-title__text", className), ...rest, children });
13050
13751
  }
13051
13752
  function StnHeaderTitleSubText({
13052
13753
  className,
13053
13754
  children,
13054
13755
  ...rest
13055
13756
  }) {
13056
- return /* @__PURE__ */ jsx87("span", { className: cn("stn-header-title__sub-text", className), ...rest, children });
13757
+ return /* @__PURE__ */ jsx90("span", { className: cn("stn-header-title__sub-text", className), ...rest, children });
13057
13758
  }
13058
13759
  function StnHeaderTitleDate({
13059
13760
  className,
13060
13761
  children,
13061
13762
  ...rest
13062
13763
  }) {
13063
- return /* @__PURE__ */ jsx87("time", { className: cn("stn-header-title__date", className), ...rest, children });
13764
+ return /* @__PURE__ */ jsx90("time", { className: cn("stn-header-title__date", className), ...rest, children });
13064
13765
  }
13065
13766
  function StnHeaderTitleWeekday({
13066
13767
  className,
13067
13768
  children,
13068
13769
  ...rest
13069
13770
  }) {
13070
- return /* @__PURE__ */ jsx87("span", { className: cn("stn-header-title__weekday", className), ...rest, children });
13771
+ return /* @__PURE__ */ jsx90("span", { className: cn("stn-header-title__weekday", className), ...rest, children });
13071
13772
  }
13072
13773
  function StnHeaderTitleTime({
13073
13774
  className,
13074
13775
  children,
13075
13776
  ...rest
13076
13777
  }) {
13077
- return /* @__PURE__ */ jsx87("span", { className: cn("stn-header-title__time", className), "aria-label": "\uD604\uC7AC \uC2DC\uAC01", ...rest, children });
13778
+ return /* @__PURE__ */ jsx90("span", { className: cn("stn-header-title__time", className), "aria-label": "\uD604\uC7AC \uC2DC\uAC01", ...rest, children });
13078
13779
  }
13079
13780
  function StnHeaderTitleClock({
13080
13781
  className,
@@ -13097,7 +13798,7 @@ function StnHeaderTitleClock({
13097
13798
  }) {
13098
13799
  const now = useLiveClock(live);
13099
13800
  if (children != null) {
13100
- return /* @__PURE__ */ jsxs65(
13801
+ return /* @__PURE__ */ jsxs68(
13101
13802
  "header",
13102
13803
  {
13103
13804
  className: cn(
@@ -13109,8 +13810,8 @@ function StnHeaderTitleClock({
13109
13810
  ),
13110
13811
  ...rest,
13111
13812
  children: [
13112
- framed ? /* @__PURE__ */ jsx87(HeaderTitleFrame, {}) : null,
13113
- /* @__PURE__ */ jsx87("div", { className: "stn-header-title__content", children })
13813
+ framed ? /* @__PURE__ */ jsx90(HeaderTitleFrame, {}) : null,
13814
+ /* @__PURE__ */ jsx90("div", { className: "stn-header-title__content", children })
13114
13815
  ]
13115
13816
  }
13116
13817
  );
@@ -13140,7 +13841,7 @@ function StnHeaderTitleClock({
13140
13841
  resolvedTime = formatStnHeaderTitleTime(now, { showSeconds });
13141
13842
  }
13142
13843
  }
13143
- return /* @__PURE__ */ jsxs65(
13844
+ return /* @__PURE__ */ jsxs68(
13144
13845
  "header",
13145
13846
  {
13146
13847
  className: cn(
@@ -13152,11 +13853,11 @@ function StnHeaderTitleClock({
13152
13853
  ),
13153
13854
  ...rest,
13154
13855
  children: [
13155
- framed ? /* @__PURE__ */ jsx87(HeaderTitleFrame, {}) : null,
13156
- /* @__PURE__ */ jsxs65("div", { className: "stn-header-title__content", children: [
13157
- resolvedDate ? /* @__PURE__ */ jsx87("time", { className: "stn-header-title__date", dateTime: resolvedDate, children: resolvedDate }) : null,
13158
- showWeekdayOnly ? /* @__PURE__ */ jsx87("span", { className: "stn-header-title__weekday", children: resolvedWeekday }) : null,
13159
- resolvedTime ? /* @__PURE__ */ jsx87("span", { className: "stn-header-title__time", "aria-label": "\uD604\uC7AC \uC2DC\uAC01", children: resolvedTime }) : null
13856
+ framed ? /* @__PURE__ */ jsx90(HeaderTitleFrame, {}) : null,
13857
+ /* @__PURE__ */ jsxs68("div", { className: "stn-header-title__content", children: [
13858
+ resolvedDate ? /* @__PURE__ */ jsx90("time", { className: "stn-header-title__date", dateTime: resolvedDate, children: resolvedDate }) : null,
13859
+ showWeekdayOnly ? /* @__PURE__ */ jsx90("span", { className: "stn-header-title__weekday", children: resolvedWeekday }) : null,
13860
+ resolvedTime ? /* @__PURE__ */ jsx90("span", { className: "stn-header-title__time", "aria-label": "\uD604\uC7AC \uC2DC\uAC01", children: resolvedTime }) : null
13160
13861
  ] })
13161
13862
  ]
13162
13863
  }
@@ -13173,7 +13874,7 @@ function StnHeaderTitleDual({
13173
13874
  ...rest
13174
13875
  }) {
13175
13876
  const resolvedMain = mainText ?? title ?? children;
13176
- return /* @__PURE__ */ jsxs65(
13877
+ return /* @__PURE__ */ jsxs68(
13177
13878
  "header",
13178
13879
  {
13179
13880
  className: cn(
@@ -13185,10 +13886,10 @@ function StnHeaderTitleDual({
13185
13886
  ),
13186
13887
  ...rest,
13187
13888
  children: [
13188
- framed ? /* @__PURE__ */ jsx87(HeaderTitleFrame, {}) : null,
13189
- /* @__PURE__ */ jsxs65("div", { className: "stn-header-title__content", children: [
13190
- subText != null ? /* @__PURE__ */ jsx87("span", { className: "stn-header-title__sub-text", children: subText }) : null,
13191
- resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */ jsx87("h1", { className: "stn-header-title__text", children: resolvedMain }) : resolvedMain : null
13889
+ framed ? /* @__PURE__ */ jsx90(HeaderTitleFrame, {}) : null,
13890
+ /* @__PURE__ */ jsxs68("div", { className: "stn-header-title__content", children: [
13891
+ subText != null ? /* @__PURE__ */ jsx90("span", { className: "stn-header-title__sub-text", children: subText }) : null,
13892
+ resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */ jsx90("h1", { className: "stn-header-title__text", children: resolvedMain }) : resolvedMain : null
13192
13893
  ] })
13193
13894
  ]
13194
13895
  }
@@ -13203,7 +13904,7 @@ function StnHeaderTitleText({
13203
13904
  ...rest
13204
13905
  }) {
13205
13906
  const resolved = title ?? children;
13206
- return /* @__PURE__ */ jsxs65(
13907
+ return /* @__PURE__ */ jsxs68(
13207
13908
  "header",
13208
13909
  {
13209
13910
  className: cn(
@@ -13215,20 +13916,20 @@ function StnHeaderTitleText({
13215
13916
  ),
13216
13917
  ...rest,
13217
13918
  children: [
13218
- framed ? /* @__PURE__ */ jsx87(HeaderTitleFrame, {}) : null,
13219
- /* @__PURE__ */ jsx87("div", { className: "stn-header-title__content", children: typeof resolved === "string" || typeof resolved === "number" ? /* @__PURE__ */ jsx87("h1", { className: "stn-header-title__text", children: resolved }) : resolved })
13919
+ framed ? /* @__PURE__ */ jsx90(HeaderTitleFrame, {}) : null,
13920
+ /* @__PURE__ */ jsx90("div", { className: "stn-header-title__content", children: typeof resolved === "string" || typeof resolved === "number" ? /* @__PURE__ */ jsx90("h1", { className: "stn-header-title__text", children: resolved }) : resolved })
13220
13921
  ]
13221
13922
  }
13222
13923
  );
13223
13924
  }
13224
13925
  function StnHeaderTitleRoot(props) {
13225
13926
  if (props.variant === "clock") {
13226
- return /* @__PURE__ */ jsx87(StnHeaderTitleClock, { ...props });
13927
+ return /* @__PURE__ */ jsx90(StnHeaderTitleClock, { ...props });
13227
13928
  }
13228
13929
  if (props.variant === "dual" || "subText" in props && props.subText != null) {
13229
- return /* @__PURE__ */ jsx87(StnHeaderTitleDual, { ...props });
13930
+ return /* @__PURE__ */ jsx90(StnHeaderTitleDual, { ...props });
13230
13931
  }
13231
- return /* @__PURE__ */ jsx87(StnHeaderTitleText, { ...props });
13932
+ return /* @__PURE__ */ jsx90(StnHeaderTitleText, { ...props });
13232
13933
  }
13233
13934
  var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
13234
13935
  Text: StnHeaderTitleMainText,
@@ -13241,10 +13942,10 @@ var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
13241
13942
 
13242
13943
  // src/layouts/StnContainer.tsx
13243
13944
  import {
13244
- forwardRef as forwardRef54
13945
+ forwardRef as forwardRef57
13245
13946
  } from "react";
13246
- import { jsx as jsx88 } from "react/jsx-runtime";
13247
- var StnContainer = forwardRef54(function StnContainer2({
13947
+ import { jsx as jsx91 } from "react/jsx-runtime";
13948
+ var StnContainer = forwardRef57(function StnContainer2({
13248
13949
  component,
13249
13950
  as,
13250
13951
  maxWidth = "lg",
@@ -13277,7 +13978,7 @@ var StnContainer = forwardRef54(function StnContainer2({
13277
13978
  const noBottom = noAll || disablePaddingBottom || disablePaddingY || paddingBottom === 0 || paddingBottom === "none" || paddingBottom === false || isPaddingObj && (padding.bottom === 0 || padding.bottom === "none" || padding.bottom === false || padding.y === 0 || padding.y === "none" || padding.y === false);
13278
13979
  const noLeft = noAll || disableGutters || disablePaddingLeft || disablePaddingX || paddingLeft === 0 || paddingLeft === "none" || paddingLeft === false || isPaddingObj && (padding.left === 0 || padding.left === "none" || padding.left === false || padding.x === 0 || padding.x === "none" || padding.x === false);
13279
13980
  const noRight = noAll || disableGutters || disablePaddingRight || disablePaddingX || paddingRight === 0 || paddingRight === "none" || paddingRight === false || isPaddingObj && (padding.right === 0 || padding.right === "none" || padding.right === false || padding.x === 0 || padding.x === "none" || padding.x === false);
13280
- return /* @__PURE__ */ jsx88(
13981
+ return /* @__PURE__ */ jsx91(
13281
13982
  Component,
13282
13983
  {
13283
13984
  ref,
@@ -13310,8 +14011,8 @@ var StnContainer = forwardRef54(function StnContainer2({
13310
14011
  });
13311
14012
 
13312
14013
  // src/layouts/StnGrid.tsx
13313
- import { forwardRef as forwardRef55 } from "react";
13314
- import { jsx as jsx89 } from "react/jsx-runtime";
14014
+ import { forwardRef as forwardRef58 } from "react";
14015
+ import { jsx as jsx92 } from "react/jsx-runtime";
13315
14016
  var BREAKPOINTS2 = ["xs", "sm", "md", "lg", "xl"];
13316
14017
  var SPACING_CLASS = {
13317
14018
  "0": "0",
@@ -13377,7 +14078,7 @@ function sizeClasses(size) {
13377
14078
  }
13378
14079
  return classes;
13379
14080
  }
13380
- var StnGrid = forwardRef55(function StnGrid2({
14081
+ var StnGrid = forwardRef58(function StnGrid2({
13381
14082
  component,
13382
14083
  as,
13383
14084
  container = false,
@@ -13397,7 +14098,7 @@ var StnGrid = forwardRef55(function StnGrid2({
13397
14098
  const Component = component ?? as ?? "div";
13398
14099
  const justify = typeof justifyContent === "string" && JUSTIFY_CLASS2.has(justifyContent) ? justifyContent : void 0;
13399
14100
  const align = typeof alignItems === "string" && ALIGN_CLASS2.has(alignItems) ? alignItems : void 0;
13400
- return /* @__PURE__ */ jsx89(
14101
+ return /* @__PURE__ */ jsx92(
13401
14102
  Component,
13402
14103
  {
13403
14104
  ref,
@@ -13421,7 +14122,7 @@ var StnGrid = forwardRef55(function StnGrid2({
13421
14122
  });
13422
14123
 
13423
14124
  // src/layouts/StnLayerShell.tsx
13424
- import { jsx as jsx90, jsxs as jsxs66 } from "react/jsx-runtime";
14125
+ import { jsx as jsx93, jsxs as jsxs69 } from "react/jsx-runtime";
13425
14126
  function StnLayerShell({
13426
14127
  gnb,
13427
14128
  gnbSide = "left",
@@ -13442,7 +14143,7 @@ function StnLayerShell({
13442
14143
  const resolvedMainContent = layer1 ?? children;
13443
14144
  const resolvedModal = layer2;
13444
14145
  const isGnbRight = gnbSide === "right";
13445
- return /* @__PURE__ */ jsxs66(
14146
+ return /* @__PURE__ */ jsxs69(
13446
14147
  "div",
13447
14148
  {
13448
14149
  id: wrapId,
@@ -13450,8 +14151,8 @@ function StnLayerShell({
13450
14151
  className: cn("stn-wrap", isGnbRight && "stn-wrap--gnb-right", wrapClassName),
13451
14152
  children: [
13452
14153
  layer0,
13453
- utilities ? /* @__PURE__ */ jsx90("div", { className: "stn-page-utilities", "data-stn-layer-role": "utility", children: utilities }) : null,
13454
- /* @__PURE__ */ jsxs66(
14154
+ utilities ? /* @__PURE__ */ jsx93("div", { className: "stn-page-utilities", "data-stn-layer-role": "utility", children: utilities }) : null,
14155
+ /* @__PURE__ */ jsxs69(
13455
14156
  "main",
13456
14157
  {
13457
14158
  id: containerId,
@@ -13460,9 +14161,9 @@ function StnLayerShell({
13460
14161
  className: cn("stn-layer-1", scrollable && "scroll", containerClassName),
13461
14162
  children: [
13462
14163
  !isGnbRight && gnb,
13463
- /* @__PURE__ */ jsxs66("div", { className: "stn-layer-1__main", children: [
13464
- header ? /* @__PURE__ */ jsx90("header", { className: "stn-layer-1__header", children: header }) : null,
13465
- /* @__PURE__ */ jsx90("div", { className: cn("stn-layer-1__body", scrollable && "stn-scroll", contentClassName), children: resolvedMainContent })
14164
+ /* @__PURE__ */ jsxs69("div", { className: "stn-layer-1__main", children: [
14165
+ header ? /* @__PURE__ */ jsx93("header", { className: "stn-layer-1__header", children: header }) : null,
14166
+ /* @__PURE__ */ jsx93("div", { className: cn("stn-layer-1__body", scrollable && "stn-scroll", contentClassName), children: resolvedMainContent })
13466
14167
  ] }),
13467
14168
  isGnbRight && gnb
13468
14169
  ]
@@ -13475,7 +14176,7 @@ function StnLayerShell({
13475
14176
  }
13476
14177
 
13477
14178
  // src/layouts/StnListViewLayout.tsx
13478
- import { jsx as jsx91, jsxs as jsxs67 } from "react/jsx-runtime";
14179
+ import { jsx as jsx94, jsxs as jsxs70 } from "react/jsx-runtime";
13479
14180
  function StnListViewLayoutBody({
13480
14181
  search,
13481
14182
  sidebar,
@@ -13486,13 +14187,13 @@ function StnListViewLayoutBody({
13486
14187
  className
13487
14188
  }) {
13488
14189
  const lnbClass = lnbSide === "right" ? "stn-page-scaffold__lnb lnb_box lnb_box_right" : "stn-page-scaffold__lnb lnb_box";
13489
- const sidebarAside = sidebar ? /* @__PURE__ */ jsx91("aside", { className: lnbClass, children: sidebar }) : null;
13490
- return /* @__PURE__ */ jsx91(
14190
+ const sidebarAside = sidebar ? /* @__PURE__ */ jsx94("aside", { className: lnbClass, children: sidebar }) : null;
14191
+ return /* @__PURE__ */ jsx94(
13491
14192
  StnContainer,
13492
14193
  {
13493
14194
  maxWidth: false,
13494
14195
  className: cn("stn-list-view-layout__body", className),
13495
- children: /* @__PURE__ */ jsxs67(
14196
+ children: /* @__PURE__ */ jsxs70(
13496
14197
  StnStack,
13497
14198
  {
13498
14199
  direction: "row",
@@ -13500,19 +14201,19 @@ function StnListViewLayoutBody({
13500
14201
  className: "stn-list-view__main",
13501
14202
  children: [
13502
14203
  lnbSide === "left" ? sidebarAside : null,
13503
- /* @__PURE__ */ jsxs67(
14204
+ /* @__PURE__ */ jsxs70(
13504
14205
  StnStack,
13505
14206
  {
13506
14207
  direction: "column",
13507
14208
  spacing: 2,
13508
14209
  className: "stn-list-view__content-stack",
13509
14210
  children: [
13510
- search ? /* @__PURE__ */ jsx91("div", { className: "stn-page-scaffold__search search_area", children: search }) : null,
13511
- /* @__PURE__ */ jsx91(
14211
+ search ? /* @__PURE__ */ jsx94("div", { className: "stn-page-scaffold__search search_area", children: search }) : null,
14212
+ /* @__PURE__ */ jsx94(
13512
14213
  "div",
13513
14214
  {
13514
14215
  className: "stn-page-scaffold__content content_box",
13515
- children: children ?? /* @__PURE__ */ jsxs67("div", { className: "stn-table stn-table--fill", children: [
14216
+ children: children ?? /* @__PURE__ */ jsxs70("div", { className: "stn-table stn-table--fill", children: [
13516
14217
  table,
13517
14218
  pagination
13518
14219
  ] })
@@ -13544,7 +14245,7 @@ function StnListViewLayoutRoot({
13544
14245
  }) {
13545
14246
  const bare = bareProp ?? noShell ?? false;
13546
14247
  const hasLnbClass = lnbSide === "right" ? "has_lnb_right" : "has_lnb";
13547
- const body = /* @__PURE__ */ jsx91(
14248
+ const body = /* @__PURE__ */ jsx94(
13548
14249
  StnListViewLayoutBody,
13549
14250
  {
13550
14251
  search,
@@ -13559,10 +14260,10 @@ function StnListViewLayoutRoot({
13559
14260
  if (bare) {
13560
14261
  return body;
13561
14262
  }
13562
- const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */ jsx91("div", { className: "stn-layer-1__header", children: /* @__PURE__ */ jsx91(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx91(StnHeader.Left, { children: /* @__PURE__ */ jsx91(StnHeaderPageTitle, { children: title }) }) }) });
13563
- return /* @__PURE__ */ jsxs67("div", { className: cn("stn-list-view-layout", "stn-layer-1", className), ...rest, children: [
14263
+ const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */ jsx94("div", { className: "stn-layer-1__header", children: /* @__PURE__ */ jsx94(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx94(StnHeader.Left, { children: /* @__PURE__ */ jsx94(StnHeaderPageTitle, { children: title }) }) }) });
14264
+ return /* @__PURE__ */ jsxs70("div", { className: cn("stn-list-view-layout", "stn-layer-1", className), ...rest, children: [
13564
14265
  renderedHeader,
13565
- /* @__PURE__ */ jsx91(
14266
+ /* @__PURE__ */ jsx94(
13566
14267
  "div",
13567
14268
  {
13568
14269
  className: cn("stn-content-area", sidebar ? hasLnbClass : null, search ? "has_sch" : null),
@@ -13572,10 +14273,10 @@ function StnListViewLayoutRoot({
13572
14273
  ] });
13573
14274
  }
13574
14275
  function StnListViewLayoutHeader({ className, children, ...rest }) {
13575
- return /* @__PURE__ */ jsx91("div", { className: cn("stn-layer-1__header", className), ...rest, children });
14276
+ return /* @__PURE__ */ jsx94("div", { className: cn("stn-layer-1__header", className), ...rest, children });
13576
14277
  }
13577
14278
  function StnListViewLayoutSearch({ className, children, ...rest }) {
13578
- return /* @__PURE__ */ jsx91("div", { className: cn("search_area", className), ...rest, children });
14279
+ return /* @__PURE__ */ jsx94("div", { className: cn("search_area", className), ...rest, children });
13579
14280
  }
13580
14281
  function StnListViewLayoutSidebar({
13581
14282
  side = "left",
@@ -13584,16 +14285,16 @@ function StnListViewLayoutSidebar({
13584
14285
  ...rest
13585
14286
  }) {
13586
14287
  const lnbClass = side === "right" ? "lnb_box_right" : "lnb_box";
13587
- return /* @__PURE__ */ jsx91("aside", { className: cn(lnbClass, className), ...rest, children });
14288
+ return /* @__PURE__ */ jsx94("aside", { className: cn(lnbClass, className), ...rest, children });
13588
14289
  }
13589
14290
  function StnListViewLayoutContent({ className, children, ...rest }) {
13590
- return /* @__PURE__ */ jsx91("div", { className: cn("content_box", className), ...rest, children });
14291
+ return /* @__PURE__ */ jsx94("div", { className: cn("content_box", className), ...rest, children });
13591
14292
  }
13592
14293
  function StnListViewLayoutTable({ className, children, ...rest }) {
13593
- return /* @__PURE__ */ jsx91("div", { className: cn("stn-table", className), ...rest, children });
14294
+ return /* @__PURE__ */ jsx94("div", { className: cn("stn-table", className), ...rest, children });
13594
14295
  }
13595
14296
  function StnListViewLayoutPagination({ className, children, ...rest }) {
13596
- return /* @__PURE__ */ jsx91("div", { className: cn("stn-list-view-layout__pagination-wrap", className), ...rest, children });
14297
+ return /* @__PURE__ */ jsx94("div", { className: cn("stn-list-view-layout__pagination-wrap", className), ...rest, children });
13597
14298
  }
13598
14299
  var StnListViewLayout = Object.assign(StnListViewLayoutRoot, {
13599
14300
  Body: StnListViewLayoutBody,
@@ -13627,13 +14328,13 @@ import {
13627
14328
  } from "@stn-uiux/pub-ui/data/stnLayout";
13628
14329
 
13629
14330
  // src/patterns/dashboard/StnMapCanvas.tsx
13630
- import { jsx as jsx92 } from "react/jsx-runtime";
14331
+ import { jsx as jsx95 } from "react/jsx-runtime";
13631
14332
  function StnMapCanvas({
13632
14333
  children,
13633
14334
  className,
13634
14335
  ...rest
13635
14336
  }) {
13636
- return /* @__PURE__ */ jsx92(
14337
+ return /* @__PURE__ */ jsx95(
13637
14338
  "div",
13638
14339
  {
13639
14340
  className: cn("stn-map-canvas", className),
@@ -13645,7 +14346,7 @@ function StnMapCanvas({
13645
14346
  }
13646
14347
 
13647
14348
  // src/patterns/dashboard/StnDashboard.tsx
13648
- import { jsx as jsx93 } from "react/jsx-runtime";
14349
+ import { jsx as jsx96 } from "react/jsx-runtime";
13649
14350
  var fillStyle = {
13650
14351
  flex: "1 1 0%",
13651
14352
  minHeight: 0,
@@ -13664,7 +14365,7 @@ function StnDashboardRoot({
13664
14365
  }) {
13665
14366
  const isLeft = widgetPosition === "left";
13666
14367
  const isBoth = widgetPosition === "both";
13667
- return /* @__PURE__ */ jsx93(
14368
+ return /* @__PURE__ */ jsx96(
13668
14369
  "div",
13669
14370
  {
13670
14371
  className: cn(
@@ -13693,7 +14394,7 @@ function StnDashboardLeft({
13693
14394
  style,
13694
14395
  ...rest
13695
14396
  }) {
13696
- return /* @__PURE__ */ jsx93(
14397
+ return /* @__PURE__ */ jsx96(
13697
14398
  "div",
13698
14399
  {
13699
14400
  className: cn("stn-dashboard__left", className),
@@ -13719,7 +14420,7 @@ function StnDashboardRight({
13719
14420
  style,
13720
14421
  ...rest
13721
14422
  }) {
13722
- return /* @__PURE__ */ jsx93(
14423
+ return /* @__PURE__ */ jsx96(
13723
14424
  "div",
13724
14425
  {
13725
14426
  className: cn("stn-dashboard__right", className),
@@ -13747,7 +14448,7 @@ function StnDashboardTopRight({
13747
14448
  className,
13748
14449
  ...rest
13749
14450
  }) {
13750
- return /* @__PURE__ */ jsx93(
14451
+ return /* @__PURE__ */ jsx96(
13751
14452
  "div",
13752
14453
  {
13753
14454
  className: cn("stn-dashboard__top-right", className),
@@ -13766,9 +14467,9 @@ var StnDashboard = Object.assign(StnDashboardRoot, {
13766
14467
  });
13767
14468
 
13768
14469
  // src/patterns/scaffold/StnPageScaffold.tsx
13769
- import { jsx as jsx94, jsxs as jsxs68 } from "react/jsx-runtime";
14470
+ import { jsx as jsx97, jsxs as jsxs71 } from "react/jsx-runtime";
13770
14471
  function StnPageScaffoldRoot({ children, className, ...rest }) {
13771
- return /* @__PURE__ */ jsx94(
14472
+ return /* @__PURE__ */ jsx97(
13772
14473
  "div",
13773
14474
  {
13774
14475
  className: cn("stn-page-scaffold", className),
@@ -13785,9 +14486,9 @@ function StnPageScaffoldRegion({
13785
14486
  className,
13786
14487
  ...rest
13787
14488
  }) {
13788
- return /* @__PURE__ */ jsxs68("div", { className: cn("stn-page-scaffold__region", className), "data-stn-page-scaffold": "region", ...rest, children: [
13789
- /* @__PURE__ */ jsx94("span", { className: "stn-page-scaffold__region-label", children: label }),
13790
- hint ? /* @__PURE__ */ jsx94("span", { className: "stn-page-scaffold__region-hint", children: hint }) : null,
14489
+ return /* @__PURE__ */ jsxs71("div", { className: cn("stn-page-scaffold__region", className), "data-stn-page-scaffold": "region", ...rest, children: [
14490
+ /* @__PURE__ */ jsx97("span", { className: "stn-page-scaffold__region-label", children: label }),
14491
+ hint ? /* @__PURE__ */ jsx97("span", { className: "stn-page-scaffold__region-hint", children: hint }) : null,
13791
14492
  children
13792
14493
  ] });
13793
14494
  }
@@ -13798,7 +14499,7 @@ function StnPageScaffoldMapPlaceholder({
13798
14499
  children,
13799
14500
  ...rest
13800
14501
  }) {
13801
- return /* @__PURE__ */ jsx94("div", { className: "stn-widget shell-canvas stn-map-canvas", "data-stn-dashboard": "canvas", children: /* @__PURE__ */ jsxs68(
14502
+ return /* @__PURE__ */ jsx97("div", { className: "stn-widget shell-canvas stn-map-canvas", "data-stn-dashboard": "canvas", children: /* @__PURE__ */ jsxs71(
13802
14503
  "div",
13803
14504
  {
13804
14505
  className: cn("stn-page-scaffold__canvas-placeholder", className),
@@ -13806,8 +14507,8 @@ function StnPageScaffoldMapPlaceholder({
13806
14507
  role: "status",
13807
14508
  ...rest,
13808
14509
  children: [
13809
- /* @__PURE__ */ jsx94("p", { className: "stn-page-scaffold__canvas-placeholder-title", children: message }),
13810
- note ? /* @__PURE__ */ jsx94("p", { className: "stn-page-scaffold__canvas-placeholder-note", children: note }) : null,
14510
+ /* @__PURE__ */ jsx97("p", { className: "stn-page-scaffold__canvas-placeholder-title", children: message }),
14511
+ note ? /* @__PURE__ */ jsx97("p", { className: "stn-page-scaffold__canvas-placeholder-note", children: note }) : null,
13811
14512
  children
13812
14513
  ]
13813
14514
  }
@@ -13818,7 +14519,7 @@ function StnPageScaffoldMapCanvas({
13818
14519
  children,
13819
14520
  ...rest
13820
14521
  }) {
13821
- return /* @__PURE__ */ jsx94(
14522
+ return /* @__PURE__ */ jsx97(
13822
14523
  "div",
13823
14524
  {
13824
14525
  className: cn("stn-widget", "shell-canvas", "stn-map-canvas", "stn-page-scaffold__canvas", className),
@@ -13831,7 +14532,7 @@ function StnPageScaffoldMapCanvas({
13831
14532
  }
13832
14533
  function StnPageScaffoldLayer({ label, hint, children, className, ...layerProps }) {
13833
14534
  const labelText = label ? hint ? `${label} \xB7 ${hint}` : label : void 0;
13834
- return /* @__PURE__ */ jsx94(
14535
+ return /* @__PURE__ */ jsx97(
13835
14536
  StnLayer2,
13836
14537
  {
13837
14538
  className: cn(
@@ -13878,25 +14579,25 @@ function DashboardPageScaffold({
13878
14579
  const isLeft = widgetPosition === "left";
13879
14580
  const isBoth = widgetPosition === "both";
13880
14581
  const isNone = widgetPosition === "none" || !showRightRegion;
13881
- const mapColumn = /* @__PURE__ */ jsxs68(StnDashboard.Left, { children: [
13882
- /* @__PURE__ */ jsx94(StnPageScaffold.MapPlaceholder, { message: finalMapMessage, note: finalMapNote }),
14582
+ const mapColumn = /* @__PURE__ */ jsxs71(StnDashboard.Left, { children: [
14583
+ /* @__PURE__ */ jsx97(StnPageScaffold.MapPlaceholder, { message: finalMapMessage, note: finalMapNote }),
13883
14584
  faultPanel
13884
14585
  ] });
13885
- const rightWidgets = right ?? /* @__PURE__ */ jsx94(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
13886
- const leftWidgets = left ?? right ?? /* @__PURE__ */ jsx94(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC88C\uCE21 \uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
13887
- const dashboardGrid = bodyEmpty ? /* @__PURE__ */ jsx94(StnDashboard, { empty: true, widgetPosition, "data-stn-page-scaffold": "dashboard-empty" }) : isBoth ? /* @__PURE__ */ jsxs68(StnDashboard, { widgetPosition: "both", children: [
13888
- /* @__PURE__ */ jsx94(StnDashboard.Right, { children: leftWidgets }),
14586
+ const rightWidgets = right ?? /* @__PURE__ */ jsx97(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
14587
+ const leftWidgets = left ?? right ?? /* @__PURE__ */ jsx97(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC88C\uCE21 \uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
14588
+ const dashboardGrid = bodyEmpty ? /* @__PURE__ */ jsx97(StnDashboard, { empty: true, widgetPosition, "data-stn-page-scaffold": "dashboard-empty" }) : isBoth ? /* @__PURE__ */ jsxs71(StnDashboard, { widgetPosition: "both", children: [
14589
+ /* @__PURE__ */ jsx97(StnDashboard.Right, { children: leftWidgets }),
13889
14590
  mapColumn,
13890
- /* @__PURE__ */ jsx94(StnDashboard.Right, { children: rightWidgets })
13891
- ] }) : isLeft ? /* @__PURE__ */ jsxs68(StnDashboard, { widgetPosition: "left", children: [
13892
- /* @__PURE__ */ jsx94(StnDashboard.Right, { children: leftWidgets }),
14591
+ /* @__PURE__ */ jsx97(StnDashboard.Right, { children: rightWidgets })
14592
+ ] }) : isLeft ? /* @__PURE__ */ jsxs71(StnDashboard, { widgetPosition: "left", children: [
14593
+ /* @__PURE__ */ jsx97(StnDashboard.Right, { children: leftWidgets }),
13893
14594
  mapColumn
13894
- ] }) : /* @__PURE__ */ jsxs68(StnDashboard, { widgetPosition: isNone ? "none" : "right", children: [
14595
+ ] }) : /* @__PURE__ */ jsxs71(StnDashboard, { widgetPosition: isNone ? "none" : "right", children: [
13895
14596
  mapColumn,
13896
- !isNone ? /* @__PURE__ */ jsx94(StnDashboard.Right, { children: rightWidgets }) : null
14597
+ !isNone ? /* @__PURE__ */ jsx97(StnDashboard.Right, { children: rightWidgets }) : null
13897
14598
  ] });
13898
14599
  const contentNode = children ?? dashboardGrid;
13899
- return /* @__PURE__ */ jsx94(
14600
+ return /* @__PURE__ */ jsx97(
13900
14601
  StnLayerShell,
13901
14602
  {
13902
14603
  gnb,
@@ -13905,7 +14606,7 @@ function DashboardPageScaffold({
13905
14606
  layer0,
13906
14607
  layer2,
13907
14608
  ...shellProps,
13908
- children: /* @__PURE__ */ jsx94(
14609
+ children: /* @__PURE__ */ jsx97(
13909
14610
  StnContainer,
13910
14611
  {
13911
14612
  maxWidth: false,
@@ -13919,16 +14620,16 @@ function DashboardPageScaffold({
13919
14620
  }
13920
14621
 
13921
14622
  // src/patterns/scaffold/AlertCenterPageScaffold.tsx
13922
- import { useMemo as useMemo6, useState as useState25 } from "react";
14623
+ import { useMemo as useMemo7, useState as useState26 } from "react";
13923
14624
  import {
13924
14625
  STN_ALERT_CENTER_DEMO_ALERTS,
13925
14626
  STN_ALERT_CENTER_DEMO_DEPLOY,
13926
14627
  STN_ALERT_CENTER_DEMO_WORK
13927
14628
  } from "@stn-uiux/pub-ui/data/stnAlertCenter";
13928
14629
  import { systemIconSrc } from "@stn-uiux/pub-ui/data/stnSystemIcons";
13929
- import { Fragment as Fragment15, jsx as jsx95, jsxs as jsxs69 } from "react/jsx-runtime";
14630
+ import { Fragment as Fragment15, jsx as jsx98, jsxs as jsxs72 } from "react/jsx-runtime";
13930
14631
  function defaultTopologyHeader(_clock) {
13931
- return /* @__PURE__ */ jsx95(StnHeader, { variant: "widget" });
14632
+ return /* @__PURE__ */ jsx98(StnHeader, { variant: "widget" });
13932
14633
  }
13933
14634
  function AlertCenterPageScaffold({
13934
14635
  gnbAlertPanel,
@@ -13945,9 +14646,9 @@ function AlertCenterPageScaffold({
13945
14646
  defaultGnbOpen = true,
13946
14647
  ...shellProps
13947
14648
  }) {
13948
- const [gnbOpen, setGnbOpen] = useState25(defaultGnbOpen);
13949
- const panel = useMemo6(
13950
- () => gnbAlertPanel ?? /* @__PURE__ */ jsx95(
14649
+ const [gnbOpen, setGnbOpen] = useState26(defaultGnbOpen);
14650
+ const panel = useMemo7(
14651
+ () => gnbAlertPanel ?? /* @__PURE__ */ jsx98(
13951
14652
  StnAlertCenterPanel,
13952
14653
  {
13953
14654
  alerts: STN_ALERT_CENTER_DEMO_ALERTS,
@@ -13957,27 +14658,27 @@ function AlertCenterPageScaffold({
13957
14658
  ),
13958
14659
  [gnbAlertPanel]
13959
14660
  );
13960
- const sideNav = useMemo6(
13961
- () => gnbProp ?? /* @__PURE__ */ jsxs69(Fragment15, { children: [
13962
- /* @__PURE__ */ jsxs69(
14661
+ const sideNav = useMemo7(
14662
+ () => gnbProp ?? /* @__PURE__ */ jsxs72(Fragment15, { children: [
14663
+ /* @__PURE__ */ jsxs72(
13963
14664
  StnSideNavigation,
13964
14665
  {
13965
14666
  collapsed: !gnbOpen,
13966
14667
  onCollapseChange: (col) => setGnbOpen(!col),
13967
14668
  children: [
13968
- /* @__PURE__ */ jsxs69(StnSideNavigation.Header, { children: [
13969
- /* @__PURE__ */ jsx95(StnSideNavigation.Logo, {}),
13970
- /* @__PURE__ */ jsx95(StnSideNavigation.Toggle, {})
14669
+ /* @__PURE__ */ jsxs72(StnSideNavigation.Header, { children: [
14670
+ /* @__PURE__ */ jsx98(StnSideNavigation.Logo, {}),
14671
+ /* @__PURE__ */ jsx98(StnSideNavigation.Toggle, {})
13971
14672
  ] }),
13972
- /* @__PURE__ */ jsxs69(StnSideNavigation.Menu, { children: [
13973
- /* @__PURE__ */ jsx95(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/layout-grid"), label: "\uBA54\uC778 \uB300\uC2DC\uBCF4\uB4DC", active: true }),
13974
- /* @__PURE__ */ jsx95(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/server_2"), label: "\uC11C\uBC84 \uBAA8\uB2C8\uD130\uB9C1" }),
13975
- /* @__PURE__ */ jsx95(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/activity"), label: "\uB124\uD2B8\uC6CC\uD06C \uBD84\uC11D" })
14673
+ /* @__PURE__ */ jsxs72(StnSideNavigation.Menu, { children: [
14674
+ /* @__PURE__ */ jsx98(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/layout-grid"), label: "\uBA54\uC778 \uB300\uC2DC\uBCF4\uB4DC", active: true }),
14675
+ /* @__PURE__ */ jsx98(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/server_2"), label: "\uC11C\uBC84 \uBAA8\uB2C8\uD130\uB9C1" }),
14676
+ /* @__PURE__ */ jsx98(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/activity"), label: "\uB124\uD2B8\uC6CC\uD06C \uBD84\uC11D" })
13976
14677
  ] }),
13977
- /* @__PURE__ */ jsx95(StnSideNavigation.Spacer, {}),
13978
- /* @__PURE__ */ jsxs69(StnSideNavigation.Footer, { curved: true, children: [
13979
- /* @__PURE__ */ jsx95(StnSideNavigation.Watermark, {}),
13980
- /* @__PURE__ */ jsx95(
14678
+ /* @__PURE__ */ jsx98(StnSideNavigation.Spacer, {}),
14679
+ /* @__PURE__ */ jsxs72(StnSideNavigation.Footer, { curved: true, children: [
14680
+ /* @__PURE__ */ jsx98(StnSideNavigation.Watermark, {}),
14681
+ /* @__PURE__ */ jsx98(
13981
14682
  StnSideNavigation.Item,
13982
14683
  {
13983
14684
  iconSrc: systemIconSrc("line/bell"),
@@ -13986,7 +14687,7 @@ function AlertCenterPageScaffold({
13986
14687
  onClick: void 0
13987
14688
  }
13988
14689
  ),
13989
- /* @__PURE__ */ jsx95(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/settings"), label: "\uC124\uC815" })
14690
+ /* @__PURE__ */ jsx98(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/settings"), label: "\uC124\uC815" })
13990
14691
  ] })
13991
14692
  ]
13992
14693
  }
@@ -13995,8 +14696,8 @@ function AlertCenterPageScaffold({
13995
14696
  ] }),
13996
14697
  [gnbProp, gnbOpen, panel]
13997
14698
  );
13998
- const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */ jsx95("div", { className: "wrap_real_time stn-page-scaffold__fault-ph", children: /* @__PURE__ */ jsx95(StnPageScaffold.Region, { label: "\uC2E4\uC2DC\uAC04 \uC7A5\uC560 \uD604\uD669", hint: "StnWidget shell=fault-panel \xB7 \uC120\uD0DD" }) }) : null);
13999
- return /* @__PURE__ */ jsx95(
14699
+ const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */ jsx98("div", { className: "wrap_real_time stn-page-scaffold__fault-ph", children: /* @__PURE__ */ jsx98(StnPageScaffold.Region, { label: "\uC2E4\uC2DC\uAC04 \uC7A5\uC560 \uD604\uD669", hint: "StnWidget shell=fault-panel \xB7 \uC120\uD0DD" }) }) : null);
14700
+ return /* @__PURE__ */ jsx98(
14000
14701
  DashboardPageScaffold,
14001
14702
  {
14002
14703
  gnb: sideNav,
@@ -14004,7 +14705,7 @@ function AlertCenterPageScaffold({
14004
14705
  mapMessage,
14005
14706
  mapNote,
14006
14707
  faultPanel: faultSlot,
14007
- right: right ?? /* @__PURE__ */ jsx95(AlertCenterDashboard, {}),
14708
+ right: right ?? /* @__PURE__ */ jsx98(AlertCenterDashboard, {}),
14008
14709
  wrapId,
14009
14710
  wrapClassName: "stn-page--map-bg",
14010
14711
  ...shellProps
@@ -14013,8 +14714,8 @@ function AlertCenterPageScaffold({
14013
14714
  }
14014
14715
 
14015
14716
  // src/patterns/scaffold/LoginPageScaffold.tsx
14016
- import { useState as useState26 } from "react";
14017
- import { jsx as jsx96, jsxs as jsxs70 } from "react/jsx-runtime";
14717
+ import { useState as useState27 } from "react";
14718
+ import { jsx as jsx99, jsxs as jsxs73 } from "react/jsx-runtime";
14018
14719
  var LOGIN_TABS = [
14019
14720
  { value: "normal", label: "\uC77C\uBC18 \uB85C\uADF8\uC778" },
14020
14721
  { value: "social", label: "\uC18C\uC15C \uB85C\uADF8\uC778" }
@@ -14025,15 +14726,15 @@ function DefaultLoginForm({
14025
14726
  signUpHref = "#",
14026
14727
  recoverHref = "#"
14027
14728
  }) {
14028
- const [mode, setMode] = useState26("normal");
14029
- const [userId, setUserId] = useState26("");
14030
- const [password, setPassword] = useState26("");
14729
+ const [mode, setMode] = useState27("normal");
14730
+ const [userId, setUserId] = useState27("");
14731
+ const [password, setPassword] = useState27("");
14031
14732
  function handleSubmit(e) {
14032
14733
  e.preventDefault();
14033
14734
  onLogin?.(userId, password);
14034
14735
  }
14035
- return /* @__PURE__ */ jsxs70(StnLoginFormStack, { onSubmit: handleSubmit, children: [
14036
- /* @__PURE__ */ jsx96(
14736
+ return /* @__PURE__ */ jsxs73(StnLoginFormStack, { onSubmit: handleSubmit, children: [
14737
+ /* @__PURE__ */ jsx99(
14037
14738
  StnSegmented,
14038
14739
  {
14039
14740
  "aria-label": "\uB85C\uADF8\uC778 \uBC29\uC2DD",
@@ -14042,8 +14743,8 @@ function DefaultLoginForm({
14042
14743
  options: LOGIN_TABS
14043
14744
  }
14044
14745
  ),
14045
- mode === "normal" ? /* @__PURE__ */ jsxs70(StnLoginFormFields, { children: [
14046
- /* @__PURE__ */ jsx96(
14746
+ mode === "normal" ? /* @__PURE__ */ jsxs73(StnLoginFormFields, { children: [
14747
+ /* @__PURE__ */ jsx99(
14047
14748
  StnLoginTextField,
14048
14749
  {
14049
14750
  icon: "line/user",
@@ -14055,7 +14756,7 @@ function DefaultLoginForm({
14055
14756
  "aria-label": "\uC544\uC774\uB514"
14056
14757
  }
14057
14758
  ),
14058
- /* @__PURE__ */ jsx96(
14759
+ /* @__PURE__ */ jsx99(
14059
14760
  StnLoginTextField,
14060
14761
  {
14061
14762
  icon: "line/lock",
@@ -14068,11 +14769,11 @@ function DefaultLoginForm({
14068
14769
  "aria-label": "\uBE44\uBC00\uBC88\uD638"
14069
14770
  }
14070
14771
  )
14071
- ] }) : socialContent ?? /* @__PURE__ */ jsx96(StnLoginPlaceholder, {}),
14072
- /* @__PURE__ */ jsx96(StnButton, { type: "submit", size: "xl", fullWidth: true, children: "\uB85C\uADF8\uC778" }),
14073
- /* @__PURE__ */ jsxs70(StnLoginFormLinks, { children: [
14074
- /* @__PURE__ */ jsx96("a", { href: signUpHref, children: "\uD68C\uC6D0\uAC00\uC785" }),
14075
- /* @__PURE__ */ jsx96("a", { href: recoverHref, children: "\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30" })
14772
+ ] }) : socialContent ?? /* @__PURE__ */ jsx99(StnLoginPlaceholder, {}),
14773
+ /* @__PURE__ */ jsx99(StnButton, { type: "submit", size: "xl", fullWidth: true, children: "\uB85C\uADF8\uC778" }),
14774
+ /* @__PURE__ */ jsxs73(StnLoginFormLinks, { children: [
14775
+ /* @__PURE__ */ jsx99("a", { href: signUpHref, children: "\uD68C\uC6D0\uAC00\uC785" }),
14776
+ /* @__PURE__ */ jsx99("a", { href: recoverHref, children: "\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30" })
14076
14777
  ] })
14077
14778
  ] });
14078
14779
  }
@@ -14086,16 +14787,16 @@ function DefaultLoginCard({
14086
14787
  signUpHref,
14087
14788
  recoverHref
14088
14789
  }) {
14089
- return /* @__PURE__ */ jsx96(
14790
+ return /* @__PURE__ */ jsx99(
14090
14791
  StnLoginCard,
14091
14792
  {
14092
14793
  glow,
14093
14794
  variant,
14094
- brand: /* @__PURE__ */ jsxs70(StnLoginBrandStack, { children: [
14095
- logo ?? /* @__PURE__ */ jsx96(StnLogo, { variant: "vertical", size: "xl" }),
14096
- /* @__PURE__ */ jsx96("p", { className: "stn-login-card__caption", children: productCaption })
14795
+ brand: /* @__PURE__ */ jsxs73(StnLoginBrandStack, { children: [
14796
+ logo ?? /* @__PURE__ */ jsx99(StnLogo, { variant: "vertical", size: "xl" }),
14797
+ /* @__PURE__ */ jsx99("p", { className: "stn-login-card__caption", children: productCaption })
14097
14798
  ] }),
14098
- children: /* @__PURE__ */ jsx96(
14799
+ children: /* @__PURE__ */ jsx99(
14099
14800
  DefaultLoginForm,
14100
14801
  {
14101
14802
  onLogin,
@@ -14121,8 +14822,8 @@ function LoginPageScaffold({
14121
14822
  recoverHref,
14122
14823
  ...shellProps
14123
14824
  }) {
14124
- const resolvedLayer0 = layer0 ?? /* @__PURE__ */ jsx96(StnLayer0Background, { variant: "login" });
14125
- const resolvedCard = children ?? /* @__PURE__ */ jsx96(
14825
+ const resolvedLayer0 = layer0 ?? /* @__PURE__ */ jsx99(StnLayer0Background, { variant: "login" });
14826
+ const resolvedCard = children ?? /* @__PURE__ */ jsx99(
14126
14827
  DefaultLoginCard,
14127
14828
  {
14128
14829
  logo,
@@ -14135,14 +14836,14 @@ function LoginPageScaffold({
14135
14836
  recoverHref
14136
14837
  }
14137
14838
  );
14138
- return /* @__PURE__ */ jsxs70(
14839
+ return /* @__PURE__ */ jsxs73(
14139
14840
  "div",
14140
14841
  {
14141
14842
  className: cn("stn-wrap stn-page--login", wrapClassName),
14142
14843
  ...shellProps,
14143
14844
  children: [
14144
14845
  resolvedLayer0,
14145
- /* @__PURE__ */ jsx96("div", { className: "stn-login", children: resolvedCard })
14846
+ /* @__PURE__ */ jsx99("div", { className: "stn-login", children: resolvedCard })
14146
14847
  ]
14147
14848
  }
14148
14849
  );
@@ -14174,7 +14875,7 @@ import React4 from "react";
14174
14875
  import {
14175
14876
  STN_EMPTY_STATE_PRESETS
14176
14877
  } from "@stn-uiux/pub-ui/data/stnEmptyState";
14177
- import { Fragment as Fragment16, jsx as jsx97, jsxs as jsxs71 } from "react/jsx-runtime";
14878
+ import { Fragment as Fragment16, jsx as jsx100, jsxs as jsxs74 } from "react/jsx-runtime";
14178
14879
  var ICON_PX2 = {
14179
14880
  sm: 40,
14180
14881
  md: 56,
@@ -14183,11 +14884,11 @@ var ICON_PX2 = {
14183
14884
  function resolveIconNode3(icon, presetIcon, size) {
14184
14885
  if (icon === null || icon === false) return null;
14185
14886
  if (typeof icon === "string") {
14186
- return /* @__PURE__ */ jsx97(StnIcon, { name: icon, size: ICON_PX2[size], color: "currentColor" });
14887
+ return /* @__PURE__ */ jsx100(StnIcon, { name: icon, size: ICON_PX2[size], color: "currentColor" });
14187
14888
  }
14188
14889
  if (icon != null) return icon;
14189
14890
  if (presetIcon) {
14190
- return /* @__PURE__ */ jsx97(StnIcon, { name: presetIcon, size: ICON_PX2[size], color: "currentColor" });
14891
+ return /* @__PURE__ */ jsx100(StnIcon, { name: presetIcon, size: ICON_PX2[size], color: "currentColor" });
14191
14892
  }
14192
14893
  return null;
14193
14894
  }
@@ -14221,8 +14922,8 @@ var StnEmptyState = React4.forwardRef(
14221
14922
  const showGraphic = !hideIcon && visual !== "icon" && Boolean(resolvedGraphic);
14222
14923
  const iconNode = hideIcon || showGraphic ? null : resolveIconNode3(icon, preset?.icon, size);
14223
14924
  const resolvedCode = hideCode ? void 0 : code ?? (showGraphic ? void 0 : preset?.code);
14224
- const actionNodes = actions ?? ((primaryAction || secondaryAction) && /* @__PURE__ */ jsxs71(Fragment16, { children: [
14225
- primaryAction && /* @__PURE__ */ jsx97(
14925
+ const actionNodes = actions ?? ((primaryAction || secondaryAction) && /* @__PURE__ */ jsxs74(Fragment16, { children: [
14926
+ primaryAction && /* @__PURE__ */ jsx100(
14226
14927
  StnButton,
14227
14928
  {
14228
14929
  variant: primaryAction.variant ?? "contained",
@@ -14232,7 +14933,7 @@ var StnEmptyState = React4.forwardRef(
14232
14933
  children: primaryAction.label
14233
14934
  }
14234
14935
  ),
14235
- secondaryAction && /* @__PURE__ */ jsx97(
14936
+ secondaryAction && /* @__PURE__ */ jsx100(
14236
14937
  StnButton,
14237
14938
  {
14238
14939
  variant: secondaryAction.variant ?? "outlined",
@@ -14244,7 +14945,7 @@ var StnEmptyState = React4.forwardRef(
14244
14945
  )
14245
14946
  ] }));
14246
14947
  const hasActions = actionNodes != null && actionNodes !== false;
14247
- return /* @__PURE__ */ jsxs71(
14948
+ return /* @__PURE__ */ jsxs74(
14248
14949
  "div",
14249
14950
  {
14250
14951
  ref,
@@ -14258,7 +14959,7 @@ var StnEmptyState = React4.forwardRef(
14258
14959
  ),
14259
14960
  ...rest,
14260
14961
  children: [
14261
- showGraphic && /* @__PURE__ */ jsx97("div", { className: "stn-empty-state__graphic", "aria-hidden": "true", children: /* @__PURE__ */ jsx97(
14962
+ showGraphic && /* @__PURE__ */ jsx100("div", { className: "stn-empty-state__graphic", "aria-hidden": "true", children: /* @__PURE__ */ jsx100(
14262
14963
  "img",
14263
14964
  {
14264
14965
  src: resolvedGraphic,
@@ -14268,13 +14969,13 @@ var StnEmptyState = React4.forwardRef(
14268
14969
  decoding: "async"
14269
14970
  }
14270
14971
  ) }),
14271
- !showGraphic && iconNode != null && /* @__PURE__ */ jsx97("div", { className: "stn-empty-state__icon", children: iconNode }),
14272
- /* @__PURE__ */ jsxs71("div", { className: "stn-empty-state__body", children: [
14273
- resolvedCode != null && resolvedCode !== false && /* @__PURE__ */ jsx97("p", { className: "stn-empty-state__code", children: resolvedCode }),
14274
- resolvedTitle != null && resolvedTitle !== false && /* @__PURE__ */ jsx97("p", { className: "stn-empty-state__title", children: resolvedTitle }),
14275
- resolvedDescription != null && resolvedDescription !== false && /* @__PURE__ */ jsx97("p", { className: "stn-empty-state__description", children: resolvedDescription })
14972
+ !showGraphic && iconNode != null && /* @__PURE__ */ jsx100("div", { className: "stn-empty-state__icon", children: iconNode }),
14973
+ /* @__PURE__ */ jsxs74("div", { className: "stn-empty-state__body", children: [
14974
+ resolvedCode != null && resolvedCode !== false && /* @__PURE__ */ jsx100("p", { className: "stn-empty-state__code", children: resolvedCode }),
14975
+ resolvedTitle != null && resolvedTitle !== false && /* @__PURE__ */ jsx100("p", { className: "stn-empty-state__title", children: resolvedTitle }),
14976
+ resolvedDescription != null && resolvedDescription !== false && /* @__PURE__ */ jsx100("p", { className: "stn-empty-state__description", children: resolvedDescription })
14276
14977
  ] }),
14277
- hasActions && /* @__PURE__ */ jsx97("div", { className: "stn-empty-state__actions", children: actionNodes })
14978
+ hasActions && /* @__PURE__ */ jsx100("div", { className: "stn-empty-state__actions", children: actionNodes })
14278
14979
  ]
14279
14980
  }
14280
14981
  );
@@ -14283,7 +14984,7 @@ var StnEmptyState = React4.forwardRef(
14283
14984
  StnEmptyState.displayName = "StnEmptyState";
14284
14985
 
14285
14986
  // src/components/chartTypes.tsx
14286
- import { jsx as jsx98, jsxs as jsxs72 } from "react/jsx-runtime";
14987
+ import { jsx as jsx101, jsxs as jsxs75 } from "react/jsx-runtime";
14287
14988
  var SEVERITY_COLOR_TOKENS = {
14288
14989
  critical: "var(--stn-chart-status-critical)",
14289
14990
  major: "var(--stn-chart-status-major)",
@@ -14392,20 +15093,20 @@ function formatChartValue(value, decimals) {
14392
15093
  }
14393
15094
  function renderChartState(loading, hasData, emptyText = "\uC870\uD68C\uB41C \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4") {
14394
15095
  if (loading) {
14395
- return /* @__PURE__ */ jsxs72("div", { className: "stn-chart-skeleton", "aria-busy": "true", "aria-label": "\uCC28\uD2B8 \uB85C\uB529 \uC911", children: [
14396
- /* @__PURE__ */ jsxs72("div", { className: "stn-chart-skeleton__bars", children: [
14397
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__bar", style: { height: "45%" } }),
14398
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__bar", style: { height: "75%" } }),
14399
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__bar", style: { height: "30%" } }),
14400
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__bar", style: { height: "90%" } }),
14401
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__bar", style: { height: "60%" } })
15096
+ return /* @__PURE__ */ jsxs75("div", { className: "stn-chart-skeleton", "aria-busy": "true", "aria-label": "\uCC28\uD2B8 \uB85C\uB529 \uC911", children: [
15097
+ /* @__PURE__ */ jsxs75("div", { className: "stn-chart-skeleton__bars", children: [
15098
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__bar", style: { height: "45%" } }),
15099
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__bar", style: { height: "75%" } }),
15100
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__bar", style: { height: "30%" } }),
15101
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__bar", style: { height: "90%" } }),
15102
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__bar", style: { height: "60%" } })
14402
15103
  ] }),
14403
- /* @__PURE__ */ jsx98("div", { className: "stn-chart-skeleton__axis" })
15104
+ /* @__PURE__ */ jsx101("div", { className: "stn-chart-skeleton__axis" })
14404
15105
  ] });
14405
15106
  }
14406
15107
  if (!hasData) {
14407
- return /* @__PURE__ */ jsxs72("div", { className: "stn-chart-empty", role: "status", "aria-label": "\uB370\uC774\uD130 \uC5C6\uC74C", children: [
14408
- /* @__PURE__ */ jsxs72(
15108
+ return /* @__PURE__ */ jsxs75("div", { className: "stn-chart-empty", role: "status", "aria-label": "\uB370\uC774\uD130 \uC5C6\uC74C", children: [
15109
+ /* @__PURE__ */ jsxs75(
14409
15110
  "svg",
14410
15111
  {
14411
15112
  className: "stn-chart-empty__icon",
@@ -14417,12 +15118,12 @@ function renderChartState(loading, hasData, emptyText = "\uC870\uD68C\uB41C \uB3
14417
15118
  strokeLinejoin: "round",
14418
15119
  "aria-hidden": "true",
14419
15120
  children: [
14420
- /* @__PURE__ */ jsx98("path", { d: "M3 3v18h18" }),
14421
- /* @__PURE__ */ jsx98("path", { d: "M18 9l-5 5-4-4-3 3" })
15121
+ /* @__PURE__ */ jsx101("path", { d: "M3 3v18h18" }),
15122
+ /* @__PURE__ */ jsx101("path", { d: "M18 9l-5 5-4-4-3 3" })
14422
15123
  ]
14423
15124
  }
14424
15125
  ),
14425
- /* @__PURE__ */ jsx98("span", { children: emptyText })
15126
+ /* @__PURE__ */ jsx101("span", { children: emptyText })
14426
15127
  ] });
14427
15128
  }
14428
15129
  return null;
@@ -14430,9 +15131,9 @@ function renderChartState(loading, hasData, emptyText = "\uC870\uD68C\uB41C \uB3
14430
15131
 
14431
15132
  // src/components/StnBarChart.tsx
14432
15133
  import {
14433
- useState as useState27
15134
+ useState as useState28
14434
15135
  } from "react";
14435
- import { Fragment as Fragment17, jsx as jsx99, jsxs as jsxs73 } from "react/jsx-runtime";
15136
+ import { Fragment as Fragment17, jsx as jsx102, jsxs as jsxs76 } from "react/jsx-runtime";
14436
15137
  var DEFAULT_BAR_COLORS = STN_CHART_COLORS;
14437
15138
  var SIZE_WIDTH_MAP = {
14438
15139
  sm: "var(--stn-chart-bar-width-sm)",
@@ -14463,15 +15164,15 @@ function StnBarChart({
14463
15164
  style,
14464
15165
  ...rest
14465
15166
  }) {
14466
- const [internalHighlight, setInternalHighlight] = useState27(null);
14467
- const [hoveredIndex, setHoveredIndex] = useState27(null);
15167
+ const [internalHighlight, setInternalHighlight] = useState28(null);
15168
+ const [hoveredIndex, setHoveredIndex] = useState28(null);
14468
15169
  const isHorizontal = direction === "horizontal" || orientation === "horizontal";
14469
15170
  if (loading || !data || data.length === 0) {
14470
15171
  const emptyContainerStyle = {
14471
15172
  ...style,
14472
15173
  ...height ? { height: typeof height === "number" ? `${height}px` : height } : {}
14473
15174
  };
14474
- return /* @__PURE__ */ jsx99(
15175
+ return /* @__PURE__ */ jsx102(
14475
15176
  "div",
14476
15177
  {
14477
15178
  className: cn(
@@ -14528,7 +15229,7 @@ function StnBarChart({
14528
15229
  ...height ? { height } : {},
14529
15230
  ["--stn-chart-bar-width"]: resolvedBarWidth
14530
15231
  };
14531
- return /* @__PURE__ */ jsxs73(
15232
+ return /* @__PURE__ */ jsxs76(
14532
15233
  "div",
14533
15234
  {
14534
15235
  className: cn(
@@ -14543,11 +15244,11 @@ function StnBarChart({
14543
15244
  style: containerStyle,
14544
15245
  ...rest,
14545
15246
  children: [
14546
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__body", children: isHorizontal ? (
15247
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__body", children: isHorizontal ? (
14547
15248
  /* ==================== 가로 막대 (Horizontal) ==================== */
14548
- /* @__PURE__ */ jsxs73(Fragment17, { children: [
14549
- showXAxis && /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__grid-v", "aria-hidden": "true", children: gridCols.map((col, cIdx) => /* @__PURE__ */ jsxs73("div", { className: "stn-chart-bar__grid-v-col", children: [
14550
- /* @__PURE__ */ jsx99(
15249
+ /* @__PURE__ */ jsxs76(Fragment17, { children: [
15250
+ showXAxis && /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__grid-v", "aria-hidden": "true", children: gridCols.map((col, cIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-bar__grid-v-col", children: [
15251
+ /* @__PURE__ */ jsx102(
14551
15252
  "div",
14552
15253
  {
14553
15254
  className: cn(
@@ -14556,9 +15257,9 @@ function StnBarChart({
14556
15257
  )
14557
15258
  }
14558
15259
  ),
14559
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-bar__grid-v-label", children: col.label })
15260
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-bar__grid-v-label", children: col.label })
14560
15261
  ] }, cIdx)) }),
14561
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__rows", role: "list", children: data.map((item, idx) => {
15262
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__rows", role: "list", children: data.map((item, idx) => {
14562
15263
  const active = isHighlighted(idx, item);
14563
15264
  const isHovered = hoveredIndex === idx;
14564
15265
  const rawVals = item.values.map((v, vIdx) => {
@@ -14578,7 +15279,7 @@ function StnBarChart({
14578
15279
  });
14579
15280
  const summaryValues = rawVals.map((v) => v.value).join(", ");
14580
15281
  const isFirstRow = idx === 0;
14581
- return /* @__PURE__ */ jsxs73(
15282
+ return /* @__PURE__ */ jsxs76(
14582
15283
  "button",
14583
15284
  {
14584
15285
  type: "button",
@@ -14595,10 +15296,10 @@ function StnBarChart({
14595
15296
  "aria-label": `${item.label} (${summaryValues})`,
14596
15297
  role: "listitem",
14597
15298
  children: [
14598
- showYAxis && /* @__PURE__ */ jsx99("span", { className: "stn-chart-bar__row-label", title: item.label, children: item.label }),
14599
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__row-track", children: rawVals.map((bar, bIdx) => {
15299
+ showYAxis && /* @__PURE__ */ jsx102("span", { className: "stn-chart-bar__row-label", title: item.label, children: item.label }),
15300
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__row-track", children: rawVals.map((bar, bIdx) => {
14600
15301
  const pct = Math.max(0, Math.min(100, bar.value / max * 100));
14601
- return /* @__PURE__ */ jsx99(
15302
+ return /* @__PURE__ */ jsx102(
14602
15303
  "div",
14603
15304
  {
14604
15305
  className: "stn-chart-bar__item",
@@ -14610,8 +15311,8 @@ function StnBarChart({
14610
15311
  bIdx
14611
15312
  );
14612
15313
  }) }),
14613
- showValue && rawVals.length === 1 && /* @__PURE__ */ jsx99("span", { className: "stn-chart-bar__row-val", children: formatter(rawVals[0].value) }),
14614
- showTooltip && isHovered && /* @__PURE__ */ jsxs73(
15314
+ showValue && rawVals.length === 1 && /* @__PURE__ */ jsx102("span", { className: "stn-chart-bar__row-val", children: formatter(rawVals[0].value) }),
15315
+ showTooltip && isHovered && /* @__PURE__ */ jsxs76(
14615
15316
  "div",
14616
15317
  {
14617
15318
  className: "stn-chart-tooltip",
@@ -14623,19 +15324,19 @@ function StnBarChart({
14623
15324
  },
14624
15325
  role: "tooltip",
14625
15326
  children: [
14626
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-tooltip__header", children: item.label }),
14627
- rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs73("div", { className: "stn-chart-tooltip__row", children: [
14628
- /* @__PURE__ */ jsxs73("div", { className: "stn-chart-tooltip__group", children: [
14629
- /* @__PURE__ */ jsx99(
15327
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-tooltip__header", children: item.label }),
15328
+ rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__row", children: [
15329
+ /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__group", children: [
15330
+ /* @__PURE__ */ jsx102(
14630
15331
  "span",
14631
15332
  {
14632
15333
  className: "stn-chart-tooltip__dot",
14633
15334
  style: { backgroundColor: bar.color }
14634
15335
  }
14635
15336
  ),
14636
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-tooltip__label", children: bar.label })
15337
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__label", children: bar.label })
14637
15338
  ] }),
14638
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
15339
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
14639
15340
  ] }, bIdx))
14640
15341
  ]
14641
15342
  }
@@ -14648,10 +15349,10 @@ function StnBarChart({
14648
15349
  ] })
14649
15350
  ) : (
14650
15351
  /* ==================== 세로 막대 (Vertical) ==================== */
14651
- /* @__PURE__ */ jsxs73(Fragment17, { children: [
14652
- showYAxis && /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__grid", "aria-hidden": "true", children: gridRows.map((row, rIdx) => /* @__PURE__ */ jsxs73("div", { className: "stn-chart-bar__grid-row", children: [
14653
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-bar__axis-label", children: row.label }),
14654
- /* @__PURE__ */ jsx99(
15352
+ /* @__PURE__ */ jsxs76(Fragment17, { children: [
15353
+ showYAxis && /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__grid", "aria-hidden": "true", children: gridRows.map((row, rIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-bar__grid-row", children: [
15354
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-bar__axis-label", children: row.label }),
15355
+ /* @__PURE__ */ jsx102(
14655
15356
  "div",
14656
15357
  {
14657
15358
  className: cn(
@@ -14661,7 +15362,7 @@ function StnBarChart({
14661
15362
  }
14662
15363
  )
14663
15364
  ] }, rIdx)) }),
14664
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__columns", role: "list", children: data.map((item, idx) => {
15365
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__columns", role: "list", children: data.map((item, idx) => {
14665
15366
  const active = isHighlighted(idx, item);
14666
15367
  const isHovered = hoveredIndex === idx;
14667
15368
  const rawVals = item.values.map((v, vIdx) => {
@@ -14680,7 +15381,7 @@ function StnBarChart({
14680
15381
  };
14681
15382
  });
14682
15383
  const summaryValues = rawVals.map((v) => v.value).join(", ");
14683
- return /* @__PURE__ */ jsxs73(
15384
+ return /* @__PURE__ */ jsxs76(
14684
15385
  "button",
14685
15386
  {
14686
15387
  type: "button",
@@ -14697,10 +15398,10 @@ function StnBarChart({
14697
15398
  "aria-label": `${item.label} (${summaryValues})`,
14698
15399
  role: "listitem",
14699
15400
  children: [
14700
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__highlight" }),
14701
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-bar__bars-wrap", children: rawVals.map((bar, bIdx) => {
15401
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__highlight" }),
15402
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-bar__bars-wrap", children: rawVals.map((bar, bIdx) => {
14702
15403
  const pct = Math.max(0, Math.min(100, bar.value / max * 100));
14703
- return /* @__PURE__ */ jsx99(
15404
+ return /* @__PURE__ */ jsx102(
14704
15405
  "div",
14705
15406
  {
14706
15407
  className: "stn-chart-bar__item",
@@ -14712,8 +15413,8 @@ function StnBarChart({
14712
15413
  bIdx
14713
15414
  );
14714
15415
  }) }),
14715
- showXAxis && /* @__PURE__ */ jsx99("span", { className: "stn-chart-bar__label", children: item.label }),
14716
- showTooltip && isHovered && /* @__PURE__ */ jsxs73(
15416
+ showXAxis && /* @__PURE__ */ jsx102("span", { className: "stn-chart-bar__label", children: item.label }),
15417
+ showTooltip && isHovered && /* @__PURE__ */ jsxs76(
14717
15418
  "div",
14718
15419
  {
14719
15420
  className: cn(
@@ -14727,19 +15428,19 @@ function StnBarChart({
14727
15428
  },
14728
15429
  role: "tooltip",
14729
15430
  children: [
14730
- /* @__PURE__ */ jsx99("div", { className: "stn-chart-tooltip__header", children: item.label }),
14731
- rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs73("div", { className: "stn-chart-tooltip__row", children: [
14732
- /* @__PURE__ */ jsxs73("div", { className: "stn-chart-tooltip__group", children: [
14733
- /* @__PURE__ */ jsx99(
15431
+ /* @__PURE__ */ jsx102("div", { className: "stn-chart-tooltip__header", children: item.label }),
15432
+ rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__row", children: [
15433
+ /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__group", children: [
15434
+ /* @__PURE__ */ jsx102(
14734
15435
  "span",
14735
15436
  {
14736
15437
  className: "stn-chart-tooltip__dot",
14737
15438
  style: { backgroundColor: bar.color }
14738
15439
  }
14739
15440
  ),
14740
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-tooltip__label", children: bar.label })
15441
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__label", children: bar.label })
14741
15442
  ] }),
14742
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
15443
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
14743
15444
  ] }, bIdx))
14744
15445
  ]
14745
15446
  }
@@ -14751,15 +15452,15 @@ function StnBarChart({
14751
15452
  }) })
14752
15453
  ] })
14753
15454
  ) }),
14754
- legend && legend.length > 0 && /* @__PURE__ */ jsx99("div", { className: "stn-chart-legend-pill", "aria-label": "\uCC28\uD2B8 \uBC94\uB840", children: legend.map((leg, lIdx) => /* @__PURE__ */ jsxs73("div", { className: "stn-chart-legend-pill__item", children: [
14755
- /* @__PURE__ */ jsx99(
15455
+ legend && legend.length > 0 && /* @__PURE__ */ jsx102("div", { className: "stn-chart-legend-pill", "aria-label": "\uCC28\uD2B8 \uBC94\uB840", children: legend.map((leg, lIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-legend-pill__item", children: [
15456
+ /* @__PURE__ */ jsx102(
14756
15457
  "span",
14757
15458
  {
14758
15459
  className: "stn-chart-legend-pill__bar",
14759
15460
  style: { backgroundColor: resolveChartColor(leg.color, lIdx) }
14760
15461
  }
14761
15462
  ),
14762
- /* @__PURE__ */ jsx99("span", { className: "stn-chart-legend-pill__label", children: leg.label })
15463
+ /* @__PURE__ */ jsx102("span", { className: "stn-chart-legend-pill__label", children: leg.label })
14763
15464
  ] }, lIdx)) })
14764
15465
  ]
14765
15466
  }
@@ -14769,9 +15470,9 @@ function StnBarChart({
14769
15470
  // src/components/StnPieChart.tsx
14770
15471
  import {
14771
15472
  useId as useId18,
14772
- useState as useState28
15473
+ useState as useState29
14773
15474
  } from "react";
14774
- import { Fragment as Fragment18, jsx as jsx100, jsxs as jsxs74 } from "react/jsx-runtime";
15475
+ import { Fragment as Fragment18, jsx as jsx103, jsxs as jsxs77 } from "react/jsx-runtime";
14775
15476
  var DEFAULT_PIE_COLORS = STN_CHART_COLORS;
14776
15477
  var R = 38;
14777
15478
  var CIRCUMFERENCE = 2 * Math.PI * R;
@@ -14799,10 +15500,10 @@ function StnPieChart({
14799
15500
  ...rest
14800
15501
  }) {
14801
15502
  const filterId = useId18().replace(/:/g, "");
14802
- const [hoveredIndex, setHoveredIndex] = useState28(null);
15503
+ const [hoveredIndex, setHoveredIndex] = useState29(null);
14803
15504
  const hasData = Boolean(data && data.length > 0);
14804
15505
  if (loading || !hasData) {
14805
- return /* @__PURE__ */ jsx100(
15506
+ return /* @__PURE__ */ jsx103(
14806
15507
  "div",
14807
15508
  {
14808
15509
  className: cn("stn-chart-gauge", className),
@@ -14838,7 +15539,7 @@ function StnPieChart({
14838
15539
  position: "relative"
14839
15540
  };
14840
15541
  const activeSeg = hoveredIndex !== null ? segments[hoveredIndex] : null;
14841
- return /* @__PURE__ */ jsxs74(
15542
+ return /* @__PURE__ */ jsxs77(
14842
15543
  "div",
14843
15544
  {
14844
15545
  className: cn(
@@ -14850,7 +15551,7 @@ function StnPieChart({
14850
15551
  style: containerStyle,
14851
15552
  ...rest,
14852
15553
  children: [
14853
- /* @__PURE__ */ jsxs74(
15554
+ /* @__PURE__ */ jsxs77(
14854
15555
  "svg",
14855
15556
  {
14856
15557
  className: "stn-chart-gauge__svg",
@@ -14858,8 +15559,8 @@ function StnPieChart({
14858
15559
  style: { width: size, height: size },
14859
15560
  "aria-hidden": "true",
14860
15561
  children: [
14861
- /* @__PURE__ */ jsx100("defs", { children: /* @__PURE__ */ jsx100("filter", { id: `gauge_shadow_${filterId}`, x: "-30%", y: "-30%", width: "160%", height: "160%", children: /* @__PURE__ */ jsx100("feDropShadow", { dx: "0", dy: "2", stdDeviation: "3", floodColor: "var(--stn-opacity-black-30)" }) }) }),
14862
- /* @__PURE__ */ jsx100(
15562
+ /* @__PURE__ */ jsx103("defs", { children: /* @__PURE__ */ jsx103("filter", { id: `gauge_shadow_${filterId}`, x: "-30%", y: "-30%", width: "160%", height: "160%", children: /* @__PURE__ */ jsx103("feDropShadow", { dx: "0", dy: "2", stdDeviation: "3", floodColor: "var(--stn-opacity-black-30)" }) }) }),
15563
+ /* @__PURE__ */ jsx103(
14863
15564
  "circle",
14864
15565
  {
14865
15566
  className: "stn-chart-gauge__track",
@@ -14871,7 +15572,7 @@ function StnPieChart({
14871
15572
  ),
14872
15573
  segments.map((seg, sIdx) => {
14873
15574
  const isHovered = hoveredIndex === sIdx;
14874
- return /* @__PURE__ */ jsx100(
15575
+ return /* @__PURE__ */ jsx103(
14875
15576
  "circle",
14876
15577
  {
14877
15578
  className: "stn-chart-gauge__seg",
@@ -14898,9 +15599,9 @@ function StnPieChart({
14898
15599
  seg.id ?? sIdx
14899
15600
  );
14900
15601
  }),
14901
- variant === "gauge" ? /* @__PURE__ */ jsxs74(Fragment18, { children: [
14902
- /* @__PURE__ */ jsx100("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "31" }),
14903
- /* @__PURE__ */ jsx100(
15602
+ variant === "gauge" ? /* @__PURE__ */ jsxs77(Fragment18, { children: [
15603
+ /* @__PURE__ */ jsx103("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "31" }),
15604
+ /* @__PURE__ */ jsx103(
14904
15605
  "circle",
14905
15606
  {
14906
15607
  className: "stn-chart-gauge__center-inner",
@@ -14910,11 +15611,11 @@ function StnPieChart({
14910
15611
  filter: `url(#gauge_shadow_${filterId})`
14911
15612
  }
14912
15613
  ),
14913
- centerLabel && /* @__PURE__ */ jsx100("text", { className: "stn-chart-gauge__center-text", x: "45", y: "49", children: centerLabel })
14914
- ] }) : /* @__PURE__ */ jsxs74(Fragment18, { children: [
14915
- /* @__PURE__ */ jsx100("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "30" }),
14916
- centerLabel && /* @__PURE__ */ jsx100("text", { className: "stn-chart-gauge__center-text", x: "45", y: centerSubLabel ? "46" : "49", children: centerLabel }),
14917
- centerSubLabel && /* @__PURE__ */ jsx100(
15614
+ centerLabel && /* @__PURE__ */ jsx103("text", { className: "stn-chart-gauge__center-text", x: "45", y: "49", children: centerLabel })
15615
+ ] }) : /* @__PURE__ */ jsxs77(Fragment18, { children: [
15616
+ /* @__PURE__ */ jsx103("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "30" }),
15617
+ centerLabel && /* @__PURE__ */ jsx103("text", { className: "stn-chart-gauge__center-text", x: "45", y: centerSubLabel ? "46" : "49", children: centerLabel }),
15618
+ centerSubLabel && /* @__PURE__ */ jsx103(
14918
15619
  "text",
14919
15620
  {
14920
15621
  x: "45",
@@ -14930,7 +15631,7 @@ function StnPieChart({
14930
15631
  ]
14931
15632
  }
14932
15633
  ),
14933
- showTooltip && activeSeg && /* @__PURE__ */ jsxs74(
15634
+ showTooltip && activeSeg && /* @__PURE__ */ jsxs77(
14934
15635
  "div",
14935
15636
  {
14936
15637
  className: "stn-chart-tooltip",
@@ -14940,18 +15641,18 @@ function StnPieChart({
14940
15641
  },
14941
15642
  role: "tooltip",
14942
15643
  children: [
14943
- /* @__PURE__ */ jsx100("div", { className: "stn-chart-tooltip__header", children: activeSeg.label }),
14944
- /* @__PURE__ */ jsxs74("div", { className: "stn-chart-tooltip__row", children: [
14945
- /* @__PURE__ */ jsxs74("div", { className: "stn-chart-tooltip__group", children: [
14946
- /* @__PURE__ */ jsx100("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: activeSeg.color } }),
14947
- /* @__PURE__ */ jsx100("span", { className: "stn-chart-tooltip__label", children: "\uC218\uCE58" })
15644
+ /* @__PURE__ */ jsx103("div", { className: "stn-chart-tooltip__header", children: activeSeg.label }),
15645
+ /* @__PURE__ */ jsxs77("div", { className: "stn-chart-tooltip__row", children: [
15646
+ /* @__PURE__ */ jsxs77("div", { className: "stn-chart-tooltip__group", children: [
15647
+ /* @__PURE__ */ jsx103("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: activeSeg.color } }),
15648
+ /* @__PURE__ */ jsx103("span", { className: "stn-chart-tooltip__label", children: "\uC218\uCE58" })
14948
15649
  ] }),
14949
- /* @__PURE__ */ jsx100("span", { className: "stn-chart-tooltip__value", children: format ? format(activeSeg.value, activeSeg.ratio) : `${activeSeg.value.toLocaleString()} (${(activeSeg.ratio * 100).toFixed(decimals !== void 0 ? decimals : 1)}%)` })
15650
+ /* @__PURE__ */ jsx103("span", { className: "stn-chart-tooltip__value", children: format ? format(activeSeg.value, activeSeg.ratio) : `${activeSeg.value.toLocaleString()} (${(activeSeg.ratio * 100).toFixed(decimals !== void 0 ? decimals : 1)}%)` })
14950
15651
  ] })
14951
15652
  ]
14952
15653
  }
14953
15654
  ),
14954
- showLegend && segments.length > 0 && /* @__PURE__ */ jsx100("div", { className: "stn-chart-gauge-legend", role: "list", children: segments.map((seg, lIdx) => /* @__PURE__ */ jsxs74(
15655
+ showLegend && segments.length > 0 && /* @__PURE__ */ jsx103("div", { className: "stn-chart-gauge-legend", role: "list", children: segments.map((seg, lIdx) => /* @__PURE__ */ jsxs77(
14955
15656
  "div",
14956
15657
  {
14957
15658
  className: "stn-chart-gauge-legend__item",
@@ -14963,14 +15664,14 @@ function StnPieChart({
14963
15664
  style: { cursor: "pointer", outline: "none" },
14964
15665
  role: "listitem",
14965
15666
  children: [
14966
- /* @__PURE__ */ jsx100(
15667
+ /* @__PURE__ */ jsx103(
14967
15668
  "span",
14968
15669
  {
14969
15670
  className: "stn-chart-gauge-legend__dot",
14970
15671
  style: { backgroundColor: seg.color }
14971
15672
  }
14972
15673
  ),
14973
- /* @__PURE__ */ jsx100("span", { className: "stn-chart-gauge-legend__label", children: seg.label })
15674
+ /* @__PURE__ */ jsx103("span", { className: "stn-chart-gauge-legend__label", children: seg.label })
14974
15675
  ]
14975
15676
  },
14976
15677
  seg.id ?? lIdx
@@ -14985,9 +15686,9 @@ var StnGaugeChart = StnPieChart;
14985
15686
  import {
14986
15687
  useId as useId19,
14987
15688
  useRef as useRef15,
14988
- useState as useState29
15689
+ useState as useState30
14989
15690
  } from "react";
14990
- import { jsx as jsx101, jsxs as jsxs75 } from "react/jsx-runtime";
15691
+ import { jsx as jsx104, jsxs as jsxs78 } from "react/jsx-runtime";
14991
15692
  var DEFAULT_LINE_COLORS = STN_CHART_COLORS;
14992
15693
  var VIEW_W = 300;
14993
15694
  var VIEW_H = 84;
@@ -15027,7 +15728,7 @@ function StnLineChart({
15027
15728
  }) {
15028
15729
  const chartId = useId19().replace(/:/g, "");
15029
15730
  const svgRef = useRef15(null);
15030
- const [hoverIndex, setHoverIndex] = useState29(null);
15731
+ const [hoverIndex, setHoverIndex] = useState30(null);
15031
15732
  const valueFormatter = format ?? ((v) => formatChartValue(v, decimals));
15032
15733
  const hasDots = Boolean(showDots ?? showPoints ?? dots ?? false);
15033
15734
  const dotRadius = DOT_RADIUS_MAP[size] || 3;
@@ -15038,7 +15739,7 @@ function StnLineChart({
15038
15739
  }));
15039
15740
  const hasData = seriesList.length > 0 && seriesList.some((s) => Array.isArray(s.data) && s.data.length > 0);
15040
15741
  if (loading || !hasData) {
15041
- return /* @__PURE__ */ jsx101(
15742
+ return /* @__PURE__ */ jsx104(
15042
15743
  "div",
15043
15744
  {
15044
15745
  className: cn("stn-chart-line", `stn-chart-line--${size}`, className),
@@ -15112,13 +15813,13 @@ function StnLineChart({
15112
15813
  const lastPoint = points[points.length - 1] ?? 0;
15113
15814
  const lastX = sW - 2;
15114
15815
  const lastY = sH - 4 - (lastPoint - min) / range * (sH - 8);
15115
- return /* @__PURE__ */ jsx101(
15816
+ return /* @__PURE__ */ jsx104(
15116
15817
  "div",
15117
15818
  {
15118
15819
  className: cn("stn-chart-sparkline", `stn-chart-line--${size}`, className),
15119
15820
  style: { ...containerStyle, position: "relative", overflow: "hidden" },
15120
15821
  ...rest,
15121
- children: /* @__PURE__ */ jsxs75(
15822
+ children: /* @__PURE__ */ jsxs78(
15122
15823
  "svg",
15123
15824
  {
15124
15825
  width: "100%",
@@ -15127,12 +15828,12 @@ function StnLineChart({
15127
15828
  style: { display: "block" },
15128
15829
  "aria-hidden": "true",
15129
15830
  children: [
15130
- /* @__PURE__ */ jsx101("defs", { children: /* @__PURE__ */ jsxs75("linearGradient", { id: `spark_grad_${chartId}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
15131
- /* @__PURE__ */ jsx101("stop", { offset: "0%", stopColor: strokeColor, stopOpacity: "0.45" }),
15132
- /* @__PURE__ */ jsx101("stop", { offset: "100%", stopColor: strokeColor, stopOpacity: "0" })
15831
+ /* @__PURE__ */ jsx104("defs", { children: /* @__PURE__ */ jsxs78("linearGradient", { id: `spark_grad_${chartId}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
15832
+ /* @__PURE__ */ jsx104("stop", { offset: "0%", stopColor: strokeColor, stopOpacity: "0.45" }),
15833
+ /* @__PURE__ */ jsx104("stop", { offset: "100%", stopColor: strokeColor, stopOpacity: "0" })
15133
15834
  ] }) }),
15134
- /* @__PURE__ */ jsx101("polygon", { points: areaPoints, fill: `url(#spark_grad_${chartId})` }),
15135
- /* @__PURE__ */ jsx101(
15835
+ /* @__PURE__ */ jsx104("polygon", { points: areaPoints, fill: `url(#spark_grad_${chartId})` }),
15836
+ /* @__PURE__ */ jsx104(
15136
15837
  "polyline",
15137
15838
  {
15138
15839
  points: polyPoints,
@@ -15144,7 +15845,7 @@ function StnLineChart({
15144
15845
  vectorEffect: "non-scaling-stroke"
15145
15846
  }
15146
15847
  ),
15147
- /* @__PURE__ */ jsx101("circle", { cx: lastX, cy: lastY, r: "3", fill: strokeColor })
15848
+ /* @__PURE__ */ jsx104("circle", { cx: lastX, cy: lastY, r: "3", fill: strokeColor })
15148
15849
  ]
15149
15850
  }
15150
15851
  )
@@ -15155,7 +15856,7 @@ function StnLineChart({
15155
15856
  const hoverPct = hoverSvgX !== null ? hoverSvgX / VIEW_W * 100 : 0;
15156
15857
  const isNearRight = hoverPct > 68;
15157
15858
  const isNearLeft = hoverPct < 15;
15158
- return /* @__PURE__ */ jsxs75(
15859
+ return /* @__PURE__ */ jsxs78(
15159
15860
  "div",
15160
15861
  {
15161
15862
  className: cn(
@@ -15170,10 +15871,10 @@ function StnLineChart({
15170
15871
  style: containerStyle,
15171
15872
  ...rest,
15172
15873
  children: [
15173
- /* @__PURE__ */ jsxs75("div", { className: "stn-chart-line__body", children: [
15174
- showYAxis && /* @__PURE__ */ jsx101("div", { className: "stn-chart-line__axis-y", "aria-hidden": "true", children: (yAxis.labels && yAxis.labels.length > 0 ? yAxis.labels : [max, min + (max - min) * 0.66, min + (max - min) * 0.33, min].map((v) => valueFormatter(v))).map((lbl, idx) => /* @__PURE__ */ jsx101("span", { children: lbl }, idx)) }),
15175
- /* @__PURE__ */ jsxs75("div", { className: "stn-chart-line__plot-area", style: { position: "relative", width: "100%", flex: "1 1 0%", minHeight: 0 }, children: [
15176
- /* @__PURE__ */ jsxs75(
15874
+ /* @__PURE__ */ jsxs78("div", { className: "stn-chart-line__body", children: [
15875
+ showYAxis && /* @__PURE__ */ jsx104("div", { className: "stn-chart-line__axis-y", "aria-hidden": "true", children: (yAxis.labels && yAxis.labels.length > 0 ? yAxis.labels : [max, min + (max - min) * 0.66, min + (max - min) * 0.33, min].map((v) => valueFormatter(v))).map((lbl, idx) => /* @__PURE__ */ jsx104("span", { children: lbl }, idx)) }),
15876
+ /* @__PURE__ */ jsxs78("div", { className: "stn-chart-line__plot-area", style: { position: "relative", width: "100%", flex: "1 1 0%", minHeight: 0 }, children: [
15877
+ /* @__PURE__ */ jsxs78(
15177
15878
  "svg",
15178
15879
  {
15179
15880
  ref: svgRef,
@@ -15184,9 +15885,9 @@ function StnLineChart({
15184
15885
  onMouseLeave: handleMouseLeave,
15185
15886
  "aria-hidden": "true",
15186
15887
  children: [
15187
- /* @__PURE__ */ jsx101("defs", { children: variant === "area" && seriesList.map((series, sIdx) => {
15888
+ /* @__PURE__ */ jsx104("defs", { children: variant === "area" && seriesList.map((series, sIdx) => {
15188
15889
  const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
15189
- return /* @__PURE__ */ jsxs75(
15890
+ return /* @__PURE__ */ jsxs78(
15190
15891
  "linearGradient",
15191
15892
  {
15192
15893
  id: `line_area_grad_${chartId}_${sIdx}`,
@@ -15195,8 +15896,8 @@ function StnLineChart({
15195
15896
  x2: "0",
15196
15897
  y2: "1",
15197
15898
  children: [
15198
- /* @__PURE__ */ jsx101("stop", { offset: "0%", stopColor: color, stopOpacity: "0.35" }),
15199
- /* @__PURE__ */ jsx101("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
15899
+ /* @__PURE__ */ jsx104("stop", { offset: "0%", stopColor: color, stopOpacity: "0.35" }),
15900
+ /* @__PURE__ */ jsx104("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
15200
15901
  ]
15201
15902
  },
15202
15903
  `grad-${sIdx}`
@@ -15204,7 +15905,7 @@ function StnLineChart({
15204
15905
  }) }),
15205
15906
  gridYPositions.map((yPos, idx) => {
15206
15907
  const isZero = yPos === Y_BOTTOM || idx === 1;
15207
- return /* @__PURE__ */ jsx101(
15908
+ return /* @__PURE__ */ jsx104(
15208
15909
  "line",
15209
15910
  {
15210
15911
  x1: xStart,
@@ -15217,7 +15918,7 @@ function StnLineChart({
15217
15918
  idx
15218
15919
  );
15219
15920
  }),
15220
- variant === "area" && seriesList.map((series, sIdx) => /* @__PURE__ */ jsx101(
15921
+ variant === "area" && seriesList.map((series, sIdx) => /* @__PURE__ */ jsx104(
15221
15922
  "path",
15222
15923
  {
15223
15924
  d: buildAreaPathString(series.data),
@@ -15227,7 +15928,7 @@ function StnLineChart({
15227
15928
  )),
15228
15929
  seriesList.map((series, sIdx) => {
15229
15930
  const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
15230
- return /* @__PURE__ */ jsx101(
15931
+ return /* @__PURE__ */ jsx104(
15231
15932
  "path",
15232
15933
  {
15233
15934
  className: "stn-chart-line__path",
@@ -15238,7 +15939,7 @@ function StnLineChart({
15238
15939
  `line-${series.id ?? sIdx}`
15239
15940
  );
15240
15941
  }),
15241
- showTooltip && hoverSvgX !== null && hoverIndex !== null && /* @__PURE__ */ jsx101("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx101(
15942
+ showTooltip && hoverSvgX !== null && hoverIndex !== null && /* @__PURE__ */ jsx104("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx104(
15242
15943
  "line",
15243
15944
  {
15244
15945
  x1: hoverSvgX,
@@ -15251,7 +15952,7 @@ function StnLineChart({
15251
15952
  vectorEffect: "non-scaling-stroke"
15252
15953
  }
15253
15954
  ) }),
15254
- /* @__PURE__ */ jsx101(
15955
+ /* @__PURE__ */ jsx104(
15255
15956
  "rect",
15256
15957
  {
15257
15958
  x: "0",
@@ -15265,7 +15966,7 @@ function StnLineChart({
15265
15966
  ]
15266
15967
  }
15267
15968
  ),
15268
- hasDots && /* @__PURE__ */ jsx101("div", { className: "stn-chart-line__dots", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: seriesList.map((series, sIdx) => {
15969
+ hasDots && /* @__PURE__ */ jsx104("div", { className: "stn-chart-line__dots", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: seriesList.map((series, sIdx) => {
15269
15970
  const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
15270
15971
  const count = series.data.length;
15271
15972
  return series.data.map((val, pIdx) => {
@@ -15273,7 +15974,7 @@ function StnLineChart({
15273
15974
  const yPct = (Y_BOTTOM - (val - min) / range * yDist) / VIEW_H * 100;
15274
15975
  const isHoveredPoint = hoverIndex === pIdx;
15275
15976
  const r = isHoveredPoint ? dotRadius + 1.2 : dotRadius;
15276
- return /* @__PURE__ */ jsx101(
15977
+ return /* @__PURE__ */ jsx104(
15277
15978
  "span",
15278
15979
  {
15279
15980
  className: cn("stn-chart-line__dot", isHoveredPoint && "is-active"),
@@ -15295,8 +15996,8 @@ function StnLineChart({
15295
15996
  });
15296
15997
  }) })
15297
15998
  ] }),
15298
- showXAxis && xAxisLabels.length > 0 && /* @__PURE__ */ jsx101("div", { className: "stn-chart-line__axis-x", "aria-hidden": "true", children: xAxisLabels.map((lbl, idx) => /* @__PURE__ */ jsx101("span", { children: lbl }, idx)) }),
15299
- showTooltip && hoverIndex !== null && hoverSvgX !== null && /* @__PURE__ */ jsxs75(
15999
+ showXAxis && xAxisLabels.length > 0 && /* @__PURE__ */ jsx104("div", { className: "stn-chart-line__axis-x", "aria-hidden": "true", children: xAxisLabels.map((lbl, idx) => /* @__PURE__ */ jsx104("span", { children: lbl }, idx)) }),
16000
+ showTooltip && hoverIndex !== null && hoverSvgX !== null && /* @__PURE__ */ jsxs78(
15300
16001
  "div",
15301
16002
  {
15302
16003
  className: cn(
@@ -15310,32 +16011,32 @@ function StnLineChart({
15310
16011
  },
15311
16012
  role: "tooltip",
15312
16013
  children: [
15313
- xAxisLabels[hoverIndex] && /* @__PURE__ */ jsx101("div", { className: "stn-chart-tooltip__header", children: xAxisLabels[hoverIndex] }),
16014
+ xAxisLabels[hoverIndex] && /* @__PURE__ */ jsx104("div", { className: "stn-chart-tooltip__header", children: xAxisLabels[hoverIndex] }),
15314
16015
  seriesList.map((series, sIdx) => {
15315
16016
  const val = series.data[hoverIndex];
15316
16017
  if (val === void 0) return null;
15317
16018
  const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
15318
- return /* @__PURE__ */ jsxs75("div", { className: "stn-chart-tooltip__row", children: [
15319
- /* @__PURE__ */ jsxs75("div", { className: "stn-chart-tooltip__group", children: [
15320
- /* @__PURE__ */ jsx101("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
15321
- /* @__PURE__ */ jsx101("span", { className: "stn-chart-tooltip__label", children: series.label || `Series ${sIdx + 1}` })
16019
+ return /* @__PURE__ */ jsxs78("div", { className: "stn-chart-tooltip__row", children: [
16020
+ /* @__PURE__ */ jsxs78("div", { className: "stn-chart-tooltip__group", children: [
16021
+ /* @__PURE__ */ jsx104("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
16022
+ /* @__PURE__ */ jsx104("span", { className: "stn-chart-tooltip__label", children: series.label || `Series ${sIdx + 1}` })
15322
16023
  ] }),
15323
- /* @__PURE__ */ jsx101("span", { className: "stn-chart-tooltip__value", children: valueFormatter(val) })
16024
+ /* @__PURE__ */ jsx104("span", { className: "stn-chart-tooltip__value", children: valueFormatter(val) })
15324
16025
  ] }, sIdx);
15325
16026
  })
15326
16027
  ]
15327
16028
  }
15328
16029
  )
15329
16030
  ] }),
15330
- resolvedLegend.length > 0 && /* @__PURE__ */ jsx101("div", { className: "stn-chart-legend-pill", "aria-label": "\uB77C\uC778 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs75("div", { className: "stn-chart-legend-pill__item", children: [
15331
- /* @__PURE__ */ jsx101(
16031
+ resolvedLegend.length > 0 && /* @__PURE__ */ jsx104("div", { className: "stn-chart-legend-pill", "aria-label": "\uB77C\uC778 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs78("div", { className: "stn-chart-legend-pill__item", children: [
16032
+ /* @__PURE__ */ jsx104(
15332
16033
  "span",
15333
16034
  {
15334
16035
  className: "stn-chart-legend-pill__bar",
15335
16036
  style: { backgroundColor: item.color }
15336
16037
  }
15337
16038
  ),
15338
- /* @__PURE__ */ jsx101("span", { className: "stn-chart-legend-pill__label", children: item.label })
16039
+ /* @__PURE__ */ jsx104("span", { className: "stn-chart-legend-pill__label", children: item.label })
15339
16040
  ] }, idx)) })
15340
16041
  ]
15341
16042
  }
@@ -15345,9 +16046,9 @@ function StnLineChart({
15345
16046
  // src/components/StnComboChart.tsx
15346
16047
  import {
15347
16048
  useId as useId20,
15348
- useState as useState30
16049
+ useState as useState31
15349
16050
  } from "react";
15350
- import { jsx as jsx102, jsxs as jsxs76 } from "react/jsx-runtime";
16051
+ import { jsx as jsx105, jsxs as jsxs79 } from "react/jsx-runtime";
15351
16052
  var BAR_WIDTH_MAP = {
15352
16053
  sm: "var(--stn-chart-combo-bar-width-sm)",
15353
16054
  md: "var(--stn-chart-combo-bar-width-md)",
@@ -15386,11 +16087,11 @@ function StnComboChart({
15386
16087
  ...rest
15387
16088
  }) {
15388
16089
  const chartId = useId20().replace(/:/g, "");
15389
- const [internalHighlight, setInternalHighlight] = useState30(null);
15390
- const [hoverIndex, setHoverIndex] = useState30(null);
16090
+ const [internalHighlight, setInternalHighlight] = useState31(null);
16091
+ const [hoverIndex, setHoverIndex] = useState31(null);
15391
16092
  const hasData = Boolean(data && data.length > 0);
15392
16093
  if (loading || !hasData) {
15393
- return /* @__PURE__ */ jsx102(
16094
+ return /* @__PURE__ */ jsx105(
15394
16095
  "div",
15395
16096
  {
15396
16097
  className: cn("stn-chart-combo", `stn-chart-combo--${size}`, className),
@@ -15530,7 +16231,7 @@ function StnComboChart({
15530
16231
  ["--stn-chart-combo-bar-width"]: resolvedBarWidth
15531
16232
  };
15532
16233
  const hoverGuideX = hoverIndex !== null ? getLineX(hoverIndex) : null;
15533
- return /* @__PURE__ */ jsxs76(
16234
+ return /* @__PURE__ */ jsxs79(
15534
16235
  "div",
15535
16236
  {
15536
16237
  className: cn(
@@ -15545,10 +16246,10 @@ function StnComboChart({
15545
16246
  style: containerStyle,
15546
16247
  ...rest,
15547
16248
  children: [
15548
- /* @__PURE__ */ jsxs76("div", { className: "stn-chart-combo__body", children: [
15549
- showLeftYAxis && /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__axis-y-left", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx102("span", { children: row.label }, rIdx)) }),
15550
- showRightYAxis && hasRightAxis && /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__axis-y-right", "aria-hidden": "true", children: rightGridRows.map((lbl, rIdx) => /* @__PURE__ */ jsx102("span", { children: lbl }, rIdx)) }),
15551
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__grid", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__grid-row", children: /* @__PURE__ */ jsx102(
16249
+ /* @__PURE__ */ jsxs79("div", { className: "stn-chart-combo__body", children: [
16250
+ showLeftYAxis && /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__axis-y-left", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx105("span", { children: row.label }, rIdx)) }),
16251
+ showRightYAxis && hasRightAxis && /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__axis-y-right", "aria-hidden": "true", children: rightGridRows.map((lbl, rIdx) => /* @__PURE__ */ jsx105("span", { children: lbl }, rIdx)) }),
16252
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__grid", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__grid-row", children: /* @__PURE__ */ jsx105(
15552
16253
  "div",
15553
16254
  {
15554
16255
  className: cn(
@@ -15557,10 +16258,10 @@ function StnComboChart({
15557
16258
  )
15558
16259
  }
15559
16260
  ) }, rIdx)) }),
15560
- /* @__PURE__ */ jsxs76("div", { className: "stn-chart-combo__content", children: [
15561
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__columns", role: "list", children: parsedData.map((item, idx) => {
16261
+ /* @__PURE__ */ jsxs79("div", { className: "stn-chart-combo__content", children: [
16262
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__columns", role: "list", children: parsedData.map((item, idx) => {
15562
16263
  const active = isHighlighted(idx, item);
15563
- return /* @__PURE__ */ jsxs76(
16264
+ return /* @__PURE__ */ jsxs79(
15564
16265
  "button",
15565
16266
  {
15566
16267
  type: "button",
@@ -15571,10 +16272,10 @@ function StnComboChart({
15571
16272
  "aria-label": item.label,
15572
16273
  role: "listitem",
15573
16274
  children: [
15574
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__highlight" }),
15575
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__bars-wrap", children: item.bars.map((b, bIdx) => {
16275
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__highlight" }),
16276
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__bars-wrap", children: item.bars.map((b, bIdx) => {
15576
16277
  const pct = Math.max(0, Math.min(100, (b.value - leftMin) / leftRange * 100));
15577
- return /* @__PURE__ */ jsx102(
16278
+ return /* @__PURE__ */ jsx105(
15578
16279
  "div",
15579
16280
  {
15580
16281
  className: "stn-chart-combo__bar",
@@ -15591,7 +16292,7 @@ function StnComboChart({
15591
16292
  item.id ?? idx
15592
16293
  );
15593
16294
  }) }),
15594
- /* @__PURE__ */ jsxs76(
16295
+ /* @__PURE__ */ jsxs79(
15595
16296
  "svg",
15596
16297
  {
15597
16298
  className: "stn-chart-combo__svg-overlay",
@@ -15599,10 +16300,10 @@ function StnComboChart({
15599
16300
  preserveAspectRatio: "none",
15600
16301
  "aria-hidden": "true",
15601
16302
  children: [
15602
- /* @__PURE__ */ jsx102("defs", { children: safeLines.map((series, sIdx) => {
16303
+ /* @__PURE__ */ jsx105("defs", { children: safeLines.map((series, sIdx) => {
15603
16304
  if (!series.area) return null;
15604
16305
  const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
15605
- return /* @__PURE__ */ jsxs76(
16306
+ return /* @__PURE__ */ jsxs79(
15606
16307
  "linearGradient",
15607
16308
  {
15608
16309
  id: `combo_area_grad_${chartId}_${sIdx}`,
@@ -15611,8 +16312,8 @@ function StnComboChart({
15611
16312
  x2: "0",
15612
16313
  y2: "1",
15613
16314
  children: [
15614
- /* @__PURE__ */ jsx102("stop", { offset: "0%", stopColor: color, stopOpacity: "0.32" }),
15615
- /* @__PURE__ */ jsx102("stop", { offset: "100%", stopColor: color, stopOpacity: "0.0" })
16315
+ /* @__PURE__ */ jsx105("stop", { offset: "0%", stopColor: color, stopOpacity: "0.32" }),
16316
+ /* @__PURE__ */ jsx105("stop", { offset: "100%", stopColor: color, stopOpacity: "0.0" })
15616
16317
  ]
15617
16318
  },
15618
16319
  `grad-${sIdx}`
@@ -15621,7 +16322,7 @@ function StnComboChart({
15621
16322
  safeLines.map((series, sIdx) => {
15622
16323
  if (!series.area) return null;
15623
16324
  const isRight = series.yAxis === "right";
15624
- return /* @__PURE__ */ jsx102(
16325
+ return /* @__PURE__ */ jsx105(
15625
16326
  "path",
15626
16327
  {
15627
16328
  d: buildAreaPathString(series.data, isRight),
@@ -15633,7 +16334,7 @@ function StnComboChart({
15633
16334
  safeLines.map((series, sIdx) => {
15634
16335
  const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
15635
16336
  const isRight = series.yAxis === "right";
15636
- return /* @__PURE__ */ jsx102(
16337
+ return /* @__PURE__ */ jsx105(
15637
16338
  "path",
15638
16339
  {
15639
16340
  className: "stn-chart-combo__path",
@@ -15644,7 +16345,7 @@ function StnComboChart({
15644
16345
  `line-${series.id ?? sIdx}`
15645
16346
  );
15646
16347
  }),
15647
- showTooltip && hoverGuideX !== null && /* @__PURE__ */ jsx102("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx102(
16348
+ showTooltip && hoverGuideX !== null && /* @__PURE__ */ jsx105("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx105(
15648
16349
  "line",
15649
16350
  {
15650
16351
  x1: hoverGuideX,
@@ -15660,7 +16361,7 @@ function StnComboChart({
15660
16361
  ]
15661
16362
  }
15662
16363
  ),
15663
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__dots-layer", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none", zIndex: 3 }, children: safeLines.map((series, sIdx) => {
16364
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__dots-layer", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none", zIndex: 3 }, children: safeLines.map((series, sIdx) => {
15664
16365
  const shouldShowDots = series.showDots ?? showDots;
15665
16366
  if (!shouldShowDots) return null;
15666
16367
  const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
@@ -15670,7 +16371,7 @@ function StnComboChart({
15670
16371
  const yPct = getLineY(val, isRight) / VIEW_H2 * 100;
15671
16372
  const isHovered = hoverIndex === pIdx;
15672
16373
  const r = isHovered ? dotRadius + 1.2 : dotRadius;
15673
- return /* @__PURE__ */ jsx102(
16374
+ return /* @__PURE__ */ jsx105(
15674
16375
  "span",
15675
16376
  {
15676
16377
  className: cn("stn-chart-line__dot", isHovered && "is-active"),
@@ -15695,7 +16396,7 @@ function StnComboChart({
15695
16396
  const colPct = (hoverIndex + 0.5) / colCount * 100;
15696
16397
  const isNearRight = colPct > 68;
15697
16398
  const isNearLeft = colPct < 15;
15698
- return /* @__PURE__ */ jsxs76(
16399
+ return /* @__PURE__ */ jsxs79(
15699
16400
  "div",
15700
16401
  {
15701
16402
  className: cn(
@@ -15709,10 +16410,10 @@ function StnComboChart({
15709
16410
  },
15710
16411
  role: "tooltip",
15711
16412
  children: [
15712
- /* @__PURE__ */ jsx102("div", { className: "stn-chart-tooltip__header", children: parsedData[hoverIndex].label }),
15713
- parsedData[hoverIndex].bars.map((b, bIdx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__row", children: [
15714
- /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__group", children: [
15715
- /* @__PURE__ */ jsx102(
16413
+ /* @__PURE__ */ jsx105("div", { className: "stn-chart-tooltip__header", children: parsedData[hoverIndex].label }),
16414
+ parsedData[hoverIndex].bars.map((b, bIdx) => /* @__PURE__ */ jsxs79("div", { className: "stn-chart-tooltip__row", children: [
16415
+ /* @__PURE__ */ jsxs79("div", { className: "stn-chart-tooltip__group", children: [
16416
+ /* @__PURE__ */ jsx105(
15716
16417
  "span",
15717
16418
  {
15718
16419
  className: "stn-chart-tooltip__bar-mark",
@@ -15721,9 +16422,9 @@ function StnComboChart({
15721
16422
  }
15722
16423
  }
15723
16424
  ),
15724
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__label", children: b.label })
16425
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-tooltip__label", children: b.label })
15725
16426
  ] }),
15726
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__value", children: leftFormatter(b.value) })
16427
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-tooltip__value", children: leftFormatter(b.value) })
15727
16428
  ] }, `tip-bar-${bIdx}`)),
15728
16429
  safeLines.map((series, sIdx) => {
15729
16430
  const val = series.data[hoverIndex];
@@ -15731,12 +16432,12 @@ function StnComboChart({
15731
16432
  const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
15732
16433
  const isRight = series.yAxis === "right";
15733
16434
  const formatter = isRight ? rightFormatter : leftFormatter;
15734
- return /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__row", children: [
15735
- /* @__PURE__ */ jsxs76("div", { className: "stn-chart-tooltip__group", children: [
15736
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
15737
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__label", children: series.label || `\uC120 ${sIdx + 1}` })
16435
+ return /* @__PURE__ */ jsxs79("div", { className: "stn-chart-tooltip__row", children: [
16436
+ /* @__PURE__ */ jsxs79("div", { className: "stn-chart-tooltip__group", children: [
16437
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
16438
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-tooltip__label", children: series.label || `\uC120 ${sIdx + 1}` })
15738
16439
  ] }),
15739
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-tooltip__value", children: formatter(val) })
16440
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-tooltip__value", children: formatter(val) })
15740
16441
  ] }, `tip-line-${sIdx}`);
15741
16442
  })
15742
16443
  ]
@@ -15744,15 +16445,15 @@ function StnComboChart({
15744
16445
  );
15745
16446
  })()
15746
16447
  ] }),
15747
- showXAxis && /* @__PURE__ */ jsx102("div", { className: "stn-chart-combo__axis-x", "aria-hidden": "true", children: parsedData.map((item, idx) => /* @__PURE__ */ jsx102("span", { className: "stn-chart-combo__axis-x-item", title: item.label, children: item.label }, item.id ?? idx)) })
16448
+ showXAxis && /* @__PURE__ */ jsx105("div", { className: "stn-chart-combo__axis-x", "aria-hidden": "true", children: parsedData.map((item, idx) => /* @__PURE__ */ jsx105("span", { className: "stn-chart-combo__axis-x-item", title: item.label, children: item.label }, item.id ?? idx)) })
15748
16449
  ] }),
15749
- resolvedLegend.length > 0 && /* @__PURE__ */ jsx102("div", { className: "stn-chart-legend-pill", "aria-label": "\uBCF5\uD569 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs76("div", { className: "stn-chart-legend-pill__item", children: [
15750
- item.type === "line" ? /* @__PURE__ */ jsx102(
16450
+ resolvedLegend.length > 0 && /* @__PURE__ */ jsx105("div", { className: "stn-chart-legend-pill", "aria-label": "\uBCF5\uD569 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs79("div", { className: "stn-chart-legend-pill__item", children: [
16451
+ item.type === "line" ? /* @__PURE__ */ jsx105(
15751
16452
  "span",
15752
16453
  {
15753
16454
  className: "stn-chart-legend-pill__line-marker",
15754
16455
  style: { backgroundColor: item.color },
15755
- children: /* @__PURE__ */ jsx102(
16456
+ children: /* @__PURE__ */ jsx105(
15756
16457
  "span",
15757
16458
  {
15758
16459
  className: "stn-chart-legend-pill__line-dot",
@@ -15760,14 +16461,14 @@ function StnComboChart({
15760
16461
  }
15761
16462
  )
15762
16463
  }
15763
- ) : /* @__PURE__ */ jsx102(
16464
+ ) : /* @__PURE__ */ jsx105(
15764
16465
  "span",
15765
16466
  {
15766
16467
  className: "stn-chart-legend-pill__bar",
15767
16468
  style: { backgroundColor: item.color }
15768
16469
  }
15769
16470
  ),
15770
- /* @__PURE__ */ jsx102("span", { className: "stn-chart-legend-pill__label", children: item.label })
16471
+ /* @__PURE__ */ jsx105("span", { className: "stn-chart-legend-pill__label", children: item.label })
15771
16472
  ] }, idx)) })
15772
16473
  ]
15773
16474
  }
@@ -16101,9 +16802,13 @@ export {
16101
16802
  StnTopologyGraphNodeComponent,
16102
16803
  StnTopologyGraphToolbar,
16103
16804
  StnTopologyGraphViewport,
16805
+ StnTopologyGraphZoomLevel,
16806
+ StnTopologyLinkDetailModal,
16807
+ StnTopologyLinkDetailPopover,
16104
16808
  StnTopologyLinkGlyph,
16105
16809
  StnTopologyNodeCard,
16106
16810
  StnTopologyNodeContextMenu,
16811
+ StnTopologyNodeDetailPopover,
16107
16812
  StnTopologyNodeGlyph,
16108
16813
  StnTopologyNodeItem,
16109
16814
  StnTopologyNodeMark,
@@ -16131,7 +16836,10 @@ export {
16131
16836
  StnWidgetStatusItem,
16132
16837
  StnWidgetStatusList,
16133
16838
  StnWidgetTitle,
16839
+ TOPOLOGY_GRAPH_NODE_SIZE,
16840
+ TOPOLOGY_NODE_SIZE_MAP,
16134
16841
  TOPOLOGY_OPACITY_MAP,
16842
+ TOPOLOGY_RING_NODE_SIZE,
16135
16843
  TOPOLOGY_STROKE_WIDTH_MAP,
16136
16844
  applyLnbSideToModifiers,
16137
16845
  buildPaginationItems,