sellmate-design-system-react 9.0.0-beta.93 → 9.0.0-beta.94
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 +1 -0
- package/dist/components/SButton/button.config.d.ts +2 -1
- package/dist/components/SChatAttachedFile/chatAttachedFile.config.d.ts +2 -2
- package/dist/components/SChatFile/chatFile.config.d.ts +2 -2
- package/dist/components/SChipFilter/README.md +2 -0
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SGnb/gnb.config.d.ts +6 -0
- package/dist/components/SIcon/README.md +3 -1
- package/dist/components/SIcon/SIcon.d.ts +1 -1
- package/dist/components/SLauncherListBox/launcherListBox.config.d.ts +2 -7
- package/dist/components/SLoadingModal/README.md +2 -2
- package/dist/components/SRadioCard/README.md +3 -0
- package/dist/components/SRadioCard/SRadioCard.d.ts +7 -2
- package/dist/components/SRadioCard/SRadioCardGroup.d.ts +3 -1
- package/dist/components/SSelect/README.md +1 -1
- package/dist/components/SSelect/SSelect.d.ts +1 -1
- package/dist/components/SStepper/stepper.config.d.ts +9 -3
- package/dist/components/STabs/tabs.config.d.ts +3 -8
- package/dist/components/STag/tag.config.d.ts +10 -9
- package/dist/components/STimePicker/timepicker.config.d.ts +3 -0
- package/dist/components/STree/README.md +2 -0
- package/dist/index.cjs +804 -647
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +804 -647
- package/dist/index.js.map +1 -1
- package/dist/lib/list-box-item.d.ts +16 -0
- package/dist/lib/tree-row.d.ts +20 -2
- package/dist/llms-full.txt +12 -4
- package/dist/llms.txt +1 -0
- package/dist/styles.css +228 -80
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -3724,16 +3724,21 @@ var SIcon = /* @__PURE__ */ react.forwardRef(function SIcon2({ name, size = 24,
|
|
|
3724
3724
|
const Svg = ICONS[name];
|
|
3725
3725
|
if (!Svg) return null;
|
|
3726
3726
|
const rotateClass = rotate ? { 90: "rotate-90", 180: "rotate-180", 270: "-rotate-90" }[rotate] : void 0;
|
|
3727
|
+
const cssSize = typeof size === "string" && /var\(|calc\(/.test(size);
|
|
3727
3728
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3728
3729
|
"span",
|
|
3729
3730
|
{
|
|
3730
3731
|
ref,
|
|
3731
3732
|
className: cn("inline-flex items-center justify-center", rotateClass, className),
|
|
3732
|
-
style: {
|
|
3733
|
+
style: {
|
|
3734
|
+
color: resolveColor(color),
|
|
3735
|
+
...cssSize && { width: size, height: size },
|
|
3736
|
+
...style
|
|
3737
|
+
},
|
|
3733
3738
|
role: label ? "img" : void 0,
|
|
3734
3739
|
"aria-label": label,
|
|
3735
3740
|
"aria-hidden": label ? void 0 : true,
|
|
3736
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Svg, { size })
|
|
3741
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Svg, { size: cssSize ? "100%" : size })
|
|
3737
3742
|
}
|
|
3738
3743
|
);
|
|
3739
3744
|
});
|
|
@@ -4136,7 +4141,7 @@ var SBadge = /* @__PURE__ */ react.forwardRef(function SBadge2({ color = "blue",
|
|
|
4136
4141
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { ref, className: cn("inline-flex items-center justify-center", className), ...rest, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4137
4142
|
"span",
|
|
4138
4143
|
{
|
|
4139
|
-
className: "rounded-
|
|
4144
|
+
className: "rounded-(--cmp-badge-radius)",
|
|
4140
4145
|
style: {
|
|
4141
4146
|
width: "var(--cmp-badge-size, 6px)",
|
|
4142
4147
|
height: "var(--cmp-badge-size, 6px)",
|
|
@@ -4203,7 +4208,8 @@ var BUTTON_SIZE_CONFIG = {
|
|
|
4203
4208
|
height: "var(--cmp-button-xs-height)",
|
|
4204
4209
|
paddingX: "var(--cmp-button-xs-paddingX)",
|
|
4205
4210
|
gap: "var(--cmp-button-xs-gap)",
|
|
4206
|
-
iconSize:
|
|
4211
|
+
iconSize: "var(--cmp-button-xs-icon)",
|
|
4212
|
+
iconOnlyWidth: "var(--cmp-button-iconOnly-xs-width)",
|
|
4207
4213
|
fontSize: 12,
|
|
4208
4214
|
fontWeight: 500,
|
|
4209
4215
|
radius: "var(--cmp-button-radius-sm)",
|
|
@@ -4213,7 +4219,8 @@ var BUTTON_SIZE_CONFIG = {
|
|
|
4213
4219
|
height: "var(--cmp-button-sm-height)",
|
|
4214
4220
|
paddingX: "var(--cmp-button-sm-paddingX)",
|
|
4215
4221
|
gap: "var(--cmp-button-sm-gap)",
|
|
4216
|
-
iconSize:
|
|
4222
|
+
iconSize: "var(--cmp-button-sm-icon)",
|
|
4223
|
+
iconOnlyWidth: "var(--cmp-button-iconOnly-sm-width)",
|
|
4217
4224
|
fontSize: 12,
|
|
4218
4225
|
fontWeight: 500,
|
|
4219
4226
|
radius: "var(--cmp-button-radius-sm)",
|
|
@@ -4223,7 +4230,8 @@ var BUTTON_SIZE_CONFIG = {
|
|
|
4223
4230
|
height: "var(--cmp-button-md-height)",
|
|
4224
4231
|
paddingX: "var(--cmp-button-md-paddingX)",
|
|
4225
4232
|
gap: "var(--cmp-button-md-gap)",
|
|
4226
|
-
iconSize:
|
|
4233
|
+
iconSize: "var(--cmp-button-md-icon)",
|
|
4234
|
+
iconOnlyWidth: "var(--cmp-button-iconOnly-md-width)",
|
|
4227
4235
|
fontSize: 16,
|
|
4228
4236
|
fontWeight: 500,
|
|
4229
4237
|
radius: "var(--cmp-button-radius-md)",
|
|
@@ -4233,7 +4241,8 @@ var BUTTON_SIZE_CONFIG = {
|
|
|
4233
4241
|
height: "var(--cmp-button-lg-height)",
|
|
4234
4242
|
paddingX: "var(--cmp-button-lg-paddingX)",
|
|
4235
4243
|
gap: "var(--cmp-button-lg-gap)",
|
|
4236
|
-
iconSize:
|
|
4244
|
+
iconSize: "var(--cmp-button-lg-icon)",
|
|
4245
|
+
iconOnlyWidth: "var(--cmp-button-iconOnly-lg-width)",
|
|
4237
4246
|
fontSize: 18,
|
|
4238
4247
|
fontWeight: 500,
|
|
4239
4248
|
radius: "var(--cmp-button-radius-md)",
|
|
@@ -4280,7 +4289,7 @@ var SButton = /* @__PURE__ */ react.forwardRef(function SButton2({
|
|
|
4280
4289
|
"--btn-border": disabled ? BUTTON_DISABLED_BORDER : preset.border,
|
|
4281
4290
|
"--btn-ring": BUTTON_FOCUS_RING,
|
|
4282
4291
|
"minHeight": s.height,
|
|
4283
|
-
"minWidth": iconOnly ? s.
|
|
4292
|
+
"minWidth": iconOnly ? s.iconOnlyWidth : hasLabel ? s.minWidth : void 0,
|
|
4284
4293
|
"padding": iconOnly ? 0 : `0 ${s.paddingX}`,
|
|
4285
4294
|
"borderRadius": s.radius,
|
|
4286
4295
|
"gap": s.gap,
|
|
@@ -4297,7 +4306,7 @@ var SButton = /* @__PURE__ */ react.forwardRef(function SButton2({
|
|
|
4297
4306
|
disabled,
|
|
4298
4307
|
"aria-label": ariaLabel,
|
|
4299
4308
|
className: cn(
|
|
4300
|
-
"inline-flex items-center justify-center whitespace-nowrap border border-solid leading-none transition-colors",
|
|
4309
|
+
"inline-flex items-center justify-center whitespace-nowrap border-[length:var(--cmp-button-border-width-default)] border-solid leading-none transition-colors",
|
|
4301
4310
|
"border-[color:var(--btn-border)] bg-[var(--btn-bg)]",
|
|
4302
4311
|
"outline-none focus-visible:shadow-[0_0_0_2px_var(--btn-ring)]",
|
|
4303
4312
|
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-[var(--btn-bg-hover)]",
|
|
@@ -4415,34 +4424,28 @@ var TAG_COLORS = [
|
|
|
4415
4424
|
];
|
|
4416
4425
|
var TAG_SIZE_CONFIG = {
|
|
4417
4426
|
xs: {
|
|
4418
|
-
height:
|
|
4419
|
-
paddingX:
|
|
4420
|
-
gap:
|
|
4421
|
-
radius:
|
|
4422
|
-
iconSize:
|
|
4423
|
-
|
|
4424
|
-
fontWeight: 500,
|
|
4425
|
-
lineHeight: 18
|
|
4427
|
+
height: "var(--cmp-tag-xs-height)",
|
|
4428
|
+
paddingX: "var(--cmp-tag-xs-paddingX)",
|
|
4429
|
+
gap: "var(--cmp-tag-xs-gap)",
|
|
4430
|
+
radius: "var(--cmp-tag-xs-radius)",
|
|
4431
|
+
iconSize: "var(--cmp-tag-xs-icon)",
|
|
4432
|
+
typography: "typo-feedback-xs"
|
|
4426
4433
|
},
|
|
4427
4434
|
sm: {
|
|
4428
|
-
height:
|
|
4429
|
-
paddingX:
|
|
4430
|
-
gap:
|
|
4431
|
-
radius:
|
|
4432
|
-
iconSize:
|
|
4433
|
-
|
|
4434
|
-
fontWeight: 600,
|
|
4435
|
-
lineHeight: 20
|
|
4435
|
+
height: "var(--cmp-tag-sm-height)",
|
|
4436
|
+
paddingX: "var(--cmp-tag-sm-paddingX)",
|
|
4437
|
+
gap: "var(--cmp-tag-sm-gap)",
|
|
4438
|
+
radius: "var(--cmp-tag-sm-radius)",
|
|
4439
|
+
iconSize: "var(--cmp-tag-sm-icon)",
|
|
4440
|
+
typography: "typo-feedback-sm-semibold"
|
|
4436
4441
|
},
|
|
4437
4442
|
md: {
|
|
4438
|
-
height:
|
|
4439
|
-
paddingX:
|
|
4440
|
-
gap:
|
|
4441
|
-
radius:
|
|
4442
|
-
iconSize:
|
|
4443
|
-
|
|
4444
|
-
fontWeight: 700,
|
|
4445
|
-
lineHeight: 24
|
|
4443
|
+
height: "var(--cmp-tag-md-height)",
|
|
4444
|
+
paddingX: "var(--cmp-tag-md-paddingX)",
|
|
4445
|
+
gap: "var(--cmp-tag-md-gap)",
|
|
4446
|
+
radius: "var(--cmp-tag-md-radius)",
|
|
4447
|
+
iconSize: "var(--cmp-tag-md-icon)",
|
|
4448
|
+
typography: "typo-feedback-md-bold"
|
|
4446
4449
|
}
|
|
4447
4450
|
};
|
|
4448
4451
|
var STag = /* @__PURE__ */ react.forwardRef(function STag2({
|
|
@@ -4470,16 +4473,14 @@ var STag = /* @__PURE__ */ react.forwardRef(function STag2({
|
|
|
4470
4473
|
"aria-label": label || "tag",
|
|
4471
4474
|
className: cn(
|
|
4472
4475
|
"box-border inline-flex w-fit select-none items-center justify-center whitespace-nowrap",
|
|
4476
|
+
s.typography,
|
|
4473
4477
|
className
|
|
4474
4478
|
),
|
|
4475
4479
|
style: {
|
|
4476
4480
|
minHeight: s.height,
|
|
4477
|
-
padding: `0 ${s.paddingX}
|
|
4481
|
+
padding: `0 ${s.paddingX}`,
|
|
4478
4482
|
gap: s.gap,
|
|
4479
4483
|
borderRadius: shape === "pill" ? 999 : s.radius,
|
|
4480
|
-
fontSize: s.fontSize,
|
|
4481
|
-
fontWeight: s.fontWeight,
|
|
4482
|
-
lineHeight: `${s.lineHeight}px`,
|
|
4483
4484
|
background: bgColor,
|
|
4484
4485
|
color: contentColor,
|
|
4485
4486
|
...resolvedWidth != null ? { width: resolvedWidth } : {},
|
|
@@ -4499,11 +4500,11 @@ var STag = /* @__PURE__ */ react.forwardRef(function STag2({
|
|
|
4499
4500
|
);
|
|
4500
4501
|
});
|
|
4501
4502
|
var SIZE = {
|
|
4502
|
-
xxs: { icon:
|
|
4503
|
-
xs: { icon:
|
|
4504
|
-
sm: { icon:
|
|
4505
|
-
md: { icon:
|
|
4506
|
-
lg: { icon:
|
|
4503
|
+
xxs: { icon: "var(--cmp-ghostButton-xxs-icon)", radius: "sm" },
|
|
4504
|
+
xs: { icon: "var(--cmp-ghostButton-xs-icon)", radius: "sm" },
|
|
4505
|
+
sm: { icon: "var(--cmp-ghostButton-sm-icon)", radius: "sm" },
|
|
4506
|
+
md: { icon: "var(--cmp-ghostButton-md-icon)", radius: "md" },
|
|
4507
|
+
lg: { icon: "var(--cmp-ghostButton-lg-icon)", radius: "md" }
|
|
4507
4508
|
};
|
|
4508
4509
|
var TOOLTIP_HIDE_DELAY_MS = 100;
|
|
4509
4510
|
var SGhostButton = /* @__PURE__ */ react.forwardRef(function SGhostButton2({
|
|
@@ -4578,7 +4579,7 @@ var SGhostButton = /* @__PURE__ */ react.forwardRef(function SGhostButton2({
|
|
|
4578
4579
|
"span",
|
|
4579
4580
|
{
|
|
4580
4581
|
"aria-hidden": true,
|
|
4581
|
-
className: "pointer-events-none absolute inset-0 rounded-[inherit] opacity-0 transition-opacity duration-200 group-hover/ghost-button:opacity-
|
|
4582
|
+
className: "pointer-events-none absolute inset-0 rounded-[inherit] opacity-0 transition-opacity duration-200 group-hover/ghost-button:opacity-(--cmp-ghostButton-hover-opacity)",
|
|
4582
4583
|
style: { background: `var(--cmp-ghostButton-${intent}-hover-bg)` }
|
|
4583
4584
|
}
|
|
4584
4585
|
),
|
|
@@ -4802,7 +4803,9 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4802
4803
|
...restContentProps
|
|
4803
4804
|
} = contentProps ?? {};
|
|
4804
4805
|
const contentClass = cn(
|
|
4805
|
-
"z-50 w-fit max-w-[var(--radix-popover-content-available-width)] rounded-
|
|
4806
|
+
"z-50 w-fit max-w-[var(--radix-popover-content-available-width)] rounded-(--cmp-tooltip-radius) px-(--cmp-tooltip-paddingX) py-(--cmp-tooltip-paddingY) shadow-normal-sm",
|
|
4807
|
+
// default 500, danger/warning/accent 700 — tooltip.<type>.typography
|
|
4808
|
+
tooltipType === "default" ? "typo-feedback-sm-medium" : "typo-feedback-sm-bold",
|
|
4806
4809
|
FLOATING_SLIDE_ANIM,
|
|
4807
4810
|
className,
|
|
4808
4811
|
contentPropsClassName
|
|
@@ -4810,7 +4813,6 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4810
4813
|
const contentStyle = {
|
|
4811
4814
|
background: bg,
|
|
4812
4815
|
color: fg,
|
|
4813
|
-
fontWeight: tooltipType === "default" ? 500 : 700,
|
|
4814
4816
|
...style,
|
|
4815
4817
|
...contentPropsStyle
|
|
4816
4818
|
};
|
|
@@ -4851,7 +4853,7 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4851
4853
|
onMouseLeave: isHover ? startHide : void 0,
|
|
4852
4854
|
...restContentProps,
|
|
4853
4855
|
children: [
|
|
4854
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-
|
|
4856
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-(--cmp-tooltip-gap)", children: [
|
|
4855
4857
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: body }),
|
|
4856
4858
|
showClose && !isNone && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4857
4859
|
SGhostButton,
|
|
@@ -4906,16 +4908,20 @@ var FIELD_SIZE = {
|
|
|
4906
4908
|
height: 28,
|
|
4907
4909
|
radius: 4,
|
|
4908
4910
|
fieldGap: 12,
|
|
4909
|
-
|
|
4911
|
+
labelHeight: "var(--cmp-field-label-sm-height)",
|
|
4912
|
+
labelGap: "var(--cmp-field-label-sm-gap)",
|
|
4910
4913
|
labelTypo: "typo-field-sm-bold",
|
|
4914
|
+
labelIcon: "var(--cmp-field-label-sm-icon)",
|
|
4911
4915
|
icon: 16
|
|
4912
4916
|
},
|
|
4913
4917
|
md: {
|
|
4914
4918
|
height: 36,
|
|
4915
4919
|
radius: 6,
|
|
4916
4920
|
fieldGap: 16,
|
|
4917
|
-
|
|
4921
|
+
labelHeight: "var(--cmp-field-label-md-height)",
|
|
4922
|
+
labelGap: "var(--cmp-field-label-md-gap)",
|
|
4918
4923
|
labelTypo: "typo-field-md-bold",
|
|
4924
|
+
labelIcon: "var(--cmp-field-label-md-icon)",
|
|
4919
4925
|
icon: 16
|
|
4920
4926
|
}
|
|
4921
4927
|
};
|
|
@@ -5042,7 +5048,7 @@ var SField = /* @__PURE__ */ react.forwardRef(function SField2({
|
|
|
5042
5048
|
// 라벨과 컨트롤 사이가 간격 토큰보다 넓어진다. 줄 세우기용 labelWidth 도
|
|
5043
5049
|
// 뜻이 없다(아래에 컨트롤이 제 폭으로 선다).
|
|
5044
5050
|
...labelOnTop ? {} : {
|
|
5045
|
-
height: cssLen(labelHeight) ?? s.
|
|
5051
|
+
height: cssLen(labelHeight) ?? s.labelHeight,
|
|
5046
5052
|
marginRight: s.fieldGap,
|
|
5047
5053
|
width: cssLen(labelWidth)
|
|
5048
5054
|
}
|
|
@@ -5052,7 +5058,7 @@ var SField = /* @__PURE__ */ react.forwardRef(function SField2({
|
|
|
5052
5058
|
SIcon,
|
|
5053
5059
|
{
|
|
5054
5060
|
name: icon,
|
|
5055
|
-
size: s.
|
|
5061
|
+
size: s.labelIcon,
|
|
5056
5062
|
color: iconColor,
|
|
5057
5063
|
style: { marginRight: s.labelGap }
|
|
5058
5064
|
}
|
|
@@ -5132,7 +5138,7 @@ var SField = /* @__PURE__ */ react.forwardRef(function SField2({
|
|
|
5132
5138
|
effectiveAddonLabel !== "" && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5133
5139
|
"div",
|
|
5134
5140
|
{
|
|
5135
|
-
className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r border-solid px-(--cmp-field-addonLabel-paddingX)
|
|
5141
|
+
className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r-(length:--cmp-field-addonLabel-border-width) border-solid px-(--cmp-field-addonLabel-paddingX) typo-field-sm-medium",
|
|
5136
5142
|
style: {
|
|
5137
5143
|
// 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
|
|
5138
5144
|
width: cssLen(labelWidth),
|
|
@@ -5152,7 +5158,7 @@ var SField = /* @__PURE__ */ react.forwardRef(function SField2({
|
|
|
5152
5158
|
]
|
|
5153
5159
|
}
|
|
5154
5160
|
),
|
|
5155
|
-
showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) px-(--cmp-field-message-paddingX)
|
|
5161
|
+
showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) px-(--cmp-field-message-paddingX) typo-field-sm-default text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) px-(--cmp-field-message-paddingX) typo-field-sm-default text-(--cmp-field-hint-color)", children: hint }) : null
|
|
5156
5162
|
]
|
|
5157
5163
|
}
|
|
5158
5164
|
)
|
|
@@ -5479,8 +5485,8 @@ var CHAT_ATTACHED_FILE_CONFIG = {
|
|
|
5479
5485
|
contentGap: "gap-(--cmp-chatAttachedFile-content-gap)",
|
|
5480
5486
|
/** 클립 아이콘이 앉는 칩 — 내부 패딩·면·라운드 (높이는 아이콘+패딩이 정한다) */
|
|
5481
5487
|
tile: "p-(--cmp-chatAttachedFile-icon-wrapper-padding) rounded-(--cmp-chatAttachedFile-icon-wrapper-radius) bg-(--cmp-chatAttachedFile-icon-wrapper-bg)",
|
|
5482
|
-
/** 칩 안 클립 아이콘 크기
|
|
5483
|
-
iconSize:
|
|
5488
|
+
/** 칩 안 클립 아이콘 크기 */
|
|
5489
|
+
iconSize: "var(--cmp-chatAttachedFile-icon-size)",
|
|
5484
5490
|
/** 파일명 타이포 프리셋 */
|
|
5485
5491
|
nameTypo: "typo-body-sm-default",
|
|
5486
5492
|
/** 파일명 텍스트색 */
|
|
@@ -5558,8 +5564,8 @@ var CHAT_FILE_CONFIG = {
|
|
|
5558
5564
|
* 디자인팀에 `icon.wrapper.bg.hover` 를 요청해 나오는 대로 갈아끼운다.
|
|
5559
5565
|
*/
|
|
5560
5566
|
tile: "p-(--cmp-chatFile-icon-wrapper-padding) rounded-(--cmp-chatFile-icon-wrapper-radius) bg-(--cmp-chatFile-icon-wrapper-bg) group-hover/chat-file:bg-(--sys-color-bg-frame)",
|
|
5561
|
-
/** 칩 안 클립 아이콘 크기
|
|
5562
|
-
iconSize:
|
|
5567
|
+
/** 칩 안 클립 아이콘 크기 */
|
|
5568
|
+
iconSize: "var(--cmp-chatFile-icon-size)",
|
|
5563
5569
|
/** 파일명 타이포 프리셋 */
|
|
5564
5570
|
nameTypo: "typo-body-md-bold",
|
|
5565
5571
|
/** 파일명·부가정보 텍스트색 */
|
|
@@ -5912,7 +5918,7 @@ var SDraggableItemView = /* @__PURE__ */ react.forwardRef(
|
|
|
5912
5918
|
paddingYClass,
|
|
5913
5919
|
// 항목 사이 구분선은 리스트가 그린다.
|
|
5914
5920
|
bordered && cn(
|
|
5915
|
-
"rounded-(--cmp-listDraggableItem-radius-bordered) border border-(--cmp-listDraggableItem-border-default)",
|
|
5921
|
+
"rounded-(--cmp-listDraggableItem-radius-bordered) border-(length:--cmp-listDraggableItem-border-width-default) border-(--cmp-listDraggableItem-border-default)",
|
|
5916
5922
|
!disabled && !selected && !dragging && cn(
|
|
5917
5923
|
"hover:border-(--cmp-listDraggableItem-bordered-border-hover)",
|
|
5918
5924
|
"[[data-drag-active]_&]:hover:border-(--cmp-listDraggableItem-border-default)"
|
|
@@ -6784,7 +6790,7 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
6784
6790
|
"gap-(--cmp-listExpansionItem-title-gap)",
|
|
6785
6791
|
// 헤더 액션이 있으면 오른쪽 끝 여백은 액션 칸이 갖고, 버튼은 액션과의 간격만 남긴다
|
|
6786
6792
|
hasHeaderAction ? "pr-(--cmp-listExpansionItem-title-gap)" : "pr-(--cmp-listExpansionItem-title-paddingX)",
|
|
6787
|
-
depth === 2 ? "pl-[36px]" : depth === 3 ? "pl-[56px]" : "pl-
|
|
6793
|
+
depth === 2 ? "pl-[36px]" : depth === 3 ? "pl-[56px]" : "pl-(--cmp-listExpansionItem-title-paddingX)",
|
|
6788
6794
|
isExpanded && "text-(--cmp-listExpansionItem-title-text-expanded)"
|
|
6789
6795
|
),
|
|
6790
6796
|
children: [
|
|
@@ -6795,7 +6801,14 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
6795
6801
|
"flex transition-transform duration-200 ease-out motion-reduce:transition-none",
|
|
6796
6802
|
isExpanded && "rotate-180"
|
|
6797
6803
|
),
|
|
6798
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6804
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6805
|
+
SIcon,
|
|
6806
|
+
{
|
|
6807
|
+
name: "caretDown",
|
|
6808
|
+
size: "var(--cmp-listExpansionItem-title-icon)",
|
|
6809
|
+
color: "var(--sys-color-fg-quaternary)"
|
|
6810
|
+
}
|
|
6811
|
+
)
|
|
6799
6812
|
}
|
|
6800
6813
|
),
|
|
6801
6814
|
leadingNode,
|
|
@@ -6833,10 +6846,9 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
6833
6846
|
className: cn(
|
|
6834
6847
|
"group/expansion-item relative overflow-hidden bg-(--cmp-listExpansionItem-title-bg-default)",
|
|
6835
6848
|
// 항목 사이 구분선은 리스트가 그린다.
|
|
6836
|
-
// 보더
|
|
6837
|
-
|
|
6838
|
-
bordered &&
|
|
6839
|
-
bordered && isExpanded && "!border-border-accentLight",
|
|
6849
|
+
// 보더 색: 기본 → hover → 펼침 순으로 listExpansionItem.border 토큰을 쓴다.
|
|
6850
|
+
bordered && "rounded-(--cmp-listExpansionItem-bordered-radius) border border-(--cmp-listExpansionItem-border-default) hover:border-(--cmp-listExpansionItem-border-hover) [&:has(>button:hover)]:border-(--cmp-listExpansionItem-border-hover)",
|
|
6851
|
+
bordered && isExpanded && "!border-(--cmp-listExpansionItem-border-expanded)",
|
|
6840
6852
|
className
|
|
6841
6853
|
),
|
|
6842
6854
|
...rest,
|
|
@@ -6845,7 +6857,7 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
|
|
|
6845
6857
|
"span",
|
|
6846
6858
|
{
|
|
6847
6859
|
"aria-hidden": "true",
|
|
6848
|
-
className: "pointer-events-none absolute bottom-[-1px] left-0 top-0 z-[1] w-(--cmp-
|
|
6860
|
+
className: "pointer-events-none absolute bottom-[-1px] left-0 top-0 z-[1] w-(--cmp-listExpansionItem-accentStripe-width) bg-(--cmp-listExpansionItem-accentStripe-color)"
|
|
6849
6861
|
}
|
|
6850
6862
|
),
|
|
6851
6863
|
hasHeaderAction ? (
|
|
@@ -6952,9 +6964,9 @@ var SListItemImpl = /* @__PURE__ */ react.forwardRef(function SListItem({
|
|
|
6952
6964
|
dense ? "py-(--cmp-listItem-paddingY-dense)" : "py-(--cmp-listItem-paddingY-normal)",
|
|
6953
6965
|
"gap-(--cmp-listItem-gap)",
|
|
6954
6966
|
"pr-(--cmp-listItem-paddingX)",
|
|
6955
|
-
depth === 2 ? "pl-[36px]" : depth === 3 ? "pl-[56px]" : "pl-
|
|
6967
|
+
depth === 2 ? "pl-[36px]" : depth === 3 ? "pl-[56px]" : "pl-(--cmp-listItem-paddingX)",
|
|
6956
6968
|
bordered && cn(
|
|
6957
|
-
"overflow-hidden rounded-(--cmp-listItem-radius-bordered) border border-(--cmp-listItem-border-default)",
|
|
6969
|
+
"overflow-hidden rounded-(--cmp-listItem-radius-bordered) border-(length:--cmp-listItem-border-width-default) border-(--cmp-listItem-border-default)",
|
|
6958
6970
|
isSelected ? "border-(--cmp-listItem-bordered-border-selected)" : isInteractive && "hover:border-(--cmp-listItem-bordered-border-hover)"
|
|
6959
6971
|
),
|
|
6960
6972
|
className
|
|
@@ -7644,7 +7656,7 @@ function SCheckbox({
|
|
|
7644
7656
|
};
|
|
7645
7657
|
const boxBg = disabled ? "var(--cmp-checkbox-bg-disabled)" : inverse ? "transparent" : isChecked ? "var(--cmp-checkbox-checked-bg-default)" : "var(--cmp-checkbox-unchecked-bg-default)";
|
|
7646
7658
|
const boxBorder = disabled ? "var(--cmp-checkbox-border-disabled)" : inverse ? "var(--cmp-checkbox-checked-border-inverse)" : isChecked ? "var(--cmp-checkbox-checked-bg-default)" : "var(--cmp-checkbox-unchecked-border-default)";
|
|
7647
|
-
const iconColor = disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)";
|
|
7659
|
+
const iconColor = disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : inverse ? "var(--cmp-checkbox-checked-icon-inverse)" : "var(--cmp-checkbox-checked-icon-default)";
|
|
7648
7660
|
const labelColor = disabled ? "var(--cmp-checkbox-label-disabled)" : inverse ? "var(--cmp-checkbox-label-inverse)" : "var(--cmp-checkbox-label-default)";
|
|
7649
7661
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7650
7662
|
"label",
|
|
@@ -7673,7 +7685,7 @@ function SCheckbox({
|
|
|
7673
7685
|
SIcon,
|
|
7674
7686
|
{
|
|
7675
7687
|
name: state2 === "indeterminate" ? "checkboxIndeterminate" : "checkboxCheck",
|
|
7676
|
-
size:
|
|
7688
|
+
size: "var(--cmp-checkbox-icon)",
|
|
7677
7689
|
color: iconColor
|
|
7678
7690
|
}
|
|
7679
7691
|
) })
|
|
@@ -7685,11 +7697,19 @@ function SCheckbox({
|
|
|
7685
7697
|
// 찌그러진다 — 띄어쓰기에서만 끊고, 끊을 자리가 없는 긴 토큰만 흘려보낸다
|
|
7686
7698
|
// (SRadio·SSwitch 라벨과 같은 규칙). 두 사본에 함께 걸려야 하므로 바깥 grid 에 준다.
|
|
7687
7699
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "grid break-keep wrap-break-word", style: { color: labelColor }, children: [
|
|
7688
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "typo-body-sm-medium invisible", style: { gridArea: "1 / 1" }, children: label }),
|
|
7689
7700
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7690
7701
|
"span",
|
|
7691
7702
|
{
|
|
7692
|
-
|
|
7703
|
+
"aria-hidden": true,
|
|
7704
|
+
className: "typo-field-sm-medium invisible",
|
|
7705
|
+
style: { gridArea: "1 / 1" },
|
|
7706
|
+
children: label
|
|
7707
|
+
}
|
|
7708
|
+
),
|
|
7709
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7710
|
+
"span",
|
|
7711
|
+
{
|
|
7712
|
+
className: isChecked ? "typo-field-sm-medium" : "typo-field-sm-default",
|
|
7693
7713
|
style: { gridArea: "1 / 1" },
|
|
7694
7714
|
children: label
|
|
7695
7715
|
}
|
|
@@ -7701,18 +7721,18 @@ function SCheckbox({
|
|
|
7701
7721
|
}
|
|
7702
7722
|
var TREE_LABEL_TYPOGRAPHY = {
|
|
7703
7723
|
sm: {
|
|
7704
|
-
default: "typo-
|
|
7705
|
-
selected: "typo-
|
|
7724
|
+
default: "typo-item-sm-default",
|
|
7725
|
+
selected: "typo-item-sm-selected",
|
|
7706
7726
|
rowHeight: "h-[28px]"
|
|
7707
7727
|
},
|
|
7708
7728
|
md: {
|
|
7709
|
-
default: "typo-
|
|
7710
|
-
selected: "typo-
|
|
7729
|
+
default: "typo-item-md-default",
|
|
7730
|
+
selected: "typo-item-md-selected",
|
|
7711
7731
|
rowHeight: "h-[32px]"
|
|
7712
7732
|
}
|
|
7713
7733
|
};
|
|
7714
7734
|
var TREE_ROW_CLASS = "group/tree-item box-border flex w-full items-center gap-(--cmp-tree-item-rowGap) overflow-hidden bg-(--cmp-tree-item-bg-default) px-(--cmp-tree-item-paddingX) text-left hover:bg-(--cmp-tree-item-bg-hover)";
|
|
7715
|
-
var TREE_ROW_BORDER_CLASS = "border-b border-(--cmp-tree-item-border-default)";
|
|
7735
|
+
var TREE_ROW_BORDER_CLASS = "border-b-(length:--cmp-tree-item-border-width-default) border-(--cmp-tree-item-border-default)";
|
|
7716
7736
|
var TREE_ROW_ACTIVE_CLASS = "bg-(--cmp-tree-item-bg-hover)";
|
|
7717
7737
|
var TREE_CONTENT_CLASS = "box-border flex min-w-0 flex-1 items-center gap-(--cmp-tree-item-contentGap)";
|
|
7718
7738
|
function treeLabelClass(size, {
|
|
@@ -7722,12 +7742,49 @@ function treeLabelClass(size, {
|
|
|
7722
7742
|
}) {
|
|
7723
7743
|
const typography = TREE_LABEL_TYPOGRAPHY[size];
|
|
7724
7744
|
return cn(
|
|
7725
|
-
"block min-w-0
|
|
7745
|
+
"block min-w-0 truncate py-(--cmp-tree-item-paddingY) text-(--cmp-tree-item-text-default)",
|
|
7726
7746
|
emphasized ? typography.selected : typography.default,
|
|
7727
7747
|
disabled && "opacity-60",
|
|
7728
|
-
disabled ? "cursor-not-allowed" : selectable ? "cursor-pointer" : void 0
|
|
7748
|
+
disabled ? "cursor-not-allowed" : selectable ? "cursor-pointer" : void 0,
|
|
7749
|
+
selectable && !disabled && "group-hover/tree-label:underline"
|
|
7750
|
+
);
|
|
7751
|
+
}
|
|
7752
|
+
function TreeSelectZone({
|
|
7753
|
+
selectable,
|
|
7754
|
+
disabled = false,
|
|
7755
|
+
control,
|
|
7756
|
+
children
|
|
7757
|
+
}) {
|
|
7758
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7759
|
+
"span",
|
|
7760
|
+
{
|
|
7761
|
+
"data-tree-label": true,
|
|
7762
|
+
className: cn(
|
|
7763
|
+
"flex min-w-0 items-center gap-(--cmp-tree-item-contentGap)",
|
|
7764
|
+
selectable && (disabled ? "cursor-not-allowed" : "group/tree-label cursor-pointer")
|
|
7765
|
+
),
|
|
7766
|
+
children: [
|
|
7767
|
+
control,
|
|
7768
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex min-w-0 items-center gap-sd-8", children: [
|
|
7769
|
+
children,
|
|
7770
|
+
selectable && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
7771
|
+
SIcon,
|
|
7772
|
+
{
|
|
7773
|
+
name: "chevronRight",
|
|
7774
|
+
size: 12,
|
|
7775
|
+
color: "var(--sys-color-fg-quaternary)",
|
|
7776
|
+
className: "hidden shrink-0 group-hover/tree-label:inline-flex"
|
|
7777
|
+
}
|
|
7778
|
+
)
|
|
7779
|
+
] })
|
|
7780
|
+
]
|
|
7781
|
+
}
|
|
7729
7782
|
);
|
|
7730
7783
|
}
|
|
7784
|
+
function isRowSelectClick(event) {
|
|
7785
|
+
const zone = event.target.closest("[data-tree-label]");
|
|
7786
|
+
return zone != null && event.currentTarget.contains(zone);
|
|
7787
|
+
}
|
|
7731
7788
|
function isRowControlClick(event) {
|
|
7732
7789
|
const control = event.target.closest("[data-tree-control]");
|
|
7733
7790
|
return control != null && event.currentTarget.contains(control);
|
|
@@ -7961,7 +8018,7 @@ var STreeItemImpl = /* @__PURE__ */ react.forwardRef(function STreeItem({
|
|
|
7961
8018
|
};
|
|
7962
8019
|
const handleRowClick = (event) => {
|
|
7963
8020
|
if (isRowControlClick(event)) return;
|
|
7964
|
-
if (selectable && event
|
|
8021
|
+
if (selectable && isRowSelectClick(event)) {
|
|
7965
8022
|
handleSelect(event);
|
|
7966
8023
|
return;
|
|
7967
8024
|
}
|
|
@@ -8002,35 +8059,41 @@ var STreeItemImpl = /* @__PURE__ */ react.forwardRef(function STreeItem({
|
|
|
8002
8059
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: TREE_CONTENT_CLASS, children: [
|
|
8003
8060
|
hasChildren ? /* @__PURE__ */ jsxRuntime.jsx(TreeCaret, { expanded, onToggle: (event) => onToggle?.(node, event) }) : /* @__PURE__ */ jsxRuntime.jsx(TreeCaretSpacer, {}),
|
|
8004
8061
|
leadingNode,
|
|
8005
|
-
|
|
8006
|
-
|
|
8062
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8063
|
+
TreeSelectZone,
|
|
8007
8064
|
{
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8065
|
+
selectable,
|
|
8066
|
+
disabled: node.disabled,
|
|
8067
|
+
control: selectable && /* @__PURE__ */ jsxRuntime.jsx(
|
|
8068
|
+
"span",
|
|
8069
|
+
{
|
|
8070
|
+
"data-tree-control": true,
|
|
8071
|
+
className: "flex shrink-0",
|
|
8072
|
+
"aria-hidden": node.disabled ? "true" : void 0,
|
|
8073
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8074
|
+
SCheckbox,
|
|
8075
|
+
{
|
|
8076
|
+
value: checkboxValue,
|
|
8077
|
+
disabled: node.disabled,
|
|
8078
|
+
onValueChange: () => handleSelect()
|
|
8079
|
+
}
|
|
8080
|
+
)
|
|
8081
|
+
}
|
|
8082
|
+
),
|
|
8011
8083
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
8012
|
-
|
|
8084
|
+
"span",
|
|
8013
8085
|
{
|
|
8014
|
-
|
|
8015
|
-
|
|
8016
|
-
|
|
8086
|
+
className: treeLabelClass(size, {
|
|
8087
|
+
emphasized: selected || indeterminate,
|
|
8088
|
+
disabled: Boolean(node.disabled),
|
|
8089
|
+
selectable
|
|
8090
|
+
}),
|
|
8091
|
+
children: node.label
|
|
8017
8092
|
}
|
|
8018
8093
|
)
|
|
8019
8094
|
}
|
|
8020
8095
|
),
|
|
8021
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8022
|
-
"span",
|
|
8023
|
-
{
|
|
8024
|
-
"data-tree-label": true,
|
|
8025
|
-
className: treeLabelClass(size, {
|
|
8026
|
-
emphasized: selected || indeterminate,
|
|
8027
|
-
disabled: Boolean(node.disabled),
|
|
8028
|
-
selectable
|
|
8029
|
-
}),
|
|
8030
|
-
children: node.label
|
|
8031
|
-
}
|
|
8032
|
-
),
|
|
8033
|
-
trailingNode
|
|
8096
|
+
trailingNode != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-auto flex shrink-0", children: trailingNode })
|
|
8034
8097
|
] })
|
|
8035
8098
|
]
|
|
8036
8099
|
}
|
|
@@ -8308,7 +8371,7 @@ var SSectionHeaderCardHeaderImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8308
8371
|
"span",
|
|
8309
8372
|
{
|
|
8310
8373
|
className: cn(
|
|
8311
|
-
"min-w-0 truncate text-(--
|
|
8374
|
+
"min-w-0 truncate text-(--cmp-sectionHeaderCard-title-color)",
|
|
8312
8375
|
titleSizeClass[titleSize]
|
|
8313
8376
|
),
|
|
8314
8377
|
children: title
|
|
@@ -8318,7 +8381,7 @@ var SSectionHeaderCardHeaderImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8318
8381
|
SIcon,
|
|
8319
8382
|
{
|
|
8320
8383
|
name: "asterisk",
|
|
8321
|
-
size:
|
|
8384
|
+
size: "var(--cmp-sectionHeaderCard-required-icon)",
|
|
8322
8385
|
color: "var(--sys-color-fg-accent)",
|
|
8323
8386
|
className: "shrink-0"
|
|
8324
8387
|
}
|
|
@@ -8335,7 +8398,7 @@ var SSectionHeaderCardHeaderImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8335
8398
|
}
|
|
8336
8399
|
)
|
|
8337
8400
|
] }),
|
|
8338
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate
|
|
8401
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate typo-body-sm-default text-(--cmp-sectionHeaderCard-subtitle-color)", children: subtitle }),
|
|
8339
8402
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-auto flex min-h-sd-6 min-w-0 flex-1 items-center justify-end", children: slot })
|
|
8340
8403
|
]
|
|
8341
8404
|
}
|
|
@@ -8371,7 +8434,7 @@ var SSectionHeaderCardRootImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
8371
8434
|
{
|
|
8372
8435
|
ref,
|
|
8373
8436
|
className: cn(
|
|
8374
|
-
"box-border flex w-full flex-col items-stretch overflow-hidden rounded-
|
|
8437
|
+
"box-border flex w-full flex-col items-stretch overflow-hidden rounded-(--cmp-sectionHeaderCard-radius) border border-(--cmp-sectionHeaderCard-border) bg-(--cmp-sectionHeaderCard-body-bg)",
|
|
8375
8438
|
className
|
|
8376
8439
|
),
|
|
8377
8440
|
...rest,
|
|
@@ -8923,18 +8986,25 @@ var SCallout = /* @__PURE__ */ react.forwardRef(function SCallout2({ type = "def
|
|
|
8923
8986
|
hasDangerTitle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8924
8987
|
"div",
|
|
8925
8988
|
{
|
|
8926
|
-
className: "flex shrink-0 flex-col items-center justify-center gap-[var(--cmp-callout-danger-title-gap)] px-[var(--cmp-callout-danger-title-paddingX)] py-[8px]
|
|
8989
|
+
className: "typo-heading-md flex shrink-0 flex-col items-center justify-center gap-[var(--cmp-callout-danger-title-gap)] px-[var(--cmp-callout-danger-title-paddingX)] py-[8px]",
|
|
8927
8990
|
style: {
|
|
8928
8991
|
background: "var(--cmp-callout-danger-title-bg)",
|
|
8929
8992
|
color: "var(--cmp-callout-danger-title-color)"
|
|
8930
8993
|
},
|
|
8931
8994
|
children: [
|
|
8932
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8995
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8996
|
+
SIcon,
|
|
8997
|
+
{
|
|
8998
|
+
name: "warningFill",
|
|
8999
|
+
size: "var(--cmp-callout-danger-title-icon)",
|
|
9000
|
+
color: "var(--cmp-callout-danger-title-color)"
|
|
9001
|
+
}
|
|
9002
|
+
),
|
|
8933
9003
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: DANGER_TITLE_LABEL })
|
|
8934
9004
|
]
|
|
8935
9005
|
}
|
|
8936
9006
|
),
|
|
8937
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-[var(--cmp-callout-body-gap)] px-[var(--cmp-callout-body-paddingX)] py-[var(--cmp-callout-body-paddingY)]
|
|
9007
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 flex-col justify-center gap-[var(--cmp-callout-body-gap)] px-[var(--cmp-callout-body-paddingX)] py-[var(--cmp-callout-body-paddingY)] typo-feedback-sm-regular", children: children ?? /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 flex list-none flex-col justify-center gap-[var(--cmp-callout-body-gap)] p-0", children: renderItems(message) }) })
|
|
8938
9008
|
]
|
|
8939
9009
|
}
|
|
8940
9010
|
);
|
|
@@ -9005,7 +9075,7 @@ var SContextAlert = /* @__PURE__ */ react.forwardRef(function SContextAlert2({ i
|
|
|
9005
9075
|
className: "shrink-0"
|
|
9006
9076
|
}
|
|
9007
9077
|
),
|
|
9008
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 flex-col
|
|
9078
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 flex-col typo-feedback-sm-regular text-[color:var(--cmp-contextAlert-content)]", children: messages.map((m, i) => (
|
|
9009
9079
|
// 메시지는 HTML 문자열을 허용하되, sanitizeInlineHtml 로 살균 후 innerHTML 렌더 (XSS 방어)
|
|
9010
9080
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9011
9081
|
"p",
|
|
@@ -9250,20 +9320,20 @@ var loading = {
|
|
|
9250
9320
|
};
|
|
9251
9321
|
var SIZE_CONFIG = {
|
|
9252
9322
|
sm: {
|
|
9253
|
-
gap:
|
|
9254
|
-
iconSize:
|
|
9323
|
+
gap: "var(--cmp-textLink-sm-gap)",
|
|
9324
|
+
iconSize: "var(--cmp-textLink-sm-icon)",
|
|
9255
9325
|
typo: "typo-control-xs-medium",
|
|
9256
9326
|
underlineTypo: "typo-control-xs-underline"
|
|
9257
9327
|
},
|
|
9258
9328
|
md: {
|
|
9259
|
-
gap:
|
|
9260
|
-
iconSize:
|
|
9329
|
+
gap: "var(--cmp-textLink-md-gap)",
|
|
9330
|
+
iconSize: "var(--cmp-textLink-md-icon)",
|
|
9261
9331
|
typo: "typo-control-sm-default",
|
|
9262
9332
|
underlineTypo: "typo-control-sm-underline"
|
|
9263
9333
|
},
|
|
9264
9334
|
lg: {
|
|
9265
|
-
gap:
|
|
9266
|
-
iconSize:
|
|
9335
|
+
gap: "var(--cmp-textLink-lg-gap)",
|
|
9336
|
+
iconSize: "var(--cmp-textLink-lg-icon)",
|
|
9267
9337
|
typo: "typo-control-md-default",
|
|
9268
9338
|
underlineTypo: "typo-control-md-underline"
|
|
9269
9339
|
}
|
|
@@ -9325,15 +9395,23 @@ var STextLink = /* @__PURE__ */ react.forwardRef(function STextLink2({
|
|
|
9325
9395
|
children: label || children
|
|
9326
9396
|
}
|
|
9327
9397
|
),
|
|
9328
|
-
rightArrow !== "none" &&
|
|
9329
|
-
|
|
9398
|
+
rightArrow !== "none" && // 화살표 칸은 좌측 아이콘과 같은 크기다(textLink.<size>.icon 이 leadingIcon·trailingArrow 공유)
|
|
9399
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9400
|
+
"span",
|
|
9330
9401
|
{
|
|
9331
|
-
|
|
9332
|
-
|
|
9333
|
-
|
|
9334
|
-
|
|
9402
|
+
className: "inline-flex items-center justify-center",
|
|
9403
|
+
style: { width: s.iconSize, height: s.iconSize },
|
|
9404
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9405
|
+
SIcon,
|
|
9406
|
+
{
|
|
9407
|
+
name: rightArrow === "chevron" ? "chevronRight" : "caretRight",
|
|
9408
|
+
size: 12,
|
|
9409
|
+
color: disabled ? "var(--cmp-textLink-icon-disabled)" : "var(--color-grey-65)",
|
|
9410
|
+
rotate: rightArrowRotate
|
|
9411
|
+
}
|
|
9412
|
+
)
|
|
9335
9413
|
}
|
|
9336
|
-
)
|
|
9414
|
+
)
|
|
9337
9415
|
]
|
|
9338
9416
|
}
|
|
9339
9417
|
);
|
|
@@ -9406,24 +9484,38 @@ function DropdownMenuContent({
|
|
|
9406
9484
|
) });
|
|
9407
9485
|
}
|
|
9408
9486
|
var SIZE2 = {
|
|
9409
|
-
xs: {
|
|
9487
|
+
xs: {
|
|
9488
|
+
height: "var(--cmp-button-xs-height)",
|
|
9489
|
+
paddingX: "var(--cmp-button-xs-paddingX)",
|
|
9490
|
+
gap: "var(--cmp-button-dropdown-xs-gap)",
|
|
9491
|
+
arrow: "var(--cmp-button-dropdown-xs-arrow)",
|
|
9492
|
+
toggleWidth: "var(--cmp-button-iconOnly-xs-width)",
|
|
9493
|
+
fontSize: 12,
|
|
9494
|
+
minWidth: 64,
|
|
9495
|
+
splitMinWidth: 72,
|
|
9496
|
+
radius: "var(--cmp-button-radius-sm)"
|
|
9497
|
+
},
|
|
9410
9498
|
sm: {
|
|
9411
|
-
height:
|
|
9412
|
-
paddingX:
|
|
9413
|
-
gap:
|
|
9414
|
-
arrow:
|
|
9499
|
+
height: "var(--cmp-button-sm-height)",
|
|
9500
|
+
paddingX: "var(--cmp-button-sm-paddingX)",
|
|
9501
|
+
gap: "var(--cmp-button-dropdown-sm-gap)",
|
|
9502
|
+
arrow: "var(--cmp-button-dropdown-sm-arrow)",
|
|
9503
|
+
toggleWidth: "var(--cmp-button-iconOnly-sm-width)",
|
|
9415
9504
|
fontSize: 12,
|
|
9416
9505
|
minWidth: 72,
|
|
9417
|
-
splitMinWidth: 88
|
|
9506
|
+
splitMinWidth: 88,
|
|
9507
|
+
radius: "var(--cmp-button-radius-sm)"
|
|
9418
9508
|
},
|
|
9419
9509
|
md: {
|
|
9420
|
-
height:
|
|
9421
|
-
paddingX:
|
|
9422
|
-
gap:
|
|
9423
|
-
arrow:
|
|
9510
|
+
height: "var(--cmp-button-md-height)",
|
|
9511
|
+
paddingX: "var(--cmp-button-md-paddingX)",
|
|
9512
|
+
gap: "var(--cmp-button-dropdown-md-gap)",
|
|
9513
|
+
arrow: "var(--cmp-button-dropdown-md-arrow)",
|
|
9514
|
+
toggleWidth: "var(--cmp-button-iconOnly-md-width)",
|
|
9424
9515
|
fontSize: 16,
|
|
9425
9516
|
minWidth: 100,
|
|
9426
|
-
splitMinWidth: 106
|
|
9517
|
+
splitMinWidth: 106,
|
|
9518
|
+
radius: "var(--cmp-button-radius-md)"
|
|
9427
9519
|
}
|
|
9428
9520
|
};
|
|
9429
9521
|
function splitDivider(color, outline) {
|
|
@@ -9505,7 +9597,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9505
9597
|
);
|
|
9506
9598
|
const splitIcon = /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "etc", size: s.arrow, color: "var(--dd-icon)" });
|
|
9507
9599
|
const triggerBase = cn(
|
|
9508
|
-
"box-border inline-flex items-center whitespace-nowrap border border-solid outline-none transition-colors",
|
|
9600
|
+
"box-border inline-flex items-center whitespace-nowrap border-[length:var(--cmp-button-border-width-default)] border-solid outline-none transition-colors",
|
|
9509
9601
|
"border-[color:var(--dd-border)] bg-[var(--dd-bg)] text-[color:var(--dd-text)]",
|
|
9510
9602
|
disabled ? "cursor-not-allowed" : "cursor-pointer hover:bg-[var(--dd-bg-hover)]"
|
|
9511
9603
|
);
|
|
@@ -9544,10 +9636,12 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9544
9636
|
type: "button",
|
|
9545
9637
|
disabled,
|
|
9546
9638
|
onClick: onLabelClick,
|
|
9547
|
-
className: cn(triggerBase, "flex-1 justify-center
|
|
9639
|
+
className: cn(triggerBase, "flex-1 justify-center border-r-0"),
|
|
9548
9640
|
style: {
|
|
9641
|
+
borderTopLeftRadius: s.radius,
|
|
9642
|
+
borderBottomLeftRadius: s.radius,
|
|
9549
9643
|
minHeight: s.height,
|
|
9550
|
-
padding: `0 ${s.paddingX}
|
|
9644
|
+
padding: `0 ${s.paddingX}`,
|
|
9551
9645
|
fontSize: s.fontSize,
|
|
9552
9646
|
...colorVars
|
|
9553
9647
|
},
|
|
@@ -9561,10 +9655,15 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9561
9655
|
type: "button",
|
|
9562
9656
|
disabled,
|
|
9563
9657
|
"aria-label": "\uBA54\uB274 \uC5F4\uAE30",
|
|
9564
|
-
className: cn(
|
|
9658
|
+
className: cn(
|
|
9659
|
+
triggerBase,
|
|
9660
|
+
"justify-center border-l-[length:var(--cmp-button-border-width-default)]"
|
|
9661
|
+
),
|
|
9565
9662
|
style: {
|
|
9663
|
+
borderTopRightRadius: s.radius,
|
|
9664
|
+
borderBottomRightRadius: s.radius,
|
|
9566
9665
|
minHeight: s.height,
|
|
9567
|
-
minWidth: s.
|
|
9666
|
+
minWidth: s.toggleWidth,
|
|
9568
9667
|
borderLeftColor: disabled ? "var(--cmp-button-border-disabled)" : splitDivider(color, outline),
|
|
9569
9668
|
...colorVars
|
|
9570
9669
|
},
|
|
@@ -9578,11 +9677,12 @@ var SDropdownButtonImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
9578
9677
|
{
|
|
9579
9678
|
type: "button",
|
|
9580
9679
|
disabled,
|
|
9581
|
-
className: cn(triggerBase, "justify-between rounded-
|
|
9680
|
+
className: cn(triggerBase, "justify-between rounded-(--dd-radius)", className),
|
|
9582
9681
|
style: {
|
|
9682
|
+
...{ "--dd-radius": s.radius },
|
|
9583
9683
|
minWidth: s.minWidth,
|
|
9584
9684
|
minHeight: s.height,
|
|
9585
|
-
padding: `0 ${s.paddingX}
|
|
9685
|
+
padding: `0 ${s.paddingX}`,
|
|
9586
9686
|
gap: s.gap,
|
|
9587
9687
|
fontSize: s.fontSize,
|
|
9588
9688
|
...colorVars,
|
|
@@ -9692,13 +9792,13 @@ function SSwitch({
|
|
|
9692
9792
|
style
|
|
9693
9793
|
}) {
|
|
9694
9794
|
const right = rightLabel;
|
|
9695
|
-
const renderLabel = (text) => text ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-
|
|
9795
|
+
const renderLabel = (text) => text ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-field-sm-medium break-keep wrap-break-word", children: text }) : null;
|
|
9696
9796
|
const trackBg = disabled ? value ? "var(--cmp-switch-bg-disabled-on)" : "var(--cmp-switch-bg-disabled-off)" : value ? "var(--cmp-switch-bg-on)" : "var(--cmp-switch-bg-off)";
|
|
9697
9797
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9698
9798
|
"label",
|
|
9699
9799
|
{
|
|
9700
9800
|
className: cn(
|
|
9701
|
-
"inline-flex items-center gap-
|
|
9801
|
+
"inline-flex items-center gap-(--cmp-switch-gap)",
|
|
9702
9802
|
disabled ? "cursor-not-allowed" : "cursor-pointer",
|
|
9703
9803
|
className
|
|
9704
9804
|
),
|
|
@@ -9712,14 +9812,14 @@ function SSwitch({
|
|
|
9712
9812
|
disabled,
|
|
9713
9813
|
onCheckedChange: (v) => onValueChange?.(v),
|
|
9714
9814
|
className: cn(
|
|
9715
|
-
"relative h-
|
|
9815
|
+
"relative h-(--cmp-switch-height) w-(--cmp-switch-width) flex-shrink-0 rounded-(--cmp-switch-radius) p-(--cmp-switch-paddingXY) outline-none transition-colors duration-200",
|
|
9716
9816
|
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
9717
9817
|
),
|
|
9718
9818
|
style: { background: trackBg },
|
|
9719
9819
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9720
9820
|
RSwitch__namespace.Thumb,
|
|
9721
9821
|
{
|
|
9722
|
-
className: "block h-
|
|
9822
|
+
className: "block h-(--cmp-switch-knob-size) w-(--cmp-switch-knob-size) rounded-full shadow-[0_2px_4px_rgba(0,0,0,0.16)] transition-transform duration-200 data-[state=checked]:translate-x-[calc(var(--cmp-switch-width)_-_var(--cmp-switch-knob-size)_-_var(--cmp-switch-paddingXY)_*_2)]",
|
|
9723
9823
|
style: {
|
|
9724
9824
|
background: disabled ? "var(--cmp-switch-knob-disabled)" : "var(--cmp-switch-knob-default)"
|
|
9725
9825
|
}
|
|
@@ -10447,8 +10547,8 @@ var SSystemActionButton = /* @__PURE__ */ react.forwardRef(
|
|
|
10447
10547
|
}
|
|
10448
10548
|
);
|
|
10449
10549
|
var SIZE_CLASSES = {
|
|
10450
|
-
xs: "h-
|
|
10451
|
-
sm: "h-
|
|
10550
|
+
xs: "h-(--cmp-toggle-xs-height) px-(--cmp-toggle-xs-paddingX) typo-control-xs-default",
|
|
10551
|
+
sm: "h-(--cmp-toggle-sm-height) px-(--cmp-toggle-sm-paddingX) typo-control-sm-default"
|
|
10452
10552
|
};
|
|
10453
10553
|
function SToggle({
|
|
10454
10554
|
value = false,
|
|
@@ -10470,7 +10570,7 @@ function SToggle({
|
|
|
10470
10570
|
"aria-pressed": value,
|
|
10471
10571
|
onClick: () => !disabled && onValueChange?.(!value),
|
|
10472
10572
|
className: cn(
|
|
10473
|
-
"box-border inline-flex items-center justify-center whitespace-nowrap rounded-
|
|
10573
|
+
"box-border inline-flex items-center justify-center whitespace-nowrap rounded-(--cmp-toggle-radius) border-(length:--cmp-toggle-border-width) border-solid transition-colors",
|
|
10474
10574
|
SIZE_CLASSES[size],
|
|
10475
10575
|
disabled ? "cursor-not-allowed" : "cursor-pointer",
|
|
10476
10576
|
// 미선택(off) hover 시 파란 채움 + 흰 글자
|
|
@@ -10556,10 +10656,17 @@ function SPopover({
|
|
|
10556
10656
|
menuTitle && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10557
10657
|
"div",
|
|
10558
10658
|
{
|
|
10559
|
-
className: "flex items-center gap-[var(--cmp-popover-title-gap)]
|
|
10659
|
+
className: "typo-feedback-md-bold flex items-center gap-[var(--cmp-popover-title-gap)]",
|
|
10560
10660
|
style: { color: titleColor },
|
|
10561
10661
|
children: [
|
|
10562
|
-
titleIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10662
|
+
titleIcon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10663
|
+
SIcon,
|
|
10664
|
+
{
|
|
10665
|
+
name: titleIcon,
|
|
10666
|
+
size: "var(--cmp-popover-title-leadingIcon)",
|
|
10667
|
+
color: titleColor
|
|
10668
|
+
}
|
|
10669
|
+
),
|
|
10563
10670
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0", children: menuTitle })
|
|
10564
10671
|
]
|
|
10565
10672
|
}
|
|
@@ -10696,14 +10803,14 @@ function SGuide({
|
|
|
10696
10803
|
}
|
|
10697
10804
|
setOpen((o) => !o);
|
|
10698
10805
|
},
|
|
10699
|
-
className: "inline-flex h-[var(--cmp-guide-button-height)] cursor-pointer items-center gap-[var(--cmp-guide-button-gap)] whitespace-nowrap rounded-[var(--cmp-guide-button-radius)] border-[length:var(--cmp-guide-button-border-width)] border-solid px-[var(--cmp-guide-button-paddingX)]
|
|
10806
|
+
className: "inline-flex h-[var(--cmp-guide-button-height)] cursor-pointer items-center gap-[var(--cmp-guide-button-gap)] whitespace-nowrap rounded-[var(--cmp-guide-button-radius)] border-[length:var(--cmp-guide-button-border-width)] border-solid px-[var(--cmp-guide-button-paddingX)] typo-control-xs-medium transition-colors",
|
|
10700
10807
|
style: {
|
|
10701
10808
|
borderColor: active ? activeBg : "var(--cmp-guide-button-border-default)",
|
|
10702
10809
|
background: active ? activeBg : "var(--cmp-guide-button-bg-default)",
|
|
10703
10810
|
color: active ? "var(--cmp-guide-button-text-active)" : "var(--cmp-guide-button-text-default)"
|
|
10704
10811
|
},
|
|
10705
10812
|
children: [
|
|
10706
|
-
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: iconName, size:
|
|
10813
|
+
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: iconName, size: "var(--cmp-guide-button-icon-size)", color: iconColor }),
|
|
10707
10814
|
label || defaultLabel
|
|
10708
10815
|
]
|
|
10709
10816
|
}
|
|
@@ -10753,11 +10860,11 @@ function SGuide({
|
|
|
10753
10860
|
color: isNotion ? "var(--sys-color-fg-primary)" : "var(--cmp-guide-contents-icon)"
|
|
10754
10861
|
}
|
|
10755
10862
|
),
|
|
10756
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "m-0 break-keep text-[
|
|
10863
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "typo-heading-md m-0 break-keep text-[color:var(--cmp-guide-contents-typography-color)]", children: popupTitle || defaultLabel })
|
|
10757
10864
|
]
|
|
10758
10865
|
}
|
|
10759
10866
|
),
|
|
10760
|
-
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 mt-[var(--cmp-guide-contents-gap)] flex w-full list-none flex-col gap-[var(--cmp-guide-contents-body-gap)] p-0
|
|
10867
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "m-0 mt-[var(--cmp-guide-contents-gap)] flex w-full list-none flex-col gap-[var(--cmp-guide-contents-body-gap)] p-0 typo-field-sm-default text-[color:var(--cmp-guide-contents-typography-color)]", children: messages.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10761
10868
|
"li",
|
|
10762
10869
|
{
|
|
10763
10870
|
className: cn(
|
|
@@ -11028,15 +11135,22 @@ function SConfirmModal({
|
|
|
11028
11135
|
showClose: true,
|
|
11029
11136
|
onClose: () => settle(onClose),
|
|
11030
11137
|
className: "w-fit min-w-[min(520px,calc(100dvw-48px))]",
|
|
11031
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-auto flex-col items-center gap-
|
|
11032
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full min-h-0 flex-col items-center gap-
|
|
11033
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-
|
|
11034
|
-
iconName && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11138
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-auto flex-col items-center gap-(--cmp-modal-confirm-gap) px-(--cmp-modal-confirm-paddingX) py-(--cmp-modal-confirm-paddingY)", children: [
|
|
11139
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full min-h-0 flex-col items-center gap-(--cmp-modal-confirm-body-gap) overflow-y-auto", children: [
|
|
11140
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-(--cmp-modal-confirm-title-gap)", children: [
|
|
11141
|
+
iconName && /* @__PURE__ */ jsxRuntime.jsx(
|
|
11142
|
+
SIcon,
|
|
11143
|
+
{
|
|
11144
|
+
name: iconName,
|
|
11145
|
+
size: "var(--cmp-modal-confirm-title-icon)",
|
|
11146
|
+
color: TYPE_ICON_COLOR[type]
|
|
11147
|
+
}
|
|
11148
|
+
),
|
|
11035
11149
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11036
11150
|
"h2",
|
|
11037
11151
|
{
|
|
11038
11152
|
className: cn(
|
|
11039
|
-
"
|
|
11153
|
+
"typo-heading-lg text-center text-[color:var(--cmp-modal-confirm-title-color)]",
|
|
11040
11154
|
titleClassName
|
|
11041
11155
|
),
|
|
11042
11156
|
children: modalTitle
|
|
@@ -11125,7 +11239,7 @@ function SOverlayHeader({
|
|
|
11125
11239
|
{
|
|
11126
11240
|
className: cn(
|
|
11127
11241
|
"m-0 overflow-hidden text-ellipsis whitespace-nowrap",
|
|
11128
|
-
"
|
|
11242
|
+
"typo-heading-md",
|
|
11129
11243
|
titleClassName
|
|
11130
11244
|
),
|
|
11131
11245
|
style: { color: "var(--cmp-overlay-header-title-color)" },
|
|
@@ -11220,8 +11334,8 @@ function SLoadingModal({
|
|
|
11220
11334
|
showButton = false,
|
|
11221
11335
|
buttonLabel,
|
|
11222
11336
|
onButtonClick,
|
|
11223
|
-
width =
|
|
11224
|
-
height =
|
|
11337
|
+
width = "var(--cmp-modal-loading-width)",
|
|
11338
|
+
height = "var(--cmp-modal-loading-height)"
|
|
11225
11339
|
}) {
|
|
11226
11340
|
const resolvedMessage = message ?? DEFAULT_MESSAGE[state2];
|
|
11227
11341
|
const lines = Array.isArray(resolvedMessage) ? resolvedMessage : resolvedMessage ? [resolvedMessage] : [];
|
|
@@ -11237,8 +11351,15 @@ function SLoadingModal({
|
|
|
11237
11351
|
ariaTitle: lines[0] || "\uB85C\uB529 \uC911",
|
|
11238
11352
|
width,
|
|
11239
11353
|
height,
|
|
11240
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-auto flex-col overflow-y-auto px-[32px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "m-auto flex flex-col items-center gap-
|
|
11241
|
-
state2 === "loading" ? progress !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { value: progress }) : /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { indeterminate: true }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
11354
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-auto flex-col overflow-y-auto px-[32px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "m-auto flex flex-col items-center gap-(--cmp-modal-loading-gap)", children: [
|
|
11355
|
+
state2 === "loading" ? progress !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { value: progress }) : /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { indeterminate: true }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
11356
|
+
SIcon,
|
|
11357
|
+
{
|
|
11358
|
+
name: "warningOutline",
|
|
11359
|
+
size: "var(--cmp-modal-loading-content)",
|
|
11360
|
+
color: "var(--cmp-modal-confirm-negative-icon)"
|
|
11361
|
+
}
|
|
11362
|
+
),
|
|
11242
11363
|
lines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-[2px]", children: lines.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
11243
11364
|
"p",
|
|
11244
11365
|
{
|
|
@@ -12026,13 +12147,8 @@ var LAUNCHER_LIST_BOX_LAYOUT = {
|
|
|
12026
12147
|
radius: gnb("launcher-listBox-radius"),
|
|
12027
12148
|
/** 패널 상하좌우 여백 */
|
|
12028
12149
|
padding: gnb("launcher-listBox-paddingAll"),
|
|
12029
|
-
/**
|
|
12030
|
-
|
|
12031
|
-
* 토큰(`component.gnb.launcher.listBox.shadow` = `{shadow.floating}`)은 값이 배열이라
|
|
12032
|
-
* `--cmp-*` 로 나오지 않는다 — 생성기가 스칼라만 내보내기 때문이다. 그래서 그 별칭이
|
|
12033
|
-
* 가리키는 스케일 토큰을 직접 쓴다(같은 값이다).
|
|
12034
|
-
*/
|
|
12035
|
-
shadow: "var(--shadow-floating)",
|
|
12150
|
+
/** 패널 그림자 */
|
|
12151
|
+
shadow: gnb("launcher-listBox-shadow"),
|
|
12036
12152
|
/** 줄 왼쪽 여백 */
|
|
12037
12153
|
itemPaddingLeft: gnb("launcher-button-paddingLeft"),
|
|
12038
12154
|
/** 줄 오른쪽 여백 — 왼쪽보다 좁다(오른쪽 끝은 hover 아이콘 자리다) */
|
|
@@ -12403,20 +12519,19 @@ var GNB_MENU = {
|
|
|
12403
12519
|
depth3PaddingLeft: box2("item-depth3-paddingLeft"),
|
|
12404
12520
|
depth1Icon: box2("item-depth1-icon"),
|
|
12405
12521
|
// box 는 depth1 전용 타이포 토큰이 없어 depth1 도 selected 타이포를 따른다
|
|
12522
|
+
depth1Typo: "typo-navigation-lg-semibold",
|
|
12523
|
+
// token: gnb.box.item.typography.selected
|
|
12524
|
+
itemTypo: "typo-navigation-lg-medium",
|
|
12525
|
+
// token: gnb.box.item.typography.default
|
|
12526
|
+
itemTypoSelected: "typo-navigation-lg-semibold",
|
|
12527
|
+
// token: gnb.box.item.typography.selected
|
|
12406
12528
|
depth1FontSize: 14,
|
|
12407
|
-
// token: gnb.box.item.typography.selected.fontSize
|
|
12408
12529
|
depth1LineHeight: 24,
|
|
12409
|
-
// token: gnb.box.item.typography.selected.lineHeight
|
|
12410
12530
|
depth1FontWeight: 600,
|
|
12411
|
-
// token: gnb.box.item.typography.selected.fontWeight
|
|
12412
12531
|
itemFontSize: 14,
|
|
12413
|
-
// token: gnb.box.item.typography.default.fontSize
|
|
12414
12532
|
itemLineHeight: 24,
|
|
12415
|
-
// token: gnb.box.item.typography.default.lineHeight
|
|
12416
12533
|
itemFontWeight: 500,
|
|
12417
|
-
// token: gnb.box.item.typography.default.fontWeight
|
|
12418
12534
|
itemFontWeightSelected: 600
|
|
12419
|
-
// token: gnb.box.item.typography.selected.fontWeight
|
|
12420
12535
|
},
|
|
12421
12536
|
belt: {
|
|
12422
12537
|
bodyPaddingY: gnb2("body-padding"),
|
|
@@ -12433,20 +12548,19 @@ var GNB_MENU = {
|
|
|
12433
12548
|
depth3PaddingLeft: belt("item-depth3-paddingLeft"),
|
|
12434
12549
|
depth1Icon: belt("item-depth1-icon"),
|
|
12435
12550
|
// belt 전용 depth1 아이콘 토큰(16)
|
|
12551
|
+
depth1Typo: "typo-navigation-md-bold",
|
|
12552
|
+
// token: gnb.belt.item.depth1.typography
|
|
12553
|
+
itemTypo: "typo-navigation-sm-medium",
|
|
12554
|
+
// token: gnb.belt.item.typography.default
|
|
12555
|
+
itemTypoSelected: "typo-navigation-sm-bold",
|
|
12556
|
+
// token: gnb.belt.item.typography.selected
|
|
12436
12557
|
depth1FontSize: 13,
|
|
12437
|
-
// token: gnb.belt.item.depth1.typography.fontSize
|
|
12438
12558
|
depth1LineHeight: 22,
|
|
12439
|
-
// token: gnb.belt.item.depth1.typography.lineHeight
|
|
12440
12559
|
depth1FontWeight: 700,
|
|
12441
|
-
// token: gnb.belt.item.depth1.typography.fontWeight
|
|
12442
12560
|
itemFontSize: 12,
|
|
12443
|
-
// token: gnb.belt.item.typography.default.fontSize
|
|
12444
12561
|
itemLineHeight: 20,
|
|
12445
|
-
// token: gnb.belt.item.typography.default.lineHeight
|
|
12446
12562
|
itemFontWeight: 500,
|
|
12447
|
-
// token: gnb.belt.item.typography.default.fontWeight
|
|
12448
12563
|
itemFontWeightSelected: 700
|
|
12449
|
-
// token: gnb.belt.item.typography.selected.fontWeight
|
|
12450
12564
|
}
|
|
12451
12565
|
};
|
|
12452
12566
|
var GNB_COLORS = {
|
|
@@ -12491,15 +12605,16 @@ var GNB_RAIL = {
|
|
|
12491
12605
|
itemPaddingBottom: gnb2("rail-item-paddingBottom"),
|
|
12492
12606
|
itemRadius: gnb2("rail-item-radius"),
|
|
12493
12607
|
itemIcon: gnb2("rail-item-icon"),
|
|
12494
|
-
// 타이포
|
|
12608
|
+
// 타이포 — 토큰이 가리키는 typo-* 클래스
|
|
12609
|
+
itemTypo: "typo-navigation-xs-medium",
|
|
12610
|
+
// token: gnb.rail.item.typography.default
|
|
12611
|
+
itemTypoSelected: "typo-navigation-xs-bold",
|
|
12612
|
+
// token: gnb.rail.item.typography.selected
|
|
12613
|
+
// 아래 숫자는 공개 export 라 남겨 둔 같은 값이다 — 렌더에는 쓰지 않는다
|
|
12495
12614
|
itemFontSize: 11,
|
|
12496
|
-
// token: gnb.rail.item.typography.default.fontSize
|
|
12497
12615
|
itemLineHeight: 18,
|
|
12498
|
-
// token: gnb.rail.item.typography.default.lineHeight
|
|
12499
12616
|
itemFontWeight: 500,
|
|
12500
|
-
// token: gnb.rail.item.typography.default.fontWeight
|
|
12501
12617
|
itemFontWeightSelected: 700
|
|
12502
|
-
// token: gnb.rail.item.typography.selected.fontWeight
|
|
12503
12618
|
};
|
|
12504
12619
|
var GNB_RAIL_WIDTH = 68;
|
|
12505
12620
|
var GNB_FOLD_MS = 200;
|
|
@@ -12733,7 +12848,10 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
12733
12848
|
type: "button",
|
|
12734
12849
|
disabled: item4.disabled,
|
|
12735
12850
|
"aria-current": isActive ? "true" : void 0,
|
|
12736
|
-
className:
|
|
12851
|
+
className: cn(
|
|
12852
|
+
"box-border flex select-none flex-col items-center border-none bg-transparent transition-colors duration-150",
|
|
12853
|
+
isActive ? GNB_RAIL.itemTypoSelected : GNB_RAIL.itemTypo
|
|
12854
|
+
),
|
|
12737
12855
|
style: {
|
|
12738
12856
|
width: GNB_RAIL.itemWidth,
|
|
12739
12857
|
paddingTop: GNB_RAIL.itemPaddingTop,
|
|
@@ -12743,9 +12861,6 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
12743
12861
|
color: isActive ? C.itemColorActive : C.railFgDefault,
|
|
12744
12862
|
// <button> 의 UA 폰트를 끊고 앱 폰트를 잇는다 (메뉴 아이템과 같은 이유)
|
|
12745
12863
|
fontFamily: "inherit",
|
|
12746
|
-
fontSize: GNB_RAIL.itemFontSize,
|
|
12747
|
-
lineHeight: `${GNB_RAIL.itemLineHeight}px`,
|
|
12748
|
-
fontWeight: isActive ? GNB_RAIL.itemFontWeightSelected : GNB_RAIL.itemFontWeight,
|
|
12749
12864
|
opacity: item4.disabled ? 0.4 : 1,
|
|
12750
12865
|
cursor: item4.disabled ? "not-allowed" : "pointer"
|
|
12751
12866
|
},
|
|
@@ -12784,9 +12899,6 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
12784
12899
|
color: isSelected ? C.itemColorActive : isHovered ? C.itemColorHover : C.itemColorDefault,
|
|
12785
12900
|
// <button> 의 UA 폰트(Arial 13.3px)를 끊고 앱 폰트를 잇는다
|
|
12786
12901
|
fontFamily: "inherit",
|
|
12787
|
-
fontSize: depth === 1 ? M.depth1FontSize : M.itemFontSize,
|
|
12788
|
-
lineHeight: `${depth === 1 ? M.depth1LineHeight : M.itemLineHeight}px`,
|
|
12789
|
-
fontWeight: depth === 1 ? M.depth1FontWeight : isSelected ? M.itemFontWeightSelected : M.itemFontWeight,
|
|
12790
12902
|
opacity: item4.disabled ? 0.4 : 1,
|
|
12791
12903
|
cursor: item4.disabled ? "not-allowed" : "pointer"
|
|
12792
12904
|
};
|
|
@@ -12801,7 +12913,10 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
12801
12913
|
disabled: item4.disabled,
|
|
12802
12914
|
"aria-expanded": hasChildren ? isExpanded : void 0,
|
|
12803
12915
|
"aria-current": isSelected ? "page" : void 0,
|
|
12804
|
-
className:
|
|
12916
|
+
className: cn(
|
|
12917
|
+
"box-border flex select-none items-center border-none bg-transparent text-left transition-colors duration-150",
|
|
12918
|
+
depth === 1 ? M.depth1Typo : isSelected ? M.itemTypoSelected : M.itemTypo
|
|
12919
|
+
),
|
|
12805
12920
|
style: itemStyle,
|
|
12806
12921
|
onClick: () => handleItemClick(item4),
|
|
12807
12922
|
...rowHoverProps(item4),
|
|
@@ -13987,8 +14102,10 @@ var SPageHeader = /* @__PURE__ */ withDisplayName(
|
|
|
13987
14102
|
);
|
|
13988
14103
|
|
|
13989
14104
|
// src/components/STabs/tabs.config.ts
|
|
13990
|
-
var TAB_MAIN_SIZE = {
|
|
13991
|
-
|
|
14105
|
+
var TAB_MAIN_SIZE = {
|
|
14106
|
+
height: "var(--cmp-tab-main-height)",
|
|
14107
|
+
paddingX: "var(--cmp-tab-main-paddingX)"
|
|
14108
|
+
};
|
|
13992
14109
|
var TAB_MAIN_COLORS = {
|
|
13993
14110
|
selected: {
|
|
13994
14111
|
bg: "var(--cmp-tab-main-selected-bg)",
|
|
@@ -14033,7 +14150,7 @@ function STabs({
|
|
|
14033
14150
|
// main(가로): baseline(하단 divider)이 100% 너비로 채워지도록 w-full
|
|
14034
14151
|
sub ? "inline-flex w-fit" : "flex w-full",
|
|
14035
14152
|
isVertical ? "flex-col items-stretch" : "flex-row",
|
|
14036
|
-
sub ? isVertical ? "gap-
|
|
14153
|
+
sub ? isVertical ? "gap-(--cmp-tab-sub-gap-vertical)" : "gap-(--cmp-tab-sub-gap-horizontal)" : "gap-(--cmp-tab-main-container-gap)",
|
|
14037
14154
|
className
|
|
14038
14155
|
),
|
|
14039
14156
|
style: containerStyle,
|
|
@@ -14043,30 +14160,26 @@ function STabs({
|
|
|
14043
14160
|
let tabStyle;
|
|
14044
14161
|
if (sub) {
|
|
14045
14162
|
tabStyle = {
|
|
14046
|
-
height:
|
|
14047
|
-
paddingBottom:
|
|
14048
|
-
fontSize: TAB_TYPOGRAPHY.fontSize,
|
|
14049
|
-
lineHeight: `${TAB_TYPOGRAPHY.lineHeight}px`,
|
|
14163
|
+
height: "var(--cmp-tab-sub-item-height)",
|
|
14164
|
+
paddingBottom: "var(--cmp-tab-sub-content-gap)",
|
|
14050
14165
|
color: selected ? TAB_SUB_COLORS.selected.text : TAB_SUB_COLORS.default.text,
|
|
14051
|
-
borderBottom: `
|
|
14166
|
+
borderBottom: `var(--cmp-tab-sub-border-width) solid ${selected ? TAB_SUB_COLORS.selected.line : "transparent"}`
|
|
14052
14167
|
};
|
|
14053
14168
|
} else {
|
|
14054
14169
|
const border = selected ? TAB_MAIN_COLORS.selected.border : TAB_MAIN_COLORS.default.border;
|
|
14055
14170
|
const selectedBg = TAB_MAIN_COLORS.selected.bg;
|
|
14056
14171
|
tabStyle = {
|
|
14057
14172
|
height: TAB_MAIN_SIZE.height,
|
|
14058
|
-
padding: `0 ${TAB_MAIN_SIZE.paddingX}
|
|
14059
|
-
fontSize: TAB_TYPOGRAPHY.fontSize,
|
|
14060
|
-
lineHeight: `${TAB_TYPOGRAPHY.lineHeight}px`,
|
|
14173
|
+
padding: `0 ${TAB_MAIN_SIZE.paddingX}`,
|
|
14061
14174
|
background: selected ? TAB_MAIN_COLORS.selected.bg : TAB_MAIN_COLORS.default.bg,
|
|
14062
14175
|
color: selected ? TAB_MAIN_COLORS.selected.text : TAB_MAIN_COLORS.default.text,
|
|
14063
|
-
border: `
|
|
14176
|
+
border: `var(--cmp-tab-main-border-width) solid ${border}`,
|
|
14064
14177
|
// 폴더형: 미선택 탭은 baseline 위에, 선택 탭은 baseline(파란선)을 1px 덮어 연결된 것처럼 보이게
|
|
14065
|
-
borderTopLeftRadius:
|
|
14066
|
-
borderTopRightRadius:
|
|
14178
|
+
borderTopLeftRadius: "var(--cmp-tab-main-radius)",
|
|
14179
|
+
borderTopRightRadius: "var(--cmp-tab-main-radius)",
|
|
14067
14180
|
borderBottomLeftRadius: 0,
|
|
14068
14181
|
borderBottomRightRadius: 0,
|
|
14069
|
-
borderBottom: selected ? `
|
|
14182
|
+
borderBottom: selected ? `var(--cmp-tab-main-border-width) solid ${selectedBg}` : "none",
|
|
14070
14183
|
marginBottom: selected ? -1 : 0
|
|
14071
14184
|
};
|
|
14072
14185
|
}
|
|
@@ -14103,12 +14216,17 @@ function STabs({
|
|
|
14103
14216
|
moveTo(tabs.length - 1);
|
|
14104
14217
|
}
|
|
14105
14218
|
},
|
|
14106
|
-
className:
|
|
14219
|
+
className: cn(
|
|
14220
|
+
"relative box-border inline-flex cursor-pointer select-none items-center justify-center whitespace-nowrap outline-none transition-[color,background-color] duration-200",
|
|
14221
|
+
sub ? "gap-[8px]" : "gap-(--cmp-tab-main-gap)",
|
|
14222
|
+
// 타이포 (token: tab.<main|sub>.<selected|default>.typography)
|
|
14223
|
+
selected ? "typo-navigation-sm-bold" : "typo-navigation-sm-default"
|
|
14224
|
+
),
|
|
14107
14225
|
style: tabStyle,
|
|
14108
14226
|
children: [
|
|
14109
14227
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "grid", children: [
|
|
14110
14228
|
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "invisible font-bold", style: { gridArea: "1 / 1" }, children: tab.label }),
|
|
14111
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { gridArea: "1 / 1"
|
|
14229
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { style: { gridArea: "1 / 1" }, children: tab.label })
|
|
14112
14230
|
] }),
|
|
14113
14231
|
tab.badge !== void 0 && tab.badge !== null && tab.badge !== "" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14114
14232
|
STag,
|
|
@@ -14159,7 +14277,7 @@ function SPagination({
|
|
|
14159
14277
|
"aria-label": aria,
|
|
14160
14278
|
onClick,
|
|
14161
14279
|
className: "flex h-[var(--cmp-pagination-height)] w-[var(--cmp-pagination-height)] cursor-pointer items-center justify-center rounded-[var(--cmp-pagination-radius)] border-none bg-transparent hover:bg-[var(--cmp-pagination-item-bg-hover)]",
|
|
14162
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size:
|
|
14280
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: "var(--cmp-pagination-icon)", color: "var(--color-grey-65)" })
|
|
14163
14281
|
}
|
|
14164
14282
|
);
|
|
14165
14283
|
const prevButtons = simple ? currentPage > 1 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -14183,8 +14301,8 @@ function SPagination({
|
|
|
14183
14301
|
style,
|
|
14184
14302
|
children: [
|
|
14185
14303
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-[calc(var(--cmp-pagination-height)*2+var(--cmp-pagination-move-gap))] items-center justify-end gap-[var(--cmp-pagination-move-gap)]", children: prevButtons }),
|
|
14186
|
-
simple ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-simple-gap)] px-[var(--cmp-pagination-paddingX)]
|
|
14187
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "
|
|
14304
|
+
simple ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-simple-gap)] px-[var(--cmp-pagination-paddingX)] typo-control-xs-medium text-[color:var(--cmp-pagination-item-content-default)]", children: [
|
|
14305
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-control-xs-bold text-[color:var(--cmp-pagination-item-content-selected)]", children: currentPage }),
|
|
14188
14306
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "/" }),
|
|
14189
14307
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: lastPage })
|
|
14190
14308
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-[var(--cmp-pagination-move-gap)]", children: pageNumbers.map((n) => {
|
|
@@ -14196,8 +14314,8 @@ function SPagination({
|
|
|
14196
14314
|
"aria-current": selected ? "page" : void 0,
|
|
14197
14315
|
onClick: () => go(n),
|
|
14198
14316
|
className: cn(
|
|
14199
|
-
"box-border flex h-[var(--cmp-pagination-height)] cursor-pointer items-center justify-center rounded-[var(--cmp-pagination-radius)] border-none px-[var(--cmp-pagination-paddingX)]
|
|
14200
|
-
selected ? "bg-[var(--cmp-pagination-item-bg-selected)]
|
|
14317
|
+
"box-border flex h-[var(--cmp-pagination-height)] cursor-pointer items-center justify-center rounded-[var(--cmp-pagination-radius)] border-none px-[var(--cmp-pagination-paddingX)]",
|
|
14318
|
+
selected ? "bg-[var(--cmp-pagination-item-bg-selected)] typo-control-xs-bold text-[color:var(--cmp-pagination-item-content-selected)]" : "bg-transparent typo-control-xs-medium text-[color:var(--cmp-pagination-item-content-default)] hover:bg-[var(--cmp-pagination-item-bg-hover)] hover:text-[color:var(--cmp-pagination-item-content-hover)]"
|
|
14201
14319
|
),
|
|
14202
14320
|
style: { width: itemWidth },
|
|
14203
14321
|
children: n
|
|
@@ -14220,15 +14338,18 @@ var STEPPER_SIZE_CONFIG = {
|
|
|
14220
14338
|
sequenceSize: V2("sm-sequence-size"),
|
|
14221
14339
|
fontSize: "12px",
|
|
14222
14340
|
lineHeight: "20px",
|
|
14223
|
-
|
|
14224
|
-
|
|
14341
|
+
typoDefault: "typo-navigation-sm-medium",
|
|
14342
|
+
typoActive: "typo-navigation-sm-bold",
|
|
14343
|
+
fontWeightActive: 700
|
|
14225
14344
|
},
|
|
14226
14345
|
lg: {
|
|
14227
14346
|
sequenceSize: V2("lg-sequence-size"),
|
|
14228
14347
|
fontSize: "14px",
|
|
14229
14348
|
lineHeight: "24px",
|
|
14230
|
-
|
|
14231
|
-
|
|
14349
|
+
typoDefault: "typo-navigation-lg-medium",
|
|
14350
|
+
// 토큰(navigation.lg.semibold)은 600 인데 지금 700 으로 그린다 — 값이 달라 토큰을 쓰지 않는다
|
|
14351
|
+
typoActive: null,
|
|
14352
|
+
fontWeightActive: 700
|
|
14232
14353
|
}
|
|
14233
14354
|
};
|
|
14234
14355
|
var STEPPER_LAYOUT = {
|
|
@@ -14254,7 +14375,9 @@ var STEPPER_COLORS = {
|
|
|
14254
14375
|
sequenceText: {
|
|
14255
14376
|
active: V2("sequence-text-active"),
|
|
14256
14377
|
default: V2("sequence-text-default"),
|
|
14257
|
-
|
|
14378
|
+
// 완료 시퀀스의 체크 아이콘 색은 전용 토큰이 없다(stepper.sequence.text 에 completed 가 없음).
|
|
14379
|
+
// 진행 중 시퀀스 숫자와 같은 accent 색을 시맨틱 토큰으로 직접 쓴다.
|
|
14380
|
+
completed: "var(--sys-color-fg-accent)"
|
|
14258
14381
|
},
|
|
14259
14382
|
text: {
|
|
14260
14383
|
active: V2("text-active"),
|
|
@@ -14269,14 +14392,15 @@ var STEPPER_HORIZONTAL_COMPLETED_COLORS = {
|
|
|
14269
14392
|
text: STEPPER_COLORS.text.completed
|
|
14270
14393
|
};
|
|
14271
14394
|
var STEPPER_VERTICAL_LAYOUT = {
|
|
14272
|
-
|
|
14395
|
+
/** 세로형 폭. 대응 토큰이 없어 디자인 값을 그대로 쓴다(stepper.vertical 에 width 가 없음). */
|
|
14396
|
+
width: "240px",
|
|
14273
14397
|
itemGap: VF("vertical-item-gap", "12px"),
|
|
14274
14398
|
itemPaddingX: VF("vertical-item-paddingX", "16px"),
|
|
14275
14399
|
itemPaddingY: VF("vertical-item-paddingY", "8px"),
|
|
14276
14400
|
titlePaddingTop: VF("vertical-title-paddingTop", "12px"),
|
|
14277
14401
|
titlePaddingBottom: VF("vertical-title-paddingBottom", "4px"),
|
|
14278
|
-
|
|
14279
|
-
|
|
14402
|
+
/** 구간 제목 타이포 — stepper.vertical.title.typography (= heading.xxs) */
|
|
14403
|
+
titleTypo: "typo-heading-xxs",
|
|
14280
14404
|
accentStripeWidth: VF("vertical-item-accentStripe-width", "2px"),
|
|
14281
14405
|
accentStripeColor: VF("vertical-item-accentStripe-color", "#64ABFF")
|
|
14282
14406
|
};
|
|
@@ -14286,6 +14410,7 @@ var STEPPER_VERTICAL_COLORS = {
|
|
|
14286
14410
|
hover: VF("vertical-item-bg-hover", "#F6F6F6"),
|
|
14287
14411
|
selected: VF("vertical-item-bg-selected", "#EFF6FF")
|
|
14288
14412
|
},
|
|
14413
|
+
titleBg: V2("vertical-title-bg"),
|
|
14289
14414
|
titleText: VF("vertical-title-text", "#004290"),
|
|
14290
14415
|
textDefault: STEPPER_COLORS.text.default,
|
|
14291
14416
|
textCompleted: STEPPER_COLORS.text.completed,
|
|
@@ -14293,9 +14418,10 @@ var STEPPER_VERTICAL_COLORS = {
|
|
|
14293
14418
|
sequenceBgActive: STEPPER_COLORS.sequenceBg.active,
|
|
14294
14419
|
sequenceTextActive: STEPPER_COLORS.sequenceText.active,
|
|
14295
14420
|
sequenceTextDefault: STEPPER_COLORS.sequenceText.default,
|
|
14296
|
-
|
|
14297
|
-
|
|
14298
|
-
|
|
14421
|
+
// 세로형 전용 completed 토큰은 없다 — 가로형과 같은 sequence.*.completed 를 쓴다.
|
|
14422
|
+
sequenceBorderCompleted: STEPPER_COLORS.sequenceBorder.completed,
|
|
14423
|
+
sequenceBgCompleted: STEPPER_COLORS.sequenceBg.completed,
|
|
14424
|
+
sequenceIconCompleted: STEPPER_COLORS.sequenceText.completed,
|
|
14299
14425
|
errorBadge: "#FB4444"
|
|
14300
14426
|
};
|
|
14301
14427
|
var ERROR_TOOLTIP_MESSAGE = "\uD655\uC778\uC774 \uD544\uC694\uD55C \uD56D\uBAA9\uC774 \uC788\uC2B5\uB2C8\uB2E4.";
|
|
@@ -14458,10 +14584,12 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
14458
14584
|
if (isHorizontalCompleted) return STEPPER_HORIZONTAL_COMPLETED_COLORS.sequenceIcon;
|
|
14459
14585
|
return STEPPER_COLORS.sequenceText[state2];
|
|
14460
14586
|
})();
|
|
14587
|
+
const emphasized = state2 === "active" || isVertical && hovered;
|
|
14588
|
+
const itemTypo = emphasized ? config.typoActive : config.typoDefault;
|
|
14461
14589
|
const itemStyle = {
|
|
14462
14590
|
gap: STEPPER_LAYOUT.itemGap,
|
|
14463
14591
|
color: itemColor,
|
|
14464
|
-
fontWeight:
|
|
14592
|
+
fontWeight: itemTypo ? void 0 : config.fontWeightActive
|
|
14465
14593
|
};
|
|
14466
14594
|
const sequenceStyle = {
|
|
14467
14595
|
width: config.sequenceSize,
|
|
@@ -14478,7 +14606,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
14478
14606
|
{
|
|
14479
14607
|
role: roleListItem ? "listitem" : void 0,
|
|
14480
14608
|
"aria-current": roleListItem && state2 === "active" ? "step" : void 0,
|
|
14481
|
-
className: "inline-flex items-center whitespace-nowrap",
|
|
14609
|
+
className: cn("inline-flex items-center whitespace-nowrap", itemTypo),
|
|
14482
14610
|
style: itemStyle,
|
|
14483
14611
|
children: [
|
|
14484
14612
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -14524,7 +14652,7 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
14524
14652
|
className: cn("relative inline-flex flex-col items-start", className),
|
|
14525
14653
|
style: {
|
|
14526
14654
|
width: STEPPER_VERTICAL_LAYOUT.width,
|
|
14527
|
-
// 폭은
|
|
14655
|
+
// 폭은 디자인 값(전용 토큰 없음)이되 부모보다 넓어지지 않는다 — 부모가 세로 스크롤바만큼 좁아지면 따라 줄어
|
|
14528
14656
|
// 가로 넘침(가로 스크롤바)이 생기지 않는다
|
|
14529
14657
|
maxWidth: "100%",
|
|
14530
14658
|
fontSize: config.fontSize,
|
|
@@ -14556,18 +14684,18 @@ var SStepper = /* @__PURE__ */ react.forwardRef(function SStepper2({
|
|
|
14556
14684
|
group.group && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14557
14685
|
"div",
|
|
14558
14686
|
{
|
|
14559
|
-
className:
|
|
14687
|
+
className: cn(
|
|
14688
|
+
"flex w-full items-center overflow-hidden",
|
|
14689
|
+
STEPPER_VERTICAL_LAYOUT.titleTypo
|
|
14690
|
+
),
|
|
14560
14691
|
style: {
|
|
14561
14692
|
gap: STEPPER_VERTICAL_LAYOUT.itemGap,
|
|
14562
14693
|
paddingLeft: STEPPER_VERTICAL_LAYOUT.itemPaddingX,
|
|
14563
14694
|
paddingRight: STEPPER_VERTICAL_LAYOUT.itemPaddingX,
|
|
14564
14695
|
paddingTop: STEPPER_VERTICAL_LAYOUT.titlePaddingTop,
|
|
14565
14696
|
paddingBottom: STEPPER_VERTICAL_LAYOUT.titlePaddingBottom,
|
|
14566
|
-
background: STEPPER_VERTICAL_COLORS.
|
|
14567
|
-
color: STEPPER_VERTICAL_COLORS.titleText
|
|
14568
|
-
fontSize: STEPPER_VERTICAL_LAYOUT.titleFontSize,
|
|
14569
|
-
lineHeight: STEPPER_VERTICAL_LAYOUT.titleLineHeight,
|
|
14570
|
-
fontWeight: 700
|
|
14697
|
+
background: STEPPER_VERTICAL_COLORS.titleBg,
|
|
14698
|
+
color: STEPPER_VERTICAL_COLORS.titleText
|
|
14571
14699
|
},
|
|
14572
14700
|
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "whitespace-nowrap", children: group.group })
|
|
14573
14701
|
}
|
|
@@ -15146,8 +15274,8 @@ var CalendarDayCard = /* @__PURE__ */ react.forwardRef(function CalendarDayCard2
|
|
|
15146
15274
|
{
|
|
15147
15275
|
className: cn(
|
|
15148
15276
|
"inline-flex size-(--cmp-calendarBoard-daySequence-size) items-center justify-center rounded-(--cmp-calendarBoard-daySequence-radius)",
|
|
15149
|
-
isToday ? "typo-
|
|
15150
|
-
"typo-
|
|
15277
|
+
isToday ? "typo-item-md-selected bg-(--cmp-calendarBoard-daySequence-bg-today) text-(--cmp-calendarBoard-daySequence-text-today)" : cn(
|
|
15278
|
+
"typo-item-md-default",
|
|
15151
15279
|
inCurrentMonth ? "text-(--cmp-calendarBoard-daySequence-text-default)" : "text-(--cmp-calendarBoard-daySequence-text-otherMonth)"
|
|
15152
15280
|
),
|
|
15153
15281
|
// 오늘이 아니면서 선택된 날은 테두리 원으로 표시한다 (오늘은 이미 채운 원이라 겹치지 않는다).
|
|
@@ -15705,14 +15833,12 @@ function clampToAvailableHeight(value, availableHeight) {
|
|
|
15705
15833
|
}
|
|
15706
15834
|
var FONT = {
|
|
15707
15835
|
sm: {
|
|
15708
|
-
|
|
15709
|
-
lineHeight: 20,
|
|
15836
|
+
typo: "typo-field-sm-default",
|
|
15710
15837
|
paddingX: "var(--cmp-textinput-sm-paddingX)",
|
|
15711
15838
|
gap: "var(--cmp-textinput-sm-gap)"
|
|
15712
15839
|
},
|
|
15713
15840
|
md: {
|
|
15714
|
-
|
|
15715
|
-
lineHeight: 24,
|
|
15841
|
+
typo: "typo-field-md-default",
|
|
15716
15842
|
paddingX: "var(--cmp-textinput-md-paddingX)",
|
|
15717
15843
|
gap: "var(--cmp-textinput-md-gap)"
|
|
15718
15844
|
}
|
|
@@ -15751,12 +15877,10 @@ var SSearchInput = /* @__PURE__ */ react.forwardRef(function SSearchInput2({
|
|
|
15751
15877
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
15752
15878
|
"div",
|
|
15753
15879
|
{
|
|
15754
|
-
className: "flex h-full w-full items-center",
|
|
15880
|
+
className: cn("flex h-full w-full items-center", f.typo),
|
|
15755
15881
|
style: {
|
|
15756
15882
|
gap: f.gap,
|
|
15757
|
-
padding: `0 ${f.paddingX}
|
|
15758
|
-
fontSize: f.fontSize,
|
|
15759
|
-
lineHeight: `${f.lineHeight}px`
|
|
15883
|
+
padding: `0 ${f.paddingX}`
|
|
15760
15884
|
},
|
|
15761
15885
|
children: [
|
|
15762
15886
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -15817,6 +15941,18 @@ var SSearchInput = /* @__PURE__ */ react.forwardRef(function SSearchInput2({
|
|
|
15817
15941
|
);
|
|
15818
15942
|
});
|
|
15819
15943
|
|
|
15944
|
+
// src/lib/list-box-item.ts
|
|
15945
|
+
var LIST_BOX_ITEM_PADDING_LEFT = {
|
|
15946
|
+
1: "var(--cmp-listBoxItem-paddingLeft-depth1)",
|
|
15947
|
+
2: "var(--cmp-listBoxItem-paddingLeft-depth2)",
|
|
15948
|
+
3: "var(--cmp-listBoxItem-paddingLeft-depth3)"
|
|
15949
|
+
};
|
|
15950
|
+
var LIST_BOX_ITEM_PADDING_Y_RIGHT = {
|
|
15951
|
+
paddingTop: "var(--cmp-listBoxItem-paddingY)",
|
|
15952
|
+
paddingBottom: "var(--cmp-listBoxItem-paddingY)",
|
|
15953
|
+
paddingRight: "var(--cmp-listBoxItem-paddingRight)"
|
|
15954
|
+
};
|
|
15955
|
+
|
|
15820
15956
|
// src/components/SSelect/select.config.ts
|
|
15821
15957
|
function flattenOptions(options, depth = 1, inheritDisabled = true) {
|
|
15822
15958
|
const out = [];
|
|
@@ -16090,6 +16226,14 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16090
16226
|
}, [insideModal, pendingOpen, portalContainer]);
|
|
16091
16227
|
const requestOpenRef = react.useRef(requestOpen);
|
|
16092
16228
|
requestOpenRef.current = requestOpen;
|
|
16229
|
+
react.useEffect(() => {
|
|
16230
|
+
if (!label || effectiveDisabled) return;
|
|
16231
|
+
const labelEl = document.getElementById(fieldLabelId(triggerId));
|
|
16232
|
+
if (!labelEl) return;
|
|
16233
|
+
const toggle = () => requestOpenRef.current(!open);
|
|
16234
|
+
labelEl.addEventListener("click", toggle);
|
|
16235
|
+
return () => labelEl.removeEventListener("click", toggle);
|
|
16236
|
+
}, [label, effectiveDisabled, triggerId, open]);
|
|
16093
16237
|
react.useImperativeHandle(
|
|
16094
16238
|
ref,
|
|
16095
16239
|
() => ({
|
|
@@ -16371,6 +16515,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16371
16515
|
const handleClear = () => {
|
|
16372
16516
|
emit3([]);
|
|
16373
16517
|
if (rules && rules.length > 0) setRuleError(runRules(multi ? [] : "", rules));
|
|
16518
|
+
triggerRef.current?.focus();
|
|
16374
16519
|
};
|
|
16375
16520
|
const handleRemoveChip = (targets) => {
|
|
16376
16521
|
const remove = new Set(targets);
|
|
@@ -16566,6 +16711,15 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16566
16711
|
commitOpen(false);
|
|
16567
16712
|
}
|
|
16568
16713
|
};
|
|
16714
|
+
const handleTriggerKeyDown = (event) => {
|
|
16715
|
+
if (event.target !== event.currentTarget || effectiveDisabled) return;
|
|
16716
|
+
if (event.key === " " || !open && event.key === "Enter") {
|
|
16717
|
+
event.preventDefault();
|
|
16718
|
+
requestOpen(!open);
|
|
16719
|
+
return;
|
|
16720
|
+
}
|
|
16721
|
+
handleKeyDown(event);
|
|
16722
|
+
};
|
|
16569
16723
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16570
16724
|
SField,
|
|
16571
16725
|
{
|
|
@@ -16593,23 +16747,28 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16593
16747
|
children: [
|
|
16594
16748
|
name && /* @__PURE__ */ jsxRuntime.jsx("input", { type: "hidden", name, value: selected.join(",") }),
|
|
16595
16749
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
16596
|
-
"
|
|
16750
|
+
"div",
|
|
16597
16751
|
{
|
|
16598
16752
|
ref: triggerRef,
|
|
16599
16753
|
id: triggerId,
|
|
16600
|
-
|
|
16601
|
-
|
|
16602
|
-
"aria-
|
|
16754
|
+
role: "combobox",
|
|
16755
|
+
tabIndex: effectiveDisabled ? -1 : 0,
|
|
16756
|
+
"aria-disabled": effectiveDisabled || void 0,
|
|
16757
|
+
"aria-labelledby": label ? `${fieldLabelId(triggerId)} ${triggerId}` : triggerId,
|
|
16603
16758
|
"aria-haspopup": isTree ? "tree" : "listbox",
|
|
16604
16759
|
"aria-expanded": open,
|
|
16605
16760
|
"aria-controls": open ? listboxId : void 0,
|
|
16606
16761
|
"aria-activedescendant": open && focusedIndex >= 0 ? activeOptionId : void 0,
|
|
16607
16762
|
"aria-busy": showTriggerSpinner || void 0,
|
|
16608
|
-
onClick: () =>
|
|
16609
|
-
|
|
16763
|
+
onClick: () => {
|
|
16764
|
+
if (effectiveDisabled) return;
|
|
16765
|
+
requestOpen(!open);
|
|
16766
|
+
},
|
|
16767
|
+
onKeyDown: handleTriggerKeyDown,
|
|
16610
16768
|
className: cn(
|
|
16611
|
-
"flex h-full w-full
|
|
16612
|
-
|
|
16769
|
+
"flex h-full w-full items-center justify-between bg-transparent text-left outline-none",
|
|
16770
|
+
effectiveDisabled ? "cursor-not-allowed" : "cursor-pointer",
|
|
16771
|
+
size === "md" ? "typo-field-md-default gap-(--cmp-select-md-gap) px-(--cmp-select-md-paddingX)" : "typo-field-sm-default gap-(--cmp-select-sm-gap) px-(--cmp-select-sm-paddingX)"
|
|
16613
16772
|
),
|
|
16614
16773
|
style: {
|
|
16615
16774
|
// 칩 한 줄이 기본 높이 안에서 세로 가운데에 오는 여백. 줄이 늘면 같은 여백을 유지한 채 트리거가 커진다.
|
|
@@ -16731,7 +16890,7 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16731
16890
|
"div",
|
|
16732
16891
|
{
|
|
16733
16892
|
ref: searchBarRef,
|
|
16734
|
-
className: "sticky top-0 z-[1] bg-[var(--cmp-listBox-bg)] px-(--cmp-listBoxItem-search-paddingX) py-(--cmp-listBoxItem-search-paddingY)",
|
|
16893
|
+
className: "sticky top-0 z-[1] border-b-(length:--border-width-1) border-solid border-[color:var(--sys-color-divider-default)] bg-[var(--cmp-listBox-bg)] px-(--cmp-listBoxItem-search-paddingX) py-(--cmp-listBoxItem-search-paddingY)",
|
|
16735
16894
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
16736
16895
|
SSearchInput,
|
|
16737
16896
|
{
|
|
@@ -16766,7 +16925,6 @@ var SSelectImpl = /* @__PURE__ */ react.forwardRef(function SSelect({
|
|
|
16766
16925
|
groupLeafValues,
|
|
16767
16926
|
focusedValue: navigableItems[focusedIndex]?.key,
|
|
16768
16927
|
showSelectAll: selectAllVisible,
|
|
16769
|
-
searchVisible,
|
|
16770
16928
|
selectAllLabel: allSelectedLabel,
|
|
16771
16929
|
selectAllSelected: allSelected,
|
|
16772
16930
|
onSelectAll: handleSelectAll,
|
|
@@ -16823,7 +16981,6 @@ function ItemList({
|
|
|
16823
16981
|
groupLeafValues,
|
|
16824
16982
|
focusedValue,
|
|
16825
16983
|
showSelectAll,
|
|
16826
|
-
searchVisible,
|
|
16827
16984
|
selectAllLabel,
|
|
16828
16985
|
selectAllSelected,
|
|
16829
16986
|
onSelectAll,
|
|
@@ -16834,7 +16991,7 @@ function ItemList({
|
|
|
16834
16991
|
const selectedSet = react.useMemo(() => new Set(selected), [selected]);
|
|
16835
16992
|
const checkboxShiftRef = react.useRef(false);
|
|
16836
16993
|
const itemBase = cn(
|
|
16837
|
-
"group/select-item flex w-full cursor-pointer select-none items-center gap-
|
|
16994
|
+
"group/select-item flex w-full cursor-pointer select-none items-center gap-(--cmp-listBoxItem-gap) border-none bg-transparent text-left typo-field-sm-default outline-none",
|
|
16838
16995
|
"text-[color:var(--cmp-listBoxItem-content-default)]",
|
|
16839
16996
|
"disabled:cursor-not-allowed disabled:text-[color:var(--cmp-listBoxItem-content-disabled)]"
|
|
16840
16997
|
);
|
|
@@ -16871,7 +17028,7 @@ function ItemList({
|
|
|
16871
17028
|
itemBase,
|
|
16872
17029
|
focusedValue === "__select_all__" && "bg-[var(--cmp-listBoxItem-bg-hover)] text-[color:var(--cmp-listBoxItem-content-hover)]"
|
|
16873
17030
|
),
|
|
16874
|
-
style: {
|
|
17031
|
+
style: { ...LIST_BOX_ITEM_PADDING_Y_RIGHT, paddingLeft: LIST_BOX_ITEM_PADDING_LEFT[1] },
|
|
16875
17032
|
onMouseEnter: () => onHoverValue("__select_all__"),
|
|
16876
17033
|
onMouseLeave: () => onHoverValue(null),
|
|
16877
17034
|
onClick: onSelectAll,
|
|
@@ -16884,7 +17041,7 @@ function ItemList({
|
|
|
16884
17041
|
topSpacer > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, style: { height: topSpacer } }),
|
|
16885
17042
|
items.map((o, windowIndex) => {
|
|
16886
17043
|
const idx = windowIndex + indexOffset;
|
|
16887
|
-
const padLeft = o.depth === 1 ?
|
|
17044
|
+
const padLeft = LIST_BOX_ITEM_PADDING_LEFT[o.depth === 1 ? 1 : o.depth === 2 ? 2 : 3];
|
|
16888
17045
|
const rowKey = `${o.value}-${idx}`;
|
|
16889
17046
|
if (tree) {
|
|
16890
17047
|
const togglesLeaves = multi && o.isGroup;
|
|
@@ -16926,15 +17083,20 @@ function ItemList({
|
|
|
16926
17083
|
TREE_LABEL_TYPOGRAPHY.sm.rowHeight,
|
|
16927
17084
|
TREE_ROW_BORDER_CLASS,
|
|
16928
17085
|
"select-none",
|
|
16929
|
-
|
|
17086
|
+
o.isGroup && "cursor-pointer",
|
|
16930
17087
|
focused && TREE_ROW_ACTIVE_CLASS
|
|
16931
17088
|
),
|
|
16932
17089
|
onMouseEnter: () => onHoverValue(focusKey),
|
|
16933
17090
|
onMouseLeave: () => onHoverValue(null),
|
|
16934
17091
|
onClick: (event) => {
|
|
16935
|
-
if (isRowControlClick(event)
|
|
16936
|
-
if (
|
|
16937
|
-
|
|
17092
|
+
if (isRowControlClick(event)) return;
|
|
17093
|
+
if (isRowSelectClick(event)) {
|
|
17094
|
+
if (rowDisabled) return;
|
|
17095
|
+
if (togglesLeaves) onToggleGroup(leafValues);
|
|
17096
|
+
else onSelect(o.value, idx, event.shiftKey);
|
|
17097
|
+
return;
|
|
17098
|
+
}
|
|
17099
|
+
if (o.isGroup) onToggleExpand(o.value);
|
|
16938
17100
|
},
|
|
16939
17101
|
children: [
|
|
16940
17102
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -16953,27 +17115,41 @@ function ItemList({
|
|
|
16953
17115
|
// 비활성 그룹도 접고 편다 — 그룹이 비활성이어도 아래에 고를 수 있는 자식이 있을 수 있다.
|
|
16954
17116
|
/* @__PURE__ */ jsxRuntime.jsx(TreeCaret, { expanded, onToggle: () => onToggleExpand(o.value) })
|
|
16955
17117
|
) : /* @__PURE__ */ jsxRuntime.jsx(TreeCaretSpacer, {}),
|
|
16956
|
-
multi && /* @__PURE__ */ jsxRuntime.jsx(
|
|
16957
|
-
"span",
|
|
16958
|
-
{
|
|
16959
|
-
"data-tree-control": true,
|
|
16960
|
-
className: "flex shrink-0",
|
|
16961
|
-
onPointerDownCapture: (event) => {
|
|
16962
|
-
checkboxShiftRef.current = event.shiftKey;
|
|
16963
|
-
},
|
|
16964
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SCheckbox, { value: checkState, disabled: rowDisabled, onValueChange: toggle })
|
|
16965
|
-
}
|
|
16966
|
-
),
|
|
16967
17118
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
16968
|
-
|
|
17119
|
+
TreeSelectZone,
|
|
16969
17120
|
{
|
|
16970
|
-
|
|
16971
|
-
|
|
16972
|
-
|
|
16973
|
-
|
|
16974
|
-
|
|
16975
|
-
|
|
16976
|
-
|
|
17121
|
+
selectable: true,
|
|
17122
|
+
disabled: rowDisabled,
|
|
17123
|
+
control: multi && /* @__PURE__ */ jsxRuntime.jsx(
|
|
17124
|
+
"span",
|
|
17125
|
+
{
|
|
17126
|
+
"data-tree-control": true,
|
|
17127
|
+
className: "flex shrink-0",
|
|
17128
|
+
onPointerDownCapture: (event) => {
|
|
17129
|
+
checkboxShiftRef.current = event.shiftKey;
|
|
17130
|
+
},
|
|
17131
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17132
|
+
SCheckbox,
|
|
17133
|
+
{
|
|
17134
|
+
value: checkState,
|
|
17135
|
+
disabled: rowDisabled,
|
|
17136
|
+
onValueChange: toggle
|
|
17137
|
+
}
|
|
17138
|
+
)
|
|
17139
|
+
}
|
|
17140
|
+
),
|
|
17141
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17142
|
+
OptionLabel,
|
|
17143
|
+
{
|
|
17144
|
+
label: o.label,
|
|
17145
|
+
className: treeLabelClass("sm", {
|
|
17146
|
+
// 고른 줄은 굵게 — multi_tree 는 일부만 고른 그룹도 굵다 (STree 와 같다)
|
|
17147
|
+
emphasized: checkState !== false,
|
|
17148
|
+
disabled: rowDisabled,
|
|
17149
|
+
selectable: true
|
|
17150
|
+
})
|
|
17151
|
+
}
|
|
17152
|
+
)
|
|
16977
17153
|
}
|
|
16978
17154
|
)
|
|
16979
17155
|
] })
|
|
@@ -16985,7 +17161,7 @@ function ItemList({
|
|
|
16985
17161
|
}
|
|
16986
17162
|
if (o.isGroup) {
|
|
16987
17163
|
const isDepth1 = o.depth === 1;
|
|
16988
|
-
const isFirstRow = idx === 0 && !showSelectAll
|
|
17164
|
+
const isFirstRow = idx === 0 && !showSelectAll;
|
|
16989
17165
|
const groupTone = cn(
|
|
16990
17166
|
isDepth1 ? "bg-[var(--cmp-listBoxItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listBoxItem-depth2-middle-bg)] font-medium",
|
|
16991
17167
|
isDepth1 && !isFirstRow && "border-t border-solid border-[color:var(--cmp-listBoxItem-depth1-border-color)]"
|
|
@@ -17010,7 +17186,7 @@ function ItemList({
|
|
|
17010
17186
|
"data-select-focused": groupFocused ? "true" : void 0,
|
|
17011
17187
|
"data-select-active": groupFocused ? "true" : void 0,
|
|
17012
17188
|
className: cn(
|
|
17013
|
-
"flex w-full select-none items-center gap-
|
|
17189
|
+
"flex w-full select-none items-center gap-(--cmp-listBoxItem-gap) border-none py-(--cmp-listBoxItem-paddingY) pr-(--cmp-listBoxItem-paddingRight) text-left typo-field-sm-default text-[color:var(--cmp-listBoxItem-content-default)]",
|
|
17014
17190
|
groupTone,
|
|
17015
17191
|
groupDisabled ? "cursor-not-allowed text-[color:var(--cmp-listBoxItem-content-disabled)]" : "cursor-pointer",
|
|
17016
17192
|
groupDisabled && isDepth1 && "bg-[var(--cmp-listBoxItem-depth1-bg-disabled)]",
|
|
@@ -17051,7 +17227,7 @@ function ItemList({
|
|
|
17051
17227
|
"data-select-row": true,
|
|
17052
17228
|
"data-index": idx,
|
|
17053
17229
|
className: cn(
|
|
17054
|
-
"select-none py-
|
|
17230
|
+
"select-none py-(--cmp-listBoxItem-paddingY) pr-(--cmp-listBoxItem-paddingRight) typo-field-sm-default text-[color:var(--cmp-listBoxItem-content-default)]",
|
|
17055
17231
|
groupTone,
|
|
17056
17232
|
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
17057
17233
|
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
@@ -17087,7 +17263,7 @@ function ItemList({
|
|
|
17087
17263
|
// (:hover 는 disabled 버튼에도 매칭되므로 클래스 자체를 붙이지 않아야 한다)
|
|
17088
17264
|
!o.disabled && activeClass
|
|
17089
17265
|
),
|
|
17090
|
-
style: {
|
|
17266
|
+
style: { ...LIST_BOX_ITEM_PADDING_Y_RIGHT, paddingLeft: padLeft },
|
|
17091
17267
|
onMouseEnter: () => onHoverValue(o.value),
|
|
17092
17268
|
onMouseLeave: () => onHoverValue(null),
|
|
17093
17269
|
onClick: (event) => onSelect(o.value, idx, event.shiftKey),
|
|
@@ -17116,40 +17292,17 @@ function TriggerLabel({ label }) {
|
|
|
17116
17292
|
return /* @__PURE__ */ jsxRuntime.jsx(OptionLabel, { label, className: "truncate" });
|
|
17117
17293
|
}
|
|
17118
17294
|
function TriggerRemoveButton({ ariaLabel, onRemove }) {
|
|
17119
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
17120
|
-
|
|
17295
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
17296
|
+
SGhostButton,
|
|
17121
17297
|
{
|
|
17122
|
-
|
|
17123
|
-
|
|
17124
|
-
|
|
17125
|
-
className: "
|
|
17126
|
-
style: {
|
|
17127
|
-
width: "var(--cmp-ghostButton-xxs-size)",
|
|
17128
|
-
height: "var(--cmp-ghostButton-xxs-size)",
|
|
17129
|
-
borderRadius: "var(--cmp-ghostButton-radius-sm)"
|
|
17130
|
-
},
|
|
17298
|
+
icon: "close",
|
|
17299
|
+
size: "xxs",
|
|
17300
|
+
ariaLabel,
|
|
17301
|
+
className: "shrink-0",
|
|
17131
17302
|
onClick: (event) => {
|
|
17132
|
-
event.preventDefault();
|
|
17133
|
-
event.stopPropagation();
|
|
17134
|
-
onRemove();
|
|
17135
|
-
},
|
|
17136
|
-
onKeyDown: (event) => {
|
|
17137
|
-
if (event.key !== "Enter" && event.key !== " ") return;
|
|
17138
|
-
event.preventDefault();
|
|
17139
17303
|
event.stopPropagation();
|
|
17140
17304
|
onRemove();
|
|
17141
|
-
}
|
|
17142
|
-
children: [
|
|
17143
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17144
|
-
"span",
|
|
17145
|
-
{
|
|
17146
|
-
"aria-hidden": true,
|
|
17147
|
-
className: "pointer-events-none absolute inset-0 rounded-[inherit] opacity-0 transition-opacity duration-200 group-hover/select-remove:opacity-5",
|
|
17148
|
-
style: { background: "var(--cmp-ghostButton-default-hover-bg)" }
|
|
17149
|
-
}
|
|
17150
|
-
),
|
|
17151
|
-
/* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "close", size: 12, color: "var(--cmp-ghostButton-default-content)" })
|
|
17152
|
-
]
|
|
17305
|
+
}
|
|
17153
17306
|
}
|
|
17154
17307
|
);
|
|
17155
17308
|
}
|
|
@@ -17163,7 +17316,7 @@ function CheckboxBox({
|
|
|
17163
17316
|
"span",
|
|
17164
17317
|
{
|
|
17165
17318
|
className: cn(
|
|
17166
|
-
"flex
|
|
17319
|
+
"flex size-(--cmp-checkbox-size) flex-shrink-0 items-center justify-center rounded-(--cmp-checkbox-radius) border-(length:--cmp-checkbox-borderWidth) border-solid",
|
|
17167
17320
|
disabled ? (
|
|
17168
17321
|
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
17169
17322
|
"cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
@@ -17173,7 +17326,7 @@ function CheckboxBox({
|
|
|
17173
17326
|
SIcon,
|
|
17174
17327
|
{
|
|
17175
17328
|
name: state2 === null ? "checkboxIndeterminate" : "checkboxCheck",
|
|
17176
|
-
size:
|
|
17329
|
+
size: "var(--cmp-checkbox-icon)",
|
|
17177
17330
|
color: disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
|
|
17178
17331
|
}
|
|
17179
17332
|
)
|
|
@@ -17806,7 +17959,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17806
17959
|
"span",
|
|
17807
17960
|
{
|
|
17808
17961
|
onMouseDown: (e) => startResize(i, e),
|
|
17809
|
-
className: "absolute right-0 top-1/2 z-[5] flex h-[
|
|
17962
|
+
className: "absolute right-0 top-1/2 z-[5] flex h-[var(--cmp-table-header-resizingBar-height)] w-[9px] -translate-y-1/2 cursor-col-resize items-center justify-end",
|
|
17810
17963
|
"aria-hidden": true,
|
|
17811
17964
|
children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "h-full w-[4px] border-x border-solid border-[color:var(--cmp-table-header-resizingBar-color)]" })
|
|
17812
17965
|
},
|
|
@@ -17869,7 +18022,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17869
18022
|
colSpan: group.colSpan,
|
|
17870
18023
|
rowSpan: group.rowSpan,
|
|
17871
18024
|
className: cn(
|
|
17872
|
-
"relative border-b border-r border-solid border-[color:var(--cmp-table-border-color)] bg-[var(--cmp-table-header-bg)] px-[
|
|
18025
|
+
"relative border-b border-r border-solid border-[color:var(--cmp-table-border-color)] bg-[var(--cmp-table-header-bg)] px-[var(--cmp-table-header-paddingX)] typo-table-header text-[color:var(--sys-color-fg-primary)]",
|
|
17873
18026
|
group.firstIndex + group.colSpan === visibleCols.length && "border-r-0",
|
|
17874
18027
|
group.rowSpan === 2 && "border-b-0",
|
|
17875
18028
|
group.className
|
|
@@ -17911,7 +18064,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17911
18064
|
"span",
|
|
17912
18065
|
{
|
|
17913
18066
|
"aria-hidden": true,
|
|
17914
|
-
className: "pointer-events-none absolute right-0 top-1/2 h-[
|
|
18067
|
+
className: "pointer-events-none absolute right-0 top-1/2 h-[var(--cmp-table-header-resizingBar-height)] w-px -translate-y-1/2 bg-[var(--cmp-table-header-resizingBar-color)]"
|
|
17915
18068
|
}
|
|
17916
18069
|
)
|
|
17917
18070
|
]
|
|
@@ -17932,7 +18085,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17932
18085
|
// 세로 가운데도 어긋난다. 글자 줄높이는 아래 th__content 가 다시 준다.
|
|
17933
18086
|
headerGroupInfo && "border-r border-solid border-[color:var(--cmp-table-border-color)]",
|
|
17934
18087
|
headerGroupInfo && i === visibleCols.length - 1 && "border-r-0",
|
|
17935
|
-
"relative bg-[var(--cmp-table-header-bg)] px-[
|
|
18088
|
+
"relative bg-[var(--cmp-table-header-bg)] px-[var(--cmp-table-header-paddingX)] typo-table-header leading-[0] text-[color:var(--sys-color-fg-primary)]",
|
|
17936
18089
|
stickyInfo(i).isSticky && "z-[6]",
|
|
17937
18090
|
col.thClass
|
|
17938
18091
|
),
|
|
@@ -17951,7 +18104,7 @@ var STableImpl = /* @__PURE__ */ react.forwardRef(function STable({
|
|
|
17951
18104
|
// 원본 th__content: align에 따라 justify-content 적용 (th도 정렬 반영)
|
|
17952
18105
|
// th 가 leading-[0] 이므로 글자 줄높이는 여기서 준다 (truncate 가
|
|
17953
18106
|
// overflow-hidden 이라 줄높이가 0이면 라벨이 잘려 사라진다).
|
|
17954
|
-
"inline-flex w-full min-w-0 items-center gap-[
|
|
18107
|
+
"inline-flex w-full min-w-0 items-center gap-[var(--cmp-table-header-gap)] leading-[20px]",
|
|
17955
18108
|
col.align === "center" && "justify-center",
|
|
17956
18109
|
col.align === "right" && "justify-end"
|
|
17957
18110
|
),
|
|
@@ -18849,8 +19002,8 @@ function useTruncatedValueTooltip({
|
|
|
18849
19002
|
};
|
|
18850
19003
|
}
|
|
18851
19004
|
var FONT2 = {
|
|
18852
|
-
sm: {
|
|
18853
|
-
md: {
|
|
19005
|
+
sm: { typo: "typo-field-sm-default", paddingX: "var(--cmp-textinput-sm-paddingX)" },
|
|
19006
|
+
md: { typo: "typo-field-md-default", paddingX: "var(--cmp-textinput-md-paddingX)" }
|
|
18854
19007
|
};
|
|
18855
19008
|
var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
18856
19009
|
value,
|
|
@@ -18943,12 +19096,11 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
18943
19096
|
{
|
|
18944
19097
|
className: cn(
|
|
18945
19098
|
"flex h-full w-full items-center",
|
|
19099
|
+
f.typo,
|
|
18946
19100
|
size === "md" ? "gap-[var(--cmp-textinput-md-gap)]" : "gap-[var(--cmp-textinput-sm-gap)]"
|
|
18947
19101
|
),
|
|
18948
19102
|
style: {
|
|
18949
|
-
padding: `0 ${f.paddingX}
|
|
18950
|
-
fontSize: f.fontSize,
|
|
18951
|
-
lineHeight: `${f.lineHeight}px`
|
|
19103
|
+
padding: `0 ${f.paddingX}`
|
|
18952
19104
|
},
|
|
18953
19105
|
children: [
|
|
18954
19106
|
prefix != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex flex-shrink-0 items-center", children: prefix }),
|
|
@@ -19022,8 +19174,8 @@ var SInput = /* @__PURE__ */ react.forwardRef(function SInput2({
|
|
|
19022
19174
|
);
|
|
19023
19175
|
});
|
|
19024
19176
|
var PAD2 = {
|
|
19025
|
-
sm: {
|
|
19026
|
-
md: {
|
|
19177
|
+
sm: { typo: "typo-field-sm-default", icon: 12 },
|
|
19178
|
+
md: { typo: "typo-field-md-default", icon: 14 }
|
|
19027
19179
|
};
|
|
19028
19180
|
var toNumber = (val) => {
|
|
19029
19181
|
if (val === null || val === void 0 || val === "") return null;
|
|
@@ -19258,7 +19410,7 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19258
19410
|
onClick: dir === "inc" ? increment : decrement,
|
|
19259
19411
|
className: cn(
|
|
19260
19412
|
"flex flex-shrink-0 items-center justify-center border border-solid border-transparent transition-colors",
|
|
19261
|
-
off ? "cursor-not-allowed" : "cursor-pointer hover:border-[var(--
|
|
19413
|
+
off ? "cursor-not-allowed" : "cursor-pointer hover:border-[var(--cmp-numberInput-stepper-border-default)]"
|
|
19262
19414
|
),
|
|
19263
19415
|
style: {
|
|
19264
19416
|
width: `var(--cmp-numberInput-stepper-${size}-size)`,
|
|
@@ -19307,13 +19459,11 @@ var SNumberInput = /* @__PURE__ */ react.forwardRef(function SNumberInput2({
|
|
|
19307
19459
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19308
19460
|
"div",
|
|
19309
19461
|
{
|
|
19310
|
-
className: "flex h-full w-full items-center",
|
|
19462
|
+
className: cn("flex h-full w-full items-center", p.typo),
|
|
19311
19463
|
style: {
|
|
19312
19464
|
// 원본 sd-number-input: content gap = padding-x 토큰 (gap 토큰 아님)
|
|
19313
19465
|
gap: `var(--cmp-numberInput-${size}-paddingX)`,
|
|
19314
|
-
padding: `0 ${showButton ? padX : `calc(${padX} * 2)`}
|
|
19315
|
-
fontSize: p.fontSize,
|
|
19316
|
-
lineHeight: `${p.lineHeight}px`
|
|
19466
|
+
padding: `0 ${showButton ? padX : `calc(${padX} * 2)`}`
|
|
19317
19467
|
},
|
|
19318
19468
|
children: [
|
|
19319
19469
|
showButton && stepper("dec"),
|
|
@@ -19599,7 +19749,7 @@ function SCalendar({
|
|
|
19599
19749
|
onClick: () => view(y - 1, m)
|
|
19600
19750
|
}
|
|
19601
19751
|
),
|
|
19602
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-[40px] items-center justify-center text-center
|
|
19752
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-[40px] items-center justify-center text-center typo-field-md-medium", children: y }),
|
|
19603
19753
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19604
19754
|
SGhostButton,
|
|
19605
19755
|
{
|
|
@@ -19624,7 +19774,7 @@ function SCalendar({
|
|
|
19624
19774
|
}
|
|
19625
19775
|
}
|
|
19626
19776
|
),
|
|
19627
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex w-full min-w-[40px] items-center justify-center text-center
|
|
19777
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex w-full min-w-[40px] items-center justify-center text-center typo-field-md-medium", children: [
|
|
19628
19778
|
m,
|
|
19629
19779
|
"\uC6D4"
|
|
19630
19780
|
] }),
|
|
@@ -19701,7 +19851,7 @@ function SCalendar({
|
|
|
19701
19851
|
}) }),
|
|
19702
19852
|
legend.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
19703
19853
|
/* @__PURE__ */ jsxRuntime.jsx(SDivider, {}),
|
|
19704
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-[var(--cmp-datepicker-calendar-legend-group-gap)] gap-y-[4px]
|
|
19854
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center justify-center gap-x-[var(--cmp-datepicker-calendar-legend-group-gap)] gap-y-[4px] typo-field-xs-default", children: legend.map((item4) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19705
19855
|
"span",
|
|
19706
19856
|
{
|
|
19707
19857
|
className: "inline-flex items-center gap-[var(--cmp-datepicker-calendar-legend-gap)]",
|
|
@@ -19729,10 +19879,10 @@ function SCalendar({
|
|
|
19729
19879
|
var MODE_LIST_HEIGHT = 240;
|
|
19730
19880
|
var MODE_ITEM_HEIGHT = 28;
|
|
19731
19881
|
var modeListItemClass = (selected, disabled) => cn(
|
|
19732
|
-
"flex w-full items-center justify-center gap-[var(--cmp-datepicker-mode-item-gap)] border-0 px-[var(--cmp-datepicker-mode-item-paddingX)] py-[var(--cmp-datepicker-mode-item-paddingY)] text-center
|
|
19733
|
-
disabled && "cursor-not-allowed bg-[var(--cmp-datepicker-mode-item-bg-default)]
|
|
19734
|
-
!disabled && !selected && "cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)]
|
|
19735
|
-
!disabled && selected && "cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)]
|
|
19882
|
+
"flex w-full items-center justify-center gap-[var(--cmp-datepicker-mode-item-gap)] border-0 px-[var(--cmp-datepicker-mode-item-paddingX)] py-[var(--cmp-datepicker-mode-item-paddingY)] text-center",
|
|
19883
|
+
disabled && "typo-field-sm-medium cursor-not-allowed bg-[var(--cmp-datepicker-mode-item-bg-default)] text-[color:var(--cmp-datepicker-mode-item-content-disabled)]",
|
|
19884
|
+
!disabled && !selected && "typo-field-sm-medium cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)] text-[color:var(--cmp-datepicker-mode-item-content-default)] hover:bg-[var(--cmp-datepicker-mode-item-bg-hover)] hover:text-[color:var(--cmp-datepicker-mode-item-content-hover)]",
|
|
19885
|
+
!disabled && selected && "typo-field-sm-bold cursor-pointer bg-[var(--cmp-datepicker-mode-item-bg-default)] text-[color:var(--cmp-datepicker-mode-item-content-selected)]"
|
|
19736
19886
|
);
|
|
19737
19887
|
var MODE_NOUN = {
|
|
19738
19888
|
date: "\uB0A0\uC9DC",
|
|
@@ -20042,9 +20192,9 @@ function SDatePicker({
|
|
|
20042
20192
|
const resolvedError = error || ruleError !== "";
|
|
20043
20193
|
const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
|
|
20044
20194
|
const baseDims = size === "md" ? {
|
|
20045
|
-
padX:
|
|
20046
|
-
gap:
|
|
20047
|
-
icon:
|
|
20195
|
+
padX: "var(--cmp-datepicker-md-paddingX)",
|
|
20196
|
+
gap: "var(--cmp-datepicker-md-gap)",
|
|
20197
|
+
icon: "var(--cmp-datepicker-md-icon)",
|
|
20048
20198
|
minW: 104,
|
|
20049
20199
|
fieldMinW: 168,
|
|
20050
20200
|
// 값 길이가 YYYY-MM-DD 로 정해져 있어, width="100%" 를 받아도 행 전체로
|
|
@@ -20052,19 +20202,20 @@ function SDatePicker({
|
|
|
20052
20202
|
// px 가 아니라 등급이라 --cmp-field-width-* 가 바뀌면 함께 따라간다.
|
|
20053
20203
|
// 이 기본 상한이 걸리적거리는 자리(폭이 이미 좁게 정해진 팝오버 등)는 maxWidth prop 으로 덮는다
|
|
20054
20204
|
fieldMaxW: "lg",
|
|
20205
|
+
// 요일 폭 계산에 숫자가 필요해 남긴다. 렌더 타이포는 typo 가 맡는다
|
|
20055
20206
|
fontSize: 14,
|
|
20056
|
-
|
|
20057
|
-
radius:
|
|
20207
|
+
typo: "typo-field-md-default",
|
|
20208
|
+
radius: "var(--cmp-datepicker-md-radius)"
|
|
20058
20209
|
} : {
|
|
20059
|
-
padX:
|
|
20060
|
-
gap:
|
|
20061
|
-
icon:
|
|
20210
|
+
padX: "var(--cmp-datepicker-sm-paddingX)",
|
|
20211
|
+
gap: "var(--cmp-datepicker-sm-gap)",
|
|
20212
|
+
icon: "var(--cmp-datepicker-sm-icon)",
|
|
20062
20213
|
minW: 80,
|
|
20063
20214
|
fieldMinW: 128,
|
|
20064
20215
|
fieldMaxW: "md",
|
|
20065
20216
|
fontSize: 12,
|
|
20066
|
-
|
|
20067
|
-
radius:
|
|
20217
|
+
typo: "typo-field-sm-default",
|
|
20218
|
+
radius: "var(--cmp-datepicker-sm-radius)"
|
|
20068
20219
|
};
|
|
20069
20220
|
const weekdayW = weekday ? weekdaySuffixWidth(baseDims.fontSize) : 0;
|
|
20070
20221
|
const dims = {
|
|
@@ -20135,7 +20286,7 @@ function SDatePicker({
|
|
|
20135
20286
|
"flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
|
|
20136
20287
|
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
20137
20288
|
),
|
|
20138
|
-
style: { padding: `0 ${dims.padX}
|
|
20289
|
+
style: { padding: `0 ${dims.padX}`, gap: dims.gap, borderRadius: dims.radius },
|
|
20139
20290
|
children: [
|
|
20140
20291
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20141
20292
|
SIcon,
|
|
@@ -20150,11 +20301,9 @@ function SDatePicker({
|
|
|
20150
20301
|
"span",
|
|
20151
20302
|
{
|
|
20152
20303
|
id: triggerTextId,
|
|
20153
|
-
className: "flex-1 truncate text-center",
|
|
20304
|
+
className: cn("flex-1 truncate text-center", dims.typo),
|
|
20154
20305
|
style: {
|
|
20155
20306
|
minWidth: dims.minW,
|
|
20156
|
-
fontSize: dims.fontSize,
|
|
20157
|
-
lineHeight: `${dims.lineHeight}px`,
|
|
20158
20307
|
color: disabled ? "var(--cmp-datepicker-text-disabled)" : hasValue ? "var(--cmp-datepicker-text-default)" : "var(--cmp-field-hint-color)"
|
|
20159
20308
|
},
|
|
20160
20309
|
children: hasValue ? weekday ? withWeekday(value) : value : resolvedPlaceholder
|
|
@@ -20365,7 +20514,7 @@ function RangeCalendar({
|
|
|
20365
20514
|
className: cn(!isLeft && "invisible pointer-events-none")
|
|
20366
20515
|
}
|
|
20367
20516
|
),
|
|
20368
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex min-w-[40px] flex-1 items-center justify-center text-center
|
|
20517
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex min-w-[40px] flex-1 items-center justify-center text-center typo-field-md-medium", children: [
|
|
20369
20518
|
gy,
|
|
20370
20519
|
".",
|
|
20371
20520
|
String(gm).padStart(2, "0")
|
|
@@ -20433,14 +20582,14 @@ function RangeCalendar({
|
|
|
20433
20582
|
const hour = which === "start" ? sH : eH;
|
|
20434
20583
|
const minute = which === "start" ? sM : eM;
|
|
20435
20584
|
const num = (n, strip) => active && n !== "" ? strip ? String(Number(n)) : n : "-";
|
|
20436
|
-
const INPUT_CLS = "h-[var(--cmp-datepicker-sm-height)] w-[40px] rounded-[var(--cmp-datepicker-sm-radius)] border border-solid border-[color:var(--cmp-datepicker-border-default)] bg-[var(--cmp-datepicker-bg-default)] text-center
|
|
20585
|
+
const INPUT_CLS = "h-[var(--cmp-datepicker-sm-height)] w-[40px] rounded-[var(--cmp-datepicker-sm-radius)] border-[length:var(--cmp-datepicker-border-width)] border-solid border-[color:var(--cmp-datepicker-border-default)] bg-[var(--cmp-datepicker-bg-default)] text-center typo-field-sm-medium text-[color:var(--cmp-datepicker-text-default)] outline-none placeholder:text-[color:var(--cmp-datepicker-text-disabled)] focus:border-[color:var(--cmp-datepicker-border-focus)] disabled:cursor-not-allowed";
|
|
20437
20586
|
const LABEL = "text-[color:var(--cmp-datepicker-calendar-time-date-label)]";
|
|
20438
20587
|
const UNIT = "text-[color:var(--cmp-datepicker-calendar-time-date-unit)]";
|
|
20439
20588
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
20440
20589
|
"div",
|
|
20441
20590
|
{
|
|
20442
20591
|
className: cn(
|
|
20443
|
-
"flex flex-1 items-center justify-center gap-[var(--cmp-datepicker-calendar-time-section-gap)] rounded-[var(--cmp-datepicker-calendar-time-radius)] px-[var(--cmp-datepicker-calendar-time-paddingX)] py-[var(--cmp-datepicker-calendar-time-paddingY)]
|
|
20592
|
+
"flex flex-1 items-center justify-center gap-[var(--cmp-datepicker-calendar-time-section-gap)] rounded-[var(--cmp-datepicker-calendar-time-radius)] px-[var(--cmp-datepicker-calendar-time-paddingX)] py-[var(--cmp-datepicker-calendar-time-paddingY)] typo-field-sm-medium",
|
|
20444
20593
|
active ? "bg-[var(--cmp-datepicker-calendar-time-bg-selected)]" : "bg-[var(--cmp-datepicker-calendar-time-bg-default)]"
|
|
20445
20594
|
),
|
|
20446
20595
|
children: [
|
|
@@ -20502,7 +20651,7 @@ function RangeCalendar({
|
|
|
20502
20651
|
),
|
|
20503
20652
|
children: [
|
|
20504
20653
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex items-center justify-center", children: [
|
|
20505
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-[var(--cmp-datepicker-calendar-gap)]
|
|
20654
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center gap-[var(--cmp-datepicker-calendar-gap)] typo-field-md-medium", children: [
|
|
20506
20655
|
/* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "chevronLeft", size: "xxs", ariaLabel: "prevYear", onClick: goPrevYear }),
|
|
20507
20656
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex min-w-[40px] items-center justify-center text-center", children: y }),
|
|
20508
20657
|
/* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "chevronRight", size: "xxs", ariaLabel: "nextYear", onClick: goNextYear })
|
|
@@ -20599,28 +20748,29 @@ function SDateRangePicker({
|
|
|
20599
20748
|
const resolvedError = error || ruleError !== "";
|
|
20600
20749
|
const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
|
|
20601
20750
|
const baseDims = size === "md" ? {
|
|
20602
|
-
padX:
|
|
20603
|
-
gap:
|
|
20604
|
-
icon:
|
|
20751
|
+
padX: "var(--cmp-datepicker-md-paddingX)",
|
|
20752
|
+
gap: "var(--cmp-datepicker-md-gap)",
|
|
20753
|
+
icon: "var(--cmp-datepicker-md-icon)",
|
|
20605
20754
|
minW: 104,
|
|
20606
20755
|
fieldMinW: 260,
|
|
20607
20756
|
// xl — 값이 `YYYY-MM-DD ~ YYYY-MM-DD` 라 단일 날짜의 두 배가 넘는다.
|
|
20608
20757
|
// 최소너비(260)가 이미 lg 를 넘으므로 상한도 한 등급 위여야 한다
|
|
20609
20758
|
fieldMaxW: "xl",
|
|
20759
|
+
// 요일 폭 계산에 숫자가 필요해 남긴다. 렌더 타이포는 typo 가 맡는다
|
|
20610
20760
|
fontSize: 14,
|
|
20611
|
-
|
|
20612
|
-
radius:
|
|
20761
|
+
typo: "typo-field-md-default",
|
|
20762
|
+
radius: "var(--cmp-datepicker-md-radius)"
|
|
20613
20763
|
} : {
|
|
20614
|
-
padX:
|
|
20615
|
-
gap:
|
|
20616
|
-
icon:
|
|
20764
|
+
padX: "var(--cmp-datepicker-sm-paddingX)",
|
|
20765
|
+
gap: "var(--cmp-datepicker-sm-gap)",
|
|
20766
|
+
icon: "var(--cmp-datepicker-sm-icon)",
|
|
20617
20767
|
minW: 80,
|
|
20618
20768
|
fieldMinW: 216,
|
|
20619
20769
|
// lg — 최소너비 216 이 md 를 넘어 md 로는 담기지 않는다
|
|
20620
20770
|
fieldMaxW: "lg",
|
|
20621
20771
|
fontSize: 12,
|
|
20622
|
-
|
|
20623
|
-
radius:
|
|
20772
|
+
typo: "typo-field-sm-default",
|
|
20773
|
+
radius: "var(--cmp-datepicker-sm-radius)"
|
|
20624
20774
|
};
|
|
20625
20775
|
const weekdayW = showWeekday ? weekdaySuffixWidth(baseDims.fontSize) * 2 : 0;
|
|
20626
20776
|
const dims = {
|
|
@@ -20697,7 +20847,7 @@ function SDateRangePicker({
|
|
|
20697
20847
|
"flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
|
|
20698
20848
|
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
20699
20849
|
),
|
|
20700
|
-
style: { padding: `0 ${dims.padX}
|
|
20850
|
+
style: { padding: `0 ${dims.padX}`, gap: dims.gap, borderRadius: dims.radius },
|
|
20701
20851
|
children: [
|
|
20702
20852
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20703
20853
|
SIcon,
|
|
@@ -20714,12 +20864,11 @@ function SDateRangePicker({
|
|
|
20714
20864
|
id: triggerTextId,
|
|
20715
20865
|
className: cn(
|
|
20716
20866
|
"flex-1 items-center",
|
|
20867
|
+
dims.typo,
|
|
20717
20868
|
hasDisplay ? "flex" : "block truncate text-center"
|
|
20718
20869
|
),
|
|
20719
20870
|
style: {
|
|
20720
20871
|
minWidth: dims.minW,
|
|
20721
|
-
fontSize: dims.fontSize,
|
|
20722
|
-
lineHeight: `${dims.lineHeight}px`,
|
|
20723
20872
|
color: disabled ? "var(--cmp-datepicker-text-disabled)" : hasDisplay ? "var(--cmp-datepicker-text-default)" : "var(--cmp-field-hint-color)"
|
|
20724
20873
|
},
|
|
20725
20874
|
children: hasDisplay ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
@@ -20874,8 +21023,9 @@ var SChipImpl = /* @__PURE__ */ react.forwardRef(function SChip({
|
|
|
20874
21023
|
{
|
|
20875
21024
|
"aria-disabled": disabled ? "true" : void 0,
|
|
20876
21025
|
className: cn(
|
|
20877
|
-
"box-border inline-flex h-[var(--cmp-chip-height)] max-w-full items-center justify-center gap-[var(--cmp-chip-gap)] overflow-hidden whitespace-nowrap border-[length:var(--cmp-chip-border-width)] border-solid px-[var(--cmp-chip-paddingX)]
|
|
20878
|
-
|
|
21026
|
+
"box-border inline-flex h-[var(--cmp-chip-height)] max-w-full items-center justify-center gap-[var(--cmp-chip-gap)] overflow-hidden whitespace-nowrap border-[length:var(--cmp-chip-border-width)] border-solid px-[var(--cmp-chip-paddingX)] select-none",
|
|
21027
|
+
// chip.typography.focus / .default
|
|
21028
|
+
editing ? "typo-control-xs-default" : "typo-control-xs-medium",
|
|
20879
21029
|
disabled ? "cursor-not-allowed" : "",
|
|
20880
21030
|
className
|
|
20881
21031
|
),
|
|
@@ -21047,7 +21197,7 @@ function SFilePicker({
|
|
|
21047
21197
|
const resolvedError = error || ruleError !== "";
|
|
21048
21198
|
const resolvedStatus = status ?? (rules?.length ? ruleError !== "" ? "error" : void 0 : void 0);
|
|
21049
21199
|
const padX = size === "md" ? "var(--cmp-filepicker-md-paddingX)" : "var(--cmp-filepicker-sm-paddingX)";
|
|
21050
|
-
const iconSize = size === "md" ?
|
|
21200
|
+
const iconSize = size === "md" ? "var(--cmp-filepicker-md-icon)" : "var(--cmp-filepicker-sm-icon)";
|
|
21051
21201
|
const gapCls = size === "md" ? "gap-[var(--cmp-filepicker-md-gap)]" : "gap-[var(--cmp-filepicker-sm-gap)]";
|
|
21052
21202
|
const inlinePlaceholder = inline && !disabled && !hasFiles;
|
|
21053
21203
|
const showListbox = multiple && showMultipleListBox;
|
|
@@ -21101,7 +21251,8 @@ function SFilePicker({
|
|
|
21101
21251
|
{
|
|
21102
21252
|
id: displayTextId,
|
|
21103
21253
|
className: cn(
|
|
21104
|
-
"min-w-0 flex-1 truncate
|
|
21254
|
+
"min-w-0 flex-1 truncate",
|
|
21255
|
+
size === "md" ? "typo-field-md-default" : "typo-field-sm-default",
|
|
21105
21256
|
inlinePlaceholder && "text-[color:var(--cmp-filepicker-text-placeholder)] transition-colors group-hover/filepicker:text-[color:var(--cmp-filepicker-text-default)]"
|
|
21106
21257
|
),
|
|
21107
21258
|
style: inlinePlaceholder ? void 0 : {
|
|
@@ -21275,10 +21426,10 @@ function SKeyValueTable({
|
|
|
21275
21426
|
skipOccupied();
|
|
21276
21427
|
maxCols = Math.max(maxCols, col, occupied.length);
|
|
21277
21428
|
});
|
|
21278
|
-
const radiusClass = radius === "full" ? "rounded-none" : radius === "useTop" ? "rounded-b-[
|
|
21429
|
+
const radiusClass = radius === "full" ? "rounded-none" : radius === "useTop" ? "rounded-b-[var(--cmp-table-radius)] rounded-t-none" : "rounded-[var(--cmp-table-radius)]";
|
|
21279
21430
|
const frameClass = cn(
|
|
21280
21431
|
"overflow-hidden",
|
|
21281
|
-
bordered && "border border-solid border-[color:var(--cmp-table-border-color)]",
|
|
21432
|
+
bordered && "border-[length:var(--cmp-table-border-width)] border-solid border-[color:var(--cmp-table-border-color)]",
|
|
21282
21433
|
radiusClass
|
|
21283
21434
|
);
|
|
21284
21435
|
const table = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -21314,7 +21465,7 @@ function SKeyValueTable({
|
|
|
21314
21465
|
paddingBottom: cellPadY
|
|
21315
21466
|
},
|
|
21316
21467
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full items-center justify-between gap-[var(--cmp-table-header-gap)]", children: [
|
|
21317
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-[
|
|
21468
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "inline-flex items-center gap-[var(--cmp-table-content-gap)]", children: [
|
|
21318
21469
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[12px] font-bold leading-[20px] text-[color:var(--sys-color-fg-primary)]", children: f.label }),
|
|
21319
21470
|
f.required && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "asterisk", size: 12, color: "var(--sys-color-fg-accent)" })
|
|
21320
21471
|
] }),
|
|
@@ -23422,22 +23573,15 @@ function SToast({
|
|
|
23422
23573
|
...style
|
|
23423
23574
|
},
|
|
23424
23575
|
children: [
|
|
23425
|
-
icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size:
|
|
23426
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23427
|
-
"span",
|
|
23428
|
-
{
|
|
23429
|
-
className: "text-[14px] font-medium leading-[24px] text-nowrap",
|
|
23430
|
-
style: { color: content },
|
|
23431
|
-
children: message
|
|
23432
|
-
}
|
|
23433
|
-
),
|
|
23576
|
+
icon && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: "var(--cmp-toast-icon)", color: iconColor }),
|
|
23577
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-feedback-md-medium text-nowrap", style: { color: content }, children: message }),
|
|
23434
23578
|
link && /* @__PURE__ */ jsxRuntime.jsx(
|
|
23435
23579
|
"a",
|
|
23436
23580
|
{
|
|
23437
23581
|
href: link,
|
|
23438
23582
|
target: "_blank",
|
|
23439
23583
|
rel: "noopener noreferrer",
|
|
23440
|
-
className: "
|
|
23584
|
+
className: "typo-feedback-md-underline text-nowrap",
|
|
23441
23585
|
style: { color: linkColor },
|
|
23442
23586
|
children: linkLabel || link
|
|
23443
23587
|
}
|
|
@@ -23980,9 +24124,9 @@ var SForm = /* @__PURE__ */ react.forwardRef(function SForm2({ formClassName, on
|
|
|
23980
24124
|
) });
|
|
23981
24125
|
});
|
|
23982
24126
|
var SIZE_CONFIG2 = {
|
|
23983
|
-
xs: {
|
|
23984
|
-
sm: {
|
|
23985
|
-
md: {
|
|
24127
|
+
xs: { typo: "typo-control-xs-medium", radius: "var(--cmp-radioButton-radius-sm)" },
|
|
24128
|
+
sm: { typo: "typo-control-xs-medium", radius: "var(--cmp-radioButton-radius-sm)" },
|
|
24129
|
+
md: { typo: "typo-control-sm-default", radius: "var(--cmp-radioButton-radius-md)" }
|
|
23986
24130
|
};
|
|
23987
24131
|
function SRadioButton({
|
|
23988
24132
|
options = [],
|
|
@@ -24031,8 +24175,9 @@ function SRadioButton({
|
|
|
24031
24175
|
onFocus: tooltip ? () => setHoveredValue(o.value) : void 0,
|
|
24032
24176
|
onBlur: tooltip ? () => setHoveredValue(null) : void 0,
|
|
24033
24177
|
className: cn(
|
|
24034
|
-
"relative box-border grow inline-flex items-center justify-center whitespace-nowrap border border-solid
|
|
24035
|
-
|
|
24178
|
+
"relative box-border grow inline-flex items-center justify-center whitespace-nowrap border-(length:--cmp-radioButton-border-width) border-solid transition-colors",
|
|
24179
|
+
s.typo,
|
|
24180
|
+
first ? "" : "ml-(--cmp-radioButton-group-gap)",
|
|
24036
24181
|
selected ? "z-10" : "",
|
|
24037
24182
|
!od && !ro && !selected && "hover:!bg-[var(--cmp-radioButton-bg-hover)] hover:!text-[color:var(--cmp-radioButton-content-hover)] hover:!border-[color:var(--cmp-radioButton-bg-hover)] hover:z-10",
|
|
24038
24183
|
od ? "cursor-not-allowed" : ro ? "cursor-default" : "cursor-pointer"
|
|
@@ -24040,8 +24185,6 @@ function SRadioButton({
|
|
|
24040
24185
|
style: {
|
|
24041
24186
|
height: `var(--cmp-radioButton-${size}-height)`,
|
|
24042
24187
|
padding: `0 var(--cmp-radioButton-${size}-paddingX)`,
|
|
24043
|
-
fontSize: `${s.fontSize}px`,
|
|
24044
|
-
lineHeight: `${s.lineHeight}px`,
|
|
24045
24188
|
borderRadius: [
|
|
24046
24189
|
first ? s.radius : "0",
|
|
24047
24190
|
last ? s.radius : "0",
|
|
@@ -24078,6 +24221,7 @@ function SRadioCard({
|
|
|
24078
24221
|
value,
|
|
24079
24222
|
label,
|
|
24080
24223
|
subtitle,
|
|
24224
|
+
children,
|
|
24081
24225
|
tag,
|
|
24082
24226
|
disabled = false,
|
|
24083
24227
|
name,
|
|
@@ -24105,72 +24249,85 @@ function SRadioCard({
|
|
|
24105
24249
|
};
|
|
24106
24250
|
const textColor = disabled ? "text-(--sys-color-disabled-text)" : null;
|
|
24107
24251
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24108
|
-
"
|
|
24252
|
+
"div",
|
|
24109
24253
|
{
|
|
24110
|
-
...cardInteractiveProps,
|
|
24111
|
-
"aria-disabled": disabled || void 0,
|
|
24112
24254
|
className: cn(
|
|
24113
|
-
"box-border flex w-full flex-col rounded-(--cmp-radioCard-radius) border-(length:--cmp-radioCard-border-width) border-solid
|
|
24114
|
-
disabled ? "
|
|
24255
|
+
"box-border flex w-full flex-col rounded-(--cmp-radioCard-radius) border-(length:--cmp-radioCard-border-width) border-solid transition-colors",
|
|
24256
|
+
disabled ? "border-(--cmp-radioCard-border-default) bg-(--cmp-radioCard-bg-disabled)" : checked ? "border-(--cmp-radioCard-border-selected) bg-(--cmp-radioCard-bg-selected)" : "border-(--cmp-radioCard-border-default) bg-(--cmp-radioCard-bg-default) hover:border-(--cmp-radioCard-border-hover) hover:bg-(--cmp-radioCard-bg-hover)",
|
|
24115
24257
|
className
|
|
24116
24258
|
),
|
|
24117
24259
|
style,
|
|
24118
24260
|
children: [
|
|
24119
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
24120
|
-
|
|
24121
|
-
|
|
24122
|
-
|
|
24123
|
-
|
|
24124
|
-
|
|
24125
|
-
|
|
24126
|
-
|
|
24127
|
-
|
|
24128
|
-
|
|
24129
|
-
className: "
|
|
24130
|
-
|
|
24131
|
-
|
|
24132
|
-
|
|
24133
|
-
|
|
24134
|
-
|
|
24135
|
-
|
|
24136
|
-
|
|
24137
|
-
|
|
24138
|
-
|
|
24139
|
-
|
|
24140
|
-
|
|
24261
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
24262
|
+
"label",
|
|
24263
|
+
{
|
|
24264
|
+
...cardInteractiveProps,
|
|
24265
|
+
"aria-disabled": disabled || void 0,
|
|
24266
|
+
className: cn(
|
|
24267
|
+
"box-border flex w-full flex-col px-(--cmp-radioCard-paddingX) py-(--cmp-radioCard-paddingY)",
|
|
24268
|
+
disabled ? "cursor-not-allowed" : "cursor-pointer"
|
|
24269
|
+
),
|
|
24270
|
+
children: [
|
|
24271
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex items-center gap-(--cmp-radioCard-gap)", children: [
|
|
24272
|
+
native && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24273
|
+
"input",
|
|
24274
|
+
{
|
|
24275
|
+
type: "radio",
|
|
24276
|
+
name,
|
|
24277
|
+
value: valStr,
|
|
24278
|
+
checked,
|
|
24279
|
+
disabled,
|
|
24280
|
+
onChange: () => onValueChange?.(val),
|
|
24281
|
+
className: "sr-only"
|
|
24282
|
+
}
|
|
24283
|
+
),
|
|
24284
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24285
|
+
"span",
|
|
24286
|
+
{
|
|
24287
|
+
className: "flex h-(--cmp-radio-size) w-(--cmp-radio-size) shrink-0 items-center justify-center rounded-(--cmp-radio-radius) border-(length:--cmp-radio-borderWidth) border-solid border-(--rc-dot-border) bg-(--rc-dot-bg)",
|
|
24288
|
+
style: {
|
|
24289
|
+
"--rc-dot-bg": disabled ? "var(--cmp-radio-bg-disabled)" : "var(--cmp-radio-bg-default)",
|
|
24290
|
+
"--rc-dot-border": disabled ? "var(--cmp-radio-border-disabled)" : checked ? "var(--cmp-radio-border-active)" : "var(--cmp-radio-border-default)"
|
|
24291
|
+
},
|
|
24292
|
+
children: checked && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24293
|
+
"span",
|
|
24294
|
+
{
|
|
24295
|
+
className: "h-(--cmp-radio-dot-size) w-(--cmp-radio-dot-size) rounded-(--cmp-radio-radius) bg-(--rc-dot-fill)",
|
|
24296
|
+
style: {
|
|
24297
|
+
"--rc-dot-fill": disabled ? "var(--cmp-radio-dot-disabled)" : "var(--cmp-radio-dot-default)"
|
|
24298
|
+
}
|
|
24299
|
+
}
|
|
24300
|
+
)
|
|
24301
|
+
}
|
|
24302
|
+
),
|
|
24303
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("grid min-w-0", textColor ?? "text-(--cmp-radioCard-label-color)"), children: [
|
|
24304
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "typo-body-md-bold invisible", style: { gridArea: "1 / 1" }, children: label }),
|
|
24305
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24306
|
+
"span",
|
|
24307
|
+
{
|
|
24308
|
+
className: checked ? "typo-body-md-bold" : "typo-body-md-semibold",
|
|
24309
|
+
style: { gridArea: "1 / 1" },
|
|
24310
|
+
children: label
|
|
24311
|
+
}
|
|
24312
|
+
)
|
|
24313
|
+
] }),
|
|
24314
|
+
tag && /* @__PURE__ */ jsxRuntime.jsx(STag, { ...tag, size: "xs", className: "ml-auto" })
|
|
24315
|
+
] }),
|
|
24316
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24141
24317
|
"span",
|
|
24142
24318
|
{
|
|
24143
|
-
className:
|
|
24144
|
-
|
|
24145
|
-
|
|
24146
|
-
|
|
24319
|
+
className: cn(
|
|
24320
|
+
"typo-body-sm-default pl-(--cmp-radioCard-subtitle-paddingLeft)",
|
|
24321
|
+
textColor ?? "text-(--cmp-radioCard-subtitle-color)"
|
|
24322
|
+
),
|
|
24323
|
+
children: subtitle
|
|
24147
24324
|
}
|
|
24148
24325
|
)
|
|
24149
|
-
|
|
24150
|
-
),
|
|
24151
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("grid min-w-0", textColor ?? "text-(--cmp-radioCard-label-color)"), children: [
|
|
24152
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": true, className: "typo-body-md-bold invisible", style: { gridArea: "1 / 1" }, children: label }),
|
|
24153
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24154
|
-
"span",
|
|
24155
|
-
{
|
|
24156
|
-
className: checked ? "typo-body-md-bold" : "typo-body-md-semibold",
|
|
24157
|
-
style: { gridArea: "1 / 1" },
|
|
24158
|
-
children: label
|
|
24159
|
-
}
|
|
24160
|
-
)
|
|
24161
|
-
] }),
|
|
24162
|
-
tag && /* @__PURE__ */ jsxRuntime.jsx(STag, { ...tag, size: "xs", className: "ml-auto" })
|
|
24163
|
-
] }),
|
|
24164
|
-
subtitle && /* @__PURE__ */ jsxRuntime.jsx(
|
|
24165
|
-
"span",
|
|
24166
|
-
{
|
|
24167
|
-
className: cn(
|
|
24168
|
-
"typo-body-sm-default pl-(--cmp-radioCard-subtitle-paddingLeft)",
|
|
24169
|
-
textColor ?? "text-(--cmp-radioCard-subtitle-color)"
|
|
24170
|
-
),
|
|
24171
|
-
children: subtitle
|
|
24326
|
+
]
|
|
24172
24327
|
}
|
|
24173
|
-
)
|
|
24328
|
+
),
|
|
24329
|
+
children != null && children !== false && // 라벨 왼쪽 끝(카드 여백 + 서브타이틀 들여쓰기)에 맞춘다. 서브타이틀과의 간격은 label 의 아래 여백이다
|
|
24330
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "box-border w-full pr-(--cmp-radioCard-paddingX) pb-(--cmp-radioCard-paddingY) pl-[calc(var(--cmp-radioCard-paddingX)+var(--cmp-radioCard-subtitle-paddingLeft))]", children })
|
|
24174
24331
|
]
|
|
24175
24332
|
}
|
|
24176
24333
|
);
|
|
@@ -24205,7 +24362,8 @@ function SRadioCardGroup({
|
|
|
24205
24362
|
tag: o.tag,
|
|
24206
24363
|
name: groupName,
|
|
24207
24364
|
disabled: disabled || o.disabled,
|
|
24208
|
-
onValueChange
|
|
24365
|
+
onValueChange,
|
|
24366
|
+
children: o.content
|
|
24209
24367
|
},
|
|
24210
24368
|
String(o.value)
|
|
24211
24369
|
))
|
|
@@ -26544,6 +26702,7 @@ var CHIPFILTER = {
|
|
|
26544
26702
|
dividerHeight: "var(--cmp-chipFilter-divider-height)",
|
|
26545
26703
|
chipHeight: "var(--cmp-chipFilter-chip-height)",
|
|
26546
26704
|
chipRadius: "var(--cmp-chipFilter-chip-radius)",
|
|
26705
|
+
chipPaddingX: "var(--cmp-chipFilter-chip-paddingX)",
|
|
26547
26706
|
chipGap: "var(--cmp-chipFilter-chip-gap)",
|
|
26548
26707
|
chipDefaultBg: "var(--cmp-chipFilter-chip-default-bg)",
|
|
26549
26708
|
chipDefaultBorder: "var(--cmp-chipFilter-chip-default-border)",
|
|
@@ -26554,7 +26713,7 @@ var CHIPFILTER = {
|
|
|
26554
26713
|
chipAppliedBg: "var(--cmp-chipFilter-chip-applied-bg)",
|
|
26555
26714
|
chipAppliedBorder: "var(--cmp-chipFilter-chip-applied-border)",
|
|
26556
26715
|
chipAppliedLabel: "var(--cmp-chipFilter-chip-applied-text-label)",
|
|
26557
|
-
chipAppliedValue: "var(--
|
|
26716
|
+
chipAppliedValue: "var(--cmp-chipFilter-chip-applied-text-data)",
|
|
26558
26717
|
chipDisabledBg: "var(--cmp-chipFilter-chip-disabled-bg)",
|
|
26559
26718
|
chipDisabledBorder: "var(--cmp-chipFilter-chip-disabled-border)",
|
|
26560
26719
|
chipDisabledText: "var(--cmp-chipFilter-chip-disabled-text)",
|
|
@@ -27189,20 +27348,13 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27189
27348
|
onValueChange: (next) => emitValueAndSearch(field.key, next)
|
|
27190
27349
|
}),
|
|
27191
27350
|
addable && !disabled && !field.disabled && showClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27192
|
-
|
|
27351
|
+
SGhostButton,
|
|
27193
27352
|
{
|
|
27194
|
-
|
|
27195
|
-
"
|
|
27196
|
-
|
|
27197
|
-
|
|
27198
|
-
|
|
27199
|
-
SIcon,
|
|
27200
|
-
{
|
|
27201
|
-
name: "close",
|
|
27202
|
-
size: 12,
|
|
27203
|
-
color: "var(--cmp-ghostButton-default-content)"
|
|
27204
|
-
}
|
|
27205
|
-
)
|
|
27353
|
+
icon: "close",
|
|
27354
|
+
size: "xxs",
|
|
27355
|
+
ariaLabel: `${field.label} \uD544\uD130 \uC81C\uAC70`,
|
|
27356
|
+
className: "shrink-0",
|
|
27357
|
+
onClick: handleClear
|
|
27206
27358
|
}
|
|
27207
27359
|
)
|
|
27208
27360
|
] }, field.key) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -27245,7 +27397,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27245
27397
|
{
|
|
27246
27398
|
type: "button",
|
|
27247
27399
|
disabled: disabled || inactiveFields.length === 0,
|
|
27248
|
-
className: "inline-flex shrink-0 cursor-pointer items-center justify-center gap-[var(--cmp-chipFilter-addButton-gap)] whitespace-nowrap border border-solid bg-[var(--cmp-chipFilter-addButton-bg)] px-[var(--cmp-chipFilter-addButton-paddingX)]
|
|
27400
|
+
className: "inline-flex shrink-0 cursor-pointer items-center justify-center gap-[var(--cmp-chipFilter-addButton-gap)] whitespace-nowrap border border-solid bg-[var(--cmp-chipFilter-addButton-bg)] px-[var(--cmp-chipFilter-addButton-paddingX)] typo-control-xs-medium outline-none disabled:cursor-not-allowed",
|
|
27249
27401
|
style: {
|
|
27250
27402
|
minHeight: "var(--cmp-chipFilter-addButton-height)" ,
|
|
27251
27403
|
borderRadius: "var(--cmp-chipFilter-addButton-radius)" ,
|
|
@@ -27257,7 +27409,7 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27257
27409
|
SIcon,
|
|
27258
27410
|
{
|
|
27259
27411
|
name: "add",
|
|
27260
|
-
size:
|
|
27412
|
+
size: "var(--cmp-chipFilter-addButton-icon)",
|
|
27261
27413
|
color: disabled || inactiveFields.length === 0 ? CHIPFILTER.addTextDisabled : CHIPFILTER.addText
|
|
27262
27414
|
}
|
|
27263
27415
|
),
|
|
@@ -27293,9 +27445,9 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
27293
27445
|
onClick: reset,
|
|
27294
27446
|
className: cn(
|
|
27295
27447
|
"shrink-0",
|
|
27296
|
-
// 부모 flex gap(
|
|
27297
|
-
// 부족한 만큼(
|
|
27298
|
-
hasAddButton && "ml-[calc(
|
|
27448
|
+
// 부모 flex gap(chip-group)은 칩 사이 간격 기준이라, 필터 추가 버튼과의 bar-gap 간격을 맞추려면
|
|
27449
|
+
// 부족한 만큼(bar-gap - chip-group)을 추가로 띄운다. 필터 추가가 없을 땐 divider와 이미 bar-gap이라 불필요.
|
|
27450
|
+
hasAddButton && "ml-[calc(var(--cmp-chipFilter-bar-gap)_-_var(--cmp-chipFilter-chip-group))]"
|
|
27299
27451
|
)
|
|
27300
27452
|
}
|
|
27301
27453
|
)
|
|
@@ -27349,7 +27501,7 @@ function Divider({ inset, top } = {}) {
|
|
|
27349
27501
|
className: cn(
|
|
27350
27502
|
"inline-flex w-px shrink-0 bg-[var(--chipfilter-bar-border)]",
|
|
27351
27503
|
top ? "mt-[2px] self-start" : "my-auto",
|
|
27352
|
-
inset && "mx-[calc(
|
|
27504
|
+
inset && "mx-[calc(var(--cmp-chipFilter-bar-gap)_-_var(--cmp-chipFilter-chip-group))]"
|
|
27353
27505
|
),
|
|
27354
27506
|
style: { height: "var(--chipfilter-divider-height)" }
|
|
27355
27507
|
}
|
|
@@ -27389,87 +27541,97 @@ function FilterChip({
|
|
|
27389
27541
|
const border = disabled ? CHIPFILTER.chipDisabledBorder : warning ? CHIPFILTER.chipWarningBorder : applied ? active ? "var(--color-blue-strong)" : CHIPFILTER.chipAppliedBorder : active ? CHIPFILTER.chipActiveBorder : CHIPFILTER.chipDefaultBorder;
|
|
27390
27542
|
const background = disabled ? CHIPFILTER.chipDisabledBg : applied ? CHIPFILTER.chipAppliedBg : CHIPFILTER.chipDefaultBg;
|
|
27391
27543
|
const textColor = disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipDefaultText;
|
|
27544
|
+
const hasClear = !disabled && showClear && (applied || showClearWhenEmpty);
|
|
27392
27545
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27393
|
-
"
|
|
27546
|
+
"div",
|
|
27394
27547
|
{
|
|
27395
|
-
ref: refCallback,
|
|
27396
|
-
type: "button",
|
|
27397
|
-
disabled,
|
|
27398
|
-
"aria-expanded": active,
|
|
27399
27548
|
onPointerDown: (event) => event.stopPropagation(),
|
|
27400
|
-
|
|
27401
|
-
className: "group/chip-filter inline-flex max-w-full shrink-0 cursor-pointer items-center justify-center whitespace-nowrap border border-solid px-[var(--cmp-chipFilter-chip-paddingX)] text-[12px] leading-[20px] outline-none disabled:cursor-not-allowed",
|
|
27549
|
+
className: "inline-flex max-w-full shrink-0 items-stretch whitespace-nowrap border border-solid",
|
|
27402
27550
|
style: {
|
|
27403
27551
|
minHeight: CHIPFILTER.chipHeight,
|
|
27404
27552
|
gap: CHIPFILTER.chipGap,
|
|
27405
27553
|
borderRadius: CHIPFILTER.chipRadius,
|
|
27406
27554
|
borderColor: border,
|
|
27407
27555
|
background,
|
|
27408
|
-
|
|
27556
|
+
paddingRight: hasClear ? CHIPFILTER.chipPaddingX : void 0
|
|
27409
27557
|
},
|
|
27410
27558
|
children: [
|
|
27411
|
-
|
|
27412
|
-
|
|
27559
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
27560
|
+
"button",
|
|
27413
27561
|
{
|
|
27414
|
-
|
|
27415
|
-
|
|
27416
|
-
|
|
27562
|
+
ref: refCallback,
|
|
27563
|
+
type: "button",
|
|
27564
|
+
disabled,
|
|
27565
|
+
"aria-expanded": active,
|
|
27566
|
+
onClick: onOpen,
|
|
27567
|
+
className: "inline-flex min-w-0 cursor-pointer items-center justify-center border-none bg-transparent p-0 typo-body-sm-default outline-none disabled:cursor-not-allowed",
|
|
27568
|
+
style: {
|
|
27569
|
+
gap: CHIPFILTER.chipGap,
|
|
27570
|
+
paddingLeft: CHIPFILTER.chipPaddingX,
|
|
27571
|
+
paddingRight: hasClear ? void 0 : CHIPFILTER.chipPaddingX,
|
|
27572
|
+
color: textColor
|
|
27573
|
+
},
|
|
27574
|
+
children: [
|
|
27575
|
+
field.required && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27576
|
+
SIcon,
|
|
27577
|
+
{
|
|
27578
|
+
name: "asterisk",
|
|
27579
|
+
size: "var(--cmp-chipFilter-chip-icon-essential)",
|
|
27580
|
+
color: disabled ? CHIPFILTER.chipDisabledText : "var(--cmp-tag-darkblue-content)"
|
|
27581
|
+
}
|
|
27582
|
+
),
|
|
27583
|
+
applied ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "inline-flex min-w-0 items-center gap-[4px] truncate", children: [
|
|
27584
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27585
|
+
"span",
|
|
27586
|
+
{
|
|
27587
|
+
className: "typo-body-sm-bold",
|
|
27588
|
+
style: {
|
|
27589
|
+
color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedLabel
|
|
27590
|
+
},
|
|
27591
|
+
children: field.label
|
|
27592
|
+
}
|
|
27593
|
+
),
|
|
27594
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27595
|
+
"span",
|
|
27596
|
+
{
|
|
27597
|
+
style: {
|
|
27598
|
+
color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedLabel
|
|
27599
|
+
},
|
|
27600
|
+
children: ":"
|
|
27601
|
+
}
|
|
27602
|
+
),
|
|
27603
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27604
|
+
"span",
|
|
27605
|
+
{
|
|
27606
|
+
className: "min-w-0 truncate typo-body-sm-bold",
|
|
27607
|
+
style: {
|
|
27608
|
+
color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedValue
|
|
27609
|
+
},
|
|
27610
|
+
children: valueText
|
|
27611
|
+
}
|
|
27612
|
+
)
|
|
27613
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
27614
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("min-w-0 truncate", active && "typo-body-sm-bold"), children: field.label }),
|
|
27615
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27616
|
+
SIcon,
|
|
27617
|
+
{
|
|
27618
|
+
name: "caretDown",
|
|
27619
|
+
size: "var(--cmp-chipFilter-chip-icon-caret)",
|
|
27620
|
+
color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipCaret
|
|
27621
|
+
}
|
|
27622
|
+
)
|
|
27623
|
+
] })
|
|
27624
|
+
]
|
|
27417
27625
|
}
|
|
27418
27626
|
),
|
|
27419
|
-
|
|
27420
|
-
|
|
27421
|
-
"span",
|
|
27422
|
-
{
|
|
27423
|
-
className: "font-bold",
|
|
27424
|
-
style: { color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedLabel },
|
|
27425
|
-
children: field.label
|
|
27426
|
-
}
|
|
27427
|
-
),
|
|
27428
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27429
|
-
"span",
|
|
27430
|
-
{
|
|
27431
|
-
style: { color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedLabel },
|
|
27432
|
-
children: ":"
|
|
27433
|
-
}
|
|
27434
|
-
),
|
|
27435
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27436
|
-
"span",
|
|
27437
|
-
{
|
|
27438
|
-
className: "min-w-0 truncate font-bold",
|
|
27439
|
-
style: { color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedValue },
|
|
27440
|
-
children: valueText
|
|
27441
|
-
}
|
|
27442
|
-
)
|
|
27443
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
27444
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("min-w-0 truncate", active && "font-bold"), children: field.label }),
|
|
27445
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27446
|
-
SIcon,
|
|
27447
|
-
{
|
|
27448
|
-
name: "caretDown",
|
|
27449
|
-
size: 12,
|
|
27450
|
-
color: disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipCaret
|
|
27451
|
-
}
|
|
27452
|
-
)
|
|
27453
|
-
] }),
|
|
27454
|
-
!disabled && showClear && (applied || showClearWhenEmpty) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27455
|
-
"span",
|
|
27627
|
+
hasClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27628
|
+
SGhostButton,
|
|
27456
27629
|
{
|
|
27457
|
-
|
|
27458
|
-
|
|
27459
|
-
|
|
27460
|
-
className: "
|
|
27461
|
-
onClick:
|
|
27462
|
-
event.preventDefault();
|
|
27463
|
-
event.stopPropagation();
|
|
27464
|
-
onClear();
|
|
27465
|
-
},
|
|
27466
|
-
onKeyDown: (event) => {
|
|
27467
|
-
if (event.key !== "Enter" && event.key !== " ") return;
|
|
27468
|
-
event.preventDefault();
|
|
27469
|
-
event.stopPropagation();
|
|
27470
|
-
onClear();
|
|
27471
|
-
},
|
|
27472
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "close", size: 12, color: "var(--cmp-ghostButton-default-content)" })
|
|
27630
|
+
icon: "close",
|
|
27631
|
+
size: "xxs",
|
|
27632
|
+
ariaLabel: `${field.label} \uD544\uD130 \uC9C0\uC6B0\uAE30`,
|
|
27633
|
+
className: "shrink-0 self-center",
|
|
27634
|
+
onClick: onClear
|
|
27473
27635
|
}
|
|
27474
27636
|
)
|
|
27475
27637
|
]
|
|
@@ -27849,47 +28011,18 @@ function InlineDatePresetFilter({
|
|
|
27849
28011
|
const badgeBackground = disabled ? CHIPFILTER.chipDisabledBg : CHIPFILTER.chipAppliedBg;
|
|
27850
28012
|
const badgeLabelColor = disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedLabel;
|
|
27851
28013
|
const badgeValueColor = disabled ? CHIPFILTER.chipDisabledText : CHIPFILTER.chipAppliedValue;
|
|
27852
|
-
const
|
|
27853
|
-
|
|
27854
|
-
|
|
27855
|
-
|
|
27856
|
-
|
|
27857
|
-
|
|
27858
|
-
|
|
27859
|
-
|
|
27860
|
-
|
|
27861
|
-
|
|
27862
|
-
|
|
27863
|
-
|
|
27864
|
-
children: [
|
|
27865
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-bold", children: [
|
|
27866
|
-
field.label,
|
|
27867
|
-
":"
|
|
27868
|
-
] }),
|
|
27869
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-bold", style: { color: badgeValueColor }, children: displayValue(field, value) }),
|
|
27870
|
-
!disabled && showClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
27871
|
-
"span",
|
|
27872
|
-
{
|
|
27873
|
-
role: "button",
|
|
27874
|
-
tabIndex: 0,
|
|
27875
|
-
"aria-label": `${field.label} \uD544\uD130 \uC9C0\uC6B0\uAE30`,
|
|
27876
|
-
className: "inline-flex size-[16px] items-center justify-center rounded-[var(--cmp-ghostButton-radius-sm)]",
|
|
27877
|
-
onClick: (event) => {
|
|
27878
|
-
event.stopPropagation();
|
|
27879
|
-
onClear();
|
|
27880
|
-
},
|
|
27881
|
-
onKeyDown: (event) => {
|
|
27882
|
-
if (event.key !== "Enter" && event.key !== " ") return;
|
|
27883
|
-
event.preventDefault();
|
|
27884
|
-
event.stopPropagation();
|
|
27885
|
-
onClear();
|
|
27886
|
-
},
|
|
27887
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "close", size: 12, color: "var(--cmp-ghostButton-default-content)" })
|
|
27888
|
-
}
|
|
27889
|
-
)
|
|
27890
|
-
]
|
|
27891
|
-
}
|
|
27892
|
-
);
|
|
28014
|
+
const hasClear = !disabled && showClear;
|
|
28015
|
+
const badgeTextStyle = {
|
|
28016
|
+
paddingLeft: CHIPFILTER.chipPaddingX,
|
|
28017
|
+
paddingRight: hasClear ? void 0 : CHIPFILTER.chipPaddingX
|
|
28018
|
+
};
|
|
28019
|
+
const badgeText = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
28020
|
+
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "typo-body-sm-bold", children: [
|
|
28021
|
+
field.label,
|
|
28022
|
+
":"
|
|
28023
|
+
] }),
|
|
28024
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "typo-body-sm-bold", style: { color: badgeValueColor }, children: displayValue(field, value) })
|
|
28025
|
+
] });
|
|
27893
28026
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex shrink-0 items-center gap-[8px]", children: [
|
|
27894
28027
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27895
28028
|
SRadioButton,
|
|
@@ -27901,43 +28034,71 @@ function InlineDatePresetFilter({
|
|
|
27901
28034
|
onValueChange: (next) => selectPreset(String(next))
|
|
27902
28035
|
}
|
|
27903
28036
|
),
|
|
27904
|
-
applied && (
|
|
27905
|
-
|
|
27906
|
-
|
|
27907
|
-
|
|
27908
|
-
|
|
27909
|
-
|
|
27910
|
-
|
|
27911
|
-
|
|
27912
|
-
|
|
27913
|
-
|
|
27914
|
-
|
|
27915
|
-
|
|
27916
|
-
|
|
27917
|
-
|
|
27918
|
-
|
|
27919
|
-
|
|
27920
|
-
|
|
27921
|
-
|
|
27922
|
-
|
|
27923
|
-
|
|
27924
|
-
|
|
27925
|
-
|
|
27926
|
-
|
|
27927
|
-
|
|
27928
|
-
|
|
27929
|
-
|
|
27930
|
-
onSelect: (range) => {
|
|
27931
|
-
setSelectedId(null);
|
|
27932
|
-
onValueChange(range);
|
|
27933
|
-
setPickerOpen(false);
|
|
28037
|
+
applied && // 뱃지 모양(테두리·배경)은 바깥이 맡고, 라벨·값 칸과 지우기 × 를 형제로 둔다 — FilterChip 과
|
|
28038
|
+
// 같은 이유로, 캘린더를 여는 버튼 안에 × 를 넣지 않는다.
|
|
28039
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
28040
|
+
"span",
|
|
28041
|
+
{
|
|
28042
|
+
className: "inline-flex shrink-0 items-stretch gap-[4px] whitespace-nowrap border border-solid typo-body-sm-default",
|
|
28043
|
+
style: {
|
|
28044
|
+
minHeight: CHIPFILTER.chipHeight,
|
|
28045
|
+
borderRadius: CHIPFILTER.chipRadius,
|
|
28046
|
+
borderColor: badgeBorder,
|
|
28047
|
+
background: badgeBackground,
|
|
28048
|
+
color: badgeLabelColor,
|
|
28049
|
+
paddingRight: hasClear ? CHIPFILTER.chipPaddingX : void 0
|
|
28050
|
+
},
|
|
28051
|
+
children: [
|
|
28052
|
+
rangeValue ? (
|
|
28053
|
+
// 눌렀을 때 캘린더가 열려 기간을 직접 다시 고를 수 있게 한다. 직접 고르면 프리셋 선택은 해제된다.
|
|
28054
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: pickerOpen, onOpenChange: setPickerOpen, children: [
|
|
28055
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28056
|
+
"button",
|
|
28057
|
+
{
|
|
28058
|
+
type: "button",
|
|
28059
|
+
disabled,
|
|
28060
|
+
className: "inline-flex cursor-pointer items-center gap-[4px] border-none bg-transparent p-0 outline-none disabled:cursor-not-allowed",
|
|
28061
|
+
style: badgeTextStyle,
|
|
28062
|
+
children: badgeText
|
|
27934
28063
|
}
|
|
27935
|
-
}
|
|
27936
|
-
|
|
27937
|
-
|
|
27938
|
-
|
|
27939
|
-
|
|
27940
|
-
|
|
28064
|
+
) }),
|
|
28065
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28066
|
+
RPopover13__namespace.Content,
|
|
28067
|
+
{
|
|
28068
|
+
side: "bottom",
|
|
28069
|
+
align: "start",
|
|
28070
|
+
sideOffset: 4,
|
|
28071
|
+
className: cn("z-50", FLOATING_SLIDE_ANIM),
|
|
28072
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
28073
|
+
RangeCalendar,
|
|
28074
|
+
{
|
|
28075
|
+
value: rangeValue,
|
|
28076
|
+
selectable: field.selectable,
|
|
28077
|
+
maxRange: field.maxRange,
|
|
28078
|
+
onSelect: (range) => {
|
|
28079
|
+
setSelectedId(null);
|
|
28080
|
+
onValueChange(range);
|
|
28081
|
+
setPickerOpen(false);
|
|
28082
|
+
}
|
|
28083
|
+
}
|
|
28084
|
+
)
|
|
28085
|
+
}
|
|
28086
|
+
) })
|
|
28087
|
+
] })
|
|
28088
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex items-center gap-[4px]", style: badgeTextStyle, children: badgeText }),
|
|
28089
|
+
hasClear && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28090
|
+
SGhostButton,
|
|
28091
|
+
{
|
|
28092
|
+
icon: "close",
|
|
28093
|
+
size: "xxs",
|
|
28094
|
+
ariaLabel: `${field.label} \uD544\uD130 \uC9C0\uC6B0\uAE30`,
|
|
28095
|
+
className: "shrink-0 self-center",
|
|
28096
|
+
onClick: onClear
|
|
28097
|
+
}
|
|
28098
|
+
)
|
|
28099
|
+
]
|
|
28100
|
+
}
|
|
28101
|
+
)
|
|
27941
28102
|
] });
|
|
27942
28103
|
}
|
|
27943
28104
|
var MATCH_MODE_OPTIONS = [
|
|
@@ -28026,7 +28187,7 @@ function KeywordEditor({
|
|
|
28026
28187
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
28027
28188
|
"span",
|
|
28028
28189
|
{
|
|
28029
|
-
className: "shrink-0 whitespace-nowrap
|
|
28190
|
+
className: "shrink-0 whitespace-nowrap typo-body-sm-medium",
|
|
28030
28191
|
style: { color: CHIPFILTER.listboxLabel },
|
|
28031
28192
|
children: "\uAC80\uC0C9 \uC870\uAC74 :"
|
|
28032
28193
|
}
|
|
@@ -28086,7 +28247,7 @@ function KeywordEntryRow({
|
|
|
28086
28247
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
28087
28248
|
"div",
|
|
28088
28249
|
{
|
|
28089
|
-
className: "group flex w-full items-center justify-between gap-[8px]
|
|
28250
|
+
className: "group flex w-full items-center justify-between gap-[8px] typo-body-sm-default",
|
|
28090
28251
|
style: {
|
|
28091
28252
|
paddingTop: CHIPFILTER.itemPaddingY,
|
|
28092
28253
|
paddingBottom: CHIPFILTER.itemPaddingY,
|
|
@@ -28097,13 +28258,13 @@ function KeywordEntryRow({
|
|
|
28097
28258
|
children: [
|
|
28098
28259
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("min-w-0 truncate", !disabled && "group-hover:font-bold"), children: label }),
|
|
28099
28260
|
!disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28100
|
-
|
|
28261
|
+
SGhostButton,
|
|
28101
28262
|
{
|
|
28102
|
-
|
|
28103
|
-
"
|
|
28104
|
-
|
|
28105
|
-
|
|
28106
|
-
|
|
28263
|
+
icon: "close",
|
|
28264
|
+
size: "xxs",
|
|
28265
|
+
ariaLabel: `${label} \uC0AD\uC81C`,
|
|
28266
|
+
className: "invisible shrink-0 group-hover:visible",
|
|
28267
|
+
onClick: onRemove
|
|
28107
28268
|
}
|
|
28108
28269
|
)
|
|
28109
28270
|
]
|
|
@@ -28112,7 +28273,7 @@ function KeywordEntryRow({
|
|
|
28112
28273
|
}
|
|
28113
28274
|
var OPTION_SEARCH_THRESHOLD = 11;
|
|
28114
28275
|
var filterFlatOptions = (flat, query) => filterDepthRows(flat, (option) => option.label.toLowerCase().includes(query));
|
|
28115
|
-
var depthPaddingLeft = (depth) => depth === 1 ?
|
|
28276
|
+
var depthPaddingLeft = (depth) => LIST_BOX_ITEM_PADDING_LEFT[depth === 1 ? 1 : depth === 2 ? 2 : 3];
|
|
28116
28277
|
function OptionList({
|
|
28117
28278
|
field,
|
|
28118
28279
|
value,
|
|
@@ -28328,14 +28489,14 @@ function OptionCheckbox({ checked, disabled }) {
|
|
|
28328
28489
|
"span",
|
|
28329
28490
|
{
|
|
28330
28491
|
className: cn(
|
|
28331
|
-
"inline-flex size-
|
|
28492
|
+
"inline-flex size-(--cmp-checkbox-size) shrink-0 items-center justify-center rounded-(--cmp-checkbox-radius) border-(length:--cmp-checkbox-borderWidth) border-solid",
|
|
28332
28493
|
disabled ? "border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]" : filled ? "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-[var(--cmp-checkbox-unchecked-bg-default)]"
|
|
28333
28494
|
),
|
|
28334
28495
|
children: filled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
28335
28496
|
SIcon,
|
|
28336
28497
|
{
|
|
28337
28498
|
name: checked === null ? "checkboxIndeterminate" : "checkboxCheck",
|
|
28338
|
-
size:
|
|
28499
|
+
size: "var(--cmp-checkbox-icon)",
|
|
28339
28500
|
color: disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
|
|
28340
28501
|
}
|
|
28341
28502
|
)
|
|
@@ -28380,8 +28541,8 @@ function MenuItem({
|
|
|
28380
28541
|
onMouseEnter,
|
|
28381
28542
|
onClick,
|
|
28382
28543
|
className: cn(
|
|
28383
|
-
"flex w-full min-w-0 cursor-pointer items-center gap-[8px] border-none bg-transparent text-left
|
|
28384
|
-
selected ? "
|
|
28544
|
+
"flex w-full min-w-0 cursor-pointer items-center gap-[8px] border-none bg-transparent text-left outline-none disabled:cursor-not-allowed",
|
|
28545
|
+
selected ? "typo-body-sm-bold" : "typo-body-sm-default",
|
|
28385
28546
|
!disabled && "hover:font-bold"
|
|
28386
28547
|
),
|
|
28387
28548
|
style: {
|
|
@@ -28618,7 +28779,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
28618
28779
|
labelPosition,
|
|
28619
28780
|
subLabel,
|
|
28620
28781
|
labelWidth,
|
|
28621
|
-
labelHeight: `calc(var(--cmp-chipInput-${size}-minHeight) +
|
|
28782
|
+
labelHeight: `calc(var(--cmp-chipInput-${size}-minHeight) + var(--cmp-chipInput-borderWidth) * 2)`,
|
|
28622
28783
|
icon,
|
|
28623
28784
|
iconColor,
|
|
28624
28785
|
labelTooltip,
|
|
@@ -28703,8 +28864,8 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
28703
28864
|
{
|
|
28704
28865
|
"aria-hidden": true,
|
|
28705
28866
|
className: cn(
|
|
28706
|
-
"invisible col-start-1 row-start-1 whitespace-pre
|
|
28707
|
-
size === "md" ? "
|
|
28867
|
+
"invisible col-start-1 row-start-1 whitespace-pre",
|
|
28868
|
+
size === "md" ? "typo-field-md-default" : "typo-field-sm-default"
|
|
28708
28869
|
),
|
|
28709
28870
|
children: inputValue !== "" ? inputValue : values.length === 0 ? placeholder : ""
|
|
28710
28871
|
}
|
|
@@ -28723,9 +28884,9 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
28723
28884
|
"aria-activedescendant": showDropdown && activeIndex >= 0 ? activeOptionId : void 0,
|
|
28724
28885
|
"aria-autocomplete": "list",
|
|
28725
28886
|
className: cn(
|
|
28726
|
-
"s-chip-input__input col-start-1 row-start-1 w-full border-0 bg-transparent p-0
|
|
28887
|
+
"s-chip-input__input col-start-1 row-start-1 w-full border-0 bg-transparent p-0 text-(--cmp-chip-content-focus) outline-none placeholder:text-(--cmp-chipInput-text-placeholder) disabled:cursor-not-allowed",
|
|
28727
28888
|
AUTOFILL_RESET_CLASS,
|
|
28728
|
-
size === "md" ? "
|
|
28889
|
+
size === "md" ? "typo-field-md-default" : "typo-field-sm-default"
|
|
28729
28890
|
),
|
|
28730
28891
|
style: {
|
|
28731
28892
|
minWidth: "1ch",
|
|
@@ -28895,7 +29056,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
|
|
|
28895
29056
|
"aria-selected": selected || active,
|
|
28896
29057
|
tabIndex: -1,
|
|
28897
29058
|
className: cn(
|
|
28898
|
-
"s-chip-input__suggestion-item flex shrink-0 cursor-pointer items-center gap-
|
|
29059
|
+
"s-chip-input__suggestion-item flex shrink-0 cursor-pointer items-center gap-(--cmp-listBoxItem-gap) overflow-hidden text-ellipsis whitespace-nowrap py-(--cmp-listBoxItem-paddingY) pl-(--cmp-listBoxItem-paddingLeft-depth1) pr-(--cmp-listBoxItem-paddingRight) typo-field-sm-default",
|
|
28899
29060
|
selected ? "cursor-default overflow-visible font-bold text-(--cmp-listBoxItem-content-selected)" : active ? "bg-(--cmp-listBoxItem-bg-hover) font-medium text-(--cmp-listBoxItem-content-hover)" : "text-(--cmp-listBoxItem-content-default)"
|
|
28900
29061
|
),
|
|
28901
29062
|
onMouseDown: (e) => {
|
|
@@ -29104,7 +29265,7 @@ var TIMEPICKER_SIZE_CONFIG = {
|
|
|
29104
29265
|
gap: V4("sm-gap"),
|
|
29105
29266
|
icon: V4("sm-icon"),
|
|
29106
29267
|
radius: V4("sm-radius"),
|
|
29107
|
-
|
|
29268
|
+
typography: "typo-field-sm-default",
|
|
29108
29269
|
fontSize: 12,
|
|
29109
29270
|
lineHeight: 20,
|
|
29110
29271
|
minWidth: 80,
|
|
@@ -29117,7 +29278,7 @@ var TIMEPICKER_SIZE_CONFIG = {
|
|
|
29117
29278
|
gap: V4("md-gap"),
|
|
29118
29279
|
icon: V4("md-icon"),
|
|
29119
29280
|
radius: V4("md-radius"),
|
|
29120
|
-
|
|
29281
|
+
typography: "typo-field-md-default",
|
|
29121
29282
|
fontSize: 14,
|
|
29122
29283
|
lineHeight: 24,
|
|
29123
29284
|
minWidth: 96,
|
|
@@ -29448,11 +29609,9 @@ function STimePicker({
|
|
|
29448
29609
|
"span",
|
|
29449
29610
|
{
|
|
29450
29611
|
id: triggerTextId,
|
|
29451
|
-
className: "flex-1 truncate text-center",
|
|
29612
|
+
className: cn("flex-1 truncate text-center", dims.typography),
|
|
29452
29613
|
style: {
|
|
29453
29614
|
minWidth: dims.minWidth,
|
|
29454
|
-
fontSize: dims.fontSize,
|
|
29455
|
-
lineHeight: `${dims.lineHeight}px`,
|
|
29456
29615
|
color: disabled ? "var(--cmp-timepicker-text-disabled)" : hasValue ? "var(--cmp-timepicker-text-default)" : "var(--cmp-field-hint-color)"
|
|
29457
29616
|
},
|
|
29458
29617
|
children: hasValue ? displayText : placeholder
|
|
@@ -29556,7 +29715,7 @@ function RangeTimeSelector({
|
|
|
29556
29715
|
className: "flex flex-col items-center",
|
|
29557
29716
|
style: { gap: "var(--cmp-timepicker-selector-range-heading-gap)" },
|
|
29558
29717
|
children: [
|
|
29559
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "whitespace-nowrap text-center
|
|
29718
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "whitespace-nowrap text-center typo-field-sm-bold text-[var(--cmp-timepicker-selector-range-heading-color)]", children: title }),
|
|
29560
29719
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
29561
29720
|
TimeListbox,
|
|
29562
29721
|
{
|
|
@@ -29723,11 +29882,9 @@ function STimeRangePicker({
|
|
|
29723
29882
|
"span",
|
|
29724
29883
|
{
|
|
29725
29884
|
id: triggerTextId,
|
|
29726
|
-
className: "flex-1 truncate text-center",
|
|
29885
|
+
className: cn("flex-1 truncate text-center", dims.typography),
|
|
29727
29886
|
style: {
|
|
29728
29887
|
minWidth: dims.minWidth,
|
|
29729
|
-
fontSize: dims.fontSize,
|
|
29730
|
-
lineHeight: `${dims.lineHeight}px`,
|
|
29731
29888
|
color: disabled ? "var(--cmp-timepicker-text-disabled)" : hasValue ? "var(--cmp-timepicker-text-default)" : "var(--cmp-field-hint-color)"
|
|
29732
29889
|
},
|
|
29733
29890
|
children: hasValue ? displayText : placeholder
|