sellmate-design-system-react 4.2.0 → 4.3.1

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.
package/dist/index.d.ts CHANGED
@@ -33,6 +33,7 @@ export * from './components/SGuide';
33
33
  export * from './components/SConfirmModal';
34
34
  export * from './components/SActionModal';
35
35
  export * from './components/SLoadingModal';
36
+ export * from './components/SDrawer';
36
37
  export * from './components/SModal';
37
38
  export * from './components/SGnb';
38
39
  export * from './components/SLayout';
package/dist/index.js CHANGED
@@ -3617,9 +3617,10 @@ var SExpansionItem = /* @__PURE__ */ forwardRef(
3617
3617
  className: cn(
3618
3618
  "group/expansion-item relative overflow-hidden bg-(--cmp-listExpansionItem-title-bg-default)",
3619
3619
  !bordered && "border-b border-(--cmp-listExpansionItem-border-default)",
3620
- // TODO: expansionItem/bordered/radius border intent 토큰 생성 고정값을 토큰으로 교체한다.
3621
- bordered && "rounded-[8px] border border-[#E1E1E1] hover:border-[#AAAAAA] [&:has(>button:hover)]:border-[#AAAAAA]",
3622
- bordered && isExpanded && "!border-[#93C4FF]",
3620
+ // 보더 색은 시맨틱 토큰(border-default hover strong 펼침 accentLight)을 쓴다.
3621
+ // TODO: expansionItem/bordered/radius 토큰 생성 후 rounded 고정값도 토큰으로 교체한다.
3622
+ bordered && "rounded-[8px] border border-border-default hover:border-border-strong [&:has(>button:hover)]:border-border-strong",
3623
+ bordered && isExpanded && "!border-border-accentLight",
3623
3624
  className
3624
3625
  ),
3625
3626
  ...rest,
@@ -5300,6 +5301,16 @@ var SCircleProgress = /* @__PURE__ */ forwardRef(
5300
5301
  );
5301
5302
  }
5302
5303
  );
