sellmate-design-system-react 0.6.1 → 0.8.0

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 (92) hide show
  1. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +62 -48
  2. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  3. package/dist/components/SBarcodeInput/SBarcodeInput.js +62 -48
  4. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  5. package/dist/components/SChipInput/SChipInput.cjs +62 -48
  6. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  7. package/dist/components/SChipInput/SChipInput.js +62 -48
  8. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  9. package/dist/components/SDatePicker/SDatePicker.cjs +62 -48
  10. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  11. package/dist/components/SDatePicker/SDatePicker.js +62 -48
  12. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  13. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +62 -48
  14. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  15. package/dist/components/SDateRangePicker/SDateRangePicker.js +62 -48
  16. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  17. package/dist/components/SField/SField.cjs +62 -48
  18. package/dist/components/SField/SField.cjs.map +1 -1
  19. package/dist/components/SField/SField.d.ts +6 -1
  20. package/dist/components/SField/SField.js +62 -48
  21. package/dist/components/SField/SField.js.map +1 -1
  22. package/dist/components/SFilePicker/SFilePicker.cjs +62 -48
  23. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  24. package/dist/components/SFilePicker/SFilePicker.js +62 -48
  25. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  26. package/dist/components/SInput/SInput.cjs +62 -48
  27. package/dist/components/SInput/SInput.cjs.map +1 -1
  28. package/dist/components/SInput/SInput.js +62 -48
  29. package/dist/components/SInput/SInput.js.map +1 -1
  30. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +74 -49
  31. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  32. package/dist/components/SKeyValueTable/SKeyValueTable.js +74 -49
  33. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  34. package/dist/components/SNumberInput/SNumberInput.cjs +62 -48
  35. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  36. package/dist/components/SNumberInput/SNumberInput.js +62 -48
  37. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  38. package/dist/components/SPage/SPage.cjs +19 -2
  39. package/dist/components/SPage/SPage.cjs.map +1 -1
  40. package/dist/components/SPage/SPage.d.ts +7 -1
  41. package/dist/components/SPage/SPage.js +19 -2
  42. package/dist/components/SPage/SPage.js.map +1 -1
  43. package/dist/components/SPage/index.d.ts +1 -0
  44. package/dist/components/SPage/page.config.d.ts +8 -0
  45. package/dist/components/SPopup/SPopup.cjs +18 -1
  46. package/dist/components/SPopup/SPopup.cjs.map +1 -1
  47. package/dist/components/SPopup/SPopup.js +18 -1
  48. package/dist/components/SPopup/SPopup.js.map +1 -1
  49. package/dist/components/SScrollArea/SScrollArea.cjs +64 -0
  50. package/dist/components/SScrollArea/SScrollArea.cjs.map +1 -0
  51. package/dist/components/SScrollArea/SScrollArea.d.ts +21 -0
  52. package/dist/components/SScrollArea/SScrollArea.js +62 -0
  53. package/dist/components/SScrollArea/SScrollArea.js.map +1 -0
  54. package/dist/components/SScrollArea/index.d.ts +2 -0
  55. package/dist/components/SScrollArea/scrollArea.config.d.ts +2 -0
  56. package/dist/components/SSelect/SSelect.cjs +74 -49
  57. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  58. package/dist/components/SSelect/SSelect.js +74 -49
  59. package/dist/components/SSelect/SSelect.js.map +1 -1
  60. package/dist/components/SStepper/SStepper.cjs +7 -11
  61. package/dist/components/SStepper/SStepper.cjs.map +1 -1
  62. package/dist/components/SStepper/SStepper.js +7 -11
  63. package/dist/components/SStepper/SStepper.js.map +1 -1
  64. package/dist/components/STable/STable.cjs +83 -55
  65. package/dist/components/STable/STable.cjs.map +1 -1
  66. package/dist/components/STable/STable.d.ts +2 -0
  67. package/dist/components/STable/STable.js +83 -55
  68. package/dist/components/STable/STable.js.map +1 -1
  69. package/dist/components/STextarea/STextarea.cjs +62 -48
  70. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  71. package/dist/components/STextarea/STextarea.js +62 -48
  72. package/dist/components/STextarea/STextarea.js.map +1 -1
  73. package/dist/components/STimePicker/STimePicker.cjs +91 -54
  74. package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
  75. package/dist/components/STimePicker/STimePicker.js +91 -54
  76. package/dist/components/STimePicker/STimePicker.js.map +1 -1
  77. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +93 -54
  78. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
  79. package/dist/components/STimeRangePicker/STimeRangePicker.js +93 -54
  80. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
  81. package/dist/index.cjs +220 -81
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.js +218 -82
  85. package/dist/index.js.map +1 -1
  86. package/dist/lib/scrollbar.cjs +15 -0
  87. package/dist/lib/scrollbar.cjs.map +1 -0
  88. package/dist/lib/scrollbar.d.ts +32 -0
  89. package/dist/lib/scrollbar.js +10 -0
  90. package/dist/lib/scrollbar.js.map +1 -0
  91. package/dist/styles.css +168 -17
  92. package/package.json +1 -1
