sellmate-design-system-react 0.8.2 → 0.8.4

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 (72) hide show
  1. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +78 -2
  2. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  3. package/dist/components/SBarcodeInput/SBarcodeInput.js +78 -2
  4. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  5. package/dist/components/SCheckbox/SCheckbox.cjs +1 -1
  6. package/dist/components/SCheckbox/SCheckbox.cjs.map +1 -1
  7. package/dist/components/SCheckbox/SCheckbox.js +1 -1
  8. package/dist/components/SCheckbox/SCheckbox.js.map +1 -1
  9. package/dist/components/SChipInput/SChipInput.cjs +78 -2
  10. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  11. package/dist/components/SChipInput/SChipInput.js +78 -2
  12. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  13. package/dist/components/SDatePicker/SDatePicker.cjs +78 -2
  14. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  15. package/dist/components/SDatePicker/SDatePicker.js +78 -2
  16. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  17. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +78 -2
  18. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  19. package/dist/components/SDateRangePicker/SDateRangePicker.js +78 -2
  20. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  21. package/dist/components/SField/SField.cjs +78 -2
  22. package/dist/components/SField/SField.cjs.map +1 -1
  23. package/dist/components/SField/SField.js +78 -2
  24. package/dist/components/SField/SField.js.map +1 -1
  25. package/dist/components/SFilePicker/SFilePicker.cjs +78 -2
  26. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  27. package/dist/components/SFilePicker/SFilePicker.js +78 -2
  28. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  29. package/dist/components/SInput/SInput.cjs +78 -2
  30. package/dist/components/SInput/SInput.cjs.map +1 -1
  31. package/dist/components/SInput/SInput.js +78 -2
  32. package/dist/components/SInput/SInput.js.map +1 -1
  33. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +229 -122
  34. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  35. package/dist/components/SKeyValueTable/SKeyValueTable.js +229 -122
  36. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  37. package/dist/components/SNumberInput/SNumberInput.cjs +78 -2
  38. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  39. package/dist/components/SNumberInput/SNumberInput.js +78 -2
  40. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  41. package/dist/components/SSelect/SSelect.cjs +159 -52
  42. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  43. package/dist/components/SSelect/SSelect.js +159 -52
  44. package/dist/components/SSelect/SSelect.js.map +1 -1
  45. package/dist/components/SSelect/select.config.d.ts +7 -0
  46. package/dist/components/STable/STable.cjs +160 -53
  47. package/dist/components/STable/STable.cjs.map +1 -1
  48. package/dist/components/STable/STable.js +160 -53
  49. package/dist/components/STable/STable.js.map +1 -1
  50. package/dist/components/STextarea/STextarea.cjs +78 -2
  51. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  52. package/dist/components/STextarea/STextarea.js +78 -2
  53. package/dist/components/STextarea/STextarea.js.map +1 -1
  54. package/dist/components/STimePicker/STimePicker.cjs +78 -2
  55. package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
  56. package/dist/components/STimePicker/STimePicker.js +78 -2
  57. package/dist/components/STimePicker/STimePicker.js.map +1 -1
  58. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +78 -2
  59. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
  60. package/dist/components/STimeRangePicker/STimeRangePicker.js +78 -2
  61. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
  62. package/dist/components/STooltip/STooltip.cjs +78 -2
  63. package/dist/components/STooltip/STooltip.cjs.map +1 -1
  64. package/dist/components/STooltip/STooltip.d.ts +1 -1
  65. package/dist/components/STooltip/STooltip.js +78 -2
  66. package/dist/components/STooltip/STooltip.js.map +1 -1
  67. package/dist/index.cjs +160 -53
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.js +160 -53
  70. package/dist/index.js.map +1 -1
  71. package/dist/styles.css +4 -8
  72. package/package.json +1 -1
@@ -3202,7 +3202,14 @@ function useBody(content, message = []) {
3202
3202
  if (content != null) return content;
3203
3203
  if (message.length === 0) return null;
3204
3204
  const singleLine = message.length === 1;
3205
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: singleLine ? "leading-[24px]" : void 0, children: line }, i)) });
3205
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: message.map((line, i) => /* @__PURE__ */ jsxRuntime.jsx(
3206
+ "div",
3207
+ {
3208
+ className: singleLine ? "leading-[24px]" : void 0,
3209
+ dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(line) }
3210
+ },
3211
+ i
3212
+ )) });
3206
3213
  }
