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.
Files changed (82) hide show
  1. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +1 -1
  2. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  3. package/dist/components/SBarcodeInput/SBarcodeInput.js +1 -1
  4. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  5. package/dist/components/SChipInput/SChipInput.cjs +1 -1
  6. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  7. package/dist/components/SChipInput/SChipInput.js +1 -1
  8. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  9. package/dist/components/SCircleProgress/SCircleProgress.cjs +69 -50
  10. package/dist/components/SCircleProgress/SCircleProgress.cjs.map +1 -1
  11. package/dist/components/SCircleProgress/SCircleProgress.d.ts +2 -0
  12. package/dist/components/SCircleProgress/SCircleProgress.js +69 -50
  13. package/dist/components/SCircleProgress/SCircleProgress.js.map +1 -1
  14. package/dist/components/SDatePicker/SDatePicker.cjs +1 -1
  15. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  16. package/dist/components/SDatePicker/SDatePicker.js +1 -1
  17. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  18. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +1 -1
  19. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  20. package/dist/components/SDateRangePicker/SDateRangePicker.js +1 -1
  21. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  22. package/dist/components/SField/SField.cjs +1 -1
  23. package/dist/components/SField/SField.cjs.map +1 -1
  24. package/dist/components/SField/SField.js +1 -1
  25. package/dist/components/SField/SField.js.map +1 -1
  26. package/dist/components/SFilePicker/SFilePicker.cjs +36 -17
  27. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  28. package/dist/components/SFilePicker/SFilePicker.d.ts +1 -1
  29. package/dist/components/SFilePicker/SFilePicker.js +35 -17
  30. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  31. package/dist/components/SInput/SInput.cjs +1 -1
  32. package/dist/components/SInput/SInput.cjs.map +1 -1
  33. package/dist/components/SInput/SInput.js +1 -1
  34. package/dist/components/SInput/SInput.js.map +1 -1
  35. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +43 -22
  36. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  37. package/dist/components/SKeyValueTable/SKeyValueTable.js +43 -22
  38. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  39. package/dist/components/SLoadingContainer/SLoadingContainer.cjs +69 -50
  40. package/dist/components/SLoadingContainer/SLoadingContainer.cjs.map +1 -1
  41. package/dist/components/SLoadingContainer/SLoadingContainer.js +69 -50
  42. package/dist/components/SLoadingContainer/SLoadingContainer.js.map +1 -1
  43. package/dist/components/SLoadingContainer/loading.cjs +69 -50
  44. package/dist/components/SLoadingContainer/loading.cjs.map +1 -1
  45. package/dist/components/SLoadingContainer/loading.js +69 -50
  46. package/dist/components/SLoadingContainer/loading.js.map +1 -1
  47. package/dist/components/SLoadingModal/SLoadingModal.cjs +72 -50
  48. package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
  49. package/dist/components/SLoadingModal/SLoadingModal.d.ts +3 -1
  50. package/dist/components/SLoadingModal/SLoadingModal.js +72 -50
  51. package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
  52. package/dist/components/SNumberInput/SNumberInput.cjs +1 -1
  53. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  54. package/dist/components/SNumberInput/SNumberInput.js +1 -1
  55. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  56. package/dist/components/SRadio/SRadioGroup.cjs +1 -1
  57. package/dist/components/SRadio/SRadioGroup.cjs.map +1 -1
  58. package/dist/components/SRadio/SRadioGroup.js +1 -1
  59. package/dist/components/SRadio/SRadioGroup.js.map +1 -1
  60. package/dist/components/SSelect/SSelect.cjs +8 -4
  61. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  62. package/dist/components/SSelect/SSelect.js +8 -4
  63. package/dist/components/SSelect/SSelect.js.map +1 -1
  64. package/dist/components/STable/STable.cjs +82 -56
  65. package/dist/components/STable/STable.cjs.map +1 -1
  66. package/dist/components/STable/STable.js +82 -56
  67. package/dist/components/STable/STable.js.map +1 -1
  68. package/dist/components/STextarea/STextarea.cjs +1 -1
  69. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  70. package/dist/components/STextarea/STextarea.js +1 -1
  71. package/dist/components/STextarea/STextarea.js.map +1 -1
  72. package/dist/components/STooltip/STooltip.cjs +1 -1
  73. package/dist/components/STooltip/STooltip.cjs.map +1 -1
  74. package/dist/components/STooltip/STooltip.js +1 -1
  75. package/dist/components/STooltip/STooltip.js.map +1 -1
  76. package/dist/index.cjs +120 -74
  77. package/dist/index.cjs.map +1 -1
  78. package/dist/index.js +120 -74
  79. package/dist/index.js.map +1 -1
  80. package/dist/styles.css +62 -21
  81. package/dist/theme.css +45 -21
  82. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
  'use strict';
3
3
 
4
4
  var react = require('react');
5
+ var Ariakit = require('@ariakit/react');
5
6
  var clsx = require('clsx');
6
7
  var tailwindMerge = require('tailwind-merge');
7
8
  var jsxRuntime = require('react/jsx-runtime');
@@ -25,6 +26,7 @@ function _interopNamespace(e) {
25
26
  return Object.freeze(n);
26
27
  }
27
28
 
29
+ var Ariakit__namespace = /*#__PURE__*/_interopNamespace(Ariakit);
28
30
  var RPopover2__namespace = /*#__PURE__*/_interopNamespace(RPopover2);
29
31
 
