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/AGENTS.md +41 -6
- package/README.md +19 -3
- package/dist/components/SButton/README.md +2 -0
- package/dist/components/SDrawer/README.md +42 -0
- package/dist/components/SDrawer/SDrawer.d.ts +39 -0
- package/dist/components/SDrawer/index.d.ts +1 -0
- package/dist/components/SGhostButton/README.md +2 -0
- package/dist/components/SGnb/README.md +2 -1
- package/dist/components/SGnb/SGnb.d.ts +7 -1
- package/dist/components/SGnb/gnb.config.d.ts +23 -0
- package/dist/components/SGnb/index.d.ts +1 -1
- package/dist/index.cjs +254 -97
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +253 -98
- package/dist/index.js.map +1 -1
- package/dist/llms-full.txt +83 -7
- package/dist/llms.txt +43 -8
- package/dist/styles.css +97 -9
- package/dist/theme.css +7 -0
- package/eslint/rules/no-off-scale-spacing.mjs +114 -35
- package/package.json +3 -1
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
|
-
//
|
|
3649
|
-
bordered
|
|
3650
|
-
bordered &&
|
|
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
|
-
//
|
|
7324
|
-
//
|
|
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:
|
|
7334
|
-
|
|
7335
|
-
|
|
7336
|
-
|
|
7337
|
-
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7342
|
-
|
|
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: "
|
|
7911
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "5", width: "3.3", height: "1", fill: "
|
|
7912
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11.7", width: "3.3", height: "1", fill: "
|
|
7913
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "18.4", width: "1.6", height: "1", fill: "
|
|
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: "
|
|
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
|
|
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;
|