3207
3214
  var STooltip = react.forwardRef(function STooltip2({
3208
3215
  content,
@@ -3260,7 +3267,7 @@ var STooltip = react.forwardRef(function STooltip2({
3260
3267
  if (disabled || body == null) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: triggerNode });
3261
3268
  const isHover = trigger === "hover";
3262
3269
  const contentClass = cn(
3263
- "z-50 max-w-xs rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
3270
+ "z-50 w-fit whitespace-nowrap rounded-[6px] px-[16px] py-[12px] text-[12px] leading-[20px]",
3264
3271
  FLOATING_SLIDE_ANIM,
3265
3272
  className
3266
3273
  );
@@ -3611,6 +3618,16 @@ function flattenOptions(options, depth = 1) {
3611
3618
  return out;
3612
3619
  }
3613
3620
  var selectableOptions = (flat) => flat.filter((o) => !o.isGroup && !o.disabled);
3621
+ function collectGroupLeafValues(flat, groupIndex) {
3622
+ const group = flat[groupIndex];
3623
+ if (group == null || !group.isGroup) return [];
3624
+ const values = [];
3625
+ for (let i = groupIndex + 1; i < flat.length; i++) {
3626
+ if (flat[i].depth <= group.depth) break;
3627
+ if (!flat[i].isGroup && !flat[i].disabled) values.push(flat[i].value);
3628
+ }
3629
+ return values;
3630
+ }
3614
3631
  var isHtmlLabel = (label) => /<[a-z][\s\S]*>/i.test(label);
3615
3632
  var extractText = (html) => html.replace(/<[^>]*>/g, "");
3616
3633
  var SEARCH_THRESHOLD = 11;
@@ -3736,16 +3753,31 @@ var SSelect = react.forwardRef(function SSelect2({
3736
3753
  const allValues = selectable.map((o) => o.value);
3737
3754
  const allSelected = allValues.length > 0 && allValues.every((v) => selected.includes(v));
3738
3755
  const hasItems = filtered.some((o) => !o.isGroup);
3756
+ const groupLeafValues = react.useMemo(() => {
3757
+ const map = /* @__PURE__ */ new Map();
3758
+ filtered.forEach((o, i) => {
3759
+ if (o.isGroup) map.set(i, collectGroupLeafValues(filtered, i));
3760
+ });
3761
+ return map;
3762
+ }, [filtered]);
3739
3763
  const navigableItems = react.useMemo(() => {
3740
3764
  const items = [];
3741
3765
  if (multi && useSelectAll && allValues.length > 0) {
3742
- items.push({ value: "__select_all__", isSelectAll: true });
3766
+ items.push({ key: "__select_all__", isSelectAll: true });
3743
3767
  }
3744
- filtered.forEach((o) => {
3745
- if (!o.isGroup && !o.disabled) items.push({ value: o.value });
3768
+ filtered.forEach((o, i) => {
3769
+ if (o.disabled) return;
3770
+ if (o.isGroup) {
3771
+ if (!multi) return;
3772
+ const leafValues = groupLeafValues.get(i) ?? [];
3773
+ if (leafValues.length === 0) return;
3774
+ items.push({ key: `__group_${i}__`, isGroup: true, leafValues });
3775
+ } else {
3776
+ items.push({ key: o.value, value: o.value });
3777
+ }
3746
3778
  });
3747
3779
  return items;
3748
- }, [allValues.length, filtered, multi, useSelectAll]);
3780
+ }, [allValues.length, filtered, groupLeafValues, multi, useSelectAll]);
3749
3781
  const triggerText = (() => {
3750
3782
  if (selected.length === 0) return placeholder;
3751
3783
  if (multi) {
@@ -3767,6 +3799,17 @@ var SSelect = react.forwardRef(function SSelect2({
3767
3799
  const handleSelectAll = () => {
3768
3800
  emit(allSelected ? [] : allValues);
3769
3801
  };
3802
+ const handleToggleGroup = (leafValues) => {
3803
+ if (leafValues.length === 0) return;
3804
+ const selectedSet = new Set(selected);
3805
+ const allSelectedInGroup = leafValues.every((v) => selectedSet.has(v));
3806
+ if (allSelectedInGroup) {
3807
+ const remove = new Set(leafValues);
3808
+ emit(selected.filter((v) => !remove.has(v)));
3809
+ } else {
3810
+ emit([...selected, ...leafValues.filter((v) => !selectedSet.has(v))]);
3811
+ }
3812
+ };
3770
3813
  react.useEffect(() => {
3771
3814
  if (!open) {
3772
3815
  setFocusedIndex(-1);
@@ -3807,6 +3850,10 @@ var SSelect = react.forwardRef(function SSelect2({
3807
3850
  handleSelectAll();
3808
3851
  return;
3809
3852
  }
3853
+ if (focused.isGroup) {
3854
+ handleToggleGroup(focused.leafValues ?? []);
3855
+ return;
3856
+ }
3810
3857
  handleSelect(focused.value);
3811
3858
  };
3812
3859
  const handleKeyDown = (event) => {
@@ -3970,20 +4017,20 @@ var SSelect = react.forwardRef(function SSelect2({
3970
4017
  items: filtered,
3971
4018
  multi,
3972
4019
  selected,
3973
- focusedValue: navigableItems[focusedIndex]?.isSelectAll ? "__select_all__" : navigableItems[focusedIndex]?.value,
4020
+ groupLeafValues,
4021
+ focusedValue: navigableItems[focusedIndex]?.key,
3974
4022
  showSelectAll: multi && useSelectAll && allValues.length > 0,
3975
4023
  selectAllLabel: allSelectedLabel,
3976
4024
  selectAllSelected: allSelected,
3977
4025
  onSelectAll: handleSelectAll,
3978
4026
  onSelect: handleSelect,
3979
- onHoverValue: (value2) => {
3980
- if (value2 == null) {
4027
+ onToggleGroup: handleToggleGroup,
4028
+ onHoverValue: (key) => {
4029
+ if (key == null) {
3981
4030
  setFocusedIndex(-1);
3982
4031
  return;
3983
4032
  }
3984
- const index = navigableItems.findIndex(
3985
- (item) => item.isSelectAll ? value2 === "__select_all__" : item.value === value2
3986
- );
4033
+ const index = navigableItems.findIndex((item) => item.key === key);
3987
4034
  if (index >= 0) setFocusedIndex(index);
3988
4035
  }
3989
4036
  }
@@ -4002,20 +4049,23 @@ function ItemList({
4002
4049
  items,
4003
4050
  multi,
4004
4051
  selected,
4052
+ groupLeafValues,
4005
4053
  focusedValue,
4006
4054
  showSelectAll,
4007
4055
  selectAllLabel,
4008
4056
  selectAllSelected,
4009
4057
  onSelectAll,
4010
4058
  onSelect,
4059
+ onToggleGroup,
4011
4060
  onHoverValue
4012
4061
  }) {
4062
+ const selectedSet = react.useMemo(() => new Set(selected), [selected]);
4013
4063
  const itemBase = cn(
4014
4064
  "group flex w-full cursor-pointer select-none items-center gap-[8px] border-none bg-transparent text-left text-[12px] leading-[20px] outline-none",
4015
4065
  "text-[color:var(--cmp-listItem-content-default)]",
4016
4066
  "disabled:cursor-not-allowed disabled:text-[color:var(--cmp-listItem-content-disabled)]"
4017
4067
  );
4018
- const activeClass = "hover:bg-[var(--cmp-listItem-bg-hover)] hover:text-[color:var(--cmp-listItem-content-hover)] focus:bg-[var(--cmp-listItem-bg-hover)] focus:text-[color:var(--cmp-listItem-content-hover)]";
4068
+ const activeClass = "hover:bg-[var(--cmp-listItem-bg-hover)] hover:text-[color:var(--cmp-listItem-content-hover)] focus-visible:bg-[var(--cmp-listItem-bg-hover)] focus-visible:text-[color:var(--cmp-listItem-content-hover)]";
4019
4069
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { role: "listbox", "aria-multiselectable": multi || void 0, children: [
4020
4070
  showSelectAll && /* @__PURE__ */ jsxRuntime.jsxs(
4021
4071
  "button",
@@ -4032,37 +4082,81 @@ function ItemList({
4032
4082
  onMouseLeave: () => onHoverValue(null),
4033
4083
  onClick: onSelectAll,
4034
4084
  children: [
4035
- /* @__PURE__ */ jsxRuntime.jsx(
4036
- "span",
4037
- {
4038
- className: cn(
4039
- "flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
4040
- selectAllSelected ? focusedValue === "__select_all__" ? "border-[color:var(--cmp-checkbox-checked-border-inverse)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-[var(--cmp-checkbox-unchecked-bg-default)]"
4041
- ),
4042
- children: selectAllSelected && /* @__PURE__ */ jsxRuntime.jsx(
4043
- SIcon,
4044
- {
4045
- name: "checkboxCheck",
4046
- size: 12,
4047
- color: "var(--cmp-checkbox-checked-icon-default)"
4048
- }
4049
- )
4050
- }
4051
- ),
4085
+ /* @__PURE__ */ jsxRuntime.jsx(CheckboxBox, { state: selectAllSelected, focused: focusedValue === "__select_all__" }),
4052
4086
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate", children: selectAllLabel })
4053
4087
  ]
4054
4088
  }
4055
4089
  ),
4056
- items.map((o) => {
4090
+ items.map((o, idx) => {
4057
4091
  const padLeft = o.depth === 1 ? 12 : o.depth === 2 ? 20 : 28;
4092
+ const rowKey = `${o.value}-${idx}`;
4058
4093
  if (o.isGroup) {
4059
4094
  const isDepth1 = o.depth === 1;
4095
+ const groupTone = isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium";
4096
+ if (multi) {
4097
+ const leafValues = groupLeafValues.get(idx) ?? [];
4098
+ const total = leafValues.length;
4099
+ const selectedCount = leafValues.reduce((n, v) => selectedSet.has(v) ? n + 1 : n, 0);
4100
+ const groupState = total === 0 || selectedCount === 0 ? false : selectedCount === total ? true : null;
4101
+ const groupDisabled = o.disabled || total === 0;
4102
+ const groupFocused = focusedValue === `__group_${idx}__`;
4103
+ return /* @__PURE__ */ jsxRuntime.jsxs(
4104
+ "button",
4105
+ {
4106
+ type: "button",
4107
+ role: "option",
4108
+ "aria-selected": groupState === true,
4109
+ disabled: groupDisabled,
4110
+ "data-select-focused": groupFocused ? "true" : void 0,
4111
+ "data-select-active": groupFocused ? "true" : void 0,
4112
+ className: cn(
4113
+ "flex w-full select-none items-center gap-[8px] border-none py-[4px] pr-[12px] text-left text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-default)]",
4114
+ groupTone,
4115
+ groupDisabled ? "cursor-not-allowed text-[color:var(--cmp-listItem-content-disabled)]" : "cursor-pointer",
4116
+ groupDisabled && isDepth1 && "bg-[var(--cmp-listItem-depth1-bg-disabled)]",
4117
+ // 포커스 하이라이트는 depth 배경보다 뒤에 둬 tailwind-merge 로 이기게 한다.
4118
+ groupFocused && !groupDisabled && "bg-[var(--cmp-listItem-bg-hover)] text-[color:var(--cmp-listItem-content-hover)]"
4119
+ ),
4120
+ style: { paddingLeft: padLeft },
4121
+ onMouseEnter: () => onHoverValue(`__group_${idx}__`),
4122
+ onMouseLeave: () => onHoverValue(null),
4123
+ onClick: () => onToggleGroup(leafValues),
4124
+ children: [
4125
+ /* @__PURE__ */ jsxRuntime.jsx(CheckboxBox, { state: groupState, disabled: groupDisabled, focused: groupFocused }),
4126
+ isHtmlLabel(o.label) ? /* @__PURE__ */ jsxRuntime.jsx(
4127
+ "span",
4128
+ {
4129
+ className: "min-w-0 truncate",
4130
+ dangerouslySetInnerHTML: { __html: sanitizeInlineHtml(o.label) }
4131
+ }
4132
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", children: o.label }),
4133
+ total > 0 && /* @__PURE__ */ jsxRuntime.jsxs(
4134
+ "span",
4135
+ {
4136
+ className: cn(
4137
+ "shrink-0 font-medium",
4138
+ groupFocused ? "text-white" : "text-[color:var(--cmp-listItem-content-disabled)]"
4139
+ ),
4140
+ children: [
4141
+ "(",
4142
+ selectedCount,
4143
+ "/",
4144
+ total,
4145
+ ")"
4146
+ ]
4147
+ }
4148
+ )
4149
+ ]
4150
+ },
4151
+ rowKey
4152
+ );
4153
+ }
4060
4154
  return /* @__PURE__ */ jsxRuntime.jsx(
4061
4155
  "div",
4062
4156
  {
4063
4157
  className: cn(
4064
4158
  "select-none py-[4px] pr-[12px] text-[12px] leading-[20px] text-[color:var(--cmp-listItem-content-default)]",
4065
- isDepth1 ? "border-t border-solid border-[color:var(--cmp-listItem-depth1-border-color)] bg-[var(--cmp-listItem-depth1-bg-default)] font-bold" : "bg-[var(--cmp-listItem-depth2-middle-bg)] font-medium",
4159
+ groupTone,
4066
4160
  // 하위가 전부 비활성이면(select.config 에서 bubble-up) 어미 그룹도 비활성 처리:
4067
4161
  // 텍스트는 회색(#888), depth1 그룹은 파란 배경 대신 회색(#EEE)으로 (depth2 는 #F6F6F6 유지)
4068
4162
  o.disabled && "cursor-not-allowed text-[color:var(--cmp-listItem-content-disabled)]",
@@ -4071,7 +4165,7 @@ function ItemList({
4071
4165
  style: { paddingLeft: padLeft },
4072
4166
  children: o.label
4073
4167
  },
4074
- o.value
4168
+ rowKey
4075
4169
  );
4076
4170
  }
4077
4171
  const isSelected = selected.includes(o.value);
@@ -4098,25 +4192,11 @@ function ItemList({
4098
4192
  onClick: () => onSelect(o.value),
4099
4193
  children: [
4100
4194
  multi && /* @__PURE__ */ jsxRuntime.jsx(
4101
- "span",
4195
+ CheckboxBox,
4102
4196
  {
4103
- className: cn(
4104
- "flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
4105
- o.disabled ? (
4106
- // 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
4107
- "cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
4108
- ) : cn(
4109
- isSelected ? focusedValue === o.value ? "border-[color:var(--cmp-checkbox-checked-border-inverse)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-[var(--cmp-checkbox-unchecked-bg-default)]"
4110
- )
4111
- ),
4112
- children: isSelected && /* @__PURE__ */ jsxRuntime.jsx(
4113
- SIcon,
4114
- {
4115
- name: "checkboxCheck",
4116
- size: 12,
4117
- color: o.disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
4118
- }
4119
- )
4197
+ state: isSelected,
4198
+ disabled: o.disabled,
4199
+ focused: focusedValue === o.value
4120
4200
  }
4121
4201
  ),
4122
4202
  isHtmlLabel(o.label) ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -4128,11 +4208,38 @@ function ItemList({
4128
4208
  ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate", children: o.label })
4129
4209
  ]
4130
4210
  },
4131
- o.value
4211
+ rowKey
4132
4212
  );
4133
4213
  })
4134
4214
  ] });
4135
4215
  }
4216
+ function CheckboxBox({
4217
+ state,
4218
+ disabled = false,
4219
+ focused = false
4220
+ }) {
4221
+ const filled = state === true || state === null;
4222
+ return /* @__PURE__ */ jsxRuntime.jsx(
4223
+ "span",
4224
+ {
4225
+ className: cn(
4226
+ "flex h-[16px] w-[16px] flex-shrink-0 items-center justify-center rounded-[2px] border border-solid",
4227
+ disabled ? (
4228
+ // 비활성: 회색 채움(#E1E1E1) + 회색 테두리(#CCCCCC)
4229
+ "cursor-not-allowed border-[color:var(--cmp-checkbox-border-disabled)] bg-[var(--cmp-checkbox-bg-disabled)]"
4230
+ ) : filled ? focused ? "border-[color:var(--cmp-checkbox-checked-border-inverse)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-checked-bg-default)] bg-[var(--cmp-checkbox-checked-bg-default)]" : "border-[color:var(--cmp-checkbox-unchecked-border-default)] bg-[var(--cmp-checkbox-unchecked-bg-default)]"
4231
+ ),
4232
+ children: filled && /* @__PURE__ */ jsxRuntime.jsx(
4233
+ SIcon,
4234
+ {
4235
+ name: state === null ? "checkboxIndeterminate" : "checkboxCheck",
4236
+ size: 12,
4237
+ color: disabled ? "var(--cmp-checkbox-checked-icon-disabled)" : "var(--cmp-checkbox-checked-icon-default)"
4238
+ }
4239
+ )
4240
+ }
4241
+ );
4242
+ }
4136
4243
 
4137
4244
  exports.SSelect = SSelect;
4138
4245
  //# sourceMappingURL=SSelect.cjs.map