5304
+
5305
+ // src/lib/global-overlay.ts
5306
+ var GLOBAL_OVERLAY_ATTR = "data-s-global-overlay";
5307
+ var globalOverlayProps = { [GLOBAL_OVERLAY_ATTR]: "" };
5308
+ function isFromGlobalOverlay(event) {
5309
+ const detail = event.detail;
5310
+ const target = detail?.originalEvent?.target ?? event.target;
5311
+ const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;
5312
+ return !!element?.closest(`[${GLOBAL_OVERLAY_ATTR}]`);
5313
+ }
5303
5314
  var SLoadingContainer = /* @__PURE__ */ forwardRef(
5304
5315
  function SLoadingContainer2({ open = false, message, zIndex = Z_INDEX.loading, className, style }, ref) {
5305
5316
  const [mounted2, setMounted] = useState(false);
@@ -5336,6 +5347,7 @@ var SLoadingContainer = /* @__PURE__ */ forwardRef(
5336
5347
  "div",
5337
5348
  {
5338
5349
  ref: setRef,
5350
+ ...globalOverlayProps,
5339
5351
  "aria-hidden": !open,
5340
5352
  className: cn(
5341
5353
  "fixed inset-0 flex items-center justify-center transition-opacity duration-200",
@@ -5543,6 +5555,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
5543
5555
  style
5544
5556
  }, ref) {
5545
5557
  const portalContainer = usePortalContainer();
5558
+ const insideModal = useInsideModal();
5546
5559
  const [open, setOpen] = useState(false);
5547
5560
  const splitWrapRef = useRef(null);
5548
5561
  const splitToggleRef = useRef(null);
@@ -5631,6 +5644,7 @@ var SDropdownButtonImpl = /* @__PURE__ */ forwardRef(
5631
5644
  return /* @__PURE__ */ jsxs(
5632
5645
  RDropdown.Root,
5633
5646
  {
5647
+ modal: !insideModal,
5634
5648
  open,
5635
5649
  onOpenChange: (o) => {
5636
5650
  setOpen(o);
@@ -6065,6 +6079,7 @@ function SGuide({
6065
6079
  style
6066
6080
  }) {
6067
6081
  const [open, setOpen] = useState(false);
6082
+ const portalContainer = usePortalContainer();
6068
6083
  const isNotion = type === "notion";
6069
6084
  const defaultLabel = DEFAULT_LABEL[type];
6070
6085
  const iconName = ICON[type];
@@ -6099,7 +6114,7 @@ function SGuide({
6099
6114
  return /* @__PURE__ */ jsx("span", { className, style, children: trigger });
6100
6115
  return /* @__PURE__ */ jsxs(RPopover2.Root, { open, onOpenChange: setOpen, children: [
6101
6116
  /* @__PURE__ */ jsx(RPopover2.Trigger, { asChild: true, children: trigger }),
6102
- /* @__PURE__ */ jsx(RPopover2.Portal, { children: /* @__PURE__ */ jsxs(
6117
+ /* @__PURE__ */ jsx(RPopover2.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxs(
6103
6118
  RPopover2.Content,
6104
6119
  {
6105
6120
  side: "bottom",
@@ -6240,6 +6255,13 @@ function SModalContainer({
6240
6255
  e.preventDefault();
6241
6256
  if (stackRegistrationRef.current?.isTop()) triggerShake();
6242
6257
  } : void 0;
6258
+ const guardInteractOutside = (e) => {
6259
+ if (isFromGlobalOverlay(e)) {
6260
+ e.preventDefault();
6261
+ return;
6262
+ }
6263
+ guardClose?.(e);
6264
+ };
6243
6265
  return /* @__PURE__ */ jsx(RDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsx(RDialog.Portal, { container: modalHost, forceMount: rendered ? true : void 0, children: /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0", style: { zIndex: layerIndex ?? 0 }, children: [
6244
6266
  /* @__PURE__ */ jsx(
6245
6267
  RDialog.Overlay,
@@ -6266,8 +6288,8 @@ function SModalContainer({
6266
6288
  contentRef.current?.focus({ preventScroll: true });
6267
6289
  },
6268
6290
  onEscapeKeyDown: guardClose,
6269
- onPointerDownOutside: guardClose,
6270
- onInteractOutside: guardClose,
6291
+ onPointerDownOutside: guardInteractOutside,
6292
+ onInteractOutside: guardInteractOutside,
6271
6293
  children: [
6272
6294
  /* @__PURE__ */ jsx(RDialog.Title, { className: "sr-only", children: ariaTitle }),
6273
6295
  /* @__PURE__ */ jsxs(
@@ -6571,6 +6593,177 @@ function SLoadingModal({
6571
6593
  }
6572
6594
  );
6573
6595
  }
6596
+ var CLOSE_ANIMATION_DURATION2 = 300;
6597
+ function SDrawer({
6598
+ open,
6599
+ onOpenChange,
6600
+ onClose,
6601
+ persistent = false,
6602
+ title = "",
6603
+ width = 572,
6604
+ footerLeft,
6605
+ button,
6606
+ children,
6607
+ className,
6608
+ style
6609
+ }) {
6610
+ const [shaking, setShaking] = useState(false);
6611
+ const [rendered, setRendered] = useState(() => Boolean(open));
6612
+ const [entered, setEntered] = useState(false);
6613
+ const [portalContainer, setPortalContainer] = useState(null);
6614
+ const backdropPointerDownRef = useRef(false);
6615
+ const contentRef = useRef(null);
6616
+ const stackRegistrationRef = useRef(null);
6617
+ const [layerIndex, setLayerIndex] = useState(null);
6618
+ useEffect(() => {
6619
+ if (open) {
6620
+ setRendered(true);
6621
+ return;
6622
+ }
6623
+ if (!rendered) return;
6624
+ const timer = window.setTimeout(() => setRendered(false), CLOSE_ANIMATION_DURATION2);
6625
+ return () => window.clearTimeout(timer);
6626
+ }, [open, rendered]);
6627
+ useEffect(() => {
6628
+ if (!open) {
6629
+ setEntered(false);
6630
+ return;
6631
+ }
6632
+ setEntered(false);
6633
+ const frame = requestAnimationFrame(() => setEntered(true));
6634
+ return () => cancelAnimationFrame(frame);
6635
+ }, [open]);
6636
+ useEffect(() => {
6637
+ if (!open) return;
6638
+ const registration = registerModalStackEntry();
6639
+ stackRegistrationRef.current = registration;
6640
+ setLayerIndex(registration.layerIndex);
6641
+ return () => {
6642
+ registration.unregister();
6643
+ if (stackRegistrationRef.current === registration) stackRegistrationRef.current = null;
6644
+ };
6645
+ }, [open]);
6646
+ const triggerShake = useCallback(() => {
6647
+ setShaking(false);
6648
+ requestAnimationFrame(() => setShaking(true));
6649
+ }, []);
6650
+ const guardClose = persistent ? (event) => {
6651
+ event.preventDefault();
6652
+ if (stackRegistrationRef.current?.isTop()) triggerShake();
6653
+ } : void 0;
6654
+ const guardInteractOutside = (e) => {
6655
+ if (isFromGlobalOverlay(e)) {
6656
+ e.preventDefault();
6657
+ return;
6658
+ }
6659
+ guardClose?.(e);
6660
+ };
6661
+ const handleBackdropInteraction = () => {
6662
+ if (persistent) {
6663
+ if (stackRegistrationRef.current?.isTop()) triggerShake();
6664
+ return;
6665
+ }
6666
+ onOpenChange?.(false);
6667
+ };
6668
+ const modalHost = getModalHost();
6669
+ return /* @__PURE__ */ jsx(RDialog.Root, { open, onOpenChange, children: /* @__PURE__ */ jsx(RDialog.Portal, { container: modalHost, forceMount: rendered ? true : void 0, children: /* @__PURE__ */ jsxs("div", { className: "pointer-events-none absolute inset-0", style: { zIndex: layerIndex ?? 0 }, children: [
6670
+ /* @__PURE__ */ jsx(
6671
+ RDialog.Overlay,
6672
+ {
6673
+ forceMount: rendered ? true : void 0,
6674
+ className: "pointer-events-auto absolute inset-0 bg-black/40 data-[state=open]:animate-overlay-in data-[state=closed]:animate-overlay-out",
6675
+ style: { zIndex: 0, animationFillMode: "forwards" },
6676
+ onPointerDown: (event) => {
6677
+ event.preventDefault();
6678
+ event.stopPropagation();
6679
+ backdropPointerDownRef.current = true;
6680
+ handleBackdropInteraction();
6681
+ },
6682
+ onClick: (event) => {
6683
+ event.stopPropagation();
6684
+ if (backdropPointerDownRef.current) {
6685
+ backdropPointerDownRef.current = false;
6686
+ return;
6687
+ }
6688
+ handleBackdropInteraction();
6689
+ }
6690
+ }
6691
+ ),
6692
+ /* @__PURE__ */ jsxs(
6693
+ RDialog.Content,
6694
+ {
6695
+ forceMount: rendered ? true : void 0,
6696
+ ref: contentRef,
6697
+ className: "pointer-events-auto absolute inset-y-0 right-0 w-fit max-w-full outline-none",
6698
+ onOpenAutoFocus: (event) => {
6699
+ event.preventDefault();
6700
+ contentRef.current?.focus({ preventScroll: true });
6701
+ },
6702
+ onEscapeKeyDown: guardClose,
6703
+ onPointerDownOutside: guardInteractOutside,
6704
+ onInteractOutside: guardInteractOutside,
6705
+ children: [
6706
+ /* @__PURE__ */ jsx(RDialog.Title, { className: "sr-only", children: title || "Drawer" }),
6707
+ /* @__PURE__ */ jsxs(
6708
+ "div",
6709
+ {
6710
+ className: cn(
6711
+ "pointer-events-auto relative flex h-full max-w-full translate-x-full flex-col overflow-hidden bg-[var(--cmp-drawer-bg)] shadow-[var(--shadow-overlay)] transition-transform duration-300 ease-out data-[state=open]:translate-x-0 data-[state=closed]:translate-x-full",
6712
+ shaking && "animate-drawer-shake",
6713
+ className
6714
+ ),
6715
+ "data-state": open && entered ? "open" : "closed",
6716
+ style: { width, ...style },
6717
+ onAnimationEnd: (event) => {
6718
+ if (event.animationName === "drawer-shake") setShaking(false);
6719
+ },
6720
+ children: [
6721
+ /* @__PURE__ */ jsxs("header", { className: "relative flex flex-shrink-0 items-center gap-[var(--cmp-overlay-header-gap)] bg-[var(--cmp-overlay-header-bg)] px-[var(--cmp-overlay-header-paddingX)] py-[var(--cmp-overlay-header-paddingY)]", children: [
6722
+ /* @__PURE__ */ jsx("h2", { className: "m-0 whitespace-nowrap text-[16px] font-bold leading-[26px] text-[color:var(--cmp-overlay-header-title-color)]", children: title }),
6723
+ /* @__PURE__ */ jsx(
6724
+ SGhostButton,
6725
+ {
6726
+ icon: "close",
6727
+ ariaLabel: "\uB2EB\uAE30",
6728
+ onClick: () => {
6729
+ onClose?.();
6730
+ onOpenChange?.(false);
6731
+ },
6732
+ className: "absolute right-[12px] top-[12px]"
6733
+ }
6734
+ )
6735
+ ] }),
6736
+ /* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-auto border-t border-solid border-[color:var(--cmp-drawer-body-border)]", children: /* @__PURE__ */ jsx(InsideModalProvider, { value: true, children: /* @__PURE__ */ jsx(PortalContainerProvider, { value: portalContainer, children }) }) }),
6737
+ (button || footerLeft) && /* @__PURE__ */ jsxs("footer", { className: "flex flex-shrink-0 items-center justify-end gap-[var(--cmp-overlay-footer-gap)] bg-[var(--cmp-overlay-footer-bg-default)] px-[var(--cmp-overlay-footer-paddingX)] py-[var(--cmp-overlay-footer-paddingY)] shadow-[var(--shadow-overlay)]", children: [
6738
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 items-center justify-between", children: footerLeft }),
6739
+ button && /* @__PURE__ */ jsx(
6740
+ SButton,
6741
+ {
6742
+ color: button.color ?? "primary",
6743
+ outline: button.outline,
6744
+ size: button.size ?? "md",
6745
+ disabled: button.disabled,
6746
+ onClick: () => button.onClick?.(),
6747
+ label: button.label ?? "\uD655\uC778"
6748
+ }
6749
+ )
6750
+ ] })
6751
+ ]
6752
+ }
6753
+ ),
6754
+ /* @__PURE__ */ jsx(
6755
+ "div",
6756
+ {
6757
+ ref: setPortalContainer,
6758
+ className: "pointer-events-auto fixed left-0 top-0",
6759
+ style: { zIndex: 2 }
6760
+ }
6761
+ )
6762
+ ]
6763
+ }
6764
+ )
6765
+ ] }) }) });
6766
+ }
6574
6767
  var EXIT_DURATION = 300;
6575
6768
  var EXIT_BUFFER = 100;
6576
6769
  var SModalRefImpl = class {
@@ -6935,6 +7128,8 @@ var GNB_EXPAND_MS = 200;
6935
7128
  var GNB_MENU_WIDTH = 240;
6936
7129
  var GNB_FULL_LOGO_WIDTH = 140;
6937
7130
  var GNB_TOP_ICON_GAP = 8;
7131
+ var GNB_TOP_ICON_SIZE = 24;
7132
+ var GNB_FULL_LOGO_WIDTH_NO_LAUNCHER = GNB_FULL_LOGO_WIDTH + GNB_TOP_ICON_SIZE + GNB_TOP_ICON_GAP;
6938
7133
  function findGnbRailValue(items, value) {
6939
7134
  if (items.some((item) => item.value === value)) return value;
6940
7135
  return findGnbAncestors(items, value)[0];
@@ -7312,7 +7507,11 @@ var SGnb = /* @__PURE__ */ forwardRef(function SGnb2({
7312
7507
  ...header === "full" ? (
7313
7508
  // full 은 전폭이라 로고 자리가 고정이다 — 폭 140px(디자인 스펙, 전용 토큰 없음)로 못 박아
7314
7509
  // 로고 내용이 바뀌어도 오른쪽 topContent 시작점이 흔들리지 않게 한다.
7315
- { width: GNB_FULL_LOGO_WIDTH, marginLeft: H.topGap }
7510
+ // 런처가 없으면 자리(버튼 + 간격)를 로고가 이어받아, 런처 유무로 topContent 가 밀리지 않는다.
7511
+ {
7512
+ width: launcherButton ? GNB_FULL_LOGO_WIDTH : GNB_FULL_LOGO_WIDTH_NO_LAUNCHER,
7513
+ marginLeft: H.topGap
7514
+ }
7316
7515
  ) : (
7317
7516
  // fix 는 폴드가 ml-auto 로 밀려나므로(margin-left 를 못 쓴다) 로고 오른쪽에 최소 간격을 둔다
7318
7517
  { marginRight: H.topGap }
@@ -7863,10 +8062,10 @@ function SStepper({
7863
8062
  fill: "none",
7864
8063
  xmlns: "http://www.w3.org/2000/svg",
7865
8064
  children: [
7866
- /* @__PURE__ */ jsx("rect", { width: "1.6", height: "1", fill: "#888888" }),
7867
- /* @__PURE__ */ jsx("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }),
7868
- /* @__PURE__ */ jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }),
7869
- /* @__PURE__ */ jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })
8065
+ /* @__PURE__ */ jsx("rect", { width: "1.6", height: "1", fill: "currentColor" }),
8066
+ /* @__PURE__ */ jsx("rect", { x: "5", width: "3.3", height: "1", fill: "currentColor" }),
8067
+ /* @__PURE__ */ jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "currentColor" }),
8068
+ /* @__PURE__ */ jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "currentColor" })
7870
8069
  ]
7871
8070
  }
7872
8071
  )
@@ -8016,7 +8215,7 @@ var SField = /* @__PURE__ */ forwardRef(function SField2({
8016
8215
  }
8017
8216
  ),
8018
8217
  /* @__PURE__ */ jsx("span", { className: "min-w-0 overflow-hidden text-ellipsis whitespace-nowrap", children: label }),
8019
- (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsx("span", { className: "shrink-0", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsx(
8218
+ (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsx(
8020
8219
  STooltip2,
8021
8220
  {
8022
8221
  message: labelTooltip !== "" ? [labelTooltip] : void 0,
@@ -11778,6 +11977,7 @@ var SToastContainer = /* @__PURE__ */ forwardRef(
11778
11977
  /* @__PURE__ */ jsx(
11779
11978
  "div",
11780
11979
  {
11980
+ ...globalOverlayProps,
11781
11981
  style: {
11782
11982
  position: "fixed",
11783
11983
  zIndex,
@@ -12261,7 +12461,7 @@ var SChipInput = /* @__PURE__ */ forwardRef(function SChipInput2({
12261
12461
  "span",
12262
12462
  {
12263
12463
  className: "s-chip-input__divider shrink-0",
12264
- style: { width: 1, height: 12, backgroundColor: "#E1E1E1" }
12464
+ style: { width: 1, height: 12, backgroundColor: "var(--color-divider-default)" }
12265
12465
  }
12266
12466
  ),
12267
12467
  showMaxCount && /* @__PURE__ */ jsxs(
@@ -12323,7 +12523,7 @@ var SChipInput = /* @__PURE__ */ forwardRef(function SChipInput2({
12323
12523
  role: "option",
12324
12524
  "aria-selected": selected || active,
12325
12525
  className: "rounded-full",
12326
- style: active ? { outline: "2px solid #0075FF", outlineOffset: 1 } : void 0,
12526
+ style: active ? { outline: "2px solid var(--color-border-accent)", outlineOffset: 1 } : void 0,
12327
12527
  onMouseDown: (e) => {
12328
12528
  e.preventDefault();
12329
12529
  if (!selected) addChip(item);
@@ -13419,6 +13619,6 @@ function STimeRangePicker({
13419
13619
  );
13420
13620
  }
13421
13621
 
13422
- export { BADGE_COLORS, BUTTON_COLORS, BUTTON_SIZES, COLOR_KEYS, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, ICONS, PAGE_BACKGROUNDS, SActionModal, SBadge, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCallout, SCard, SCheckbox, SChip2 as SChip, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDateRangePicker, SDivider, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDropdownButton2 as SDropdownButton, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGuide, SIcon, SInput, SKeyValueTable, SLayout, SLayoutContext, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SModal, SNumberInput, SPage, SPagination, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioGroup, SScrollArea, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SStepper, SSwitch, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, findGnbAncestors, findGnbRailValue, isColorKey, loading, resolveColor, useSLayout };
13622
+ export { BADGE_COLORS, BUTTON_COLORS, BUTTON_SIZES, COLOR_KEYS, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, GNB_FULL_LOGO_WIDTH, GNB_HEADER, GNB_MENU, GNB_MENU_WIDTH, GNB_RAIL, GNB_RAIL_WIDTH, ICONS, PAGE_BACKGROUNDS, SActionModal, SBadge, SBarcodeInput, SButton, SCROLL_AREA_AXES, SCalendar, SCallout, SCard, SCheckbox, SChip2 as SChip, SChipInput, SCircleProgress, SConfirmModal, SDatePicker, SDateRangePicker, SDivider, SDraggableGroup, SDraggableItem2 as SDraggableItem, SDraggableList, SDraggableProvider, SDrawer, SDropdownButton2 as SDropdownButton, SExpansionItem, SExpansionList2 as SExpansionList, SField, SFilePicker, SForm, SGhostButton, SGnb, SGuide, SIcon, SInput, SKeyValueTable, SLayout, SLayoutContext, SLinearProgress, SList2 as SList, SListItem2 as SListItem, SLoadingContainer, SLoadingModal, SLoadingViewport, SModal, SNumberInput, SPage, SPagination, SPopover, SPopup, SPortal, SRadio, SRadioButton, SRadioGroup, SScrollArea, SSectionHeaderCard2 as SSectionHeaderCard, SSelect2 as SSelect, SStepper, SSwitch, STEPPER_SIZES, STable, STableBar, STabs, STag, STextLink, STextarea, STimePicker, STimeRangePicker, SToast, SToastContainer, SToggle, STooltip2 as STooltip, STree2 as STree, STreeItem2 as STreeItem, TAG_COLORS, TAG_SHAPES, TAG_SIZES, TIMEPICKER_SIZES, TIMEPICKER_SIZE_CONFIG, buttonPreset, cn, findGnbAncestors, findGnbRailValue, isColorKey, loading, resolveColor, useSLayout };
13423
13623
  //# sourceMappingURL=index.js.map
13424
13624
  //# sourceMappingURL=index.js.map