sellmate-design-system-react 4.1.0 → 4.3.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.
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,
@@ -6571,6 +6572,170 @@ function SLoadingModal({
6571
6572
  }
6572
6573
  );
6573
6574
  }
6575
+ var CLOSE_ANIMATION_DURATION2 = 300;
6576
+ function SDrawer({
6577
+ open,
6578
+ onOpenChange,
6579
+ onClose,
6580
+ persistent = false,
6581
+ title = "",
6582
+ width = 572,
6583
+ footerLeft,
6584
+ button,
6585
+ children,
6586
+ className,
6587
+ style
6588
+ }) {
6589
+ const [shaking, setShaking] = useState(false);
6590
+ const [rendered, setRendered] = useState(() => Boolean(open));
6591
+ const [entered, setEntered] = useState(false);
6592
+ const [portalContainer, setPortalContainer] = useState(null);
6593
+ const backdropPointerDownRef = useRef(false);
6594
+ const contentRef = useRef(null);
6595
+ const stackRegistrationRef = useRef(null);
6596
+ const [layerIndex, setLayerIndex] = useState(null);
6597
+ useEffect(() => {
6598
+ if (open) {
6599
+ setRendered(true);
6600
+ return;
6601
+ }
6602
+ if (!rendered) return;
6603
+ const timer = window.setTimeout(() => setRendered(false), CLOSE_ANIMATION_DURATION2);
6604
+ return () => window.clearTimeout(timer);
6605
+ }, [open, rendered]);
6606
+ useEffect(() => {
6607
+ if (!open) {
6608
+ setEntered(false);
6609
+ return;
6610
+ }
6611
+ setEntered(false);
6612
+ const frame = requestAnimationFrame(() => setEntered(true));
6613
+ return () => cancelAnimationFrame(frame);
6614
+ }, [open]);
6615
+ useEffect(() => {
6616
+ if (!open) return;
6617
+ const registration = registerModalStackEntry();
6618
+ stackRegistrationRef.current = registration;
6619
+ setLayerIndex(registration.layerIndex);
6620
+ return () => {
6621
+ registration.unregister();
6622
+ if (stackRegistrationRef.current === registration) stackRegistrationRef.current = null;
6623
+ };
6624
+ }, [open]);
6625
+ const triggerShake = useCallback(() => {
6626
+ setShaking(false);
6627
+ requestAnimationFrame(() => setShaking(true));
6628
+ }, []);
6629
+ const guardClose = persistent ? (event) => {
6630
+ event.preventDefault();
6631
+ if (stackRegistrationRef.current?.isTop()) triggerShake();
6632
+ } : void 0;
6633
+ const handleBackdropInteraction = () => {
6634
+ if (persistent) {
6635
+ if (stackRegistrationRef.current?.isTop()) triggerShake();
6636
+ return;
6637
+ }
6638
+ onOpenChange?.(false);
6639
+ };
6640
+ const modalHost = getModalHost();
6641
+ 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: [
6642
+ /* @__PURE__ */ jsx(
6643
+ RDialog.Overlay,
6644
+ {
6645
+ forceMount: rendered ? true : void 0,
6646
+ className: "pointer-events-auto absolute inset-0 bg-black/40 data-[state=open]:animate-overlay-in data-[state=closed]:animate-overlay-out",
6647
+ style: { zIndex: 0, animationFillMode: "forwards" },
6648
+ onPointerDown: (event) => {
6649
+ event.preventDefault();
6650
+ event.stopPropagation();
6651
+ backdropPointerDownRef.current = true;
6652
+ handleBackdropInteraction();
6653
+ },
6654
+ onClick: (event) => {
6655
+ event.stopPropagation();
6656
+ if (backdropPointerDownRef.current) {
6657
+ backdropPointerDownRef.current = false;
6658
+ return;
6659
+ }
6660
+ handleBackdropInteraction();
6661
+ }
6662
+ }
6663
+ ),
6664
+ /* @__PURE__ */ jsxs(
6665
+ RDialog.Content,
6666
+ {
6667
+ forceMount: rendered ? true : void 0,
6668
+ ref: contentRef,
6669
+ className: "pointer-events-auto absolute inset-y-0 right-0 w-fit max-w-full outline-none",
6670
+ onOpenAutoFocus: (event) => {
6671
+ event.preventDefault();
6672
+ contentRef.current?.focus({ preventScroll: true });
6673
+ },
6674
+ onEscapeKeyDown: guardClose,
6675
+ onPointerDownOutside: guardClose,
6676
+ onInteractOutside: guardClose,
6677
+ children: [
6678
+ /* @__PURE__ */ jsx(RDialog.Title, { className: "sr-only", children: title || "Drawer" }),
6679
+ /* @__PURE__ */ jsxs(
6680
+ "div",
6681
+ {
6682
+ className: cn(
6683
+ "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",
6684
+ shaking && "animate-drawer-shake",
6685
+ className
6686
+ ),
6687
+ "data-state": open && entered ? "open" : "closed",
6688
+ style: { width, ...style },
6689
+ onAnimationEnd: (event) => {
6690
+ if (event.animationName === "drawer-shake") setShaking(false);
6691
+ },
6692
+ children: [
6693
+ /* @__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: [
6694
+ /* @__PURE__ */ jsx("h2", { className: "m-0 whitespace-nowrap text-[16px] font-bold leading-[26px] text-[color:var(--cmp-overlay-header-title-color)]", children: title }),
6695
+ /* @__PURE__ */ jsx(
6696
+ SGhostButton,
6697
+ {
6698
+ icon: "close",
6699
+ ariaLabel: "\uB2EB\uAE30",
6700
+ onClick: () => {
6701
+ onClose?.();
6702
+ onOpenChange?.(false);
6703
+ },
6704
+ className: "absolute right-[12px] top-[12px]"
6705
+ }
6706
+ )
6707
+ ] }),
6708
+ /* @__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 }) }) }),
6709
+ (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: [
6710
+ /* @__PURE__ */ jsx("div", { className: "flex min-w-0 flex-1 items-center justify-between", children: footerLeft }),
6711
+ button && /* @__PURE__ */ jsx(
6712
+ SButton,
6713
+ {
6714
+ color: button.color ?? "primary",
6715
+ outline: button.outline,
6716
+ size: button.size ?? "md",
6717
+ disabled: button.disabled,
6718
+ onClick: () => button.onClick?.(),
6719
+ label: button.label ?? "\uD655\uC778"
6720
+ }
6721
+ )
6722
+ ] })
6723
+ ]
6724
+ }
6725
+ ),
6726
+ /* @__PURE__ */ jsx(
6727
+ "div",
6728
+ {
6729
+ ref: setPortalContainer,
6730
+ className: "pointer-events-auto fixed left-0 top-0",
6731
+ style: { zIndex: 2 }
6732
+ }
6733
+ )
6734
+ ]
6735
+ }
6736
+ )
6737
+ ] }) }) });
6738
+ }
6574
6739
  var EXIT_DURATION = 300;
