@stn-uiux/pub-ui-react 0.1.80 → 0.1.82
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.d.ts +414 -38
- package/dist/index.js +1996 -432
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -972,6 +972,7 @@ var StnModal = forwardRef6(function StnModal2({
|
|
|
972
972
|
bodyClassName,
|
|
973
973
|
portal = true,
|
|
974
974
|
closeOnScrimClick = true,
|
|
975
|
+
showClose = true,
|
|
975
976
|
dim = true,
|
|
976
977
|
role = "dialog",
|
|
977
978
|
...rest
|
|
@@ -1004,7 +1005,7 @@ var StnModal = forwardRef6(function StnModal2({
|
|
|
1004
1005
|
] }),
|
|
1005
1006
|
subtitle ? /* @__PURE__ */ jsx9("p", { className: "stn-pop__subtitle", children: subtitle }) : null
|
|
1006
1007
|
] }),
|
|
1007
|
-
onClose ? /* @__PURE__ */ jsx9(
|
|
1008
|
+
showClose && onClose ? /* @__PURE__ */ jsx9(
|
|
1008
1009
|
StnButton,
|
|
1009
1010
|
{
|
|
1010
1011
|
icon: "line/x",
|
|
@@ -1098,8 +1099,24 @@ function StnDrawerHeader({
|
|
|
1098
1099
|
) : null
|
|
1099
1100
|
] });
|
|
1100
1101
|
}
|
|
1102
|
+
function resolveScaleGap(gap, spacing) {
|
|
1103
|
+
if (gap && ["none", "xs", "sm", "md", "lg", "xl"].includes(gap)) return gap;
|
|
1104
|
+
if (typeof spacing === "string" && ["none", "xs", "sm", "md", "lg", "xl"].includes(spacing)) {
|
|
1105
|
+
return spacing;
|
|
1106
|
+
}
|
|
1107
|
+
if (typeof spacing === "number") {
|
|
1108
|
+
if (spacing <= 0) return "none";
|
|
1109
|
+
if (spacing <= 2) return "xs";
|
|
1110
|
+
if (spacing <= 3) return "sm";
|
|
1111
|
+
if (spacing <= 4) return "md";
|
|
1112
|
+
if (spacing <= 5) return "lg";
|
|
1113
|
+
return "xl";
|
|
1114
|
+
}
|
|
1115
|
+
return void 0;
|
|
1116
|
+
}
|
|
1101
1117
|
function StnDrawerBody({
|
|
1102
1118
|
padding = "md",
|
|
1119
|
+
gap,
|
|
1103
1120
|
spacing,
|
|
1104
1121
|
className,
|
|
1105
1122
|
style,
|
|
@@ -1108,18 +1125,18 @@ function StnDrawerBody({
|
|
|
1108
1125
|
}) {
|
|
1109
1126
|
const isScalePadding = typeof padding === "string" && ["none", "xs", "sm", "md", "lg", "xl"].includes(padding);
|
|
1110
1127
|
const computedPadding = isScalePadding ? void 0 : typeof padding === "number" ? `var(--stn-space-${padding}, ${padding}px)` : padding;
|
|
1111
|
-
const
|
|
1128
|
+
const resolvedGap = resolveScaleGap(gap, spacing);
|
|
1112
1129
|
return /* @__PURE__ */ jsx10(
|
|
1113
1130
|
"div",
|
|
1114
1131
|
{
|
|
1115
1132
|
className: cn(
|
|
1116
1133
|
"stn-drawer__body",
|
|
1117
1134
|
isScalePadding && `padding-${padding}`,
|
|
1135
|
+
resolvedGap && `gap-${resolvedGap}`,
|
|
1118
1136
|
className
|
|
1119
1137
|
),
|
|
1120
1138
|
style: {
|
|
1121
1139
|
...computedPadding ? { padding: computedPadding } : {},
|
|
1122
|
-
...computedGap ? { gap: computedGap } : {},
|
|
1123
1140
|
...style
|
|
1124
1141
|
},
|
|
1125
1142
|
...rest,
|
|
@@ -8173,8 +8190,109 @@ StnTopologyGraph.Toolbar = StnTopologyGraphToolbar;
|
|
|
8173
8190
|
StnTopologyGraph.Minimap = StnTopologyGraphMinimap;
|
|
8174
8191
|
StnTopologyGraph.Viewport = StnTopologyGraphViewport;
|
|
8175
8192
|
|
|
8193
|
+
// src/patterns/widget/StnGradeRow.tsx
|
|
8194
|
+
import "react";
|
|
8195
|
+
import { jsx as jsx57, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
8196
|
+
var GRADE_ROW_ICON = {
|
|
8197
|
+
critical: "fill/alert4",
|
|
8198
|
+
major: "fill/alert3",
|
|
8199
|
+
minor: "fill/alert2",
|
|
8200
|
+
default: "fill/alert1"
|
|
8201
|
+
};
|
|
8202
|
+
function formatGradePercent(percent, decimals) {
|
|
8203
|
+
if (decimals !== void 0) {
|
|
8204
|
+
return `${percent.toFixed(decimals)}%`;
|
|
8205
|
+
}
|
|
8206
|
+
const rounded = Math.round(percent * 10) / 10;
|
|
8207
|
+
return Number.isInteger(rounded) ? `${rounded}%` : `${rounded.toFixed(1)}%`;
|
|
8208
|
+
}
|
|
8209
|
+
function StnGradeRow({
|
|
8210
|
+
grade,
|
|
8211
|
+
label,
|
|
8212
|
+
value,
|
|
8213
|
+
percent,
|
|
8214
|
+
percentLabel,
|
|
8215
|
+
decimals,
|
|
8216
|
+
className,
|
|
8217
|
+
...rest
|
|
8218
|
+
}) {
|
|
8219
|
+
const clamped = Math.max(0, Math.min(100, percent));
|
|
8220
|
+
const resolvedPercentLabel = percentLabel ?? formatGradePercent(clamped, decimals);
|
|
8221
|
+
return /* @__PURE__ */ jsxs45(
|
|
8222
|
+
"div",
|
|
8223
|
+
{
|
|
8224
|
+
className: cn(
|
|
8225
|
+
"stn-grade-row",
|
|
8226
|
+
`stn-grade-row--${grade}`,
|
|
8227
|
+
className
|
|
8228
|
+
),
|
|
8229
|
+
...rest,
|
|
8230
|
+
children: [
|
|
8231
|
+
/* @__PURE__ */ jsxs45("div", { className: "stn-grade-row__left", children: [
|
|
8232
|
+
/* @__PURE__ */ jsxs45("span", { className: "stn-grade-row__label", children: [
|
|
8233
|
+
/* @__PURE__ */ jsx57(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-grade-row__icon", "aria-hidden": true }),
|
|
8234
|
+
label
|
|
8235
|
+
] }),
|
|
8236
|
+
/* @__PURE__ */ jsx57("div", { className: "stn-grade-row__track", "aria-hidden": true, children: /* @__PURE__ */ jsx57("span", { className: "stn-grade-row__fill", style: { width: `${clamped}%` } }) })
|
|
8237
|
+
] }),
|
|
8238
|
+
/* @__PURE__ */ jsxs45("div", { className: "stn-grade-row__right", children: [
|
|
8239
|
+
/* @__PURE__ */ jsx57("span", { className: "stn-grade-row__value", children: value }),
|
|
8240
|
+
/* @__PURE__ */ jsx57("span", { className: "stn-grade-row__percent", children: resolvedPercentLabel })
|
|
8241
|
+
] })
|
|
8242
|
+
]
|
|
8243
|
+
}
|
|
8244
|
+
);
|
|
8245
|
+
}
|
|
8246
|
+
function StnGradeRowList({ className, children, ...rest }) {
|
|
8247
|
+
return /* @__PURE__ */ jsx57("div", { className: cn("stn-grade-row-list", className), ...rest, children });
|
|
8248
|
+
}
|
|
8249
|
+
|
|
8250
|
+
// src/patterns/widget/StnStatCard.tsx
|
|
8251
|
+
import "react";
|
|
8252
|
+
import { jsx as jsx58, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
8253
|
+
function StnStatCard({ label, count, className, ...rest }) {
|
|
8254
|
+
return /* @__PURE__ */ jsxs46("div", { className: cn("stn-stat-card", className), ...rest, children: [
|
|
8255
|
+
/* @__PURE__ */ jsx58("span", { className: "stn-stat-label", children: label }),
|
|
8256
|
+
/* @__PURE__ */ jsx58("span", { className: "stn-stat-count", children: count })
|
|
8257
|
+
] });
|
|
8258
|
+
}
|
|
8259
|
+
function StnStatGroup({ className, children, ...rest }) {
|
|
8260
|
+
return /* @__PURE__ */ jsx58("div", { className: cn("stn-stat-group", className), ...rest, children });
|
|
8261
|
+
}
|
|
8262
|
+
|
|
8263
|
+
// src/patterns/widget/StnStatusList.tsx
|
|
8264
|
+
import "react";
|
|
8265
|
+
import { jsx as jsx59, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
8266
|
+
function StnStatusItem({
|
|
8267
|
+
label,
|
|
8268
|
+
value,
|
|
8269
|
+
grade: gradeProp,
|
|
8270
|
+
status,
|
|
8271
|
+
showDot = true,
|
|
8272
|
+
className,
|
|
8273
|
+
...rest
|
|
8274
|
+
}) {
|
|
8275
|
+
const grade = gradeProp ?? (status === "warning" ? "minor" : status) ?? "normal";
|
|
8276
|
+
return /* @__PURE__ */ jsxs47("div", { className: cn("stn-status-item", className), ...rest, children: [
|
|
8277
|
+
/* @__PURE__ */ jsxs47("span", { className: "stn-status-item__label", children: [
|
|
8278
|
+
showDot ? /* @__PURE__ */ jsx59(
|
|
8279
|
+
"span",
|
|
8280
|
+
{
|
|
8281
|
+
className: cn("stn-status-item__dot", `stn-status-item__dot--${grade}`),
|
|
8282
|
+
"aria-hidden": "true"
|
|
8283
|
+
}
|
|
8284
|
+
) : null,
|
|
8285
|
+
label
|
|
8286
|
+
] }),
|
|
8287
|
+
/* @__PURE__ */ jsx59("span", { className: "stn-status-item__val", children: value })
|
|
8288
|
+
] });
|
|
8289
|
+
}
|
|
8290
|
+
function StnStatusList({ className, children, ...rest }) {
|
|
8291
|
+
return /* @__PURE__ */ jsx59("div", { className: cn("stn-status-list", className), ...rest, children });
|
|
8292
|
+
}
|
|
8293
|
+
|
|
8176
8294
|
// src/components/StnWidget.tsx
|
|
8177
|
-
import { Fragment as Fragment8, jsx as
|
|
8295
|
+
import { Fragment as Fragment8, jsx as jsx60, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
8178
8296
|
var SHELL_PUB_CLASS = {
|
|
8179
8297
|
card: "",
|
|
8180
8298
|
"fault-panel": "",
|
|
@@ -8257,20 +8375,20 @@ function StnWidgetPeriodText({
|
|
|
8257
8375
|
className,
|
|
8258
8376
|
...rest
|
|
8259
8377
|
}) {
|
|
8260
|
-
return /* @__PURE__ */
|
|
8378
|
+
return /* @__PURE__ */ jsx60("span", { className: cn("stn-widget__period-text", className), ...rest, children });
|
|
8261
8379
|
}
|
|
8262
8380
|
function StnWidgetPeriodSelect({
|
|
8263
8381
|
label,
|
|
8264
8382
|
className,
|
|
8265
8383
|
...rest
|
|
8266
8384
|
}) {
|
|
8267
|
-
return /* @__PURE__ */
|
|
8385
|
+
return /* @__PURE__ */ jsx60(
|
|
8268
8386
|
StnButton,
|
|
8269
8387
|
{
|
|
8270
8388
|
variant: "ghost",
|
|
8271
8389
|
size: "sm",
|
|
8272
8390
|
shape: "square",
|
|
8273
|
-
icon: /* @__PURE__ */
|
|
8391
|
+
icon: /* @__PURE__ */ jsx60(StnIcon, { name: "line/chevron-down" }),
|
|
8274
8392
|
iconPosition: "right",
|
|
8275
8393
|
className,
|
|
8276
8394
|
...rest,
|
|
@@ -8287,26 +8405,26 @@ function StnWidgetPeriodPager({
|
|
|
8287
8405
|
nextLabel = "\uB2E4\uC74C",
|
|
8288
8406
|
...rest
|
|
8289
8407
|
}) {
|
|
8290
|
-
return /* @__PURE__ */
|
|
8291
|
-
/* @__PURE__ */
|
|
8408
|
+
return /* @__PURE__ */ jsxs48("div", { className: cn("stn-widget__period-pager", className), ...rest, children: [
|
|
8409
|
+
/* @__PURE__ */ jsx60(
|
|
8292
8410
|
StnButton,
|
|
8293
8411
|
{
|
|
8294
8412
|
variant: "ghost",
|
|
8295
8413
|
size: "sm",
|
|
8296
8414
|
shape: "square",
|
|
8297
|
-
icon: /* @__PURE__ */
|
|
8415
|
+
icon: /* @__PURE__ */ jsx60(StnIcon, { name: "line/arrow-narrow-left" }),
|
|
8298
8416
|
onClick: onPrev,
|
|
8299
8417
|
"aria-label": prevLabel
|
|
8300
8418
|
}
|
|
8301
8419
|
),
|
|
8302
|
-
/* @__PURE__ */
|
|
8303
|
-
/* @__PURE__ */
|
|
8420
|
+
/* @__PURE__ */ jsx60("span", { className: "stn-widget__period-pager-label", children: label }),
|
|
8421
|
+
/* @__PURE__ */ jsx60(
|
|
8304
8422
|
StnButton,
|
|
8305
8423
|
{
|
|
8306
8424
|
variant: "ghost",
|
|
8307
8425
|
size: "sm",
|
|
8308
8426
|
shape: "square",
|
|
8309
|
-
icon: /* @__PURE__ */
|
|
8427
|
+
icon: /* @__PURE__ */ jsx60(StnIcon, { name: "line/arrow-narrow-right" }),
|
|
8310
8428
|
onClick: onNext,
|
|
8311
8429
|
"aria-label": nextLabel
|
|
8312
8430
|
}
|
|
@@ -8333,18 +8451,18 @@ function StnWidgetHeaderInner({
|
|
|
8333
8451
|
return null;
|
|
8334
8452
|
}
|
|
8335
8453
|
const resolvedIconName = headerIconName ?? defaultHeaderIconName(appearance);
|
|
8336
|
-
return /* @__PURE__ */
|
|
8337
|
-
/* @__PURE__ */
|
|
8338
|
-
showHeaderIcon ? headerIcon != null ? /* @__PURE__ */
|
|
8339
|
-
title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */
|
|
8340
|
-
typeof title === "string" ? /* @__PURE__ */
|
|
8454
|
+
return /* @__PURE__ */ jsxs48("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
|
|
8455
|
+
/* @__PURE__ */ jsxs48("div", { className: "stn-widget__head-start", children: [
|
|
8456
|
+
showHeaderIcon ? headerIcon != null ? /* @__PURE__ */ jsx60(StnWidgetInsetIcon, { size: "sm", children: headerIcon }) : resolvedIconName ? /* @__PURE__ */ jsx60(StnWidgetInsetIcon, { size: "sm", icon: resolvedIconName }) : null : null,
|
|
8457
|
+
title != null || badge != null ? typeof title === "string" || title == null ? /* @__PURE__ */ jsxs48("div", { className: "stn-widget__title-wrap", children: [
|
|
8458
|
+
typeof title === "string" ? /* @__PURE__ */ jsx60("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : null,
|
|
8341
8459
|
badge
|
|
8342
|
-
] }) : /* @__PURE__ */
|
|
8460
|
+
] }) : /* @__PURE__ */ jsxs48(Fragment8, { children: [
|
|
8343
8461
|
title,
|
|
8344
8462
|
badge
|
|
8345
8463
|
] }) : null
|
|
8346
8464
|
] }),
|
|
8347
|
-
titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */
|
|
8465
|
+
titleActions != null || periodActions != null || periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx60("div", { className: "stn-widget__head-end", children: titleActions ?? (periodActions != null ? periodActions : periodLabel != null && periodLabel !== "" ? /* @__PURE__ */ jsx60(StnWidgetPeriodText, { children: periodLabel }) : null) }) : null
|
|
8348
8466
|
] });
|
|
8349
8467
|
}
|
|
8350
8468
|
function StnWidgetRoot({
|
|
@@ -8427,10 +8545,10 @@ function StnWidgetRoot({
|
|
|
8427
8545
|
...rest
|
|
8428
8546
|
};
|
|
8429
8547
|
const slots = partitionWidgetChildren(children);
|
|
8430
|
-
const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */
|
|
8431
|
-
/* @__PURE__ */
|
|
8548
|
+
const propHead = shell === "fault-panel" && !isFigmaShell ? title != null || titleActions ? /* @__PURE__ */ jsxs48("div", { className: "app_bar", children: [
|
|
8549
|
+
/* @__PURE__ */ jsx60("div", { className: "fault_title_box", children: typeof title === "string" ? /* @__PURE__ */ jsx60("span", { children: title }) : title }),
|
|
8432
8550
|
titleActions
|
|
8433
|
-
] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */
|
|
8551
|
+
] }) : null : shell === "board" || shell === "board-item" ? title != null ? /* @__PURE__ */ jsx60("div", { className: "stn-widget__head", children: typeof title === "string" ? /* @__PURE__ */ jsx60("p", { children: title }) : title }) : null : isFigmaShell ? /* @__PURE__ */ jsx60(
|
|
8434
8552
|
StnWidgetHeaderInner,
|
|
8435
8553
|
{
|
|
8436
8554
|
appearance,
|
|
@@ -8446,40 +8564,40 @@ function StnWidgetRoot({
|
|
|
8446
8564
|
headerIcon,
|
|
8447
8565
|
wrapActions
|
|
8448
8566
|
}
|
|
8449
|
-
) : title != null || badge != null || titleActions ? /* @__PURE__ */
|
|
8450
|
-
/* @__PURE__ */
|
|
8451
|
-
title != null ? typeof title === "string" ? /* @__PURE__ */
|
|
8567
|
+
) : title != null || badge != null || titleActions ? /* @__PURE__ */ jsxs48("div", { className: cn("stn-widget__head", wrapActions && "stn-widget__head--wrap"), children: [
|
|
8568
|
+
/* @__PURE__ */ jsxs48("div", { className: "stn-widget__head-start", children: [
|
|
8569
|
+
title != null ? typeof title === "string" ? /* @__PURE__ */ jsx60("p", { className: cn("stn-widget__title", titleSize, titleWeight), title, children: title }) : title : null,
|
|
8452
8570
|
badge
|
|
8453
8571
|
] }),
|
|
8454
|
-
titleActions ? /* @__PURE__ */
|
|
8572
|
+
titleActions ? /* @__PURE__ */ jsx60("div", { className: "stn-widget__head-end", children: titleActions }) : null
|
|
8455
8573
|
] }) : null;
|
|
8456
8574
|
const head = slots.headers.length > 0 ? slots.headers : propHead;
|
|
8457
8575
|
const autoBodyClass = shell === "fault-panel" && !isFigmaShell ? "table_area" : void 0;
|
|
8458
8576
|
let body;
|
|
8459
8577
|
if (loading) {
|
|
8460
|
-
body = /* @__PURE__ */
|
|
8578
|
+
body = /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__body", autoBodyClass, contentClassName), children: /* @__PURE__ */ jsx60(StnWidgetLoading, {}) });
|
|
8461
8579
|
} else if (slots.bodies.length > 0) {
|
|
8462
8580
|
body = slots.bodies.map(
|
|
8463
8581
|
(slot, index) => mergeBodySlot(slot, index === 0 ? slots.rest : [], contentClassName, isEmptyState, emptyStyle)
|
|
8464
8582
|
);
|
|
8465
8583
|
} else {
|
|
8466
|
-
body = /* @__PURE__ */
|
|
8584
|
+
body = /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__body", autoBodyClass, isEmptyState && "empty", contentClassName), style: emptyStyle, children: slots.rest });
|
|
8467
8585
|
}
|
|
8468
|
-
const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */
|
|
8469
|
-
const card = /* @__PURE__ */
|
|
8470
|
-
isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */
|
|
8586
|
+
const footerNode = slots.footers.length > 0 ? slots.footers : footer ? /* @__PURE__ */ jsx60("div", { className: "stn-widget__footer", children: footer }) : null;
|
|
8587
|
+
const card = /* @__PURE__ */ jsxs48("div", { ...rootProps, children: [
|
|
8588
|
+
isFigmaShell && appearanceShell === "overlay" ? /* @__PURE__ */ jsx60("div", { className: "stn-widget__map-deco", "aria-hidden": true }) : null,
|
|
8471
8589
|
head,
|
|
8472
8590
|
body,
|
|
8473
8591
|
footerNode
|
|
8474
8592
|
] });
|
|
8475
8593
|
if (banner == null || banner === false) return card;
|
|
8476
|
-
return /* @__PURE__ */
|
|
8594
|
+
return /* @__PURE__ */ jsxs48("div", { className: "stn-widget-anchor", children: [
|
|
8477
8595
|
withBannerSeverity(banner, bannerSeverityFromStatus(status, isCritical)),
|
|
8478
8596
|
card
|
|
8479
8597
|
] });
|
|
8480
8598
|
}
|
|
8481
8599
|
function StnWidgetHeader({ className, wrap = false, children, ...rest }) {
|
|
8482
|
-
return /* @__PURE__ */
|
|
8600
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__head", wrap && "stn-widget__head--wrap", className), ...rest, children });
|
|
8483
8601
|
}
|
|
8484
8602
|
markWidgetSlot(StnWidgetHeader, "header");
|
|
8485
8603
|
function StnWidgetTitle({
|
|
@@ -8491,10 +8609,10 @@ function StnWidgetTitle({
|
|
|
8491
8609
|
...rest
|
|
8492
8610
|
}) {
|
|
8493
8611
|
const titleAttr = title ?? (typeof children === "string" ? children : void 0);
|
|
8494
|
-
return /* @__PURE__ */
|
|
8612
|
+
return /* @__PURE__ */ jsx60("p", { className: cn("stn-widget__title", size, weight, className), title: titleAttr, ...rest, children });
|
|
8495
8613
|
}
|
|
8496
8614
|
function StnWidgetActions({ className, children, ...rest }) {
|
|
8497
|
-
return /* @__PURE__ */
|
|
8615
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__head-end", className), ...rest, children });
|
|
8498
8616
|
}
|
|
8499
8617
|
function StnWidgetBody({
|
|
8500
8618
|
padding,
|
|
@@ -8508,7 +8626,7 @@ function StnWidgetBody({
|
|
|
8508
8626
|
}) {
|
|
8509
8627
|
const emptyText = typeof empty === "string" ? empty : void 0;
|
|
8510
8628
|
const mergedStyle = emptyText ? { ["--stn-widget-empty-text"]: `"${emptyText}"`, ...style } : style;
|
|
8511
|
-
return /* @__PURE__ */
|
|
8629
|
+
return /* @__PURE__ */ jsx60(
|
|
8512
8630
|
"div",
|
|
8513
8631
|
{
|
|
8514
8632
|
className: cn(
|
|
@@ -8530,104 +8648,36 @@ function StnWidgetBody({
|
|
|
8530
8648
|
}
|
|
8531
8649
|
markWidgetSlot(StnWidgetBody, "body");
|
|
8532
8650
|
function StnWidgetChartSlot({ label = "select chart", className, children, ...rest }) {
|
|
8533
|
-
return /* @__PURE__ */
|
|
8534
|
-
}
|
|
8535
|
-
function StnWidgetStatusItem({
|
|
8536
|
-
label,
|
|
8537
|
-
value,
|
|
8538
|
-
grade: gradeProp,
|
|
8539
|
-
status,
|
|
8540
|
-
showDot = true,
|
|
8541
|
-
className,
|
|
8542
|
-
...rest
|
|
8543
|
-
}) {
|
|
8544
|
-
const grade = gradeProp ?? (status === "warning" ? "minor" : status) ?? "normal";
|
|
8545
|
-
return /* @__PURE__ */ jsxs45("div", { className: cn("stn-widget__status-item", className), ...rest, children: [
|
|
8546
|
-
/* @__PURE__ */ jsxs45("span", { className: "stn-widget__status-label", children: [
|
|
8547
|
-
showDot ? /* @__PURE__ */ jsx57(
|
|
8548
|
-
"span",
|
|
8549
|
-
{
|
|
8550
|
-
className: cn("stn-widget__status-dot", `stn-widget__status-dot--${grade}`),
|
|
8551
|
-
"aria-hidden": "true"
|
|
8552
|
-
}
|
|
8553
|
-
) : null,
|
|
8554
|
-
label
|
|
8555
|
-
] }),
|
|
8556
|
-
/* @__PURE__ */ jsx57("span", { className: "stn-widget__status-val", children: value })
|
|
8557
|
-
] });
|
|
8558
|
-
}
|
|
8559
|
-
function StnWidgetStatusList({ className, children, ...rest }) {
|
|
8560
|
-
return /* @__PURE__ */ jsx57("div", { className: cn("stn-widget__status-list", className), ...rest, children });
|
|
8561
|
-
}
|
|
8562
|
-
function StnWidgetStatGroup({ className, children, ...rest }) {
|
|
8563
|
-
return /* @__PURE__ */ jsx57("div", { className: cn("stn-widget__stat-group", className), ...rest, children });
|
|
8564
|
-
}
|
|
8565
|
-
function StnWidgetStatCard({ label, count, className, ...rest }) {
|
|
8566
|
-
return /* @__PURE__ */ jsxs45("div", { className: cn("stn-widget__stat-card", className), ...rest, children: [
|
|
8567
|
-
/* @__PURE__ */ jsx57("span", { className: "stn-widget__stat-label", children: label }),
|
|
8568
|
-
/* @__PURE__ */ jsx57("span", { className: "stn-widget__stat-count", children: count })
|
|
8569
|
-
] });
|
|
8651
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__chart-slot", className), "data-stn-widget-chart-slot": true, ...rest, children: children ?? /* @__PURE__ */ jsx60("span", { className: "stn-widget__chart-slot-label", children: label }) });
|
|
8570
8652
|
}
|
|
8571
8653
|
function StnWidgetPlaceholder({ label = "\uCF58\uD150\uCE20 \uC601\uC5ED" }) {
|
|
8572
|
-
return /* @__PURE__ */
|
|
8573
|
-
}
|
|
8574
|
-
var
|
|
8575
|
-
|
|
8576
|
-
|
|
8577
|
-
|
|
8578
|
-
|
|
8579
|
-
|
|
8580
|
-
function formatGradePercent(percent) {
|
|
8581
|
-
const rounded = Math.round(percent * 10) / 10;
|
|
8582
|
-
return Number.isInteger(rounded) ? `${rounded}%` : `${rounded.toFixed(1)}%`;
|
|
8583
|
-
}
|
|
8584
|
-
function StnWidgetGradeRow({
|
|
8585
|
-
grade,
|
|
8586
|
-
label,
|
|
8587
|
-
value,
|
|
8588
|
-
percent,
|
|
8589
|
-
percentLabel,
|
|
8590
|
-
className,
|
|
8591
|
-
...rest
|
|
8592
|
-
}) {
|
|
8593
|
-
const clamped = Math.max(0, Math.min(100, percent));
|
|
8594
|
-
const resolvedPercentLabel = percentLabel ?? formatGradePercent(clamped);
|
|
8595
|
-
return /* @__PURE__ */ jsxs45("div", { className: cn("stn-widget__grade-row", `stn-widget__grade-row--${grade}`, className), ...rest, children: [
|
|
8596
|
-
/* @__PURE__ */ jsxs45("div", { className: "stn-widget__grade-row-left", children: [
|
|
8597
|
-
/* @__PURE__ */ jsxs45("span", { className: "stn-widget__grade-row-label", children: [
|
|
8598
|
-
/* @__PURE__ */ jsx57(StnIcon, { name: GRADE_ROW_ICON[grade], size: 20, className: "stn-widget__grade-row-icon", "aria-hidden": true }),
|
|
8599
|
-
label
|
|
8600
|
-
] }),
|
|
8601
|
-
/* @__PURE__ */ jsx57("div", { className: "stn-widget__grade-row-track", "aria-hidden": true, children: /* @__PURE__ */ jsx57("span", { className: "stn-widget__grade-row-fill", style: { width: `${clamped}%` } }) })
|
|
8602
|
-
] }),
|
|
8603
|
-
/* @__PURE__ */ jsxs45("div", { className: "stn-widget__grade-row-right", children: [
|
|
8604
|
-
/* @__PURE__ */ jsx57("span", { className: "stn-widget__grade-row-value", children: value }),
|
|
8605
|
-
/* @__PURE__ */ jsx57("span", { className: "stn-widget__grade-row-percent", children: resolvedPercentLabel })
|
|
8606
|
-
] })
|
|
8607
|
-
] });
|
|
8608
|
-
}
|
|
8609
|
-
function StnWidgetGradeRowList({ className, children, ...rest }) {
|
|
8610
|
-
return /* @__PURE__ */ jsx57("div", { className: cn("stn-widget__grade-row-list", className), ...rest, children });
|
|
8611
|
-
}
|
|
8654
|
+
return /* @__PURE__ */ jsx60("div", { className: "stn-widget__placeholder", children: label });
|
|
8655
|
+
}
|
|
8656
|
+
var StnWidgetStatusItem = StnStatusItem;
|
|
8657
|
+
var StnWidgetStatusList = StnStatusList;
|
|
8658
|
+
var StnWidgetStatGroup = StnStatGroup;
|
|
8659
|
+
var StnWidgetStatCard = StnStatCard;
|
|
8660
|
+
var StnWidgetGradeRow = StnGradeRow;
|
|
8661
|
+
var StnWidgetGradeRowList = StnGradeRowList;
|
|
8612
8662
|
function StnWidgetFooter({ className, children, ...rest }) {
|
|
8613
|
-
return /* @__PURE__ */
|
|
8663
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__footer", className), ...rest, children });
|
|
8614
8664
|
}
|
|
8615
8665
|
markWidgetSlot(StnWidgetFooter, "footer");
|
|
8616
8666
|
function StnWidgetEmpty({ className, children, ...rest }) {
|
|
8617
|
-
return /* @__PURE__ */
|
|
8618
|
-
/* @__PURE__ */
|
|
8619
|
-
/* @__PURE__ */
|
|
8620
|
-
/* @__PURE__ */
|
|
8621
|
-
/* @__PURE__ */
|
|
8667
|
+
return /* @__PURE__ */ jsxs48("div", { className: cn("stn-widget__empty", className), ...rest, children: [
|
|
8668
|
+
/* @__PURE__ */ jsxs48("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: [
|
|
8669
|
+
/* @__PURE__ */ jsx60("circle", { cx: "12", cy: "12", r: "10" }),
|
|
8670
|
+
/* @__PURE__ */ jsx60("line", { x1: "12", y1: "8", x2: "12", y2: "12" }),
|
|
8671
|
+
/* @__PURE__ */ jsx60("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })
|
|
8622
8672
|
] }),
|
|
8623
|
-
/* @__PURE__ */
|
|
8673
|
+
/* @__PURE__ */ jsx60("div", { children: children ?? "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4." })
|
|
8624
8674
|
] });
|
|
8625
8675
|
}
|
|
8626
8676
|
function StnWidgetLoading({ lines = 3, className, children, ...rest }) {
|
|
8627
|
-
return /* @__PURE__ */
|
|
8677
|
+
return /* @__PURE__ */ jsx60("div", { className: cn("stn-widget__loading", className), ...rest, children: children ?? /* @__PURE__ */ jsx60(StnLoadingSkeleton.Widget, { lines }) });
|
|
8628
8678
|
}
|
|
8629
8679
|
function StnWidgetInsetIcon({ className, size = "sm", ...rest }) {
|
|
8630
|
-
return /* @__PURE__ */
|
|
8680
|
+
return /* @__PURE__ */ jsx60(StnIconBox, { size, className: cn("stn-widget__inset-icon", className), ...rest });
|
|
8631
8681
|
}
|
|
8632
8682
|
var StnWidget = Object.assign(StnWidgetRoot, {
|
|
8633
8683
|
Header: StnWidgetHeader,
|
|
@@ -8672,7 +8722,7 @@ import {
|
|
|
8672
8722
|
} from "@stn-uiux/pub-ui/data/stnWidget";
|
|
8673
8723
|
|
|
8674
8724
|
// src/patterns/dashboard/AlertCenterDashboard.tsx
|
|
8675
|
-
import { jsx as
|
|
8725
|
+
import { jsx as jsx61, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
8676
8726
|
var TOP5_ROWS = [
|
|
8677
8727
|
{ label: "\uADF8\uB791\uC2DC\uC544", percent: 80, value: "80\uAC74", grade: "critical" },
|
|
8678
8728
|
{ label: "\uC5F0\uB9BD\uC8FC\uD0DD 15\uC138\uB300", percent: 74, value: "74\uAC74", grade: "major" },
|
|
@@ -8681,7 +8731,7 @@ var TOP5_ROWS = [
|
|
|
8681
8731
|
{ label: "PRADA", percent: 68, value: "68\uAC74", grade: "default" }
|
|
8682
8732
|
];
|
|
8683
8733
|
function AlertCenterDashboard({ className, appearance = "translucent", loading = false }) {
|
|
8684
|
-
return /* @__PURE__ */
|
|
8734
|
+
return /* @__PURE__ */ jsxs49(
|
|
8685
8735
|
StnStack,
|
|
8686
8736
|
{
|
|
8687
8737
|
direction: "column",
|
|
@@ -8690,17 +8740,17 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
|
|
|
8690
8740
|
style: { flex: "1 1 0%", minHeight: 0, height: "100%", width: "100%" },
|
|
8691
8741
|
"data-stn-dashboard": "alert-widgets",
|
|
8692
8742
|
children: [
|
|
8693
|
-
/* @__PURE__ */
|
|
8694
|
-
/* @__PURE__ */
|
|
8695
|
-
/* @__PURE__ */
|
|
8696
|
-
/* @__PURE__ */
|
|
8743
|
+
/* @__PURE__ */ jsx61(StnWidget, { title: "\uC2DC\uC124 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx61(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs49(StnWidget.StatusList, { children: [
|
|
8744
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "PTN", value: "179", showDot: false }),
|
|
8745
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "MSPP", value: "63", showDot: false }),
|
|
8746
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "L3\uC2A4\uC704\uCE58", value: "27", showDot: false })
|
|
8697
8747
|
] }) }),
|
|
8698
|
-
/* @__PURE__ */
|
|
8699
|
-
/* @__PURE__ */
|
|
8700
|
-
/* @__PURE__ */
|
|
8701
|
-
/* @__PURE__ */
|
|
8748
|
+
/* @__PURE__ */ jsx61(StnWidget, { title: "\uC7A5\uC560 \uD604\uD669", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx61(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsxs49(StnWidget.StatusList, { children: [
|
|
8749
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "Critical", value: "43", grade: "critical" }),
|
|
8750
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "Major", value: "79", grade: "major" }),
|
|
8751
|
+
/* @__PURE__ */ jsx61(StnWidget.StatusItem, { label: "Minor", value: "3", grade: "minor" })
|
|
8702
8752
|
] }) }),
|
|
8703
|
-
/* @__PURE__ */
|
|
8753
|
+
/* @__PURE__ */ jsx61(StnWidget, { title: "\uC77C\uC77C \uC7A5\uBE44\uBCC4 \uC7A5\uC560 TOP5", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx61(StnLoadingSkeleton.Widget, { lines: 4 }) : /* @__PURE__ */ jsx61(StnWidget.GradeRowList, { children: TOP5_ROWS.map((row) => /* @__PURE__ */ jsx61(
|
|
8704
8754
|
StnWidget.GradeRow,
|
|
8705
8755
|
{
|
|
8706
8756
|
grade: row.grade,
|
|
@@ -8710,50 +8760,50 @@ function AlertCenterDashboard({ className, appearance = "translucent", loading =
|
|
|
8710
8760
|
},
|
|
8711
8761
|
row.label
|
|
8712
8762
|
)) }) }),
|
|
8713
|
-
/* @__PURE__ */
|
|
8763
|
+
/* @__PURE__ */ jsx61(StnWidget, { title: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4", appearance, interactive: true, children: loading ? /* @__PURE__ */ jsx61(StnLoadingSkeleton.Widget, { lines: 3 }) : /* @__PURE__ */ jsx61(StnWidget.ChartSlot, { label: "\uC77C\uC77C \uC7A5\uC560 \uD1B5\uACC4 \uCC28\uD2B8" }) })
|
|
8714
8764
|
]
|
|
8715
8765
|
}
|
|
8716
8766
|
);
|
|
8717
8767
|
}
|
|
8718
8768
|
|
|
8719
8769
|
// src/patterns/dashboard/PubDashboardWidgetBodies.tsx
|
|
8720
|
-
import { jsx as
|
|
8770
|
+
import { jsx as jsx62, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
8721
8771
|
function PubDisabilityStatusList({ items, summary }) {
|
|
8722
|
-
return /* @__PURE__ */
|
|
8723
|
-
/* @__PURE__ */
|
|
8772
|
+
return /* @__PURE__ */ jsxs50("div", { className: "ds-disability-status", children: [
|
|
8773
|
+
/* @__PURE__ */ jsx62("ul", { className: "ds-disability-status__list", children: items.map((item, i) => /* @__PURE__ */ jsxs50(
|
|
8724
8774
|
"li",
|
|
8725
8775
|
{
|
|
8726
8776
|
className: ["ds-disability-status__item", item.grade].filter(Boolean).join(" "),
|
|
8727
8777
|
children: [
|
|
8728
|
-
/* @__PURE__ */
|
|
8729
|
-
item.showDot !== false && item.grade ? /* @__PURE__ */
|
|
8778
|
+
/* @__PURE__ */ jsxs50("span", { children: [
|
|
8779
|
+
item.showDot !== false && item.grade ? /* @__PURE__ */ jsx62("span", { className: "dot", "aria-hidden": true }) : null,
|
|
8730
8780
|
item.label
|
|
8731
8781
|
] }),
|
|
8732
|
-
/* @__PURE__ */
|
|
8782
|
+
/* @__PURE__ */ jsx62("p", { children: item.value })
|
|
8733
8783
|
]
|
|
8734
8784
|
},
|
|
8735
8785
|
i
|
|
8736
8786
|
)) }),
|
|
8737
|
-
summary && summary.length > 0 ? /* @__PURE__ */
|
|
8787
|
+
summary && summary.length > 0 ? /* @__PURE__ */ jsx62("div", { className: "ds-disability-status__summary", children: summary.map((row, i) => /* @__PURE__ */ jsxs50("p", { className: "ds-disability-status__value", children: [
|
|
8738
8788
|
row.label,
|
|
8739
|
-
/* @__PURE__ */
|
|
8789
|
+
/* @__PURE__ */ jsx62("span", { children: row.value })
|
|
8740
8790
|
] }, i)) }) : null
|
|
8741
8791
|
] });
|
|
8742
8792
|
}
|
|
8743
8793
|
function PubTrafficTop5Bars({ rows }) {
|
|
8744
8794
|
const maxPercent = Math.max(...rows.map((row) => row.percent), 0);
|
|
8745
|
-
return /* @__PURE__ */
|
|
8746
|
-
/* @__PURE__ */
|
|
8747
|
-
/* @__PURE__ */
|
|
8748
|
-
/* @__PURE__ */
|
|
8795
|
+
return /* @__PURE__ */ jsx62("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsxs50("div", { className: ["ds-bar", row.percent === maxPercent ? "max" : ""].filter(Boolean).join(" "), children: [
|
|
8796
|
+
/* @__PURE__ */ jsx62("p", { className: "ds-bar-name", title: row.label, children: row.label }),
|
|
8797
|
+
/* @__PURE__ */ jsx62("div", { className: "ds-bar-con", title: `${row.percent}%`, children: /* @__PURE__ */ jsx62("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }) }),
|
|
8798
|
+
/* @__PURE__ */ jsx62("p", { className: "ds-bar-value", title: row.value, children: row.value })
|
|
8749
8799
|
] }, row.label)) });
|
|
8750
8800
|
}
|
|
8751
8801
|
function PubTop5EquipmentBars({ rows }) {
|
|
8752
|
-
return /* @__PURE__ */
|
|
8753
|
-
/* @__PURE__ */
|
|
8754
|
-
/* @__PURE__ */
|
|
8755
|
-
/* @__PURE__ */
|
|
8756
|
-
/* @__PURE__ */
|
|
8802
|
+
return /* @__PURE__ */ jsxs50("div", { className: "ds-group", children: [
|
|
8803
|
+
/* @__PURE__ */ jsx62("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx62("div", { className: "ds-equipment-ico", children: /* @__PURE__ */ jsx62("span", { className: "blind", children: "\uC7A5\uBE44 \uC774\uBBF8\uC9C0" }) }) }),
|
|
8804
|
+
/* @__PURE__ */ jsx62("div", { className: "ds-group-box", children: /* @__PURE__ */ jsx62("div", { className: "ds-bar-group", children: rows.map((row) => /* @__PURE__ */ jsx62("div", { className: "ds-bar type-2", children: /* @__PURE__ */ jsxs50("div", { className: "ds-bar-con", title: `${row.percent}%`, children: [
|
|
8805
|
+
/* @__PURE__ */ jsx62("span", { className: "ds-bar-gauge", style: { "--percent": `${row.percent}%` } }),
|
|
8806
|
+
/* @__PURE__ */ jsx62("div", { className: "ds-bar-status", children: row.status })
|
|
8757
8807
|
] }) }, row.label)) }) })
|
|
8758
8808
|
] });
|
|
8759
8809
|
}
|
|
@@ -8762,7 +8812,7 @@ function PubChartSample({
|
|
|
8762
8812
|
alt = "\uCC28\uD2B8",
|
|
8763
8813
|
onError
|
|
8764
8814
|
}) {
|
|
8765
|
-
return /* @__PURE__ */
|
|
8815
|
+
return /* @__PURE__ */ jsx62("div", { className: "ds-chart", children: /* @__PURE__ */ jsx62("img", { src, alt, className: "chart_sample", onError }) });
|
|
8766
8816
|
}
|
|
8767
8817
|
|
|
8768
8818
|
// src/patterns/alertCenter/StnAlertCenterPanel.tsx
|
|
@@ -8770,7 +8820,7 @@ import { useState as useState16 } from "react";
|
|
|
8770
8820
|
import {
|
|
8771
8821
|
STN_ALERT_CENTER_TABS
|
|
8772
8822
|
} from "@stn-uiux/pub-ui/data/stnAlertCenter";
|
|
8773
|
-
import { jsx as
|
|
8823
|
+
import { jsx as jsx63, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
8774
8824
|
function resolveAlertIcon(item) {
|
|
8775
8825
|
if (item.icon) {
|
|
8776
8826
|
if (item.icon === "line/arrow-down") return "line/arrow-narrow-down";
|
|
@@ -8797,7 +8847,7 @@ function StnAlertCard({
|
|
|
8797
8847
|
}) {
|
|
8798
8848
|
const iconNode = resolveAlertIcon(item);
|
|
8799
8849
|
const gradeLabel = resolveGradeLabel(item.grade);
|
|
8800
|
-
return /* @__PURE__ */
|
|
8850
|
+
return /* @__PURE__ */ jsx63(
|
|
8801
8851
|
StnCard,
|
|
8802
8852
|
{
|
|
8803
8853
|
variant: "elevated",
|
|
@@ -8806,8 +8856,8 @@ function StnAlertCard({
|
|
|
8806
8856
|
interactive: true,
|
|
8807
8857
|
className: cn("stn-alert-card", className),
|
|
8808
8858
|
onClick,
|
|
8809
|
-
children: /* @__PURE__ */
|
|
8810
|
-
/* @__PURE__ */
|
|
8859
|
+
children: /* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__row", children: [
|
|
8860
|
+
/* @__PURE__ */ jsx63(
|
|
8811
8861
|
StnIcon,
|
|
8812
8862
|
{
|
|
8813
8863
|
name: iconNode,
|
|
@@ -8816,9 +8866,9 @@ function StnAlertCard({
|
|
|
8816
8866
|
className: "stn-alert-card__icon"
|
|
8817
8867
|
}
|
|
8818
8868
|
),
|
|
8819
|
-
/* @__PURE__ */
|
|
8820
|
-
/* @__PURE__ */
|
|
8821
|
-
/* @__PURE__ */
|
|
8869
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__body", children: [
|
|
8870
|
+
/* @__PURE__ */ jsxs51(StnStack, { direction: "row", alignItems: "center", spacing: 1, className: "stn-alert-card__header-line", children: [
|
|
8871
|
+
/* @__PURE__ */ jsx63(
|
|
8822
8872
|
StnChip,
|
|
8823
8873
|
{
|
|
8824
8874
|
shape: "pill",
|
|
@@ -8828,25 +8878,25 @@ function StnAlertCard({
|
|
|
8828
8878
|
children: gradeLabel
|
|
8829
8879
|
}
|
|
8830
8880
|
),
|
|
8831
|
-
/* @__PURE__ */
|
|
8881
|
+
/* @__PURE__ */ jsx63(
|
|
8832
8882
|
"span",
|
|
8833
8883
|
{
|
|
8834
8884
|
className: cn("stn-alert-card__title", titleOverflow),
|
|
8835
8885
|
title: item.title,
|
|
8836
|
-
children: /* @__PURE__ */
|
|
8886
|
+
children: /* @__PURE__ */ jsx63("span", { className: "stn-alert-card__text-inner", children: item.title })
|
|
8837
8887
|
}
|
|
8838
8888
|
)
|
|
8839
8889
|
] }),
|
|
8840
|
-
/* @__PURE__ */
|
|
8841
|
-
/* @__PURE__ */
|
|
8890
|
+
/* @__PURE__ */ jsxs51(StnStack, { direction: "row", alignItems: "center", spacing: 2, wrap: "wrap", className: "stn-alert-card__desc-line", children: [
|
|
8891
|
+
/* @__PURE__ */ jsx63(
|
|
8842
8892
|
"span",
|
|
8843
8893
|
{
|
|
8844
8894
|
className: cn("stn-alert-card__desc", descOverflow),
|
|
8845
8895
|
title: item.description,
|
|
8846
|
-
children: /* @__PURE__ */
|
|
8896
|
+
children: /* @__PURE__ */ jsx63("span", { className: "stn-alert-card__text-inner", children: item.description })
|
|
8847
8897
|
}
|
|
8848
8898
|
),
|
|
8849
|
-
item.occurredAt && /* @__PURE__ */
|
|
8899
|
+
item.occurredAt && /* @__PURE__ */ jsxs51(
|
|
8850
8900
|
StnChip,
|
|
8851
8901
|
{
|
|
8852
8902
|
shape: "pill",
|
|
@@ -8862,9 +8912,9 @@ function StnAlertCard({
|
|
|
8862
8912
|
)
|
|
8863
8913
|
] })
|
|
8864
8914
|
] }),
|
|
8865
|
-
/* @__PURE__ */
|
|
8866
|
-
/* @__PURE__ */
|
|
8867
|
-
item.unread !== false && /* @__PURE__ */
|
|
8915
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__meta", children: [
|
|
8916
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-card__time", children: item.time }),
|
|
8917
|
+
item.unread !== false && /* @__PURE__ */ jsx63(
|
|
8868
8918
|
"span",
|
|
8869
8919
|
{
|
|
8870
8920
|
className: cn(
|
|
@@ -8902,7 +8952,7 @@ function StnAlertCenterPanel({
|
|
|
8902
8952
|
const alertCount = alerts.length;
|
|
8903
8953
|
const resolvedTitleOverflow = titleOverflow ?? textOverflow;
|
|
8904
8954
|
const resolvedDescOverflow = descOverflow ?? textOverflow;
|
|
8905
|
-
return /* @__PURE__ */
|
|
8955
|
+
return /* @__PURE__ */ jsxs51(
|
|
8906
8956
|
"div",
|
|
8907
8957
|
{
|
|
8908
8958
|
className: cn(
|
|
@@ -8914,13 +8964,13 @@ function StnAlertCenterPanel({
|
|
|
8914
8964
|
),
|
|
8915
8965
|
"data-stn-alert-center": true,
|
|
8916
8966
|
children: [
|
|
8917
|
-
/* @__PURE__ */
|
|
8918
|
-
/* @__PURE__ */
|
|
8919
|
-
/* @__PURE__ */
|
|
8920
|
-
/* @__PURE__ */
|
|
8921
|
-
alertCount > 0 && /* @__PURE__ */
|
|
8967
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-center__header", children: [
|
|
8968
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-center__header-left", children: [
|
|
8969
|
+
/* @__PURE__ */ jsx63(StnIcon, { name: "line/bell", size: 20, color: "var(--stn-primary)" }),
|
|
8970
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-center__title", children: title }),
|
|
8971
|
+
alertCount > 0 && /* @__PURE__ */ jsx63(StnChip, { shape: "pill", size: "sm", variant: "subtle", color: "primary", children: alertCount })
|
|
8922
8972
|
] }),
|
|
8923
|
-
/* @__PURE__ */
|
|
8973
|
+
/* @__PURE__ */ jsx63(
|
|
8924
8974
|
StnSegmented,
|
|
8925
8975
|
{
|
|
8926
8976
|
size: "md",
|
|
@@ -8933,8 +8983,8 @@ function StnAlertCenterPanel({
|
|
|
8933
8983
|
}))
|
|
8934
8984
|
}
|
|
8935
8985
|
),
|
|
8936
|
-
/* @__PURE__ */
|
|
8937
|
-
/* @__PURE__ */
|
|
8986
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-center__header-right", children: [
|
|
8987
|
+
/* @__PURE__ */ jsx63(
|
|
8938
8988
|
StnButton,
|
|
8939
8989
|
{
|
|
8940
8990
|
variant: "text",
|
|
@@ -8944,8 +8994,8 @@ function StnAlertCenterPanel({
|
|
|
8944
8994
|
children: "\uBAA8\uB450 \uC77D\uC74C"
|
|
8945
8995
|
}
|
|
8946
8996
|
),
|
|
8947
|
-
/* @__PURE__ */
|
|
8948
|
-
/* @__PURE__ */
|
|
8997
|
+
/* @__PURE__ */ jsx63("div", { className: "stn-alert-center__divider", "aria-hidden": true }),
|
|
8998
|
+
/* @__PURE__ */ jsx63(
|
|
8949
8999
|
StnButton,
|
|
8950
9000
|
{
|
|
8951
9001
|
icon: "line/x",
|
|
@@ -8957,14 +9007,14 @@ function StnAlertCenterPanel({
|
|
|
8957
9007
|
)
|
|
8958
9008
|
] })
|
|
8959
9009
|
] }),
|
|
8960
|
-
/* @__PURE__ */
|
|
9010
|
+
/* @__PURE__ */ jsxs51(
|
|
8961
9011
|
StnScroll,
|
|
8962
9012
|
{
|
|
8963
9013
|
orientation: "vertical",
|
|
8964
9014
|
size: "thin",
|
|
8965
9015
|
className: "stn-alert-center__list-wrap",
|
|
8966
9016
|
children: [
|
|
8967
|
-
activeTab === "error" && /* @__PURE__ */
|
|
9017
|
+
activeTab === "error" && /* @__PURE__ */ jsx63("ul", { className: "stn-alert-center__list", children: alerts.map((item) => /* @__PURE__ */ jsx63("li", { children: /* @__PURE__ */ jsx63(
|
|
8968
9018
|
StnAlertCard,
|
|
8969
9019
|
{
|
|
8970
9020
|
item,
|
|
@@ -8973,35 +9023,35 @@ function StnAlertCenterPanel({
|
|
|
8973
9023
|
onClick: () => onItemClick?.(item)
|
|
8974
9024
|
}
|
|
8975
9025
|
) }, item.id ?? item.title)) }),
|
|
8976
|
-
activeTab === "work" && /* @__PURE__ */
|
|
8977
|
-
/* @__PURE__ */
|
|
8978
|
-
/* @__PURE__ */
|
|
8979
|
-
/* @__PURE__ */
|
|
8980
|
-
/* @__PURE__ */
|
|
9026
|
+
activeTab === "work" && /* @__PURE__ */ jsx63("ul", { className: "stn-alert-center__list", children: workItems.map((row) => /* @__PURE__ */ jsx63("li", { children: /* @__PURE__ */ jsx63(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__row", children: [
|
|
9027
|
+
/* @__PURE__ */ jsx63(StnIcon, { name: "line/clock", size: 24, color: "var(--stn-text-secondary)", className: "stn-alert-card__icon" }),
|
|
9028
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__body", children: [
|
|
9029
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-card__type-label work", children: row.typeLabel }),
|
|
9030
|
+
/* @__PURE__ */ jsx63("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx63("span", { className: "stn-alert-card__text-inner", children: row.text }) })
|
|
8981
9031
|
] }),
|
|
8982
|
-
/* @__PURE__ */
|
|
9032
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-card__time", children: row.time })
|
|
8983
9033
|
] }) }) }, row.id ?? row.text)) }),
|
|
8984
|
-
activeTab === "deploy" && /* @__PURE__ */
|
|
8985
|
-
/* @__PURE__ */
|
|
8986
|
-
/* @__PURE__ */
|
|
8987
|
-
/* @__PURE__ */
|
|
8988
|
-
/* @__PURE__ */
|
|
9034
|
+
activeTab === "deploy" && /* @__PURE__ */ jsx63("ul", { className: "stn-alert-center__list", children: deployItems.map((row) => /* @__PURE__ */ jsx63("li", { children: /* @__PURE__ */ jsx63(StnCard, { variant: "elevated", radius: "md", padding: "md", interactive: true, className: "stn-alert-card", children: /* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__row", children: [
|
|
9035
|
+
/* @__PURE__ */ jsx63(StnIcon, { name: "line/settings", size: 24, color: "var(--stn-secondary)", className: "stn-alert-card__icon" }),
|
|
9036
|
+
/* @__PURE__ */ jsxs51("div", { className: "stn-alert-card__body", children: [
|
|
9037
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-card__type-label stn-alert-card__type-label--deploy", children: row.typeLabel }),
|
|
9038
|
+
/* @__PURE__ */ jsx63("span", { className: cn("stn-alert-card__desc", resolvedDescOverflow), title: row.text, children: /* @__PURE__ */ jsx63("span", { className: "stn-alert-card__text-inner", children: row.text }) })
|
|
8989
9039
|
] }),
|
|
8990
|
-
/* @__PURE__ */
|
|
9040
|
+
/* @__PURE__ */ jsx63("span", { className: "stn-alert-card__time", children: row.time })
|
|
8991
9041
|
] }) }) }, row.id ?? row.text)) })
|
|
8992
9042
|
]
|
|
8993
9043
|
}
|
|
8994
9044
|
),
|
|
8995
|
-
/* @__PURE__ */
|
|
9045
|
+
/* @__PURE__ */ jsx63("div", { className: "stn-alert-center__footer", children: /* @__PURE__ */ jsxs51(
|
|
8996
9046
|
"button",
|
|
8997
9047
|
{
|
|
8998
9048
|
type: "button",
|
|
8999
9049
|
className: "stn-alert-center__footer-link",
|
|
9000
9050
|
onClick: onManageSettings,
|
|
9001
9051
|
children: [
|
|
9002
|
-
/* @__PURE__ */
|
|
9003
|
-
/* @__PURE__ */
|
|
9004
|
-
/* @__PURE__ */
|
|
9052
|
+
/* @__PURE__ */ jsx63("span", { children: "\uC54C\uB9BC \uC124\uC815 \uAD00\uB9AC" }),
|
|
9053
|
+
/* @__PURE__ */ jsx63(StnIcon, { name: "line/settings", size: 14 }),
|
|
9054
|
+
/* @__PURE__ */ jsx63(StnIcon, { name: "line/chevron-right", size: 14 })
|
|
9005
9055
|
]
|
|
9006
9056
|
}
|
|
9007
9057
|
) })
|
|
@@ -9011,7 +9061,7 @@ function StnAlertCenterPanel({
|
|
|
9011
9061
|
}
|
|
9012
9062
|
|
|
9013
9063
|
// src/patterns/alertCenter/StnAlertCenterDocPreview.tsx
|
|
9014
|
-
import { jsx as
|
|
9064
|
+
import { jsx as jsx64 } from "react/jsx-runtime";
|
|
9015
9065
|
function StnAlertCenterDocPreview({
|
|
9016
9066
|
mode = "light",
|
|
9017
9067
|
theme,
|
|
@@ -9019,11 +9069,11 @@ function StnAlertCenterDocPreview({
|
|
|
9019
9069
|
children,
|
|
9020
9070
|
...panelProps
|
|
9021
9071
|
}) {
|
|
9022
|
-
const panel = children ?? /* @__PURE__ */
|
|
9072
|
+
const panel = children ?? /* @__PURE__ */ jsx64(StnAlertCenterPanel, { ...panelProps });
|
|
9023
9073
|
if (!withDocChrome) {
|
|
9024
|
-
return /* @__PURE__ */
|
|
9074
|
+
return /* @__PURE__ */ jsx64(StnProvider, { mode, theme, applyModeToDocument: false, children: panel });
|
|
9025
9075
|
}
|
|
9026
|
-
return /* @__PURE__ */
|
|
9076
|
+
return /* @__PURE__ */ jsx64("div", { className: "stn-doc-frame stn-doc-frame--alert-center", "data-mode": mode, "data-theme": theme, children: /* @__PURE__ */ jsx64("div", { className: "stn-alert-center-preview-shell", children: panel }) });
|
|
9027
9077
|
}
|
|
9028
9078
|
|
|
9029
9079
|
// src/index.ts
|
|
@@ -9050,7 +9100,7 @@ var useSideNav = () => useContext5(SideNavContext);
|
|
|
9050
9100
|
// src/components/sideNav/StnSideNavItem.tsx
|
|
9051
9101
|
import { forwardRef as forwardRef33 } from "react";
|
|
9052
9102
|
import { STN_NAV_MENU_SUB_ICON } from "@stn-uiux/pub-ui/data/stnSideNavItem";
|
|
9053
|
-
import { jsx as
|
|
9103
|
+
import { jsx as jsx65, jsxs as jsxs52 } from "react/jsx-runtime";
|
|
9054
9104
|
function maskStyle2(src) {
|
|
9055
9105
|
return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
|
|
9056
9106
|
}
|
|
@@ -9097,13 +9147,13 @@ var StnSideNavItem = forwardRef33(function StnSideNavItem2({
|
|
|
9097
9147
|
sideNav.onSelect(id);
|
|
9098
9148
|
}
|
|
9099
9149
|
};
|
|
9100
|
-
const iconElement = hasIcon && !isSub ? /* @__PURE__ */
|
|
9101
|
-
/* @__PURE__ */
|
|
9102
|
-
showDot ? /* @__PURE__ */
|
|
9150
|
+
const iconElement = hasIcon && !isSub ? /* @__PURE__ */ jsxs52("span", { className: "stn-side-nav-item__icon-wrap", children: [
|
|
9151
|
+
/* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }),
|
|
9152
|
+
showDot ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__dot-wrap", "aria-hidden": "true", children: /* @__PURE__ */ jsx65(StnBadge, { variant: "dot", color: "error" }) }) : null
|
|
9103
9153
|
] }) : null;
|
|
9104
|
-
const subIconElement = hasIcon && isSub ? /* @__PURE__ */
|
|
9154
|
+
const subIconElement = hasIcon && isSub ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__sub-icon", "aria-hidden": "true", children: icon ?? (resolvedIconSrc ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__icon-glyph", style: maskStyle2(resolvedIconSrc) }) : null) }) : null;
|
|
9105
9155
|
const activeIconElement = isSub ? subIconElement : iconElement;
|
|
9106
|
-
return /* @__PURE__ */
|
|
9156
|
+
return /* @__PURE__ */ jsx65(
|
|
9107
9157
|
"button",
|
|
9108
9158
|
{
|
|
9109
9159
|
ref,
|
|
@@ -9122,10 +9172,10 @@ var StnSideNavItem = forwardRef33(function StnSideNavItem2({
|
|
|
9122
9172
|
title: collapsed ? label : void 0,
|
|
9123
9173
|
onClick: handleClick,
|
|
9124
9174
|
...rest,
|
|
9125
|
-
children: /* @__PURE__ */
|
|
9126
|
-
/* @__PURE__ */
|
|
9127
|
-
isSub && showSubIndent ? /* @__PURE__ */
|
|
9128
|
-
shouldShowSubDot ? /* @__PURE__ */
|
|
9175
|
+
children: /* @__PURE__ */ jsxs52("span", { className: cn("stn-side-nav-item__inner", spreadTrail && "spread"), children: [
|
|
9176
|
+
/* @__PURE__ */ jsxs52("span", { className: "stn-side-nav-item__lead", children: [
|
|
9177
|
+
isSub && showSubIndent ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__sub-indent", "aria-hidden": "true" }) : null,
|
|
9178
|
+
shouldShowSubDot ? /* @__PURE__ */ jsx65(
|
|
9129
9179
|
"span",
|
|
9130
9180
|
{
|
|
9131
9181
|
className: cn(
|
|
@@ -9133,14 +9183,14 @@ var StnSideNavItem = forwardRef33(function StnSideNavItem2({
|
|
|
9133
9183
|
hasIcon && iconPosition === "left" && "compact"
|
|
9134
9184
|
),
|
|
9135
9185
|
"aria-hidden": "true",
|
|
9136
|
-
children: /* @__PURE__ */
|
|
9186
|
+
children: /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__sub-dot-glyph", style: maskStyle2(STN_NAV_MENU_SUB_ICON) })
|
|
9137
9187
|
}
|
|
9138
9188
|
) : null,
|
|
9139
9189
|
iconPosition === "left" ? activeIconElement : null,
|
|
9140
|
-
/* @__PURE__ */
|
|
9190
|
+
/* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__label", children: label })
|
|
9141
9191
|
] }),
|
|
9142
9192
|
iconPosition === "right" ? activeIconElement : null,
|
|
9143
|
-
renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */
|
|
9193
|
+
renderBadge ? typeof badge === "string" || typeof badge === "number" ? /* @__PURE__ */ jsx65(
|
|
9144
9194
|
StnBadge,
|
|
9145
9195
|
{
|
|
9146
9196
|
badgeContent: badge,
|
|
@@ -9148,7 +9198,7 @@ var StnSideNavItem = forwardRef33(function StnSideNavItem2({
|
|
|
9148
9198
|
appearance: "subtle",
|
|
9149
9199
|
className: "stn-side-nav-item__badge"
|
|
9150
9200
|
}
|
|
9151
|
-
) : badge ? /* @__PURE__ */
|
|
9201
|
+
) : badge ? /* @__PURE__ */ jsx65("span", { className: "stn-side-nav-item__badge", children: badge }) : showBadgeDot ? /* @__PURE__ */ jsx65(
|
|
9152
9202
|
StnBadge,
|
|
9153
9203
|
{
|
|
9154
9204
|
variant: "dot",
|
|
@@ -9156,7 +9206,7 @@ var StnSideNavItem = forwardRef33(function StnSideNavItem2({
|
|
|
9156
9206
|
className: "stn-side-nav-item__badge"
|
|
9157
9207
|
}
|
|
9158
9208
|
) : null : null,
|
|
9159
|
-
!isSub && showChevron && !collapsed ? /* @__PURE__ */
|
|
9209
|
+
!isSub && showChevron && !collapsed ? /* @__PURE__ */ jsx65(
|
|
9160
9210
|
"span",
|
|
9161
9211
|
{
|
|
9162
9212
|
className: cn(
|
|
@@ -9177,11 +9227,11 @@ import { forwardRef as forwardRef35 } from "react";
|
|
|
9177
9227
|
|
|
9178
9228
|
// src/components/sideNav/StnSideNavLogo.tsx
|
|
9179
9229
|
import { forwardRef as forwardRef34 } from "react";
|
|
9180
|
-
import { jsx as
|
|
9230
|
+
import { jsx as jsx66 } from "react/jsx-runtime";
|
|
9181
9231
|
var StnSideNavLogo = forwardRef34(
|
|
9182
9232
|
function StnSideNavLogo2({ className, logoProps, ...rest }, ref) {
|
|
9183
9233
|
const { collapsed } = useSideNav();
|
|
9184
|
-
return /* @__PURE__ */
|
|
9234
|
+
return /* @__PURE__ */ jsx66(
|
|
9185
9235
|
"div",
|
|
9186
9236
|
{
|
|
9187
9237
|
ref,
|
|
@@ -9192,7 +9242,7 @@ var StnSideNavLogo = forwardRef34(
|
|
|
9192
9242
|
),
|
|
9193
9243
|
title: "InfoMap",
|
|
9194
9244
|
...rest,
|
|
9195
|
-
children: /* @__PURE__ */
|
|
9245
|
+
children: /* @__PURE__ */ jsx66(
|
|
9196
9246
|
StnLogo,
|
|
9197
9247
|
{
|
|
9198
9248
|
variant: collapsed ? "onlyimg" : "horizontal",
|
|
@@ -9206,7 +9256,7 @@ var StnSideNavLogo = forwardRef34(
|
|
|
9206
9256
|
);
|
|
9207
9257
|
|
|
9208
9258
|
// src/components/sideNav/StnSideNavHeader.tsx
|
|
9209
|
-
import { Fragment as Fragment9, jsx as
|
|
9259
|
+
import { Fragment as Fragment9, jsx as jsx67, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
9210
9260
|
var StnSideNavHeader = forwardRef35(function StnSideNavHeader2({
|
|
9211
9261
|
children,
|
|
9212
9262
|
border = false,
|
|
@@ -9219,7 +9269,7 @@ var StnSideNavHeader = forwardRef35(function StnSideNavHeader2({
|
|
|
9219
9269
|
const { collapsed, onToggleCollapse, isDrawer, setMobileOpen } = useSideNav();
|
|
9220
9270
|
const withBorder = Boolean(border || hasBorder);
|
|
9221
9271
|
const shouldShowClose = showClose ?? Boolean(isDrawer);
|
|
9222
|
-
return /* @__PURE__ */
|
|
9272
|
+
return /* @__PURE__ */ jsx67(
|
|
9223
9273
|
"div",
|
|
9224
9274
|
{
|
|
9225
9275
|
ref,
|
|
@@ -9230,9 +9280,9 @@ var StnSideNavHeader = forwardRef35(function StnSideNavHeader2({
|
|
|
9230
9280
|
className
|
|
9231
9281
|
),
|
|
9232
9282
|
...rest,
|
|
9233
|
-
children: children ?? /* @__PURE__ */
|
|
9234
|
-
/* @__PURE__ */
|
|
9235
|
-
shouldShowClose ? /* @__PURE__ */
|
|
9283
|
+
children: children ?? /* @__PURE__ */ jsxs53(Fragment9, { children: [
|
|
9284
|
+
/* @__PURE__ */ jsx67(StnSideNavLogo, {}),
|
|
9285
|
+
shouldShowClose ? /* @__PURE__ */ jsx67(
|
|
9236
9286
|
StnButton,
|
|
9237
9287
|
{
|
|
9238
9288
|
size: "sm",
|
|
@@ -9244,7 +9294,7 @@ var StnSideNavHeader = forwardRef35(function StnSideNavHeader2({
|
|
|
9244
9294
|
className: "stn-side-nav__collapse-btn",
|
|
9245
9295
|
onClick: () => setMobileOpen?.(false)
|
|
9246
9296
|
}
|
|
9247
|
-
) : showToggle ? /* @__PURE__ */
|
|
9297
|
+
) : showToggle ? /* @__PURE__ */ jsx67(
|
|
9248
9298
|
StnButton,
|
|
9249
9299
|
{
|
|
9250
9300
|
size: "sm",
|
|
@@ -9264,7 +9314,7 @@ var StnSideNavHeader = forwardRef35(function StnSideNavHeader2({
|
|
|
9264
9314
|
|
|
9265
9315
|
// src/components/sideNav/StnSideNavMenu.tsx
|
|
9266
9316
|
import { forwardRef as forwardRef36 } from "react";
|
|
9267
|
-
import { jsx as
|
|
9317
|
+
import { jsx as jsx68 } from "react/jsx-runtime";
|
|
9268
9318
|
var StnSideNavMenu = forwardRef36(function StnSideNavMenu2({
|
|
9269
9319
|
children,
|
|
9270
9320
|
className,
|
|
@@ -9272,7 +9322,7 @@ var StnSideNavMenu = forwardRef36(function StnSideNavMenu2({
|
|
|
9272
9322
|
scrollColor = "fade",
|
|
9273
9323
|
...rest
|
|
9274
9324
|
}, ref) {
|
|
9275
|
-
return /* @__PURE__ */
|
|
9325
|
+
return /* @__PURE__ */ jsx68(
|
|
9276
9326
|
"nav",
|
|
9277
9327
|
{
|
|
9278
9328
|
ref,
|
|
@@ -9298,7 +9348,7 @@ import {
|
|
|
9298
9348
|
useRef as useRef9,
|
|
9299
9349
|
useState as useState17
|
|
9300
9350
|
} from "react";
|
|
9301
|
-
import { jsx as
|
|
9351
|
+
import { jsx as jsx69, jsxs as jsxs54 } from "react/jsx-runtime";
|
|
9302
9352
|
var StnSideNavGroup = forwardRef37(function StnSideNavGroup2({
|
|
9303
9353
|
label,
|
|
9304
9354
|
parent,
|
|
@@ -9343,7 +9393,7 @@ var StnSideNavGroup = forwardRef37(function StnSideNavGroup2({
|
|
|
9343
9393
|
}
|
|
9344
9394
|
onOpenChange?.(next);
|
|
9345
9395
|
};
|
|
9346
|
-
const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */
|
|
9396
|
+
const subnavNode = children && (!collapsed && isOpen) ? /* @__PURE__ */ jsx69(
|
|
9347
9397
|
"div",
|
|
9348
9398
|
{
|
|
9349
9399
|
className: cn(
|
|
@@ -9358,7 +9408,7 @@ var StnSideNavGroup = forwardRef37(function StnSideNavGroup2({
|
|
|
9358
9408
|
children
|
|
9359
9409
|
}
|
|
9360
9410
|
) : null;
|
|
9361
|
-
return /* @__PURE__ */
|
|
9411
|
+
return /* @__PURE__ */ jsxs54(
|
|
9362
9412
|
"div",
|
|
9363
9413
|
{
|
|
9364
9414
|
ref: (node) => {
|
|
@@ -9379,7 +9429,7 @@ var StnSideNavGroup = forwardRef37(function StnSideNavGroup2({
|
|
|
9379
9429
|
"aria-label": typeof label === "string" ? label : void 0,
|
|
9380
9430
|
...rest,
|
|
9381
9431
|
children: [
|
|
9382
|
-
label && !collapsed ? /* @__PURE__ */
|
|
9432
|
+
label && !collapsed ? /* @__PURE__ */ jsx69("span", { className: "stn-side-nav__group-label", onClick: handleToggle, children: label }) : null,
|
|
9383
9433
|
isUp ? subnavNode : null,
|
|
9384
9434
|
parent,
|
|
9385
9435
|
!isUp ? subnavNode : null
|
|
@@ -9390,9 +9440,9 @@ var StnSideNavGroup = forwardRef37(function StnSideNavGroup2({
|
|
|
9390
9440
|
|
|
9391
9441
|
// src/components/sideNav/StnSideNavSpacer.tsx
|
|
9392
9442
|
import { forwardRef as forwardRef38 } from "react";
|
|
9393
|
-
import { jsx as
|
|
9443
|
+
import { jsx as jsx70 } from "react/jsx-runtime";
|
|
9394
9444
|
var StnSideNavSpacer = forwardRef38(function StnSideNavSpacer2({ className, style, ...rest }, ref) {
|
|
9395
|
-
return /* @__PURE__ */
|
|
9445
|
+
return /* @__PURE__ */ jsx70(
|
|
9396
9446
|
"div",
|
|
9397
9447
|
{
|
|
9398
9448
|
ref,
|
|
@@ -9406,9 +9456,9 @@ var StnSideNavSpacer = forwardRef38(function StnSideNavSpacer2({ className, styl
|
|
|
9406
9456
|
|
|
9407
9457
|
// src/components/sideNav/StnSideNavFooter.tsx
|
|
9408
9458
|
import { forwardRef as forwardRef39 } from "react";
|
|
9409
|
-
import { jsx as
|
|
9459
|
+
import { jsx as jsx71 } from "react/jsx-runtime";
|
|
9410
9460
|
var StnSideNavFooter = forwardRef39(function StnSideNavFooter2({ curved = false, children, className, ...rest }, ref) {
|
|
9411
|
-
return /* @__PURE__ */
|
|
9461
|
+
return /* @__PURE__ */ jsx71(
|
|
9412
9462
|
"nav",
|
|
9413
9463
|
{
|
|
9414
9464
|
ref,
|
|
@@ -9422,11 +9472,11 @@ var StnSideNavFooter = forwardRef39(function StnSideNavFooter2({ curved = false,
|
|
|
9422
9472
|
|
|
9423
9473
|
// src/components/sideNav/StnSideNavToggle.tsx
|
|
9424
9474
|
import { forwardRef as forwardRef40 } from "react";
|
|
9425
|
-
import { jsx as
|
|
9475
|
+
import { jsx as jsx72 } from "react/jsx-runtime";
|
|
9426
9476
|
var StnSideNavToggle = forwardRef40(
|
|
9427
9477
|
function StnSideNavToggle2({ className, onClick, ...rest }, ref) {
|
|
9428
9478
|
const { collapsed, onToggleCollapse } = useSideNav();
|
|
9429
|
-
return /* @__PURE__ */
|
|
9479
|
+
return /* @__PURE__ */ jsx72(
|
|
9430
9480
|
"button",
|
|
9431
9481
|
{
|
|
9432
9482
|
ref,
|
|
@@ -9439,7 +9489,7 @@ var StnSideNavToggle = forwardRef40(
|
|
|
9439
9489
|
"aria-label": collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
|
|
9440
9490
|
title: collapsed ? "\uC0AC\uC774\uB4DC\uBC14 \uD3BC\uCE58\uAE30" : "\uC0AC\uC774\uB4DC\uBC14 \uC811\uAE30",
|
|
9441
9491
|
...rest,
|
|
9442
|
-
children: /* @__PURE__ */
|
|
9492
|
+
children: /* @__PURE__ */ jsx72(
|
|
9443
9493
|
"svg",
|
|
9444
9494
|
{
|
|
9445
9495
|
width: "12",
|
|
@@ -9450,7 +9500,7 @@ var StnSideNavToggle = forwardRef40(
|
|
|
9450
9500
|
strokeWidth: "2.5",
|
|
9451
9501
|
strokeLinecap: "round",
|
|
9452
9502
|
strokeLinejoin: "round",
|
|
9453
|
-
children: /* @__PURE__ */
|
|
9503
|
+
children: /* @__PURE__ */ jsx72("path", { d: "M9 18l6-6-6-6" })
|
|
9454
9504
|
}
|
|
9455
9505
|
)
|
|
9456
9506
|
}
|
|
@@ -9460,17 +9510,17 @@ var StnSideNavToggle = forwardRef40(
|
|
|
9460
9510
|
|
|
9461
9511
|
// src/components/sideNav/StnSideNavWatermark.tsx
|
|
9462
9512
|
import { forwardRef as forwardRef41 } from "react";
|
|
9463
|
-
import { jsx as
|
|
9513
|
+
import { jsx as jsx73 } from "react/jsx-runtime";
|
|
9464
9514
|
var StnSideNavWatermark = forwardRef41(
|
|
9465
9515
|
function StnSideNavWatermark2({ size = "xl", mode, theme, className, ...rest }, ref) {
|
|
9466
|
-
return /* @__PURE__ */
|
|
9516
|
+
return /* @__PURE__ */ jsx73(
|
|
9467
9517
|
"div",
|
|
9468
9518
|
{
|
|
9469
9519
|
ref,
|
|
9470
9520
|
className: cn("stn-side-nav__watermark", className),
|
|
9471
9521
|
"aria-hidden": "true",
|
|
9472
9522
|
...rest,
|
|
9473
|
-
children: /* @__PURE__ */
|
|
9523
|
+
children: /* @__PURE__ */ jsx73(StnLogo, { variant: "watermark", size, mode: mode ?? theme })
|
|
9474
9524
|
}
|
|
9475
9525
|
);
|
|
9476
9526
|
}
|
|
@@ -9478,7 +9528,7 @@ var StnSideNavWatermark = forwardRef41(
|
|
|
9478
9528
|
|
|
9479
9529
|
// src/components/sideNav/StnSideNavMobileTrigger.tsx
|
|
9480
9530
|
import { forwardRef as forwardRef42, useEffect as useEffect14, useState as useState18 } from "react";
|
|
9481
|
-
import { jsx as
|
|
9531
|
+
import { jsx as jsx74, jsxs as jsxs55 } from "react/jsx-runtime";
|
|
9482
9532
|
var StnSideNavMobileTrigger = forwardRef42(
|
|
9483
9533
|
function StnSideNavMobileTrigger2({ floating = false, className, children, onClick, ...rest }, ref) {
|
|
9484
9534
|
const { onToggleMobileOpen, mobileOpen: contextMobileOpen } = useSideNav();
|
|
@@ -9497,7 +9547,7 @@ var StnSideNavMobileTrigger = forwardRef42(
|
|
|
9497
9547
|
};
|
|
9498
9548
|
}, [onToggleMobileOpen]);
|
|
9499
9549
|
const isMobileOpen = onToggleMobileOpen ? contextMobileOpen : fallbackMobileOpen;
|
|
9500
|
-
return /* @__PURE__ */
|
|
9550
|
+
return /* @__PURE__ */ jsx74(
|
|
9501
9551
|
"button",
|
|
9502
9552
|
{
|
|
9503
9553
|
ref,
|
|
@@ -9519,10 +9569,10 @@ var StnSideNavMobileTrigger = forwardRef42(
|
|
|
9519
9569
|
}
|
|
9520
9570
|
},
|
|
9521
9571
|
...rest,
|
|
9522
|
-
children: children ?? /* @__PURE__ */
|
|
9523
|
-
/* @__PURE__ */
|
|
9524
|
-
/* @__PURE__ */
|
|
9525
|
-
/* @__PURE__ */
|
|
9572
|
+
children: children ?? /* @__PURE__ */ jsxs55("span", { className: "stn-side-nav__hamburger-bars", "aria-hidden": "true", children: [
|
|
9573
|
+
/* @__PURE__ */ jsx74("span", {}),
|
|
9574
|
+
/* @__PURE__ */ jsx74("span", {}),
|
|
9575
|
+
/* @__PURE__ */ jsx74("span", {})
|
|
9526
9576
|
] })
|
|
9527
9577
|
}
|
|
9528
9578
|
);
|
|
@@ -9533,10 +9583,10 @@ var StnSideNavMobileTrigger = forwardRef42(
|
|
|
9533
9583
|
import {
|
|
9534
9584
|
forwardRef as forwardRef43
|
|
9535
9585
|
} from "react";
|
|
9536
|
-
import { jsx as
|
|
9586
|
+
import { jsx as jsx75 } from "react/jsx-runtime";
|
|
9537
9587
|
var StnSideNavSub = forwardRef43(
|
|
9538
9588
|
function StnSideNavSub2({ children, className, ...rest }, ref) {
|
|
9539
|
-
return /* @__PURE__ */
|
|
9589
|
+
return /* @__PURE__ */ jsx75(
|
|
9540
9590
|
"div",
|
|
9541
9591
|
{
|
|
9542
9592
|
ref,
|
|
@@ -9565,14 +9615,14 @@ var StnSideNavSubItem = forwardRef43(
|
|
|
9565
9615
|
const { collapsed } = useSideNav();
|
|
9566
9616
|
const content = children ?? label;
|
|
9567
9617
|
const computedTitle = title ?? (typeof content === "string" ? content : void 0);
|
|
9568
|
-
const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */
|
|
9618
|
+
const resolvedIcon = icon ?? (iconSrc ? /* @__PURE__ */ jsx75("span", { className: "stn-side-nav__sub-icon", children: /* @__PURE__ */ jsx75(
|
|
9569
9619
|
"span",
|
|
9570
9620
|
{
|
|
9571
9621
|
className: "stn-side-nav__sub-glyph",
|
|
9572
9622
|
style: { maskImage: `url('${iconSrc}')`, WebkitMaskImage: `url('${iconSrc}')` }
|
|
9573
9623
|
}
|
|
9574
9624
|
) }) : null);
|
|
9575
|
-
return /* @__PURE__ */
|
|
9625
|
+
return /* @__PURE__ */ jsx75(
|
|
9576
9626
|
StnButton,
|
|
9577
9627
|
{
|
|
9578
9628
|
ref,
|
|
@@ -9592,7 +9642,7 @@ var StnSideNavSubItem = forwardRef43(
|
|
|
9592
9642
|
|
|
9593
9643
|
// src/components/sideNav/StnSideNavSubNav.tsx
|
|
9594
9644
|
import { forwardRef as forwardRef44 } from "react";
|
|
9595
|
-
import { jsx as
|
|
9645
|
+
import { jsx as jsx76 } from "react/jsx-runtime";
|
|
9596
9646
|
var StnSideNavSubNav = forwardRef44(
|
|
9597
9647
|
function StnSideNavSubNav2({
|
|
9598
9648
|
dropdown = false,
|
|
@@ -9605,7 +9655,7 @@ var StnSideNavSubNav = forwardRef44(
|
|
|
9605
9655
|
}, ref) {
|
|
9606
9656
|
const isUp = direction === "up";
|
|
9607
9657
|
const isTransparent = variant === "transparent" || background === false;
|
|
9608
|
-
return /* @__PURE__ */
|
|
9658
|
+
return /* @__PURE__ */ jsx76(
|
|
9609
9659
|
"div",
|
|
9610
9660
|
{
|
|
9611
9661
|
ref,
|
|
@@ -9634,7 +9684,7 @@ import {
|
|
|
9634
9684
|
useMemo as useMemo5,
|
|
9635
9685
|
useState as useState19
|
|
9636
9686
|
} from "react";
|
|
9637
|
-
import { jsx as
|
|
9687
|
+
import { jsx as jsx77, jsxs as jsxs56 } from "react/jsx-runtime";
|
|
9638
9688
|
function useControllableState(controlledValue, defaultValue, onChange) {
|
|
9639
9689
|
const [internalState, setInternalState] = useState19(defaultValue);
|
|
9640
9690
|
const isControlled = controlledValue !== void 0;
|
|
@@ -9727,9 +9777,9 @@ var StnSideNavigationRoot = forwardRef45(function StnSideNavigationRoot2({
|
|
|
9727
9777
|
}),
|
|
9728
9778
|
[isEffectiveCollapsed, activeId, setActiveId, handleToggleCollapse, mobileOpen, handleToggleMobileOpen, setMobileOpen, isDrawerMode]
|
|
9729
9779
|
);
|
|
9730
|
-
return /* @__PURE__ */
|
|
9731
|
-
showMobileTrigger && /* @__PURE__ */
|
|
9732
|
-
(drawer || responsiveDrawer) && /* @__PURE__ */
|
|
9780
|
+
return /* @__PURE__ */ jsxs56(SideNavContext.Provider, { value: contextValue, children: [
|
|
9781
|
+
showMobileTrigger && /* @__PURE__ */ jsx77(StnSideNavMobileTrigger, { floating: true }),
|
|
9782
|
+
(drawer || responsiveDrawer) && /* @__PURE__ */ jsx77(
|
|
9733
9783
|
"div",
|
|
9734
9784
|
{
|
|
9735
9785
|
className: cn("stn-side-nav__backdrop", mobileOpen && "is-open"),
|
|
@@ -9737,7 +9787,7 @@ var StnSideNavigationRoot = forwardRef45(function StnSideNavigationRoot2({
|
|
|
9737
9787
|
"aria-hidden": !mobileOpen
|
|
9738
9788
|
}
|
|
9739
9789
|
),
|
|
9740
|
-
/* @__PURE__ */
|
|
9790
|
+
/* @__PURE__ */ jsx77(
|
|
9741
9791
|
"aside",
|
|
9742
9792
|
{
|
|
9743
9793
|
ref,
|
|
@@ -9786,7 +9836,7 @@ import {
|
|
|
9786
9836
|
import {
|
|
9787
9837
|
STN_BREADCRUMB_ICON_SRC
|
|
9788
9838
|
} from "@stn-uiux/pub-ui/data/stnBreadcrumb";
|
|
9789
|
-
import { Fragment as Fragment11, jsx as
|
|
9839
|
+
import { Fragment as Fragment11, jsx as jsx78, jsxs as jsxs57 } from "react/jsx-runtime";
|
|
9790
9840
|
function maskStyle3(src) {
|
|
9791
9841
|
return { maskImage: `url('${src}')`, WebkitMaskImage: `url('${src}')` };
|
|
9792
9842
|
}
|
|
@@ -9799,13 +9849,13 @@ function hasSegmentMenu(item) {
|
|
|
9799
9849
|
return Boolean(item.menu || item.menuItems && item.menuItems.length > 0);
|
|
9800
9850
|
}
|
|
9801
9851
|
function BreadcrumbSeparator() {
|
|
9802
|
-
return /* @__PURE__ */
|
|
9852
|
+
return /* @__PURE__ */ jsx78("li", { className: "separator", "aria-hidden": "true", children: /* @__PURE__ */ jsx78("span", { style: maskStyle3(STN_BREADCRUMB_ICON_SRC.separator) }) });
|
|
9803
9853
|
}
|
|
9804
9854
|
function BreadcrumbIcon({ src }) {
|
|
9805
|
-
return /* @__PURE__ */
|
|
9855
|
+
return /* @__PURE__ */ jsx78("span", { className: "stn-breadcrumb__icon-glyph", style: maskStyle3(src), "aria-hidden": "true" });
|
|
9806
9856
|
}
|
|
9807
9857
|
function BreadcrumbCaret() {
|
|
9808
|
-
return /* @__PURE__ */
|
|
9858
|
+
return /* @__PURE__ */ jsx78(
|
|
9809
9859
|
"span",
|
|
9810
9860
|
{
|
|
9811
9861
|
className: "stn-breadcrumb__caret",
|
|
@@ -9819,10 +9869,10 @@ function SegmentContent({
|
|
|
9819
9869
|
label,
|
|
9820
9870
|
menu
|
|
9821
9871
|
}) {
|
|
9822
|
-
return /* @__PURE__ */
|
|
9823
|
-
iconSrc ? /* @__PURE__ */
|
|
9824
|
-
/* @__PURE__ */
|
|
9825
|
-
menu ? /* @__PURE__ */
|
|
9872
|
+
return /* @__PURE__ */ jsxs57(Fragment11, { children: [
|
|
9873
|
+
iconSrc ? /* @__PURE__ */ jsx78(BreadcrumbIcon, { src: iconSrc }) : null,
|
|
9874
|
+
/* @__PURE__ */ jsx78("span", { className: "stn-breadcrumb__label", children: label }),
|
|
9875
|
+
menu ? /* @__PURE__ */ jsx78(BreadcrumbCaret, {}) : null
|
|
9826
9876
|
] });
|
|
9827
9877
|
}
|
|
9828
9878
|
function BreadcrumbMenuList({
|
|
@@ -9830,7 +9880,7 @@ function BreadcrumbMenuList({
|
|
|
9830
9880
|
items,
|
|
9831
9881
|
onPick
|
|
9832
9882
|
}) {
|
|
9833
|
-
return /* @__PURE__ */
|
|
9883
|
+
return /* @__PURE__ */ jsx78("ul", { id, className: "stn-breadcrumb__menu", role: "menu", children: items.map((option) => /* @__PURE__ */ jsx78("li", { role: "none", children: option.href ? /* @__PURE__ */ jsx78(
|
|
9834
9884
|
"a",
|
|
9835
9885
|
{
|
|
9836
9886
|
role: "menuitem",
|
|
@@ -9842,7 +9892,7 @@ function BreadcrumbMenuList({
|
|
|
9842
9892
|
},
|
|
9843
9893
|
children: option.label
|
|
9844
9894
|
}
|
|
9845
|
-
) : /* @__PURE__ */
|
|
9895
|
+
) : /* @__PURE__ */ jsx78(
|
|
9846
9896
|
"button",
|
|
9847
9897
|
{
|
|
9848
9898
|
type: "button",
|
|
@@ -9886,13 +9936,13 @@ function BreadcrumbSegment({
|
|
|
9886
9936
|
const canOpenMenu = showMenu && menuItems.length > 0;
|
|
9887
9937
|
const rootRef = useDismissibleMenu(open, () => setOpen(false));
|
|
9888
9938
|
const iconSrc = resolveIconSrc(item);
|
|
9889
|
-
const content = /* @__PURE__ */
|
|
9939
|
+
const content = /* @__PURE__ */ jsx78(SegmentContent, { iconSrc, label: item.label, menu: showMenu });
|
|
9890
9940
|
if (isCurrent) {
|
|
9891
|
-
return /* @__PURE__ */
|
|
9941
|
+
return /* @__PURE__ */ jsx78("span", { className: "stn-breadcrumb__segment", "aria-current": "page", "aria-label": item.label, children: content });
|
|
9892
9942
|
}
|
|
9893
9943
|
if (canOpenMenu) {
|
|
9894
|
-
return /* @__PURE__ */
|
|
9895
|
-
/* @__PURE__ */
|
|
9944
|
+
return /* @__PURE__ */ jsxs57("span", { ref: rootRef, className: "stn-breadcrumb__segment-wrap", children: [
|
|
9945
|
+
/* @__PURE__ */ jsx78(
|
|
9896
9946
|
"button",
|
|
9897
9947
|
{
|
|
9898
9948
|
type: "button",
|
|
@@ -9908,7 +9958,7 @@ function BreadcrumbSegment({
|
|
|
9908
9958
|
children: content
|
|
9909
9959
|
}
|
|
9910
9960
|
),
|
|
9911
|
-
open ? /* @__PURE__ */
|
|
9961
|
+
open ? /* @__PURE__ */ jsx78(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
|
|
9912
9962
|
] });
|
|
9913
9963
|
}
|
|
9914
9964
|
if (item.menu || item.onClick) {
|
|
@@ -9920,7 +9970,7 @@ function BreadcrumbSegment({
|
|
|
9920
9970
|
"aria-haspopup": item.menu ? "menu" : void 0,
|
|
9921
9971
|
"aria-expanded": item.menu ? false : void 0
|
|
9922
9972
|
};
|
|
9923
|
-
return /* @__PURE__ */
|
|
9973
|
+
return /* @__PURE__ */ jsx78("button", { ...buttonProps, children: content });
|
|
9924
9974
|
}
|
|
9925
9975
|
if (item.href) {
|
|
9926
9976
|
const linkProps = {
|
|
@@ -9929,17 +9979,17 @@ function BreadcrumbSegment({
|
|
|
9929
9979
|
onClick: item.onClick,
|
|
9930
9980
|
"aria-label": item.label
|
|
9931
9981
|
};
|
|
9932
|
-
return /* @__PURE__ */
|
|
9982
|
+
return /* @__PURE__ */ jsx78("a", { ...linkProps, children: content });
|
|
9933
9983
|
}
|
|
9934
|
-
return /* @__PURE__ */
|
|
9984
|
+
return /* @__PURE__ */ jsx78("span", { className: "stn-breadcrumb__segment", "aria-label": item.label, children: content });
|
|
9935
9985
|
}
|
|
9936
9986
|
function BreadcrumbBack({
|
|
9937
9987
|
label,
|
|
9938
9988
|
href,
|
|
9939
9989
|
onClick
|
|
9940
9990
|
}) {
|
|
9941
|
-
const content = /* @__PURE__ */
|
|
9942
|
-
/* @__PURE__ */
|
|
9991
|
+
const content = /* @__PURE__ */ jsxs57(Fragment11, { children: [
|
|
9992
|
+
/* @__PURE__ */ jsx78(
|
|
9943
9993
|
"span",
|
|
9944
9994
|
{
|
|
9945
9995
|
className: "stn-breadcrumb__back-glyph",
|
|
@@ -9947,12 +9997,12 @@ function BreadcrumbBack({
|
|
|
9947
9997
|
"aria-hidden": "true"
|
|
9948
9998
|
}
|
|
9949
9999
|
),
|
|
9950
|
-
/* @__PURE__ */
|
|
10000
|
+
/* @__PURE__ */ jsx78("span", { className: "stn-breadcrumb__label", children: label })
|
|
9951
10001
|
] });
|
|
9952
10002
|
if (href) {
|
|
9953
|
-
return /* @__PURE__ */
|
|
10003
|
+
return /* @__PURE__ */ jsx78("a", { className: "stn-breadcrumb__back", href, onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
|
|
9954
10004
|
}
|
|
9955
|
-
return /* @__PURE__ */
|
|
10005
|
+
return /* @__PURE__ */ jsx78("button", { type: "button", className: "stn-breadcrumb__back", onClick, "aria-label": `\uB4A4\uB85C: ${label}`, children: content });
|
|
9956
10006
|
}
|
|
9957
10007
|
function splitCollapsedItems(items, maxItems, itemsBeforeCollapse, itemsAfterCollapse) {
|
|
9958
10008
|
if (!maxItems || items.length <= maxItems) {
|
|
@@ -9983,8 +10033,8 @@ function BreadcrumbCollapsed({
|
|
|
9983
10033
|
onClick: item.onClick,
|
|
9984
10034
|
current: item.current
|
|
9985
10035
|
}));
|
|
9986
|
-
return /* @__PURE__ */
|
|
9987
|
-
/* @__PURE__ */
|
|
10036
|
+
return /* @__PURE__ */ jsxs57("li", { className: "stn-breadcrumb__item", ref: rootRef, children: [
|
|
10037
|
+
/* @__PURE__ */ jsx78(
|
|
9988
10038
|
"button",
|
|
9989
10039
|
{
|
|
9990
10040
|
type: "button",
|
|
@@ -9997,7 +10047,7 @@ function BreadcrumbCollapsed({
|
|
|
9997
10047
|
children: "\u22EF"
|
|
9998
10048
|
}
|
|
9999
10049
|
),
|
|
10000
|
-
open ? /* @__PURE__ */
|
|
10050
|
+
open ? /* @__PURE__ */ jsx78(BreadcrumbMenuList, { id: menuId, items: menuItems, onPick: () => setOpen(false) }) : null
|
|
10001
10051
|
] });
|
|
10002
10052
|
}
|
|
10003
10053
|
function StnBreadcrumb({
|
|
@@ -10029,8 +10079,8 @@ function StnBreadcrumb({
|
|
|
10029
10079
|
const lastId = items[items.length - 1]?.id;
|
|
10030
10080
|
const renderTrailItem = (item) => {
|
|
10031
10081
|
const isCurrent = Boolean(item.current) || item.id === lastId;
|
|
10032
|
-
const segment = /* @__PURE__ */
|
|
10033
|
-
return /* @__PURE__ */
|
|
10082
|
+
const segment = /* @__PURE__ */ jsx78(BreadcrumbSegment, { item, isCurrent });
|
|
10083
|
+
return /* @__PURE__ */ jsx78(
|
|
10034
10084
|
"li",
|
|
10035
10085
|
{
|
|
10036
10086
|
className: cn(
|
|
@@ -10041,27 +10091,27 @@ function StnBreadcrumb({
|
|
|
10041
10091
|
}
|
|
10042
10092
|
);
|
|
10043
10093
|
};
|
|
10044
|
-
return /* @__PURE__ */
|
|
10094
|
+
return /* @__PURE__ */ jsx78(
|
|
10045
10095
|
"nav",
|
|
10046
10096
|
{
|
|
10047
10097
|
className: cn("stn-breadcrumb", size, variant === "chip" && "chip", className),
|
|
10048
10098
|
"aria-label": "Breadcrumb",
|
|
10049
|
-
children: /* @__PURE__ */
|
|
10050
|
-
currentItem ? /* @__PURE__ */
|
|
10051
|
-
showHome ? /* @__PURE__ */
|
|
10052
|
-
/* @__PURE__ */
|
|
10053
|
-
/* @__PURE__ */
|
|
10099
|
+
children: /* @__PURE__ */ jsxs57("ol", { className: "stn-breadcrumb__list", children: [
|
|
10100
|
+
currentItem ? /* @__PURE__ */ jsx78("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--back", children: /* @__PURE__ */ jsx78(BreadcrumbBack, { label: currentItem.label, href: backHref, onClick: backOnClick }) }) : null,
|
|
10101
|
+
showHome ? /* @__PURE__ */ jsx78("li", { className: "stn-breadcrumb__item stn-breadcrumb__item--home", children: /* @__PURE__ */ jsxs57("a", { className: "stn-breadcrumb__home", href: homeHref, onClick: onHomeClick, children: [
|
|
10102
|
+
/* @__PURE__ */ jsx78(BreadcrumbIcon, { src: STN_BREADCRUMB_ICON_SRC.home }),
|
|
10103
|
+
/* @__PURE__ */ jsx78("span", { className: "blind", children: homeLabel })
|
|
10054
10104
|
] }) }) : null,
|
|
10055
|
-
head.map((item, index) => /* @__PURE__ */
|
|
10056
|
-
showHome || index > 0 ? /* @__PURE__ */
|
|
10105
|
+
head.map((item, index) => /* @__PURE__ */ jsxs57(Fragment10, { children: [
|
|
10106
|
+
showHome || index > 0 ? /* @__PURE__ */ jsx78(BreadcrumbSeparator, {}) : null,
|
|
10057
10107
|
renderTrailItem(item)
|
|
10058
10108
|
] }, item.id)),
|
|
10059
|
-
hidden.length > 0 ? /* @__PURE__ */
|
|
10060
|
-
/* @__PURE__ */
|
|
10061
|
-
/* @__PURE__ */
|
|
10109
|
+
hidden.length > 0 ? /* @__PURE__ */ jsxs57(Fragment11, { children: [
|
|
10110
|
+
/* @__PURE__ */ jsx78(BreadcrumbSeparator, {}),
|
|
10111
|
+
/* @__PURE__ */ jsx78(BreadcrumbCollapsed, { items: hidden, menuId })
|
|
10062
10112
|
] }) : null,
|
|
10063
|
-
tail.map((item) => /* @__PURE__ */
|
|
10064
|
-
/* @__PURE__ */
|
|
10113
|
+
tail.map((item) => /* @__PURE__ */ jsxs57(Fragment10, { children: [
|
|
10114
|
+
/* @__PURE__ */ jsx78(BreadcrumbSeparator, {}),
|
|
10065
10115
|
renderTrailItem(item)
|
|
10066
10116
|
] }, item.id))
|
|
10067
10117
|
] })
|
|
@@ -10072,7 +10122,7 @@ function StnBreadcrumb({
|
|
|
10072
10122
|
// src/components/StnHeaderTitle.tsx
|
|
10073
10123
|
import { useEffect as useEffect17, useState as useState21 } from "react";
|
|
10074
10124
|
import { STN_HEADER_TITLE_FRAME } from "@stn-uiux/pub-ui/data/stnHeaderTitle";
|
|
10075
|
-
import { jsx as
|
|
10125
|
+
import { jsx as jsx79, jsxs as jsxs58 } from "react/jsx-runtime";
|
|
10076
10126
|
var KO_WEEKDAY_SHORT = ["\uC77C", "\uC6D4", "\uD654", "\uC218", "\uBAA9", "\uAE08", "\uD1A0"];
|
|
10077
10127
|
var KO_WEEKDAY_LONG = [
|
|
10078
10128
|
"\uC77C\uC694\uC77C",
|
|
@@ -10111,8 +10161,8 @@ function formatStnHeaderTitleTime(date, options) {
|
|
|
10111
10161
|
}
|
|
10112
10162
|
function HeaderTitleFrame({ preview = false }) {
|
|
10113
10163
|
const frameClass = preview ? "stn-header-title__frame-preview" : "stn-header-title__frame";
|
|
10114
|
-
return /* @__PURE__ */
|
|
10115
|
-
/* @__PURE__ */
|
|
10164
|
+
return /* @__PURE__ */ jsxs58("div", { className: frameClass, "aria-hidden": "true", children: [
|
|
10165
|
+
/* @__PURE__ */ jsx79("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--outer", children: /* @__PURE__ */ jsx79(
|
|
10116
10166
|
"img",
|
|
10117
10167
|
{
|
|
10118
10168
|
className: "stn-header-title__frame-img",
|
|
@@ -10121,8 +10171,8 @@ function HeaderTitleFrame({ preview = false }) {
|
|
|
10121
10171
|
draggable: false
|
|
10122
10172
|
}
|
|
10123
10173
|
) }),
|
|
10124
|
-
/* @__PURE__ */
|
|
10125
|
-
/* @__PURE__ */
|
|
10174
|
+
/* @__PURE__ */ jsxs58("div", { className: "stn-header-title__frame-bleed stn-header-title__frame-bleed--inner", children: [
|
|
10175
|
+
/* @__PURE__ */ jsx79(
|
|
10126
10176
|
"img",
|
|
10127
10177
|
{
|
|
10128
10178
|
className: "stn-header-title__frame-img stn-header-title__frame-img--dark",
|
|
@@ -10131,7 +10181,7 @@ function HeaderTitleFrame({ preview = false }) {
|
|
|
10131
10181
|
draggable: false
|
|
10132
10182
|
}
|
|
10133
10183
|
),
|
|
10134
|
-
/* @__PURE__ */
|
|
10184
|
+
/* @__PURE__ */ jsx79(
|
|
10135
10185
|
"img",
|
|
10136
10186
|
{
|
|
10137
10187
|
className: "stn-header-title__frame-img stn-header-title__frame-img--light",
|
|
@@ -10144,7 +10194,7 @@ function HeaderTitleFrame({ preview = false }) {
|
|
|
10144
10194
|
] });
|
|
10145
10195
|
}
|
|
10146
10196
|
function StnHeaderTitleFramePreview({ className }) {
|
|
10147
|
-
return /* @__PURE__ */
|
|
10197
|
+
return /* @__PURE__ */ jsx79("div", { className: cn("stn-header-title__frame-only", className), children: /* @__PURE__ */ jsx79(HeaderTitleFrame, { preview: true }) });
|
|
10148
10198
|
}
|
|
10149
10199
|
function useLiveClock(enabled) {
|
|
10150
10200
|
const [now, setNow] = useState21(() => /* @__PURE__ */ new Date());
|
|
@@ -10160,35 +10210,35 @@ function StnHeaderTitleMainText({
|
|
|
10160
10210
|
children,
|
|
10161
10211
|
...rest
|
|
10162
10212
|
}) {
|
|
10163
|
-
return /* @__PURE__ */
|
|
10213
|
+
return /* @__PURE__ */ jsx79("h1", { className: cn("stn-header-title__text", className), ...rest, children });
|
|
10164
10214
|
}
|
|
10165
10215
|
function StnHeaderTitleSubText({
|
|
10166
10216
|
className,
|
|
10167
10217
|
children,
|
|
10168
10218
|
...rest
|
|
10169
10219
|
}) {
|
|
10170
|
-
return /* @__PURE__ */
|
|
10220
|
+
return /* @__PURE__ */ jsx79("span", { className: cn("stn-header-title__sub-text", className), ...rest, children });
|
|
10171
10221
|
}
|
|
10172
10222
|
function StnHeaderTitleDate({
|
|
10173
10223
|
className,
|
|
10174
10224
|
children,
|
|
10175
10225
|
...rest
|
|
10176
10226
|
}) {
|
|
10177
|
-
return /* @__PURE__ */
|
|
10227
|
+
return /* @__PURE__ */ jsx79("time", { className: cn("stn-header-title__date", className), ...rest, children });
|
|
10178
10228
|
}
|
|
10179
10229
|
function StnHeaderTitleWeekday({
|
|
10180
10230
|
className,
|
|
10181
10231
|
children,
|
|
10182
10232
|
...rest
|
|
10183
10233
|
}) {
|
|
10184
|
-
return /* @__PURE__ */
|
|
10234
|
+
return /* @__PURE__ */ jsx79("span", { className: cn("stn-header-title__weekday", className), ...rest, children });
|
|
10185
10235
|
}
|
|
10186
10236
|
function StnHeaderTitleTime({
|
|
10187
10237
|
className,
|
|
10188
10238
|
children,
|
|
10189
10239
|
...rest
|
|
10190
10240
|
}) {
|
|
10191
|
-
return /* @__PURE__ */
|
|
10241
|
+
return /* @__PURE__ */ jsx79("span", { className: cn("stn-header-title__time", className), "aria-label": "\uD604\uC7AC \uC2DC\uAC01", ...rest, children });
|
|
10192
10242
|
}
|
|
10193
10243
|
function StnHeaderTitleClock({
|
|
10194
10244
|
className,
|
|
@@ -10211,7 +10261,7 @@ function StnHeaderTitleClock({
|
|
|
10211
10261
|
}) {
|
|
10212
10262
|
const now = useLiveClock(live);
|
|
10213
10263
|
if (children != null) {
|
|
10214
|
-
return /* @__PURE__ */
|
|
10264
|
+
return /* @__PURE__ */ jsxs58(
|
|
10215
10265
|
"header",
|
|
10216
10266
|
{
|
|
10217
10267
|
className: cn(
|
|
@@ -10223,8 +10273,8 @@ function StnHeaderTitleClock({
|
|
|
10223
10273
|
),
|
|
10224
10274
|
...rest,
|
|
10225
10275
|
children: [
|
|
10226
|
-
framed ? /* @__PURE__ */
|
|
10227
|
-
/* @__PURE__ */
|
|
10276
|
+
framed ? /* @__PURE__ */ jsx79(HeaderTitleFrame, {}) : null,
|
|
10277
|
+
/* @__PURE__ */ jsx79("div", { className: "stn-header-title__content", children })
|
|
10228
10278
|
]
|
|
10229
10279
|
}
|
|
10230
10280
|
);
|
|
@@ -10254,7 +10304,7 @@ function StnHeaderTitleClock({
|
|
|
10254
10304
|
resolvedTime = formatStnHeaderTitleTime(now, { showSeconds });
|
|
10255
10305
|
}
|
|
10256
10306
|
}
|
|
10257
|
-
return /* @__PURE__ */
|
|
10307
|
+
return /* @__PURE__ */ jsxs58(
|
|
10258
10308
|
"header",
|
|
10259
10309
|
{
|
|
10260
10310
|
className: cn(
|
|
@@ -10266,11 +10316,11 @@ function StnHeaderTitleClock({
|
|
|
10266
10316
|
),
|
|
10267
10317
|
...rest,
|
|
10268
10318
|
children: [
|
|
10269
|
-
framed ? /* @__PURE__ */
|
|
10270
|
-
/* @__PURE__ */
|
|
10271
|
-
resolvedDate ? /* @__PURE__ */
|
|
10272
|
-
showWeekdayOnly ? /* @__PURE__ */
|
|
10273
|
-
resolvedTime ? /* @__PURE__ */
|
|
10319
|
+
framed ? /* @__PURE__ */ jsx79(HeaderTitleFrame, {}) : null,
|
|
10320
|
+
/* @__PURE__ */ jsxs58("div", { className: "stn-header-title__content", children: [
|
|
10321
|
+
resolvedDate ? /* @__PURE__ */ jsx79("time", { className: "stn-header-title__date", dateTime: resolvedDate, children: resolvedDate }) : null,
|
|
10322
|
+
showWeekdayOnly ? /* @__PURE__ */ jsx79("span", { className: "stn-header-title__weekday", children: resolvedWeekday }) : null,
|
|
10323
|
+
resolvedTime ? /* @__PURE__ */ jsx79("span", { className: "stn-header-title__time", "aria-label": "\uD604\uC7AC \uC2DC\uAC01", children: resolvedTime }) : null
|
|
10274
10324
|
] })
|
|
10275
10325
|
]
|
|
10276
10326
|
}
|
|
@@ -10287,7 +10337,7 @@ function StnHeaderTitleDual({
|
|
|
10287
10337
|
...rest
|
|
10288
10338
|
}) {
|
|
10289
10339
|
const resolvedMain = mainText ?? title ?? children;
|
|
10290
|
-
return /* @__PURE__ */
|
|
10340
|
+
return /* @__PURE__ */ jsxs58(
|
|
10291
10341
|
"header",
|
|
10292
10342
|
{
|
|
10293
10343
|
className: cn(
|
|
@@ -10299,10 +10349,10 @@ function StnHeaderTitleDual({
|
|
|
10299
10349
|
),
|
|
10300
10350
|
...rest,
|
|
10301
10351
|
children: [
|
|
10302
|
-
framed ? /* @__PURE__ */
|
|
10303
|
-
/* @__PURE__ */
|
|
10304
|
-
subText != null ? /* @__PURE__ */
|
|
10305
|
-
resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */
|
|
10352
|
+
framed ? /* @__PURE__ */ jsx79(HeaderTitleFrame, {}) : null,
|
|
10353
|
+
/* @__PURE__ */ jsxs58("div", { className: "stn-header-title__content", children: [
|
|
10354
|
+
subText != null ? /* @__PURE__ */ jsx79("span", { className: "stn-header-title__sub-text", children: subText }) : null,
|
|
10355
|
+
resolvedMain != null ? typeof resolvedMain === "string" || typeof resolvedMain === "number" ? /* @__PURE__ */ jsx79("h1", { className: "stn-header-title__text", children: resolvedMain }) : resolvedMain : null
|
|
10306
10356
|
] })
|
|
10307
10357
|
]
|
|
10308
10358
|
}
|
|
@@ -10317,7 +10367,7 @@ function StnHeaderTitleText({
|
|
|
10317
10367
|
...rest
|
|
10318
10368
|
}) {
|
|
10319
10369
|
const resolved = title ?? children;
|
|
10320
|
-
return /* @__PURE__ */
|
|
10370
|
+
return /* @__PURE__ */ jsxs58(
|
|
10321
10371
|
"header",
|
|
10322
10372
|
{
|
|
10323
10373
|
className: cn(
|
|
@@ -10329,20 +10379,20 @@ function StnHeaderTitleText({
|
|
|
10329
10379
|
),
|
|
10330
10380
|
...rest,
|
|
10331
10381
|
children: [
|
|
10332
|
-
framed ? /* @__PURE__ */
|
|
10333
|
-
/* @__PURE__ */
|
|
10382
|
+
framed ? /* @__PURE__ */ jsx79(HeaderTitleFrame, {}) : null,
|
|
10383
|
+
/* @__PURE__ */ jsx79("div", { className: "stn-header-title__content", children: typeof resolved === "string" || typeof resolved === "number" ? /* @__PURE__ */ jsx79("h1", { className: "stn-header-title__text", children: resolved }) : resolved })
|
|
10334
10384
|
]
|
|
10335
10385
|
}
|
|
10336
10386
|
);
|
|
10337
10387
|
}
|
|
10338
10388
|
function StnHeaderTitleRoot(props) {
|
|
10339
10389
|
if (props.variant === "clock") {
|
|
10340
|
-
return /* @__PURE__ */
|
|
10390
|
+
return /* @__PURE__ */ jsx79(StnHeaderTitleClock, { ...props });
|
|
10341
10391
|
}
|
|
10342
10392
|
if (props.variant === "dual" || "subText" in props && props.subText != null) {
|
|
10343
|
-
return /* @__PURE__ */
|
|
10393
|
+
return /* @__PURE__ */ jsx79(StnHeaderTitleDual, { ...props });
|
|
10344
10394
|
}
|
|
10345
|
-
return /* @__PURE__ */
|
|
10395
|
+
return /* @__PURE__ */ jsx79(StnHeaderTitleText, { ...props });
|
|
10346
10396
|
}
|
|
10347
10397
|
var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
|
|
10348
10398
|
Text: StnHeaderTitleMainText,
|
|
@@ -10357,7 +10407,7 @@ var StnHeaderTitle = Object.assign(StnHeaderTitleRoot, {
|
|
|
10357
10407
|
import {
|
|
10358
10408
|
forwardRef as forwardRef46
|
|
10359
10409
|
} from "react";
|
|
10360
|
-
import { jsx as
|
|
10410
|
+
import { jsx as jsx80 } from "react/jsx-runtime";
|
|
10361
10411
|
var StnContainer = forwardRef46(function StnContainer2({
|
|
10362
10412
|
component,
|
|
10363
10413
|
as,
|
|
@@ -10373,7 +10423,7 @@ var StnContainer = forwardRef46(function StnContainer2({
|
|
|
10373
10423
|
const Component = component ?? as ?? "div";
|
|
10374
10424
|
const maxWidthClass = maxWidth ? `stn-container--${maxWidth} stn-container--max-width-${maxWidth}` : "stn-container--fluid stn-container--max-width-false";
|
|
10375
10425
|
const classKey = maxWidth ? `maxWidth${maxWidth.charAt(0).toUpperCase() + maxWidth.slice(1)}` : "maxWidthFalse";
|
|
10376
|
-
return /* @__PURE__ */
|
|
10426
|
+
return /* @__PURE__ */ jsx80(
|
|
10377
10427
|
Component,
|
|
10378
10428
|
{
|
|
10379
10429
|
ref,
|
|
@@ -10397,7 +10447,7 @@ var StnContainer = forwardRef46(function StnContainer2({
|
|
|
10397
10447
|
|
|
10398
10448
|
// src/layouts/StnGrid.tsx
|
|
10399
10449
|
import { forwardRef as forwardRef47 } from "react";
|
|
10400
|
-
import { jsx as
|
|
10450
|
+
import { jsx as jsx81 } from "react/jsx-runtime";
|
|
10401
10451
|
var BREAKPOINTS2 = ["xs", "sm", "md", "lg", "xl"];
|
|
10402
10452
|
var SPACING_CLASS = {
|
|
10403
10453
|
"0": "0",
|
|
@@ -10483,7 +10533,7 @@ var StnGrid = forwardRef47(function StnGrid2({
|
|
|
10483
10533
|
const Component = component ?? as ?? "div";
|
|
10484
10534
|
const justify = typeof justifyContent === "string" && JUSTIFY_CLASS2.has(justifyContent) ? justifyContent : void 0;
|
|
10485
10535
|
const align = typeof alignItems === "string" && ALIGN_CLASS2.has(alignItems) ? alignItems : void 0;
|
|
10486
|
-
return /* @__PURE__ */
|
|
10536
|
+
return /* @__PURE__ */ jsx81(
|
|
10487
10537
|
Component,
|
|
10488
10538
|
{
|
|
10489
10539
|
ref,
|
|
@@ -10507,7 +10557,7 @@ var StnGrid = forwardRef47(function StnGrid2({
|
|
|
10507
10557
|
});
|
|
10508
10558
|
|
|
10509
10559
|
// src/layouts/StnLayerShell.tsx
|
|
10510
|
-
import { jsx as
|
|
10560
|
+
import { jsx as jsx82, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
10511
10561
|
function StnLayerShell({
|
|
10512
10562
|
gnb,
|
|
10513
10563
|
gnbSide = "left",
|
|
@@ -10528,7 +10578,7 @@ function StnLayerShell({
|
|
|
10528
10578
|
const resolvedMainContent = layer1 ?? children;
|
|
10529
10579
|
const resolvedModal = layer2;
|
|
10530
10580
|
const isGnbRight = gnbSide === "right";
|
|
10531
|
-
return /* @__PURE__ */
|
|
10581
|
+
return /* @__PURE__ */ jsxs59(
|
|
10532
10582
|
"div",
|
|
10533
10583
|
{
|
|
10534
10584
|
id: wrapId,
|
|
@@ -10536,8 +10586,8 @@ function StnLayerShell({
|
|
|
10536
10586
|
className: cn("stn-wrap", isGnbRight && "stn-wrap--gnb-right", wrapClassName),
|
|
10537
10587
|
children: [
|
|
10538
10588
|
layer0,
|
|
10539
|
-
utilities ? /* @__PURE__ */
|
|
10540
|
-
/* @__PURE__ */
|
|
10589
|
+
utilities ? /* @__PURE__ */ jsx82("div", { className: "stn-page-utilities", "data-stn-layer-role": "utility", children: utilities }) : null,
|
|
10590
|
+
/* @__PURE__ */ jsxs59(
|
|
10541
10591
|
"main",
|
|
10542
10592
|
{
|
|
10543
10593
|
id: containerId,
|
|
@@ -10546,9 +10596,9 @@ function StnLayerShell({
|
|
|
10546
10596
|
className: cn("stn-layer-1", scrollable && "scroll", containerClassName),
|
|
10547
10597
|
children: [
|
|
10548
10598
|
!isGnbRight && gnb,
|
|
10549
|
-
/* @__PURE__ */
|
|
10550
|
-
header ? /* @__PURE__ */
|
|
10551
|
-
/* @__PURE__ */
|
|
10599
|
+
/* @__PURE__ */ jsxs59("div", { className: "stn-layer-1__main", children: [
|
|
10600
|
+
header ? /* @__PURE__ */ jsx82("header", { className: "stn-layer-1__header", children: header }) : null,
|
|
10601
|
+
/* @__PURE__ */ jsx82("div", { className: cn("stn-layer-1__body", scrollable && "stn-scroll", contentClassName), children: resolvedMainContent })
|
|
10552
10602
|
] }),
|
|
10553
10603
|
isGnbRight && gnb
|
|
10554
10604
|
]
|
|
@@ -10561,7 +10611,7 @@ function StnLayerShell({
|
|
|
10561
10611
|
}
|
|
10562
10612
|
|
|
10563
10613
|
// src/layouts/StnListViewLayout.tsx
|
|
10564
|
-
import { jsx as
|
|
10614
|
+
import { jsx as jsx83, jsxs as jsxs60 } from "react/jsx-runtime";
|
|
10565
10615
|
function StnListViewLayoutBody({
|
|
10566
10616
|
search,
|
|
10567
10617
|
sidebar,
|
|
@@ -10572,13 +10622,13 @@ function StnListViewLayoutBody({
|
|
|
10572
10622
|
className
|
|
10573
10623
|
}) {
|
|
10574
10624
|
const lnbClass = lnbSide === "right" ? "stn-page-scaffold__lnb lnb_box lnb_box_right" : "stn-page-scaffold__lnb lnb_box";
|
|
10575
|
-
const sidebarAside = sidebar ? /* @__PURE__ */
|
|
10576
|
-
return /* @__PURE__ */
|
|
10625
|
+
const sidebarAside = sidebar ? /* @__PURE__ */ jsx83("aside", { className: lnbClass, children: sidebar }) : null;
|
|
10626
|
+
return /* @__PURE__ */ jsx83(
|
|
10577
10627
|
StnContainer,
|
|
10578
10628
|
{
|
|
10579
10629
|
maxWidth: false,
|
|
10580
10630
|
className: cn("stn-list-view-layout__body", className),
|
|
10581
|
-
children: /* @__PURE__ */
|
|
10631
|
+
children: /* @__PURE__ */ jsxs60(
|
|
10582
10632
|
StnStack,
|
|
10583
10633
|
{
|
|
10584
10634
|
direction: "row",
|
|
@@ -10586,19 +10636,19 @@ function StnListViewLayoutBody({
|
|
|
10586
10636
|
className: "stn-list-view__main",
|
|
10587
10637
|
children: [
|
|
10588
10638
|
lnbSide === "left" ? sidebarAside : null,
|
|
10589
|
-
/* @__PURE__ */
|
|
10639
|
+
/* @__PURE__ */ jsxs60(
|
|
10590
10640
|
StnStack,
|
|
10591
10641
|
{
|
|
10592
10642
|
direction: "column",
|
|
10593
10643
|
spacing: 2,
|
|
10594
10644
|
className: "stn-list-view__content-stack",
|
|
10595
10645
|
children: [
|
|
10596
|
-
search ? /* @__PURE__ */
|
|
10597
|
-
/* @__PURE__ */
|
|
10646
|
+
search ? /* @__PURE__ */ jsx83("div", { className: "stn-page-scaffold__search search_area", children: search }) : null,
|
|
10647
|
+
/* @__PURE__ */ jsx83(
|
|
10598
10648
|
"div",
|
|
10599
10649
|
{
|
|
10600
10650
|
className: "stn-page-scaffold__content content_box",
|
|
10601
|
-
children: children ?? /* @__PURE__ */
|
|
10651
|
+
children: children ?? /* @__PURE__ */ jsxs60("div", { className: "stn-table stn-table--fill", children: [
|
|
10602
10652
|
table,
|
|
10603
10653
|
pagination
|
|
10604
10654
|
] })
|
|
@@ -10630,7 +10680,7 @@ function StnListViewLayoutRoot({
|
|
|
10630
10680
|
}) {
|
|
10631
10681
|
const bare = bareProp ?? noShell ?? false;
|
|
10632
10682
|
const hasLnbClass = lnbSide === "right" ? "has_lnb_right" : "has_lnb";
|
|
10633
|
-
const body = /* @__PURE__ */
|
|
10683
|
+
const body = /* @__PURE__ */ jsx83(
|
|
10634
10684
|
StnListViewLayoutBody,
|
|
10635
10685
|
{
|
|
10636
10686
|
search,
|
|
@@ -10645,10 +10695,10 @@ function StnListViewLayoutRoot({
|
|
|
10645
10695
|
if (bare) {
|
|
10646
10696
|
return body;
|
|
10647
10697
|
}
|
|
10648
|
-
const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */
|
|
10649
|
-
return /* @__PURE__ */
|
|
10698
|
+
const renderedHeader = header === null ? null : header !== void 0 ? header : /* @__PURE__ */ jsx83("div", { className: "stn-layer-1__header", children: /* @__PURE__ */ jsx83(StnHeader, { variant: "page", children: /* @__PURE__ */ jsx83(StnHeader.Left, { children: /* @__PURE__ */ jsx83(StnHeaderPageTitle, { children: title }) }) }) });
|
|
10699
|
+
return /* @__PURE__ */ jsxs60("div", { className: cn("stn-list-view-layout", "stn-layer-1", className), ...rest, children: [
|
|
10650
10700
|
renderedHeader,
|
|
10651
|
-
/* @__PURE__ */
|
|
10701
|
+
/* @__PURE__ */ jsx83(
|
|
10652
10702
|
"div",
|
|
10653
10703
|
{
|
|
10654
10704
|
className: cn("stn-content-area", sidebar ? hasLnbClass : null, search ? "has_sch" : null),
|
|
@@ -10658,10 +10708,10 @@ function StnListViewLayoutRoot({
|
|
|
10658
10708
|
] });
|
|
10659
10709
|
}
|
|
10660
10710
|
function StnListViewLayoutHeader({ className, children, ...rest }) {
|
|
10661
|
-
return /* @__PURE__ */
|
|
10711
|
+
return /* @__PURE__ */ jsx83("div", { className: cn("stn-layer-1__header", className), ...rest, children });
|
|
10662
10712
|
}
|
|
10663
10713
|
function StnListViewLayoutSearch({ className, children, ...rest }) {
|
|
10664
|
-
return /* @__PURE__ */
|
|
10714
|
+
return /* @__PURE__ */ jsx83("div", { className: cn("search_area", className), ...rest, children });
|
|
10665
10715
|
}
|
|
10666
10716
|
function StnListViewLayoutSidebar({
|
|
10667
10717
|
side = "left",
|
|
@@ -10670,16 +10720,16 @@ function StnListViewLayoutSidebar({
|
|
|
10670
10720
|
...rest
|
|
10671
10721
|
}) {
|
|
10672
10722
|
const lnbClass = side === "right" ? "lnb_box_right" : "lnb_box";
|
|
10673
|
-
return /* @__PURE__ */
|
|
10723
|
+
return /* @__PURE__ */ jsx83("aside", { className: cn(lnbClass, className), ...rest, children });
|
|
10674
10724
|
}
|
|
10675
10725
|
function StnListViewLayoutContent({ className, children, ...rest }) {
|
|
10676
|
-
return /* @__PURE__ */
|
|
10726
|
+
return /* @__PURE__ */ jsx83("div", { className: cn("content_box", className), ...rest, children });
|
|
10677
10727
|
}
|
|
10678
10728
|
function StnListViewLayoutTable({ className, children, ...rest }) {
|
|
10679
|
-
return /* @__PURE__ */
|
|
10729
|
+
return /* @__PURE__ */ jsx83("div", { className: cn("stn-table", className), ...rest, children });
|
|
10680
10730
|
}
|
|
10681
10731
|
function StnListViewLayoutPagination({ className, children, ...rest }) {
|
|
10682
|
-
return /* @__PURE__ */
|
|
10732
|
+
return /* @__PURE__ */ jsx83("div", { className: cn("stn-list-view-layout__pagination-wrap", className), ...rest, children });
|
|
10683
10733
|
}
|
|
10684
10734
|
var StnListViewLayout = Object.assign(StnListViewLayoutRoot, {
|
|
10685
10735
|
Body: StnListViewLayoutBody,
|
|
@@ -10713,13 +10763,13 @@ import {
|
|
|
10713
10763
|
} from "@stn-uiux/pub-ui/data/stnLayout";
|
|
10714
10764
|
|
|
10715
10765
|
// src/patterns/dashboard/StnMapCanvas.tsx
|
|
10716
|
-
import { jsx as
|
|
10766
|
+
import { jsx as jsx84 } from "react/jsx-runtime";
|
|
10717
10767
|
function StnMapCanvas({
|
|
10718
10768
|
children,
|
|
10719
10769
|
className,
|
|
10720
10770
|
...rest
|
|
10721
10771
|
}) {
|
|
10722
|
-
return /* @__PURE__ */
|
|
10772
|
+
return /* @__PURE__ */ jsx84(
|
|
10723
10773
|
"div",
|
|
10724
10774
|
{
|
|
10725
10775
|
className: cn("stn-map-canvas", className),
|
|
@@ -10731,7 +10781,7 @@ function StnMapCanvas({
|
|
|
10731
10781
|
}
|
|
10732
10782
|
|
|
10733
10783
|
// src/patterns/dashboard/StnDashboard.tsx
|
|
10734
|
-
import { jsx as
|
|
10784
|
+
import { jsx as jsx85 } from "react/jsx-runtime";
|
|
10735
10785
|
var fillStyle = {
|
|
10736
10786
|
flex: "1 1 0%",
|
|
10737
10787
|
minHeight: 0,
|
|
@@ -10750,7 +10800,7 @@ function StnDashboardRoot({
|
|
|
10750
10800
|
}) {
|
|
10751
10801
|
const isLeft = widgetPosition === "left";
|
|
10752
10802
|
const isBoth = widgetPosition === "both";
|
|
10753
|
-
return /* @__PURE__ */
|
|
10803
|
+
return /* @__PURE__ */ jsx85(
|
|
10754
10804
|
"div",
|
|
10755
10805
|
{
|
|
10756
10806
|
className: cn(
|
|
@@ -10779,7 +10829,7 @@ function StnDashboardLeft({
|
|
|
10779
10829
|
style,
|
|
10780
10830
|
...rest
|
|
10781
10831
|
}) {
|
|
10782
|
-
return /* @__PURE__ */
|
|
10832
|
+
return /* @__PURE__ */ jsx85(
|
|
10783
10833
|
"div",
|
|
10784
10834
|
{
|
|
10785
10835
|
className: cn("stn-dashboard__left", className),
|
|
@@ -10805,7 +10855,7 @@ function StnDashboardRight({
|
|
|
10805
10855
|
style,
|
|
10806
10856
|
...rest
|
|
10807
10857
|
}) {
|
|
10808
|
-
return /* @__PURE__ */
|
|
10858
|
+
return /* @__PURE__ */ jsx85(
|
|
10809
10859
|
"div",
|
|
10810
10860
|
{
|
|
10811
10861
|
className: cn("stn-dashboard__right", className),
|
|
@@ -10833,7 +10883,7 @@ function StnDashboardTopRight({
|
|
|
10833
10883
|
className,
|
|
10834
10884
|
...rest
|
|
10835
10885
|
}) {
|
|
10836
|
-
return /* @__PURE__ */
|
|
10886
|
+
return /* @__PURE__ */ jsx85(
|
|
10837
10887
|
"div",
|
|
10838
10888
|
{
|
|
10839
10889
|
className: cn("stn-dashboard__top-right", className),
|
|
@@ -10852,9 +10902,9 @@ var StnDashboard = Object.assign(StnDashboardRoot, {
|
|
|
10852
10902
|
});
|
|
10853
10903
|
|
|
10854
10904
|
// src/patterns/scaffold/StnPageScaffold.tsx
|
|
10855
|
-
import { jsx as
|
|
10905
|
+
import { jsx as jsx86, jsxs as jsxs61 } from "react/jsx-runtime";
|
|
10856
10906
|
function StnPageScaffoldRoot({ children, className, ...rest }) {
|
|
10857
|
-
return /* @__PURE__ */
|
|
10907
|
+
return /* @__PURE__ */ jsx86(
|
|
10858
10908
|
"div",
|
|
10859
10909
|
{
|
|
10860
10910
|
className: cn("stn-page-scaffold", className),
|
|
@@ -10871,9 +10921,9 @@ function StnPageScaffoldRegion({
|
|
|
10871
10921
|
className,
|
|
10872
10922
|
...rest
|
|
10873
10923
|
}) {
|
|
10874
|
-
return /* @__PURE__ */
|
|
10875
|
-
/* @__PURE__ */
|
|
10876
|
-
hint ? /* @__PURE__ */
|
|
10924
|
+
return /* @__PURE__ */ jsxs61("div", { className: cn("stn-page-scaffold__region", className), "data-stn-page-scaffold": "region", ...rest, children: [
|
|
10925
|
+
/* @__PURE__ */ jsx86("span", { className: "stn-page-scaffold__region-label", children: label }),
|
|
10926
|
+
hint ? /* @__PURE__ */ jsx86("span", { className: "stn-page-scaffold__region-hint", children: hint }) : null,
|
|
10877
10927
|
children
|
|
10878
10928
|
] });
|
|
10879
10929
|
}
|
|
@@ -10884,7 +10934,7 @@ function StnPageScaffoldMapPlaceholder({
|
|
|
10884
10934
|
children,
|
|
10885
10935
|
...rest
|
|
10886
10936
|
}) {
|
|
10887
|
-
return /* @__PURE__ */
|
|
10937
|
+
return /* @__PURE__ */ jsx86("div", { className: "stn-widget shell-canvas stn-map-canvas", "data-stn-dashboard": "canvas", children: /* @__PURE__ */ jsxs61(
|
|
10888
10938
|
"div",
|
|
10889
10939
|
{
|
|
10890
10940
|
className: cn("stn-page-scaffold__canvas-placeholder", className),
|
|
@@ -10892,8 +10942,8 @@ function StnPageScaffoldMapPlaceholder({
|
|
|
10892
10942
|
role: "status",
|
|
10893
10943
|
...rest,
|
|
10894
10944
|
children: [
|
|
10895
|
-
/* @__PURE__ */
|
|
10896
|
-
note ? /* @__PURE__ */
|
|
10945
|
+
/* @__PURE__ */ jsx86("p", { className: "stn-page-scaffold__canvas-placeholder-title", children: message }),
|
|
10946
|
+
note ? /* @__PURE__ */ jsx86("p", { className: "stn-page-scaffold__canvas-placeholder-note", children: note }) : null,
|
|
10897
10947
|
children
|
|
10898
10948
|
]
|
|
10899
10949
|
}
|
|
@@ -10904,7 +10954,7 @@ function StnPageScaffoldMapCanvas({
|
|
|
10904
10954
|
children,
|
|
10905
10955
|
...rest
|
|
10906
10956
|
}) {
|
|
10907
|
-
return /* @__PURE__ */
|
|
10957
|
+
return /* @__PURE__ */ jsx86(
|
|
10908
10958
|
"div",
|
|
10909
10959
|
{
|
|
10910
10960
|
className: cn("stn-widget", "shell-canvas", "stn-map-canvas", "stn-page-scaffold__canvas", className),
|
|
@@ -10917,7 +10967,7 @@ function StnPageScaffoldMapCanvas({
|
|
|
10917
10967
|
}
|
|
10918
10968
|
function StnPageScaffoldLayer({ label, hint, children, className, ...layerProps }) {
|
|
10919
10969
|
const labelText = label ? hint ? `${label} \xB7 ${hint}` : label : void 0;
|
|
10920
|
-
return /* @__PURE__ */
|
|
10970
|
+
return /* @__PURE__ */ jsx86(
|
|
10921
10971
|
StnLayer2,
|
|
10922
10972
|
{
|
|
10923
10973
|
className: cn(
|
|
@@ -10964,25 +11014,25 @@ function DashboardPageScaffold({
|
|
|
10964
11014
|
const isLeft = widgetPosition === "left";
|
|
10965
11015
|
const isBoth = widgetPosition === "both";
|
|
10966
11016
|
const isNone = widgetPosition === "none" || !showRightRegion;
|
|
10967
|
-
const mapColumn = /* @__PURE__ */
|
|
10968
|
-
/* @__PURE__ */
|
|
11017
|
+
const mapColumn = /* @__PURE__ */ jsxs61(StnDashboard.Left, { children: [
|
|
11018
|
+
/* @__PURE__ */ jsx86(StnPageScaffold.MapPlaceholder, { message: finalMapMessage, note: finalMapNote }),
|
|
10969
11019
|
faultPanel
|
|
10970
11020
|
] });
|
|
10971
|
-
const rightWidgets = right ?? /* @__PURE__ */
|
|
10972
|
-
const leftWidgets = left ?? right ?? /* @__PURE__ */
|
|
10973
|
-
const dashboardGrid = bodyEmpty ? /* @__PURE__ */
|
|
10974
|
-
/* @__PURE__ */
|
|
11021
|
+
const rightWidgets = right ?? /* @__PURE__ */ jsx86(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
|
|
11022
|
+
const leftWidgets = left ?? right ?? /* @__PURE__ */ jsx86(StnPageScaffold.Region, { label: "dashboard_right", hint: "\uC88C\uCE21 \uC704\uC82F\xB7\uC7A5\uC560 \uD328\uB110" });
|
|
11023
|
+
const dashboardGrid = bodyEmpty ? /* @__PURE__ */ jsx86(StnDashboard, { empty: true, widgetPosition, "data-stn-page-scaffold": "dashboard-empty" }) : isBoth ? /* @__PURE__ */ jsxs61(StnDashboard, { widgetPosition: "both", children: [
|
|
11024
|
+
/* @__PURE__ */ jsx86(StnDashboard.Right, { children: leftWidgets }),
|
|
10975
11025
|
mapColumn,
|
|
10976
|
-
/* @__PURE__ */
|
|
10977
|
-
] }) : isLeft ? /* @__PURE__ */
|
|
10978
|
-
/* @__PURE__ */
|
|
11026
|
+
/* @__PURE__ */ jsx86(StnDashboard.Right, { children: rightWidgets })
|
|
11027
|
+
] }) : isLeft ? /* @__PURE__ */ jsxs61(StnDashboard, { widgetPosition: "left", children: [
|
|
11028
|
+
/* @__PURE__ */ jsx86(StnDashboard.Right, { children: leftWidgets }),
|
|
10979
11029
|
mapColumn
|
|
10980
|
-
] }) : /* @__PURE__ */
|
|
11030
|
+
] }) : /* @__PURE__ */ jsxs61(StnDashboard, { widgetPosition: isNone ? "none" : "right", children: [
|
|
10981
11031
|
mapColumn,
|
|
10982
|
-
!isNone ? /* @__PURE__ */
|
|
11032
|
+
!isNone ? /* @__PURE__ */ jsx86(StnDashboard.Right, { children: rightWidgets }) : null
|
|
10983
11033
|
] });
|
|
10984
11034
|
const contentNode = children ?? dashboardGrid;
|
|
10985
|
-
return /* @__PURE__ */
|
|
11035
|
+
return /* @__PURE__ */ jsx86(
|
|
10986
11036
|
StnLayerShell,
|
|
10987
11037
|
{
|
|
10988
11038
|
gnb,
|
|
@@ -10991,7 +11041,7 @@ function DashboardPageScaffold({
|
|
|
10991
11041
|
layer0,
|
|
10992
11042
|
layer2,
|
|
10993
11043
|
...shellProps,
|
|
10994
|
-
children: /* @__PURE__ */
|
|
11044
|
+
children: /* @__PURE__ */ jsx86(
|
|
10995
11045
|
StnContainer,
|
|
10996
11046
|
{
|
|
10997
11047
|
maxWidth: false,
|
|
@@ -11012,9 +11062,9 @@ import {
|
|
|
11012
11062
|
STN_ALERT_CENTER_DEMO_WORK
|
|
11013
11063
|
} from "@stn-uiux/pub-ui/data/stnAlertCenter";
|
|
11014
11064
|
import { systemIconSrc } from "@stn-uiux/pub-ui/data/stnSystemIcons";
|
|
11015
|
-
import { Fragment as Fragment12, jsx as
|
|
11065
|
+
import { Fragment as Fragment12, jsx as jsx87, jsxs as jsxs62 } from "react/jsx-runtime";
|
|
11016
11066
|
function defaultTopologyHeader(_clock) {
|
|
11017
|
-
return /* @__PURE__ */
|
|
11067
|
+
return /* @__PURE__ */ jsx87(StnHeader, { variant: "widget" });
|
|
11018
11068
|
}
|
|
11019
11069
|
function AlertCenterPageScaffold({
|
|
11020
11070
|
gnbAlertPanel,
|
|
@@ -11033,7 +11083,7 @@ function AlertCenterPageScaffold({
|
|
|
11033
11083
|
}) {
|
|
11034
11084
|
const [gnbOpen, setGnbOpen] = useState22(defaultGnbOpen);
|
|
11035
11085
|
const panel = useMemo6(
|
|
11036
|
-
() => gnbAlertPanel ?? /* @__PURE__ */
|
|
11086
|
+
() => gnbAlertPanel ?? /* @__PURE__ */ jsx87(
|
|
11037
11087
|
StnAlertCenterPanel,
|
|
11038
11088
|
{
|
|
11039
11089
|
alerts: STN_ALERT_CENTER_DEMO_ALERTS,
|
|
@@ -11044,26 +11094,26 @@ function AlertCenterPageScaffold({
|
|
|
11044
11094
|
[gnbAlertPanel]
|
|
11045
11095
|
);
|
|
11046
11096
|
const sideNav = useMemo6(
|
|
11047
|
-
() => gnbProp ?? /* @__PURE__ */
|
|
11048
|
-
/* @__PURE__ */
|
|
11097
|
+
() => gnbProp ?? /* @__PURE__ */ jsxs62(Fragment12, { children: [
|
|
11098
|
+
/* @__PURE__ */ jsxs62(
|
|
11049
11099
|
StnSideNavigation,
|
|
11050
11100
|
{
|
|
11051
11101
|
collapsed: !gnbOpen,
|
|
11052
11102
|
onCollapseChange: (col) => setGnbOpen(!col),
|
|
11053
11103
|
children: [
|
|
11054
|
-
/* @__PURE__ */
|
|
11055
|
-
/* @__PURE__ */
|
|
11056
|
-
/* @__PURE__ */
|
|
11104
|
+
/* @__PURE__ */ jsxs62(StnSideNavigation.Header, { children: [
|
|
11105
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Logo, {}),
|
|
11106
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Toggle, {})
|
|
11057
11107
|
] }),
|
|
11058
|
-
/* @__PURE__ */
|
|
11059
|
-
/* @__PURE__ */
|
|
11060
|
-
/* @__PURE__ */
|
|
11061
|
-
/* @__PURE__ */
|
|
11108
|
+
/* @__PURE__ */ jsxs62(StnSideNavigation.Menu, { children: [
|
|
11109
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/layout-grid"), label: "\uBA54\uC778 \uB300\uC2DC\uBCF4\uB4DC", active: true }),
|
|
11110
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/server_2"), label: "\uC11C\uBC84 \uBAA8\uB2C8\uD130\uB9C1" }),
|
|
11111
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/activity"), label: "\uB124\uD2B8\uC6CC\uD06C \uBD84\uC11D" })
|
|
11062
11112
|
] }),
|
|
11063
|
-
/* @__PURE__ */
|
|
11064
|
-
/* @__PURE__ */
|
|
11065
|
-
/* @__PURE__ */
|
|
11066
|
-
/* @__PURE__ */
|
|
11113
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Spacer, {}),
|
|
11114
|
+
/* @__PURE__ */ jsxs62(StnSideNavigation.Footer, { curved: true, children: [
|
|
11115
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Watermark, {}),
|
|
11116
|
+
/* @__PURE__ */ jsx87(
|
|
11067
11117
|
StnSideNavigation.Item,
|
|
11068
11118
|
{
|
|
11069
11119
|
iconSrc: systemIconSrc("line/bell"),
|
|
@@ -11072,7 +11122,7 @@ function AlertCenterPageScaffold({
|
|
|
11072
11122
|
onClick: void 0
|
|
11073
11123
|
}
|
|
11074
11124
|
),
|
|
11075
|
-
/* @__PURE__ */
|
|
11125
|
+
/* @__PURE__ */ jsx87(StnSideNavigation.Item, { iconSrc: systemIconSrc("line/settings"), label: "\uC124\uC815" })
|
|
11076
11126
|
] })
|
|
11077
11127
|
]
|
|
11078
11128
|
}
|
|
@@ -11081,8 +11131,8 @@ function AlertCenterPageScaffold({
|
|
|
11081
11131
|
] }),
|
|
11082
11132
|
[gnbProp, gnbOpen, panel]
|
|
11083
11133
|
);
|
|
11084
|
-
const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */
|
|
11085
|
-
return /* @__PURE__ */
|
|
11134
|
+
const faultSlot = faultPanel ?? (showFaultPanelPlaceholder ? /* @__PURE__ */ jsx87("div", { className: "wrap_real_time stn-page-scaffold__fault-ph", children: /* @__PURE__ */ jsx87(StnPageScaffold.Region, { label: "\uC2E4\uC2DC\uAC04 \uC7A5\uC560 \uD604\uD669", hint: "StnWidget shell=fault-panel \xB7 \uC120\uD0DD" }) }) : null);
|
|
11135
|
+
return /* @__PURE__ */ jsx87(
|
|
11086
11136
|
DashboardPageScaffold,
|
|
11087
11137
|
{
|
|
11088
11138
|
gnb: sideNav,
|
|
@@ -11090,7 +11140,7 @@ function AlertCenterPageScaffold({
|
|
|
11090
11140
|
mapMessage,
|
|
11091
11141
|
mapNote,
|
|
11092
11142
|
faultPanel: faultSlot,
|
|
11093
|
-
right: right ?? /* @__PURE__ */
|
|
11143
|
+
right: right ?? /* @__PURE__ */ jsx87(AlertCenterDashboard, {}),
|
|
11094
11144
|
wrapId,
|
|
11095
11145
|
wrapClassName: "stn-page--map-bg",
|
|
11096
11146
|
...shellProps
|
|
@@ -11100,7 +11150,7 @@ function AlertCenterPageScaffold({
|
|
|
11100
11150
|
|
|
11101
11151
|
// src/patterns/scaffold/LoginPageScaffold.tsx
|
|
11102
11152
|
import { useState as useState23 } from "react";
|
|
11103
|
-
import { jsx as
|
|
11153
|
+
import { jsx as jsx88, jsxs as jsxs63 } from "react/jsx-runtime";
|
|
11104
11154
|
var LOGIN_TABS = [
|
|
11105
11155
|
{ value: "normal", label: "\uC77C\uBC18 \uB85C\uADF8\uC778" },
|
|
11106
11156
|
{ value: "social", label: "\uC18C\uC15C \uB85C\uADF8\uC778" }
|
|
@@ -11118,8 +11168,8 @@ function DefaultLoginForm({
|
|
|
11118
11168
|
e.preventDefault();
|
|
11119
11169
|
onLogin?.(userId, password);
|
|
11120
11170
|
}
|
|
11121
|
-
return /* @__PURE__ */
|
|
11122
|
-
/* @__PURE__ */
|
|
11171
|
+
return /* @__PURE__ */ jsxs63(StnLoginFormStack, { onSubmit: handleSubmit, children: [
|
|
11172
|
+
/* @__PURE__ */ jsx88(
|
|
11123
11173
|
StnSegmented,
|
|
11124
11174
|
{
|
|
11125
11175
|
"aria-label": "\uB85C\uADF8\uC778 \uBC29\uC2DD",
|
|
@@ -11128,8 +11178,8 @@ function DefaultLoginForm({
|
|
|
11128
11178
|
options: LOGIN_TABS
|
|
11129
11179
|
}
|
|
11130
11180
|
),
|
|
11131
|
-
mode === "normal" ? /* @__PURE__ */
|
|
11132
|
-
/* @__PURE__ */
|
|
11181
|
+
mode === "normal" ? /* @__PURE__ */ jsxs63(StnLoginFormFields, { children: [
|
|
11182
|
+
/* @__PURE__ */ jsx88(
|
|
11133
11183
|
StnLoginTextField,
|
|
11134
11184
|
{
|
|
11135
11185
|
icon: "line/user",
|
|
@@ -11141,7 +11191,7 @@ function DefaultLoginForm({
|
|
|
11141
11191
|
"aria-label": "\uC544\uC774\uB514"
|
|
11142
11192
|
}
|
|
11143
11193
|
),
|
|
11144
|
-
/* @__PURE__ */
|
|
11194
|
+
/* @__PURE__ */ jsx88(
|
|
11145
11195
|
StnLoginTextField,
|
|
11146
11196
|
{
|
|
11147
11197
|
icon: "line/lock",
|
|
@@ -11154,11 +11204,11 @@ function DefaultLoginForm({
|
|
|
11154
11204
|
"aria-label": "\uBE44\uBC00\uBC88\uD638"
|
|
11155
11205
|
}
|
|
11156
11206
|
)
|
|
11157
|
-
] }) : socialContent ?? /* @__PURE__ */
|
|
11158
|
-
/* @__PURE__ */
|
|
11159
|
-
/* @__PURE__ */
|
|
11160
|
-
/* @__PURE__ */
|
|
11161
|
-
/* @__PURE__ */
|
|
11207
|
+
] }) : socialContent ?? /* @__PURE__ */ jsx88(StnLoginPlaceholder, {}),
|
|
11208
|
+
/* @__PURE__ */ jsx88(StnButton, { type: "submit", size: "xl", fullWidth: true, children: "\uB85C\uADF8\uC778" }),
|
|
11209
|
+
/* @__PURE__ */ jsxs63(StnLoginFormLinks, { children: [
|
|
11210
|
+
/* @__PURE__ */ jsx88("a", { href: signUpHref, children: "\uD68C\uC6D0\uAC00\uC785" }),
|
|
11211
|
+
/* @__PURE__ */ jsx88("a", { href: recoverHref, children: "\uC544\uC774\uB514 / \uBE44\uBC00\uBC88\uD638 \uCC3E\uAE30" })
|
|
11162
11212
|
] })
|
|
11163
11213
|
] });
|
|
11164
11214
|
}
|
|
@@ -11172,16 +11222,16 @@ function DefaultLoginCard({
|
|
|
11172
11222
|
signUpHref,
|
|
11173
11223
|
recoverHref
|
|
11174
11224
|
}) {
|
|
11175
|
-
return /* @__PURE__ */
|
|
11225
|
+
return /* @__PURE__ */ jsx88(
|
|
11176
11226
|
StnLoginCard,
|
|
11177
11227
|
{
|
|
11178
11228
|
glow,
|
|
11179
11229
|
variant,
|
|
11180
|
-
brand: /* @__PURE__ */
|
|
11181
|
-
logo ?? /* @__PURE__ */
|
|
11182
|
-
/* @__PURE__ */
|
|
11230
|
+
brand: /* @__PURE__ */ jsxs63(StnLoginBrandStack, { children: [
|
|
11231
|
+
logo ?? /* @__PURE__ */ jsx88(StnLogo, { variant: "vertical", size: "xl" }),
|
|
11232
|
+
/* @__PURE__ */ jsx88("p", { className: "stn-login-card__caption", children: productCaption })
|
|
11183
11233
|
] }),
|
|
11184
|
-
children: /* @__PURE__ */
|
|
11234
|
+
children: /* @__PURE__ */ jsx88(
|
|
11185
11235
|
DefaultLoginForm,
|
|
11186
11236
|
{
|
|
11187
11237
|
onLogin,
|
|
@@ -11207,8 +11257,8 @@ function LoginPageScaffold({
|
|
|
11207
11257
|
recoverHref,
|
|
11208
11258
|
...shellProps
|
|
11209
11259
|
}) {
|
|
11210
|
-
const resolvedLayer0 = layer0 ?? /* @__PURE__ */
|
|
11211
|
-
const resolvedCard = children ?? /* @__PURE__ */
|
|
11260
|
+
const resolvedLayer0 = layer0 ?? /* @__PURE__ */ jsx88(StnLayer0Background, { variant: "login" });
|
|
11261
|
+
const resolvedCard = children ?? /* @__PURE__ */ jsx88(
|
|
11212
11262
|
DefaultLoginCard,
|
|
11213
11263
|
{
|
|
11214
11264
|
logo,
|
|
@@ -11221,14 +11271,14 @@ function LoginPageScaffold({
|
|
|
11221
11271
|
recoverHref
|
|
11222
11272
|
}
|
|
11223
11273
|
);
|
|
11224
|
-
return /* @__PURE__ */
|
|
11274
|
+
return /* @__PURE__ */ jsxs63(
|
|
11225
11275
|
"div",
|
|
11226
11276
|
{
|
|
11227
11277
|
className: cn("stn-wrap stn-page--login", wrapClassName),
|
|
11228
11278
|
...shellProps,
|
|
11229
11279
|
children: [
|
|
11230
11280
|
resolvedLayer0,
|
|
11231
|
-
/* @__PURE__ */
|
|
11281
|
+
/* @__PURE__ */ jsx88("div", { className: "stn-login", children: resolvedCard })
|
|
11232
11282
|
]
|
|
11233
11283
|
}
|
|
11234
11284
|
);
|
|
@@ -11254,11 +11304,1507 @@ import {
|
|
|
11254
11304
|
STN_LAYER_ROLE_USAGE,
|
|
11255
11305
|
STN_ELEVATION_Z_INDEX
|
|
11256
11306
|
} from "@stn-uiux/pub-ui/data/stnLayer";
|
|
11307
|
+
|
|
11308
|
+
// src/components/chartTypes.tsx
|
|
11309
|
+
import { jsx as jsx89, jsxs as jsxs64 } from "react/jsx-runtime";
|
|
11310
|
+
var SEVERITY_COLOR_TOKENS = {
|
|
11311
|
+
critical: "var(--stn-chart-status-critical)",
|
|
11312
|
+
major: "var(--stn-chart-status-major)",
|
|
11313
|
+
minor: "var(--stn-chart-status-minor)",
|
|
11314
|
+
warning: "var(--stn-chart-status-warning)"
|
|
11315
|
+
};
|
|
11316
|
+
var STATUS_COLOR_TOKENS = {
|
|
11317
|
+
critical: "var(--stn-chart-status-critical)",
|
|
11318
|
+
major: "var(--stn-chart-status-major)",
|
|
11319
|
+
minor: "var(--stn-chart-status-minor)",
|
|
11320
|
+
warning: "var(--stn-chart-status-warning)",
|
|
11321
|
+
success: "var(--stn-chart-status-success)",
|
|
11322
|
+
normal: "var(--stn-chart-status-success)",
|
|
11323
|
+
info: "var(--stn-chart-status-info)",
|
|
11324
|
+
neutral: "var(--stn-chart-status-neutral)",
|
|
11325
|
+
primary: "var(--stn-primary)",
|
|
11326
|
+
secondary: "var(--stn-secondary)",
|
|
11327
|
+
error: "var(--stn-chart-status-critical)"
|
|
11328
|
+
};
|
|
11329
|
+
var STN_CHART_STATUS_COLORS = STATUS_COLOR_TOKENS;
|
|
11330
|
+
var STN_CHART_COLORS = [
|
|
11331
|
+
"var(--stn-chart-color-1)",
|
|
11332
|
+
"var(--stn-chart-color-2)",
|
|
11333
|
+
"var(--stn-chart-color-3)",
|
|
11334
|
+
"var(--stn-chart-color-4)",
|
|
11335
|
+
"var(--stn-chart-color-5)",
|
|
11336
|
+
"var(--stn-chart-color-6)",
|
|
11337
|
+
"var(--stn-chart-color-7)",
|
|
11338
|
+
"var(--stn-chart-color-8)",
|
|
11339
|
+
"var(--stn-chart-color-9)",
|
|
11340
|
+
"var(--stn-chart-color-10)"
|
|
11341
|
+
];
|
|
11342
|
+
var DEFAULT_CHART_COLORS = STN_CHART_COLORS;
|
|
11343
|
+
var LEGACY_CHART_COLOR_ALIASES = {
|
|
11344
|
+
"var(--stn-chart-bar-1)": "var(--stn-chart-color-1)",
|
|
11345
|
+
"var(--stn-chart-bar-2)": "var(--stn-chart-color-2)",
|
|
11346
|
+
"var(--stn-chart-bar-3)": "var(--stn-chart-color-3)",
|
|
11347
|
+
"var(--stn-chart-bar-4)": "var(--stn-chart-color-4)",
|
|
11348
|
+
"var(--stn-chart-bar-5)": "var(--stn-chart-color-5)",
|
|
11349
|
+
"var(--stn-chart-bar-6)": "var(--stn-chart-color-6)",
|
|
11350
|
+
"var(--stn-chart-line-1)": "var(--stn-chart-color-1)",
|
|
11351
|
+
"var(--stn-chart-line-2)": "var(--stn-chart-color-2)",
|
|
11352
|
+
"var(--stn-chart-line-3)": "var(--stn-chart-color-3)",
|
|
11353
|
+
"var(--stn-chart-line-4)": "var(--stn-chart-color-4)",
|
|
11354
|
+
"var(--stn-chart-line-5)": "var(--stn-chart-color-5)",
|
|
11355
|
+
"var(--stn-chart-line-6)": "var(--stn-chart-color-6)",
|
|
11356
|
+
"var(--stn-chart-line-stroke)": "var(--stn-chart-color-1)",
|
|
11357
|
+
"var(--stn-chart-gauge-seg-1)": "var(--stn-chart-color-1)",
|
|
11358
|
+
"var(--stn-chart-gauge-seg-2)": "var(--stn-chart-color-2)",
|
|
11359
|
+
"var(--stn-chart-gauge-seg-3)": "var(--stn-chart-color-3)",
|
|
11360
|
+
"var(--stn-chart-gauge-seg-4)": "var(--stn-chart-color-4)",
|
|
11361
|
+
"var(--stn-chart-gauge-seg-5)": "var(--stn-chart-color-5)",
|
|
11362
|
+
"var(--stn-chart-gauge-seg-6)": "var(--stn-chart-color-6)",
|
|
11363
|
+
"var(--stn-chart-gauge-seg-7)": "var(--stn-chart-color-7)",
|
|
11364
|
+
"var(--stn-chart-gauge-seg-8)": "var(--stn-chart-color-8)",
|
|
11365
|
+
"var(--stn-chart-gauge-seg-9)": "var(--stn-chart-color-9)",
|
|
11366
|
+
"var(--stn-chart-gauge-seg-10)": "var(--stn-chart-color-10)"
|
|
11367
|
+
};
|
|
11368
|
+
function resolveChartColor(color, severityOrFallback, status, fallbackColor) {
|
|
11369
|
+
if (color) {
|
|
11370
|
+
const normalized = color.toLowerCase().trim();
|
|
11371
|
+
if (normalized in STATUS_COLOR_TOKENS) {
|
|
11372
|
+
return STATUS_COLOR_TOKENS[normalized];
|
|
11373
|
+
}
|
|
11374
|
+
if (normalized in LEGACY_CHART_COLOR_ALIASES) {
|
|
11375
|
+
return LEGACY_CHART_COLOR_ALIASES[normalized];
|
|
11376
|
+
}
|
|
11377
|
+
return color;
|
|
11378
|
+
}
|
|
11379
|
+
if (typeof severityOrFallback === "string") {
|
|
11380
|
+
if (severityOrFallback in SEVERITY_COLOR_TOKENS) {
|
|
11381
|
+
return SEVERITY_COLOR_TOKENS[severityOrFallback];
|
|
11382
|
+
}
|
|
11383
|
+
if (severityOrFallback in STATUS_COLOR_TOKENS) {
|
|
11384
|
+
return STATUS_COLOR_TOKENS[severityOrFallback];
|
|
11385
|
+
}
|
|
11386
|
+
}
|
|
11387
|
+
if (status && STATUS_COLOR_TOKENS[status]) {
|
|
11388
|
+
return STATUS_COLOR_TOKENS[status];
|
|
11389
|
+
}
|
|
11390
|
+
if (typeof severityOrFallback === "number") {
|
|
11391
|
+
return STN_CHART_COLORS[severityOrFallback % STN_CHART_COLORS.length];
|
|
11392
|
+
}
|
|
11393
|
+
if (fallbackColor) {
|
|
11394
|
+
return fallbackColor;
|
|
11395
|
+
}
|
|
11396
|
+
if (typeof severityOrFallback === "string" && severityOrFallback.startsWith("var(")) {
|
|
11397
|
+
return severityOrFallback;
|
|
11398
|
+
}
|
|
11399
|
+
return STN_CHART_COLORS[0];
|
|
11400
|
+
}
|
|
11401
|
+
function formatChartValue(value, decimals) {
|
|
11402
|
+
if (value === 0) return "0";
|
|
11403
|
+
if (value >= 1e6) {
|
|
11404
|
+
const m = value / 1e6;
|
|
11405
|
+
const resolvedDecimals2 = decimals !== void 0 ? decimals : m % 1 === 0 ? 0 : 1;
|
|
11406
|
+
return `${m.toFixed(resolvedDecimals2)}M`;
|
|
11407
|
+
}
|
|
11408
|
+
if (value >= 1e3) {
|
|
11409
|
+
const k = value / 1e3;
|
|
11410
|
+
const resolvedDecimals2 = decimals !== void 0 ? decimals : k % 1 === 0 ? 0 : 1;
|
|
11411
|
+
return `${k.toFixed(resolvedDecimals2)}k`;
|
|
11412
|
+
}
|
|
11413
|
+
const resolvedDecimals = decimals !== void 0 ? decimals : value % 1 === 0 ? 0 : 1;
|
|
11414
|
+
return value.toFixed(resolvedDecimals);
|
|
11415
|
+
}
|
|
11416
|
+
function renderChartState(loading, hasData, emptyText = "\uC870\uD68C\uB41C \uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4") {
|
|
11417
|
+
if (loading) {
|
|
11418
|
+
return /* @__PURE__ */ jsxs64("div", { className: "stn-chart-skeleton", "aria-busy": "true", "aria-label": "\uCC28\uD2B8 \uB85C\uB529 \uC911", children: [
|
|
11419
|
+
/* @__PURE__ */ jsxs64("div", { className: "stn-chart-skeleton__bars", children: [
|
|
11420
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__bar", style: { height: "45%" } }),
|
|
11421
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__bar", style: { height: "75%" } }),
|
|
11422
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__bar", style: { height: "30%" } }),
|
|
11423
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__bar", style: { height: "90%" } }),
|
|
11424
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__bar", style: { height: "60%" } })
|
|
11425
|
+
] }),
|
|
11426
|
+
/* @__PURE__ */ jsx89("div", { className: "stn-chart-skeleton__axis" })
|
|
11427
|
+
] });
|
|
11428
|
+
}
|
|
11429
|
+
if (!hasData) {
|
|
11430
|
+
return /* @__PURE__ */ jsxs64("div", { className: "stn-chart-empty", role: "status", "aria-label": "\uB370\uC774\uD130 \uC5C6\uC74C", children: [
|
|
11431
|
+
/* @__PURE__ */ jsxs64(
|
|
11432
|
+
"svg",
|
|
11433
|
+
{
|
|
11434
|
+
className: "stn-chart-empty__icon",
|
|
11435
|
+
viewBox: "0 0 24 24",
|
|
11436
|
+
fill: "none",
|
|
11437
|
+
stroke: "currentColor",
|
|
11438
|
+
strokeWidth: "1.5",
|
|
11439
|
+
strokeLinecap: "round",
|
|
11440
|
+
strokeLinejoin: "round",
|
|
11441
|
+
"aria-hidden": "true",
|
|
11442
|
+
children: [
|
|
11443
|
+
/* @__PURE__ */ jsx89("path", { d: "M3 3v18h18" }),
|
|
11444
|
+
/* @__PURE__ */ jsx89("path", { d: "M18 9l-5 5-4-4-3 3" })
|
|
11445
|
+
]
|
|
11446
|
+
}
|
|
11447
|
+
),
|
|
11448
|
+
/* @__PURE__ */ jsx89("span", { children: emptyText })
|
|
11449
|
+
] });
|
|
11450
|
+
}
|
|
11451
|
+
return null;
|
|
11452
|
+
}
|
|
11453
|
+
|
|
11454
|
+
// src/components/StnBarChart.tsx
|
|
11455
|
+
import {
|
|
11456
|
+
useState as useState24
|
|
11457
|
+
} from "react";
|
|
11458
|
+
import { Fragment as Fragment13, jsx as jsx90, jsxs as jsxs65 } from "react/jsx-runtime";
|
|
11459
|
+
var DEFAULT_BAR_COLORS = STN_CHART_COLORS;
|
|
11460
|
+
var SIZE_WIDTH_MAP = {
|
|
11461
|
+
sm: "var(--stn-chart-bar-width-sm)",
|
|
11462
|
+
md: "var(--stn-chart-bar-width-md)",
|
|
11463
|
+
lg: "var(--stn-chart-bar-width-lg)"
|
|
11464
|
+
};
|
|
11465
|
+
function StnBarChart({
|
|
11466
|
+
data = [],
|
|
11467
|
+
direction = "vertical",
|
|
11468
|
+
orientation,
|
|
11469
|
+
size,
|
|
11470
|
+
colorBy = "series",
|
|
11471
|
+
showXAxis = true,
|
|
11472
|
+
showYAxis = true,
|
|
11473
|
+
showTooltip = true,
|
|
11474
|
+
showValue = false,
|
|
11475
|
+
yAxis = {},
|
|
11476
|
+
legend,
|
|
11477
|
+
highlightIndex: controlledHighlight,
|
|
11478
|
+
onColumnClick,
|
|
11479
|
+
compact = false,
|
|
11480
|
+
barWidth: customBarWidth,
|
|
11481
|
+
height,
|
|
11482
|
+
decimals,
|
|
11483
|
+
loading = false,
|
|
11484
|
+
emptyText,
|
|
11485
|
+
className,
|
|
11486
|
+
style,
|
|
11487
|
+
...rest
|
|
11488
|
+
}) {
|
|
11489
|
+
const [internalHighlight, setInternalHighlight] = useState24(null);
|
|
11490
|
+
const [hoveredIndex, setHoveredIndex] = useState24(null);
|
|
11491
|
+
const isHorizontal = direction === "horizontal" || orientation === "horizontal";
|
|
11492
|
+
if (loading || !data || data.length === 0) {
|
|
11493
|
+
const emptyContainerStyle = {
|
|
11494
|
+
...style,
|
|
11495
|
+
...height ? { height: typeof height === "number" ? `${height}px` : height } : {}
|
|
11496
|
+
};
|
|
11497
|
+
return /* @__PURE__ */ jsx90(
|
|
11498
|
+
"div",
|
|
11499
|
+
{
|
|
11500
|
+
className: cn(
|
|
11501
|
+
"stn-chart-bar",
|
|
11502
|
+
isHorizontal ? "stn-chart-bar--horizontal" : "stn-chart-bar--vertical",
|
|
11503
|
+
size && `stn-chart-bar--${size}`,
|
|
11504
|
+
className
|
|
11505
|
+
),
|
|
11506
|
+
style: { ...emptyContainerStyle, minHeight: height || 160 },
|
|
11507
|
+
...rest,
|
|
11508
|
+
children: renderChartState(loading, Boolean(data && data.length > 0), emptyText)
|
|
11509
|
+
}
|
|
11510
|
+
);
|
|
11511
|
+
}
|
|
11512
|
+
let maxBarsPerCol = 1;
|
|
11513
|
+
const allValues = data.flatMap((d) => {
|
|
11514
|
+
if (d.values.length > maxBarsPerCol) {
|
|
11515
|
+
maxBarsPerCol = d.values.length;
|
|
11516
|
+
}
|
|
11517
|
+
return d.values.map((v) => typeof v === "number" ? v : v.value);
|
|
11518
|
+
});
|
|
11519
|
+
const computedMax = allValues.length > 0 ? Math.max(...allValues) : 100;
|
|
11520
|
+
const max = yAxis.max ?? (computedMax > 0 ? computedMax : 100);
|
|
11521
|
+
const steps = yAxis.steps ?? 5;
|
|
11522
|
+
const formatter = yAxis.format ?? ((val) => formatChartValue(val, decimals));
|
|
11523
|
+
const resolvedBarWidth = customBarWidth !== void 0 ? typeof customBarWidth === "number" ? `${customBarWidth}px` : customBarWidth === "sm" || customBarWidth === "md" || customBarWidth === "lg" ? SIZE_WIDTH_MAP[customBarWidth] : customBarWidth : size !== void 0 ? SIZE_WIDTH_MAP[size] : compact ? "var(--stn-chart-bar-width-sm)" : maxBarsPerCol >= 5 ? "var(--stn-chart-bar-width-sm)" : maxBarsPerCol >= 3 ? "var(--stn-chart-bar-width-sm)" : "var(--stn-chart-bar-width-md)";
|
|
11524
|
+
const gridRows = [];
|
|
11525
|
+
for (let i = steps; i >= 0; i--) {
|
|
11526
|
+
const val = max / steps * i;
|
|
11527
|
+
gridRows.push({
|
|
11528
|
+
label: formatter(val),
|
|
11529
|
+
isZero: i === 0
|
|
11530
|
+
});
|
|
11531
|
+
}
|
|
11532
|
+
const gridCols = [];
|
|
11533
|
+
for (let i = 0; i <= steps; i++) {
|
|
11534
|
+
const val = max / steps * i;
|
|
11535
|
+
gridCols.push({
|
|
11536
|
+
label: formatter(val),
|
|
11537
|
+
isZero: i === 0
|
|
11538
|
+
});
|
|
11539
|
+
}
|
|
11540
|
+
const isHighlighted = (idx, item) => {
|
|
11541
|
+
if (controlledHighlight !== void 0) return controlledHighlight === idx;
|
|
11542
|
+
if (internalHighlight !== null) return internalHighlight === idx;
|
|
11543
|
+
return Boolean(item.highlight);
|
|
11544
|
+
};
|
|
11545
|
+
const handleColClick = (item, idx) => {
|
|
11546
|
+
setInternalHighlight(idx);
|
|
11547
|
+
onColumnClick?.(item, idx);
|
|
11548
|
+
};
|
|
11549
|
+
const containerStyle = {
|
|
11550
|
+
...style,
|
|
11551
|
+
...height ? { height } : {},
|
|
11552
|
+
["--stn-chart-bar-width"]: resolvedBarWidth
|
|
11553
|
+
};
|
|
11554
|
+
return /* @__PURE__ */ jsxs65(
|
|
11555
|
+
"div",
|
|
11556
|
+
{
|
|
11557
|
+
className: cn(
|
|
11558
|
+
"stn-chart-bar",
|
|
11559
|
+
isHorizontal && "stn-chart-bar--horizontal",
|
|
11560
|
+
size && `stn-chart-bar--${size}`,
|
|
11561
|
+
!showXAxis && "stn-chart-bar--no-x-axis",
|
|
11562
|
+
!showYAxis && "stn-chart-bar--no-y-axis",
|
|
11563
|
+
!showTooltip && "stn-chart--no-tooltip",
|
|
11564
|
+
className
|
|
11565
|
+
),
|
|
11566
|
+
style: containerStyle,
|
|
11567
|
+
...rest,
|
|
11568
|
+
children: [
|
|
11569
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__body", children: isHorizontal ? (
|
|
11570
|
+
/* ==================== 가로 막대 (Horizontal) ==================== */
|
|
11571
|
+
/* @__PURE__ */ jsxs65(Fragment13, { children: [
|
|
11572
|
+
showXAxis && /* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__grid-v", "aria-hidden": "true", children: gridCols.map((col, cIdx) => /* @__PURE__ */ jsxs65("div", { className: "stn-chart-bar__grid-v-col", children: [
|
|
11573
|
+
/* @__PURE__ */ jsx90(
|
|
11574
|
+
"div",
|
|
11575
|
+
{
|
|
11576
|
+
className: cn(
|
|
11577
|
+
"stn-chart-bar__grid-v-line",
|
|
11578
|
+
col.isZero && "stn-chart-bar__grid-v-line--zero"
|
|
11579
|
+
)
|
|
11580
|
+
}
|
|
11581
|
+
),
|
|
11582
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-bar__grid-v-label", children: col.label })
|
|
11583
|
+
] }, cIdx)) }),
|
|
11584
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__rows", role: "list", children: data.map((item, idx) => {
|
|
11585
|
+
const active = isHighlighted(idx, item);
|
|
11586
|
+
const isHovered = hoveredIndex === idx;
|
|
11587
|
+
const rawVals = item.values.map((v, vIdx) => {
|
|
11588
|
+
const colorIndex = colorBy === "category" ? idx : vIdx;
|
|
11589
|
+
if (typeof v === "number") {
|
|
11590
|
+
return {
|
|
11591
|
+
value: v,
|
|
11592
|
+
color: resolveChartColor(void 0, colorIndex),
|
|
11593
|
+
label: legend?.[colorIndex]?.label || (colorBy === "category" ? item.label : `Series ${vIdx + 1}`)
|
|
11594
|
+
};
|
|
11595
|
+
}
|
|
11596
|
+
return {
|
|
11597
|
+
value: v.value,
|
|
11598
|
+
color: resolveChartColor(v.color, colorIndex),
|
|
11599
|
+
label: v.label || legend?.[colorIndex]?.label || (colorBy === "category" ? item.label : `Series ${vIdx + 1}`)
|
|
11600
|
+
};
|
|
11601
|
+
});
|
|
11602
|
+
const summaryValues = rawVals.map((v) => v.value).join(", ");
|
|
11603
|
+
const isFirstRow = idx === 0;
|
|
11604
|
+
return /* @__PURE__ */ jsxs65(
|
|
11605
|
+
"button",
|
|
11606
|
+
{
|
|
11607
|
+
type: "button",
|
|
11608
|
+
className: cn(
|
|
11609
|
+
"stn-chart-bar__row",
|
|
11610
|
+
compact && "stn-chart-bar__row--compact",
|
|
11611
|
+
active && "is-active"
|
|
11612
|
+
),
|
|
11613
|
+
onClick: () => handleColClick(item, idx),
|
|
11614
|
+
onMouseEnter: () => setHoveredIndex(idx),
|
|
11615
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
11616
|
+
onFocus: () => setHoveredIndex(idx),
|
|
11617
|
+
onBlur: () => setHoveredIndex(null),
|
|
11618
|
+
"aria-label": `${item.label} (${summaryValues})`,
|
|
11619
|
+
role: "listitem",
|
|
11620
|
+
children: [
|
|
11621
|
+
showYAxis && /* @__PURE__ */ jsx90("span", { className: "stn-chart-bar__row-label", title: item.label, children: item.label }),
|
|
11622
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__row-track", children: rawVals.map((bar, bIdx) => {
|
|
11623
|
+
const pct = Math.max(0, Math.min(100, bar.value / max * 100));
|
|
11624
|
+
return /* @__PURE__ */ jsx90(
|
|
11625
|
+
"div",
|
|
11626
|
+
{
|
|
11627
|
+
className: "stn-chart-bar__item",
|
|
11628
|
+
style: {
|
|
11629
|
+
width: `${pct}%`,
|
|
11630
|
+
backgroundColor: bar.color
|
|
11631
|
+
}
|
|
11632
|
+
},
|
|
11633
|
+
bIdx
|
|
11634
|
+
);
|
|
11635
|
+
}) }),
|
|
11636
|
+
showValue && rawVals.length === 1 && /* @__PURE__ */ jsx90("span", { className: "stn-chart-bar__row-val", children: formatter(rawVals[0].value) }),
|
|
11637
|
+
showTooltip && isHovered && /* @__PURE__ */ jsxs65(
|
|
11638
|
+
"div",
|
|
11639
|
+
{
|
|
11640
|
+
className: "stn-chart-tooltip",
|
|
11641
|
+
style: {
|
|
11642
|
+
left: "50%",
|
|
11643
|
+
top: isFirstRow ? "100%" : "0px",
|
|
11644
|
+
transform: isFirstRow ? "translate(-50%, 8px)" : "translate(-50%, -100%)",
|
|
11645
|
+
marginTop: isFirstRow ? "0px" : "-8px"
|
|
11646
|
+
},
|
|
11647
|
+
role: "tooltip",
|
|
11648
|
+
children: [
|
|
11649
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-tooltip__header", children: item.label }),
|
|
11650
|
+
rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs65("div", { className: "stn-chart-tooltip__row", children: [
|
|
11651
|
+
/* @__PURE__ */ jsxs65("div", { className: "stn-chart-tooltip__group", children: [
|
|
11652
|
+
/* @__PURE__ */ jsx90(
|
|
11653
|
+
"span",
|
|
11654
|
+
{
|
|
11655
|
+
className: "stn-chart-tooltip__dot",
|
|
11656
|
+
style: { backgroundColor: bar.color }
|
|
11657
|
+
}
|
|
11658
|
+
),
|
|
11659
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-tooltip__label", children: bar.label })
|
|
11660
|
+
] }),
|
|
11661
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
|
|
11662
|
+
] }, bIdx))
|
|
11663
|
+
]
|
|
11664
|
+
}
|
|
11665
|
+
)
|
|
11666
|
+
]
|
|
11667
|
+
},
|
|
11668
|
+
item.id ?? idx
|
|
11669
|
+
);
|
|
11670
|
+
}) })
|
|
11671
|
+
] })
|
|
11672
|
+
) : (
|
|
11673
|
+
/* ==================== 세로 막대 (Vertical) ==================== */
|
|
11674
|
+
/* @__PURE__ */ jsxs65(Fragment13, { children: [
|
|
11675
|
+
showYAxis && /* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__grid", "aria-hidden": "true", children: gridRows.map((row, rIdx) => /* @__PURE__ */ jsxs65("div", { className: "stn-chart-bar__grid-row", children: [
|
|
11676
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-bar__axis-label", children: row.label }),
|
|
11677
|
+
/* @__PURE__ */ jsx90(
|
|
11678
|
+
"div",
|
|
11679
|
+
{
|
|
11680
|
+
className: cn(
|
|
11681
|
+
"stn-chart-bar__grid-line",
|
|
11682
|
+
row.isZero && "stn-chart-bar__grid-line--zero"
|
|
11683
|
+
)
|
|
11684
|
+
}
|
|
11685
|
+
)
|
|
11686
|
+
] }, rIdx)) }),
|
|
11687
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__columns", role: "list", children: data.map((item, idx) => {
|
|
11688
|
+
const active = isHighlighted(idx, item);
|
|
11689
|
+
const isHovered = hoveredIndex === idx;
|
|
11690
|
+
const rawVals = item.values.map((v, vIdx) => {
|
|
11691
|
+
const colorIndex = colorBy === "category" ? idx : vIdx;
|
|
11692
|
+
if (typeof v === "number") {
|
|
11693
|
+
return {
|
|
11694
|
+
value: v,
|
|
11695
|
+
color: resolveChartColor(void 0, colorIndex),
|
|
11696
|
+
label: legend?.[colorIndex]?.label || (colorBy === "category" ? item.label : `Series ${vIdx + 1}`)
|
|
11697
|
+
};
|
|
11698
|
+
}
|
|
11699
|
+
return {
|
|
11700
|
+
value: v.value,
|
|
11701
|
+
color: resolveChartColor(v.color, colorIndex),
|
|
11702
|
+
label: v.label || legend?.[colorIndex]?.label || (colorBy === "category" ? item.label : `Series ${vIdx + 1}`)
|
|
11703
|
+
};
|
|
11704
|
+
});
|
|
11705
|
+
const summaryValues = rawVals.map((v) => v.value).join(", ");
|
|
11706
|
+
return /* @__PURE__ */ jsxs65(
|
|
11707
|
+
"button",
|
|
11708
|
+
{
|
|
11709
|
+
type: "button",
|
|
11710
|
+
className: cn(
|
|
11711
|
+
"stn-chart-bar__col",
|
|
11712
|
+
compact && "stn-chart-bar__col--compact",
|
|
11713
|
+
active && "is-active"
|
|
11714
|
+
),
|
|
11715
|
+
onClick: () => handleColClick(item, idx),
|
|
11716
|
+
onMouseEnter: () => setHoveredIndex(idx),
|
|
11717
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
11718
|
+
onFocus: () => setHoveredIndex(idx),
|
|
11719
|
+
onBlur: () => setHoveredIndex(null),
|
|
11720
|
+
"aria-label": `${item.label} (${summaryValues})`,
|
|
11721
|
+
role: "listitem",
|
|
11722
|
+
children: [
|
|
11723
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__highlight" }),
|
|
11724
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-bar__bars-wrap", children: rawVals.map((bar, bIdx) => {
|
|
11725
|
+
const pct = Math.max(0, Math.min(100, bar.value / max * 100));
|
|
11726
|
+
return /* @__PURE__ */ jsx90(
|
|
11727
|
+
"div",
|
|
11728
|
+
{
|
|
11729
|
+
className: "stn-chart-bar__item",
|
|
11730
|
+
style: {
|
|
11731
|
+
height: `${pct}%`,
|
|
11732
|
+
backgroundColor: bar.color
|
|
11733
|
+
}
|
|
11734
|
+
},
|
|
11735
|
+
bIdx
|
|
11736
|
+
);
|
|
11737
|
+
}) }),
|
|
11738
|
+
showXAxis && /* @__PURE__ */ jsx90("span", { className: "stn-chart-bar__label", children: item.label }),
|
|
11739
|
+
showTooltip && isHovered && /* @__PURE__ */ jsxs65(
|
|
11740
|
+
"div",
|
|
11741
|
+
{
|
|
11742
|
+
className: cn(
|
|
11743
|
+
"stn-chart-tooltip",
|
|
11744
|
+
idx >= data.length - 2 && data.length > 3 && "stn-chart-tooltip--flip-x",
|
|
11745
|
+
idx === 0 && "stn-chart-tooltip--align-left"
|
|
11746
|
+
),
|
|
11747
|
+
style: {
|
|
11748
|
+
left: "50%",
|
|
11749
|
+
top: "0px"
|
|
11750
|
+
},
|
|
11751
|
+
role: "tooltip",
|
|
11752
|
+
children: [
|
|
11753
|
+
/* @__PURE__ */ jsx90("div", { className: "stn-chart-tooltip__header", children: item.label }),
|
|
11754
|
+
rawVals.map((bar, bIdx) => /* @__PURE__ */ jsxs65("div", { className: "stn-chart-tooltip__row", children: [
|
|
11755
|
+
/* @__PURE__ */ jsxs65("div", { className: "stn-chart-tooltip__group", children: [
|
|
11756
|
+
/* @__PURE__ */ jsx90(
|
|
11757
|
+
"span",
|
|
11758
|
+
{
|
|
11759
|
+
className: "stn-chart-tooltip__dot",
|
|
11760
|
+
style: { backgroundColor: bar.color }
|
|
11761
|
+
}
|
|
11762
|
+
),
|
|
11763
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-tooltip__label", children: bar.label })
|
|
11764
|
+
] }),
|
|
11765
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-tooltip__value", children: formatter(bar.value) })
|
|
11766
|
+
] }, bIdx))
|
|
11767
|
+
]
|
|
11768
|
+
}
|
|
11769
|
+
)
|
|
11770
|
+
]
|
|
11771
|
+
},
|
|
11772
|
+
item.id ?? idx
|
|
11773
|
+
);
|
|
11774
|
+
}) })
|
|
11775
|
+
] })
|
|
11776
|
+
) }),
|
|
11777
|
+
legend && legend.length > 0 && /* @__PURE__ */ jsx90("div", { className: "stn-chart-legend-pill", "aria-label": "\uCC28\uD2B8 \uBC94\uB840", children: legend.map((leg, lIdx) => /* @__PURE__ */ jsxs65("div", { className: "stn-chart-legend-pill__item", children: [
|
|
11778
|
+
/* @__PURE__ */ jsx90(
|
|
11779
|
+
"span",
|
|
11780
|
+
{
|
|
11781
|
+
className: "stn-chart-legend-pill__bar",
|
|
11782
|
+
style: { backgroundColor: resolveChartColor(leg.color, lIdx) }
|
|
11783
|
+
}
|
|
11784
|
+
),
|
|
11785
|
+
/* @__PURE__ */ jsx90("span", { className: "stn-chart-legend-pill__label", children: leg.label })
|
|
11786
|
+
] }, lIdx)) })
|
|
11787
|
+
]
|
|
11788
|
+
}
|
|
11789
|
+
);
|
|
11790
|
+
}
|
|
11791
|
+
|
|
11792
|
+
// src/components/StnPieChart.tsx
|
|
11793
|
+
import {
|
|
11794
|
+
useId as useId18,
|
|
11795
|
+
useState as useState25
|
|
11796
|
+
} from "react";
|
|
11797
|
+
import { Fragment as Fragment14, jsx as jsx91, jsxs as jsxs66 } from "react/jsx-runtime";
|
|
11798
|
+
var DEFAULT_PIE_COLORS = STN_CHART_COLORS;
|
|
11799
|
+
var R = 38;
|
|
11800
|
+
var CIRCUMFERENCE = 2 * Math.PI * R;
|
|
11801
|
+
var STROKE_WIDTH_MAP = {
|
|
11802
|
+
sm: 3,
|
|
11803
|
+
md: 5,
|
|
11804
|
+
lg: 8
|
|
11805
|
+
};
|
|
11806
|
+
function StnPieChart({
|
|
11807
|
+
data = [],
|
|
11808
|
+
loading = false,
|
|
11809
|
+
emptyText,
|
|
11810
|
+
variant = "gauge",
|
|
11811
|
+
strokeWidth: customStrokeWidth,
|
|
11812
|
+
thickness,
|
|
11813
|
+
showTooltip = true,
|
|
11814
|
+
centerLabel,
|
|
11815
|
+
centerSubLabel,
|
|
11816
|
+
showLegend = true,
|
|
11817
|
+
size = 90,
|
|
11818
|
+
decimals,
|
|
11819
|
+
format,
|
|
11820
|
+
className,
|
|
11821
|
+
style,
|
|
11822
|
+
...rest
|
|
11823
|
+
}) {
|
|
11824
|
+
const filterId = useId18().replace(/:/g, "");
|
|
11825
|
+
const [hoveredIndex, setHoveredIndex] = useState25(null);
|
|
11826
|
+
const hasData = Boolean(data && data.length > 0);
|
|
11827
|
+
if (loading || !hasData) {
|
|
11828
|
+
return /* @__PURE__ */ jsx91(
|
|
11829
|
+
"div",
|
|
11830
|
+
{
|
|
11831
|
+
className: cn("stn-chart-gauge", className),
|
|
11832
|
+
style: { ...style, position: "relative", minWidth: size, minHeight: size },
|
|
11833
|
+
...rest,
|
|
11834
|
+
children: renderChartState(loading, hasData, emptyText)
|
|
11835
|
+
}
|
|
11836
|
+
);
|
|
11837
|
+
}
|
|
11838
|
+
const strokeInput = customStrokeWidth ?? thickness;
|
|
11839
|
+
const resolvedStrokeSize = typeof strokeInput === "string" && strokeInput in STROKE_WIDTH_MAP ? strokeInput : void 0;
|
|
11840
|
+
const baseStrokeWidth = typeof strokeInput === "number" ? strokeInput : STROKE_WIDTH_MAP[resolvedStrokeSize ?? "md"] ?? 5;
|
|
11841
|
+
const hoverStrokeWidth = baseStrokeWidth + (baseStrokeWidth >= 8 ? 2.5 : 2);
|
|
11842
|
+
const total = data.reduce((acc, cur) => acc + (cur.value || 0), 0);
|
|
11843
|
+
const resolvedTotal = total > 0 ? total : 1;
|
|
11844
|
+
let accumulatedOffset = 0;
|
|
11845
|
+
const segments = data.map((item, idx) => {
|
|
11846
|
+
const ratio = Math.max(0, item.value / resolvedTotal);
|
|
11847
|
+
const segmentLength = ratio * CIRCUMFERENCE;
|
|
11848
|
+
const offset = -accumulatedOffset;
|
|
11849
|
+
accumulatedOffset += segmentLength;
|
|
11850
|
+
const color = resolveChartColor(item.color, idx);
|
|
11851
|
+
return {
|
|
11852
|
+
...item,
|
|
11853
|
+
color,
|
|
11854
|
+
segmentLength: Number(segmentLength.toFixed(2)),
|
|
11855
|
+
offset: Number(offset.toFixed(2)),
|
|
11856
|
+
ratio
|
|
11857
|
+
};
|
|
11858
|
+
});
|
|
11859
|
+
const containerStyle = {
|
|
11860
|
+
...style,
|
|
11861
|
+
position: "relative"
|
|
11862
|
+
};
|
|
11863
|
+
const activeSeg = hoveredIndex !== null ? segments[hoveredIndex] : null;
|
|
11864
|
+
return /* @__PURE__ */ jsxs66(
|
|
11865
|
+
"div",
|
|
11866
|
+
{
|
|
11867
|
+
className: cn(
|
|
11868
|
+
"stn-chart-gauge",
|
|
11869
|
+
resolvedStrokeSize && `stn-chart-gauge--${resolvedStrokeSize}`,
|
|
11870
|
+
!showTooltip && "stn-chart--no-tooltip",
|
|
11871
|
+
className
|
|
11872
|
+
),
|
|
11873
|
+
style: containerStyle,
|
|
11874
|
+
...rest,
|
|
11875
|
+
children: [
|
|
11876
|
+
/* @__PURE__ */ jsxs66(
|
|
11877
|
+
"svg",
|
|
11878
|
+
{
|
|
11879
|
+
className: "stn-chart-gauge__svg",
|
|
11880
|
+
viewBox: "0 0 90 90",
|
|
11881
|
+
style: { width: size, height: size },
|
|
11882
|
+
"aria-hidden": "true",
|
|
11883
|
+
children: [
|
|
11884
|
+
/* @__PURE__ */ jsx91("defs", { children: /* @__PURE__ */ jsx91("filter", { id: `gauge_shadow_${filterId}`, x: "-30%", y: "-30%", width: "160%", height: "160%", children: /* @__PURE__ */ jsx91("feDropShadow", { dx: "0", dy: "2", stdDeviation: "3", floodColor: "var(--stn-opacity-black-30)" }) }) }),
|
|
11885
|
+
/* @__PURE__ */ jsx91(
|
|
11886
|
+
"circle",
|
|
11887
|
+
{
|
|
11888
|
+
className: "stn-chart-gauge__track",
|
|
11889
|
+
cx: "45",
|
|
11890
|
+
cy: "45",
|
|
11891
|
+
r: R,
|
|
11892
|
+
style: resolvedStrokeSize ? void 0 : { strokeWidth: baseStrokeWidth }
|
|
11893
|
+
}
|
|
11894
|
+
),
|
|
11895
|
+
segments.map((seg, sIdx) => {
|
|
11896
|
+
const isHovered = hoveredIndex === sIdx;
|
|
11897
|
+
return /* @__PURE__ */ jsx91(
|
|
11898
|
+
"circle",
|
|
11899
|
+
{
|
|
11900
|
+
className: "stn-chart-gauge__seg",
|
|
11901
|
+
cx: "45",
|
|
11902
|
+
cy: "45",
|
|
11903
|
+
r: R,
|
|
11904
|
+
stroke: seg.color,
|
|
11905
|
+
strokeWidth: isHovered ? hoverStrokeWidth : resolvedStrokeSize ? void 0 : baseStrokeWidth,
|
|
11906
|
+
strokeDasharray: `${seg.segmentLength} ${CIRCUMFERENCE.toFixed(2)}`,
|
|
11907
|
+
strokeDashoffset: seg.offset,
|
|
11908
|
+
onMouseEnter: () => setHoveredIndex(sIdx),
|
|
11909
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
11910
|
+
onFocus: () => setHoveredIndex(sIdx),
|
|
11911
|
+
onBlur: () => setHoveredIndex(null),
|
|
11912
|
+
tabIndex: 0,
|
|
11913
|
+
role: "graphics-symbol",
|
|
11914
|
+
"aria-label": `${seg.label}: ${seg.value}`,
|
|
11915
|
+
style: {
|
|
11916
|
+
cursor: showTooltip ? "pointer" : "default",
|
|
11917
|
+
transition: "stroke-width 0.15s ease",
|
|
11918
|
+
outline: "none"
|
|
11919
|
+
}
|
|
11920
|
+
},
|
|
11921
|
+
seg.id ?? sIdx
|
|
11922
|
+
);
|
|
11923
|
+
}),
|
|
11924
|
+
variant === "gauge" ? /* @__PURE__ */ jsxs66(Fragment14, { children: [
|
|
11925
|
+
/* @__PURE__ */ jsx91("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "31" }),
|
|
11926
|
+
/* @__PURE__ */ jsx91(
|
|
11927
|
+
"circle",
|
|
11928
|
+
{
|
|
11929
|
+
className: "stn-chart-gauge__center-inner",
|
|
11930
|
+
cx: "45",
|
|
11931
|
+
cy: "45",
|
|
11932
|
+
r: "25",
|
|
11933
|
+
filter: `url(#gauge_shadow_${filterId})`
|
|
11934
|
+
}
|
|
11935
|
+
),
|
|
11936
|
+
centerLabel && /* @__PURE__ */ jsx91("text", { className: "stn-chart-gauge__center-text", x: "45", y: "49", children: centerLabel })
|
|
11937
|
+
] }) : /* @__PURE__ */ jsxs66(Fragment14, { children: [
|
|
11938
|
+
/* @__PURE__ */ jsx91("circle", { className: "stn-chart-gauge__center-outer", cx: "45", cy: "45", r: "30" }),
|
|
11939
|
+
centerLabel && /* @__PURE__ */ jsx91("text", { className: "stn-chart-gauge__center-text", x: "45", y: centerSubLabel ? "46" : "49", children: centerLabel }),
|
|
11940
|
+
centerSubLabel && /* @__PURE__ */ jsx91(
|
|
11941
|
+
"text",
|
|
11942
|
+
{
|
|
11943
|
+
x: "45",
|
|
11944
|
+
y: "58",
|
|
11945
|
+
textAnchor: "middle",
|
|
11946
|
+
fill: "var(--stn-text-secondary)",
|
|
11947
|
+
fontSize: "8",
|
|
11948
|
+
fontFamily: "var(--stn-font-body)",
|
|
11949
|
+
children: centerSubLabel
|
|
11950
|
+
}
|
|
11951
|
+
)
|
|
11952
|
+
] })
|
|
11953
|
+
]
|
|
11954
|
+
}
|
|
11955
|
+
),
|
|
11956
|
+
showTooltip && activeSeg && /* @__PURE__ */ jsxs66(
|
|
11957
|
+
"div",
|
|
11958
|
+
{
|
|
11959
|
+
className: "stn-chart-tooltip",
|
|
11960
|
+
style: {
|
|
11961
|
+
left: "50%",
|
|
11962
|
+
top: "0px"
|
|
11963
|
+
},
|
|
11964
|
+
role: "tooltip",
|
|
11965
|
+
children: [
|
|
11966
|
+
/* @__PURE__ */ jsx91("div", { className: "stn-chart-tooltip__header", children: activeSeg.label }),
|
|
11967
|
+
/* @__PURE__ */ jsxs66("div", { className: "stn-chart-tooltip__row", children: [
|
|
11968
|
+
/* @__PURE__ */ jsxs66("div", { className: "stn-chart-tooltip__group", children: [
|
|
11969
|
+
/* @__PURE__ */ jsx91("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: activeSeg.color } }),
|
|
11970
|
+
/* @__PURE__ */ jsx91("span", { className: "stn-chart-tooltip__label", children: "\uC218\uCE58" })
|
|
11971
|
+
] }),
|
|
11972
|
+
/* @__PURE__ */ jsx91("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)}%)` })
|
|
11973
|
+
] })
|
|
11974
|
+
]
|
|
11975
|
+
}
|
|
11976
|
+
),
|
|
11977
|
+
showLegend && segments.length > 0 && /* @__PURE__ */ jsx91("div", { className: "stn-chart-gauge-legend", role: "list", children: segments.map((seg, lIdx) => /* @__PURE__ */ jsxs66(
|
|
11978
|
+
"div",
|
|
11979
|
+
{
|
|
11980
|
+
className: "stn-chart-gauge-legend__item",
|
|
11981
|
+
onMouseEnter: () => setHoveredIndex(lIdx),
|
|
11982
|
+
onMouseLeave: () => setHoveredIndex(null),
|
|
11983
|
+
onFocus: () => setHoveredIndex(lIdx),
|
|
11984
|
+
onBlur: () => setHoveredIndex(null),
|
|
11985
|
+
tabIndex: 0,
|
|
11986
|
+
style: { cursor: "pointer", outline: "none" },
|
|
11987
|
+
role: "listitem",
|
|
11988
|
+
children: [
|
|
11989
|
+
/* @__PURE__ */ jsx91(
|
|
11990
|
+
"span",
|
|
11991
|
+
{
|
|
11992
|
+
className: "stn-chart-gauge-legend__dot",
|
|
11993
|
+
style: { backgroundColor: seg.color }
|
|
11994
|
+
}
|
|
11995
|
+
),
|
|
11996
|
+
/* @__PURE__ */ jsx91("span", { className: "stn-chart-gauge-legend__label", children: seg.label })
|
|
11997
|
+
]
|
|
11998
|
+
},
|
|
11999
|
+
seg.id ?? lIdx
|
|
12000
|
+
)) })
|
|
12001
|
+
]
|
|
12002
|
+
}
|
|
12003
|
+
);
|
|
12004
|
+
}
|
|
12005
|
+
var StnGaugeChart = StnPieChart;
|
|
12006
|
+
|
|
12007
|
+
// src/components/StnLineChart.tsx
|
|
12008
|
+
import {
|
|
12009
|
+
useId as useId19,
|
|
12010
|
+
useRef as useRef11,
|
|
12011
|
+
useState as useState26
|
|
12012
|
+
} from "react";
|
|
12013
|
+
import { jsx as jsx92, jsxs as jsxs67 } from "react/jsx-runtime";
|
|
12014
|
+
var DEFAULT_LINE_COLORS = STN_CHART_COLORS;
|
|
12015
|
+
var VIEW_W = 300;
|
|
12016
|
+
var VIEW_H = 84;
|
|
12017
|
+
var Y_TOP = 8;
|
|
12018
|
+
var Y_BOTTOM = 78;
|
|
12019
|
+
var STROKE_WIDTH_MAP2 = {
|
|
12020
|
+
sm: 1.5,
|
|
12021
|
+
md: 2,
|
|
12022
|
+
lg: 3
|
|
12023
|
+
};
|
|
12024
|
+
var DOT_RADIUS_MAP = {
|
|
12025
|
+
sm: 2,
|
|
12026
|
+
md: 2.5,
|
|
12027
|
+
lg: 3.5
|
|
12028
|
+
};
|
|
12029
|
+
function StnLineChart({
|
|
12030
|
+
data = [],
|
|
12031
|
+
loading = false,
|
|
12032
|
+
emptyText,
|
|
12033
|
+
variant = "line",
|
|
12034
|
+
size = "md",
|
|
12035
|
+
showDots,
|
|
12036
|
+
showPoints,
|
|
12037
|
+
dots,
|
|
12038
|
+
showXAxis = true,
|
|
12039
|
+
showYAxis = true,
|
|
12040
|
+
showTooltip = true,
|
|
12041
|
+
xAxisLabels = [],
|
|
12042
|
+
yAxis = {},
|
|
12043
|
+
legend,
|
|
12044
|
+
height,
|
|
12045
|
+
decimals,
|
|
12046
|
+
format,
|
|
12047
|
+
className,
|
|
12048
|
+
style,
|
|
12049
|
+
...rest
|
|
12050
|
+
}) {
|
|
12051
|
+
const chartId = useId19().replace(/:/g, "");
|
|
12052
|
+
const svgRef = useRef11(null);
|
|
12053
|
+
const [hoverIndex, setHoverIndex] = useState26(null);
|
|
12054
|
+
const valueFormatter = format ?? ((v) => formatChartValue(v, decimals));
|
|
12055
|
+
const hasDots = Boolean(showDots ?? showPoints ?? dots ?? false);
|
|
12056
|
+
const dotRadius = DOT_RADIUS_MAP[size] || 3;
|
|
12057
|
+
const resolvedHeight = height ?? (variant === "sparkline" ? 36 : 180);
|
|
12058
|
+
const seriesList = Array.isArray(data) && data.length > 0 && typeof data[0] === "number" ? [{ data, color: resolveChartColor(void 0, 0) }] : data.map((s, idx) => ({
|
|
12059
|
+
...s,
|
|
12060
|
+
color: resolveChartColor(s.color, idx)
|
|
12061
|
+
}));
|
|
12062
|
+
const hasData = seriesList.length > 0 && seriesList.some((s) => Array.isArray(s.data) && s.data.length > 0);
|
|
12063
|
+
if (loading || !hasData) {
|
|
12064
|
+
return /* @__PURE__ */ jsx92(
|
|
12065
|
+
"div",
|
|
12066
|
+
{
|
|
12067
|
+
className: cn("stn-chart-line", `stn-chart-line--${size}`, className),
|
|
12068
|
+
style: { ...style, height: resolvedHeight, position: "relative" },
|
|
12069
|
+
...rest,
|
|
12070
|
+
children: renderChartState(loading, hasData, emptyText)
|
|
12071
|
+
}
|
|
12072
|
+
);
|
|
12073
|
+
}
|
|
12074
|
+
const allNumbers = seriesList.flatMap((s) => s.data);
|
|
12075
|
+
const computedMax = allNumbers.length > 0 ? Math.max(...allNumbers) : 100;
|
|
12076
|
+
const computedMin = allNumbers.length > 0 ? Math.min(...allNumbers) : 0;
|
|
12077
|
+
const max = yAxis.max ?? (computedMax > 0 ? computedMax : 100);
|
|
12078
|
+
const min = yAxis.min ?? (computedMin < 0 ? computedMin : 0);
|
|
12079
|
+
const range = max - min || 1;
|
|
12080
|
+
const xStart = showYAxis ? 38 : 8;
|
|
12081
|
+
const xEnd = 295;
|
|
12082
|
+
const xDist = xEnd - xStart;
|
|
12083
|
+
const yDist = Y_BOTTOM - Y_TOP;
|
|
12084
|
+
const buildPathString = (points) => {
|
|
12085
|
+
if (!points || points.length === 0) return "";
|
|
12086
|
+
const count = points.length;
|
|
12087
|
+
return points.map((val, idx) => {
|
|
12088
|
+
const x = xStart + idx / Math.max(1, count - 1) * xDist;
|
|
12089
|
+
const y = Y_BOTTOM - (val - min) / range * yDist;
|
|
12090
|
+
return `${idx === 0 ? "M" : "L"} ${x.toFixed(1)},${y.toFixed(1)}`;
|
|
12091
|
+
}).join(" ");
|
|
12092
|
+
};
|
|
12093
|
+
const buildAreaPathString = (points) => {
|
|
12094
|
+
const linePath = buildPathString(points);
|
|
12095
|
+
if (!linePath) return "";
|
|
12096
|
+
return `${linePath} L ${xEnd},${Y_BOTTOM} L ${xStart},${Y_BOTTOM} Z`;
|
|
12097
|
+
};
|
|
12098
|
+
const gridYPositions = [6, 16, 26, 36, 46, 56, 66, 78];
|
|
12099
|
+
const strokeWidth = STROKE_WIDTH_MAP2[size] || 2;
|
|
12100
|
+
const containerStyle = {
|
|
12101
|
+
...style,
|
|
12102
|
+
height: resolvedHeight
|
|
12103
|
+
};
|
|
12104
|
+
const resolvedLegend = legend ?? (seriesList.length > 1 && seriesList.some((s) => s.label) ? seriesList.map((s, idx) => ({
|
|
12105
|
+
label: s.label || `Line ${idx + 1}`,
|
|
12106
|
+
color: resolveChartColor(s.color, idx)
|
|
12107
|
+
})) : []);
|
|
12108
|
+
const pointCount = seriesList[0]?.data.length || 0;
|
|
12109
|
+
const handleMouseMove = (e) => {
|
|
12110
|
+
if (!showTooltip || pointCount <= 0 || !svgRef.current) return;
|
|
12111
|
+
const rect = svgRef.current.getBoundingClientRect();
|
|
12112
|
+
if (rect.width <= 0) return;
|
|
12113
|
+
const svgX = (e.clientX - rect.left) / rect.width * VIEW_W;
|
|
12114
|
+
const clampedX = Math.max(xStart, Math.min(xEnd, svgX));
|
|
12115
|
+
const ratio = (clampedX - xStart) / xDist;
|
|
12116
|
+
const idx = Math.round(ratio * (pointCount - 1));
|
|
12117
|
+
setHoverIndex(Math.max(0, Math.min(pointCount - 1, idx)));
|
|
12118
|
+
};
|
|
12119
|
+
const handleMouseLeave = () => {
|
|
12120
|
+
setHoverIndex(null);
|
|
12121
|
+
};
|
|
12122
|
+
if (variant === "sparkline") {
|
|
12123
|
+
const firstSeries = seriesList[0] || { data: [] };
|
|
12124
|
+
const points = firstSeries.data;
|
|
12125
|
+
const count = points.length;
|
|
12126
|
+
const sW = 126;
|
|
12127
|
+
const sH = 32;
|
|
12128
|
+
const strokeColor = firstSeries.color || DEFAULT_LINE_COLORS[0];
|
|
12129
|
+
const polyPoints = points.map((v, i) => {
|
|
12130
|
+
const x = i / Math.max(1, count - 1) * sW;
|
|
12131
|
+
const y = sH - 4 - (v - min) / range * (sH - 8);
|
|
12132
|
+
return `${x.toFixed(1)},${y.toFixed(1)}`;
|
|
12133
|
+
}).join(" ");
|
|
12134
|
+
const areaPoints = `0,${sH} ${polyPoints} ${sW},${sH}`;
|
|
12135
|
+
const lastPoint = points[points.length - 1] ?? 0;
|
|
12136
|
+
const lastX = sW - 2;
|
|
12137
|
+
const lastY = sH - 4 - (lastPoint - min) / range * (sH - 8);
|
|
12138
|
+
return /* @__PURE__ */ jsx92(
|
|
12139
|
+
"div",
|
|
12140
|
+
{
|
|
12141
|
+
className: cn("stn-chart-sparkline", `stn-chart-line--${size}`, className),
|
|
12142
|
+
style: { ...containerStyle, position: "relative", overflow: "hidden" },
|
|
12143
|
+
...rest,
|
|
12144
|
+
children: /* @__PURE__ */ jsxs67(
|
|
12145
|
+
"svg",
|
|
12146
|
+
{
|
|
12147
|
+
width: "100%",
|
|
12148
|
+
height: "100%",
|
|
12149
|
+
viewBox: `0 0 ${sW} ${sH}`,
|
|
12150
|
+
style: { display: "block" },
|
|
12151
|
+
"aria-hidden": "true",
|
|
12152
|
+
children: [
|
|
12153
|
+
/* @__PURE__ */ jsx92("defs", { children: /* @__PURE__ */ jsxs67("linearGradient", { id: `spark_grad_${chartId}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
12154
|
+
/* @__PURE__ */ jsx92("stop", { offset: "0%", stopColor: strokeColor, stopOpacity: "0.45" }),
|
|
12155
|
+
/* @__PURE__ */ jsx92("stop", { offset: "100%", stopColor: strokeColor, stopOpacity: "0" })
|
|
12156
|
+
] }) }),
|
|
12157
|
+
/* @__PURE__ */ jsx92("polygon", { points: areaPoints, fill: `url(#spark_grad_${chartId})` }),
|
|
12158
|
+
/* @__PURE__ */ jsx92(
|
|
12159
|
+
"polyline",
|
|
12160
|
+
{
|
|
12161
|
+
points: polyPoints,
|
|
12162
|
+
fill: "none",
|
|
12163
|
+
stroke: strokeColor,
|
|
12164
|
+
strokeWidth,
|
|
12165
|
+
strokeLinejoin: "round",
|
|
12166
|
+
strokeLinecap: "round",
|
|
12167
|
+
vectorEffect: "non-scaling-stroke"
|
|
12168
|
+
}
|
|
12169
|
+
),
|
|
12170
|
+
/* @__PURE__ */ jsx92("circle", { cx: lastX, cy: lastY, r: "3", fill: strokeColor })
|
|
12171
|
+
]
|
|
12172
|
+
}
|
|
12173
|
+
)
|
|
12174
|
+
}
|
|
12175
|
+
);
|
|
12176
|
+
}
|
|
12177
|
+
const hoverSvgX = hoverIndex !== null && pointCount > 1 ? xStart + hoverIndex / (pointCount - 1) * xDist : null;
|
|
12178
|
+
const hoverPct = hoverSvgX !== null ? hoverSvgX / VIEW_W * 100 : 0;
|
|
12179
|
+
const isNearRight = hoverPct > 68;
|
|
12180
|
+
const isNearLeft = hoverPct < 15;
|
|
12181
|
+
return /* @__PURE__ */ jsxs67(
|
|
12182
|
+
"div",
|
|
12183
|
+
{
|
|
12184
|
+
className: cn(
|
|
12185
|
+
"stn-chart-line",
|
|
12186
|
+
`stn-chart-line--${size}`,
|
|
12187
|
+
hasDots ? "stn-chart-line--dots" : "stn-chart-line--no-dots",
|
|
12188
|
+
!showXAxis && "stn-chart-line--no-x-axis",
|
|
12189
|
+
!showYAxis && "stn-chart-line--no-y-axis",
|
|
12190
|
+
!showTooltip && "stn-chart--no-tooltip",
|
|
12191
|
+
className
|
|
12192
|
+
),
|
|
12193
|
+
style: containerStyle,
|
|
12194
|
+
...rest,
|
|
12195
|
+
children: [
|
|
12196
|
+
/* @__PURE__ */ jsxs67("div", { className: "stn-chart-line__body", children: [
|
|
12197
|
+
showYAxis && /* @__PURE__ */ jsx92("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__ */ jsx92("span", { children: lbl }, idx)) }),
|
|
12198
|
+
/* @__PURE__ */ jsxs67("div", { className: "stn-chart-line__plot-area", style: { position: "relative", width: "100%", flex: "1 1 0%", minHeight: 0 }, children: [
|
|
12199
|
+
/* @__PURE__ */ jsxs67(
|
|
12200
|
+
"svg",
|
|
12201
|
+
{
|
|
12202
|
+
ref: svgRef,
|
|
12203
|
+
className: "stn-chart-line__svg",
|
|
12204
|
+
viewBox: `0 0 ${VIEW_W} ${VIEW_H}`,
|
|
12205
|
+
preserveAspectRatio: "none",
|
|
12206
|
+
onMouseMove: handleMouseMove,
|
|
12207
|
+
onMouseLeave: handleMouseLeave,
|
|
12208
|
+
"aria-hidden": "true",
|
|
12209
|
+
children: [
|
|
12210
|
+
/* @__PURE__ */ jsx92("defs", { children: variant === "area" && seriesList.map((series, sIdx) => {
|
|
12211
|
+
const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
|
|
12212
|
+
return /* @__PURE__ */ jsxs67(
|
|
12213
|
+
"linearGradient",
|
|
12214
|
+
{
|
|
12215
|
+
id: `line_area_grad_${chartId}_${sIdx}`,
|
|
12216
|
+
x1: "0",
|
|
12217
|
+
y1: "0",
|
|
12218
|
+
x2: "0",
|
|
12219
|
+
y2: "1",
|
|
12220
|
+
children: [
|
|
12221
|
+
/* @__PURE__ */ jsx92("stop", { offset: "0%", stopColor: color, stopOpacity: "0.35" }),
|
|
12222
|
+
/* @__PURE__ */ jsx92("stop", { offset: "100%", stopColor: color, stopOpacity: "0" })
|
|
12223
|
+
]
|
|
12224
|
+
},
|
|
12225
|
+
`grad-${sIdx}`
|
|
12226
|
+
);
|
|
12227
|
+
}) }),
|
|
12228
|
+
gridYPositions.map((yPos, idx) => {
|
|
12229
|
+
const isZero = yPos === Y_BOTTOM || idx === 1;
|
|
12230
|
+
return /* @__PURE__ */ jsx92(
|
|
12231
|
+
"line",
|
|
12232
|
+
{
|
|
12233
|
+
x1: xStart,
|
|
12234
|
+
y1: yPos,
|
|
12235
|
+
x2: xEnd,
|
|
12236
|
+
y2: yPos,
|
|
12237
|
+
stroke: isZero ? "var(--stn-chart-zero-line)" : "var(--stn-chart-grid-line)",
|
|
12238
|
+
strokeDasharray: isZero ? void 0 : "2 2"
|
|
12239
|
+
},
|
|
12240
|
+
idx
|
|
12241
|
+
);
|
|
12242
|
+
}),
|
|
12243
|
+
variant === "area" && seriesList.map((series, sIdx) => /* @__PURE__ */ jsx92(
|
|
12244
|
+
"path",
|
|
12245
|
+
{
|
|
12246
|
+
d: buildAreaPathString(series.data),
|
|
12247
|
+
fill: `url(#line_area_grad_${chartId}_${sIdx})`
|
|
12248
|
+
},
|
|
12249
|
+
`area-${series.id ?? sIdx}`
|
|
12250
|
+
)),
|
|
12251
|
+
seriesList.map((series, sIdx) => {
|
|
12252
|
+
const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
|
|
12253
|
+
return /* @__PURE__ */ jsx92(
|
|
12254
|
+
"path",
|
|
12255
|
+
{
|
|
12256
|
+
className: "stn-chart-line__path",
|
|
12257
|
+
d: buildPathString(series.data),
|
|
12258
|
+
style: { stroke: color },
|
|
12259
|
+
vectorEffect: "non-scaling-stroke"
|
|
12260
|
+
},
|
|
12261
|
+
`line-${series.id ?? sIdx}`
|
|
12262
|
+
);
|
|
12263
|
+
}),
|
|
12264
|
+
showTooltip && hoverSvgX !== null && hoverIndex !== null && /* @__PURE__ */ jsx92("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx92(
|
|
12265
|
+
"line",
|
|
12266
|
+
{
|
|
12267
|
+
x1: hoverSvgX,
|
|
12268
|
+
y1: Y_TOP,
|
|
12269
|
+
x2: hoverSvgX,
|
|
12270
|
+
y2: Y_BOTTOM,
|
|
12271
|
+
stroke: "var(--stn-chart-highlight-border)",
|
|
12272
|
+
strokeDasharray: "2 2",
|
|
12273
|
+
strokeWidth: "1",
|
|
12274
|
+
vectorEffect: "non-scaling-stroke"
|
|
12275
|
+
}
|
|
12276
|
+
) }),
|
|
12277
|
+
/* @__PURE__ */ jsx92(
|
|
12278
|
+
"rect",
|
|
12279
|
+
{
|
|
12280
|
+
x: "0",
|
|
12281
|
+
y: "0",
|
|
12282
|
+
width: VIEW_W,
|
|
12283
|
+
height: VIEW_H,
|
|
12284
|
+
fill: "transparent",
|
|
12285
|
+
style: { cursor: showTooltip ? "crosshair" : "default" }
|
|
12286
|
+
}
|
|
12287
|
+
)
|
|
12288
|
+
]
|
|
12289
|
+
}
|
|
12290
|
+
),
|
|
12291
|
+
hasDots && /* @__PURE__ */ jsx92("div", { className: "stn-chart-line__dots", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none" }, children: seriesList.map((series, sIdx) => {
|
|
12292
|
+
const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
|
|
12293
|
+
const count = series.data.length;
|
|
12294
|
+
return series.data.map((val, pIdx) => {
|
|
12295
|
+
const xPct = (xStart + pIdx / Math.max(1, count - 1) * xDist) / VIEW_W * 100;
|
|
12296
|
+
const yPct = (Y_BOTTOM - (val - min) / range * yDist) / VIEW_H * 100;
|
|
12297
|
+
const isHoveredPoint = hoverIndex === pIdx;
|
|
12298
|
+
const r = isHoveredPoint ? dotRadius + 1.2 : dotRadius;
|
|
12299
|
+
return /* @__PURE__ */ jsx92(
|
|
12300
|
+
"span",
|
|
12301
|
+
{
|
|
12302
|
+
className: cn("stn-chart-line__dot", isHoveredPoint && "is-active"),
|
|
12303
|
+
style: {
|
|
12304
|
+
position: "absolute",
|
|
12305
|
+
left: `${xPct}%`,
|
|
12306
|
+
top: `${yPct}%`,
|
|
12307
|
+
width: `${r * 2}px`,
|
|
12308
|
+
height: `${r * 2}px`,
|
|
12309
|
+
borderRadius: "var(--stn-radius-full)",
|
|
12310
|
+
backgroundColor: color,
|
|
12311
|
+
transform: "translate(-50%, -50%)",
|
|
12312
|
+
boxShadow: isHoveredPoint ? "0 0 0 2px var(--stn-surface-primary)" : void 0,
|
|
12313
|
+
display: "inline-block"
|
|
12314
|
+
}
|
|
12315
|
+
},
|
|
12316
|
+
`dot-${sIdx}-${pIdx}`
|
|
12317
|
+
);
|
|
12318
|
+
});
|
|
12319
|
+
}) })
|
|
12320
|
+
] }),
|
|
12321
|
+
showXAxis && xAxisLabels.length > 0 && /* @__PURE__ */ jsx92("div", { className: "stn-chart-line__axis-x", "aria-hidden": "true", children: xAxisLabels.map((lbl, idx) => /* @__PURE__ */ jsx92("span", { children: lbl }, idx)) }),
|
|
12322
|
+
showTooltip && hoverIndex !== null && hoverSvgX !== null && /* @__PURE__ */ jsxs67(
|
|
12323
|
+
"div",
|
|
12324
|
+
{
|
|
12325
|
+
className: cn(
|
|
12326
|
+
"stn-chart-tooltip",
|
|
12327
|
+
isNearRight && "stn-chart-tooltip--flip-x",
|
|
12328
|
+
isNearLeft && "stn-chart-tooltip--align-left"
|
|
12329
|
+
),
|
|
12330
|
+
style: {
|
|
12331
|
+
left: `${hoverPct}%`,
|
|
12332
|
+
top: "10px"
|
|
12333
|
+
},
|
|
12334
|
+
role: "tooltip",
|
|
12335
|
+
children: [
|
|
12336
|
+
xAxisLabels[hoverIndex] && /* @__PURE__ */ jsx92("div", { className: "stn-chart-tooltip__header", children: xAxisLabels[hoverIndex] }),
|
|
12337
|
+
seriesList.map((series, sIdx) => {
|
|
12338
|
+
const val = series.data[hoverIndex];
|
|
12339
|
+
if (val === void 0) return null;
|
|
12340
|
+
const color = series.color || DEFAULT_LINE_COLORS[sIdx % DEFAULT_LINE_COLORS.length];
|
|
12341
|
+
return /* @__PURE__ */ jsxs67("div", { className: "stn-chart-tooltip__row", children: [
|
|
12342
|
+
/* @__PURE__ */ jsxs67("div", { className: "stn-chart-tooltip__group", children: [
|
|
12343
|
+
/* @__PURE__ */ jsx92("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
|
|
12344
|
+
/* @__PURE__ */ jsx92("span", { className: "stn-chart-tooltip__label", children: series.label || `Series ${sIdx + 1}` })
|
|
12345
|
+
] }),
|
|
12346
|
+
/* @__PURE__ */ jsx92("span", { className: "stn-chart-tooltip__value", children: valueFormatter(val) })
|
|
12347
|
+
] }, sIdx);
|
|
12348
|
+
})
|
|
12349
|
+
]
|
|
12350
|
+
}
|
|
12351
|
+
)
|
|
12352
|
+
] }),
|
|
12353
|
+
resolvedLegend.length > 0 && /* @__PURE__ */ jsx92("div", { className: "stn-chart-legend-pill", "aria-label": "\uB77C\uC778 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs67("div", { className: "stn-chart-legend-pill__item", children: [
|
|
12354
|
+
/* @__PURE__ */ jsx92(
|
|
12355
|
+
"span",
|
|
12356
|
+
{
|
|
12357
|
+
className: "stn-chart-legend-pill__bar",
|
|
12358
|
+
style: { backgroundColor: item.color }
|
|
12359
|
+
}
|
|
12360
|
+
),
|
|
12361
|
+
/* @__PURE__ */ jsx92("span", { className: "stn-chart-legend-pill__label", children: item.label })
|
|
12362
|
+
] }, idx)) })
|
|
12363
|
+
]
|
|
12364
|
+
}
|
|
12365
|
+
);
|
|
12366
|
+
}
|
|
12367
|
+
|
|
12368
|
+
// src/components/StnComboChart.tsx
|
|
12369
|
+
import {
|
|
12370
|
+
useId as useId20,
|
|
12371
|
+
useState as useState27
|
|
12372
|
+
} from "react";
|
|
12373
|
+
import { jsx as jsx93, jsxs as jsxs68 } from "react/jsx-runtime";
|
|
12374
|
+
var BAR_WIDTH_MAP = {
|
|
12375
|
+
sm: "var(--stn-chart-combo-bar-width-sm)",
|
|
12376
|
+
md: "var(--stn-chart-combo-bar-width-md)",
|
|
12377
|
+
lg: "var(--stn-chart-combo-bar-width-lg)"
|
|
12378
|
+
};
|
|
12379
|
+
var DOT_RADIUS_MAP2 = {
|
|
12380
|
+
sm: 2,
|
|
12381
|
+
md: 2.5,
|
|
12382
|
+
lg: 3.5
|
|
12383
|
+
};
|
|
12384
|
+
var VIEW_W2 = 300;
|
|
12385
|
+
var VIEW_H2 = 100;
|
|
12386
|
+
var Y_TOP2 = 8;
|
|
12387
|
+
var Y_BOTTOM2 = 92;
|
|
12388
|
+
function StnComboChart({
|
|
12389
|
+
data = [],
|
|
12390
|
+
loading = false,
|
|
12391
|
+
emptyText,
|
|
12392
|
+
lines = [],
|
|
12393
|
+
size = "md",
|
|
12394
|
+
showDots = false,
|
|
12395
|
+
showXAxis = true,
|
|
12396
|
+
showLeftYAxis = true,
|
|
12397
|
+
showRightYAxis: controlledShowRightYAxis,
|
|
12398
|
+
showTooltip = true,
|
|
12399
|
+
leftYAxis = {},
|
|
12400
|
+
rightYAxis,
|
|
12401
|
+
legend,
|
|
12402
|
+
height = 220,
|
|
12403
|
+
barWidth: customBarWidth,
|
|
12404
|
+
highlightIndex: controlledHighlight,
|
|
12405
|
+
onColumnClick,
|
|
12406
|
+
decimals,
|
|
12407
|
+
className,
|
|
12408
|
+
style,
|
|
12409
|
+
...rest
|
|
12410
|
+
}) {
|
|
12411
|
+
const chartId = useId20().replace(/:/g, "");
|
|
12412
|
+
const [internalHighlight, setInternalHighlight] = useState27(null);
|
|
12413
|
+
const [hoverIndex, setHoverIndex] = useState27(null);
|
|
12414
|
+
const hasData = Boolean(data && data.length > 0);
|
|
12415
|
+
if (loading || !hasData) {
|
|
12416
|
+
return /* @__PURE__ */ jsx93(
|
|
12417
|
+
"div",
|
|
12418
|
+
{
|
|
12419
|
+
className: cn("stn-chart-combo", `stn-chart-combo--${size}`, className),
|
|
12420
|
+
style: { ...style, height, position: "relative" },
|
|
12421
|
+
...rest,
|
|
12422
|
+
children: renderChartState(loading, hasData, emptyText)
|
|
12423
|
+
}
|
|
12424
|
+
);
|
|
12425
|
+
}
|
|
12426
|
+
const showRightYAxis = controlledShowRightYAxis ?? Boolean(rightYAxis);
|
|
12427
|
+
const hasRightAxis = Boolean(rightYAxis);
|
|
12428
|
+
const parsedData = data.map((d) => {
|
|
12429
|
+
let rawVals = [];
|
|
12430
|
+
if (d.bar !== void 0) {
|
|
12431
|
+
rawVals = [{ value: d.bar, color: resolveChartColor(void 0, 0), label: "Bar" }];
|
|
12432
|
+
} else if (d.barValues !== void 0) {
|
|
12433
|
+
if (typeof d.barValues === "number") {
|
|
12434
|
+
rawVals = [{ value: d.barValues, color: resolveChartColor(void 0, 0), label: "Bar" }];
|
|
12435
|
+
} else if (Array.isArray(d.barValues)) {
|
|
12436
|
+
rawVals = d.barValues.map((v, vIdx) => {
|
|
12437
|
+
if (typeof v === "number") {
|
|
12438
|
+
return { value: v, color: resolveChartColor(void 0, vIdx), label: `Bar ${vIdx + 1}` };
|
|
12439
|
+
}
|
|
12440
|
+
return {
|
|
12441
|
+
value: v.value,
|
|
12442
|
+
color: resolveChartColor(v.color, vIdx),
|
|
12443
|
+
label: v.label || `Bar ${vIdx + 1}`
|
|
12444
|
+
};
|
|
12445
|
+
});
|
|
12446
|
+
}
|
|
12447
|
+
}
|
|
12448
|
+
return {
|
|
12449
|
+
...d,
|
|
12450
|
+
bars: rawVals
|
|
12451
|
+
};
|
|
12452
|
+
});
|
|
12453
|
+
const colCount = parsedData.length;
|
|
12454
|
+
const safeLines = lines.map((l, lIdx) => ({
|
|
12455
|
+
...l,
|
|
12456
|
+
color: resolveChartColor(l.color, (lIdx + 1) % DEFAULT_LINE_COLORS.length),
|
|
12457
|
+
data: colCount > 0 && l.data.length > colCount ? l.data.slice(0, colCount) : l.data
|
|
12458
|
+
}));
|
|
12459
|
+
const allBarValues = parsedData.flatMap((d) => d.bars.map((b) => b.value));
|
|
12460
|
+
const leftLineValues = safeLines.filter((l) => (l.yAxis ?? "left") === "left").flatMap((l) => l.data);
|
|
12461
|
+
const rightLineValues = safeLines.filter((l) => l.yAxis === "right").flatMap((l) => l.data);
|
|
12462
|
+
const allLeftValues = [...allBarValues, ...leftLineValues];
|
|
12463
|
+
const computedLeftMax = allLeftValues.length > 0 ? Math.max(...allLeftValues) : 100;
|
|
12464
|
+
const computedLeftMin = allLeftValues.length > 0 ? Math.min(...allLeftValues) : 0;
|
|
12465
|
+
const leftMax = leftYAxis.max ?? (computedLeftMax > 0 ? computedLeftMax : 100);
|
|
12466
|
+
const leftMin = leftYAxis.min ?? (computedLeftMin < 0 ? computedLeftMin : 0);
|
|
12467
|
+
const leftRange = leftMax - leftMin || 1;
|
|
12468
|
+
const leftSteps = leftYAxis.steps ?? 4;
|
|
12469
|
+
const leftFormatter = leftYAxis.format ?? ((val) => `${formatChartValue(val, decimals)}${leftYAxis.unit ?? ""}`);
|
|
12470
|
+
const computedRightMax = rightLineValues.length > 0 ? Math.max(...rightLineValues) : 100;
|
|
12471
|
+
const computedRightMin = rightLineValues.length > 0 ? Math.min(...rightLineValues) : 0;
|
|
12472
|
+
const rightMax = rightYAxis?.max ?? (computedRightMax > 0 ? computedRightMax : 100);
|
|
12473
|
+
const rightMin = rightYAxis?.min ?? (computedRightMin < 0 ? computedRightMin : 0);
|
|
12474
|
+
const rightRange = rightMax - rightMin || 1;
|
|
12475
|
+
const rightSteps = rightYAxis?.steps ?? leftSteps;
|
|
12476
|
+
const rightFormatter = rightYAxis?.format ?? ((val) => `${formatChartValue(val, decimals)}${rightYAxis?.unit ?? ""}`);
|
|
12477
|
+
const resolvedBarWidth = customBarWidth !== void 0 ? typeof customBarWidth === "number" ? `${customBarWidth}px` : customBarWidth === "sm" || customBarWidth === "md" || customBarWidth === "lg" ? BAR_WIDTH_MAP[customBarWidth] : customBarWidth : BAR_WIDTH_MAP[size] || "var(--stn-chart-combo-bar-width-md)";
|
|
12478
|
+
const dotRadius = DOT_RADIUS_MAP2[size] || 2.5;
|
|
12479
|
+
const leftGridRows = [];
|
|
12480
|
+
if (leftYAxis.labels && leftYAxis.labels.length > 0) {
|
|
12481
|
+
leftYAxis.labels.forEach((lbl, idx) => {
|
|
12482
|
+
leftGridRows.push({ label: lbl, isZero: idx === leftYAxis.labels.length - 1 });
|
|
12483
|
+
});
|
|
12484
|
+
} else {
|
|
12485
|
+
for (let i = leftSteps; i >= 0; i--) {
|
|
12486
|
+
const rawVal = leftMin + leftRange / leftSteps * i;
|
|
12487
|
+
const val = Math.abs(rawVal - Math.round(rawVal)) < 1e-9 ? Math.round(rawVal) : Number(rawVal.toFixed(6));
|
|
12488
|
+
leftGridRows.push({
|
|
12489
|
+
label: leftFormatter(val),
|
|
12490
|
+
isZero: val === 0
|
|
12491
|
+
});
|
|
12492
|
+
}
|
|
12493
|
+
}
|
|
12494
|
+
const rightGridRows = [];
|
|
12495
|
+
if (hasRightAxis) {
|
|
12496
|
+
if (rightYAxis?.labels && rightYAxis.labels.length > 0) {
|
|
12497
|
+
rightGridRows.push(...rightYAxis.labels);
|
|
12498
|
+
} else {
|
|
12499
|
+
for (let i = rightSteps; i >= 0; i--) {
|
|
12500
|
+
const rawVal = rightMin + rightRange / rightSteps * i;
|
|
12501
|
+
const val = Math.abs(rawVal - Math.round(rawVal)) < 1e-9 ? Math.round(rawVal) : Number(rawVal.toFixed(6));
|
|
12502
|
+
rightGridRows.push(rightFormatter(val));
|
|
12503
|
+
}
|
|
12504
|
+
}
|
|
12505
|
+
}
|
|
12506
|
+
const colW = colCount > 0 ? VIEW_W2 / colCount : VIEW_W2;
|
|
12507
|
+
const getLineX = (index) => (index + 0.5) * colW;
|
|
12508
|
+
const getLineY = (val, isRightAxis) => {
|
|
12509
|
+
const curMin = isRightAxis ? rightMin : leftMin;
|
|
12510
|
+
const curRange = isRightAxis ? rightRange : leftRange;
|
|
12511
|
+
const pct = (val - curMin) / curRange;
|
|
12512
|
+
return Y_BOTTOM2 - pct * (Y_BOTTOM2 - Y_TOP2);
|
|
12513
|
+
};
|
|
12514
|
+
const buildPathString = (points, isRightAxis) => {
|
|
12515
|
+
if (!points || points.length === 0) return "";
|
|
12516
|
+
return points.map((val, idx) => {
|
|
12517
|
+
const x = getLineX(idx);
|
|
12518
|
+
const y = getLineY(val, isRightAxis);
|
|
12519
|
+
return `${idx === 0 ? "M" : "L"} ${x.toFixed(1)},${y.toFixed(1)}`;
|
|
12520
|
+
}).join(" ");
|
|
12521
|
+
};
|
|
12522
|
+
const buildAreaPathString = (points, isRightAxis) => {
|
|
12523
|
+
const linePath = buildPathString(points, isRightAxis);
|
|
12524
|
+
if (!linePath || points.length === 0) return "";
|
|
12525
|
+
const startX = getLineX(0);
|
|
12526
|
+
const endX = getLineX(points.length - 1);
|
|
12527
|
+
return `${linePath} L ${endX.toFixed(1)},${Y_BOTTOM2} L ${startX.toFixed(1)},${Y_BOTTOM2} Z`;
|
|
12528
|
+
};
|
|
12529
|
+
const resolvedLegend = legend ?? [
|
|
12530
|
+
...(parsedData[0]?.bars.length ?? 0) > 0 ? parsedData[0].bars.map((b, bIdx) => ({
|
|
12531
|
+
label: b.label || (bIdx === 0 ? "\uB9C9\uB300" : `\uB9C9\uB300 ${bIdx + 1}`),
|
|
12532
|
+
color: b.color || DEFAULT_BAR_COLORS[bIdx % DEFAULT_BAR_COLORS.length],
|
|
12533
|
+
type: "bar"
|
|
12534
|
+
})) : [],
|
|
12535
|
+
...safeLines.map((l, lIdx) => ({
|
|
12536
|
+
label: l.label || `\uC120 ${lIdx + 1}`,
|
|
12537
|
+
color: l.color || DEFAULT_LINE_COLORS[(lIdx + 1) % DEFAULT_LINE_COLORS.length],
|
|
12538
|
+
type: "line"
|
|
12539
|
+
}))
|
|
12540
|
+
];
|
|
12541
|
+
const isHighlighted = (idx, item) => {
|
|
12542
|
+
if (controlledHighlight !== void 0) return controlledHighlight === idx;
|
|
12543
|
+
if (internalHighlight !== null) return internalHighlight === idx;
|
|
12544
|
+
return Boolean(item.highlight);
|
|
12545
|
+
};
|
|
12546
|
+
const handleColClick = (item, idx) => {
|
|
12547
|
+
setInternalHighlight(idx);
|
|
12548
|
+
onColumnClick?.(item, idx);
|
|
12549
|
+
};
|
|
12550
|
+
const containerStyle = {
|
|
12551
|
+
...style,
|
|
12552
|
+
height,
|
|
12553
|
+
["--stn-chart-combo-bar-width"]: resolvedBarWidth
|
|
12554
|
+
};
|
|
12555
|
+
const hoverGuideX = hoverIndex !== null ? getLineX(hoverIndex) : null;
|
|
12556
|
+
return /* @__PURE__ */ jsxs68(
|
|
12557
|
+
"div",
|
|
12558
|
+
{
|
|
12559
|
+
className: cn(
|
|
12560
|
+
"stn-chart-combo",
|
|
12561
|
+
`stn-chart-combo--${size}`,
|
|
12562
|
+
!showXAxis && "stn-chart-combo--no-x-axis",
|
|
12563
|
+
!showLeftYAxis && "stn-chart-combo--no-left-y-axis",
|
|
12564
|
+
(!showRightYAxis || !hasRightAxis) && "stn-chart-combo--no-right-y-axis",
|
|
12565
|
+
!showTooltip && "stn-chart--no-tooltip",
|
|
12566
|
+
className
|
|
12567
|
+
),
|
|
12568
|
+
style: containerStyle,
|
|
12569
|
+
...rest,
|
|
12570
|
+
children: [
|
|
12571
|
+
/* @__PURE__ */ jsxs68("div", { className: "stn-chart-combo__body", children: [
|
|
12572
|
+
showLeftYAxis && /* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__axis-y-left", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx93("span", { children: row.label }, rIdx)) }),
|
|
12573
|
+
showRightYAxis && hasRightAxis && /* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__axis-y-right", "aria-hidden": "true", children: rightGridRows.map((lbl, rIdx) => /* @__PURE__ */ jsx93("span", { children: lbl }, rIdx)) }),
|
|
12574
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__grid", "aria-hidden": "true", children: leftGridRows.map((row, rIdx) => /* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__grid-row", children: /* @__PURE__ */ jsx93(
|
|
12575
|
+
"div",
|
|
12576
|
+
{
|
|
12577
|
+
className: cn(
|
|
12578
|
+
"stn-chart-combo__grid-line",
|
|
12579
|
+
row.isZero && "stn-chart-combo__grid-line--zero"
|
|
12580
|
+
)
|
|
12581
|
+
}
|
|
12582
|
+
) }, rIdx)) }),
|
|
12583
|
+
/* @__PURE__ */ jsxs68("div", { className: "stn-chart-combo__content", children: [
|
|
12584
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__columns", role: "list", children: parsedData.map((item, idx) => {
|
|
12585
|
+
const active = isHighlighted(idx, item);
|
|
12586
|
+
return /* @__PURE__ */ jsxs68(
|
|
12587
|
+
"button",
|
|
12588
|
+
{
|
|
12589
|
+
type: "button",
|
|
12590
|
+
className: cn("stn-chart-combo__col", active && "is-active"),
|
|
12591
|
+
onClick: () => handleColClick(item, idx),
|
|
12592
|
+
onMouseEnter: () => setHoverIndex(idx),
|
|
12593
|
+
onMouseLeave: () => setHoverIndex(null),
|
|
12594
|
+
"aria-label": item.label,
|
|
12595
|
+
role: "listitem",
|
|
12596
|
+
children: [
|
|
12597
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__highlight" }),
|
|
12598
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__bars-wrap", children: item.bars.map((b, bIdx) => {
|
|
12599
|
+
const pct = Math.max(0, Math.min(100, (b.value - leftMin) / leftRange * 100));
|
|
12600
|
+
return /* @__PURE__ */ jsx93(
|
|
12601
|
+
"div",
|
|
12602
|
+
{
|
|
12603
|
+
className: "stn-chart-combo__bar",
|
|
12604
|
+
style: {
|
|
12605
|
+
height: `${pct}%`,
|
|
12606
|
+
backgroundColor: b.color
|
|
12607
|
+
}
|
|
12608
|
+
},
|
|
12609
|
+
bIdx
|
|
12610
|
+
);
|
|
12611
|
+
}) })
|
|
12612
|
+
]
|
|
12613
|
+
},
|
|
12614
|
+
item.id ?? idx
|
|
12615
|
+
);
|
|
12616
|
+
}) }),
|
|
12617
|
+
/* @__PURE__ */ jsxs68(
|
|
12618
|
+
"svg",
|
|
12619
|
+
{
|
|
12620
|
+
className: "stn-chart-combo__svg-overlay",
|
|
12621
|
+
viewBox: `0 0 ${VIEW_W2} ${VIEW_H2}`,
|
|
12622
|
+
preserveAspectRatio: "none",
|
|
12623
|
+
"aria-hidden": "true",
|
|
12624
|
+
children: [
|
|
12625
|
+
/* @__PURE__ */ jsx93("defs", { children: safeLines.map((series, sIdx) => {
|
|
12626
|
+
if (!series.area) return null;
|
|
12627
|
+
const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
|
|
12628
|
+
return /* @__PURE__ */ jsxs68(
|
|
12629
|
+
"linearGradient",
|
|
12630
|
+
{
|
|
12631
|
+
id: `combo_area_grad_${chartId}_${sIdx}`,
|
|
12632
|
+
x1: "0",
|
|
12633
|
+
y1: "0",
|
|
12634
|
+
x2: "0",
|
|
12635
|
+
y2: "1",
|
|
12636
|
+
children: [
|
|
12637
|
+
/* @__PURE__ */ jsx93("stop", { offset: "0%", stopColor: color, stopOpacity: "0.32" }),
|
|
12638
|
+
/* @__PURE__ */ jsx93("stop", { offset: "100%", stopColor: color, stopOpacity: "0.0" })
|
|
12639
|
+
]
|
|
12640
|
+
},
|
|
12641
|
+
`grad-${sIdx}`
|
|
12642
|
+
);
|
|
12643
|
+
}) }),
|
|
12644
|
+
safeLines.map((series, sIdx) => {
|
|
12645
|
+
if (!series.area) return null;
|
|
12646
|
+
const isRight = series.yAxis === "right";
|
|
12647
|
+
return /* @__PURE__ */ jsx93(
|
|
12648
|
+
"path",
|
|
12649
|
+
{
|
|
12650
|
+
d: buildAreaPathString(series.data, isRight),
|
|
12651
|
+
fill: `url(#combo_area_grad_${chartId}_${sIdx})`
|
|
12652
|
+
},
|
|
12653
|
+
`area-${series.id ?? sIdx}`
|
|
12654
|
+
);
|
|
12655
|
+
}),
|
|
12656
|
+
safeLines.map((series, sIdx) => {
|
|
12657
|
+
const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
|
|
12658
|
+
const isRight = series.yAxis === "right";
|
|
12659
|
+
return /* @__PURE__ */ jsx93(
|
|
12660
|
+
"path",
|
|
12661
|
+
{
|
|
12662
|
+
className: "stn-chart-combo__path",
|
|
12663
|
+
d: buildPathString(series.data, isRight),
|
|
12664
|
+
style: { stroke: color },
|
|
12665
|
+
vectorEffect: "non-scaling-stroke"
|
|
12666
|
+
},
|
|
12667
|
+
`line-${series.id ?? sIdx}`
|
|
12668
|
+
);
|
|
12669
|
+
}),
|
|
12670
|
+
showTooltip && hoverGuideX !== null && /* @__PURE__ */ jsx93("g", { className: "stn-chart-line__hover-group", children: /* @__PURE__ */ jsx93(
|
|
12671
|
+
"line",
|
|
12672
|
+
{
|
|
12673
|
+
x1: hoverGuideX,
|
|
12674
|
+
y1: Y_TOP2,
|
|
12675
|
+
x2: hoverGuideX,
|
|
12676
|
+
y2: Y_BOTTOM2,
|
|
12677
|
+
stroke: "var(--stn-chart-highlight-border)",
|
|
12678
|
+
strokeDasharray: "2 2",
|
|
12679
|
+
strokeWidth: "1",
|
|
12680
|
+
vectorEffect: "non-scaling-stroke"
|
|
12681
|
+
}
|
|
12682
|
+
) })
|
|
12683
|
+
]
|
|
12684
|
+
}
|
|
12685
|
+
),
|
|
12686
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__dots-layer", "aria-hidden": "true", style: { position: "absolute", inset: 0, pointerEvents: "none", zIndex: 3 }, children: safeLines.map((series, sIdx) => {
|
|
12687
|
+
const shouldShowDots = series.showDots ?? showDots;
|
|
12688
|
+
if (!shouldShowDots) return null;
|
|
12689
|
+
const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
|
|
12690
|
+
const isRight = series.yAxis === "right";
|
|
12691
|
+
return series.data.map((val, pIdx) => {
|
|
12692
|
+
const xPct = getLineX(pIdx) / VIEW_W2 * 100;
|
|
12693
|
+
const yPct = getLineY(val, isRight) / VIEW_H2 * 100;
|
|
12694
|
+
const isHovered = hoverIndex === pIdx;
|
|
12695
|
+
const r = isHovered ? dotRadius + 1.2 : dotRadius;
|
|
12696
|
+
return /* @__PURE__ */ jsx93(
|
|
12697
|
+
"span",
|
|
12698
|
+
{
|
|
12699
|
+
className: cn("stn-chart-line__dot", isHovered && "is-active"),
|
|
12700
|
+
style: {
|
|
12701
|
+
position: "absolute",
|
|
12702
|
+
left: `${xPct}%`,
|
|
12703
|
+
top: `${yPct}%`,
|
|
12704
|
+
width: `${r * 2}px`,
|
|
12705
|
+
height: `${r * 2}px`,
|
|
12706
|
+
borderRadius: "var(--stn-radius-full)",
|
|
12707
|
+
backgroundColor: color,
|
|
12708
|
+
transform: "translate(-50%, -50%)",
|
|
12709
|
+
boxShadow: isHovered ? "0 0 0 2px var(--stn-surface-primary)" : void 0,
|
|
12710
|
+
display: "inline-block"
|
|
12711
|
+
}
|
|
12712
|
+
},
|
|
12713
|
+
`combo-dot-${sIdx}-${pIdx}`
|
|
12714
|
+
);
|
|
12715
|
+
});
|
|
12716
|
+
}) }),
|
|
12717
|
+
showTooltip && hoverIndex !== null && parsedData[hoverIndex] && (() => {
|
|
12718
|
+
const colPct = (hoverIndex + 0.5) / colCount * 100;
|
|
12719
|
+
const isNearRight = colPct > 68;
|
|
12720
|
+
const isNearLeft = colPct < 15;
|
|
12721
|
+
return /* @__PURE__ */ jsxs68(
|
|
12722
|
+
"div",
|
|
12723
|
+
{
|
|
12724
|
+
className: cn(
|
|
12725
|
+
"stn-chart-tooltip",
|
|
12726
|
+
isNearRight && "stn-chart-tooltip--flip-x",
|
|
12727
|
+
isNearLeft && "stn-chart-tooltip--align-left"
|
|
12728
|
+
),
|
|
12729
|
+
style: {
|
|
12730
|
+
left: `${colPct}%`,
|
|
12731
|
+
top: "0px"
|
|
12732
|
+
},
|
|
12733
|
+
role: "tooltip",
|
|
12734
|
+
children: [
|
|
12735
|
+
/* @__PURE__ */ jsx93("div", { className: "stn-chart-tooltip__header", children: parsedData[hoverIndex].label }),
|
|
12736
|
+
parsedData[hoverIndex].bars.map((b, bIdx) => /* @__PURE__ */ jsxs68("div", { className: "stn-chart-tooltip__row", children: [
|
|
12737
|
+
/* @__PURE__ */ jsxs68("div", { className: "stn-chart-tooltip__group", children: [
|
|
12738
|
+
/* @__PURE__ */ jsx93(
|
|
12739
|
+
"span",
|
|
12740
|
+
{
|
|
12741
|
+
className: "stn-chart-tooltip__bar-mark",
|
|
12742
|
+
style: {
|
|
12743
|
+
backgroundColor: b.color
|
|
12744
|
+
}
|
|
12745
|
+
}
|
|
12746
|
+
),
|
|
12747
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-tooltip__label", children: b.label })
|
|
12748
|
+
] }),
|
|
12749
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-tooltip__value", children: leftFormatter(b.value) })
|
|
12750
|
+
] }, `tip-bar-${bIdx}`)),
|
|
12751
|
+
safeLines.map((series, sIdx) => {
|
|
12752
|
+
const val = series.data[hoverIndex];
|
|
12753
|
+
if (val === void 0) return null;
|
|
12754
|
+
const color = series.color || DEFAULT_LINE_COLORS[(sIdx + 1) % DEFAULT_LINE_COLORS.length];
|
|
12755
|
+
const isRight = series.yAxis === "right";
|
|
12756
|
+
const formatter = isRight ? rightFormatter : leftFormatter;
|
|
12757
|
+
return /* @__PURE__ */ jsxs68("div", { className: "stn-chart-tooltip__row", children: [
|
|
12758
|
+
/* @__PURE__ */ jsxs68("div", { className: "stn-chart-tooltip__group", children: [
|
|
12759
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-tooltip__dot", style: { backgroundColor: color } }),
|
|
12760
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-tooltip__label", children: series.label || `\uC120 ${sIdx + 1}` })
|
|
12761
|
+
] }),
|
|
12762
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-tooltip__value", children: formatter(val) })
|
|
12763
|
+
] }, `tip-line-${sIdx}`);
|
|
12764
|
+
})
|
|
12765
|
+
]
|
|
12766
|
+
}
|
|
12767
|
+
);
|
|
12768
|
+
})()
|
|
12769
|
+
] }),
|
|
12770
|
+
showXAxis && /* @__PURE__ */ jsx93("div", { className: "stn-chart-combo__axis-x", "aria-hidden": "true", children: parsedData.map((item, idx) => /* @__PURE__ */ jsx93("span", { className: "stn-chart-combo__axis-x-item", title: item.label, children: item.label }, item.id ?? idx)) })
|
|
12771
|
+
] }),
|
|
12772
|
+
resolvedLegend.length > 0 && /* @__PURE__ */ jsx93("div", { className: "stn-chart-legend-pill", "aria-label": "\uBCF5\uD569 \uCC28\uD2B8 \uBC94\uB840", children: resolvedLegend.map((item, idx) => /* @__PURE__ */ jsxs68("div", { className: "stn-chart-legend-pill__item", children: [
|
|
12773
|
+
item.type === "line" ? /* @__PURE__ */ jsx93(
|
|
12774
|
+
"span",
|
|
12775
|
+
{
|
|
12776
|
+
className: "stn-chart-legend-pill__line-marker",
|
|
12777
|
+
style: { backgroundColor: item.color },
|
|
12778
|
+
children: /* @__PURE__ */ jsx93(
|
|
12779
|
+
"span",
|
|
12780
|
+
{
|
|
12781
|
+
className: "stn-chart-legend-pill__line-dot",
|
|
12782
|
+
style: { backgroundColor: item.color }
|
|
12783
|
+
}
|
|
12784
|
+
)
|
|
12785
|
+
}
|
|
12786
|
+
) : /* @__PURE__ */ jsx93(
|
|
12787
|
+
"span",
|
|
12788
|
+
{
|
|
12789
|
+
className: "stn-chart-legend-pill__bar",
|
|
12790
|
+
style: { backgroundColor: item.color }
|
|
12791
|
+
}
|
|
12792
|
+
),
|
|
12793
|
+
/* @__PURE__ */ jsx93("span", { className: "stn-chart-legend-pill__label", children: item.label })
|
|
12794
|
+
] }, idx)) })
|
|
12795
|
+
]
|
|
12796
|
+
}
|
|
12797
|
+
);
|
|
12798
|
+
}
|
|
11257
12799
|
export {
|
|
11258
12800
|
AlertCenterDashboard,
|
|
11259
12801
|
AlertCenterPageScaffold,
|
|
11260
12802
|
DEFAULT_3D_GRAPH_LINKS,
|
|
11261
12803
|
DEFAULT_3D_GRAPH_NODES,
|
|
12804
|
+
DEFAULT_BAR_COLORS,
|
|
12805
|
+
DEFAULT_CHART_COLORS,
|
|
12806
|
+
DEFAULT_LINE_COLORS,
|
|
12807
|
+
DEFAULT_PIE_COLORS,
|
|
11262
12808
|
DashboardPageScaffold,
|
|
11263
12809
|
Divider,
|
|
11264
12810
|
LoginPageScaffold,
|
|
@@ -11266,6 +12812,8 @@ export {
|
|
|
11266
12812
|
PubDisabilityStatusList,
|
|
11267
12813
|
PubTop5EquipmentBars,
|
|
11268
12814
|
PubTrafficTop5Bars,
|
|
12815
|
+
SEVERITY_COLOR_TOKENS,
|
|
12816
|
+
STATUS_COLOR_TOKENS,
|
|
11269
12817
|
STN_ALERT_CENTER_DASHBOARD_USAGE,
|
|
11270
12818
|
STN_ALERT_CENTER_DASHBOARD_WIDGETS,
|
|
11271
12819
|
STN_ALERT_CENTER_DEMO_ALERTS2 as STN_ALERT_CENTER_DEMO_ALERTS,
|
|
@@ -11277,6 +12825,8 @@ export {
|
|
|
11277
12825
|
STN_ALERT_CENTER_TAB_IDS,
|
|
11278
12826
|
STN_ALERT_CENTER_USAGE,
|
|
11279
12827
|
STN_ALERT_CENTER_USAGE_HTML,
|
|
12828
|
+
STN_CHART_COLORS,
|
|
12829
|
+
STN_CHART_STATUS_COLORS,
|
|
11280
12830
|
STN_DATE_PICKER_INTRO,
|
|
11281
12831
|
STN_DATE_PICKER_KO_NAME,
|
|
11282
12832
|
STN_DATE_PICKER_NAME,
|
|
@@ -11385,6 +12935,7 @@ export {
|
|
|
11385
12935
|
StnAlertCenterDocPreview,
|
|
11386
12936
|
StnAlertCenterPanel,
|
|
11387
12937
|
StnBadge,
|
|
12938
|
+
StnBarChart,
|
|
11388
12939
|
StnBreadcrumb,
|
|
11389
12940
|
StnButton,
|
|
11390
12941
|
StnCard,
|
|
@@ -11394,6 +12945,7 @@ export {
|
|
|
11394
12945
|
StnCheckbox,
|
|
11395
12946
|
StnChip,
|
|
11396
12947
|
StnCircularProgress,
|
|
12948
|
+
StnComboChart,
|
|
11397
12949
|
StnContainer,
|
|
11398
12950
|
StnContext,
|
|
11399
12951
|
StnDashboard,
|
|
@@ -11410,6 +12962,9 @@ export {
|
|
|
11410
12962
|
StnEventBanner,
|
|
11411
12963
|
StnFloatingToolbar,
|
|
11412
12964
|
StnFloatingToolbarPreset,
|
|
12965
|
+
StnGaugeChart,
|
|
12966
|
+
StnGradeRow,
|
|
12967
|
+
StnGradeRowList,
|
|
11413
12968
|
StnGrid,
|
|
11414
12969
|
StnHeader,
|
|
11415
12970
|
StnHeaderContextTitle,
|
|
@@ -11433,6 +12988,7 @@ export {
|
|
|
11433
12988
|
StnLayerDim,
|
|
11434
12989
|
StnLayerModal,
|
|
11435
12990
|
StnLayerShell,
|
|
12991
|
+
StnLineChart,
|
|
11436
12992
|
StnListViewLayout,
|
|
11437
12993
|
StnListViewLayoutBody,
|
|
11438
12994
|
StnListViewLayoutContent,
|
|
@@ -11467,6 +13023,7 @@ export {
|
|
|
11467
13023
|
StnPageScaffoldRegion,
|
|
11468
13024
|
StnPageScaffoldRoot,
|
|
11469
13025
|
StnPagination,
|
|
13026
|
+
StnPieChart,
|
|
11470
13027
|
StnPopup,
|
|
11471
13028
|
StnProgressBar,
|
|
11472
13029
|
StnProvider,
|
|
@@ -11495,10 +13052,14 @@ export {
|
|
|
11495
13052
|
StnSideNavigation,
|
|
11496
13053
|
StnSlider,
|
|
11497
13054
|
StnStack,
|
|
13055
|
+
StnStatCard,
|
|
13056
|
+
StnStatGroup,
|
|
11498
13057
|
StnStatus,
|
|
11499
13058
|
StnStatusDot,
|
|
11500
13059
|
StnStatusDotGroup,
|
|
11501
13060
|
StnStatusFlow,
|
|
13061
|
+
StnStatusItem,
|
|
13062
|
+
StnStatusList,
|
|
11502
13063
|
StnStatusSeverity,
|
|
11503
13064
|
StnStatusSwitch,
|
|
11504
13065
|
StnSwitch,
|
|
@@ -11564,6 +13125,7 @@ export {
|
|
|
11564
13125
|
cn,
|
|
11565
13126
|
collectExpandableIds,
|
|
11566
13127
|
flattenStnTree,
|
|
13128
|
+
formatChartValue,
|
|
11567
13129
|
formatStnDateRangeFieldValue3 as formatStnDateRangeFieldValue,
|
|
11568
13130
|
formatStnHeaderTitleDate,
|
|
11569
13131
|
formatStnHeaderTitleTime,
|
|
@@ -11572,6 +13134,8 @@ export {
|
|
|
11572
13134
|
getStnWidgetKind,
|
|
11573
13135
|
isStnWidgetKindSlug,
|
|
11574
13136
|
parseStnDateRangeFieldValue2 as parseStnDateRangeFieldValue,
|
|
13137
|
+
renderChartState,
|
|
13138
|
+
resolveChartColor,
|
|
11575
13139
|
resolveStnWidgetBackground2 as resolveStnWidgetBackground,
|
|
11576
13140
|
resolveSystemIconSrcFromName3 as resolveSystemIconSrcFromName,
|
|
11577
13141
|
stnWidgetSampleUrl,
|