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
@@ -15,6 +15,12 @@ var twMerge = extendTailwindMerge({
15
15
  function cn(...inputs) {
16
16
  return twMerge(clsx(inputs));
17
17
  }
18
+
19
+ // src/lib/scrollbar.ts
20
+ var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
21
+ 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`;
22
+ 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)]";
23
+ 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]";
18
24
  var PortalContainerContext = createContext(null);
19
25
  var InsideModalContext = createContext(false);
20
26
  PortalContainerContext.Provider;
@@ -3330,6 +3336,7 @@ var SField = forwardRef(function SField2({
3330
3336
  disabled = false,
3331
3337
  readOnly = false,
3332
3338
  width,
3339
+ minWidth,
3333
3340
  multiline = false,
3334
3341
  borderless = false,
3335
3342
  children,
@@ -3365,6 +3372,7 @@ var SField = forwardRef(function SField2({
3365
3372
  const resolvedSuccess = status === "pass";
3366
3373
  const showError = resolvedError && errorMessage !== "";
3367
3374
  const interactive = !disabled && !readOnly;
3375
+ const hug = cssLen(width) !== void 0;
3368
3376
  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)";
3369
3377
  const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
3370
3378
  const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
@@ -3373,7 +3381,13 @@ var SField = forwardRef(function SField2({
3373
3381
  {
3374
3382
  ref: rootRef,
3375
3383
  "data-name": name || void 0,
3376
- className: cn("inline-flex h-fit w-full flex-col", className),
3384
+ className: cn(
3385
+ "h-fit flex-col",
3386
+ // hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
3387
+ // 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
3388
+ hug ? "flex w-fit max-w-full" : "inline-flex w-full",
3389
+ className
3390
+ ),
3377
3391
  style,
3378
3392
  onMouseEnter,
3379
3393
  onMouseLeave,
@@ -3411,54 +3425,60 @@ var SField = forwardRef(function SField2({
3411
3425
  ]
3412
3426
  }
3413
3427
  ),
3414
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3415
- /* @__PURE__ */ jsxs(
3416
- "div",
3417
- {
3418
- className: cn(
3419
- "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3420
- 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]",
3421
- disabled && "cursor-not-allowed"
3428
+ /* @__PURE__ */ jsxs(
3429
+ "div",
3430
+ {
3431
+ className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
3432
+ style: { width: cssLen(width), minWidth: cssLen(minWidth) },
3433
+ children: [
3434
+ /* @__PURE__ */ jsxs(
3435
+ "div",
3436
+ {
3437
+ className: cn(
3438
+ "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3439
+ 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]",
3440
+ disabled && "cursor-not-allowed"
3441
+ ),
3442
+ style: {
3443
+ // @ts-expect-error CSS 변수
3444
+ "--field-bc": borderColor,
3445
+ // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3446
+ ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3447
+ ...multiline ? { minHeight: s.height } : { height: s.height },
3448
+ "borderRadius": s.radius,
3449
+ "background": bgColor,
3450
+ "color": textColor
3451
+ },
3452
+ "data-focused": focused || void 0,
3453
+ "data-hovered": hovered || void 0,
3454
+ children: [
3455
+ effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3456
+ "div",
3457
+ {
3458
+ 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",
3459
+ style: {
3460
+ // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3461
+ width: cssLen(labelWidth),
3462
+ justifyContent: ALIGN[addonAlign],
3463
+ background: "var(--cmp-field-addonLabel-bg)",
3464
+ borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3465
+ borderTopLeftRadius: s.radius - 1,
3466
+ borderBottomLeftRadius: s.radius - 1
3467
+ },
3468
+ children: [
3469
+ icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3470
+ effectiveAddonLabel
3471
+ ]
3472
+ }
3473
+ ),
3474
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3475
+ ]
3476
+ }
3422
3477
  ),
3423
- style: {
3424
- // @ts-expect-error CSS 변수
3425
- "--field-bc": borderColor,
3426
- // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3427
- ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3428
- ...multiline ? { minHeight: s.height } : { height: s.height },
3429
- "width": cssLen(width),
3430
- "borderRadius": s.radius,
3431
- "background": bgColor,
3432
- "color": textColor
3433
- },
3434
- "data-focused": focused || void 0,
3435
- "data-hovered": hovered || void 0,
3436
- children: [
3437
- effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3438
- "div",
3439
- {
3440
- 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",
3441
- style: {
3442
- // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3443
- width: cssLen(labelWidth),
3444
- justifyContent: ALIGN[addonAlign],
3445
- background: "var(--cmp-field-addonLabel-bg)",
3446
- borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3447
- borderTopLeftRadius: s.radius - 1,
3448
- borderBottomLeftRadius: s.radius - 1
3449
- },
3450
- children: [
3451
- icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3452
- effectiveAddonLabel
3453
- ]
3454
- }
3455
- ),
3456
- /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3457
- ]
3458
- }
3459
- ),
3460
- 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
3461
- ] })
3478
+ 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
3479
+ ]
3480
+ }
3481
+ )
3462
3482
  ] })
3463
3483
  }
3464
3484
  );
@@ -3878,7 +3898,12 @@ var SSelect = forwardRef(function SSelect2({
3878
3898
  "div",
3879
3899
  {
3880
3900
  ref: listRef,
3881
- 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)]",
3901
+ className: cn(
3902
+ "overflow-auto",
3903
+ SCROLLBAR_CLASS,
3904
+ SCROLLBAR_TRACK_BG_CLASS,
3905
+ SCROLLBAR_TRACK_BORDER_CLASS
3906
+ ),
3882
3907
  style: { maxHeight: dropdownHeight },
3883
3908
  onMouseLeave: () => setFocusedIndex(-1),
3884
3909
  children: [