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.cjs CHANGED
@@ -3645,9 +3645,10 @@ var SExpansionItem = /* @__PURE__ */ react.forwardRef(
3645
3645
  className: cn(
3646
3646
  "group/expansion-item relative overflow-hidden bg-(--cmp-listExpansionItem-title-bg-default)",
3647
3647
  !bordered && "border-b border-(--cmp-listExpansionItem-border-default)",
3648
- // TODO: expansionItem/bordered/radius border intent 토큰 생성 고정값을 토큰으로 교체한다.
3649
- bordered && "rounded-[8px] border border-[#E1E1E1] hover:border-[#AAAAAA] [&:has(>button:hover)]:border-[#AAAAAA]",
3650
- bordered && isExpanded && "!border-[#93C4FF]",
3648
+ // 보더 색은 시맨틱 토큰(border-default hover strong 펼침 accentLight)을 쓴다.
3649
+ // TODO: expansionItem/bordered/radius 토큰 생성 후 rounded 고정값도 토큰으로 교체한다.
3650
+ bordered && "rounded-[8px] border border-border-default hover:border-border-strong [&:has(>button:hover)]:border-border-strong",
3651
+ bordered && isExpanded && "!border-border-accentLight",
3651
3652
  className
3652
3653
  ),
3653
3654
  ...rest,
@@ -6599,6 +6600,170 @@ function SLoadingModal({
6599
6600
  }
6600
6601
  );
6601
6602
  }