6575
6740
  var EXIT_BUFFER = 100;
6576
6741
  var SModalRefImpl = class {
@@ -6933,6 +7098,10 @@ var GNB_RAIL_WIDTH = 68;
6933
7098
  var GNB_FOLD_MS = 200;
6934
7099
  var GNB_EXPAND_MS = 200;
6935
7100
  var GNB_MENU_WIDTH = 240;
7101
+ var GNB_FULL_LOGO_WIDTH = 140;
7102
+ var GNB_TOP_ICON_GAP = 8;
7103
+ var GNB_TOP_ICON_SIZE = 24;
7104
+ var GNB_FULL_LOGO_WIDTH_NO_LAUNCHER = GNB_FULL_LOGO_WIDTH + GNB_TOP_ICON_SIZE + GNB_TOP_ICON_GAP;
6936
7105
  function findGnbRailValue(items, value) {
6937
7106
  if (items.some((item) => item.value === value)) return value;
6938
7107
  return findGnbAncestors(items, value)[0];
@@ -7037,6 +7206,7 @@ var SGnb = /* @__PURE__ */ forwardRef(function SGnb2({
7037
7206
  onFoldChange,
7038
7207
  onLauncherClick,
7039
7208
  logo,
7209
+ topContent,
7040
7210
  railFooter,
7041
7211
  menuFooter,
7042
7212
  foldedFooter,
@@ -7268,13 +7438,71 @@ var SGnb = /* @__PURE__ */ forwardRef(function SGnb2({
7268
7438
  ...style
7269
7439
  };
7270
7440
  const hideAfterSlide = (hidden) => `visibility 0s linear ${hidden ? `${GNB_FOLD_MS}ms` : "0s"}`;
7271
- const foldInline = !!logo;
7272
7441
  const sideFoldStyle = {
7273
7442
  opacity: railFolded ? 0 : 1,
7274
7443
  position: railFolded ? "absolute" : "static",
7275
7444
  visibility: railFolded ? "hidden" : "visible",
7276
7445
  transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(railFolded)}`
7277
7446
  };
7447
+ const launcherButton = onLauncherClick ? /* @__PURE__ */ jsx(
7448
+ SGhostButton,
7449
+ {
7450
+ icon: "launcher",
7451
+ size: "xs",
7452
+ intent: color === "dark" ? "inverse" : "default",
7453
+ ariaLabel: "app launcher",
7454
+ onClick: onLauncherClick,
7455
+ className: "shrink-0",
7456
+ style: { ...sideFoldStyle, marginRight: header === "fix" ? H.topGap : GNB_TOP_ICON_GAP }
7457
+ },
7458
+ "launcher"
7459
+ ) : null;
7460
+ const foldButton = /* @__PURE__ */ jsx(
7461
+ SGhostButton,
7462
+ {
7463
+ icon: "sidebar",
7464
+ size: "xs",
7465
+ intent: color === "dark" ? "inverse" : "default",
7466
+ ariaLabel: "toggle navigation",
7467
+ ariaPressed: folded,
7468
+ onClick: handleFoldToggle,
7469
+ className: cn("shrink-0", header === "fix" && "ml-auto")
7470
+ },
7471
+ "fold"
7472
+ );
7473
+ const logoBox = logo ? /* @__PURE__ */ jsx(
7474
+ "div",
7475
+ {
7476
+ className: "flex shrink-0 items-center",
7477
+ style: {
7478
+ height: H.logoHeight,
7479
+ ...header === "full" ? (
7480
+ // full 은 전폭이라 로고 자리가 고정이다 — 폭 140px(디자인 스펙, 전용 토큰 없음)로 못 박아
7481
+ // 로고 내용이 바뀌어도 오른쪽 topContent 시작점이 흔들리지 않게 한다.
7482
+ // 런처가 없으면 그 자리(버튼 + 간격)를 로고가 이어받아, 런처 유무로 topContent 가 밀리지 않는다.
7483
+ {
7484
+ width: launcherButton ? GNB_FULL_LOGO_WIDTH : GNB_FULL_LOGO_WIDTH_NO_LAUNCHER,
7485
+ marginLeft: H.topGap
7486
+ }
7487
+ ) : (
7488
+ // fix 는 폴드가 ml-auto 로 밀려나므로(margin-left 를 못 쓴다) 로고 오른쪽에 최소 간격을 둔다
7489
+ { marginRight: H.topGap }
7490
+ ),
7491
+ ...sideFoldStyle
7492
+ },
7493
+ children: logo
7494
+ },
7495
+ "logo"
7496
+ ) : null;
7497
+ const topContentBox = header === "full" && topContent ? /* @__PURE__ */ jsx(
7498
+ "div",
7499
+ {
7500
+ className: "flex min-w-0 flex-1 items-center",
7501
+ style: { marginLeft: H.topGap },
7502
+ children: topContent
7503
+ },
7504
+ "topContent"
7505
+ ) : null;
7278
7506
  return /* @__PURE__ */ jsxs(
7279
7507
  "div",
7280
7508
  {
@@ -7292,8 +7520,9 @@ var SGnb = /* @__PURE__ */ forwardRef(function SGnb2({
7292
7520
  className: "relative box-border flex shrink-0 items-center overflow-hidden",
7293
7521
  style: {
7294
7522
  height: H.topHeight,
7295
- // 인라인 간격은 컨테이너 gap 대신 각 요소 margin 으로 준다 — 런처↔폴드(8px)와
7296
- // 폴드↔로고(top-gap)를 다르게 두기 위함. 접히면 런처·로고가 흐름에서 빠져 margin 도 무의미해진다.
7523
+ // 간격은 컨테이너 gap 대신 각 요소 margin 으로 준다 — 순서가 header 마다 달라
7524
+ // 이웃 쌍마다 값이 다르기 때문(위 launcherButton/logoBox 주석).
7525
+ // 접히면 런처·로고가 흐름에서 빠져 margin 도 무의미해진다.
7297
7526
  padding: `0 ${railFolded ? GNB_RAIL.padding : H.topPaddingX}`,
7298
7527
  borderBottom: `1px solid ${C.topBorder}`,
7299
7528
  backgroundColor: C.panelBg,
@@ -7302,90 +7531,16 @@ var SGnb = /* @__PURE__ */ forwardRef(function SGnb2({
7302
7531
  // 아이콘 버튼은 자체 ghostButton 토큰을 쓰므로, 이 색은 logo 슬롯 상속용
7303
7532
  color: C.itemColorDefault
7304
7533
  },
7305
- children: foldInline ? (
7306
- // 런처(있을 때)·폴드·로고를 흐름에 나란히 둔다 → 폴드 버튼이 (런처와) 로고 사이에 선다.
7307
- // 접히면 런처·로고가 페이드하며 흐름에서 빠지고(sideFoldStyle), 폴드 버튼만 남아 레일 가운데에 선다.
7308
- /* @__PURE__ */ jsxs(Fragment, { children: [
7309
- onLauncherClick && /* @__PURE__ */ jsx(
7310
- SGhostButton,
7311
- {
7312
- icon: "launcher",
7313
- size: "xs",
7314
- intent: color === "dark" ? "inverse" : "default",
7315
- ariaLabel: "app launcher",
7316
- onClick: onLauncherClick,
7317
- className: "shrink-0",
7318
- style: { ...sideFoldStyle, marginRight: "8px" }
7319
- }
7320
- ),
7321
- /* @__PURE__ */ jsx(
7322
- SGhostButton,
7323
- {
7324
- icon: "sidebar",
7325
- size: "xs",
7326
- intent: color === "dark" ? "inverse" : "default",
7327
- ariaLabel: "toggle navigation",
7328
- ariaPressed: folded,
7329
- onClick: handleFoldToggle,
7330
- className: "shrink-0"
7331
- }
7332
- ),
7333
- /* @__PURE__ */ jsx(
7334
- "div",
7335
- {
7336
- className: "flex shrink-0 items-center",
7337
- style: { height: H.logoHeight, marginLeft: H.topGap, ...sideFoldStyle },
7338
- children: logo
7339
- }
7340
- )
7341
- ] })
7342
- ) : (
7343
- // 런처·로고는 좌측 그룹(흐름에서 빼 폭 축소 중 폴드 버튼을 밀어내지 않는다),
7344
- // 폴드 버튼은 우측 끝(ml-auto)이라 폭·패딩이 줄면 저절로 레일 가운데에 선다.
7345
- /* @__PURE__ */ jsxs(Fragment, { children: [
7346
- (onLauncherClick || logo) && /* @__PURE__ */ jsxs(
7347
- "div",
7348
- {
7349
- className: "absolute inset-y-0 flex items-center",
7350
- style: {
7351
- left: H.topPaddingX,
7352
- gap: H.topGap,
7353
- opacity: railFolded ? 0 : 1,
7354
- transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(railFolded)}, transform ${GNB_FOLD_MS}ms ease-out`,
7355
- // 메뉴와 같은 방향으로 빠지되, 좁은 레일 안에서 꼬리가 비치지 않게 페이드가 거리를 대신한다
7356
- transform: railFolded ? `translateX(-${H.topPaddingX})` : "none",
7357
- visibility: railFolded ? "hidden" : "visible"
7358
- },
7359
- children: [
7360
- onLauncherClick && /* @__PURE__ */ jsx(
7361
- SGhostButton,
7362
- {
7363
- icon: "launcher",
7364
- size: "xs",
7365
- intent: color === "dark" ? "inverse" : "default",
7366
- ariaLabel: "app launcher",
7367
- onClick: onLauncherClick,
7368
- className: "shrink-0"
7369
- }
7370
- ),
7371
- logo && /* @__PURE__ */ jsx("div", { className: "flex items-center", style: { height: H.logoHeight }, children: logo })
7372
- ]
7373
- }
7374
- ),
7375
- /* @__PURE__ */ jsx(
7376
- SGhostButton,
7377
- {
7378
- icon: "sidebar",
7379
- size: "xs",
7380
- intent: color === "dark" ? "inverse" : "default",
7381
- ariaLabel: "toggle navigation",
7382
- ariaPressed: folded,
7383
- onClick: handleFoldToggle,
7384
- className: "ml-auto shrink-0"
7385
- }
7386
- )
7387
- ] })
7388
- )
7534
+ children: header === "fix" ? /* @__PURE__ */ jsxs(Fragment, { children: [
7535
+ launcherButton,
7536
+ logoBox,
7537
+ foldButton
7538
+ ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
7539
+ launcherButton,
7540
+ foldButton,
7541
+ logoBox,
7542
+ topContentBox
7543
+ ] })
7389
7544
  }