@@ -3453,6 +3453,7 @@ var SField = react.forwardRef(function SField2({
3453
3453
  disabled = false,
3454
3454
  readOnly = false,
3455
3455
  width,
3456
+ minWidth,
3456
3457
  multiline = false,
3457
3458
  borderless = false,
3458
3459
  children,
@@ -3488,6 +3489,7 @@ var SField = react.forwardRef(function SField2({
3488
3489
  const resolvedSuccess = status === "pass";
3489
3490
  const showError = resolvedError && errorMessage !== "";
3490
3491
  const interactive = !disabled && !readOnly;
3492
+ const hug = cssLen(width) !== void 0;
3491
3493
  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)";
3492
3494
  const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
3493
3495
  const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
@@ -3496,7 +3498,13 @@ var SField = react.forwardRef(function SField2({
3496
3498
  {
3497
3499
  ref: rootRef,
3498
3500
  "data-name": name || void 0,
3499
- className: cn("inline-flex h-fit w-full flex-col", className),
3501
+ className: cn(
3502
+ "h-fit flex-col",
3503
+ // hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
3504
+ // 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
3505
+ hug ? "flex w-fit max-w-full" : "inline-flex w-full",
3506
+ className
3507
+ ),
3500
3508
  style,
3501
3509
  onMouseEnter,
3502
3510
  onMouseLeave,
@@ -3534,54 +3542,60 @@ var SField = react.forwardRef(function SField2({
3534
3542
  ]
3535
3543
  }
3536
3544
  ),
3537
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3538
- /* @__PURE__ */ jsxRuntime.jsxs(
3539
- "div",
3540
- {
3541
- className: cn(
3542
- "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3543
- 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]",
3544
- disabled && "cursor-not-allowed"
3545
+ /* @__PURE__ */ jsxRuntime.jsxs(
3546
+ "div",
3547
+ {
3548
+ className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
3549
+ style: { width: cssLen(width), minWidth: cssLen(minWidth) },
3550
+ children: [
3551
+ /* @__PURE__ */ jsxRuntime.jsxs(
3552
+ "div",
3553
+ {
3554
+ className: cn(
3555
+ "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3556
+ 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]",
3557
+ disabled && "cursor-not-allowed"
3558
+ ),
3559
+ style: {
3560
+ // @ts-expect-error CSS 변수
3561
+ "--field-bc": borderColor,
3562
+ // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3563
+ ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3564
+ ...multiline ? { minHeight: s.height } : { height: s.height },
3565
+ "borderRadius": s.radius,
3566
+ "background": bgColor,
3567
+ "color": textColor
3568
+ },
3569
+ "data-focused": focused || void 0,
3570
+ "data-hovered": hovered || void 0,
3571
+ children: [
3572
+ effectiveAddonLabel !== "" && /* @__PURE__ */ jsxRuntime.jsxs(
3573
+ "div",
3574
+ {
3575
+ className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r border-solid px-(--cmp-field-addonLabel-paddingX) text-12 font-medium leading-20",
3576
+ style: {
3577
+ // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3578
+ width: cssLen(labelWidth),
3579
+ justifyContent: ALIGN[addonAlign],
3580
+ background: "var(--cmp-field-addonLabel-bg)",
3581
+ borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3582
+ borderTopLeftRadius: s.radius - 1,
3583
+ borderBottomLeftRadius: s.radius - 1
3584
+ },
3585
+ children: [
3586
+ icon && !label && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3587
+ effectiveAddonLabel
3588
+ ]
3589
+ }
3590
+ ),
3591
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1", children })
3592
+ ]
3593
+ }
3545
3594
  ),
3546
- style: {
3547
- // @ts-expect-error CSS 변수
3548
- "--field-bc": borderColor,
3549
- // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3550
- ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3551
- ...multiline ? { minHeight: s.height } : { height: s.height },
3552
- "width": cssLen(width),
3553
- "borderRadius": s.radius,
3554
- "background": bgColor,
3555
- "color": textColor
3556
- },
3557
- "data-focused": focused || void 0,
3558
- "data-hovered": hovered || void 0,
3559
- children: [
3560
- effectiveAddonLabel !== "" && /* @__PURE__ */ jsxRuntime.jsxs(
3561
- "div",
3562
- {
3563
- className: "flex shrink-0 items-center gap-(--cmp-field-addonLabel-gap) whitespace-nowrap border-r border-solid px-(--cmp-field-addonLabel-paddingX) text-12 font-medium leading-20",
3564
- style: {
3565
- // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3566
- width: cssLen(labelWidth),
3567
- justifyContent: ALIGN[addonAlign],
3568
- background: "var(--cmp-field-addonLabel-bg)",
3569
- borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3570
- borderTopLeftRadius: s.radius - 1,
3571
- borderBottomLeftRadius: s.radius - 1
3572
- },
3573
- children: [
3574
- icon && !label && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3575
- effectiveAddonLabel
3576
- ]
3577
- }
3578
- ),
3579
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1", children })
3580
- ]
3581
- }
3582
- ),
3583
- showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
3584
- ] })
3595
+ showError ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
3596
+ ]
3597
+ }
3598
+ )
3585
3599
  ] })
3586
3600
  }
3587
3601
  );
