sellmate-design-system-react 0.12.0 → 1.0.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 (93) hide show
  1. package/dist/components/SActionModal/SActionModal.cjs +3 -3
  2. package/dist/components/SActionModal/SActionModal.cjs.map +1 -1
  3. package/dist/components/SActionModal/SActionModal.js +3 -3
  4. package/dist/components/SActionModal/SActionModal.js.map +1 -1
  5. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +1 -1
  6. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  7. package/dist/components/SBarcodeInput/SBarcodeInput.js +1 -1
  8. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  9. package/dist/components/SChipInput/SChipInput.cjs +1 -1
  10. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  11. package/dist/components/SChipInput/SChipInput.js +1 -1
  12. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  13. package/dist/components/SConfirmModal/SConfirmModal.cjs +4 -4
  14. package/dist/components/SConfirmModal/SConfirmModal.cjs.map +1 -1
  15. package/dist/components/SConfirmModal/SConfirmModal.js +4 -4
  16. package/dist/components/SConfirmModal/SConfirmModal.js.map +1 -1
  17. package/dist/components/SDatePicker/SDatePicker.cjs +1 -1
  18. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  19. package/dist/components/SDatePicker/SDatePicker.js +1 -1
  20. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  21. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +1 -1
  22. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  23. package/dist/components/SDateRangePicker/SDateRangePicker.js +1 -1
  24. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  25. package/dist/components/SExpansionItem/SExpansionItem.cjs +42 -12
  26. package/dist/components/SExpansionItem/SExpansionItem.cjs.map +1 -1
  27. package/dist/components/SExpansionItem/SExpansionItem.d.ts +2 -0
  28. package/dist/components/SExpansionItem/SExpansionItem.js +43 -13
  29. package/dist/components/SExpansionItem/SExpansionItem.js.map +1 -1
  30. package/dist/components/SField/SField.cjs +1 -1
  31. package/dist/components/SField/SField.cjs.map +1 -1
  32. package/dist/components/SField/SField.js +1 -1
  33. package/dist/components/SField/SField.js.map +1 -1
  34. package/dist/components/SFilePicker/SFilePicker.cjs +1 -1
  35. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  36. package/dist/components/SFilePicker/SFilePicker.js +1 -1
  37. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  38. package/dist/components/SInput/SInput.cjs +1 -1
  39. package/dist/components/SInput/SInput.cjs.map +1 -1
  40. package/dist/components/SInput/SInput.js +1 -1
  41. package/dist/components/SInput/SInput.js.map +1 -1
  42. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +1 -1
  43. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  44. package/dist/components/SKeyValueTable/SKeyValueTable.js +1 -1
  45. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  46. package/dist/components/SLoadingModal/SLoadingModal.cjs +3 -3
  47. package/dist/components/SLoadingModal/SLoadingModal.cjs.map +1 -1
  48. package/dist/components/SLoadingModal/SLoadingModal.js +3 -3
  49. package/dist/components/SLoadingModal/SLoadingModal.js.map +1 -1
  50. package/dist/components/SModal/SModal.cjs +31 -37
  51. package/dist/components/SModal/SModal.cjs.map +1 -1
  52. package/dist/components/SModal/SModal.d.ts +38 -19
  53. package/dist/components/SModal/SModal.js +31 -37
  54. package/dist/components/SModal/SModal.js.map +1 -1
  55. package/dist/components/SModalContainer/SModalContainer.cjs +1 -1
  56. package/dist/components/SModalContainer/SModalContainer.cjs.map +1 -1
  57. package/dist/components/SModalContainer/SModalContainer.js +1 -1
  58. package/dist/components/SModalContainer/SModalContainer.js.map +1 -1
  59. package/dist/components/SNumberInput/SNumberInput.cjs +1 -1
  60. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  61. package/dist/components/SNumberInput/SNumberInput.js +1 -1
  62. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  63. package/dist/components/SSelect/SSelect.cjs +1 -1
  64. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  65. package/dist/components/SSelect/SSelect.js +1 -1
  66. package/dist/components/SSelect/SSelect.js.map +1 -1
  67. package/dist/components/STable/STable.cjs +2 -2
  68. package/dist/components/STable/STable.cjs.map +1 -1
  69. package/dist/components/STable/STable.d.ts +2 -1
  70. package/dist/components/STable/STable.js +2 -2
  71. package/dist/components/STable/STable.js.map +1 -1
  72. package/dist/components/STextarea/STextarea.cjs +1 -1
  73. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  74. package/dist/components/STextarea/STextarea.js +1 -1
  75. package/dist/components/STextarea/STextarea.js.map +1 -1
  76. package/dist/components/STimePicker/STimePicker.cjs +1 -1
  77. package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
  78. package/dist/components/STimePicker/STimePicker.js +1 -1
  79. package/dist/components/STimePicker/STimePicker.js.map +1 -1
  80. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +1 -1
  81. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
  82. package/dist/components/STimeRangePicker/STimeRangePicker.js +1 -1
  83. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
  84. package/dist/components/STooltip/STooltip.cjs +1 -1
  85. package/dist/components/STooltip/STooltip.cjs.map +1 -1
  86. package/dist/components/STooltip/STooltip.js +1 -1
  87. package/dist/components/STooltip/STooltip.js.map +1 -1
  88. package/dist/index.cjs +77 -53
  89. package/dist/index.cjs.map +1 -1
  90. package/dist/index.js +78 -54
  91. package/dist/index.js.map +1 -1
  92. package/dist/styles.css +83 -33
  93. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -2927,6 +2927,7 @@ var SExpansionItem = react.forwardRef(
2927
2927
  leading,
2928
2928
  trailing,
2929
2929
  bodyPadding = true,
2930
+ bordered = false,
2930
2931
  expanded,
2931
2932
  defaultExpanded = false,
2932
2933
  dense = false,
@@ -2938,9 +2939,6 @@ var SExpansionItem = react.forwardRef(
2938
2939
  }, ref) {
2939
2940
  const [internalExpanded, setInternalExpanded] = react.useState(defaultExpanded);
2940
2941
  const isExpanded = expanded ?? internalExpanded;
2941
- const hasBody = react.Children.toArray(children).some(
2942
- (child) => child !== null && child !== void 0 && (typeof child !== "string" || child.trim() !== "")
2943
- );
2944
2942
  const leadingNode = typeof leading === "function" ? leading({ expanded: isExpanded, disabled }) : leading;
2945
2943
  const id = react.useId();
2946
2944
  return /* @__PURE__ */ jsxRuntime.jsxs(
@@ -2949,6 +2947,9 @@ var SExpansionItem = react.forwardRef(
2949
2947
  ref,
2950
2948
  className: cn(
2951
2949
  "group overflow-hidden bg-[var(--cmp-expansionItem-title-bg-default)]",
2950
+ // TODO: expansionItem/bordered/radius 및 border intent 토큰 생성 후 고정값을 토큰으로 교체한다.
2951
+ bordered && "rounded-[8px] border border-[#E1E1E1] hover:border-[#AAAAAA] [&:has(>button:hover)]:border-[#AAAAAA]",
2952
+ bordered && isExpanded && "!border-[#93C4FF]",
2952
2953
  className
2953
2954
  ),
2954
2955
  ...rest,
@@ -2968,23 +2969,52 @@ var SExpansionItem = react.forwardRef(
2968
2969
  },
2969
2970
  className: cn(
2970
2971
  "flex w-full items-center justify-between border-0 text-left text-[14px] font-bold leading-[24px] text-[var(--cmp-expansionItem-title-text-default)] focus-visible:outline focus-visible:outline-2 focus-visible:outline-[var(--sys-color-border-accent)] disabled:cursor-not-allowed disabled:text-[var(--sys-color-disabled-text)] cursor-pointer",
2971
- isExpanded && "border-b border-[var(--cmp-expansionItem-title-border)]",
2972
- !isExpanded && "hover:bg-[var(--cmp-expansionItem-title-bg-hover)]",
2973
- dense ? "min-h-8 py-[var(--cmp-expansionItem-title-paddingY-dense)]" : "min-h-10 py-[var(--cmp-expansionItem-title-paddingY-normal)]",
2974
- "gap-[var(--cmp-expansionItem-title-gap)]",
2975
- "pr-[var(--cmp-expansionItem-title-paddingX)]",
2976
- depth === 2 ? "pl-[calc(var(--cmp-expansionItem-title-paddingX)+32px)]" : depth === 3 ? "pl-[calc(var(--cmp-expansionItem-title-paddingX)+64px)]" : "pl-[var(--cmp-expansionItem-title-paddingX)]",
2977
- isExpanded && "bg-[var(--cmp-expansionItem-title-bg-expanded)] text-[var(--cmp-expansionItem-title-text-expanded)]"
2972
+ isExpanded && "border-b border-(--cmp-expansionItem-title-border)",
2973
+ !isExpanded && "hover:bg-(--cmp-expansionItem-title-bg-hover)",
2974
+ dense ? "min-h-8 py-(--cmp-expansionItem-title-paddingY-dense)" : "min-h-10 py-(--cmp-expansionItem-title-paddingY-normal)",
2975
+ "gap-(--cmp-expansionItem-title-gap)",
2976
+ "pr-(--cmp-expansionItem-title-paddingX)",
2977
+ depth === 2 ? "pl-[calc(var(--cmp-expansionItem-title-paddingX)+32px)]" : depth === 3 ? "pl-[calc(var(--cmp-expansionItem-title-paddingX)+64px)]" : "pl-(--cmp-expansionItem-title-paddingX)",
2978
+ isExpanded && "bg-(--cmp-expansionItem-title-bg-expanded) text-(--cmp-expansionItem-title-text-expanded)"
2978
2979
  ),
2979
2980
  children: [
2980
- !leading && hasBody && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: isExpanded ? "caretUp" : "caretDown", size: 12 }),
2981
+ !leading && /* @__PURE__ */ jsxRuntime.jsx(
2982
+ "span",
2983
+ {
2984
+ className: cn(
2985
+ "flex transition-transform duration-200 ease-out motion-reduce:transition-none",
2986
+ isExpanded && "rotate-180"
2987
+ ),
2988
+ children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "caretDown", size: 12 })
2989
+ }
2990
+ ),
2981
2991
  leadingNode,
