sellmate-design-system-react 0.1.9 → 0.1.10
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/SBarcodeInput/SBarcodeInput.cjs +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js +1 -1
- package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
- package/dist/components/SChipInput/SChipInput.cjs +1 -1
- package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
- package/dist/components/SChipInput/SChipInput.js +1 -1
- package/dist/components/SChipInput/SChipInput.js.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.cjs +69 -50
- package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
- package/dist/components/SCircleProgress/SCircleProgress.d.ts +2 -0
- package/dist/components/SCircleProgress/SCircleProgress.js +69 -50
- package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs +1 -1
- package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
- package/dist/components/SDatePicker/SDatePicker.js +1 -1
- package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js +1 -1
- package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
- package/dist/components/SField/SField.cjs +1 -1
- package/dist/components/SField/SField.cjs.map +1 -1
- package/dist/components/SField/SField.js +1 -1
- package/dist/components/SField/SField.js.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.cjs +36 -17
- package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
- package/dist/components/SFilePicker/SFilePicker.d.ts +1 -1
- package/dist/components/SFilePicker/SFilePicker.js +35 -17
- package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
- package/dist/components/SInput/SInput.cjs +1 -1
- package/dist/components/SInput/SInput.cjs.map +1 -1
- package/dist/components/SInput/SInput.js +1 -1
- package/dist/components/SInput/SInput.js.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs +43 -22
- package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
- package/dist/components/SKeyValueTable/SKeyValueTable.js +43 -22
- package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs +69 -50
- package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
- package/dist/components/SLoadingContainer/SLoadingContainer.js +69 -50
- package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
- package/dist/components/SLoadingContainer/loading.cjs +69 -50
- package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
- package/dist/components/SLoadingContainer/loading.js +69 -50
- package/dist/components/SLoadingContainer/loading.js.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.cjs +72 -50
- package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
- package/dist/components/SLoadingModal/SLoadingModal.d.ts +3 -1
- package/dist/components/SLoadingModal/SLoadingModal.js +72 -50
- package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs +1 -1
- package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
- package/dist/components/SNumberInput/SNumberInput.js +1 -1
- package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
- package/dist/components/SRadio/SRadioGroup.cjs +1 -1
- package/dist/components/SRadio/SRadioGroup.cjs.map +1 -1
- package/dist/components/SRadio/SRadioGroup.js +1 -1
- package/dist/components/SRadio/SRadioGroup.js.map +1 -1
- package/dist/components/SSelect/SSelect.cjs +8 -4
- package/dist/components/SSelect/SSelect.cjs.map +1 -1
- package/dist/components/SSelect/SSelect.js +8 -4
- package/dist/components/SSelect/SSelect.js.map +1 -1
- package/dist/components/STable/STable.cjs +82 -56
- package/dist/components/STable/STable.cjs.map +1 -1
- package/dist/components/STable/STable.js +82 -56
- package/dist/components/STable/STable.js.map +1 -1
- package/dist/components/STextarea/STextarea.cjs +1 -1
- package/dist/components/STextarea/STextarea.cjs.map +1 -1
- package/dist/components/STextarea/STextarea.js +1 -1
- package/dist/components/STextarea/STextarea.js.map +1 -1
- package/dist/components/STooltip/STooltip.cjs +1 -1
- package/dist/components/STooltip/STooltip.cjs.map +1 -1
- package/dist/components/STooltip/STooltip.js +1 -1
- package/dist/components/STooltip/STooltip.js.map +1 -1
- package/dist/index.cjs +120 -74
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +120 -74
- package/dist/index.js.map +1 -1
- package/dist/styles.css +62 -21
- package/dist/theme.css +45 -21
- package/package.json +1 -1
|
@@ -3152,7 +3152,7 @@ var STooltip = react.forwardRef(function STooltip2({
|
|
|
3152
3152
|
if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
|
|
3153
3153
|
const isHover = trigger === "hover";
|
|
3154
3154
|
const contentClass = cn(
|
|
3155
|
-
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]
|
|
3155
|
+
"z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
|
|
3156
3156
|
FLOATING_SLIDE_ANIM,
|
|
3157
3157
|
className
|
|
3158
3158
|
);
|
|
@@ -4495,7 +4495,7 @@ function ItemList({
|
|
|
4495
4495
|
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",
|
|
4496
4496
|
// 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
|
|
4497
4497
|
// 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
|
|
4498
|
-
o.disabled && "text-[color:var(--cmp-listItem-content-disabled)]",
|
|
4498
|
+
o.disabled && "cursor-not-allowed text-[color:var(--cmp-listItem-content-disabled)]",
|
|
4499
4499
|
o.disabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]"
|
|
4500
4500
|
),
|
|
4501
4501
|
style: { paddingLeft: padLeft },
|
|
@@ -4510,10 +4510,14 @@ function ItemList({
|
|
|
4510
4510
|
{
|
|
4511
4511
|
value: o.value,
|
|
4512
4512
|
disabled: o.disabled,
|
|
4513
|
+
accessibleWhenDisabled: true,
|
|
4513
4514
|
className: cn(
|
|
4514
4515
|
itemBase,
|
|
4515
4516
|
isSelected && !multi && "font-bold text-[color:var(--cmp-listItem-content-selected)]",
|
|
4516
|
-
|
|
4517
|
+
// Ariakit은 disabled 항목도 hover 시 active(data-active-item) 처리하므로,
|
|
4518
|
+
// 비활성 항목에는 hover 하이라이트를 적용하지 않아 회색 비활성 스타일을 유지한다.
|
|
4519
|
+
// (원본 Stencil의 `--focused...:not(--disabled)` 규칙과 동일한 의도)
|
|
4520
|
+
!o.disabled && activeClass
|
|
4517
4521
|
),
|
|
4518
4522
|
style: { paddingTop: 4, paddingBottom: 4, paddingRight: 12, paddingLeft: padLeft },
|
|
4519
4523
|
render: useSearch ? /* @__PURE__ */ jsxRuntime.jsx(Ariakit__namespace.ComboboxItem, {}) : void 0,
|
|
@@ -4526,7 +4530,7 @@ function ItemList({
|
|
|
4526
4530
|
"flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
|
|
4527
4531
|
o.disabled ? (
|
|
4528
4532
|
// 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
|
|
4529
|
-
"border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4533
|
+
"cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
|
|
4530
4534
|
) : cn(
|
|
4531
4535
|
"group-data-[active-item]:border-[color:var(--cmp-checkbox-checked-border-inverse)]",
|
|
4532
4536
|
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"
|
|
@@ -4661,7 +4665,7 @@ function SRadioGroup({
|
|
|
4661
4665
|
role: "radiogroup",
|
|
4662
4666
|
className: cn(
|
|
4663
4667
|
"inline-flex",
|
|
4664
|
-
direction === "vertical" ? "flex-col gap-[
|
|
4668
|
+
direction === "vertical" ? "flex-col gap-[var(--cmp-radio-group-gap-vertical)]" : "flex-row gap-[var(--cmp-radio-group-gap-horizontal)]",
|
|
4665
4669
|
className
|
|
4666
4670
|
),
|
|
4667
4671
|
style,
|
|
@@ -5639,7 +5643,10 @@ function SFilePicker({
|
|
|
5639
5643
|
const autoId = react.useId();
|
|
5640
5644
|
const resolvedName = name ?? autoId;
|
|
5641
5645
|
const inputRef = react.useRef(null);
|
|
5646
|
+
const contentBoxRef = react.useRef(null);
|
|
5642
5647
|
const [ruleError, setRuleError] = react.useState("");
|
|
5648
|
+
const [listOpen, setListOpen] = react.useState(false);
|
|
5649
|
+
const portalContainer = usePortalContainer();
|
|
5643
5650
|
const files = multiple ? Array.isArray(value) ? value : [] : value && !Array.isArray(value) ? value : null;
|
|
5644
5651
|
const hasFiles = multiple ? files.length > 0 : !!files;
|
|
5645
5652
|
const displayText = !hasFiles ? placeholder : multiple ? files.map((f) => f.name).join(", ") : files.name;
|
|
@@ -5693,10 +5700,12 @@ function SFilePicker({
|
|
|
5693
5700
|
e.stopPropagation();
|
|
5694
5701
|
if (disabled) return;
|
|
5695
5702
|
onValueChange?.(multiple ? [] : null);
|
|
5703
|
+
setListOpen(false);
|
|
5696
5704
|
};
|
|
5697
5705
|
const removeChip = (i) => {
|
|
5698
5706
|
const next = files.filter((_, idx) => idx !== i);
|
|
5699
5707
|
onValueChange?.(next);
|
|
5708
|
+
if (next.length === 0) setListOpen(false);
|
|
5700
5709
|
};
|
|
5701
5710
|
const open = () => {
|
|
5702
5711
|
if (!disabled) inputRef.current?.click();
|
|
@@ -5707,9 +5716,12 @@ function SFilePicker({
|
|
|
5707
5716
|
const iconSize = size === "md" ? 20 : 16;
|
|
5708
5717
|
const gapCls = size === "md" ? "gap-[var(--cmp-filepicker-md-gap)]" : "gap-[var(--cmp-filepicker-sm-gap)]";
|
|
5709
5718
|
const inlinePlaceholder = inline && !disabled && !hasFiles;
|
|
5710
|
-
const
|
|
5719
|
+
const showListbox = multiple && useMultipleListBox;
|
|
5720
|
+
const filesArr = multiple ? files : [];
|
|
5721
|
+
const contentInner = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
5711
5722
|
"div",
|
|
5712
5723
|
{
|
|
5724
|
+
ref: contentBoxRef,
|
|
5713
5725
|
className: cn("group/filepicker flex h-full w-full items-center", gapCls),
|
|
5714
5726
|
style: { padding: inline ? 0 : `0 ${padX}` },
|
|
5715
5727
|
children: [
|
|
@@ -5764,25 +5776,34 @@ function SFilePicker({
|
|
|
5764
5776
|
]
|
|
5765
5777
|
}
|
|
5766
5778
|
),
|
|
5779
|
+
showListbox && hasFiles && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5780
|
+
Ariakit__namespace.PopoverDisclosure,
|
|
5781
|
+
{
|
|
5782
|
+
render: /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "caretDown", size: "xxs", ariaLabel: "toggle file list" }),
|
|
5783
|
+
className: cn("shrink-0 transition-transform duration-150", listOpen && "rotate-180")
|
|
5784
|
+
}
|
|
5785
|
+
),
|
|
5767
5786
|
!disabled && hasFiles && /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "close", size: "xxs", ariaLabel: "clear", onClick: clear })
|
|
5768
5787
|
]
|
|
5769
5788
|
}
|
|
5770
5789
|
);
|
|
5771
|
-
const
|
|
5772
|
-
|
|
5773
|
-
|
|
5774
|
-
|
|
5775
|
-
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
|
|
5779
|
-
|
|
5780
|
-
|
|
5781
|
-
|
|
5782
|
-
|
|
5783
|
-
|
|
5784
|
-
|
|
5785
|
-
|
|
5790
|
+
const content = showListbox ? /* @__PURE__ */ jsxRuntime.jsxs(Ariakit__namespace.PopoverProvider, { open: listOpen, setOpen: setListOpen, placement: "bottom-start", children: [
|
|
5791
|
+
contentInner,
|
|
5792
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5793
|
+
Ariakit__namespace.Popover,
|
|
5794
|
+
{
|
|
5795
|
+
portal: true,
|
|
5796
|
+
portalElement: portalContainer,
|
|
5797
|
+
gutter: 4,
|
|
5798
|
+
unmountOnHide: true,
|
|
5799
|
+
getAnchorRect: () => contentBoxRef.current?.getBoundingClientRect() ?? null,
|
|
5800
|
+
style: { minWidth: contentBoxRef.current?.offsetWidth },
|
|
5801
|
+
className: "z-50 box-border flex flex-col items-stretch gap-[8px] rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] p-[8px] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]",
|
|
5802
|
+
children: filesArr.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i))
|
|
5803
|
+
}
|
|
5804
|
+
)
|
|
5805
|
+
] }) : contentInner;
|
|
5806
|
+
const chips = multiple && !useMultipleListBox && filesArr.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-[8px] flex flex-wrap gap-[8px]", children: filesArr.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i)) });
|
|
5786
5807
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style, children: [
|
|
5787
5808
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5788
5809
|
SField,
|
|
@@ -5824,7 +5845,7 @@ function SKeyValueTable({
|
|
|
5824
5845
|
if (fields.length === 0) return null;
|
|
5825
5846
|
const emit = (name, value) => onChange?.({ name, value });
|
|
5826
5847
|
const cellHeight = dense ? "var(--cmp-table-body-dense-height)" : "var(--cmp-table-keyValue-height)";
|
|
5827
|
-
const cellPadY = dense ? "var(--cmp-table-body-dense
|
|
5848
|
+
const cellPadY = dense ? "var(--cmp-table-body-paddingY-dense)" : "var(--cmp-table-keyValue-body-paddingY)";
|
|
5828
5849
|
const renderField = (f) => {
|
|
5829
5850
|
if (f.render) return f.render;
|
|
5830
5851
|
const opt = f.options ?? {};
|