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
@@ -56,8 +56,13 @@ export interface SFieldProps {
56
56
  disabled?: boolean;
57
57
  /** 읽기 전용 (회색 배경) */
58
58
  readOnly?: boolean;
59
- /** 컨트롤 너비 (숫자=px) */
59
+ /**
60
+ * 컨트롤 너비 (숫자=px). 지정하면 필드가 부모 폭을 다 먹지 않고 (레이블 + width) 만큼만 차지한다.
61
+ * 다른 요소와 나란히 놓으려면 부모를 flex 로 두면 된다.
62
+ */
60
63
  width?: number | string;
64
+ /** 컨트롤 최소 너비 (숫자=px). 하한선만 지정하며 필드는 계속 부모 폭을 채운다 */
65
+ minWidth?: number | string;
61
66
  /** 멀티라인(textarea) — 컨트롤 높이를 고정하지 않고 min-height만 적용 */
62
67
  multiline?: boolean;
63
68
  /**
@@ -3232,6 +3232,7 @@ var SField = forwardRef(function SField2({
3232
3232
  disabled = false,
3233
3233
  readOnly = false,
3234
3234
  width,
3235
+ minWidth,
3235
3236
  multiline = false,
3236
3237
  borderless = false,
3237
3238
  children,
@@ -3267,6 +3268,7 @@ var SField = forwardRef(function SField2({
3267
3268
  const resolvedSuccess = status === "pass";
3268
3269
  const showError = resolvedError && errorMessage !== "";
3269
3270
  const interactive = !disabled && !readOnly;
3271
+ const hug = cssLen(width) !== void 0;
3270
3272
  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)";
3271
3273
  const bgColor = borderless ? "transparent" : disabled ? "var(--color-grey-30)" : readOnly ? "var(--sys-color-field-bg-readOnly)" : "var(--sys-color-field-bg-default)";
3272
3274
  const textColor = disabled ? "var(--color-grey-65)" : readOnly ? "var(--sys-color-field-text-readOnly)" : "var(--sys-color-field-text-default)";
@@ -3275,7 +3277,13 @@ var SField = forwardRef(function SField2({
3275
3277
  {
3276
3278
  ref: rootRef,
3277
3279
  "data-name": name || void 0,
3278
- className: cn("inline-flex h-fit w-full flex-col", className),
3280
+ className: cn(
3281
+ "h-fit flex-col",
3282
+ // hug 시 inline-flex 를 유지하면 기존에 세로로 쌓여 있던 필드들이 한 줄에 붙어버리므로
3283
+ // 블록 레벨(flex)로 두어 쌓임은 그대로 유지한다. 나란히 놓으려면 부모를 flex 로.
3284
+ hug ? "flex w-fit max-w-full" : "inline-flex w-full",
3285
+ className
3286
+ ),
3279
3287
  style,
3280
3288
  onMouseEnter,
3281
3289
  onMouseLeave,
@@ -3313,54 +3321,60 @@ var SField = forwardRef(function SField2({
3313
3321
  ]
3314
3322
  }
3315
3323
  ),
3316
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3317
- /* @__PURE__ */ jsxs(
3318
- "div",
3319
- {
3320
- className: cn(
3321
- "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3322
- 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]",
3323
- disabled && "cursor-not-allowed"
3324
+ /* @__PURE__ */ jsxs(
3325
+ "div",
3326
+ {
3327
+ className: cn("flex min-w-0 flex-col", !hug && "flex-1"),
3328
+ style: { width: cssLen(width), minWidth: cssLen(minWidth) },
3329
+ children: [
3330
+ /* @__PURE__ */ jsxs(
3331
+ "div",
3332
+ {
3333
+ className: cn(
3334
+ "relative box-border flex min-w-0 items-stretch overflow-hidden border border-solid border-(--field-bc)",
3335
+ 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]",
3336
+ disabled && "cursor-not-allowed"
3337
+ ),
3338
+ style: {
3339
+ // @ts-expect-error CSS 변수
3340
+ "--field-bc": borderColor,
3341
+ // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3342
+ ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3343
+ ...multiline ? { minHeight: s.height } : { height: s.height },
3344
+ "borderRadius": s.radius,
3345
+ "background": bgColor,
3346
+ "color": textColor
3347
+ },
3348
+ "data-focused": focused || void 0,
3349
+ "data-hovered": hovered || void 0,
3350
+ children: [
3351
+ effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3352
+ "div",
3353
+ {
3354
+ 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",
3355
+ style: {
3356
+ // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3357
+ width: cssLen(labelWidth),
3358
+ justifyContent: ALIGN[addonAlign],
3359
+ background: "var(--cmp-field-addonLabel-bg)",
3360
+ borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3361
+ borderTopLeftRadius: s.radius - 1,
3362
+ borderBottomLeftRadius: s.radius - 1
3363
+ },
3364
+ children: [
3365
+ icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3366
+ effectiveAddonLabel
3367
+ ]
3368
+ }
3369
+ ),
3370
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3371
+ ]
3372
+ }
3324
3373
  ),
3325
- style: {
3326
- // @ts-expect-error CSS 변수
3327
- "--field-bc": borderColor,
3328
- // focused/hovered prop이 명시된 경우 강조를 즉시 반영
3329
- ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
3330
- ...multiline ? { minHeight: s.height } : { height: s.height },
3331
- "width": cssLen(width),
3332
- "borderRadius": s.radius,
3333
- "background": bgColor,
3334
- "color": textColor
3335
- },
3336
- "data-focused": focused || void 0,
3337
- "data-hovered": hovered || void 0,
3338
- children: [
3339
- effectiveAddonLabel !== "" && /* @__PURE__ */ jsxs(
3340
- "div",
3341
- {
3342
- 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",
3343
- style: {
3344
- // 원본 sd-field: labelWidth가 addon 폭(--sd-field-addon-width)에도 적용됨
3345
- width: cssLen(labelWidth),
3346
- justifyContent: ALIGN[addonAlign],
3347
- background: "var(--cmp-field-addonLabel-bg)",
3348
- borderRightColor: disabled ? "var(--cmp-field-addonLabel-border-disabled)" : "var(--cmp-field-addonLabel-border-default)",
3349
- borderTopLeftRadius: s.radius - 1,
3350
- borderBottomLeftRadius: s.radius - 1
3351
- },
3352
- children: [
3353
- icon && !label && /* @__PURE__ */ jsx(SIcon, { name: icon, size: s.icon, color: iconColor }),
3354
- effectiveAddonLabel
3355
- ]
3356
- }
3357
- ),
3358
- /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1", children })
3359
- ]
3360
- }
3361
- ),
3362
- 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
3363
- ] })
3374
+ 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
3375
+ ]
3376
+ }
3377
+ )
3364
3378
  ] })
3365
3379
  }
3366
3380
  );