30
32
  var twMerge = tailwindMerge.extendTailwindMerge({
@@ -3148,7 +3150,7 @@ var STooltip = react.forwardRef(function STooltip2({
3148
3150
  if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
3149
3151
  const isHover = trigger === "hover";
3150
3152
  const contentClass = cn(
3151
- "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)]",
3153
+ "z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
3152
3154
  FLOATING_SLIDE_ANIM,
3153
3155
  className
3154
3156
  );
@@ -3580,7 +3582,10 @@ function SFilePicker({
3580
3582
  const autoId = react.useId();
3581
3583
  const resolvedName = name ?? autoId;
3582
3584
  const inputRef = react.useRef(null);
3585
+ const contentBoxRef = react.useRef(null);
3583
3586
  const [ruleError, setRuleError] = react.useState("");
3587
+ const [listOpen, setListOpen] = react.useState(false);
3588
+ const portalContainer = usePortalContainer();
3584
3589
  const files = multiple ? Array.isArray(value) ? value : [] : value && !Array.isArray(value) ? value : null;
3585
3590
  const hasFiles = multiple ? files.length > 0 : !!files;
3586
3591
  const displayText = !hasFiles ? placeholder : multiple ? files.map((f) => f.name).join(", ") : files.name;
@@ -3634,10 +3639,12 @@ function SFilePicker({
3634
3639
  e.stopPropagation();
3635
3640
  if (disabled) return;
3636
3641
  onValueChange?.(multiple ? [] : null);
3642
+ setListOpen(false);
3637
3643
  };
3638
3644
  const removeChip = (i) => {
3639
3645
  const next = files.filter((_, idx) => idx !== i);
3640
3646
  onValueChange?.(next);
3647
+ if (next.length === 0) setListOpen(false);
3641
3648
  };
3642
3649
  const open = () => {
3643
3650
  if (!disabled) inputRef.current?.click();
@@ -3648,9 +3655,12 @@ function SFilePicker({
3648
3655
  const iconSize = size === "md" ? 20 : 16;
3649
3656
  const gapCls = size === "md" ? "gap-[var(--cmp-filepicker-md-gap)]" : "gap-[var(--cmp-filepicker-sm-gap)]";
3650
3657
  const inlinePlaceholder = inline && !disabled && !hasFiles;
3651
- const content = /* @__PURE__ */ jsxRuntime.jsxs(
3658
+ const showListbox = multiple && useMultipleListBox;
3659
+ const filesArr = multiple ? files : [];
3660
+ const contentInner = /* @__PURE__ */ jsxRuntime.jsxs(
3652
3661
  "div",
3653
3662
  {
3663
+ ref: contentBoxRef,
3654
3664
  className: cn("group/filepicker flex h-full w-full items-center", gapCls),
3655
3665
  style: { padding: inline ? 0 : `0 ${padX}` },
3656
3666
  children: [
@@ -3705,25 +3715,34 @@ function SFilePicker({
3705
3715
  ]
3706
3716
  }
3707
3717
  ),
3718
+ showListbox && hasFiles && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
3719
+ Ariakit__namespace.PopoverDisclosure,
3720
+ {
3721
+ render: /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "caretDown", size: "xxs", ariaLabel: "toggle file list" }),
3722
+ className: cn("shrink-0 transition-transform duration-150", listOpen && "rotate-180")
3723
+ }
3724
+ ),
3708
3725
  !disabled && hasFiles && /* @__PURE__ */ jsxRuntime.jsx(SGhostButton, { icon: "close", size: "xxs", ariaLabel: "clear", onClick: clear })
3709
3726
  ]
3710
3727
  }
3711
3728
  );
3712
- const chips = multiple && files.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(
3713
- "div",
3714
- {
3715
- className: cn(
3716
- "mt-[8px] flex gap-[8px]",
3717
- useMultipleListBox ? "box-border flex-col items-start rounded-[var(--cmp-listBox-radius)] bg-[var(--cmp-listBox-bg)] p-[8px] shadow-[2px_2px_12px_2px_rgba(0,0,0,0.1)]" : "flex-wrap"
3718
- ),
3719
- style: useMultipleListBox ? {
3720
- width: typeof width === "number" ? `${width}px` : width,
3721
- // label 있으면 SField 입력 박스 시작 위치(labelWidth + fieldGap) 맞춰 정렬
3722
- marginLeft: label && labelWidth != null ? `calc(${typeof labelWidth === "number" ? `${labelWidth}px` : labelWidth} + var(--sys-space-field-${size}-gap))` : void 0
3723
- } : void 0,
3724
- children: files.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i))
3725
- }
3726
- );
3729
+ const content = showListbox ? /* @__PURE__ */ jsxRuntime.jsxs(Ariakit__namespace.PopoverProvider, { open: listOpen, setOpen: setListOpen, placement: "bottom-start", children: [
3730
+ contentInner,
3731
+ /* @__PURE__ */ jsxRuntime.jsx(
3732
+ Ariakit__namespace.Popover,
3733
+ {
3734
+ portal: true,
3735
+ portalElement: portalContainer,
3736
+ gutter: 4,
3737
+ unmountOnHide: true,
3738
+ getAnchorRect: () => contentBoxRef.current?.getBoundingClientRect() ?? null,
3739
+ style: { minWidth: contentBoxRef.current?.offsetWidth },
3740
+ 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)]",
3741
+ children: filesArr.map((f, i) => /* @__PURE__ */ jsxRuntime.jsx(SChip, { value: f.name, editable: false, onRemove: () => removeChip(i) }, i))
3742
+ }
3743
+ )
3744
+ ] }) : contentInner;
3745
+ 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)) });
3727
3746
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className, style, children: [
3728
3747
  /* @__PURE__ */ jsxRuntime.jsx(
3729
3748
  SField,