sellmate-design-system-react 9.0.0-beta.24 → 9.0.0-beta.25
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/AGENTS.md +32 -2
- package/dist/components/SIcon/README.md +2 -0
- package/dist/components/SSystemActionButton/README.md +129 -0
- package/dist/components/SSystemActionButton/SSystemActionButton.d.ts +79 -0
- package/dist/components/SSystemActionButton/index.d.ts +2 -0
- package/dist/components/SSystemActionButton/systemActionButton.config.d.ts +87 -0
- package/dist/components/STag/README.md +2 -0
- package/dist/index.cjs +351 -176
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +346 -177
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +161 -2
- package/dist/llms.txt +36 -4
- package/dist/styles.css +146 -1
- package/dist/theme.css +89 -1
- package/eslint/scale.gen.mjs +2 -2
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -4243,7 +4243,7 @@ function moveWithDepth(items, fromIndex, target, getDepth, setDepth, maxDepth) {
|
|
|
4243
4243
|
const nextDepth = target.intent === "inside" ? targetDepth + 1 : targetDepth;
|
|
4244
4244
|
const depthDelta = clampDepth(nextDepth, maxDepth) - sourceDepth;
|
|
4245
4245
|
const nextMovedItems = setDepth && depthDelta !== 0 ? movedItems.map(
|
|
4246
|
-
(
|
|
4246
|
+
(item2, index) => setDepth(item2, clampDepth(getDepth(item2, fromIndex + index) + depthDelta, maxDepth))
|
|
4247
4247
|
) : movedItems;
|
|
4248
4248
|
return [
|
|
4249
4249
|
...remainingItems.slice(0, insertionIndex),
|
|
@@ -4290,7 +4290,7 @@ function SDraggableListInner({
|
|
|
4290
4290
|
setDropTarget({ index, intent: "before" });
|
|
4291
4291
|
}, []);
|
|
4292
4292
|
const readDepth = react.useCallback(
|
|
4293
|
-
(
|
|
4293
|
+
(item2, index) => clampDepth(getDepth?.(item2, index) ?? 1, maxDepth),
|
|
4294
4294
|
[getDepth, maxDepth]
|
|
4295
4295
|
);
|
|
4296
4296
|
react.useEffect(() => {
|
|
@@ -4331,8 +4331,8 @@ function SDraggableListInner({
|
|
|
4331
4331
|
nextDropTarget = ratio < 0.5 ? { index, intent: "before" } : { index, intent: "after" };
|
|
4332
4332
|
break;
|
|
4333
4333
|
}
|
|
4334
|
-
const
|
|
4335
|
-
const canHaveChildren = (getCanHaveChildren?.(
|
|
4334
|
+
const item2 = items[index];
|
|
4335
|
+
const canHaveChildren = (getCanHaveChildren?.(item2, index) ?? true) && readDepth(item2, index) < maxDepth;
|
|
4336
4336
|
if (ratio < 0.25) {
|
|
4337
4337
|
nextDropTarget = { index, intent: "before" };
|
|
4338
4338
|
} else if (ratio > 0.75 || !canHaveChildren) {
|
|
@@ -4412,10 +4412,10 @@ function SDraggableListInner({
|
|
|
4412
4412
|
className: `${className ?? ""} ${dragContext ? "min-h-[40px]" : ""} ${showEmptyDrop ? "relative before:absolute before:left-0 before:right-0 before:top-0 before:z-10 before:h-[2px] before:bg-(--sys-color-border-accent) before:content-['']" : ""}`,
|
|
4413
4413
|
"data-draggable-group": dragContext ? dragGroup : void 0,
|
|
4414
4414
|
"data-draggable-list-id": dragContext ? listId : void 0,
|
|
4415
|
-
children: items.map((
|
|
4416
|
-
const itemKey = getKey(
|
|
4417
|
-
const disabled = (getDisabled?.(
|
|
4418
|
-
const depth = readDepth(
|
|
4415
|
+
children: items.map((item2, index) => {
|
|
4416
|
+
const itemKey = getKey(item2, index);
|
|
4417
|
+
const disabled = (getDisabled?.(item2, index) ?? false) || isDescendant(items, index, draggedSubtreeStart, usesDepth ? readDepth : void 0);
|
|
4418
|
+
const depth = readDepth(item2, index);
|
|
4419
4419
|
const showBefore = isDropTarget && currentDropIndex === index && (dragContext || currentDropIntent === "before");
|
|
4420
4420
|
const showInside = isDropTarget && currentDropIndex === index && !dragContext && usesDepth && currentDropIntent === "inside";
|
|
4421
4421
|
const showAfter = isDropTarget && (dragContext ? currentDropIndex === items.length && index === items.length - 1 : currentDropIndex === index && currentDropIntent === "after");
|
|
@@ -4439,7 +4439,7 @@ function SDraggableListInner({
|
|
|
4439
4439
|
onClick: selectItem,
|
|
4440
4440
|
onKeyDown: handleItemKeyDown,
|
|
4441
4441
|
className: `relative ${showBefore ? `before:absolute before:left-0 before:right-0 ${beforeIndicatorPosition} before:z-10 before:h-[2px] before:bg-(--sys-color-border-accent) before:content-['']` : ""} ${showAfter ? `after:absolute after:left-0 after:right-0 ${afterIndicatorPosition} after:z-10 after:h-[2px] after:bg-(--sys-color-border-accent) after:content-['']` : ""} ${showInside ? "outline outline-2 outline-offset-[-2px] outline-(--sys-color-border-accent)" : ""}`,
|
|
4442
|
-
children: renderItem(
|
|
4442
|
+
children: renderItem(item2, index, {
|
|
4443
4443
|
onDragHandleMouseDown: (event) => {
|
|
4444
4444
|
if (disabled) return;
|
|
4445
4445
|
if (dragContext && dragGroup && listId) {
|
|
@@ -5361,7 +5361,7 @@ var STreeImpl = /* @__PURE__ */ react.forwardRef(function STree({
|
|
|
5361
5361
|
}, ref) {
|
|
5362
5362
|
const [internalValue, setInternalValue] = react.useState(defaultValue ?? []);
|
|
5363
5363
|
const [internalExpandedIds, setInternalExpandedIds] = react.useState(
|
|
5364
|
-
defaultExpandedIds ?? items.filter((
|
|
5364
|
+
defaultExpandedIds ?? items.filter((item2) => item2.children?.length).map((item2) => item2.id)
|
|
5365
5365
|
);
|
|
5366
5366
|
const currentValue = value ?? internalValue;
|
|
5367
5367
|
const currentExpandedIds = expandedIds ?? internalExpandedIds;
|
|
@@ -6736,6 +6736,174 @@ function SSwitch({
|
|
|
6736
6736
|
}
|
|
6737
6737
|
);
|
|
6738
6738
|
}
|
|
6739
|
+
|
|
6740
|
+
// src/components/SSystemActionButton/systemActionButton.config.ts
|
|
6741
|
+
var SYSTEM_ACTION_BUTTON_COLORS = ["light", "dark", "darker"];
|
|
6742
|
+
var SYSTEM_ACTION_BUTTON_TYPES = [
|
|
6743
|
+
"account",
|
|
6744
|
+
"switch",
|
|
6745
|
+
"select",
|
|
6746
|
+
"subSelect",
|
|
6747
|
+
"status"
|
|
6748
|
+
];
|
|
6749
|
+
var item = (p) => `var(--cmp-gnb-system-item-${p})`;
|
|
6750
|
+
var action = (p) => `var(--cmp-gnb-system-actionButton-${p})`;
|
|
6751
|
+
var sys = (p) => `var(--sys-color-${p})`;
|
|
6752
|
+
var SYSTEM_ACTION_BUTTON_COLOR_CONFIG = {
|
|
6753
|
+
light: {
|
|
6754
|
+
bg: item("light-bg-default"),
|
|
6755
|
+
bgHover: item("light-bg-hover"),
|
|
6756
|
+
// light 의 아이콘 프레임 배경은 기본·hover 공통 한 값이다 (흰 면 위 흰 프레임)
|
|
6757
|
+
iconBg: item("light-icon-bg"),
|
|
6758
|
+
iconBgHover: item("light-icon-bg"),
|
|
6759
|
+
iconGlyph: item("light-icon-default"),
|
|
6760
|
+
iconGlyphHover: item("light-icon-default"),
|
|
6761
|
+
text: item("light-text"),
|
|
6762
|
+
actionText: {
|
|
6763
|
+
switch: action("switch-text-light"),
|
|
6764
|
+
selectData: action("selectData-text-light")
|
|
6765
|
+
},
|
|
6766
|
+
// 트레일링 아이콘 전용 색 토큰이 없다. light 는 item.icon.default 가
|
|
6767
|
+
// "actionButton/alertButton/setting 공통 글리프색"이라고 토큰에 명시돼 있다.
|
|
6768
|
+
actionIcon: item("light-icon-default")
|
|
6769
|
+
},
|
|
6770
|
+
dark: {
|
|
6771
|
+
bg: item("dark-bg-default"),
|
|
6772
|
+
bgHover: item("dark-bg-hover"),
|
|
6773
|
+
iconBg: item("dark-icon-bg-default"),
|
|
6774
|
+
iconBgHover: item("dark-icon-bg-hover"),
|
|
6775
|
+
// 어두운 면에는 글리프색 토큰이 없다. 기본은 프레임이 배경과 블렌딩되므로 라벨색(흰색),
|
|
6776
|
+
// hover 는 프레임이 흰색이 되므로 그 위에 표면색을 그대로 얹는다.
|
|
6777
|
+
iconGlyph: item("dark-text"),
|
|
6778
|
+
iconGlyphHover: item("dark-bg-hover"),
|
|
6779
|
+
text: item("dark-text"),
|
|
6780
|
+
actionText: {
|
|
6781
|
+
switch: action("switch-text-dark"),
|
|
6782
|
+
selectData: action("selectData-text-dark")
|
|
6783
|
+
},
|
|
6784
|
+
// TODO: 어두운 면의 트레일링 아이콘 색 토큰이 없다. 시안(#AAAAAA)에 맞는 시맨틱 토큰으로 둔다.
|
|
6785
|
+
actionIcon: sys("fg-quaternary")
|
|
6786
|
+
},
|
|
6787
|
+
darker: {
|
|
6788
|
+
bg: item("darker-bg-default"),
|
|
6789
|
+
bgHover: item("darker-bg-hover"),
|
|
6790
|
+
iconBg: item("darker-icon-bg-default"),
|
|
6791
|
+
iconBgHover: item("darker-icon-bg-hover"),
|
|
6792
|
+
iconGlyph: item("darker-text"),
|
|
6793
|
+
iconGlyphHover: item("darker-bg-hover"),
|
|
6794
|
+
text: item("darker-text"),
|
|
6795
|
+
actionText: {
|
|
6796
|
+
switch: action("switch-text-dark"),
|
|
6797
|
+
selectData: action("selectData-text-dark")
|
|
6798
|
+
},
|
|
6799
|
+
actionIcon: sys("fg-quaternary")
|
|
6800
|
+
}
|
|
6801
|
+
};
|
|
6802
|
+
var SYSTEM_ACTION_BUTTON_TYPE_CONFIG = {
|
|
6803
|
+
account: { fixedIcon: "user" },
|
|
6804
|
+
switch: {
|
|
6805
|
+
actionText: { token: "switch", typo: "typo-field-sm-default" },
|
|
6806
|
+
actionIcon: { name: "synchronize", size: action("switch-icon") }
|
|
6807
|
+
},
|
|
6808
|
+
select: {
|
|
6809
|
+
actionIcon: { name: "chevronRight", size: action("select-icon") }
|
|
6810
|
+
},
|
|
6811
|
+
subSelect: {
|
|
6812
|
+
actionText: { token: "selectData", typo: "typo-control-xs-medium" },
|
|
6813
|
+
actionIcon: { name: "chevronRight", size: action("selectData-icon") }
|
|
6814
|
+
},
|
|
6815
|
+
status: {
|
|
6816
|
+
// status 는 선행 아이콘 없이 태그가 라벨 자리를 차지한다
|
|
6817
|
+
actionIcon: { name: "chevronRight", size: action("select-icon") }
|
|
6818
|
+
}
|
|
6819
|
+
};
|
|
6820
|
+
var SYSTEM_ACTION_BUTTON_LAYOUT = {
|
|
6821
|
+
/** 행 높이 */
|
|
6822
|
+
height: item("height"),
|
|
6823
|
+
/** 행 라운드 */
|
|
6824
|
+
radius: item("radius"),
|
|
6825
|
+
/** 아이콘 프레임 한 변 */
|
|
6826
|
+
iconFrame: item("icon-frame"),
|
|
6827
|
+
/** 아이콘 글리프 크기 */
|
|
6828
|
+
iconGlyph: item("icon-glyph"),
|
|
6829
|
+
/** 아이콘 프레임 라운드 */
|
|
6830
|
+
iconRadius: item("icon-radius"),
|
|
6831
|
+
/** 아이콘 프레임 ↔ 라벨 간격 */
|
|
6832
|
+
iconLabelGap: item("iconLabelGap"),
|
|
6833
|
+
/** 좌측 여백 */
|
|
6834
|
+
paddingLeft: action("paddingLeft"),
|
|
6835
|
+
/** 우측 여백 */
|
|
6836
|
+
paddingRight: action("paddingRight"),
|
|
6837
|
+
/** 액션 텍스트 ↔ 액션 아이콘 간격 */
|
|
6838
|
+
actionGap: action("selectData-gap")
|
|
6839
|
+
};
|
|
6840
|
+
function TokenIcon({ name, size }) {
|
|
6841
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name, size: "100%", style: { width: size, height: size } });
|
|
6842
|
+
}
|
|
6843
|
+
var SSystemActionButton = /* @__PURE__ */ react.forwardRef(
|
|
6844
|
+
function SSystemActionButton2({ color = "light", type, label, option, disabled = false, className, style, ...rest }, ref) {
|
|
6845
|
+
const c = SYSTEM_ACTION_BUTTON_COLOR_CONFIG[color];
|
|
6846
|
+
const spec = SYSTEM_ACTION_BUTTON_TYPE_CONFIG[type];
|
|
6847
|
+
const hoverable = !disabled;
|
|
6848
|
+
const status = type === "status" ? option : void 0;
|
|
6849
|
+
const resolvedIcon = spec.fixedIcon ?? option?.icon;
|
|
6850
|
+
const actionText = spec.actionText ? option?.text : void 0;
|
|
6851
|
+
const cssVars = {
|
|
6852
|
+
"--sab-bg": c.bg,
|
|
6853
|
+
"--sab-bg-hover": hoverable ? c.bgHover : c.bg,
|
|
6854
|
+
"--sab-icon-bg": c.iconBg,
|
|
6855
|
+
"--sab-icon-bg-hover": hoverable ? c.iconBgHover : c.iconBg,
|
|
6856
|
+
"--sab-icon-glyph": c.iconGlyph,
|
|
6857
|
+
"--sab-icon-glyph-hover": hoverable ? c.iconGlyphHover : c.iconGlyph,
|
|
6858
|
+
"--sab-text": c.text,
|
|
6859
|
+
"--sab-action-text": spec.actionText ? c.actionText[spec.actionText.token] : void 0,
|
|
6860
|
+
"--sab-action-icon": c.actionIcon,
|
|
6861
|
+
"minHeight": SYSTEM_ACTION_BUTTON_LAYOUT.height,
|
|
6862
|
+
"borderRadius": SYSTEM_ACTION_BUTTON_LAYOUT.radius,
|
|
6863
|
+
"paddingLeft": SYSTEM_ACTION_BUTTON_LAYOUT.paddingLeft,
|
|
6864
|
+
"paddingRight": SYSTEM_ACTION_BUTTON_LAYOUT.paddingRight,
|
|
6865
|
+
"gap": SYSTEM_ACTION_BUTTON_LAYOUT.iconLabelGap,
|
|
6866
|
+
...style
|
|
6867
|
+
};
|
|
6868
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
6869
|
+
"button",
|
|
6870
|
+
{
|
|
6871
|
+
ref,
|
|
6872
|
+
type: "button",
|
|
6873
|
+
disabled,
|
|
6874
|
+
className: cn(
|
|
6875
|
+
"group box-border flex w-full items-center border-none bg-(--sab-bg) text-left transition-colors",
|
|
6876
|
+
"hover:bg-(--sab-bg-hover)",
|
|
6877
|
+
disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer",
|
|
6878
|
+
className
|
|
6879
|
+
),
|
|
6880
|
+
style: cssVars,
|
|
6881
|
+
...rest,
|
|
6882
|
+
children: [
|
|
6883
|
+
resolvedIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6884
|
+
"span",
|
|
6885
|
+
{
|
|
6886
|
+
className: "inline-flex shrink-0 items-center justify-center bg-(--sab-icon-bg) text-(--sab-icon-glyph) transition-colors group-hover:bg-(--sab-icon-bg-hover) group-hover:text-(--sab-icon-glyph-hover)",
|
|
6887
|
+
style: { width: SYSTEM_ACTION_BUTTON_LAYOUT.iconFrame, height: SYSTEM_ACTION_BUTTON_LAYOUT.iconFrame, borderRadius: SYSTEM_ACTION_BUTTON_LAYOUT.iconRadius },
|
|
6888
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(TokenIcon, { name: resolvedIcon, size: SYSTEM_ACTION_BUTTON_LAYOUT.iconGlyph })
|
|
6889
|
+
}
|
|
6890
|
+
),
|
|
6891
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-semibold flex min-w-0 flex-1 items-center text-(--sab-text)", children: status ? /* @__PURE__ */ jsxRuntime.jsx(STag, { color: status.color ?? "blue", icon: "dot", label: status.label }) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: label }) }),
|
|
6892
|
+
(actionText != null || spec.actionIcon) && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex shrink-0 items-center", style: { gap: SYSTEM_ACTION_BUTTON_LAYOUT.actionGap }, children: [
|
|
6893
|
+
actionText != null && spec.actionText && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6894
|
+
"span",
|
|
6895
|
+
{
|
|
6896
|
+
className: cn(spec.actionText.typo, "whitespace-nowrap text-(--sab-action-text)"),
|
|
6897
|
+
children: actionText
|
|
6898
|
+
}
|
|
6899
|
+
),
|
|
6900
|
+
spec.actionIcon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex shrink-0 items-center text-(--sab-action-icon)", children: /* @__PURE__ */ jsxRuntime.jsx(TokenIcon, { name: spec.actionIcon.name, size: spec.actionIcon.size }) })
|
|
6901
|
+
] })
|
|
6902
|
+
]
|
|
6903
|
+
}
|
|
6904
|
+
);
|
|
6905
|
+
}
|
|
6906
|
+
);
|
|
6739
6907
|
var SIZE_CLASSES = {
|
|
6740
6908
|
xs: "h-[24px] px-[8px] text-[12px] font-normal leading-[20px]",
|
|
6741
6909
|
sm: "h-[28px] px-[12px] text-[14px] font-medium leading-[24px]"
|
|
@@ -8522,17 +8690,17 @@ var GNB_TOP_ICON_GAP = 8;
|
|
|
8522
8690
|
var GNB_TOP_ICON_SIZE = 24;
|
|
8523
8691
|
var GNB_FULL_LOGO_WIDTH_NO_LAUNCHER = GNB_FULL_LOGO_WIDTH + GNB_TOP_ICON_SIZE + GNB_TOP_ICON_GAP;
|
|
8524
8692
|
function findGnbRailValue(items, value) {
|
|
8525
|
-
if (items.some((
|
|
8693
|
+
if (items.some((item2) => item2.value === value)) return value;
|
|
8526
8694
|
return findGnbAncestors(items, value)[0];
|
|
8527
8695
|
}
|
|
8528
8696
|
function findGnbSiblingValues(items, value) {
|
|
8529
8697
|
const walk = (list) => {
|
|
8530
|
-
if (list.some((
|
|
8531
|
-
return list.filter((
|
|
8698
|
+
if (list.some((item2) => item2.value === value)) {
|
|
8699
|
+
return list.filter((item2) => item2.value !== value).map((item2) => item2.value);
|
|
8532
8700
|
}
|
|
8533
|
-
for (const
|
|
8534
|
-
if (
|
|
8535
|
-
const found = walk(
|
|
8701
|
+
for (const item2 of list) {
|
|
8702
|
+
if (item2.children) {
|
|
8703
|
+
const found = walk(item2.children);
|
|
8536
8704
|
if (found) return found;
|
|
8537
8705
|
}
|
|
8538
8706
|
}
|
|
@@ -8542,10 +8710,10 @@ function findGnbSiblingValues(items, value) {
|
|
|
8542
8710
|
}
|
|
8543
8711
|
function findGnbAncestors(items, value) {
|
|
8544
8712
|
const walk = (list, trail) => {
|
|
8545
|
-
for (const
|
|
8546
|
-
if (
|
|
8547
|
-
if (
|
|
8548
|
-
const found = walk(
|
|
8713
|
+
for (const item2 of list) {
|
|
8714
|
+
if (item2.value === value) return trail;
|
|
8715
|
+
if (item2.children) {
|
|
8716
|
+
const found = walk(item2.children, [...trail, item2.value]);
|
|
8549
8717
|
if (found) return found;
|
|
8550
8718
|
}
|
|
8551
8719
|
}
|
|
@@ -8555,20 +8723,20 @@ function findGnbAncestors(items, value) {
|
|
|
8555
8723
|
}
|
|
8556
8724
|
function findGnbDescendantBranchValues(items, value) {
|
|
8557
8725
|
const find = (list) => {
|
|
8558
|
-
for (const
|
|
8559
|
-
if (
|
|
8560
|
-
if (
|
|
8561
|
-
const found = find(
|
|
8726
|
+
for (const item2 of list) {
|
|
8727
|
+
if (item2.value === value) return item2;
|
|
8728
|
+
if (item2.children) {
|
|
8729
|
+
const found = find(item2.children);
|
|
8562
8730
|
if (found) return found;
|
|
8563
8731
|
}
|
|
8564
8732
|
}
|
|
8565
8733
|
return void 0;
|
|
8566
8734
|
};
|
|
8567
8735
|
const collect = (list, acc) => {
|
|
8568
|
-
for (const
|
|
8569
|
-
if (
|
|
8570
|
-
acc.push(
|
|
8571
|
-
collect(
|
|
8736
|
+
for (const item2 of list) {
|
|
8737
|
+
if (item2.children && item2.children.length > 0) {
|
|
8738
|
+
acc.push(item2.value);
|
|
8739
|
+
collect(item2.children, acc);
|
|
8572
8740
|
}
|
|
8573
8741
|
}
|
|
8574
8742
|
return acc;
|
|
@@ -8611,7 +8779,7 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8611
8779
|
const type = typeProp ?? layout?.type ?? "box";
|
|
8612
8780
|
const folded = foldedProp ?? layout?.folded ?? false;
|
|
8613
8781
|
const useRail = useRailProp ?? layout?.useRail ?? false;
|
|
8614
|
-
const railHasLeaf = useRail && items.some((
|
|
8782
|
+
const railHasLeaf = useRail && items.some((item2) => !item2.children || item2.children.length === 0);
|
|
8615
8783
|
const header = railHasLeaf ? "full" : headerProp ?? layout?.header ?? "fix";
|
|
8616
8784
|
const H = GNB_HEADER[header];
|
|
8617
8785
|
const M = GNB_MENU[type];
|
|
@@ -8654,13 +8822,13 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8654
8822
|
labelTipHideRef.current = setTimeout(() => setLabelTip(null), LABEL_TIP_HIDE_DELAY_MS);
|
|
8655
8823
|
};
|
|
8656
8824
|
react.useEffect(() => cancelLabelTipHide, []);
|
|
8657
|
-
const rowHoverProps = (
|
|
8825
|
+
const rowHoverProps = (item2) => ({
|
|
8658
8826
|
onMouseEnter: (event) => {
|
|
8659
|
-
setHoveredKey(
|
|
8660
|
-
showLabelTipIfTruncated(event.currentTarget,
|
|
8827
|
+
setHoveredKey(item2.value);
|
|
8828
|
+
showLabelTipIfTruncated(event.currentTarget, item2.label);
|
|
8661
8829
|
},
|
|
8662
8830
|
onMouseLeave: () => {
|
|
8663
|
-
setHoveredKey((prev) => prev ===
|
|
8831
|
+
setHoveredKey((prev) => prev === item2.value ? null : prev);
|
|
8664
8832
|
startLabelTipHide();
|
|
8665
8833
|
}
|
|
8666
8834
|
});
|
|
@@ -8686,7 +8854,7 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8686
8854
|
}, [items, value]);
|
|
8687
8855
|
react.useEffect(() => {
|
|
8688
8856
|
setActiveRail(
|
|
8689
|
-
(prev) => prev !== void 0 && items.some((
|
|
8857
|
+
(prev) => prev !== void 0 && items.some((item2) => item2.value === prev) ? prev : items[0]?.value
|
|
8690
8858
|
);
|
|
8691
8859
|
}, [items]);
|
|
8692
8860
|
const toggleExpand = (key) => {
|
|
@@ -8703,33 +8871,33 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8703
8871
|
return next;
|
|
8704
8872
|
});
|
|
8705
8873
|
};
|
|
8706
|
-
const handleItemClick = (
|
|
8707
|
-
if (
|
|
8708
|
-
if (
|
|
8709
|
-
toggleExpand(
|
|
8874
|
+
const handleItemClick = (item2) => {
|
|
8875
|
+
if (item2.disabled) return;
|
|
8876
|
+
if (item2.children && item2.children.length > 0) {
|
|
8877
|
+
toggleExpand(item2.value);
|
|
8710
8878
|
return;
|
|
8711
8879
|
}
|
|
8712
|
-
onValueChange?.(
|
|
8880
|
+
onValueChange?.(item2.value);
|
|
8713
8881
|
};
|
|
8714
|
-
const handleRailClick = (
|
|
8715
|
-
if (
|
|
8716
|
-
setActiveRail(
|
|
8717
|
-
onRailChange?.(
|
|
8718
|
-
if (!
|
|
8882
|
+
const handleRailClick = (item2) => {
|
|
8883
|
+
if (item2.disabled) return;
|
|
8884
|
+
setActiveRail(item2.value);
|
|
8885
|
+
onRailChange?.(item2.value);
|
|
8886
|
+
if (!item2.children || item2.children.length === 0) onValueChange?.(item2.value);
|
|
8719
8887
|
};
|
|
8720
8888
|
const handleFoldToggle = () => {
|
|
8721
8889
|
const next = !folded;
|
|
8722
8890
|
onFoldChange?.(next);
|
|
8723
8891
|
if (foldedProp === void 0) layout?.setFolded(next);
|
|
8724
8892
|
};
|
|
8725
|
-
const renderRailItem = (
|
|
8726
|
-
const isActive =
|
|
8727
|
-
const isHovered = hoveredKey ===
|
|
8893
|
+
const renderRailItem = (item2) => {
|
|
8894
|
+
const isActive = item2.value === activeRail;
|
|
8895
|
+
const isHovered = hoveredKey === item2.value && !item2.disabled;
|
|
8728
8896
|
return /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8729
8897
|
"button",
|
|
8730
8898
|
{
|
|
8731
8899
|
type: "button",
|
|
8732
|
-
disabled:
|
|
8900
|
+
disabled: item2.disabled,
|
|
8733
8901
|
"aria-current": isActive ? "true" : void 0,
|
|
8734
8902
|
className: "box-border flex select-none flex-col items-center border-none bg-transparent transition-colors duration-150",
|
|
8735
8903
|
style: {
|
|
@@ -8744,31 +8912,31 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8744
8912
|
fontSize: GNB_RAIL.itemFontSize,
|
|
8745
8913
|
lineHeight: `${GNB_RAIL.itemLineHeight}px`,
|
|
8746
8914
|
fontWeight: isActive ? GNB_RAIL.itemFontWeightSelected : GNB_RAIL.itemFontWeight,
|
|
8747
|
-
opacity:
|
|
8748
|
-
cursor:
|
|
8915
|
+
opacity: item2.disabled ? 0.4 : 1,
|
|
8916
|
+
cursor: item2.disabled ? "not-allowed" : "pointer"
|
|
8749
8917
|
},
|
|
8750
|
-
onClick: () => handleRailClick(
|
|
8751
|
-
...rowHoverProps(
|
|
8918
|
+
onClick: () => handleRailClick(item2),
|
|
8919
|
+
...rowHoverProps(item2),
|
|
8752
8920
|
children: [
|
|
8753
|
-
|
|
8921
|
+
item2.icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: item2.icon, size: GNB_RAIL.itemIcon, className: "shrink-0" }),
|
|
8754
8922
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8755
8923
|
"span",
|
|
8756
8924
|
{
|
|
8757
8925
|
"data-gnb-label": true,
|
|
8758
8926
|
className: "w-full overflow-hidden text-ellipsis whitespace-nowrap text-center",
|
|
8759
|
-
children:
|
|
8927
|
+
children: item2.label
|
|
8760
8928
|
}
|
|
8761
8929
|
)
|
|
8762
8930
|
]
|
|
8763
8931
|
}
|
|
8764
|
-
) },
|
|
8932
|
+
) }, item2.value);
|
|
8765
8933
|
};
|
|
8766
|
-
const renderItem = (
|
|
8767
|
-
const hasChildren = !!(
|
|
8768
|
-
const isSelected = !hasChildren &&
|
|
8769
|
-
const isExpanded = expandedKeys.has(
|
|
8770
|
-
const isHovered = hoveredKey ===
|
|
8771
|
-
const iconBranch = depth === 1 ? !!
|
|
8934
|
+
const renderItem = (item2, depth, branchHasIcon = false) => {
|
|
8935
|
+
const hasChildren = !!(item2.children && item2.children.length > 0);
|
|
8936
|
+
const isSelected = !hasChildren && item2.value === value;
|
|
8937
|
+
const isExpanded = expandedKeys.has(item2.value);
|
|
8938
|
+
const isHovered = hoveredKey === item2.value && !item2.disabled;
|
|
8939
|
+
const iconBranch = depth === 1 ? !!item2.icon : branchHasIcon;
|
|
8772
8940
|
const itemStyle = {
|
|
8773
8941
|
gap: M.itemGap,
|
|
8774
8942
|
paddingTop: M.itemPaddingY,
|
|
@@ -8785,8 +8953,8 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8785
8953
|
fontSize: depth === 1 ? M.depth1FontSize : M.itemFontSize,
|
|
8786
8954
|
lineHeight: `${depth === 1 ? M.depth1LineHeight : M.itemLineHeight}px`,
|
|
8787
8955
|
fontWeight: depth === 1 ? M.depth1FontWeight : isSelected ? M.itemFontWeightSelected : M.itemFontWeight,
|
|
8788
|
-
opacity:
|
|
8789
|
-
cursor:
|
|
8956
|
+
opacity: item2.disabled ? 0.4 : 1,
|
|
8957
|
+
cursor: item2.disabled ? "not-allowed" : "pointer"
|
|
8790
8958
|
};
|
|
8791
8959
|
return (
|
|
8792
8960
|
// li 를 flex-col 로 둬야 버튼이 좌우 마진만큼 안쪽으로 들어가고,
|
|
@@ -8796,18 +8964,18 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8796
8964
|
"button",
|
|
8797
8965
|
{
|
|
8798
8966
|
type: "button",
|
|
8799
|
-
disabled:
|
|
8967
|
+
disabled: item2.disabled,
|
|
8800
8968
|
"aria-expanded": hasChildren ? isExpanded : void 0,
|
|
8801
8969
|
"aria-current": isSelected ? "page" : void 0,
|
|
8802
8970
|
className: "box-border flex select-none items-center border-none bg-transparent text-left transition-colors duration-150",
|
|
8803
8971
|
style: itemStyle,
|
|
8804
|
-
onClick: () => handleItemClick(
|
|
8805
|
-
...rowHoverProps(
|
|
8972
|
+
onClick: () => handleItemClick(item2),
|
|
8973
|
+
...rowHoverProps(item2),
|
|
8806
8974
|
children: [
|
|
8807
|
-
depth === 1 &&
|
|
8975
|
+
depth === 1 && item2.icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8808
8976
|
SIcon,
|
|
8809
8977
|
{
|
|
8810
|
-
name:
|
|
8978
|
+
name: item2.icon,
|
|
8811
8979
|
size: M.depth1Icon,
|
|
8812
8980
|
color: isSelected ? C.itemColorActive : C.itemIcon,
|
|
8813
8981
|
className: "shrink-0"
|
|
@@ -8827,17 +8995,17 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8827
8995
|
{
|
|
8828
8996
|
"data-gnb-label": true,
|
|
8829
8997
|
className: "min-w-0 flex-1 overflow-hidden text-ellipsis whitespace-nowrap",
|
|
8830
|
-
children:
|
|
8998
|
+
children: item2.label
|
|
8831
8999
|
}
|
|
8832
9000
|
)
|
|
8833
9001
|
] }),
|
|
8834
|
-
|
|
9002
|
+
item2.tag !== void 0 && item2.tag !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8835
9003
|
STag,
|
|
8836
9004
|
{
|
|
8837
9005
|
shape: "square",
|
|
8838
9006
|
size: "xs",
|
|
8839
|
-
color:
|
|
8840
|
-
label:
|
|
9007
|
+
color: item2.tagColor ?? "blue",
|
|
9008
|
+
label: item2.tag,
|
|
8841
9009
|
className: "shrink-0"
|
|
8842
9010
|
}
|
|
8843
9011
|
),
|
|
@@ -8870,16 +9038,16 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
8870
9038
|
visibility: isExpanded ? "visible" : "hidden",
|
|
8871
9039
|
transition: `visibility 0s linear ${isExpanded ? "0s" : `${GNB_EXPAND_MS}ms`}`
|
|
8872
9040
|
},
|
|
8873
|
-
children:
|
|
9041
|
+
children: item2.children.map((child) => renderItem(child, depth + 1, iconBranch))
|
|
8874
9042
|
}
|
|
8875
9043
|
)
|
|
8876
9044
|
}
|
|
8877
9045
|
)
|
|
8878
|
-
] },
|
|
9046
|
+
] }, item2.value)
|
|
8879
9047
|
);
|
|
8880
9048
|
};
|
|
8881
9049
|
const railItems = useRail ? items : [];
|
|
8882
|
-
const menuItems = useRail ? items.find((
|
|
9050
|
+
const menuItems = useRail ? items.find((item2) => item2.value === activeRail)?.children ?? [] : items;
|
|
8883
9051
|
const showMenu = !useRail || menuItems.length > 0;
|
|
8884
9052
|
const [uncontrolledMenuWidth, setUncontrolledMenuWidth] = react.useState(
|
|
8885
9053
|
() => defaultMenuWidth ?? GNB_MENU_WIDTH
|
|
@@ -9186,7 +9354,7 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
9186
9354
|
paddingTop: M.bodyPaddingY,
|
|
9187
9355
|
paddingBottom: M.bodyPaddingY
|
|
9188
9356
|
},
|
|
9189
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 flex list-none flex-col p-0", children: menuItems.map((
|
|
9357
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 flex list-none flex-col p-0", children: menuItems.map((item2) => renderItem(item2, 1)) })
|
|
9190
9358
|
}
|
|
9191
9359
|
),
|
|
9192
9360
|
menuFooter && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: menuFooter })
|
|
@@ -9837,19 +10005,19 @@ var STEPPER_VERTICAL_COLORS = {
|
|
|
9837
10005
|
errorBadge: "#FB4444"
|
|
9838
10006
|
};
|
|
9839
10007
|
var ERROR_TOOLTIP_MESSAGE = "\uD655\uC778\uC774 \uD544\uC694\uD55C \uD56D\uBAA9\uC774 \uC788\uC2B5\uB2C8\uB2E4.";
|
|
9840
|
-
function getItemValue(
|
|
9841
|
-
return
|
|
10008
|
+
function getItemValue(item2, index) {
|
|
10009
|
+
return item2.value ?? String(index + 1);
|
|
9842
10010
|
}
|
|
9843
10011
|
function groupAdjacentItems(items) {
|
|
9844
10012
|
return items.reduce(
|
|
9845
|
-
(groups,
|
|
9846
|
-
const currentGroup =
|
|
10013
|
+
(groups, item2, index) => {
|
|
10014
|
+
const currentGroup = item2.group;
|
|
9847
10015
|
const previous = groups[groups.length - 1];
|
|
9848
10016
|
if (currentGroup && previous?.group === currentGroup) {
|
|
9849
|
-
previous.items.push(
|
|
10017
|
+
previous.items.push(item2);
|
|
9850
10018
|
return groups;
|
|
9851
10019
|
}
|
|
9852
|
-
groups.push({ group: currentGroup, startIndex: index, items: [
|
|
10020
|
+
groups.push({ group: currentGroup, startIndex: index, items: [item2] });
|
|
9853
10021
|
return groups;
|
|
9854
10022
|
},
|
|
9855
10023
|
[]
|
|
@@ -9879,15 +10047,15 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
9879
10047
|
const verticalItemRefs = react.useRef([]);
|
|
9880
10048
|
const activeIndex = Math.max(
|
|
9881
10049
|
0,
|
|
9882
|
-
items.findIndex((
|
|
10050
|
+
items.findIndex((item2, index) => getItemValue(item2, index) === value)
|
|
9883
10051
|
);
|
|
9884
10052
|
const lastCompletedIndex = items.reduce(
|
|
9885
|
-
(lastIndex,
|
|
10053
|
+
(lastIndex, item2, index) => item2.completed === true ? index : lastIndex,
|
|
9886
10054
|
-1
|
|
9887
10055
|
);
|
|
9888
10056
|
const resolvedClickableIndex = lastCompletedIndex + 1;
|
|
9889
10057
|
const [visitedMaxIndex, setVisitedMaxIndex] = react.useState(activeIndex);
|
|
9890
|
-
const firstErrorIndex = items.findIndex((
|
|
10058
|
+
const firstErrorIndex = items.findIndex((item2) => item2.error === true);
|
|
9891
10059
|
react.useImperativeHandle(
|
|
9892
10060
|
ref,
|
|
9893
10061
|
() => ({
|
|
@@ -9915,18 +10083,18 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
9915
10083
|
transform: `translateY(${activeItem.offsetTop}px)`
|
|
9916
10084
|
});
|
|
9917
10085
|
}, [activeIndex, vertical, items]);
|
|
9918
|
-
const getState = (
|
|
10086
|
+
const getState = (item2, index) => {
|
|
9919
10087
|
if (index === activeIndex) return "active";
|
|
9920
|
-
if (
|
|
10088
|
+
if (item2.completed != null) return item2.completed ? "completed" : "default";
|
|
9921
10089
|
return "default";
|
|
9922
10090
|
};
|
|
9923
|
-
const emitValueChange = (
|
|
9924
|
-
onValueChange?.(getItemValue(
|
|
10091
|
+
const emitValueChange = (item2, index) => {
|
|
10092
|
+
onValueChange?.(getItemValue(item2, index), item2, index);
|
|
9925
10093
|
};
|
|
9926
10094
|
const isWithinClickableIndex = (index) => index <= resolvedClickableIndex;
|
|
9927
|
-
const renderStepContent = (
|
|
10095
|
+
const renderStepContent = (item2, index, options = {}) => {
|
|
9928
10096
|
const { isVertical = false, roleListItem = true, hovered = false } = options;
|
|
9929
|
-
const state2 = getState(
|
|
10097
|
+
const state2 = getState(item2, index);
|
|
9930
10098
|
const isHorizontalCompleted = !isVertical && state2 === "completed";
|
|
9931
10099
|
const isVerticalCompleted = isVertical && state2 === "completed";
|
|
9932
10100
|
const isVerticalLastActive = isVertical && state2 === "default" && index === visitedMaxIndex;
|
|
@@ -10001,12 +10169,12 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10001
10169
|
children: showsCheckIcon ? /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "check", size: STEPPER_LAYOUT.sequenceIcon, color: "currentColor" }) : index + 1
|
|
10002
10170
|
}
|
|
10003
10171
|
),
|
|
10004
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
10172
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: item2.label })
|
|
10005
10173
|
]
|
|
10006
10174
|
}
|
|
10007
10175
|
);
|
|
10008
10176
|
};
|
|
10009
|
-
const renderClickableStepContent = (
|
|
10177
|
+
const renderClickableStepContent = (item2, index, isVertical = false) => {
|
|
10010
10178
|
const isDisabled = !isWithinClickableIndex(index);
|
|
10011
10179
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10012
10180
|
"button",
|
|
@@ -10019,9 +10187,9 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10019
10187
|
),
|
|
10020
10188
|
style: { font: "inherit", color: "inherit" },
|
|
10021
10189
|
onClick: () => {
|
|
10022
|
-
if (!isDisabled) emitValueChange(
|
|
10190
|
+
if (!isDisabled) emitValueChange(item2, index);
|
|
10023
10191
|
},
|
|
10024
|
-
children: renderStepContent(
|
|
10192
|
+
children: renderStepContent(item2, index, { isVertical, roleListItem: false })
|
|
10025
10193
|
}
|
|
10026
10194
|
);
|
|
10027
10195
|
};
|
|
@@ -10080,10 +10248,10 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10080
10248
|
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: group.group })
|
|
10081
10249
|
}
|
|
10082
10250
|
),
|
|
10083
|
-
group.items.map((
|
|
10251
|
+
group.items.map((item2, itemIndex) => {
|
|
10084
10252
|
const index = group.startIndex + itemIndex;
|
|
10085
|
-
const state2 = getState(
|
|
10086
|
-
const itemValue = getItemValue(
|
|
10253
|
+
const state2 = getState(item2, index);
|
|
10254
|
+
const itemValue = getItemValue(item2, index);
|
|
10087
10255
|
const canClickItem = isClickable && isWithinClickableIndex(index);
|
|
10088
10256
|
const isDisabled = !canClickItem;
|
|
10089
10257
|
const isHovered = hoveredIndex === index && canClickItem && state2 !== "active";
|
|
@@ -10101,12 +10269,12 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10101
10269
|
const handleMouseLeave = () => {
|
|
10102
10270
|
setHoveredIndex((current) => current === index ? null : current);
|
|
10103
10271
|
};
|
|
10104
|
-
const stepContent = renderStepContent(
|
|
10272
|
+
const stepContent = renderStepContent(item2, index, {
|
|
10105
10273
|
isVertical: true,
|
|
10106
10274
|
roleListItem: false,
|
|
10107
10275
|
hovered: isHovered
|
|
10108
10276
|
});
|
|
10109
|
-
const errorBadge =
|
|
10277
|
+
const errorBadge = item2.error ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
10110
10278
|
"span",
|
|
10111
10279
|
{
|
|
10112
10280
|
"aria-hidden": "true",
|
|
@@ -10121,7 +10289,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10121
10289
|
) : null;
|
|
10122
10290
|
const isTooltipHovered = tooltipHoverValue === itemValue;
|
|
10123
10291
|
const isCustomTooltipOpen = customTooltipOpen && index === firstErrorIndex;
|
|
10124
|
-
const showTooltip =
|
|
10292
|
+
const showTooltip = item2.error === true && (isTooltipHovered || isCustomTooltipOpen);
|
|
10125
10293
|
const handleTooltipMouseEnter = () => setTooltipHoverValue(itemValue);
|
|
10126
10294
|
const handleTooltipMouseLeave = () => {
|
|
10127
10295
|
setTooltipHoverValue((current) => current === itemValue ? null : current);
|
|
@@ -10145,7 +10313,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10145
10313
|
onMouseEnter: handleTooltipMouseEnter,
|
|
10146
10314
|
onMouseLeave: handleTooltipMouseLeave,
|
|
10147
10315
|
onClick: isClickable ? () => {
|
|
10148
|
-
if (!isDisabled) emitValueChange(
|
|
10316
|
+
if (!isDisabled) emitValueChange(item2, index);
|
|
10149
10317
|
} : void 0,
|
|
10150
10318
|
children: [
|
|
10151
10319
|
stepContent,
|
|
@@ -10177,13 +10345,13 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10177
10345
|
{
|
|
10178
10346
|
type: "button",
|
|
10179
10347
|
disabled: isDisabled,
|
|
10180
|
-
"aria-label":
|
|
10348
|
+
"aria-label": item2.label,
|
|
10181
10349
|
className: cn(
|
|
10182
10350
|
"absolute inset-0 z-[2] m-0 border-0 bg-transparent p-0 text-left outline-none focus-visible:outline focus-visible:outline-2 focus-visible:outline-(--sys-color-border-accent)",
|
|
10183
10351
|
isDisabled ? "cursor-default" : "cursor-pointer"
|
|
10184
10352
|
),
|
|
10185
10353
|
onClick: () => {
|
|
10186
|
-
if (!isDisabled) emitValueChange(
|
|
10354
|
+
if (!isDisabled) emitValueChange(item2, index);
|
|
10187
10355
|
}
|
|
10188
10356
|
}
|
|
10189
10357
|
),
|
|
@@ -10234,9 +10402,9 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10234
10402
|
lineHeight: config.lineHeight,
|
|
10235
10403
|
...style
|
|
10236
10404
|
},
|
|
10237
|
-
children: items.map((
|
|
10238
|
-
const state2 = getState(
|
|
10239
|
-
const content = isClickable ? /* @__PURE__ */ jsxRuntime.jsx("span", { role: "listitem", "aria-current": state2 === "active" ? "step" : void 0, children: renderClickableStepContent(
|
|
10405
|
+
children: items.map((item2, index) => {
|
|
10406
|
+
const state2 = getState(item2, index);
|
|
10407
|
+
const content = isClickable ? /* @__PURE__ */ jsxRuntime.jsx("span", { role: "listitem", "aria-current": state2 === "active" ? "step" : void 0, children: renderClickableStepContent(item2, index) }) : renderStepContent(item2, index);
|
|
10240
10408
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10241
10409
|
"span",
|
|
10242
10410
|
{
|
|
@@ -10270,7 +10438,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
10270
10438
|
)
|
|
10271
10439
|
]
|
|
10272
10440
|
},
|
|
10273
|
-
getItemValue(
|
|
10441
|
+
getItemValue(item2, index)
|
|
10274
10442
|
);
|
|
10275
10443
|
})
|
|
10276
10444
|
}
|
|
@@ -10813,7 +10981,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
10813
10981
|
const selectedAnchorIndex = react.useMemo(() => {
|
|
10814
10982
|
if (selected.length === 0) return -1;
|
|
10815
10983
|
const selectedSet = new Set(selected);
|
|
10816
|
-
return navigableItems.findIndex((
|
|
10984
|
+
return navigableItems.findIndex((item2) => item2.value != null && selectedSet.has(item2.value));
|
|
10817
10985
|
}, [navigableItems, selected]);
|
|
10818
10986
|
selectedAnchorRef.current = selectedAnchorIndex;
|
|
10819
10987
|
const triggerText = (() => {
|
|
@@ -11106,7 +11274,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
11106
11274
|
setFocusedIndex(-1);
|
|
11107
11275
|
return;
|
|
11108
11276
|
}
|
|
11109
|
-
const index = navigableItems.findIndex((
|
|
11277
|
+
const index = navigableItems.findIndex((item2) => item2.key === key);
|
|
11110
11278
|
if (index >= 0) setFocusedIndex(index);
|
|
11111
11279
|
}
|
|
11112
11280
|
}
|
|
@@ -11971,11 +12139,12 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
11971
12139
|
]
|
|
11972
12140
|
}
|
|
11973
12141
|
),
|
|
11974
|
-
(showPagination ||
|
|
12142
|
+
(showPagination || useRowsPerPageSelect) && // 원본 sd-table__pagination: 테이블 하단에 이어붙는 회색 바(높이 48px, margin-top:-1px로 테두리 겹침).
|
|
11975
12143
|
// SPagination은 전체 폭 기준 중앙, rows-per-page SSelect는 우측에 absolute 배치해 중앙 정렬을 유지한다.
|
|
11976
12144
|
// 루트 높이가 확정된 경우(테이블이 남은 영역을 채우는 배치) 페이지네이션 바가
|
|
11977
12145
|
// 눌리지 않도록 shrink-0으로 48px를 보장한다.
|
|
11978
|
-
// 페이지네이션이 없어도
|
|
12146
|
+
// 페이지네이션이 없어도 rows-per-page 셀렉트가 있으면 이 바를 그린다 — 셀렉트와
|
|
12147
|
+
// 밀도 토글이 사는 곳이 여기다. dense 만으로는 그리지 않는다(빈 바가 남는다).
|
|
11979
12148
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
11980
12149
|
"div",
|
|
11981
12150
|
{
|
|
@@ -11986,7 +12155,7 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
11986
12155
|
),
|
|
11987
12156
|
children: [
|
|
11988
12157
|
showPagination && /* @__PURE__ */ jsxRuntime.jsx(SPagination, { currentPage: displayPage, lastPage, onPageChange: changePage }),
|
|
11989
|
-
|
|
12158
|
+
useRowsPerPageSelect && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "absolute right-[10px] top-1/2 flex -translate-y-1/2 items-center gap-[12px]", children: [
|
|
11990
12159
|
dense && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11991
12160
|
STextLink,
|
|
11992
12161
|
{
|
|
@@ -11998,8 +12167,8 @@ var STable = /* @__PURE__ */ react.forwardRef(function STable2({
|
|
|
11998
12167
|
onClick: () => changeDense(!innerDense)
|
|
11999
12168
|
}
|
|
12000
12169
|
),
|
|
12001
|
-
dense &&
|
|
12002
|
-
|
|
12170
|
+
dense && /* @__PURE__ */ jsxRuntime.jsx(SDivider, { vertical: true, className: "my-[6px]" }),
|
|
12171
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12003
12172
|
SSelect2,
|
|
12004
12173
|
{
|
|
12005
12174
|
options: rowsPerPageOption,
|
|
@@ -13076,7 +13245,7 @@ function SCalendar({
|
|
|
13076
13245
|
}) }),
|
|
13077
13246
|
legend.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
13078
13247
|
/* @__PURE__ */ jsxRuntime.jsx(SDivider, {}),
|
|
13079
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-[var(--cmp-datepicker-calendar-legend-group-gap)] gap-y-[4px] text-[11px] leading-[18px]", children: legend.map((
|
|
13248
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-[var(--cmp-datepicker-calendar-legend-group-gap)] gap-y-[4px] text-[11px] leading-[18px]", children: legend.map((item2) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
13080
13249
|
"span",
|
|
13081
13250
|
{
|
|
13082
13251
|
className: "inline-flex items-center gap-[var(--cmp-datepicker-calendar-legend-gap)]",
|
|
@@ -13085,14 +13254,14 @@ function SCalendar({
|
|
|
13085
13254
|
"span",
|
|
13086
13255
|
{
|
|
13087
13256
|
className: "h-[var(--cmp-datepicker-calendar-day-dot-size)] w-[var(--cmp-datepicker-calendar-day-dot-size)] rounded-full",
|
|
13088
|
-
style: { backgroundColor: resolveColor(
|
|
13257
|
+
style: { backgroundColor: resolveColor(item2.color) },
|
|
13089
13258
|
"aria-hidden": true
|
|
13090
13259
|
}
|
|
13091
13260
|
),
|
|
13092
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children:
|
|
13261
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: item2.label })
|
|
13093
13262
|
]
|
|
13094
13263
|
},
|
|
13095
|
-
`${
|
|
13264
|
+
`${item2.color}|${item2.label}`
|
|
13096
13265
|
)) })
|
|
13097
13266
|
] })
|
|
13098
13267
|
]
|
|
@@ -16059,19 +16228,19 @@ function EditorToolbarBar({
|
|
|
16059
16228
|
closeLinkEditor();
|
|
16060
16229
|
};
|
|
16061
16230
|
const visible = [];
|
|
16062
|
-
for (const
|
|
16063
|
-
if (
|
|
16064
|
-
if (
|
|
16065
|
-
visible.push(
|
|
16231
|
+
for (const item2 of items) {
|
|
16232
|
+
if (item2 === "image" && !onImageUpload) continue;
|
|
16233
|
+
if (item2 === "|" && (visible.length === 0 || visible[visible.length - 1] === "|")) continue;
|
|
16234
|
+
visible.push(item2);
|
|
16066
16235
|
}
|
|
16067
16236
|
while (visible.length > 0 && visible[visible.length - 1] === "|") visible.pop();
|
|
16068
16237
|
const groups = [[]];
|
|
16069
|
-
for (const
|
|
16070
|
-
if (
|
|
16071
|
-
else groups[groups.length - 1].push(
|
|
16238
|
+
for (const item2 of visible) {
|
|
16239
|
+
if (item2 === "|") groups.push([]);
|
|
16240
|
+
else groups[groups.length - 1].push(item2);
|
|
16072
16241
|
}
|
|
16073
|
-
const node = (
|
|
16074
|
-
switch (
|
|
16242
|
+
const node = (item2) => {
|
|
16243
|
+
switch (item2) {
|
|
16075
16244
|
case "heading":
|
|
16076
16245
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown2__namespace.Root, { modal: !insideModal, children: [
|
|
16077
16246
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown2__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -16106,7 +16275,7 @@ function EditorToolbarBar({
|
|
|
16106
16275
|
level
|
|
16107
16276
|
))
|
|
16108
16277
|
] }) })
|
|
16109
|
-
] },
|
|
16278
|
+
] }, item2);
|
|
16110
16279
|
case "fontSize":
|
|
16111
16280
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown2__namespace.Root, { modal: !insideModal, children: [
|
|
16112
16281
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown2__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsxs(ToolbarButton, { label: "\uAE00\uC790 \uD06C\uAE30", disabled: off, className: "px-[6px]", children: [
|
|
@@ -16145,7 +16314,7 @@ function EditorToolbarBar({
|
|
|
16145
16314
|
]
|
|
16146
16315
|
}
|
|
16147
16316
|
) })
|
|
16148
|
-
] },
|
|
16317
|
+
] }, item2);
|
|
16149
16318
|
case "bold":
|
|
16150
16319
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16151
16320
|
ToolbarButton,
|
|
@@ -16157,7 +16326,7 @@ function EditorToolbarBar({
|
|
|
16157
16326
|
onClick: () => chain()?.toggleBold().run(),
|
|
16158
16327
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconBold, { size: ICON_SIZE })
|
|
16159
16328
|
},
|
|
16160
|
-
|
|
16329
|
+
item2
|
|
16161
16330
|
);
|
|
16162
16331
|
case "italic":
|
|
16163
16332
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16170,7 +16339,7 @@ function EditorToolbarBar({
|
|
|
16170
16339
|
onClick: () => chain()?.toggleItalic().run(),
|
|
16171
16340
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconItalic, { size: ICON_SIZE })
|
|
16172
16341
|
},
|
|
16173
|
-
|
|
16342
|
+
item2
|
|
16174
16343
|
);
|
|
16175
16344
|
case "underline":
|
|
16176
16345
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16183,7 +16352,7 @@ function EditorToolbarBar({
|
|
|
16183
16352
|
onClick: () => chain()?.toggleUnderline().run(),
|
|
16184
16353
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconUnderline, { size: ICON_SIZE })
|
|
16185
16354
|
},
|
|
16186
|
-
|
|
16355
|
+
item2
|
|
16187
16356
|
);
|
|
16188
16357
|
case "strike":
|
|
16189
16358
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16196,7 +16365,7 @@ function EditorToolbarBar({
|
|
|
16196
16365
|
onClick: () => chain()?.toggleStrike().run(),
|
|
16197
16366
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconStrike, { size: ICON_SIZE })
|
|
16198
16367
|
},
|
|
16199
|
-
|
|
16368
|
+
item2
|
|
16200
16369
|
);
|
|
16201
16370
|
case "code":
|
|
16202
16371
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16209,7 +16378,7 @@ function EditorToolbarBar({
|
|
|
16209
16378
|
onClick: () => chain()?.toggleCode().run(),
|
|
16210
16379
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconCode, { size: ICON_SIZE })
|
|
16211
16380
|
},
|
|
16212
|
-
|
|
16381
|
+
item2
|
|
16213
16382
|
);
|
|
16214
16383
|
case "color":
|
|
16215
16384
|
if (mobile)
|
|
@@ -16221,7 +16390,7 @@ function EditorToolbarBar({
|
|
|
16221
16390
|
onClick: () => setMobileView("color"),
|
|
16222
16391
|
children: /* @__PURE__ */ jsxRuntime.jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }) })
|
|
16223
16392
|
},
|
|
16224
|
-
|
|
16393
|
+
item2
|
|
16225
16394
|
);
|
|
16226
16395
|
return /* @__PURE__ */ jsxRuntime.jsxs(RDropdown2__namespace.Root, { modal: !insideModal, children: [
|
|
16227
16396
|
/* @__PURE__ */ jsxRuntime.jsx(RDropdown2__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: "\uAE00\uC790\uC0C9", disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ColorIndicator, { color: off ? "currentColor" : activeColor, children: /* @__PURE__ */ jsxRuntime.jsx(IconTextColor, { size: ICON_SIZE }) }) }) }),
|
|
@@ -16236,7 +16405,7 @@ function EditorToolbarBar({
|
|
|
16236
16405
|
onClear: clearColor
|
|
16237
16406
|
}
|
|
16238
16407
|
) }) })
|
|
16239
|
-
] },
|
|
16408
|
+
] }, item2);
|
|
16240
16409
|
case "alignLeft":
|
|
16241
16410
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
16242
16411
|
ToolbarButton,
|
|
@@ -16248,7 +16417,7 @@ function EditorToolbarBar({
|
|
|
16248
16417
|
onClick: () => chain()?.setTextAlign("left").run(),
|
|
16249
16418
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconAlignLeft, { size: ICON_SIZE })
|
|
16250
16419
|
},
|
|
16251
|
-
|
|
16420
|
+
item2
|
|
16252
16421
|
);
|
|
16253
16422
|
case "alignCenter":
|
|
16254
16423
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16261,7 +16430,7 @@ function EditorToolbarBar({
|
|
|
16261
16430
|
onClick: () => chain()?.setTextAlign("center").run(),
|
|
16262
16431
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconAlignCenter, { size: ICON_SIZE })
|
|
16263
16432
|
},
|
|
16264
|
-
|
|
16433
|
+
item2
|
|
16265
16434
|
);
|
|
16266
16435
|
case "alignRight":
|
|
16267
16436
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16274,7 +16443,7 @@ function EditorToolbarBar({
|
|
|
16274
16443
|
onClick: () => chain()?.setTextAlign("right").run(),
|
|
16275
16444
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconAlignRight, { size: ICON_SIZE })
|
|
16276
16445
|
},
|
|
16277
|
-
|
|
16446
|
+
item2
|
|
16278
16447
|
);
|
|
16279
16448
|
case "alignJustify":
|
|
16280
16449
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16287,7 +16456,7 @@ function EditorToolbarBar({
|
|
|
16287
16456
|
onClick: () => chain()?.setTextAlign("justify").run(),
|
|
16288
16457
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconAlignJustify, { size: ICON_SIZE })
|
|
16289
16458
|
},
|
|
16290
|
-
|
|
16459
|
+
item2
|
|
16291
16460
|
);
|
|
16292
16461
|
case "bulletList":
|
|
16293
16462
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16300,7 +16469,7 @@ function EditorToolbarBar({
|
|
|
16300
16469
|
onClick: () => chain()?.toggleBulletList().run(),
|
|
16301
16470
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconBulletList, { size: ICON_SIZE })
|
|
16302
16471
|
},
|
|
16303
|
-
|
|
16472
|
+
item2
|
|
16304
16473
|
);
|
|
16305
16474
|
case "orderedList":
|
|
16306
16475
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16313,7 +16482,7 @@ function EditorToolbarBar({
|
|
|
16313
16482
|
onClick: () => chain()?.toggleOrderedList().run(),
|
|
16314
16483
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconOrderedList, { size: ICON_SIZE })
|
|
16315
16484
|
},
|
|
16316
|
-
|
|
16485
|
+
item2
|
|
16317
16486
|
);
|
|
16318
16487
|
case "taskList":
|
|
16319
16488
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16326,7 +16495,7 @@ function EditorToolbarBar({
|
|
|
16326
16495
|
onClick: () => chain()?.toggleTaskList().run(),
|
|
16327
16496
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconTaskList, { size: ICON_SIZE })
|
|
16328
16497
|
},
|
|
16329
|
-
|
|
16498
|
+
item2
|
|
16330
16499
|
);
|
|
16331
16500
|
case "list": {
|
|
16332
16501
|
const ListIcon = state2.orderedList ? IconOrderedList : state2.taskList ? IconTaskList : IconBulletList;
|
|
@@ -16371,7 +16540,7 @@ function EditorToolbarBar({
|
|
|
16371
16540
|
}
|
|
16372
16541
|
)
|
|
16373
16542
|
] }) })
|
|
16374
|
-
] },
|
|
16543
|
+
] }, item2);
|
|
16375
16544
|
}
|
|
16376
16545
|
case "blockquote":
|
|
16377
16546
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16384,7 +16553,7 @@ function EditorToolbarBar({
|
|
|
16384
16553
|
onClick: () => chain()?.toggleBlockquote().run(),
|
|
16385
16554
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconBlockquote, { size: ICON_SIZE })
|
|
16386
16555
|
},
|
|
16387
|
-
|
|
16556
|
+
item2
|
|
16388
16557
|
);
|
|
16389
16558
|
case "codeBlock":
|
|
16390
16559
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16397,7 +16566,7 @@ function EditorToolbarBar({
|
|
|
16397
16566
|
onClick: () => chain()?.toggleCodeBlock().run(),
|
|
16398
16567
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconCodeBlock, { size: ICON_SIZE })
|
|
16399
16568
|
},
|
|
16400
|
-
|
|
16569
|
+
item2
|
|
16401
16570
|
);
|
|
16402
16571
|
case "horizontalRule":
|
|
16403
16572
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16408,7 +16577,7 @@ function EditorToolbarBar({
|
|
|
16408
16577
|
onClick: () => chain()?.setHorizontalRule().run(),
|
|
16409
16578
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconHorizontalRule, { size: ICON_SIZE })
|
|
16410
16579
|
},
|
|
16411
|
-
|
|
16580
|
+
item2
|
|
16412
16581
|
);
|
|
16413
16582
|
case "link":
|
|
16414
16583
|
if (mobile)
|
|
@@ -16421,7 +16590,7 @@ function EditorToolbarBar({
|
|
|
16421
16590
|
onClick: () => setMobileView("link"),
|
|
16422
16591
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE })
|
|
16423
16592
|
},
|
|
16424
|
-
|
|
16593
|
+
item2
|
|
16425
16594
|
);
|
|
16426
16595
|
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover11__namespace.Root, { open: linkOpen, onOpenChange: setLinkOpen, children: [
|
|
16427
16596
|
/* @__PURE__ */ jsxRuntime.jsx(RPopover11__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: "\uB9C1\uD06C", active: state2.link, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE }) }) }),
|
|
@@ -16446,7 +16615,7 @@ function EditorToolbarBar({
|
|
|
16446
16615
|
)
|
|
16447
16616
|
}
|
|
16448
16617
|
) })
|
|
16449
|
-
] },
|
|
16618
|
+
] }, item2);
|
|
16450
16619
|
case "image":
|
|
16451
16620
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16452
16621
|
ToolbarButton,
|
|
@@ -16460,7 +16629,7 @@ function EditorToolbarBar({
|
|
|
16460
16629
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] leading-[20px]", children: "\uC774\uBBF8\uC9C0" })
|
|
16461
16630
|
]
|
|
16462
16631
|
},
|
|
16463
|
-
|
|
16632
|
+
item2
|
|
16464
16633
|
);
|
|
16465
16634
|
case "table":
|
|
16466
16635
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -16581,7 +16750,7 @@ function EditorToolbarBar({
|
|
|
16581
16750
|
] }) })
|
|
16582
16751
|
]
|
|
16583
16752
|
},
|
|
16584
|
-
|
|
16753
|
+
item2
|
|
16585
16754
|
);
|
|
16586
16755
|
case "undo":
|
|
16587
16756
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16592,7 +16761,7 @@ function EditorToolbarBar({
|
|
|
16592
16761
|
onClick: () => chain()?.undo().run(),
|
|
16593
16762
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconUndo, { size: ICON_SIZE })
|
|
16594
16763
|
},
|
|
16595
|
-
|
|
16764
|
+
item2
|
|
16596
16765
|
);
|
|
16597
16766
|
case "redo":
|
|
16598
16767
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16603,7 +16772,7 @@ function EditorToolbarBar({
|
|
|
16603
16772
|
onClick: () => chain()?.redo().run(),
|
|
16604
16773
|
children: /* @__PURE__ */ jsxRuntime.jsx(IconRedo, { size: ICON_SIZE })
|
|
16605
16774
|
},
|
|
16606
|
-
|
|
16775
|
+
item2
|
|
16607
16776
|
);
|
|
16608
16777
|
default:
|
|
16609
16778
|
return null;
|
|
@@ -19037,8 +19206,8 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
19037
19206
|
onMouseDown: (e) => e.preventDefault(),
|
|
19038
19207
|
children: [
|
|
19039
19208
|
loading2 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "s-chip-input__suggestions-empty p-sd-12 text-center text-12 leading-sd-20 text-(--color-grey-65)", children: "\uBD88\uB7EC\uC624\uB294 \uC911..." }),
|
|
19040
|
-
!effectiveAutocomplete ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-sd-8 px-sd-12 py-sd-6", children: items.map((
|
|
19041
|
-
const selected = values.includes(
|
|
19209
|
+
!effectiveAutocomplete ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-sd-8 px-sd-12 py-sd-6", children: items.map((item2, i) => {
|
|
19210
|
+
const selected = values.includes(item2);
|
|
19042
19211
|
const active = i === activeIndex && !selected;
|
|
19043
19212
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19044
19213
|
"div",
|
|
@@ -19049,14 +19218,14 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
19049
19218
|
style: active ? { outline: "2px solid var(--color-border-accent)", outlineOffset: 1 } : void 0,
|
|
19050
19219
|
onMouseDown: (e) => {
|
|
19051
19220
|
e.preventDefault();
|
|
19052
|
-
if (!selected) addChip(
|
|
19221
|
+
if (!selected) addChip(item2);
|
|
19053
19222
|
},
|
|
19054
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SChip2, { value:
|
|
19223
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SChip2, { value: item2, disabled: selected, editable: false, showRemove: false })
|
|
19055
19224
|
},
|
|
19056
|
-
|
|
19225
|
+
item2
|
|
19057
19226
|
);
|
|
19058
|
-
}) }) : items.map((
|
|
19059
|
-
const selected = values.includes(
|
|
19227
|
+
}) }) : items.map((item2, i) => {
|
|
19228
|
+
const selected = values.includes(item2);
|
|
19060
19229
|
const active = i === activeIndex && !selected;
|
|
19061
19230
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19062
19231
|
"div",
|
|
@@ -19069,10 +19238,10 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
19069
19238
|
),
|
|
19070
19239
|
onMouseDown: (e) => {
|
|
19071
19240
|
e.preventDefault();
|
|
19072
|
-
if (!selected) addChip(
|
|
19241
|
+
if (!selected) addChip(item2);
|
|
19073
19242
|
},
|
|
19074
19243
|
children: [
|
|
19075
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children:
|
|
19244
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children: item2 }),
|
|
19076
19245
|
selected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
19077
19246
|
SIcon,
|
|
19078
19247
|
{
|
|
@@ -19083,7 +19252,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
19083
19252
|
)
|
|
19084
19253
|
]
|
|
19085
19254
|
},
|
|
19086
|
-
|
|
19255
|
+
item2
|
|
19087
19256
|
);
|
|
19088
19257
|
})
|
|
19089
19258
|
]
|
|
@@ -19467,22 +19636,22 @@ function TimeSelector({
|
|
|
19467
19636
|
style: {
|
|
19468
19637
|
padding: "var(--cmp-timepicker-selector-section-paddingY) var(--cmp-timepicker-selector-section-paddingX)"
|
|
19469
19638
|
},
|
|
19470
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "isolate flex", children: ["AM", "PM"].map((
|
|
19471
|
-
const selected =
|
|
19639
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "isolate flex", children: ["AM", "PM"].map((item2, index) => {
|
|
19640
|
+
const selected = item2 === meridiem;
|
|
19472
19641
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19473
19642
|
"button",
|
|
19474
19643
|
{
|
|
19475
19644
|
type: "button",
|
|
19476
|
-
onClick: () => setMeridiem(
|
|
19645
|
+
onClick: () => setMeridiem(item2),
|
|
19477
19646
|
className: cn(
|
|
19478
19647
|
"box-border h-[var(--cmp-textinput-sm-height)] w-[61px] cursor-pointer border border-solid bg-white text-center text-[12px] font-medium leading-[20px]",
|
|
19479
19648
|
index === 0 ? "rounded-l-[var(--cmp-select-sm-radius)]" : "rounded-r-[var(--cmp-select-sm-radius)]",
|
|
19480
19649
|
index === 0 ? "-mr-px" : "",
|
|
19481
19650
|
selected ? "z-[1] border-[var(--cmp-timepicker-border-focus)] text-[var(--cmp-timepicker-border-focus)]" : "border-[var(--cmp-timepicker-border-default)] text-[var(--cmp-field-hint-color)]"
|
|
19482
19651
|
),
|
|
19483
|
-
children:
|
|
19652
|
+
children: item2 === "AM" ? "\uC624\uC804" : "\uC624\uD6C4"
|
|
19484
19653
|
},
|
|
19485
|
-
|
|
19654
|
+
item2
|
|
19486
19655
|
);
|
|
19487
19656
|
}) })
|
|
19488
19657
|
}
|
|
@@ -19703,8 +19872,8 @@ function getTimeMinutes(value) {
|
|
|
19703
19872
|
}
|
|
19704
19873
|
function normalizeTimeRangeValue(value, rangeOrder = "strict") {
|
|
19705
19874
|
if (value == null) return null;
|
|
19706
|
-
const normalized = value.map((
|
|
19707
|
-
const parsed = parseTimeValue(
|
|
19875
|
+
const normalized = value.map((item2) => {
|
|
19876
|
+
const parsed = parseTimeValue(item2);
|
|
19708
19877
|
return formatTimeValue(parsed.hour, parsed.minute);
|
|
19709
19878
|
});
|
|
19710
19879
|
if (rangeOrder === "strict" && getTimeMinutes(normalized[0]) > getTimeMinutes(normalized[1])) {
|
|
@@ -19914,21 +20083,21 @@ function RangeTimeSelector({
|
|
|
19914
20083
|
style: { gap: "var(--cmp-timepicker-selector-range-heading-gap)" },
|
|
19915
20084
|
children: [
|
|
19916
20085
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "whitespace-nowrap text-center text-[12px] font-bold leading-[20px] text-[var(--cmp-timepicker-selector-range-heading-color)]", children: title }),
|
|
19917
|
-
useMeridiem && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "isolate flex", children: ["AM", "PM"].map((
|
|
19918
|
-
const selected =
|
|
20086
|
+
useMeridiem && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "isolate flex", children: ["AM", "PM"].map((item2, index) => {
|
|
20087
|
+
const selected = item2 === getMeridiem(side);
|
|
19919
20088
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19920
20089
|
"button",
|
|
19921
20090
|
{
|
|
19922
20091
|
type: "button",
|
|
19923
|
-
onClick: () => setMeridiem(side,
|
|
20092
|
+
onClick: () => setMeridiem(side, item2),
|
|
19924
20093
|
className: cn(
|
|
19925
20094
|
"box-border h-[var(--cmp-textinput-sm-height)] w-[61px] cursor-pointer border border-solid bg-white text-center text-[12px] font-medium leading-[20px]",
|
|
19926
20095
|
index === 0 ? "rounded-l-[var(--cmp-select-sm-radius)] -mr-px" : "rounded-r-[var(--cmp-select-sm-radius)]",
|
|
19927
20096
|
selected ? "z-[1] border-[var(--cmp-timepicker-border-focus)] text-[var(--cmp-timepicker-border-focus)]" : "border-[var(--cmp-timepicker-border-default)] text-[var(--cmp-field-hint-color)]"
|
|
19928
20097
|
),
|
|
19929
|
-
children:
|
|
20098
|
+
children: item2 === "AM" ? "\uC624\uC804" : "\uC624\uD6C4"
|
|
19930
20099
|
},
|
|
19931
|
-
|
|
20100
|
+
item2
|
|
19932
20101
|
);
|
|
19933
20102
|
}) })
|
|
19934
20103
|
]
|
|
@@ -20252,6 +20421,7 @@ exports.SSelect = SSelect2;
|
|
|
20252
20421
|
exports.SSplitter = SSplitter2;
|
|
20253
20422
|
exports.SStepper = SStepper;
|
|
20254
20423
|
exports.SSwitch = SSwitch;
|
|
20424
|
+
exports.SSystemActionButton = SSystemActionButton;
|
|
20255
20425
|
exports.STEPPER_SIZES = STEPPER_SIZES;
|
|
20256
20426
|
exports.STable = STable;
|
|
20257
20427
|
exports.STableBar = STableBar;
|
|
@@ -20267,6 +20437,11 @@ exports.SToggle = SToggle;
|
|
|
20267
20437
|
exports.STooltip = STooltip2;
|
|
20268
20438
|
exports.STree = STree2;
|
|
20269
20439
|
exports.STreeItem = STreeItem2;
|
|
20440
|
+
exports.SYSTEM_ACTION_BUTTON_COLORS = SYSTEM_ACTION_BUTTON_COLORS;
|
|
20441
|
+
exports.SYSTEM_ACTION_BUTTON_COLOR_CONFIG = SYSTEM_ACTION_BUTTON_COLOR_CONFIG;
|
|
20442
|
+
exports.SYSTEM_ACTION_BUTTON_LAYOUT = SYSTEM_ACTION_BUTTON_LAYOUT;
|
|
20443
|
+
exports.SYSTEM_ACTION_BUTTON_TYPES = SYSTEM_ACTION_BUTTON_TYPES;
|
|
20444
|
+
exports.SYSTEM_ACTION_BUTTON_TYPE_CONFIG = SYSTEM_ACTION_BUTTON_TYPE_CONFIG;
|
|
20270
20445
|
exports.TAG_COLORS = TAG_COLORS;
|
|
20271
20446
|
exports.TAG_SHAPES = TAG_SHAPES;
|
|
20272
20447
|
exports.TAG_SIZES = TAG_SIZES;
|