6603
+ var CLOSE_ANIMATION_DURATION2 = 300;
6604
+ function SDrawer({
6605
+ open,
6606
+ onOpenChange,
6607
+ onClose,
6608
+ persistent = false,
6609
+ title = "",
6610
+ width = 572,
6611
+ footerLeft,
6612
+ button,
6613
+ children,
6614
+ className,
6615
+ style
6616
+ }) {
6617
+ const [shaking, setShaking] = react.useState(false);
6618
+ const [rendered, setRendered] = react.useState(() => Boolean(open));
6619
+ const [entered, setEntered] = react.useState(false);
6620
+ const [portalContainer, setPortalContainer] = react.useState(null);
6621
+ const backdropPointerDownRef = react.useRef(false);
6622
+ const contentRef = react.useRef(null);
6623
+ const stackRegistrationRef = react.useRef(null);
6624
+ const [layerIndex, setLayerIndex] = react.useState(null);
6625
+ react.useEffect(() => {
6626
+ if (open) {
6627
+ setRendered(true);
6628
+ return;
6629
+ }
6630
+ if (!rendered) return;
6631
+ const timer = window.setTimeout(() => setRendered(false), CLOSE_ANIMATION_DURATION2);
6632
+ return () => window.clearTimeout(timer);
6633
+ }, [open, rendered]);
6634
+ react.useEffect(() => {
6635
+ if (!open) {
6636
+ setEntered(false);
6637
+ return;
6638
+ }
6639
+ setEntered(false);
6640
+ const frame = requestAnimationFrame(() => setEntered(true));
6641
+ return () => cancelAnimationFrame(frame);
6642
+ }, [open]);
6643
+ react.useEffect(() => {
6644
+ if (!open) return;
6645
+ const registration = registerModalStackEntry();
6646
+ stackRegistrationRef.current = registration;
6647
+ setLayerIndex(registration.layerIndex);
6648
+ return () => {
6649
+ registration.unregister();
6650
+ if (stackRegistrationRef.current === registration) stackRegistrationRef.current = null;
6651
+ };
6652
+ }, [open]);
6653
+ const triggerShake = react.useCallback(() => {
6654
+ setShaking(false);
6655
+ requestAnimationFrame(() => setShaking(true));
6656
+ }, []);
6657
+ const guardClose = persistent ? (event) => {
6658
+ event.preventDefault();
6659
+ if (stackRegistrationRef.current?.isTop()) triggerShake();
6660
+ } : void 0;
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__ */ jsxRuntime.jsx(RDialog__namespace.Root, { open, onOpenChange, children: /* @__PURE__ */ jsxRuntime.jsx(RDialog__namespace.Portal, { container: modalHost, forceMount: rendered ? true : void 0, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none absolute inset-0", style: { zIndex: layerIndex ?? 0 }, children: [
6670
+ /* @__PURE__ */ jsxRuntime.jsx(
6671
+ RDialog__namespace.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__ */ jsxRuntime.jsxs(
6693
+ RDialog__namespace.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: guardClose,
6704
+ onInteractOutside: guardClose,
6705
+ children: [
6706
+ /* @__PURE__ */ jsxRuntime.jsx(RDialog__namespace.Title, { className: "sr-only", children: title || "Drawer" }),
6707
+ /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.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__ */ jsxRuntime.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__ */ jsxRuntime.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__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1 overflow-auto border-t border-solid border-[color:var(--cmp-drawer-body-border)]", children: /* @__PURE__ */ jsxRuntime.jsx(InsideModalProvider, { value: true, children: /* @__PURE__ */ jsxRuntime.jsx(PortalContainerProvider, { value: portalContainer, children }) }) }),
6737
+ (button || footerLeft) && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx("div", { className: "flex min-w-0 flex-1 items-center justify-between", children: footerLeft }),
6739
+ button && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.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
+ }
6602
6767
  var EXIT_DURATION = 300;
6603
6768
  var EXIT_BUFFER = 100;
6604
6769
  var SModalRefImpl = class {
@@ -6961,6 +7126,10 @@ var GNB_RAIL_WIDTH = 68;
6961
7126
  var GNB_FOLD_MS = 200;
6962
7127
  var GNB_EXPAND_MS = 200;
6963
7128
  var GNB_MENU_WIDTH = 240;
7129
+ var GNB_FULL_LOGO_WIDTH = 140;
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;
6964
7133
  function findGnbRailValue(items, value) {
6965
7134
  if (items.some((item) => item.value === value)) return value;
6966
7135
  return findGnbAncestors(items, value)[0];
@@ -7065,6 +7234,7 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
7065
7234
  onFoldChange,
7066
7235
  onLauncherClick,
7067
7236
  logo,
7237
+ topContent,
7068
7238
  railFooter,
7069
7239
  menuFooter,
7070
7240
  foldedFooter,
@@ -7296,13 +7466,71 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
7296
7466
  ...style
7297
7467
  };
7298
7468
  const hideAfterSlide = (hidden) => `visibility 0s linear ${hidden ? `${GNB_FOLD_MS}ms` : "0s"}`;
7299
- const foldInline = !!logo;
7300
7469
  const sideFoldStyle = {
7301
7470
  opacity: railFolded ? 0 : 1,
7302
7471
  position: railFolded ? "absolute" : "static",
7303
7472
  visibility: railFolded ? "hidden" : "visible",
7304
7473
  transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(railFolded)}`
7305
7474
  };
7475
+ const launcherButton = onLauncherClick ? /* @__PURE__ */ jsxRuntime.jsx(
7476
+ SGhostButton,
7477
+ {
7478
+ icon: "launcher",
7479
+ size: "xs",
7480
+ intent: color === "dark" ? "inverse" : "default",
7481
+ ariaLabel: "app launcher",
7482
+ onClick: onLauncherClick,
7483
+ className: "shrink-0",
7484
+ style: { ...sideFoldStyle, marginRight: header === "fix" ? H.topGap : GNB_TOP_ICON_GAP }
7485
+ },
7486
+ "launcher"
7487
+ ) : null;
7488
+ const foldButton = /* @__PURE__ */ jsxRuntime.jsx(
7489
+ SGhostButton,
7490
+ {
7491
+ icon: "sidebar",
7492
+ size: "xs",
7493
+ intent: color === "dark" ? "inverse" : "default",
7494
+ ariaLabel: "toggle navigation",
7495
+ ariaPressed: folded,
7496
+ onClick: handleFoldToggle,
7497
+ className: cn("shrink-0", header === "fix" && "ml-auto")
7498
+ },
7499
+ "fold"
7500
+ );
7501
+ const logoBox = logo ? /* @__PURE__ */ jsxRuntime.jsx(
7502
+ "div",
7503
+ {
7504
+ className: "flex shrink-0 items-center",
7505
+ style: {
7506
+ height: H.logoHeight,
7507
+ ...header === "full" ? (
7508
+ // full 은 전폭이라 로고 자리가 고정이다 — 폭 140px(디자인 스펙, 전용 토큰 없음)로 못 박아
7509
+ // 로고 내용이 바뀌어도 오른쪽 topContent 시작점이 흔들리지 않게 한다.
7510
+ // 런처가 없으면 그 자리(버튼 + 간격)를 로고가 이어받아, 런처 유무로 topContent 가 밀리지 않는다.
7511
+ {
7512
+ width: launcherButton ? GNB_FULL_LOGO_WIDTH : GNB_FULL_LOGO_WIDTH_NO_LAUNCHER,
7513
+ marginLeft: H.topGap
7514
+ }
7515
+ ) : (
7516
+ // fix 는 폴드가 ml-auto 로 밀려나므로(margin-left 를 못 쓴다) 로고 오른쪽에 최소 간격을 둔다
7517
+ { marginRight: H.topGap }
7518
+ ),
7519
+ ...sideFoldStyle
7520
+ },
7521
+ children: logo
7522
+ },
7523
+ "logo"
7524
+ ) : null;
7525
+ const topContentBox = header === "full" && topContent ? /* @__PURE__ */ jsxRuntime.jsx(
7526
+ "div",
7527
+ {
7528
+ className: "flex min-w-0 flex-1 items-center",
7529
+ style: { marginLeft: H.topGap },
7530
+ children: topContent
7531
+ },
7532
+ "topContent"
7533
+ ) : null;
7306
7534
  return /* @__PURE__ */ jsxRuntime.jsxs(
7307
7535
  "div",
7308
7536
  {
@@ -7320,8 +7548,9 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
7320
7548
  className: "relative box-border flex shrink-0 items-center overflow-hidden",
7321
7549
  style: {
7322
7550
  height: H.topHeight,
7323
- // 인라인 간격은 컨테이너 gap 대신 각 요소 margin 으로 준다 — 런처↔폴드(8px)와
7324
- // 폴드↔로고(top-gap)를 다르게 두기 위함. 접히면 런처·로고가 흐름에서 빠져 margin 도 무의미해진다.
7551
+ // 간격은 컨테이너 gap 대신 각 요소 margin 으로 준다 — 순서가 header 마다 달라
7552
+ // 이웃 쌍마다 값이 다르기 때문(위 launcherButton/logoBox 주석).
7553
+ // 접히면 런처·로고가 흐름에서 빠져 margin 도 무의미해진다.
7325
7554
  padding: `0 ${railFolded ? GNB_RAIL.padding : H.topPaddingX}`,
7326
7555
  borderBottom: `1px solid ${C.topBorder}`,
7327
7556
  backgroundColor: C.panelBg,
@@ -7330,90 +7559,16 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
7330
7559
  // 아이콘 버튼은 자체 ghostButton 토큰을 쓰므로, 이 색은 logo 슬롯 상속용
7331
7560
  color: C.itemColorDefault
7332
7561
  },
7333
- children: foldInline ? (
7334
- // 런처(있을 때)·폴드·로고를 흐름에 나란히 둔다 → 폴드 버튼이 (런처와) 로고 사이에 선다.
7335
- // 접히면 런처·로고가 페이드하며 흐름에서 빠지고(sideFoldStyle), 폴드 버튼만 남아 레일 가운데에 선다.
7336
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7337
- onLauncherClick && /* @__PURE__ */ jsxRuntime.jsx(
7338
- SGhostButton,
7339
- {
7340
- icon: "launcher",
7341
- size: "xs",
7342
- intent: color === "dark" ? "inverse" : "default",
7343
- ariaLabel: "app launcher",
7344
- onClick: onLauncherClick,
7345
- className: "shrink-0",
7346
- style: { ...sideFoldStyle, marginRight: "8px" }
7347
- }
7348
- ),
7349
- /* @__PURE__ */ jsxRuntime.jsx(
7350
- SGhostButton,
7351
- {
7352
- icon: "sidebar",
7353
- size: "xs",
7354
- intent: color === "dark" ? "inverse" : "default",
7355
- ariaLabel: "toggle navigation",
7356
- ariaPressed: folded,
7357
- onClick: handleFoldToggle,
7358
- className: "shrink-0"
7359
- }
7360
- ),
7361
- /* @__PURE__ */ jsxRuntime.jsx(
7362
- "div",
7363
- {
7364
- className: "flex shrink-0 items-center",
7365
- style: { height: H.logoHeight, marginLeft: H.topGap, ...sideFoldStyle },
7366
- children: logo
7367
- }
7368
- )
7369
- ] })
7370
- ) : (
7371
- // 런처·로고는 좌측 그룹(흐름에서 빼 폭 축소 중 폴드 버튼을 밀어내지 않는다),
7372
- // 폴드 버튼은 우측 끝(ml-auto)이라 폭·패딩이 줄면 저절로 레일 가운데에 선다.
7373
- /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7374
- (onLauncherClick || logo) && /* @__PURE__ */ jsxRuntime.jsxs(
7375
- "div",
7376
- {
7377
- className: "absolute inset-y-0 flex items-center",
7378
- style: {
7379
- left: H.topPaddingX,
7380
- gap: H.topGap,
7381
- opacity: railFolded ? 0 : 1,
7382
- transition: `opacity ${GNB_FOLD_MS}ms ease-out, ${hideAfterSlide(railFolded)}, transform ${GNB_FOLD_MS}ms ease-out`,
7383
- // 메뉴와 같은 방향으로 빠지되, 좁은 레일 안에서 꼬리가 비치지 않게 페이드가 거리를 대신한다
7384
- transform: railFolded ? `translateX(-${H.topPaddingX})` : "none",
7385
- visibility: railFolded ? "hidden" : "visible"
7386
- },
7387
- children: [
7388
- onLauncherClick && /* @__PURE__ */ jsxRuntime.jsx(
7389
- SGhostButton,
7390
- {
7391
- icon: "launcher",
7392
- size: "xs",
7393
- intent: color === "dark" ? "inverse" : "default",
7394
- ariaLabel: "app launcher",
7395
- onClick: onLauncherClick,
7396
- className: "shrink-0"
7397
- }
7398
- ),
7399
- logo && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center", style: { height: H.logoHeight }, children: logo })
7400
- ]
7401
- }
7402
- ),
7403
- /* @__PURE__ */ jsxRuntime.jsx(
7404
- SGhostButton,
7405
- {
7406
- icon: "sidebar",
7407
- size: "xs",
7408
- intent: color === "dark" ? "inverse" : "default",
7409
- ariaLabel: "toggle navigation",
7410
- ariaPressed: folded,
7411
- onClick: handleFoldToggle,
7412
- className: "ml-auto shrink-0"
7413
- }
7414
- )
7415
- ] })
7416
- )
7562
+ children: header === "fix" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7563
+ launcherButton,
7564
+ logoBox,
7565
+ foldButton
7566
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
7567
+ launcherButton,
7568
+ foldButton,
7569
+ logoBox,
7570
+ topContentBox
7571
+ ] })
7417
7572
  }
7418
7573
  ),
7419
7574
  /* @__PURE__ */ jsxRuntime.jsxs(
@@ -7907,10 +8062,10 @@ function SStepper({
7907
8062
  fill: "none",
7908
8063
  xmlns: "http://www.w3.org/2000/svg",
7909
8064
  children: [
7910
- /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "1.6", height: "1", fill: "#888888" }),
7911
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "5", width: "3.3", height: "1", fill: "#888888" }),
7912
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "#888888" }),
7913
- /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "#888888" })
8065
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { width: "1.6", height: "1", fill: "currentColor" }),
8066
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "5", width: "3.3", height: "1", fill: "currentColor" }),
8067
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "currentColor" }),
8068
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "currentColor" })
7914
8069
  ]
7915
8070
  }
7916
8071
  )
@@ -8060,7 +8215,7 @@ var SField = /* @__PURE__ */ react.forwardRef(function SField2({
8060
8215
  }
8061
8216
  ),
8062
8217
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 overflow-hidden text-ellipsis whitespace-nowrap", children: label }),
8063
- (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsxRuntime.jsx(
8218
+ (labelTooltip !== "" || labelTooltipProps) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0 flex items-center", style: { marginLeft: s.labelGap }, children: /* @__PURE__ */ jsxRuntime.jsx(
8064
8219
  STooltip2,
8065
8220
  {
8066
8221
  message: labelTooltip !== "" ? [labelTooltip] : void 0,
@@ -12305,7 +12460,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
12305
12460
  "span",
12306
12461
  {
12307
12462
  className: "s-chip-input__divider shrink-0",
12308
- style: { width: 1, height: 12, backgroundColor: "#E1E1E1" }
12463
+ style: { width: 1, height: 12, backgroundColor: "var(--color-divider-default)" }
12309
12464
  }
12310
12465
  ),
12311
12466
  showMaxCount && /* @__PURE__ */ jsxRuntime.jsxs(
@@ -12367,7 +12522,7 @@ var SChipInput = /* @__PURE__ */ react.forwardRef(function SChipInput2({
12367
12522
  role: "option",
12368
12523
  "aria-selected": selected || active,
12369
12524
  className: "rounded-full",
12370
- style: active ? { outline: "2px solid #0075FF", outlineOffset: 1 } : void 0,
12525
+ style: active ? { outline: "2px solid var(--color-border-accent)", outlineOffset: 1 } : void 0,
12371
12526
  onMouseDown: (e) => {
12372
12527
  e.preventDefault();
12373
12528
  if (!selected) addChip(item);
@@ -13470,6 +13625,7 @@ exports.COLOR_KEYS = COLOR_KEYS;
13470
13625
  exports.GNB_COLORS = GNB_COLORS;
13471
13626
  exports.GNB_COMMON = GNB_COMMON;
13472
13627
  exports.GNB_FOLD_MS = GNB_FOLD_MS;
13628
+ exports.GNB_FULL_LOGO_WIDTH = GNB_FULL_LOGO_WIDTH;
13473
13629
  exports.GNB_HEADER = GNB_HEADER;
13474
13630
  exports.GNB_MENU = GNB_MENU;
13475
13631
  exports.GNB_MENU_WIDTH = GNB_MENU_WIDTH;
@@ -13497,6 +13653,7 @@ exports.SDraggableGroup = SDraggableGroup;
13497
13653
  exports.SDraggableItem = SDraggableItem2;
13498
13654
  exports.SDraggableList = SDraggableList;
13499
13655
  exports.SDraggableProvider = SDraggableProvider;
13656
+ exports.SDrawer = SDrawer;
13500
13657
  exports.SDropdownButton = SDropdownButton2;
13501
13658
  exports.SExpansionItem = SExpansionItem;
13502
13659
  exports.SExpansionList = SExpansionList2;