2982
2992
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex min-w-0 flex-1 flex-col", children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: title }) }),
2983
2993
  trailing
2984
2994
  ]
2985
2995
  }
2986
2996
  ),
2987
- /* @__PURE__ */ jsxRuntime.jsx("div", { id, hidden: !isExpanded, className: "bg-[var(--cmp-expansionItem-body-bg)]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: bodyPadding ? "p-[var(--cmp-expansionItem-body-padding)]" : void 0, children }) })
2997
+ /* @__PURE__ */ jsxRuntime.jsx(
2998
+ "div",
2999
+ {
3000
+ id,
3001
+ "aria-hidden": !isExpanded,
3002
+ className: cn(
3003
+ "grid overflow-hidden bg-[var(--cmp-expansionItem-body-bg)] transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none",
3004
+ isExpanded ? "grid-rows-[1fr]" : "grid-rows-[0fr]"
3005
+ ),
3006
+ children: /* @__PURE__ */ jsxRuntime.jsx(
3007
+ "div",
3008
+ {
3009
+ className: cn(
3010
+ "min-h-0 overflow-hidden",
3011
+ bodyPadding && isExpanded && "p-(--cmp-expansionItem-body-padding)"
3012
+ ),
3013
+ children
3014
+ }
3015
+ )
3016
+ }
3017
+ )
2988
3018
  ]
2989
3019
  }
