sellmate-design-system-react 0.6.1 → 0.7.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 (84) hide show
  1. package/dist/components/SBarcodeInput/SBarcodeInput.cjs +2 -0
  2. package/dist/components/SBarcodeInput/SBarcodeInput.cjs.map +1 -1
  3. package/dist/components/SBarcodeInput/SBarcodeInput.js +2 -0
  4. package/dist/components/SBarcodeInput/SBarcodeInput.js.map +1 -1
  5. package/dist/components/SChipInput/SChipInput.cjs +2 -0
  6. package/dist/components/SChipInput/SChipInput.cjs.map +1 -1
  7. package/dist/components/SChipInput/SChipInput.js +2 -0
  8. package/dist/components/SChipInput/SChipInput.js.map +1 -1
  9. package/dist/components/SDatePicker/SDatePicker.cjs +2 -0
  10. package/dist/components/SDatePicker/SDatePicker.cjs.map +1 -1
  11. package/dist/components/SDatePicker/SDatePicker.js +2 -0
  12. package/dist/components/SDatePicker/SDatePicker.js.map +1 -1
  13. package/dist/components/SDateRangePicker/SDateRangePicker.cjs +2 -0
  14. package/dist/components/SDateRangePicker/SDateRangePicker.cjs.map +1 -1
  15. package/dist/components/SDateRangePicker/SDateRangePicker.js +2 -0
  16. package/dist/components/SDateRangePicker/SDateRangePicker.js.map +1 -1
  17. package/dist/components/SField/SField.cjs +2 -0
  18. package/dist/components/SField/SField.cjs.map +1 -1
  19. package/dist/components/SField/SField.d.ts +2 -0
  20. package/dist/components/SField/SField.js +2 -0
  21. package/dist/components/SField/SField.js.map +1 -1
  22. package/dist/components/SFilePicker/SFilePicker.cjs +2 -0
  23. package/dist/components/SFilePicker/SFilePicker.cjs.map +1 -1
  24. package/dist/components/SFilePicker/SFilePicker.js +2 -0
  25. package/dist/components/SFilePicker/SFilePicker.js.map +1 -1
  26. package/dist/components/SInput/SInput.cjs +2 -0
  27. package/dist/components/SInput/SInput.cjs.map +1 -1
  28. package/dist/components/SInput/SInput.js +2 -0
  29. package/dist/components/SInput/SInput.js.map +1 -1
  30. package/dist/components/SKeyValueTable/SKeyValueTable.cjs +14 -1
  31. package/dist/components/SKeyValueTable/SKeyValueTable.cjs.map +1 -1
  32. package/dist/components/SKeyValueTable/SKeyValueTable.js +14 -1
  33. package/dist/components/SKeyValueTable/SKeyValueTable.js.map +1 -1
  34. package/dist/components/SNumberInput/SNumberInput.cjs +2 -0
  35. package/dist/components/SNumberInput/SNumberInput.cjs.map +1 -1
  36. package/dist/components/SNumberInput/SNumberInput.js +2 -0
  37. package/dist/components/SNumberInput/SNumberInput.js.map +1 -1
  38. package/dist/components/SPopup/SPopup.cjs +18 -1
  39. package/dist/components/SPopup/SPopup.cjs.map +1 -1
  40. package/dist/components/SPopup/SPopup.js +18 -1
  41. package/dist/components/SPopup/SPopup.js.map +1 -1
  42. package/dist/components/SScrollArea/SScrollArea.cjs +64 -0
  43. package/dist/components/SScrollArea/SScrollArea.cjs.map +1 -0
  44. package/dist/components/SScrollArea/SScrollArea.d.ts +21 -0
  45. package/dist/components/SScrollArea/SScrollArea.js +62 -0
  46. package/dist/components/SScrollArea/SScrollArea.js.map +1 -0
  47. package/dist/components/SScrollArea/index.d.ts +2 -0
  48. package/dist/components/SScrollArea/scrollArea.config.d.ts +2 -0
  49. package/dist/components/SSelect/SSelect.cjs +14 -1
  50. package/dist/components/SSelect/SSelect.cjs.map +1 -1
  51. package/dist/components/SSelect/SSelect.js +14 -1
  52. package/dist/components/SSelect/SSelect.js.map +1 -1
  53. package/dist/components/SStepper/SStepper.cjs +7 -11
  54. package/dist/components/SStepper/SStepper.cjs.map +1 -1
  55. package/dist/components/SStepper/SStepper.js +7 -11
  56. package/dist/components/SStepper/SStepper.js.map +1 -1
  57. package/dist/components/STable/STable.cjs +17 -1
  58. package/dist/components/STable/STable.cjs.map +1 -1
  59. package/dist/components/STable/STable.js +17 -1
  60. package/dist/components/STable/STable.js.map +1 -1
  61. package/dist/components/STextarea/STextarea.cjs +2 -0
  62. package/dist/components/STextarea/STextarea.cjs.map +1 -1
  63. package/dist/components/STextarea/STextarea.js +2 -0
  64. package/dist/components/STextarea/STextarea.js.map +1 -1
  65. package/dist/components/STimePicker/STimePicker.cjs +31 -6
  66. package/dist/components/STimePicker/STimePicker.cjs.map +1 -1
  67. package/dist/components/STimePicker/STimePicker.js +31 -6
  68. package/dist/components/STimePicker/STimePicker.js.map +1 -1
  69. package/dist/components/STimeRangePicker/STimeRangePicker.cjs +33 -6
  70. package/dist/components/STimeRangePicker/STimeRangePicker.cjs.map +1 -1
  71. package/dist/components/STimeRangePicker/STimeRangePicker.js +33 -6
  72. package/dist/components/STimeRangePicker/STimeRangePicker.js.map +1 -1
  73. package/dist/index.cjs +137 -25
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.ts +1 -0
  76. package/dist/index.js +136 -26
  77. package/dist/index.js.map +1 -1
  78. package/dist/lib/scrollbar.cjs +13 -0
  79. package/dist/lib/scrollbar.cjs.map +1 -0
  80. package/dist/lib/scrollbar.d.ts +20 -0
  81. package/dist/lib/scrollbar.js +9 -0
  82. package/dist/lib/scrollbar.js.map +1 -0
  83. package/dist/styles.css +115 -14
  84. package/package.json +1 -1