7390
7545
  ),
7391
7546
  /* @__PURE__ */ jsxs(
@@ -7879,10 +8034,10 @@ function SStepper({
7879
8034
  fill: "none",
7880
8035
  xmlns: "http://www.w3.org/2000/svg",
7881
8036
  children: [
7882
- /* @__PURE__ */ jsx("rect", { width: "1.6", height: "1", fill: "#888888" }),
7883
- /* @__PURE__ */ jsx("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }),
7884
- /* @__PURE__ */ jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }),
7885
- /* @__PURE__ */ jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })
8037
+ /* @__PURE__ */ jsx("rect", { width: "1.6", height: "1", fill: "currentColor" }),
8038
+ /* @__PURE__ */ jsx("rect", { x: "5", width: "3.3", height: "1", fill: "currentColor" }),
8039
+ /* @__PURE__ */ jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "currentColor" }),
8040
+ /* @__PURE__ */ jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "currentColor" })
7886
8041
  ]
7887
8042
  }
7888
8043
  )
@@ -8032,7 +8187,7 @@ var SField = /* @__PURE__ */ forwardRef(function SField2({
8032
8187
  }
8033
8188
  ),
8034
8189
  /* @__PURE__ */ jsx("span", { className: "min-w-0 overflow-hidden text-ellipsis whitespace-nowrap", children: label }),
8035
- (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsx("span", { className: "shrink-0", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsx(
8190
+ (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsx("span", { className: "shrink-0 flex items-center", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsx(
8036
8191
  STooltip2,
8037
8192
  {
8038
8193
  message: labelTooltip !== "" ? [labelTooltip] : void 0,
@@ -12277,7 +12432,7 @@ var SChipInput = /* @__PURE__ */ forwardRef(function SChipInput2({
12277
12432
  "span",
12278
12433
  {
12279
12434
  className: "s-chip-input__divider shrink-0",
12280
- style: { width: 1, height: 12, backgroundColor: "#E1E1E1" }
12435
+ style: { width: 1, height: 12, backgroundColor: "var(--color-divider-default)" }
12281
12436
  }
12282
12437
  ),
12283
12438
  showMaxCount && /* @__PURE__ */ jsxs(
@@ -12339,7 +12494,7 @@ var SChipInput = /* @__PURE__ */ forwardRef(function SChipInput2({
12339
12494
  role: "option",
12340
12495
  "aria-selected": selected || active,
12341
12496
  className: "rounded-full",
12342
- style: active ? { outline: "2px solid #0075FF", outlineOffset: 1 } : void 0,
12497
+ style: active ? { outline: "2px solid var(--color-border-accent)", outlineOffset: 1 } : void 0,
12343
12498
  onMouseDown: (e) => {
12344
12499
  e.preventDefault();
12345
12500
  if (!selected) addChip(item);
@@ -13435,6 +13590,6 @@ function STimeRangePicker({
13435
13590
  );
13436
13591
  }
13437
13592
 
13438
- export { BADGE_COLORS, BUTTON_COLORS, BUTTON_SIZES, COLOR_KEYS, GNB_COLORS, GNB_COMMON, GNB_FOLD_MS, 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 };
13593
+ 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 };
13439
13594
  //# sourceMappingURL=index.js.map
13440
13595
  //# sourceMappingURL=index.js.map