2990
3020
  );
@@ -4310,7 +4340,7 @@ var STooltip = react.forwardRef(function STooltip2({
4310
4340
  if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
4311
4341
  const isHover = trigger === "hover";
4312
4342
  const contentClass = cn(
4313
- "z-50 w-fit whitespace-nowrap rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
4343
+ "z-50 w-fit whitespace-nowrap rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px] shadow-normal-sm",
4314
4344
  FLOATING_SLIDE_ANIM,
4315
4345
  className
4316
4346
  );
@@ -4777,7 +4807,7 @@ function SModalContainer({
4777
4807
  "div",
4778
4808
  {
4779
4809
  className: cn(
4780
- "relative overflow-hidden rounded-[var(--cmp-modal-radius)] bg-[var(--cmp-modal-bg)] shadow-normal-md",
4810
+ "relative flex max-h-[calc(100dvh-48px)] flex-col overflow-hidden rounded-[var(--cmp-modal-radius)] bg-[var(--cmp-modal-bg)] shadow-normal-md",
4781
4811
  shaking && "animate-modal-shake",
4782
4812
  className
4783
4813
  ),
@@ -4869,8 +4899,8 @@ function SConfirmModal({
4869
4899
  showClose: true,
4870
4900
  onClose,
4871
4901
  className: "w-fit min-w-[520px]",
4872
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-[40px] px-[32px] py-[40px]", children: [
4873
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full flex-col items-center gap-[20px]", children: [
4902
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-auto flex-col items-center gap-[40px] px-[32px] py-[40px]", children: [
4903
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full min-h-0 flex-col items-center gap-[20px] overflow-y-auto", children: [
4874
4904
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center gap-[12px]", children: [
4875
4905
  iconName && /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: iconName, size: 32, color: TYPE_ICON_COLOR[type] }),
4876
4906
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -4892,7 +4922,7 @@ function SConfirmModal({
4892
4922
  optionNode != null && optionNode
4893
4923
  ] })
4894
4924
  ] }),
4895
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-[8px]", children: [
4925
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-shrink-0 gap-[8px]", children: [
4896
4926
  subButtonLabel && /* @__PURE__ */ jsxRuntime.jsx(
4897
4927
  SButton,
4898
4928
  {
@@ -4945,8 +4975,8 @@ function SActionModal({
4945
4975
  showClose: true,
4946
4976
  width,
4947
4977
  height,
4948
- className: "w-fit min-w-[480px] min-h-[320px]",
4949
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full min-h-[320px] flex-col", children: [
4978
+ className: "w-fit min-w-[480px] min-h-[min(320px,calc(100dvh-48px))]",
4979
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-auto flex-col", children: [
4950
4980
  /* @__PURE__ */ jsxRuntime.jsx("header", { className: "flex flex-shrink-0 items-center gap-[var(--cmp-overlay-header-gap)] py-[var(--cmp-overlay-header-paddingY)] pl-[var(--cmp-overlay-header-paddingX)] pr-[calc(var(--cmp-overlay-header-paddingX)+20px)]", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-[16px] font-bold leading-[26px] text-[color:var(--cmp-overlay-header-title-color)]", children: modalTitle }) }),
4951
4981
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-auto px-[var(--cmp-modal-action-body-paddingX)] pb-[var(--cmp-modal-action-body-paddingBottom)]", children }),
4952
4982
  button && /* @__PURE__ */ jsxRuntime.jsx(
@@ -5012,7 +5042,7 @@ function SLoadingModal({
5012
5042
  ariaTitle: lines[0] || "\uB85C\uB529 \uC911",
5013
5043
  width,
5014
5044
  height,
5015
- children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-[20px] px-[32px]", children: [
5045
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex min-h-0 flex-auto flex-col overflow-y-auto px-[32px]", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "m-auto flex flex-col items-center gap-[20px]", children: [
5016
5046
  state2 === "loading" ? progress !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { value: progress }) : /* @__PURE__ */ jsxRuntime.jsx(SCircleProgress, { indeterminate: true }) : /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: "warningOutline", size: 80, color: "var(--cmp-modal-confirm-negative-icon)" }),
5017
5047
  lines.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-col gap-[2px]", children: lines.map((m, i) => /* @__PURE__ */ jsxRuntime.jsx(
5018
5048
  "p",
@@ -5035,7 +5065,7 @@ function SLoadingModal({
5035
5065
  label: buttonLabel ?? DEFAULT_BUTTON_LABEL[state2]
5036
5066
  }
5037
5067
  )
5038
- ] })
5068
+ ] }) })
5039
5069
  }