package/dist/index.cjs CHANGED
@@ -2937,6 +2937,51 @@ var SDivider = react.forwardRef(function SDivider2({ vertical = false, className
2937
2937
  );
2938
2938
  });
2939
2939
 
2940
+ // src/lib/scrollbar.ts
2941
+ var FIREFOX_SCROLLBAR_CLASS = "supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-width:thin] supports-[not_selector(::-webkit-scrollbar)]:[scrollbar-color:var(--color-grey-45)_transparent]";
2942
+ 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`;
2943
+ 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)]";
2944
+ 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]";
2945
+ var AXIS_CLASS = {
2946
+ vertical: "overflow-x-hidden overflow-y-auto",
2947
+ horizontal: "overflow-x-auto overflow-y-hidden",
2948
+ both: "overflow-auto"
2949
+ };
2950
+ var SScrollArea = react.forwardRef(function SScrollArea2({
2951
+ axis = "both",
2952
+ background = false,
2953
+ bordered = false,
2954
+ maxHeight,
2955
+ maxWidth,
2956
+ className,
2957
+ style,
2958
+ children,
2959
+ ...rest
2960
+ }, ref) {
2961
+ const mergedStyle = { ...style };
2962
+ if (maxHeight) mergedStyle.maxHeight = maxHeight;
2963
+ if (maxWidth) mergedStyle.maxWidth = maxWidth;
2964
+ return /* @__PURE__ */ jsxRuntime.jsx(
2965
+ "div",
2966
+ {
2967
+ ref,
2968
+ className: cn(
2969
+ AXIS_CLASS[axis],
2970
+ SCROLLBAR_CLASS,
2971
+ background && SCROLLBAR_TRACK_BG_CLASS,
2972
+ bordered && SCROLLBAR_TRACK_BORDER_CLASS,
2973
+ className
2974
+ ),
2975
+ style: mergedStyle,
2976
+ ...rest,
2977
+ children
2978
+ }
2979
+ );
2980
+ });
2981
+
2982
+ // src/components/SScrollArea/scrollArea.config.ts
2983
+ var SCROLL_AREA_AXES = ["vertical", "horizontal", "both"];
2984
+
2940
2985
  // src/components/STag/tag.config.ts
2941
2986
  var TAG_SHAPES = ["square", "pill"];
2942
2987
  var TAG_SIZES = ["xs", "sm", "md"];
@@ -4472,7 +4517,18 @@ var SPopup = react.forwardRef(function SPopup2({
4472
4517
  )
4473
4518
  }
4474
4519
  ),
4475
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-auto", children }),
4520
+ /* @__PURE__ */ jsxRuntime.jsx(
4521
+ "div",
4522
+ {
4523
+ className: cn(
4524
+ "min-h-0 flex-1 overflow-auto",
4525
+ SCROLLBAR_CLASS,
4526
+ SCROLLBAR_TRACK_BG_CLASS,
4527
+ SCROLLBAR_TRACK_BORDER_CLASS
4528
+ ),
4529
+ children
4530
+ }
4531
+ ),
4476
4532
  useFooter && /* @__PURE__ */ jsxRuntime.jsxs(
4477
4533
  "footer",
4478
4534
  {
@@ -5910,7 +5966,7 @@ function SStepper({
5910
5966
  "aria-hidden": true,
5911
5967
  className: "inline-flex h-px shrink-0 items-center",
5912
5968
  style: { width: STEPPER_LAYOUT.dashWidth, color: STEPPER_COLORS.dash },
5913
- children: /* @__PURE__ */ jsxRuntime.jsx(
5969
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
5914
5970
  "svg",
5915
5971
  {
5916
5972
  width: "20",
@@ -5918,16 +5974,12 @@ function SStepper({
5918
5974
  viewBox: "0 0 20 1",
5919
5975
  fill: "none",
5920
5976
  xmlns: "http://www.w3.org/2000/svg",
5921
- children: /* @__PURE__ */ jsxRuntime.jsx(
5922
- "line",
5923
- {
5924
- y1: "0.5",
5925
- x2: "20",
5926
- y2: "0.5",
5927
- stroke: "#888888",
5928
- strokeDasharray: "4 4"
5929
- }
5930
- )
5977
+ children: [
5978
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "1.6", height: "1", fill: "#888888" }),
5979
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }),
5980
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }),
5981
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })
5982
+ ]
5931
5983
  }
5932
5984
  )
5933
5985
  }
@@ -6068,6 +6120,7 @@ var SField = react.forwardRef(function SField2({
6068
6120
  disabled = false,
6069
6121
  readOnly = false,
6070
6122
  width,
6123
+ minWidth,
6071
6124
  multiline = false,
6072
6125
  borderless = false,
6073
6126
  children,
@@ -6164,6 +6217,7 @@ var SField = react.forwardRef(function SField2({
6164
6217
  // focused/hovered prop이 명시된 경우 강조를 즉시 반영
6165
6218
  ...interactive && !borderless && focused ? { boxShadow: "0px 0px 4px 0px #0071ff66" } : {},
6166
6219
  ...multiline ? { minHeight: s.height } : { height: s.height },
6220
+ "minWidth": cssLen(minWidth),
6167
6221
  "width": cssLen(width),
6168
6222
  "borderRadius": s.radius,
6169
6223
  "background": bgColor,
@@ -6545,7 +6599,12 @@ var SSelect = react.forwardRef(function SSelect2({
6545
6599
  "div",
6546
6600
  {
6547
6601
  ref: listRef,
6548
- 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)]",
6602
+ className: cn(
6603
+ "overflow-auto",
6604
+ SCROLLBAR_CLASS,
6605
+ SCROLLBAR_TRACK_BG_CLASS,
6606
+ SCROLLBAR_TRACK_BORDER_CLASS
6607
+ ),
6549
6608
  style: { maxHeight: dropdownHeight },
6550
6609
  onMouseLeave: () => setFocusedIndex(-1),
6551
6610
  children: [
@@ -7060,6 +7119,9 @@ var STable = react.forwardRef(function STable2({
7060
7119
  onScroll: handleScroll,
7061
7120
  className: cn(
7062
7121
  "bg-white relative overflow-auto border border-solid border-[color:var(--cmp-table-border-color)]",
7122
+ SCROLLBAR_CLASS,
7123
+ SCROLLBAR_TRACK_BG_CLASS,
7124
+ SCROLLBAR_TRACK_BORDER_CLASS,
7063
7125
  radiusClass,
7064
7126
  // 원본 sd-table__scroll-container--loading/--no-data: 로딩·데이터 없음 시 스크롤·인터랙션 차단
7065
7127
  (isLoading || rowCount === 0) && "overflow-hidden pointer-events-none"
@@ -10431,6 +10493,8 @@ function formatTimeDisplay(value, type) {
10431
10493
  const displayHour = hour % 12 === 0 ? 12 : hour % 12;
10432
10494
  return `${meridiem} ${padTimePart(displayHour)}:${padTimePart(minute)}`;
10433
10495
  }
10496
+ var TIME_SELECTOR_WIDTH = 136;
10497
+ var MERIDIEM_TIME_SELECTOR_WIDTH = 154;
10434
10498
  function TimeSelector({
10435
10499
  value,
10436
10500
  useMeridiem,
@@ -10669,7 +10733,9 @@ function STimePicker({
10669
10733
  style
10670
10734
  }) {
10671
10735
  const portalContainer = usePortalContainer();
10736
+ const triggerRef = react.useRef(null);
10672
10737
  const [open, setOpen] = react.useState(false);
10738
+ const [popoverAlignOffset, setPopoverAlignOffset] = react.useState(0);
10673
10739
  const [focused, setFocused] = react.useState(false);
10674
10740
  const [ruleError, setRuleError] = react.useState("");
10675
10741
  const dims = TIMEPICKER_SIZE_CONFIG[size] ?? TIMEPICKER_SIZE_CONFIG.sm;
@@ -10690,6 +10756,11 @@ function STimePicker({
10690
10756
  const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
10691
10757
  const commitOpen = (next) => {
10692
10758
  if (disabled) return;
10759
+ if (next) {
10760
+ const triggerWidth = triggerRef.current?.getBoundingClientRect().width ?? 0;
10761
+ const selectorWidth = effectiveUseMeridiem ? MERIDIEM_TIME_SELECTOR_WIDTH : TIME_SELECTOR_WIDTH;
10762
+ setPopoverAlignOffset(Math.max(0, (triggerWidth - selectorWidth) / 2));
10763
+ }
10693
10764
  setOpen(next);
10694
10765
  onOpenChange?.(next);
10695
10766
  if (!next && rules && rules.length > 0) setRuleError(runRules(value, rules));
@@ -10716,19 +10787,32 @@ function STimePicker({
10716
10787
  focused: focused || open,
10717
10788
  errorMessage: ruleError !== "" ? ruleError : errorMessage,
10718
10789
  width,
10790
+ minWidth: dims.fieldMinWidth,
10719
10791
  disabled,
10720
10792
  className,
10721
- style: { minWidth: dims.fieldMinWidth, ...style },
10793
+ style,
10722
10794
  children: /* @__PURE__ */ jsxRuntime.jsxs(RPopover2__namespace.Root, { open, onOpenChange: commitOpen, children: [
10723
10795
  /* @__PURE__ */ jsxRuntime.jsx(RPopover2__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
10724
- "button",
10796
+ "div",
10725
10797
  {
10726
- type: "button",
10727
- name,
10728
- disabled,
10798
+ ref: triggerRef,
10799
+ role: "button",
10800
+ "aria-disabled": disabled,
10801
+ tabIndex: disabled ? -1 : 0,
10802
+ "data-name": name,
10729
10803
  onFocus: () => setFocused(true),
10730
10804
  onBlur: () => setFocused(false),
10731
- className: "flex h-full w-full items-center overflow-hidden bg-transparent outline-none disabled:cursor-not-allowed",
10805
+ onKeyDown: (event) => {
10806
+ if (disabled) return;
10807
+ if (event.key === "Enter" || event.key === " ") {
10808
+ event.preventDefault();
10809
+ commitOpen(!open);
10810
+ }
10811
+ },
10812
+ className: cn(
10813
+ "flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
10814
+ disabled ? "cursor-not-allowed" : "cursor-pointer"
10815
+ ),
10732
10816
  style: { padding: `0 ${dims.paddingX}`, gap: dims.gap, borderRadius: dims.radius },
10733
10817
  children: [
10734
10818
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -10774,6 +10858,7 @@ function STimePicker({
10774
10858
  side: "bottom",
10775
10859
  align: "start",
10776
10860
  sideOffset: 4,
10861
+ alignOffset: popoverAlignOffset,
10777
10862
  className: cn("z-50", FLOATING_SLIDE_ANIM),
10778
10863
  children: /* @__PURE__ */ jsxRuntime.jsx(
10779
10864
  TimeSelector,
@@ -10811,6 +10896,11 @@ function formatTimeRangeDisplay(value, type) {
10811
10896
  if (value == null || value[0] === "" || value[1] === "") return "";
10812
10897
  return `${formatTimeDisplay(value[0], type)} ~ ${formatTimeDisplay(value[1], type)}`;
10813
10898
  }
10899
+ var TIME_RANGE_SELECTOR_WIDTH = 345;
10900
+ var MIDDAY_FIELD_MIN_WIDTH = {
10901
+ sm: 178,
10902
+ md: 216
10903
+ };
10814
10904
  function RangeTimeSelector({
10815
10905
  value,
10816
10906
  useMeridiem,
@@ -11100,7 +11190,9 @@ function STimeRangePicker({
11100
11190
  style
11101
11191
  }) {
11102
11192
  const portalContainer = usePortalContainer();
11193
+ const triggerRef = react.useRef(null);
11103
11194
  const [open, setOpen] = react.useState(false);
11195
+ const [popoverAlignOffset, setPopoverAlignOffset] = react.useState(0);
11104
11196
  const [focused, setFocused] = react.useState(false);
11105
11197
  const [ruleError, setRuleError] = react.useState("");
11106
11198
  const dims = TIMEPICKER_SIZE_CONFIG[size] ?? TIMEPICKER_SIZE_CONFIG.sm;
@@ -11124,6 +11216,10 @@ function STimeRangePicker({
11124
11216
  const resolvedStatus = status ?? (rules && rules.length > 0 ? ruleError !== "" ? "error" : void 0 : void 0);
11125
11217
  const commitOpen = (next) => {
11126
11218
  if (disabled) return;
11219
+ if (next) {
11220
+ const triggerWidth = triggerRef.current?.getBoundingClientRect().width ?? 0;
11221
+ setPopoverAlignOffset(Math.max(0, (triggerWidth - TIME_RANGE_SELECTOR_WIDTH) / 2));
11222
+ }
11127
11223
  setOpen(next);
11128
11224
  onOpenChange?.(next);
11129
11225
  if (!next && rules && rules.length > 0) setRuleError(runRules(value, rules));
@@ -11150,19 +11246,32 @@ function STimeRangePicker({
11150
11246
  focused: focused || open,
11151
11247
  errorMessage: ruleError !== "" ? ruleError : errorMessage,
11152
11248
  width,
11249
+ minWidth: effectiveUseMeridiem ? MIDDAY_FIELD_MIN_WIDTH[size] : dims.fieldMinWidth,
11153
11250
  disabled,
11154
11251
  className,
11155
- style: { minWidth: dims.fieldMinWidth, ...style },
11252
+ style,
11156
11253
  children: /* @__PURE__ */ jsxRuntime.jsxs(RPopover2__namespace.Root, { open, onOpenChange: commitOpen, children: [
11157
11254
  /* @__PURE__ */ jsxRuntime.jsx(RPopover2__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
11158
- "button",
11255
+ "div",
11159
11256
  {
11160
- type: "button",
11161
- name,
11162
- disabled,
11257
+ ref: triggerRef,
11258
+ role: "button",
11259
+ "aria-disabled": disabled,
11260
+ tabIndex: disabled ? -1 : 0,
11261
+ "data-name": name,
11163
11262
  onFocus: () => setFocused(true),
11164
11263
  onBlur: () => setFocused(false),
11165
- className: "flex h-full w-full items-center overflow-hidden bg-transparent outline-none disabled:cursor-not-allowed",
11264
+ onKeyDown: (event) => {
11265
+ if (disabled) return;
11266
+ if (event.key === "Enter" || event.key === " ") {
11267
+ event.preventDefault();
11268
+ commitOpen(!open);
11269
+ }
11270
+ },
11271
+ className: cn(
11272
+ "flex h-full w-full items-center overflow-hidden bg-transparent outline-none",
11273
+ disabled ? "cursor-not-allowed" : "cursor-pointer"
11274
+ ),
11166
11275
  style: { padding: `0 ${dims.paddingX}`, gap: dims.gap, borderRadius: dims.radius },
11167
11276
  children: [
11168
11277
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -11208,6 +11317,7 @@ function STimeRangePicker({
11208
11317
  side: "bottom",
11209
11318
  align: "start",
11210
11319
  sideOffset: 4,
11320
+ alignOffset: popoverAlignOffset,
11211
11321
  className: cn("z-50", FLOATING_SLIDE_ANIM),
11212
11322
  children: /* @__PURE__ */ jsxRuntime.jsx(
11213
11323
  RangeTimeSelector,
@@ -11243,6 +11353,7 @@ exports.SActionModal = SActionModal;
11243
11353
  exports.SBadge = SBadge;
11244
11354
  exports.SBarcodeInput = SBarcodeInput;
11245
11355
  exports.SButton = SButton;
11356
+ exports.SCROLL_AREA_AXES = SCROLL_AREA_AXES;
11246
11357
  exports.SCalendar = SCalendar;
11247
11358
  exports.SCallout = SCallout;
11248
11359
  exports.SCard = SCard;
@@ -11279,6 +11390,7 @@ exports.SPortal = SPortal;
11279
11390
  exports.SRadio = SRadio;
11280
11391
  exports.SRadioButton = SRadioButton;
11281
11392
  exports.SRadioGroup = SRadioGroup;
11393
+ exports.SScrollArea = SScrollArea;
11282
11394
  exports.SSelect = SSelect;
11283
11395
  exports.SStepper = SStepper;
11284
11396
  exports.SSwitch = SSwitch;