sellmate-design-system-react 0.1.7 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/SActionModal/SActionModal.cjs +11 -3
- package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
- package/dist/components/SActionModal/SActionModal.js +11 -3
- package/dist/components/SActionModal/SActionModal.js.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs +226 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +226 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SCalendar/SCalendar.cjs +9 -1
- package/dist/components/SCalendar/SCalendar.cjs.map +1 -1
- package/dist/components/SCalendar/SCalendar.js +9 -1
- package/dist/components/SCalendar/SCalendar.js.map +1 -1
- package/dist/components/SChip/SChip.cjs +9 -1
- package/dist/components/SChip/SChip.cjs.map +1 -1
- package/dist/components/SChip/SChip.d.ts +1 -1
- package/dist/components/SChip/SChip.js +9 -1
- package/dist/components/SChip/SChip.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +260 -235
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +259 -235
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.cjs +56 -58
- package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.js +56 -58
- package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
- package/dist/components/SConfirmModal/SConfirmModal.cjs +9 -1
- package/dist/components/SConfirmModal/SConfirmModal.cjs.map +1 -1
- package/dist/components/SConfirmModal/SConfirmModal.js +9 -1
- package/dist/components/SConfirmModal/SConfirmModal.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +247 -221
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +247 -221
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +308 -256
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +308 -256
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.cjs +51 -4
- package/dist/components/SDropdownButton/SDropdownButton.cjs.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.js +52 -5
- package/dist/components/SDropdownButton/SDropdownButton.js.map +1 -1
- package/dist/components/SField/SField.cjs +226 -21
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.d.ts +11 -0
- package/dist/components/SField/SField.js +226 -21
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +306 -278
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +4 -2
- package/dist/components/SFilePicker/SFilePicker.js +306 -278
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SGhostButton/SGhostButton.cjs +8 -0
- package/dist/components/SGhostButton/SGhostButton.cjs.map +1 -1
- package/dist/components/SGhostButton/SGhostButton.js +8 -0
- package/dist/components/SGhostButton/SGhostButton.js.map +1 -1
- package/dist/components/SGuide/SGuide.cjs +12 -1
- package/dist/components/SGuide/SGuide.cjs.map +1 -1
- package/dist/components/SGuide/SGuide.js +12 -1
- package/dist/components/SGuide/SGuide.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +226 -209
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +226 -209
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +640 -453
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +3 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +640 -453
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs +64 -58
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.js +64 -58
- package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
- package/dist/components/SLoadingContainer/loading.cjs +64 -58
- package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
- package/dist/components/SLoadingContainer/loading.js +64 -58
- package/dist/components/SLoadingContainer/loading.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +68 -61
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +68 -61
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SModalContainer/SModalContainer.cjs +9 -1
- package/dist/components/SModalContainer/SModalContainer.cjs.map +1 -1
- package/dist/components/SModalContainer/SModalContainer.js +9 -1
- package/dist/components/SModalContainer/SModalContainer.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +334 -50
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.d.ts +2 -0
- package/dist/components/SNumberInput/SNumberInput.js +334 -50
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SPagination/SPagination.cjs +1 -1
- package/dist/components/SPagination/SPagination.cjs.map +1 -1
- package/dist/components/SPagination/SPagination.js +1 -1
- package/dist/components/SPagination/SPagination.js.map +1 -1
- package/dist/components/SPopover/SPopover.cjs +20 -3
- package/dist/components/SPopover/SPopover.cjs.map +1 -1
- package/dist/components/SPopover/SPopover.js +20 -4
- package/dist/components/SPopover/SPopover.js.map +1 -1
- package/dist/components/SPopup/SPopup.cjs +2 -2
- package/dist/components/SPopup/SPopup.cjs.map +1 -1
- package/dist/components/SPopup/SPopup.js +2 -2
- package/dist/components/SPopup/SPopup.js.map +1 -1
- package/dist/components/SPortal/SPortal.cjs +8 -0
- package/dist/components/SPortal/SPortal.cjs.map +1 -1
- package/dist/components/SPortal/SPortal.js +8 -0
- package/dist/components/SPortal/SPortal.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +76 -32
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +76 -32
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +133 -91
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +133 -91
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextLink/STextLink.cjs +137 -3
- package/dist/components/STextLink/STextLink.cjs.map +1 -1
- package/dist/components/STextLink/STextLink.d.ts +1 -1
- package/dist/components/STextLink/STextLink.js +118 -4
- package/dist/components/STextLink/STextLink.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +226 -21
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +226 -21
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/SToast/SToast.cjs +8 -0
- package/dist/components/SToast/SToast.cjs.map +1 -1
- package/dist/components/SToast/SToast.js +8 -0
- package/dist/components/SToast/SToast.js.map +1 -1
- package/dist/components/SToast/SToastContainer.cjs +11 -3
- package/dist/components/SToast/SToastContainer.cjs.map +1 -1
- package/dist/components/SToast/SToastContainer.js +11 -3
- package/dist/components/SToast/SToastContainer.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +217 -14
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.js +217 -14
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +532 -300
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +531 -300
- package/dist/index.js.map +1 -1
- package/dist/lib/floating-anim.cjs +8 -0
- package/dist/lib/floating-anim.cjs.map +1 -1
- package/dist/lib/floating-anim.d.ts +5 -1
- package/dist/lib/floating-anim.js +8 -0
- package/dist/lib/floating-anim.js.map +1 -1
- package/dist/styles.css +175 -66
- package/dist/theme.css +49 -22
- package/package.json +1 -1
|
@@ -2927,11 +2927,11 @@ var RADIUS = 34;
|
|
|
2927
2927
|
var STROKE = 12;
|
|
2928
2928
|
var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
|
|
2929
2929
|
var COLOR_MAP = {
|
|
2930
|
-
primary: { arc: "var(--cmp-
|
|
2930
|
+
primary: { arc: "var(--cmp-progress-active-color)", track: "var(--cmp-progress-color-track)" },
|
|
2931
2931
|
// inverse: 어두운 배경용 — arc 흰색, track 은 흰색 40%(회색 링)
|
|
2932
2932
|
inverse: { arc: "var(--color-white)", track: "rgba(255,255,255,0.4)" },
|
|
2933
|
-
error: { arc: "var(--color-red-75)", track: "var(--cmp-
|
|
2934
|
-
complete: { arc: "#01BB4B", track: "var(--cmp-
|
|
2933
|
+
error: { arc: "var(--color-red-75)", track: "var(--cmp-progress-color-track)" },
|
|
2934
|
+
complete: { arc: "#01BB4B", track: "var(--cmp-progress-color-track)" }
|
|
2935
2935
|
};
|
|
2936
2936
|
var clamp = (v) => Number.isFinite(v) ? Math.max(0, Math.min(100, v)) : 0;
|
|
2937
2937
|
var SCircleProgress = forwardRef(
|
|
@@ -2945,65 +2945,63 @@ var SCircleProgress = forwardRef(
|
|
|
2945
2945
|
"div",
|
|
2946
2946
|
{
|
|
2947
2947
|
ref,
|
|
2948
|
-
className: cn(
|
|
2948
|
+
className: cn(
|
|
2949
|
+
"inline-flex flex-col items-center gap-[var(--cmp-progress-circular-gap)]",
|
|
2950
|
+
className
|
|
2951
|
+
),
|
|
2949
2952
|
style,
|
|
2950
2953
|
children: [
|
|
2951
|
-
/* @__PURE__ */ jsxs(
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
{
|
|
2955
|
-
|
|
2956
|
-
|
|
2957
|
-
|
|
2958
|
-
|
|
2959
|
-
|
|
2954
|
+
/* @__PURE__ */ jsxs(
|
|
2955
|
+
"svg",
|
|
2956
|
+
{
|
|
2957
|
+
viewBox: `0 0 ${VIEWBOX} ${VIEWBOX}`,
|
|
2958
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
2959
|
+
className: cn("h-[80px] w-[80px]", indeterminate && "origin-center animate-circle-spin"),
|
|
2960
|
+
children: [
|
|
2961
|
+
/* @__PURE__ */ jsx(
|
|
2962
|
+
"circle",
|
|
2963
|
+
{
|
|
2964
|
+
cx: c,
|
|
2965
|
+
cy: c,
|
|
2966
|
+
r: RADIUS,
|
|
2967
|
+
fill: "none",
|
|
2968
|
+
strokeWidth: STROKE,
|
|
2969
|
+
style: { stroke: colors.track }
|
|
2970
|
+
}
|
|
2960
2971
|
),
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2973
|
-
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
cy: c,
|
|
2978
|
-
r: RADIUS,
|
|
2979
|
-
fill: "none",
|
|
2980
|
-
strokeWidth: STROKE,
|
|
2981
|
-
strokeLinecap: "round",
|
|
2982
|
-
className: cn(
|
|
2983
|
-
"origin-center",
|
|
2984
|
-
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
2985
|
-
),
|
|
2986
|
-
style: {
|
|
2987
|
-
stroke: colors.arc,
|
|
2988
|
-
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
2989
|
-
}
|
|
2972
|
+
/* @__PURE__ */ jsx(
|
|
2973
|
+
"circle",
|
|
2974
|
+
{
|
|
2975
|
+
cx: c,
|
|
2976
|
+
cy: c,
|
|
2977
|
+
r: RADIUS,
|
|
2978
|
+
fill: "none",
|
|
2979
|
+
strokeWidth: STROKE,
|
|
2980
|
+
strokeLinecap: "round",
|
|
2981
|
+
className: cn(
|
|
2982
|
+
"origin-center",
|
|
2983
|
+
indeterminate ? "animate-circle-arc" : "-rotate-90 transition-[stroke-dasharray] duration-[400ms] ease-linear"
|
|
2984
|
+
),
|
|
2985
|
+
style: {
|
|
2986
|
+
stroke: colors.arc,
|
|
2987
|
+
...indeterminate ? {} : { strokeDasharray: `${filled} ${CIRCUMFERENCE}`, strokeDashoffset: 0 }
|
|
2990
2988
|
}
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
2989
|
+
}
|
|
2990
|
+
)
|
|
2991
|
+
]
|
|
2992
|
+
}
|
|
2993
|
+
),
|
|
2994
|
+
!indeterminate && /* @__PURE__ */ jsxs(
|
|
2995
|
+
"span",
|
|
2996
|
+
{
|
|
2997
|
+
className: "text-center text-[16px] font-bold leading-[26px]",
|
|
2998
|
+
style: { color: percentColor },
|
|
2999
|
+
children: [
|
|
3000
|
+
Math.round(v),
|
|
3001
|
+
"%"
|
|
3002
|
+
]
|
|
3003
|
+
}
|
|
3004
|
+
),
|
|
3007
3005
|
label && /* @__PURE__ */ jsx("span", { className: "text-center text-[12px] font-normal leading-[20px] text-[color:var(--cmp-progress-color-label)]", children: label })
|
|
3008
3006
|
]
|
|
3009
3007
|
}
|
|
@@ -3066,7 +3064,7 @@ function SPagination({
|
|
|
3066
3064
|
style,
|
|
3067
3065
|
children: [
|
|
3068
3066
|
/* @__PURE__ */ 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 }),
|
|
3069
|
-
simple ? /* @__PURE__ */ jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-
|
|
3067
|
+
simple ? /* @__PURE__ */ jsxs("div", { className: "flex h-[var(--cmp-pagination-height)] items-center gap-[var(--cmp-pagination-simple-gap)] px-[var(--cmp-pagination-paddingX)] text-[12px] font-medium leading-[20px] text-[color:var(--cmp-pagination-item-content-default)]", children: [
|
|
3070
3068
|
/* @__PURE__ */ jsx("span", { className: "font-bold text-[color:var(--cmp-pagination-item-content-selected)]", children: currentPage }),
|
|
3071
3069
|
/* @__PURE__ */ jsx("span", { children: "/" }),
|
|
3072
3070
|
/* @__PURE__ */ jsx("span", { children: lastPage })
|
|
@@ -3102,12 +3100,20 @@ function usePortalContainer() {
|
|
|
3102
3100
|
// src/lib/floating-anim.ts
|
|
3103
3101
|
var FLOATING_SLIDE_ANIM = [
|
|
3104
3102
|
"data-[state=open]:data-[side=top]:animate-floating-in-top",
|
|
3103
|
+
"data-[state=delayed-open]:data-[side=top]:animate-floating-in-top",
|
|
3104
|
+
"data-[state=instant-open]:data-[side=top]:animate-floating-in-top",
|
|
3105
3105
|
"data-[state=closed]:data-[side=top]:animate-floating-out-top",
|
|
3106
3106
|
"data-[state=open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3107
|
+
"data-[state=delayed-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3108
|
+
"data-[state=instant-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3107
3109
|
"data-[state=closed]:data-[side=bottom]:animate-floating-out-bottom",
|
|
3108
3110
|
"data-[state=open]:data-[side=left]:animate-floating-in-left",
|
|
3111
|
+
"data-[state=delayed-open]:data-[side=left]:animate-floating-in-left",
|
|
3112
|
+
"data-[state=instant-open]:data-[side=left]:animate-floating-in-left",
|
|
3109
3113
|
"data-[state=closed]:data-[side=left]:animate-floating-out-left",
|
|
3110
3114
|
"data-[state=open]:data-[side=right]:animate-floating-in-right",
|
|
3115
|
+
"data-[state=delayed-open]:data-[side=right]:animate-floating-in-right",
|
|
3116
|
+
"data-[state=instant-open]:data-[side=right]:animate-floating-in-right",
|
|
3111
3117
|
"data-[state=closed]:data-[side=right]:animate-floating-out-right"
|
|
3112
3118
|
].join(" ");
|
|
3113
3119
|
|
|
@@ -3302,7 +3308,8 @@ var HIDE_DELAY_MS = 100;
|
|
|
3302
3308
|
function useBody(content, message = []) {
|
|
3303
3309
|
if (content != null) return content;
|
|
3304
3310
|
if (message.length === 0) return null;
|
|
3305
|
-
|
|
3311
|
+
const singleLine = message.length === 1;
|
|
3312
|
+
return /* @__PURE__ */ jsx(Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsx("div", { className: singleLine ? "leading-[24px]" : void 0, children: line }, i)) });
|
|
3306
3313
|
}
|
|
3307
3314
|
var STooltip = forwardRef(function STooltip2({
|
|
3308
3315
|
content,
|
|
@@ -3360,7 +3367,7 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
3360
3367
|
if (disabled || body == null) return /* @__PURE__ */ jsx(Fragment, { children: triggerNode });
|
|
3361
3368
|
const isHover = trigger === "hover";
|
|
3362
3369
|
const contentClass = cn(
|
|
3363
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3370
|
+
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]",
|
|
3364
3371
|
FLOATING_SLIDE_ANIM,
|
|
3365
3372
|
className
|
|
3366
3373
|
);
|
|
@@ -3405,11 +3412,17 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
3405
3412
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[12px]", children: [
|
|
3406
3413
|
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: body }),
|
|
3407
3414
|
useClose && /* @__PURE__ */ jsx(
|
|
3408
|
-
|
|
3415
|
+
SGhostButton,
|
|
3409
3416
|
{
|
|
3410
|
-
|
|
3411
|
-
|
|
3412
|
-
|
|
3417
|
+
icon: "close",
|
|
3418
|
+
size: "xs",
|
|
3419
|
+
intent: tooltipType === "default" ? "inverse" : "default",
|
|
3420
|
+
ariaLabel: "\uB2EB\uAE30",
|
|
3421
|
+
className: "shrink-0",
|
|
3422
|
+
onClick: () => {
|
|
3423
|
+
cancelHide();
|
|
3424
|
+
setOpen(false);
|
|
3425
|
+
}
|
|
3413
3426
|
}
|
|
3414
3427
|
)
|
|
3415
3428
|
] }),
|
|
@@ -3447,8 +3460,8 @@ function useFormField(field) {
|
|
|
3447
3460
|
}, [ctx, name]);
|
|
3448
3461
|
}
|
|
3449
3462
|
var FIELD_SIZE = {
|
|
3450
|
-
sm: { height: 28, radius: 4, fieldGap: 12, labelGap: 6, fontSize: 12, lineHeight: 20, icon:
|
|
3451
|
-
md: { height: 36, radius: 6, fieldGap: 16, labelGap: 8, fontSize: 14, lineHeight: 24, icon:
|
|
3463
|
+
sm: { height: 28, radius: 4, fieldGap: 12, labelGap: 6, fontSize: 12, lineHeight: 20, icon: 16 },
|
|
3464
|
+
md: { height: 36, radius: 6, fieldGap: 16, labelGap: 8, fontSize: 14, lineHeight: 24, icon: 16 }
|
|
3452
3465
|
};
|
|
3453
3466
|
var ALIGN = {
|
|
3454
3467
|
start: "flex-start",
|
|
@@ -3463,6 +3476,7 @@ var SField = forwardRef(function SField2({
|
|
|
3463
3476
|
labelTooltip = "",
|
|
3464
3477
|
labelTooltipProps,
|
|
3465
3478
|
labelWidth,
|
|
3479
|
+
labelHeight,
|
|
3466
3480
|
size = "sm",
|
|
3467
3481
|
addonLabel = "",
|
|
3468
3482
|
addonAlign = "start",
|
|
@@ -3477,6 +3491,7 @@ var SField = forwardRef(function SField2({
|
|
|
3477
3491
|
readOnly = false,
|
|
3478
3492
|
width,
|
|
3479
3493
|
multiline = false,
|
|
3494
|
+
borderless = false,
|
|
3480
3495
|
children,
|
|
3481
3496
|
className,
|
|
3482
3497
|
style,
|
|
@@ -3510,8 +3525,8 @@ var SField = forwardRef(function SField2({
|
|
|
3510
3525
|
const resolvedSuccess = status === "pass";
|
|
3511
3526
|
const showError = resolvedError && errorMessage !== "";
|
|
3512
3527
|
const interactive = !disabled && !readOnly;
|
|
3513
|
-
const borderColor = disabled ? "var(--color-grey-45)" : interactive && focused ? "var(--sys-color-field-border-focus)" : resolvedSuccess ? "var(--sys-color-field-border-success)" : resolvedError ? "var(--sys-color-field-border-danger)" : "var(--sys-color-field-border-default)";
|
|
3514
|
-
const bgColor = disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
3528
|
+
const borderColor = borderless ? "transparent" : disabled ? "var(--color-grey-45)" : interactive && focused ? "var(--sys-color-field-border-focus)" : resolvedSuccess ? "var(--sys-color-field-border-success)" : resolvedError ? "var(--sys-color-field-border-danger)" : "var(--sys-color-field-border-default)";
|
|
3529
|
+
const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
|
|
3515
3530
|
const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
|
|
3516
3531
|
return /* @__PURE__ */ jsx(
|
|
3517
3532
|
"div",
|
|
@@ -3528,7 +3543,7 @@ var SField = forwardRef(function SField2({
|
|
|
3528
3543
|
{
|
|
3529
3544
|
className: "flex shrink-0 items-center font-bold text-(--sys-color-field-text-default)",
|
|
3530
3545
|
style: {
|
|
3531
|
-
height: s.height,
|
|
3546
|
+
height: cssLen(labelHeight) ?? s.height,
|
|
3532
3547
|
marginRight: s.fieldGap,
|
|
3533
3548
|
width: cssLen(labelWidth),
|
|
3534
3549
|
fontSize: s.fontSize,
|
|
@@ -3554,14 +3569,14 @@ var SField = forwardRef(function SField2({
|
|
|
3554
3569
|
{
|
|
3555
3570
|
className: cn(
|
|
3556
3571
|
"relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
|
|
3557
|
-
interactive && "hover:border-(--sys-color-field-border-focus) hover:shadow-[0px_0px_4px_0px_#0071ff66] focus-within:border-(--sys-color-field-border-focus) focus-within:shadow-[0px_0px_4px_0px_#0071ff66]",
|
|
3572
|
+
interactive && !borderless && "hover:border-(--sys-color-field-border-focus) hover:shadow-[0px_0px_4px_0px_#0071ff66] focus-within:border-(--sys-color-field-border-focus) focus-within:shadow-[0px_0px_4px_0px_#0071ff66]",
|
|
3558
3573
|
disabled && "cursor-not-allowed"
|
|
3559
3574
|
),
|
|
3560
3575
|
style: {
|
|
3561
3576
|
// @ts-expect-error CSS 변수
|
|
3562
3577
|
"--field-bc": borderColor,
|
|
3563
3578
|
// focused/hovered prop이 명시된 경우 강조를 즉시 반영
|
|
3564
|
-
...interactive && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3579
|
+
...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
|
|
3565
3580
|
...multiline ? { minHeight: s.height } : { height: s.height },
|
|
3566
3581
|
"width": cssLen(width),
|
|
3567
3582
|
"borderRadius": s.radius,
|
|
@@ -3606,15 +3621,28 @@ function flattenOptions(options, depth = 1) {
|
|
|
3606
3621
|
const out = [];
|
|
3607
3622
|
for (const o of options) {
|
|
3608
3623
|
const hasChildren = Array.isArray(o.children) && o.children.length > 0;
|
|
3609
|
-
|
|
3610
|
-
|
|
3611
|
-
|
|
3612
|
-
|
|
3613
|
-
|
|
3614
|
-
|
|
3615
|
-
|
|
3616
|
-
|
|
3617
|
-
|
|
3624
|
+
if (hasChildren) {
|
|
3625
|
+
const childFlat = flattenOptions(o.children, depth + 1);
|
|
3626
|
+
const allChildrenDisabled = childFlat.every((c) => c.disabled);
|
|
3627
|
+
out.push({
|
|
3628
|
+
value: String(o.value),
|
|
3629
|
+
label: o.label,
|
|
3630
|
+
disabled: !!o.disabled || allChildrenDisabled,
|
|
3631
|
+
depth,
|
|
3632
|
+
isGroup: true,
|
|
3633
|
+
raw: o.value
|
|
3634
|
+
});
|
|
3635
|
+
out.push(...childFlat);
|
|
3636
|
+
} else {
|
|
3637
|
+
out.push({
|
|
3638
|
+
value: String(o.value),
|
|
3639
|
+
label: o.label,
|
|
3640
|
+
disabled: !!o.disabled,
|
|
3641
|
+
depth,
|
|
3642
|
+
isGroup: false,
|
|
3643
|
+
raw: o.value
|
|
3644
|
+
});
|
|
3645
|
+
}
|
|
3618
3646
|
}
|
|
3619
3647
|
return out;
|
|
3620
3648
|
}
|
|
@@ -3738,6 +3766,9 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3738
3766
|
);
|
|
3739
3767
|
const flat = useMemo(() => flattenOptions(options), [options]);
|
|
3740
3768
|
const selectable = useMemo(() => selectableOptions(flat), [flat]);
|
|
3769
|
+
const hasLeaf = useMemo(() => flat.some((o) => !o.isGroup), [flat]);
|
|
3770
|
+
const allOptionsDisabled = hasLeaf && selectable.length === 0;
|
|
3771
|
+
const effectiveDisabled = disabled || allOptionsDisabled;
|
|
3741
3772
|
const showSearch = useSearch && selectable.length >= SEARCH_THRESHOLD;
|
|
3742
3773
|
const labelByValue = useMemo(() => new Map(flat.map((o) => [o.value, o.label])), [flat]);
|
|
3743
3774
|
const rawByValue = useMemo(() => new Map(flat.map((o) => [o.value, o.raw])), [flat]);
|
|
@@ -3788,6 +3819,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3788
3819
|
const selectStore = /* @__PURE__ */ jsxs(
|
|
3789
3820
|
Ariakit.SelectProvider,
|
|
3790
3821
|
{
|
|
3822
|
+
animated: portalContainer == null ? 150 : false,
|
|
3791
3823
|
value: multi ? selected : selected[0] ?? "",
|
|
3792
3824
|
setValue: (v) => emit(Array.isArray(v) ? v : v === "" ? [] : [v]),
|
|
3793
3825
|
open,
|
|
@@ -3803,10 +3835,10 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3803
3835
|
Ariakit.Select,
|
|
3804
3836
|
{
|
|
3805
3837
|
ref: triggerRef,
|
|
3806
|
-
disabled,
|
|
3838
|
+
disabled: effectiveDisabled,
|
|
3807
3839
|
className: "flex h-full w-full cursor-pointer items-center justify-between gap-[8px] bg-transparent px-[12px] text-left text-[12px] leading-[20px] outline-none disabled:cursor-not-allowed",
|
|
3808
3840
|
style: {
|
|
3809
|
-
color:
|
|
3841
|
+
color: effectiveDisabled ? "var(--cmp-select-text-disabled)" : isPlaceholder ? "var(--cmp-select-icon-default)" : "var(--cmp-select-text-default)"
|
|
3810
3842
|
},
|
|
3811
3843
|
children: [
|
|
3812
3844
|
isHtmlLabel(triggerText) ? /* @__PURE__ */ jsx(
|
|
@@ -3821,7 +3853,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3821
3853
|
{
|
|
3822
3854
|
name: "chevronDown",
|
|
3823
3855
|
size: 12,
|
|
3824
|
-
color:
|
|
3856
|
+
color: effectiveDisabled ? "var(--cmp-select-icon-disabled)" : "var(--cmp-select-icon-default)",
|
|
3825
3857
|
className: cn("shrink-0 transition-transform duration-200", open && "rotate-180")
|
|
3826
3858
|
}
|
|
3827
3859
|
)
|
|
@@ -3835,7 +3867,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3835
3867
|
portalElement: portalContainer,
|
|
3836
3868
|
gutter: 4,
|
|
3837
3869
|
sameWidth: !dropdownWidth,
|
|
3838
|
-
className: "z-50 overflow-auto rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)]
|
|
3870
|
+
className: "z-50 overflow-auto rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)] data-[enter]:animate-floating-in-bottom data-[leave]:animate-floating-out-bottom",
|
|
3839
3871
|
style: {
|
|
3840
3872
|
maxHeight: dropdownHeight,
|
|
3841
3873
|
...dropdownWidth ? { width: dropdownWidth } : {},
|
|
@@ -3876,7 +3908,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3876
3908
|
),
|
|
3877
3909
|
hasItems ? /* @__PURE__ */ jsx(ItemList, { items: filtered, multi, selected, useSearch: showSearch }) : (
|
|
3878
3910
|
// 원본 sd-select-listbox__empty (표시할 항목이 없을 때)
|
|
3879
|
-
/* @__PURE__ */ jsx("div", { className: "px-[12px] py-[12px] text-
|
|
3911
|
+
/* @__PURE__ */ jsx("div", { className: "px-[12px] py-[12px] text-left text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-disabled)]", children: "\uD45C\uC2DC\uD560 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." })
|
|
3880
3912
|
)
|
|
3881
3913
|
]
|
|
3882
3914
|
}
|
|
@@ -3899,7 +3931,7 @@ var SSelect = forwardRef(function SSelect2({
|
|
|
3899
3931
|
error: error || ruleError !== "",
|
|
3900
3932
|
status: rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0,
|
|
3901
3933
|
errorMessage: ruleError !== "" ? ruleError : errorMessage,
|
|
3902
|
-
disabled,
|
|
3934
|
+
disabled: effectiveDisabled,
|
|
3903
3935
|
width,
|
|
3904
3936
|
className,
|
|
3905
3937
|
style,
|
|
@@ -3934,7 +3966,11 @@ function ItemList({
|
|
|
3934
3966
|
{
|
|
3935
3967
|
className: cn(
|
|
3936
3968
|
"select-none py-[4px] pr-[12px] text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-default)]",
|
|
3937
|
-
isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium"
|
|
3969
|
+
isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium",
|
|
3970
|
+
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
3971
|
+
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
3972
|
+
o.disabled && "text-[color:var(--cmp-listItem-content-disabled)]",
|
|
3973
|
+
o.disabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]"
|
|
3938
3974
|
),
|
|
3939
3975
|
style: { paddingLeft: padLeft },
|
|
3940
3976
|
children: o.label
|
|
@@ -3961,15 +3997,21 @@ function ItemList({
|
|
|
3961
3997
|
"span",
|
|
3962
3998
|
{
|
|
3963
3999
|
className: cn(
|
|
3964
|
-
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid
|
|
3965
|
-
|
|
4000
|
+
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
|
|
4001
|
+
o.disabled ? (
|
|
4002
|
+
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
4003
|
+
"border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4004
|
+
) : cn(
|
|
4005
|
+
"group-data-[active-item]:border-[color:var(--cmp-checkbox-checked-border-inverse)]",
|
|
4006
|
+
isSelected ? "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)] group-data-[active-item]:bg-transparent" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-transparent"
|
|
4007
|
+
)
|
|
3966
4008
|
),
|
|
3967
4009
|
children: isSelected && /* @__PURE__ */ jsx(
|
|
3968
4010
|
SIcon,
|
|
3969
4011
|
{
|
|
3970
4012
|
name: "checkboxCheck",
|
|
3971
4013
|
size: 12,
|
|
3972
|
-
color: "var(--cmp-checkbox-checked-icon-default)"
|
|
4014
|
+
color: o.disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
|
|
3973
4015
|
}
|
|
3974
4016
|
)
|
|
3975
4017
|
}
|