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
@@ -3429,6 +3429,7 @@ var SField = forwardRef(function SField2({
3429
3429
  disabled = false,
3430
3430
  readOnly = false,
3431
3431
  width,
3432
+ minWidth,
3432
3433
  multiline = false,
3433
3434
  borderless = false,
3434
3435
  children,
@@ -3464,6 +3465,7 @@ var SField = forwardRef(function SField2({
3464
3465
  const resolvedSuccess = status === "pass";
3465
3466
  const showError = resolvedError && errorMessage !== "";
3466
3467
  const interactive = !disabled && !readOnly;
3468
+ const hug = cssLen(width) !== void 0;
3467
3469
  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)";
3468
3470
  const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
3469
3471
  const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
@@ -3472,7 +3474,13 @@ var SField = forwardRef(function SField2({
3472
3474
  {
3473
3475
  ref: rootRef,
3474
3476
  "data-name": name || void 0,
3475
- className: cn("inline-flex h-fit w-full flex-col", className),
3477
+ className: cn(
3478
+ "h-fit flex-col",
3479
+ // hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
3480
+ // 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
3481
+ hug ? "flex w-fit max-w-full" : "inline-flex w-full",
3482
+ className
3483
+ ),
3476
3484
  style,
3477
3485
  onMouseEnter,
3478
3486
  onMouseLeave,
@@ -3510,54 +3518,60 @@ var SField = forwardRef(function SField2({
3510
3518
  ]
3511
3519
  }
3512
3520
  ),
3513
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3514
- /* @__PURE__ */ jsxs(
3515
- "div",
3516
- {
3517
- className: cn(
3518
- "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3519
- 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]",
3520
- disabled && "cursor-not-allowed"
3521
+ /* @__PURE__ */ jsxs(
3522
+ "div",
3523
+ {
3524
+ className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
3525
+ style: { width: cssLen(width), minWidth: cssLen(minWidth) },
3526
+ children: [
3527
+ /* @__PURE__ */ jsxs(
3528
+ "div",
3529
+ {
3530
+ className: cn(
3531
+ "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3532
+ 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]",
3533
+ disabled && "cursor-not-allowed"
3534
+ ),
3535
+ style: {
3536
+ // @ts-expect-error CSS 변수
3537
+ "--field-bc": borderColor,
3538
+ // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3539
+ ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3540
+ ...multiline ? { minHeight: s.height } : { height: s.height },
3541
+ "borderRadius": s.radius,
3542
+ "background": bgColor,
3543
+ "color": textColor
3544
+ },
3545
+ "data-focused": focused || void 0,
3546
+ "data-hovered": hovered || void 0,
3547
+ children: [
3548
+ effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3549
+ "div",
3550
+ {
3551
+ 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",
3552
+ style: {
3553
+ // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3554
+ width: cssLen(labelWidth),
3555
+ justifyContent: ALIGN[addonAlign],
3556
+ background: "var(--cmp-field-addonLabel-bg)",
3557
+ borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3558
+ borderTopLeftRadius: s.radius - 1,
3559
+ borderBottomLeftRadius: s.radius - 1
3560
+ },
3561
+ children: [
3562
+ icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3563
+ effectiveAddonLabel
3564
+ ]
3565
+ }
3566
+ ),
3567
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3568
+ ]
3569
+ }
3521
3570
  ),
3522
- style: {
3523
- // @ts-expect-error CSS 변수
3524
- "--field-bc": borderColor,
3525
- // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3526
- ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3527
- ...multiline ? { minHeight: s.height } : { height: s.height },
3528
- "width": cssLen(width),
3529
- "borderRadius": s.radius,
3530
- "background": bgColor,
3531
- "color": textColor
3532
- },
3533
- "data-focused": focused || void 0,
3534
- "data-hovered": hovered || void 0,
3535
- children: [
3536
- effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3537
- "div",
3538
- {
3539
- 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",
3540
- style: {
3541
- // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3542
- width: cssLen(labelWidth),
3543
- justifyContent: ALIGN[addonAlign],
3544
- background: "var(--cmp-field-addonLabel-bg)",
3545
- borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3546
- borderTopLeftRadius: s.radius - 1,
3547
- borderBottomLeftRadius: s.radius - 1
3548
- },
3549
- children: [
3550
- icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3551
- effectiveAddonLabel
3552
- ]
3553
- }
3554
- ),
3555
- /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3556
- ]
3557
- }
3558
- ),
3559
- showError ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
3560
- ] })
3571
+ showError ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-errorMessage-color)", children: errorMessage }) : hint !== "" ? /* @__PURE__ */ jsx("div", { className: "mt-(--cmp-field-contents-gap) text-12 font-normal leading-20 text-(--cmp-field-hint-color)", children: hint }) : null
3572
+ ]
3573
+ }
3574
+ )
3561
3575
  ] })
3562
3576
  }
3563
3577
  );
@@ -4144,6 +4158,12 @@ var SNumberInput = forwardRef(function SNumberInput2({
4144
4158
  );
4145
4159
  });
4146
4160
 
4161
+ // src/lib/scrollbar.ts
4162
+ var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
4163
+ 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`;
4164
+ 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)]";
4165
+ 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]";
4166
+
4147
4167
  // src/lib/sanitize-inline-html.ts
4148
4168
  var ALLOWED_INLINE_TAGS = /* @__PURE__ */ new Set(["A", "B", "STRONG", "I", "EM", "BR", "SPAN"]);
4149
4169
  var ALLOWED_ATTRS_BY_TAG = {
@@ -4627,7 +4647,12 @@ var SSelect = forwardRef(function SSelect2({
4627
4647
  "div",
4628
4648
  {
4629
4649
  ref: listRef,
4630
- 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)]",
4650
+ className: cn(
4651
+ "overflow-auto",
4652
+ SCROLLBAR_CLASS,
4653
+ SCROLLBAR_TRACK_BG_CLASS,
4654
+ SCROLLBAR_TRACK_BORDER_CLASS
4655
+ ),
4631
4656
  style: { maxHeight: dropdownHeight },
4632
4657
  onMouseLeave: () => setFocusedIndex(-1),
4633
4658
  children: [