5040
5070
  );
5041
5071
  }
@@ -5118,6 +5148,10 @@ var SModalRefImpl = class {
5118
5148
  this.root = root;
5119
5149
  this.host = host;
5120
5150
  }
5151
+ /** @internal create 의 마운트 검사용 host 조회 */
5152
+ _getHost() {
5153
+ return this.host;
5154
+ }
5121
5155
  /** @internal 닫힘 시작 표시 — 컴포넌트 버튼·백드롭·ESC 닫힘 경로가 호출(중복 트리거 방지) */
5122
5156
  _markDismissed() {
5123
5157
  this.dismissRequested = true;
@@ -5213,46 +5247,35 @@ function LoadingMount({ options, refImpl }) {
5213
5247
  }
5214
5248
  );
5215
5249
  }
5250
+ function warnIfNotModal(host, component) {
5251
+ if (typeof process !== "undefined" && process?.env?.NODE_ENV === "production") return;
5252
+ if (!host || host.childElementCount === 0) return;
5253
+ const name = component?.name || "component";
5254
+ console.warn(
5255
+ `[SModal.create] ${name} \uC774(\uAC00) \uBAA8\uB2EC\uC744 \uB744\uC6B0\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. create \uB294 \uCEE8\uD14C\uC774\uB108\uB97C \uB367\uC50C\uC6B0\uC9C0 \uC54A\uC73C\uBBC0\uB85C component \uB294 \uB8E8\uD2B8\uC5D0 SActionModal \uC744 \uB80C\uB354\uD558\uACE0, \uC8FC\uC785\uBC1B\uC740 open/onOpenChange/onClose \uB97C \uADF8\uB300\uB85C \uC804\uB2EC\uD574\uC57C \uD569\uB2C8\uB2E4. \uD655\uC778/\uCDE8\uC18C\uB294 SModal.confirm, \uB85C\uB529\uC740 SModal.loading \uC744 \uC0AC\uC6A9\uD558\uC138\uC694.`
5256
+ );
5257
+ }
5216
5258
  function CreateMount({ options, refImpl }) {
5217
- const {
5218
- component: Component,
5219
- componentProps,
5220
- persistent,
5221
- showClose,
5222
- width,
5223
- height,
5224
- className,
5225
- ariaTitle
5226
- } = options;
5259
+ const { component: Component, componentProps } = options;
5227
5260
  const [open, setOpen] = react.useState(true);
5228
5261
  react.useEffect(() => {
5229
5262
  refImpl._bindClose(() => setOpen(false));
5230
5263
  refImpl._bindUpdate(() => {
5231
5264
  });
5232
- }, [refImpl]);
5265
+ warnIfNotModal(refImpl._getHost(), Component);
5266
+ }, [refImpl, Component]);
5233
5267
  useExitTeardown(open, refImpl);
