sellmate-design-system-react 0.1.8 → 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 +1 -1
- package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
- package/dist/components/SActionModal/SActionModal.js +1 -1
- package/dist/components/SActionModal/SActionModal.js.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs +218 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +218 -209
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SCalendar/SCalendar.cjs +1 -1
- package/dist/components/SCalendar/SCalendar.cjs.map +1 -1
- package/dist/components/SCalendar/SCalendar.js +1 -1
- package/dist/components/SCalendar/SCalendar.js.map +1 -1
- package/dist/components/SChip/SChip.cjs +1 -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 +1 -1
- package/dist/components/SChip/SChip.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +235 -221
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +235 -221
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.cjs +53 -55
- package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.js +53 -55
- package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +223 -214
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +223 -214
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +298 -263
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +298 -263
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.cjs +4 -4
- package/dist/components/SDropdownButton/SDropdownButton.cjs.map +1 -1
- package/dist/components/SDropdownButton/SDropdownButton.js +4 -4
- package/dist/components/SDropdownButton/SDropdownButton.js.map +1 -1
- package/dist/components/SField/SField.cjs +218 -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 +218 -21
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +298 -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 +298 -278
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +218 -209
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +218 -209
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +610 -450
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.d.ts +3 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +610 -450
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs +61 -55
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.js +61 -55
- package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
- package/dist/components/SLoadingContainer/loading.cjs +61 -55
- package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
- package/dist/components/SLoadingContainer/loading.js +61 -55
- package/dist/components/SLoadingContainer/loading.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +56 -57
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +56 -57
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +326 -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 +326 -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/SSelect/SSelect.cjs +67 -32
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +67 -32
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +121 -88
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +121 -88
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +218 -21
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +218 -21
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/SToast/SToastContainer.cjs +3 -3
- package/dist/components/SToast/SToastContainer.cjs.map +1 -1
- package/dist/components/SToast/SToastContainer.js +3 -3
- package/dist/components/SToast/SToastContainer.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +209 -14
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.js +209 -14
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +432 -260
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +432 -260
- package/dist/index.js.map +1 -1
- package/dist/styles.css +51 -27
- package/dist/theme.css +4 -2
- package/package.json +1 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { createContext, forwardRef, useState, useRef, useImperativeHandle, useContext } from 'react';
|
|
3
|
-
import * as
|
|
3
|
+
import * as RPopover2 from '@radix-ui/react-popover';
|
|
4
4
|
import { clsx } from 'clsx';
|
|
5
5
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
6
|
-
import { jsx,
|
|
6
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
7
7
|
|
|
8
8
|
var twMerge = extendTailwindMerge({
|
|
9
9
|
extend: {
|
|
@@ -2875,11 +2875,200 @@ var SIcon = forwardRef(function SIcon2({ name, size = 24, color, rotate, label,
|
|
|
2875
2875
|
}
|
|
2876
2876
|
);
|
|
2877
2877
|
});
|
|
2878
|
+
|
|
2879
|
+
// src/components/STag/tag.config.ts
|
|
2880
|
+
var TAG_SIZE_CONFIG = {
|
|
2881
|
+
xs: {
|
|
2882
|
+
height: 20,
|
|
2883
|
+
paddingX: 8,
|
|
2884
|
+
gap: 4,
|
|
2885
|
+
radius: 6,
|
|
2886
|
+
iconSize: 12,
|
|
2887
|
+
fontSize: 11,
|
|
2888
|
+
fontWeight: 500,
|
|
2889
|
+
lineHeight: 18
|
|
2890
|
+
},
|
|
2891
|
+
sm: {
|
|
2892
|
+
height: 24,
|
|
2893
|
+
paddingX: 8,
|
|
2894
|
+
gap: 4,
|
|
2895
|
+
radius: 6,
|
|
2896
|
+
iconSize: 16,
|
|
2897
|
+
fontSize: 12,
|
|
2898
|
+
fontWeight: 700,
|
|
2899
|
+
lineHeight: 20
|
|
2900
|
+
},
|
|
2901
|
+
md: {
|
|
2902
|
+
height: 28,
|
|
2903
|
+
paddingX: 12,
|
|
2904
|
+
gap: 6,
|
|
2905
|
+
radius: 8,
|
|
2906
|
+
iconSize: 16,
|
|
2907
|
+
fontSize: 14,
|
|
2908
|
+
fontWeight: 700,
|
|
2909
|
+
lineHeight: 24
|
|
2910
|
+
}
|
|
2911
|
+
};
|
|
2912
|
+
var STag = forwardRef(function STag2({
|
|
2913
|
+
shape = "square",
|
|
2914
|
+
size = "sm",
|
|
2915
|
+
color = "grey",
|
|
2916
|
+
label = "",
|
|
2917
|
+
icon,
|
|
2918
|
+
iconLeft = true,
|
|
2919
|
+
width,
|
|
2920
|
+
className,
|
|
2921
|
+
style,
|
|
2922
|
+
...rest
|
|
2923
|
+
}, ref) {
|
|
2924
|
+
const s = TAG_SIZE_CONFIG[size];
|
|
2925
|
+
const contentColor = `var(--cmp-tag-${color}-content)`;
|
|
2926
|
+
const iconNode = icon ? /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.iconSize, color: contentColor }) : null;
|
|
2927
|
+
const resolvedWidth = typeof width === "number" ? `${width}px` : width;
|
|
2928
|
+
return /* @__PURE__ */ jsxs(
|
|
2929
|
+
"span",
|
|
2930
|
+
{
|
|
2931
|
+
ref,
|
|
2932
|
+
"aria-label": label || "tag",
|
|
2933
|
+
className: cn(
|
|
2934
|
+
"box-border inline-flex w-fit select-none items-center justify-center whitespace-nowrap",
|
|
2935
|
+
className
|
|
2936
|
+
),
|
|
2937
|
+
style: {
|
|
2938
|
+
minHeight: s.height,
|
|
2939
|
+
padding: `0 ${s.paddingX}px`,
|
|
2940
|
+
gap: s.gap,
|
|
2941
|
+
borderRadius: shape === "pill" ? 999 : s.radius,
|
|
2942
|
+
fontSize: s.fontSize,
|
|
2943
|
+
fontWeight: s.fontWeight,
|
|
2944
|
+
lineHeight: `${s.lineHeight}px`,
|
|
2945
|
+
background: `var(--cmp-tag-${color}-bg)`,
|
|
2946
|
+
color: contentColor,
|
|
2947
|
+
...resolvedWidth != null ? { width: resolvedWidth } : {},
|
|
2948
|
+
...style
|
|
2949
|
+
},
|
|
2950
|
+
...rest,
|
|
2951
|
+
children: [
|
|
2952
|
+
icon && iconLeft && iconNode,
|
|
2953
|
+
label && /* @__PURE__ */ jsx("span", { className: "inline-flex min-w-0 items-center justify-center", children: label }),
|
|
2954
|
+
icon && !iconLeft && iconNode
|
|
2955
|
+
]
|
|
2956
|
+
}
|
|
2957
|
+
);
|
|
2958
|
+
});
|
|
2959
|
+
var SIZE = {
|
|
2960
|
+
xxs: { icon: 12, radius: "sm" },
|
|
2961
|
+
xs: { icon: 16, radius: "sm" },
|
|
2962
|
+
sm: { icon: 20, radius: "sm" },
|
|
2963
|
+
md: { icon: 24, radius: "md" },
|
|
2964
|
+
lg: { icon: 32, radius: "md" }
|
|
2965
|
+
};
|
|
2966
|
+
var TOOLTIP_HIDE_DELAY_MS = 100;
|
|
2967
|
+
function SGhostButton({
|
|
2968
|
+
icon,
|
|
2969
|
+
size = "sm",
|
|
2970
|
+
intent = "default",
|
|
2971
|
+
ariaLabel = "",
|
|
2972
|
+
tooltipText,
|
|
2973
|
+
disabled = false,
|
|
2974
|
+
onClick,
|
|
2975
|
+
className,
|
|
2976
|
+
style
|
|
2977
|
+
}) {
|
|
2978
|
+
const portalContainer = usePortalContainer();
|
|
2979
|
+
const [open, setOpen] = useState(false);
|
|
2980
|
+
const hideTimer = useRef(void 0);
|
|
2981
|
+
const cancelHide = () => {
|
|
2982
|
+
if (hideTimer.current) {
|
|
2983
|
+
clearTimeout(hideTimer.current);
|
|
2984
|
+
hideTimer.current = void 0;
|
|
2985
|
+
}
|
|
2986
|
+
};
|
|
2987
|
+
const openNow = () => {
|
|
2988
|
+
cancelHide();
|
|
2989
|
+
setOpen(true);
|
|
2990
|
+
};
|
|
2991
|
+
const startHide = () => {
|
|
2992
|
+
cancelHide();
|
|
2993
|
+
hideTimer.current = setTimeout(() => setOpen(false), TOOLTIP_HIDE_DELAY_MS);
|
|
2994
|
+
};
|
|
2995
|
+
const s = SIZE[size];
|
|
2996
|
+
const contentColor = disabled ? intent === "inverse" ? "var(--cmp-ghostButton-inverse-disabled)" : "var(--cmp-ghostButton-icon-disabled)" : `var(--cmp-ghostButton-${intent}-content)`;
|
|
2997
|
+
const btn = /* @__PURE__ */ jsxs(
|
|
2998
|
+
"button",
|
|
2999
|
+
{
|
|
3000
|
+
type: "button",
|
|
3001
|
+
disabled,
|
|
3002
|
+
"aria-disabled": disabled ? "true" : void 0,
|
|
3003
|
+
"aria-label": ariaLabel.trim() || void 0,
|
|
3004
|
+
tabIndex: disabled ? -1 : void 0,
|
|
3005
|
+
onClick: (e) => {
|
|
3006
|
+
if (disabled) {
|
|
3007
|
+
e.preventDefault();
|
|
3008
|
+
return;
|
|
3009
|
+
}
|
|
3010
|
+
onClick?.(e);
|
|
3011
|
+
},
|
|
3012
|
+
className: cn(
|
|
3013
|
+
"group relative box-border inline-flex items-center justify-center border-none bg-transparent p-0 transition-shadow",
|
|
3014
|
+
disabled ? "cursor-not-allowed" : "cursor-pointer",
|
|
3015
|
+
"focus-visible:outline-none focus-visible:shadow-[0_0_0_2px_var(--cmp-ghostButton-action-hover-bg)]",
|
|
3016
|
+
className
|
|
3017
|
+
),
|
|
3018
|
+
style: {
|
|
3019
|
+
width: `var(--cmp-ghostButton-${size}-size)`,
|
|
3020
|
+
height: `var(--cmp-ghostButton-${size}-size)`,
|
|
3021
|
+
borderRadius: `var(--cmp-ghostButton-radius-${s.radius})`,
|
|
3022
|
+
...style
|
|
3023
|
+
},
|
|
3024
|
+
children: [
|
|
3025
|
+
!disabled && /* @__PURE__ */ jsx(
|
|
3026
|
+
"span",
|
|
3027
|
+
{
|
|
3028
|
+
"aria-hidden": true,
|
|
3029
|
+
className: "pointer-events-none absolute inset-0 rounded-[inherit] opacity-0 transition-opacity duration-200 group-hover:opacity-5",
|
|
3030
|
+
style: { background: `var(--cmp-ghostButton-${intent}-hover-bg)` }
|
|
3031
|
+
}
|
|
3032
|
+
),
|
|
3033
|
+
/* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: contentColor })
|
|
3034
|
+
]
|
|
3035
|
+
}
|
|
3036
|
+
);
|
|
3037
|
+
const text = (tooltipText ?? "").trim();
|
|
3038
|
+
if (text === "") return btn;
|
|
3039
|
+
return /* @__PURE__ */ jsxs(RPopover2.Root, { open, onOpenChange: setOpen, children: [
|
|
3040
|
+
/* @__PURE__ */ jsx(RPopover2.Anchor, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
3041
|
+
"span",
|
|
3042
|
+
{
|
|
3043
|
+
className: "inline-flex",
|
|
3044
|
+
onMouseEnter: openNow,
|
|
3045
|
+
onMouseLeave: startHide,
|
|
3046
|
+
onFocus: openNow,
|
|
3047
|
+
onBlur: startHide,
|
|
3048
|
+
children: btn
|
|
3049
|
+
}
|
|
3050
|
+
) }),
|
|
3051
|
+
/* @__PURE__ */ jsx(RPopover2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsx(
|
|
3052
|
+
RPopover2.Content,
|
|
3053
|
+
{
|
|
3054
|
+
side: "top",
|
|
3055
|
+
sideOffset: 4,
|
|
3056
|
+
className: cn("z-50", FLOATING_SLIDE_ANIM),
|
|
3057
|
+
"aria-hidden": true,
|
|
3058
|
+
onOpenAutoFocus: (e) => e.preventDefault(),
|
|
3059
|
+
onMouseEnter: cancelHide,
|
|
3060
|
+
onMouseLeave: startHide,
|
|
3061
|
+
children: /* @__PURE__ */ jsx(STag, { shape: "square", size: "xs", color: "grey", label: text })
|
|
3062
|
+
}
|
|
3063
|
+
) })
|
|
3064
|
+
] });
|
|
3065
|
+
}
|
|
2878
3066
|
var HIDE_DELAY_MS = 100;
|
|
2879
3067
|
function useBody(content, message = []) {
|
|
2880
3068
|
if (content != null) return content;
|
|
2881
3069
|
if (message.length === 0) return null;
|
|
2882
|
-
|
|
3070
|
+
const singleLine = message.length === 1;
|
|
3071
|
+
return /* @__PURE__ */ jsx(Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsx("div", { className: singleLine ? "leading-[24px]" : void 0, children: line }, i)) });
|
|
2883
3072
|
}
|
|
2884
3073
|
var STooltip = forwardRef(function STooltip2({
|
|
2885
3074
|
content,
|
|
@@ -2937,7 +3126,7 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
2937
3126
|
if (disabled || body == null) return /* @__PURE__ */ jsx(Fragment, { children: triggerNode });
|
|
2938
3127
|
const isHover = trigger === "hover";
|
|
2939
3128
|
const contentClass = cn(
|
|
2940
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3129
|
+
"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)]",
|
|
2941
3130
|
FLOATING_SLIDE_ANIM,
|
|
2942
3131
|
className
|
|
2943
3132
|
);
|
|
@@ -2947,10 +3136,10 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
2947
3136
|
fontWeight: tooltipType === "default" ? 500 : 700,
|
|
2948
3137
|
...style
|
|
2949
3138
|
};
|
|
2950
|
-
return /* @__PURE__ */ jsxs(
|
|
3139
|
+
return /* @__PURE__ */ jsxs(RPopover2.Root, { open, onOpenChange: setOpen, children: [
|
|
2951
3140
|
isHover ? (
|
|
2952
3141
|
// hover: Anchor(위치 기준) + 직접 mouse 핸들러 — 클릭으로 토글되지 않도록 Trigger 미사용
|
|
2953
|
-
/* @__PURE__ */ jsx(
|
|
3142
|
+
/* @__PURE__ */ jsx(RPopover2.Anchor, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
2954
3143
|
"span",
|
|
2955
3144
|
{
|
|
2956
3145
|
className: "inline-flex",
|
|
@@ -2961,9 +3150,9 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
2961
3150
|
children: triggerNode
|
|
2962
3151
|
}
|
|
2963
3152
|
) })
|
|
2964
|
-
) : /* @__PURE__ */ jsx(
|
|
2965
|
-
/* @__PURE__ */ jsx(
|
|
2966
|
-
|
|
3153
|
+
) : /* @__PURE__ */ jsx(RPopover2.Trigger, { asChild: true, children: triggerNode }),
|
|
3154
|
+
/* @__PURE__ */ jsx(RPopover2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
|
|
3155
|
+
RPopover2.Content,
|
|
2967
3156
|
{
|
|
2968
3157
|
side: placement,
|
|
2969
3158
|
sideOffset: 8,
|
|
@@ -2982,15 +3171,21 @@ var STooltip = forwardRef(function STooltip2({
|
|
|
2982
3171
|
/* @__PURE__ */ jsxs("div", { className: "flex items-start gap-[12px]", children: [
|
|
2983
3172
|
/* @__PURE__ */ jsx("div", { className: "min-w-0 flex-1", children: body }),
|
|
2984
3173
|
useClose && /* @__PURE__ */ jsx(
|
|
2985
|
-
|
|
3174
|
+
SGhostButton,
|
|
2986
3175
|
{
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
3176
|
+
icon: "close",
|
|
3177
|
+
size: "xs",
|
|
3178
|
+
intent: tooltipType === "default" ? "inverse" : "default",
|
|
3179
|
+
ariaLabel: "\uB2EB\uAE30",
|
|
3180
|
+
className: "shrink-0",
|
|
3181
|
+
onClick: () => {
|
|
3182
|
+
cancelHide();
|
|
3183
|
+
setOpen(false);
|
|
3184
|
+
}
|
|
2990
3185
|
}
|
|
2991
3186
|
)
|
|
2992
3187
|
] }),
|
|
2993
|
-
/* @__PURE__ */ jsx(
|
|
3188
|
+
/* @__PURE__ */ jsx(RPopover2.Arrow, { width: 16, height: 12, style: { fill: bg } })
|
|
2994
3189
|
]
|
|
2995
3190
|
}
|
|
2996
3191
|
) })
|