@@ -4168,6 +4182,12 @@ var SNumberInput = react.forwardRef(function SNumberInput2({
4168
4182
  );
4169
4183
  });
4170
4184
 
4185
+ // src/lib/scrollbar.ts
4186
+ var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
4187
+ var SCROLLBAR_CLASS = `${FIREFOX_SCROLLBAR_CLASS} [&::-webkit-scrollbar]:h-[12px] [&::-webkit-scrollbar]:w-[12px] [&::-webkit-scrollbar]:bg-transparent [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:border-2 [&::-webkit-scrollbar-thumb]:border-solid [&::-webkit-scrollbar-thumb]:border-transparent [&::-webkit-scrollbar-thumb]:bg-[var(--color-grey-45)] [&::-webkit-scrollbar-thumb]:bg-clip-padding`;
4188
+ var SCROLLBAR_TRACK_BG_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_var(--color-grey-10)] [&::-webkit-scrollbar]:bg-[var(--color-grey-10)] [&::-webkit-scrollbar-track]:bg-[var(--color-grey-10)]";
4189
+ var SCROLLBAR_TRACK_BORDER_CLASS = "[&::-webkit-scrollbar-track:vertical]:[border-left:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-track:horizontal]:[border-top:1px_solid_var(--sys-color-border-default)] [&::-webkit-scrollbar-thumb:vertical]:[border-left-width:3px] [&::-webkit-scrollbar-thumb:horizontal]:[border-top-width:3px]";
4190
+
4171
4191
  // src/lib/sanitize-inline-html.ts
4172
4192
  var ALLOWED_INLINE_TAGS = /* @__PURE__ */ new Set(["A", "B", "STRONG", "I", "EM", "BR", "SPAN"]);
4173
4193
  var ALLOWED_ATTRS_BY_TAG = {
@@ -4651,7 +4671,12 @@ var SSelect = react.forwardRef(function SSelect2({
4651
4671
  "div",
4652
4672
  {
4653
4673
  ref: listRef,
4654
- className: "overflow-auto [scrollbar-width:auto] [&::-webkit-scrollbar]:w-[8px] [&::-webkit-scrollbar]:bg-[var(--color-grey-25)] [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-thumb]:rounded-[4px] [&::-webkit-scrollbar-thumb]:bg-[var(--color-grey-45)] [&::-webkit-scrollbar-track]:bg-[var(--color-grey-25)]",
4674
+ className: cn(
4675
+ "overflow-auto",
4676
+ SCROLLBAR_CLASS,
4677
+ SCROLLBAR_TRACK_BG_CLASS,
4678
+ SCROLLBAR_TRACK_BORDER_CLASS
4679
+ ),
4655
4680
  style: { maxHeight: dropdownHeight },
4656
4681
  onMouseLeave: () => setFocusedIndex(-1),
4657
4682
  children: [