5234
5268
  const componentAllProps = {
5235
5269
  ...componentProps,
5270
+ open,
5271
+ onOpenChange: (o) => {
5272
+ if (!o) refImpl._markDismissed();
5273
+ setOpen(o);
5274
+ },
5275
+ onClose: () => refImpl._emitClose(),
5236
5276
  modalRef: refImpl
5237
5277
  };
5238
- return /* @__PURE__ */ jsxRuntime.jsx(
5239
- SModalContainer,
5240
- {
5241
- open,
5242
- onOpenChange: (o) => {
5243
- if (!o) refImpl._markDismissed();
5244
- setOpen(o);
5245
- },
5246
- persistent,
5247
- showClose,
5248
- onClose: () => refImpl.close(),
5249
- ariaTitle,
5250
- width,
5251
- height,
5252
- className,
5253
- children: /* @__PURE__ */ jsxRuntime.jsx(Component, { ...componentAllProps })
5254
- }
5255
- );
5278
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...componentAllProps });
5256
5279
  }
5257
5280
  function mount(render) {
5258
5281
  const host = document.createElement("div");
@@ -5276,8 +5299,9 @@ var SModal = {
5276
5299
  return mount((refImpl) => /* @__PURE__ */ jsxRuntime.jsx(LoadingMount, { options: { persistent: true, ...options }, refImpl }));
5277
5300
  },
5278
5301
  /**
5279
- * 커스텀 React 컴포넌트를 SModalContainer(딤+카드) 안에 띄운다. component modalRef
5280
- * prop 으로 주입되어 컴포넌트가 ok()/cancel()/close()/submit()/onSubmit() 으로 자기 모달을 제어한다.
5302
+ * SActionModal 루트로 렌더하는 컴포넌트를 띄운다. 컨테이너를 덧씌우지 않고 표시 제어
5303
+ * (open/onOpenChange/onClose) modalRef 주입하며, 닫힘 애니메이션 종료 후 자동으로
5304
+ * 언마운트한다. 컴포넌트가 모달을 띄우지 않으면 개발 모드에서 경고한다.
5281
5305
  */
5282
5306
  create(options) {
5283
5307
  return mount((refImpl) => /* @__PURE__ */ jsxRuntime.jsx(CreateMount, { options, refImpl }));
@@ -7753,7 +7777,7 @@ var STable = react.forwardRef(function STable2({
7753
7777
  rowBg,
7754
7778
  "group-hover:bg-[var(--color-grey-05)]",
7755
7779
  stickyShadowClass(i),
7756
- col.tdClass
7780
+ typeof col.tdClass === "function" ? col.tdClass(row) : col.tdClass
7757
7781
  ),
7758
7782
  style: {
7759
7783
  paddingLeft: cellPadX,