sellmate-design-system-react 9.0.0-beta.66 → 9.0.0-beta.68
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 +125 -9
- package/dist/components/SBarChart/barChart.config.d.ts +0 -8
- package/dist/components/SCalendarBoard/CalendarDayCard.d.ts +7 -0
- package/dist/components/SCalendarBoard/CalendarEventButton.d.ts +3 -1
- package/dist/components/SCalendarBoard/CalendarMoreButton.d.ts +5 -0
- package/dist/components/SCalendarBoard/README.md +1 -0
- package/dist/components/SCalendarBoard/SCalendarBoard.d.ts +13 -1
- package/dist/components/SCalendarBoard/calendar-board-layout.d.ts +11 -1
- package/dist/components/SCalendarBoard/calendarBoard.config.d.ts +5 -0
- package/dist/components/SCard/README.md +1 -0
- package/dist/components/SCard/SCard.d.ts +10 -1
- package/dist/components/SFooter/README.md +16 -2
- package/dist/components/SFooter/SFooter.d.ts +13 -3
- package/dist/components/SFooter/index.d.ts +1 -1
- package/dist/components/SImage/README.md +3 -0
- package/dist/components/SImage/SImage.d.ts +9 -6
- package/dist/components/SLoadingContainer/index.d.ts +1 -1
- package/dist/components/SLoadingContainer/loading.d.ts +34 -15
- package/dist/components/SSectionHeaderCard/README.md +1 -0
- package/dist/components/SSectionHeaderCard/SSectionHeaderCard.d.ts +10 -1
- package/dist/index.cjs +373 -158
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +374 -158
- package/dist/index.js.map +1 -1
- package/dist/lib/chart/hover-dim.d.ts +19 -0
- package/dist/lib/hover-preview.d.ts +32 -0
- package/dist/llms-full.txt +147 -11
- package/dist/llms.txt +125 -9
- package/dist/styles.css +3 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -5,7 +5,7 @@ var clsx = require('clsx');
|
|
|
5
5
|
var tailwindMerge = require('tailwind-merge');
|
|
6
6
|
var react = require('react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
var
|
|
8
|
+
var RPopover13 = require('@radix-ui/react-popover');
|
|
9
9
|
var reactDom = require('react-dom');
|
|
10
10
|
var RCheckbox = require('@radix-ui/react-checkbox');
|
|
11
11
|
var client = require('react-dom/client');
|
|
@@ -33,7 +33,7 @@ function _interopNamespace(e) {
|
|
|
33
33
|
return Object.freeze(n);
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
var
|
|
36
|
+
var RPopover13__namespace = /*#__PURE__*/_interopNamespace(RPopover13);
|
|
37
37
|
var RCheckbox__namespace = /*#__PURE__*/_interopNamespace(RCheckbox);
|
|
38
38
|
var RTooltip__namespace = /*#__PURE__*/_interopNamespace(RTooltip);
|
|
39
39
|
var RDropdown5__namespace = /*#__PURE__*/_interopNamespace(RDropdown5);
|
|
@@ -3735,6 +3735,57 @@ var SIcon = /* @__PURE__ */ react.forwardRef(function SIcon2({ name, size = 24,
|
|
|
3735
3735
|
}
|
|
3736
3736
|
);
|
|
3737
3737
|
});
|
|
3738
|
+
|
|
3739
|
+
// src/lib/display-name.ts
|
|
3740
|
+
function withDisplayName(component, name) {
|
|
3741
|
+
component.displayName = name;
|
|
3742
|
+
return component;
|
|
3743
|
+
}
|
|
3744
|
+
|
|
3745
|
+
// src/lib/floating-anim.ts
|
|
3746
|
+
var FLOATING_SLIDE_ANIM = [
|
|
3747
|
+
"data-[state=open]:data-[side=top]:animate-floating-in-top",
|
|
3748
|
+
"data-[state=delayed-open]:data-[side=top]:animate-floating-in-top",
|
|
3749
|
+
"data-[state=instant-open]:data-[side=top]:animate-floating-in-top",
|
|
3750
|
+
"data-[state=closed]:data-[side=top]:animate-floating-out-top",
|
|
3751
|
+
"data-[state=open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3752
|
+
"data-[state=delayed-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3753
|
+
"data-[state=instant-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
3754
|
+
"data-[state=closed]:data-[side=bottom]:animate-floating-out-bottom",
|
|
3755
|
+
"data-[state=open]:data-[side=left]:animate-floating-in-left",
|
|
3756
|
+
"data-[state=delayed-open]:data-[side=left]:animate-floating-in-left",
|
|
3757
|
+
"data-[state=instant-open]:data-[side=left]:animate-floating-in-left",
|
|
3758
|
+
"data-[state=closed]:data-[side=left]:animate-floating-out-left",
|
|
3759
|
+
"data-[state=open]:data-[side=right]:animate-floating-in-right",
|
|
3760
|
+
"data-[state=delayed-open]:data-[side=right]:animate-floating-in-right",
|
|
3761
|
+
"data-[state=instant-open]:data-[side=right]:animate-floating-in-right",
|
|
3762
|
+
"data-[state=closed]:data-[side=right]:animate-floating-out-right"
|
|
3763
|
+
].join(" ");
|
|
3764
|
+
|
|
3765
|
+
// src/lib/hover-preview.ts
|
|
3766
|
+
function hoverPreviewOrigin({
|
|
3767
|
+
anchor,
|
|
3768
|
+
size,
|
|
3769
|
+
viewportWidth,
|
|
3770
|
+
viewportHeight,
|
|
3771
|
+
padding = 8
|
|
3772
|
+
}) {
|
|
3773
|
+
const startX = anchor.left + anchor.width / 2;
|
|
3774
|
+
const startY = anchor.top + anchor.height / 2;
|
|
3775
|
+
const x = Math.max(padding, Math.min(startX, viewportWidth - size - padding));
|
|
3776
|
+
const y = Math.max(padding, Math.min(startY, viewportHeight - size - padding));
|
|
3777
|
+
return { x, y };
|
|
3778
|
+
}
|
|
3779
|
+
var PortalContainerContext = /* @__PURE__ */ react.createContext(null);
|
|
3780
|
+
var InsideModalContext = /* @__PURE__ */ react.createContext(false);
|
|
3781
|
+
var PortalContainerProvider = PortalContainerContext.Provider;
|
|
3782
|
+
var InsideModalProvider = InsideModalContext.Provider;
|
|
3783
|
+
function usePortalContainer() {
|
|
3784
|
+
return react.useContext(PortalContainerContext) ?? void 0;
|
|
3785
|
+
}
|
|
3786
|
+
function useInsideModal() {
|
|
3787
|
+
return react.useContext(InsideModalContext);
|
|
3788
|
+
}
|
|
3738
3789
|
var VIEWBOX = 80;
|
|
3739
3790
|
var RADIUS = 34;
|
|
3740
3791
|
var STROKE = 12;
|
|
@@ -3852,7 +3903,10 @@ var SCircleProgress = /* @__PURE__ */ react.forwardRef(
|
|
|
3852
3903
|
var IMAGE_FITS = ["cover", "contain", "fill", "none", "scale-down"];
|
|
3853
3904
|
var EMPTY_ICON_SIZE = "60cqh";
|
|
3854
3905
|
var SPINNER_SIZE = "45cqh";
|
|
3855
|
-
var
|
|
3906
|
+
var PREVIEW_HIDE_DELAY_MS = 100;
|
|
3907
|
+
var PREVIEW_MAX_SIZE = 200;
|
|
3908
|
+
var PREVIEW_VIEWPORT_PADDING = 8;
|
|
3909
|
+
var SImageImpl = /* @__PURE__ */ react.forwardRef(function SImageImpl2({
|
|
3856
3910
|
src,
|
|
3857
3911
|
alt = "",
|
|
3858
3912
|
ratio = 1,
|
|
@@ -3864,6 +3918,9 @@ var SImage = /* @__PURE__ */ react.forwardRef(function SImage2({
|
|
|
3864
3918
|
loadingSlot,
|
|
3865
3919
|
errorSlot,
|
|
3866
3920
|
imgProps,
|
|
3921
|
+
previewOnHover = false,
|
|
3922
|
+
previewSrc,
|
|
3923
|
+
previewSize = PREVIEW_MAX_SIZE,
|
|
3867
3924
|
onLoad,
|
|
3868
3925
|
onError,
|
|
3869
3926
|
className,
|
|
@@ -3894,16 +3951,94 @@ var SImage = /* @__PURE__ */ react.forwardRef(function SImage2({
|
|
|
3894
3951
|
const timer = setTimeout(() => setSpinnerVisible(true), loadingShowDelay);
|
|
3895
3952
|
return () => clearTimeout(timer);
|
|
3896
3953
|
}, [status, loadingShowDelay, src]);
|
|
3954
|
+
const portalContainer = usePortalContainer();
|
|
3955
|
+
const [previewOpen, setPreviewOpen] = react.useState(false);
|
|
3956
|
+
const previewHideTimer = react.useRef(void 0);
|
|
3957
|
+
const boxRef = react.useRef(null);
|
|
3958
|
+
const previewSource = previewSrc ?? src;
|
|
3959
|
+
const previewEnabled = previewOnHover && !!previewSource;
|
|
3960
|
+
const previewBoxSize = Math.min(previewSize, PREVIEW_MAX_SIZE);
|
|
3961
|
+
const previewBoxSizeRef = react.useRef(previewBoxSize);
|
|
3962
|
+
previewBoxSizeRef.current = previewBoxSize;
|
|
3963
|
+
const previewAnchorRef = react.useRef(null);
|
|
3964
|
+
if (previewAnchorRef.current == null) {
|
|
3965
|
+
previewAnchorRef.current = {
|
|
3966
|
+
getBoundingClientRect: () => {
|
|
3967
|
+
const anchor = boxRef.current?.getBoundingClientRect();
|
|
3968
|
+
if (!anchor) return new DOMRect(0, 0, 0, 0);
|
|
3969
|
+
const { x, y } = hoverPreviewOrigin({
|
|
3970
|
+
anchor,
|
|
3971
|
+
size: previewBoxSizeRef.current,
|
|
3972
|
+
viewportWidth: window.innerWidth,
|
|
3973
|
+
viewportHeight: window.innerHeight,
|
|
3974
|
+
padding: PREVIEW_VIEWPORT_PADDING
|
|
3975
|
+
});
|
|
3976
|
+
return new DOMRect(x, y, 0, 0);
|
|
3977
|
+
},
|
|
3978
|
+
// autoUpdate 가 스크롤 조상을 찾는 기준 — 없으면 표 안에서 스크롤할 때 위치가 굳는다
|
|
3979
|
+
get contextElement() {
|
|
3980
|
+
return boxRef.current ?? void 0;
|
|
3981
|
+
}
|
|
3982
|
+
};
|
|
3983
|
+
}
|
|
3984
|
+
const cancelPreviewHide = react.useCallback(() => {
|
|
3985
|
+
if (previewHideTimer.current) {
|
|
3986
|
+
clearTimeout(previewHideTimer.current);
|
|
3987
|
+
previewHideTimer.current = void 0;
|
|
3988
|
+
}
|
|
3989
|
+
}, []);
|
|
3990
|
+
const openPreview = () => {
|
|
3991
|
+
cancelPreviewHide();
|
|
3992
|
+
setPreviewOpen(true);
|
|
3993
|
+
};
|
|
3994
|
+
const startPreviewHide = () => {
|
|
3995
|
+
cancelPreviewHide();
|
|
3996
|
+
previewHideTimer.current = setTimeout(() => setPreviewOpen(false), PREVIEW_HIDE_DELAY_MS);
|
|
3997
|
+
};
|
|
3998
|
+
react.useEffect(() => {
|
|
3999
|
+
if (!previewEnabled) {
|
|
4000
|
+
cancelPreviewHide();
|
|
4001
|
+
setPreviewOpen(false);
|
|
4002
|
+
}
|
|
4003
|
+
}, [previewEnabled, cancelPreviewHide]);
|
|
4004
|
+
react.useEffect(() => cancelPreviewHide, [cancelPreviewHide]);
|
|
4005
|
+
const previewContentRef = react.useCallback((node) => {
|
|
4006
|
+
node?.parentElement?.style.setProperty("pointer-events", "none");
|
|
4007
|
+
}, []);
|
|
4008
|
+
const previewHandlers = previewEnabled ? {
|
|
4009
|
+
onMouseEnter: (event) => {
|
|
4010
|
+
rest.onMouseEnter?.(event);
|
|
4011
|
+
openPreview();
|
|
4012
|
+
},
|
|
4013
|
+
onMouseLeave: (event) => {
|
|
4014
|
+
rest.onMouseLeave?.(event);
|
|
4015
|
+
startPreviewHide();
|
|
4016
|
+
},
|
|
4017
|
+
// 소비자가 tabIndex 를 준 썸네일에서는 키보드로도 열린다
|
|
4018
|
+
onFocus: (event) => {
|
|
4019
|
+
rest.onFocus?.(event);
|
|
4020
|
+
openPreview();
|
|
4021
|
+
},
|
|
4022
|
+
onBlur: (event) => {
|
|
4023
|
+
rest.onBlur?.(event);
|
|
4024
|
+
startPreviewHide();
|
|
4025
|
+
}
|
|
4026
|
+
} : void 0;
|
|
3897
4027
|
const isEmpty = !src;
|
|
3898
4028
|
const showFallback = isEmpty || status === "error";
|
|
3899
4029
|
const spinnerShown = !isEmpty && status === "loading" && showSpinner && spinnerVisible;
|
|
3900
|
-
|
|
4030
|
+
const box3 = /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3901
4031
|
"div",
|
|
3902
4032
|
{
|
|
3903
|
-
ref
|
|
4033
|
+
ref: (node) => {
|
|
4034
|
+
boxRef.current = node;
|
|
4035
|
+
if (typeof ref === "function") ref(node);
|
|
4036
|
+
else if (ref) ref.current = node;
|
|
4037
|
+
},
|
|
3904
4038
|
className: cn("relative overflow-hidden bg-(--cmp-image-bg)", className),
|
|
3905
4039
|
style: { containerType: "size", aspectRatio: ratio, ...style },
|
|
3906
4040
|
...rest,
|
|
4041
|
+
...previewHandlers,
|
|
3907
4042
|
children: [
|
|
3908
4043
|
!isEmpty && /* @__PURE__ */ jsxRuntime.jsx(
|
|
3909
4044
|
"img",
|
|
@@ -3939,7 +4074,47 @@ var SImage = /* @__PURE__ */ react.forwardRef(function SImage2({
|
|
|
3939
4074
|
]
|
|
3940
4075
|
}
|
|
3941
4076
|
);
|
|
4077
|
+
if (!previewEnabled) return box3;
|
|
4078
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: previewOpen, onOpenChange: setPreviewOpen, children: [
|
|
4079
|
+
box3,
|
|
4080
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { virtualRef: previewAnchorRef }),
|
|
4081
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4082
|
+
RPopover13__namespace.Content,
|
|
4083
|
+
{
|
|
4084
|
+
ref: previewContentRef,
|
|
4085
|
+
side: "bottom",
|
|
4086
|
+
align: "start",
|
|
4087
|
+
sideOffset: 0,
|
|
4088
|
+
alignOffset: 0,
|
|
4089
|
+
avoidCollisions: false,
|
|
4090
|
+
role: "presentation",
|
|
4091
|
+
"aria-hidden": true,
|
|
4092
|
+
className: cn(
|
|
4093
|
+
"z-50 overflow-hidden rounded-[6px] shadow-normal-sm",
|
|
4094
|
+
// 읽기 전용이라 호버 브릿지를 두지 않는다. 그 대신 마우스를 통과시켜,
|
|
4095
|
+
// 목록 위로 뜬 미리보기가 아래 행의 클릭을 가로채지 않게 한다.
|
|
4096
|
+
// (래퍼 쪽은 previewContentRef 가 함께 끈다 — 둘 다 꺼야 깜빡이지 않는다)
|
|
4097
|
+
"pointer-events-none",
|
|
4098
|
+
FLOATING_SLIDE_ANIM
|
|
4099
|
+
),
|
|
4100
|
+
onOpenAutoFocus: (event) => event.preventDefault(),
|
|
4101
|
+
onCloseAutoFocus: (event) => event.preventDefault(),
|
|
4102
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4103
|
+
SImage,
|
|
4104
|
+
{
|
|
4105
|
+
src: previewSource,
|
|
4106
|
+
alt: "",
|
|
4107
|
+
ratio: 1,
|
|
4108
|
+
fit: "contain",
|
|
4109
|
+
loading: "eager",
|
|
4110
|
+
style: { width: previewBoxSize }
|
|
4111
|
+
}
|
|
4112
|
+
)
|
|
4113
|
+
}
|
|
4114
|
+
) })
|
|
4115
|
+
] });
|
|
3942
4116
|
});
|
|
4117
|
+
var SImage = /* @__PURE__ */ withDisplayName(SImageImpl, "SImage");
|
|
3943
4118
|
var BADGE_COLORS = [
|
|
3944
4119
|
"red",
|
|
3945
4120
|
"orange",
|
|
@@ -4135,6 +4310,7 @@ var SButton = /* @__PURE__ */ react.forwardRef(function SButton2({
|
|
|
4135
4310
|
});
|
|
4136
4311
|
function SFooter({
|
|
4137
4312
|
bg = "white",
|
|
4313
|
+
size = "md",
|
|
4138
4314
|
left,
|
|
4139
4315
|
button,
|
|
4140
4316
|
children,
|
|
@@ -4171,7 +4347,7 @@ function SFooter({
|
|
|
4171
4347
|
SButton,
|
|
4172
4348
|
{
|
|
4173
4349
|
...button,
|
|
4174
|
-
size
|
|
4350
|
+
size,
|
|
4175
4351
|
color: button.color ?? "primary",
|
|
4176
4352
|
label: button.label ?? "\uD655\uC778"
|
|
4177
4353
|
}
|
|
@@ -4180,7 +4356,16 @@ function SFooter({
|
|
|
4180
4356
|
}
|
|
4181
4357
|
);
|
|
4182
4358
|
}
|
|
4183
|
-
var SCard = /* @__PURE__ */ react.forwardRef(function SCard2({
|
|
4359
|
+
var SCard = /* @__PURE__ */ react.forwardRef(function SCard2({
|
|
4360
|
+
bordered = false,
|
|
4361
|
+
footerLeft,
|
|
4362
|
+
button,
|
|
4363
|
+
footerSize = "md",
|
|
4364
|
+
footerClassName,
|
|
4365
|
+
className,
|
|
4366
|
+
children,
|
|
4367
|
+
...rest
|
|
4368
|
+
}, ref) {
|
|
4184
4369
|
const hasFooter = footerLeft != null || button != null;
|
|
4185
4370
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4186
4371
|
"div",
|
|
@@ -4198,6 +4383,7 @@ var SCard = /* @__PURE__ */ react.forwardRef(function SCard2({ bordered = false,
|
|
|
4198
4383
|
SFooter,
|
|
4199
4384
|
{
|
|
4200
4385
|
bg: "grey",
|
|
4386
|
+
size: footerSize,
|
|
4201
4387
|
left: footerLeft,
|
|
4202
4388
|
button,
|
|
4203
4389
|
className: cn("px-(--sys-space-panel-padding-default)", footerClassName)
|
|
@@ -4208,42 +4394,6 @@ var SCard = /* @__PURE__ */ react.forwardRef(function SCard2({ bordered = false,
|
|
|
4208
4394
|
);
|
|
4209
4395
|
});
|
|
4210
4396
|
|
|
4211
|
-
// src/lib/display-name.ts
|
|
4212
|
-
function withDisplayName(component, name) {
|
|
4213
|
-
component.displayName = name;
|
|
4214
|
-
return component;
|
|
4215
|
-
}
|
|
4216
|
-
|
|
4217
|
-
// src/lib/floating-anim.ts
|
|
4218
|
-
var FLOATING_SLIDE_ANIM = [
|
|
4219
|
-
"data-[state=open]:data-[side=top]:animate-floating-in-top",
|
|
4220
|
-
"data-[state=delayed-open]:data-[side=top]:animate-floating-in-top",
|
|
4221
|
-
"data-[state=instant-open]:data-[side=top]:animate-floating-in-top",
|
|
4222
|
-
"data-[state=closed]:data-[side=top]:animate-floating-out-top",
|
|
4223
|
-
"data-[state=open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
4224
|
-
"data-[state=delayed-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
4225
|
-
"data-[state=instant-open]:data-[side=bottom]:animate-floating-in-bottom",
|
|
4226
|
-
"data-[state=closed]:data-[side=bottom]:animate-floating-out-bottom",
|
|
4227
|
-
"data-[state=open]:data-[side=left]:animate-floating-in-left",
|
|
4228
|
-
"data-[state=delayed-open]:data-[side=left]:animate-floating-in-left",
|
|
4229
|
-
"data-[state=instant-open]:data-[side=left]:animate-floating-in-left",
|
|
4230
|
-
"data-[state=closed]:data-[side=left]:animate-floating-out-left",
|
|
4231
|
-
"data-[state=open]:data-[side=right]:animate-floating-in-right",
|
|
4232
|
-
"data-[state=delayed-open]:data-[side=right]:animate-floating-in-right",
|
|
4233
|
-
"data-[state=instant-open]:data-[side=right]:animate-floating-in-right",
|
|
4234
|
-
"data-[state=closed]:data-[side=right]:animate-floating-out-right"
|
|
4235
|
-
].join(" ");
|
|
4236
|
-
var PortalContainerContext = /* @__PURE__ */ react.createContext(null);
|
|
4237
|
-
var InsideModalContext = /* @__PURE__ */ react.createContext(false);
|
|
4238
|
-
var PortalContainerProvider = PortalContainerContext.Provider;
|
|
4239
|
-
var InsideModalProvider = InsideModalContext.Provider;
|
|
4240
|
-
function usePortalContainer() {
|
|
4241
|
-
return react.useContext(PortalContainerContext) ?? void 0;
|
|
4242
|
-
}
|
|
4243
|
-
function useInsideModal() {
|
|
4244
|
-
return react.useContext(InsideModalContext);
|
|
4245
|
-
}
|
|
4246
|
-
|
|
4247
4397
|
// src/components/STag/tag.config.ts
|
|
4248
4398
|
var TAG_SHAPES = ["square", "pill"];
|
|
4249
4399
|
var TAG_SIZES = ["xs", "sm", "md"];
|
|
@@ -4431,8 +4581,8 @@ var SGhostButton = /* @__PURE__ */ react.forwardRef(function SGhostButton2({
|
|
|
4431
4581
|
}
|
|
4432
4582
|
);
|
|
4433
4583
|
if (!hasTooltip) return btn2;
|
|
4434
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4435
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4584
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: setOpen, children: [
|
|
4585
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4436
4586
|
"span",
|
|
4437
4587
|
{
|
|
4438
4588
|
className: cn("inline-flex", anchorClassName),
|
|
@@ -4444,8 +4594,8 @@ var SGhostButton = /* @__PURE__ */ react.forwardRef(function SGhostButton2({
|
|
|
4444
4594
|
children: btn2
|
|
4445
4595
|
}
|
|
4446
4596
|
) }),
|
|
4447
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4448
|
-
|
|
4597
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4598
|
+
RPopover13__namespace.Content,
|
|
4449
4599
|
{
|
|
4450
4600
|
side: "top",
|
|
4451
4601
|
sideOffset: 4,
|
|
@@ -4634,14 +4784,14 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4634
4784
|
...style,
|
|
4635
4785
|
...contentPropsStyle
|
|
4636
4786
|
};
|
|
4637
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4787
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: setOpenState, children: [
|
|
4638
4788
|
isNone ? (
|
|
4639
4789
|
// 트리거 없음: children 을 래퍼 없이 그대로 앵커로 쓴다 (소비자 레이아웃 보존).
|
|
4640
4790
|
// mouse/focus 핸들러가 없으므로 showClose 없이도 자동 닫힘이 발생하지 않는다.
|
|
4641
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4791
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { asChild: true, children: triggerNode })
|
|
4642
4792
|
) : isHover ? (
|
|
4643
4793
|
// hover: Anchor(위치 기준) + 직접 mouse 핸들러 — 클릭으로 토글되지 않도록 Trigger 미사용
|
|
4644
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4794
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4645
4795
|
"span",
|
|
4646
4796
|
{
|
|
4647
4797
|
className: "inline-flex",
|
|
@@ -4652,9 +4802,9 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4652
4802
|
children: triggerNode
|
|
4653
4803
|
}
|
|
4654
4804
|
) })
|
|
4655
|
-
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
4656
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4657
|
-
|
|
4805
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: triggerNode }),
|
|
4806
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4807
|
+
RPopover13__namespace.Content,
|
|
4658
4808
|
{
|
|
4659
4809
|
side: placement,
|
|
4660
4810
|
sideOffset,
|
|
@@ -4688,7 +4838,7 @@ var STooltipImpl = /* @__PURE__ */ react.forwardRef(function STooltip({
|
|
|
4688
4838
|
}
|
|
4689
4839
|
)
|
|
4690
4840
|
] }),
|
|
4691
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4841
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Arrow, { width: 16, height: 12, style: { fill: bg } })
|
|
4692
4842
|
]
|
|
4693
4843
|
}
|
|
4694
4844
|
) })
|
|
@@ -7521,6 +7671,7 @@ var SSectionHeaderCardRootImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
7521
7671
|
background,
|
|
7522
7672
|
footerLeft,
|
|
7523
7673
|
button,
|
|
7674
|
+
footerSize = "md",
|
|
7524
7675
|
footerClassName,
|
|
7525
7676
|
className,
|
|
7526
7677
|
children,
|
|
@@ -7557,6 +7708,7 @@ var SSectionHeaderCardRootImpl = /* @__PURE__ */ react.forwardRef(
|
|
|
7557
7708
|
SFooter,
|
|
7558
7709
|
{
|
|
7559
7710
|
bg: "grey",
|
|
7711
|
+
size: footerSize,
|
|
7560
7712
|
left: footerLeft,
|
|
7561
7713
|
button,
|
|
7562
7714
|
className: cn("px-(--cmp-sectionHeaderCard-header-paddingX)", footerClassName)
|
|
@@ -8337,12 +8489,18 @@ var release = (id) => {
|
|
|
8337
8489
|
entries = next;
|
|
8338
8490
|
sync();
|
|
8339
8491
|
};
|
|
8492
|
+
var updateEntry = (id, message) => {
|
|
8493
|
+
const index = entries.findIndex((e) => e.id === id);
|
|
8494
|
+
if (index === -1) return;
|
|
8495
|
+
entries = entries.map((e, i) => i === index ? { ...e, message } : e);
|
|
8496
|
+
sync();
|
|
8497
|
+
};
|
|
8340
8498
|
var subscribe = (cb) => {
|
|
8341
8499
|
listeners.add(cb);
|
|
8342
8500
|
return () => listeners.delete(cb);
|
|
8343
8501
|
};
|
|
8344
8502
|
var getSnapshot = () => state;
|
|
8345
|
-
function
|
|
8503
|
+
function LoadingViewport() {
|
|
8346
8504
|
const s = react.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
|
|
8347
8505
|
return /* @__PURE__ */ jsxRuntime.jsx(SLoadingContainer, { open: s.open, message: s.message });
|
|
8348
8506
|
}
|
|
@@ -8353,39 +8511,56 @@ function ensureMounted() {
|
|
|
8353
8511
|
const host = document.createElement("div");
|
|
8354
8512
|
host.setAttribute("data-sd-loading-root", "");
|
|
8355
8513
|
document.body.appendChild(host);
|
|
8356
|
-
client.createRoot(host).render(/* @__PURE__ */ jsxRuntime.jsx(
|
|
8514
|
+
client.createRoot(host).render(/* @__PURE__ */ jsxRuntime.jsx(LoadingViewport, {}));
|
|
8515
|
+
}
|
|
8516
|
+
function showEntry(options = {}) {
|
|
8517
|
+
ensureMounted();
|
|
8518
|
+
const id = ++seq;
|
|
8519
|
+
entries = [...entries, { id, message: options.message }];
|
|
8520
|
+
sync();
|
|
8521
|
+
let released = false;
|
|
8522
|
+
const handle = (() => {
|
|
8523
|
+
if (released) return;
|
|
8524
|
+
released = true;
|
|
8525
|
+
release(id);
|
|
8526
|
+
});
|
|
8527
|
+
handle.update = (next) => {
|
|
8528
|
+
if (released) return;
|
|
8529
|
+
updateEntry(id, next.message);
|
|
8530
|
+
};
|
|
8531
|
+
return handle;
|
|
8357
8532
|
}
|
|
8358
8533
|
var loading = {
|
|
8359
8534
|
/**
|
|
8360
8535
|
* 로딩 오버레이 표시. 겹쳐 부르면 그만큼 쌓이고 **마지막 하나가 걷힐 때** 닫힌다.
|
|
8361
|
-
* 반환값은 이 호출
|
|
8362
|
-
*
|
|
8536
|
+
* 반환값은 이 호출 하나를 걷고 갱신하는 핸들이다(두 번 걷어도 한 번만 걷힌다).
|
|
8537
|
+
*
|
|
8538
|
+
* **걷는 것은 `finally` 에 둔다.** 빠뜨리면 그 즉시 화면이 갇히고, 정상 경로에서는 아무
|
|
8539
|
+
* 표시가 없다.
|
|
8363
8540
|
*
|
|
8364
|
-
*
|
|
8365
|
-
*
|
|
8541
|
+
* ```ts
|
|
8542
|
+
* const done = loading.show({ message: '1/2 ...' });
|
|
8543
|
+
* try {
|
|
8544
|
+
* done.update({ message: '2/2 ...' }); // 이 호출의 메시지만 바뀐다
|
|
8545
|
+
* await api.submit(payload);
|
|
8546
|
+
* } finally {
|
|
8547
|
+
* done(); // 이 호출만 걷는다
|
|
8548
|
+
* }
|
|
8549
|
+
* ```
|
|
8550
|
+
*
|
|
8551
|
+
* ⚠️ **메시지를 바꾸려고 `show()` 를 다시 부르지 않는다.** 하나 더 쌓여 한 번 걷는 것으로는
|
|
8552
|
+
* 닫히지 않는다. 핸들의 `update()` 를 쓴다. (참조 카운트 이전에는 `show()` 를 다시 부르는
|
|
8553
|
+
* 것이 갱신이었다 — Quasar 도 같은 그룹에 다시 show 하면 갱신이다. 그 시절 관행대로 쓰인
|
|
8554
|
+
* 코드는 지금 오버레이를 하나 남긴다.)
|
|
8366
8555
|
*/
|
|
8367
8556
|
show(options = {}) {
|
|
8368
|
-
|
|
8369
|
-
const id = ++seq;
|
|
8370
|
-
entries = [...entries, { id, message: options.message }];
|
|
8371
|
-
sync();
|
|
8372
|
-
return () => release(id);
|
|
8373
|
-
},
|
|
8374
|
-
/** 표시 중인 메시지 갱신 — 쌓인 수는 그대로다 */
|
|
8375
|
-
update(options) {
|
|
8376
|
-
const top = entries[entries.length - 1];
|
|
8377
|
-
if (!top) return;
|
|
8378
|
-
entries = [...entries.slice(0, -1), { ...top, message: options.message }];
|
|
8379
|
-
sync();
|
|
8380
|
-
},
|
|
8381
|
-
/** 가장 나중의 show 하나를 걷는다. 남은 것이 없을 때만 오버레이가 닫힌다 */
|
|
8382
|
-
hide() {
|
|
8383
|
-
const top = entries[entries.length - 1];
|
|
8384
|
-
if (top) release(top.id);
|
|
8557
|
+
return showEntry(options);
|
|
8385
8558
|
},
|
|
8386
8559
|
/**
|
|
8387
|
-
* 쌓인 것을 모두 걷고 즉시 닫는다.
|
|
8388
|
-
*
|
|
8560
|
+
* 쌓인 것을 모두 걷고 즉시 닫는다. **원본(Quasar)의 인자 없는 `hide()` 가 이것이다.**
|
|
8561
|
+
* 화면 전환·에러 복구처럼 진행 중이던 작업의 짝을 더는 맞출 수 없을 때만 쓴다 — 평소에는
|
|
8562
|
+
* `show()` 가 준 핸들로 걷는다.
|
|
8563
|
+
* 이걸로 걷힌 항목의 주인이 뒤늦게 자기 핸들을 불러도 아무 일도 일어나지 않는다.
|
|
8389
8564
|
*/
|
|
8390
8565
|
hideAll() {
|
|
8391
8566
|
if (entries.length === 0) return;
|
|
@@ -8907,7 +9082,7 @@ function SPortal({
|
|
|
8907
9082
|
const portalContainer = usePortalContainer();
|
|
8908
9083
|
const { minWidth: styleMinWidth, maxWidth: styleMaxWidth, ...restStyle } = style ?? {};
|
|
8909
9084
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
8910
|
-
|
|
9085
|
+
RPopover13__namespace.Root,
|
|
8911
9086
|
{
|
|
8912
9087
|
open,
|
|
8913
9088
|
onOpenChange: (next) => {
|
|
@@ -8915,9 +9090,9 @@ function SPortal({
|
|
|
8915
9090
|
if (!next) onClose?.();
|
|
8916
9091
|
},
|
|
8917
9092
|
children: [
|
|
8918
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8919
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8920
|
-
|
|
9093
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { virtualRef: anchorRef }),
|
|
9094
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9095
|
+
RPopover13__namespace.Content,
|
|
8921
9096
|
{
|
|
8922
9097
|
side: placement,
|
|
8923
9098
|
align,
|
|
@@ -9668,10 +9843,10 @@ function SPopover({
|
|
|
9668
9843
|
const descColor = type === "default" ? "var(--cmp-popover-default-description)" : "var(--cmp-popover-light-description)";
|
|
9669
9844
|
const leftLinkLabelClass = type === "default" ? "text-[color:var(--cmp-popover-default-subAction)]" : "text-[color:var(--cmp-popover-light-subAction)]";
|
|
9670
9845
|
const triggerNode = trigger ?? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "inline-flex cursor-pointer", "aria-label": ariaLabel, children: /* @__PURE__ */ jsxRuntime.jsx(SIcon, { name: icon, size: iconSize, color }) });
|
|
9671
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9672
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9673
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9674
|
-
|
|
9846
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: actualOpen, onOpenChange: setOpen, children: [
|
|
9847
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: triggerNode }),
|
|
9848
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9849
|
+
RPopover13__namespace.Content,
|
|
9675
9850
|
{
|
|
9676
9851
|
side: placement,
|
|
9677
9852
|
sideOffset: 8,
|
|
@@ -9737,7 +9912,7 @@ function SPopover({
|
|
|
9737
9912
|
]
|
|
9738
9913
|
}
|
|
9739
9914
|
),
|
|
9740
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9915
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Arrow, { width: 16, height: 12, style: { fill: bg } })
|
|
9741
9916
|
]
|
|
9742
9917
|
}
|
|
9743
9918
|
) })
|
|
@@ -9855,10 +10030,10 @@ function SGuide({
|
|
|
9855
10030
|
);
|
|
9856
10031
|
if (isNotion)
|
|
9857
10032
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className, style, children: trigger });
|
|
9858
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9859
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9860
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9861
|
-
|
|
10033
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: setOpen, children: [
|
|
10034
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: trigger }),
|
|
10035
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10036
|
+
RPopover13__namespace.Content,
|
|
9862
10037
|
{
|
|
9863
10038
|
side: "bottom",
|
|
9864
10039
|
align: "start",
|
|
@@ -12351,10 +12526,10 @@ var SGnb = /* @__PURE__ */ react.forwardRef(function SGnb2({
|
|
|
12351
12526
|
),
|
|
12352
12527
|
header === "fix" && menuResizeHandle,
|
|
12353
12528
|
launcherListBox,
|
|
12354
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
12355
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12356
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
12357
|
-
|
|
12529
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: labelTip !== null, onOpenChange: (open) => !open && setLabelTip(null), children: [
|
|
12530
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { virtualRef: labelTipAnchorRef }),
|
|
12531
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
12532
|
+
RPopover13__namespace.Content,
|
|
12358
12533
|
{
|
|
12359
12534
|
side: "right",
|
|
12360
12535
|
sideOffset: 4,
|
|
@@ -13842,7 +14017,8 @@ function layoutCalendarBoard({
|
|
|
13842
14017
|
cells,
|
|
13843
14018
|
events,
|
|
13844
14019
|
rowCapacity,
|
|
13845
|
-
blockedDates
|
|
14020
|
+
blockedDates,
|
|
14021
|
+
focusedEventId
|
|
13846
14022
|
}) {
|
|
13847
14023
|
const count = cells.length;
|
|
13848
14024
|
const weekCount = Math.ceil(count / 7);
|
|
@@ -13850,6 +14026,7 @@ function layoutCalendarBoard({
|
|
|
13850
14026
|
const eventsByCell = Array.from({ length: count }, () => []);
|
|
13851
14027
|
const hiddenCountByCell = new Array(count).fill(0);
|
|
13852
14028
|
const moreLaneByWeek = new Array(weekCount).fill(-1);
|
|
14029
|
+
const moreReplacedByCell = new Array(count).fill(false);
|
|
13853
14030
|
const runs = [];
|
|
13854
14031
|
events.forEach((event, order) => {
|
|
13855
14032
|
const start = event.date;
|
|
@@ -13907,9 +14084,15 @@ function layoutCalendarBoard({
|
|
|
13907
14084
|
const week = Math.floor(run.startIndex / 7);
|
|
13908
14085
|
const moreLane = moreLaneByWeek[week];
|
|
13909
14086
|
const limit = moreLane < 0 ? rowCapacity : moreLane;
|
|
13910
|
-
|
|
13911
|
-
|
|
13912
|
-
|
|
14087
|
+
let lane = run.lane;
|
|
14088
|
+
if (lane >= limit) {
|
|
14089
|
+
const focused = focusedEventId != null && run.event.id === focusedEventId && moreLane >= 0;
|
|
14090
|
+
if (!focused) {
|
|
14091
|
+
for (let i = run.startIndex; i <= run.endIndex; i++) hiddenCountByCell[i] += 1;
|
|
14092
|
+
continue;
|
|
14093
|
+
}
|
|
14094
|
+
lane = moreLane;
|
|
14095
|
+
for (let i = run.startIndex; i <= run.endIndex; i++) moreReplacedByCell[i] = true;
|
|
13913
14096
|
}
|
|
13914
14097
|
const { event } = run;
|
|
13915
14098
|
segmentsByCell[run.startIndex].push({
|
|
@@ -13917,12 +14100,18 @@ function layoutCalendarBoard({
|
|
|
13917
14100
|
key: `${event.id ?? `${event.date}-${run.order}`}-${run.startIndex}`,
|
|
13918
14101
|
startIndex: run.startIndex,
|
|
13919
14102
|
span: run.endIndex - run.startIndex + 1,
|
|
13920
|
-
lane
|
|
14103
|
+
lane,
|
|
13921
14104
|
startsHere: cells[run.startIndex].date === event.date,
|
|
13922
14105
|
endsHere: cells[run.endIndex].date === eventEndDate(event)
|
|
13923
14106
|
});
|
|
13924
14107
|
}
|
|
13925
|
-
return {
|
|
14108
|
+
return {
|
|
14109
|
+
segmentsByCell,
|
|
14110
|
+
eventsByCell,
|
|
14111
|
+
hiddenCountByCell,
|
|
14112
|
+
moreLaneByWeek,
|
|
14113
|
+
moreReplacedByCell
|
|
14114
|
+
};
|
|
13926
14115
|
}
|
|
13927
14116
|
|
|
13928
14117
|
// src/components/SCalendarBoard/calendarBoard.config.ts
|
|
@@ -13952,6 +14141,7 @@ var CALENDAR_BOARD_EVENT_PRESETS = {
|
|
|
13952
14141
|
white: { bg: BG("white"), dot: "grey" }
|
|
13953
14142
|
};
|
|
13954
14143
|
var CALENDAR_BOARD_MAX_VISIBLE_EVENTS = 4;
|
|
14144
|
+
var CALENDAR_BOARD_DIM_OPACITY = 0.4;
|
|
13955
14145
|
var CALENDAR_BOARD_DAY_COLORS = [
|
|
13956
14146
|
"default",
|
|
13957
14147
|
"danger",
|
|
@@ -13971,6 +14161,7 @@ function CalendarEventButton({
|
|
|
13971
14161
|
onSelect,
|
|
13972
14162
|
flatStart = false,
|
|
13973
14163
|
flatEnd = false,
|
|
14164
|
+
dimmed = false,
|
|
13974
14165
|
className,
|
|
13975
14166
|
style
|
|
13976
14167
|
}) {
|
|
@@ -13998,7 +14189,11 @@ function CalendarEventButton({
|
|
|
13998
14189
|
disabled ? "cursor-not-allowed opacity-50" : "cursor-pointer",
|
|
13999
14190
|
className
|
|
14000
14191
|
),
|
|
14001
|
-
style: {
|
|
14192
|
+
style: {
|
|
14193
|
+
...style,
|
|
14194
|
+
"--ceb-bg": preset.bg,
|
|
14195
|
+
...dimmed && { opacity: CALENDAR_BOARD_DIM_OPACITY }
|
|
14196
|
+
},
|
|
14002
14197
|
onClick: (e) => {
|
|
14003
14198
|
if (disabled) return;
|
|
14004
14199
|
onSelect?.(event, e);
|
|
@@ -14042,7 +14237,7 @@ function CalendarEventButton({
|
|
|
14042
14237
|
}
|
|
14043
14238
|
);
|
|
14044
14239
|
}
|
|
14045
|
-
var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreButton2({ count, label = "\uB354\uBCF4\uAE30", onClick, className, style }, ref) {
|
|
14240
|
+
var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreButton2({ count, label = "\uB354\uBCF4\uAE30", dimmed = false, onClick, className, style }, ref) {
|
|
14046
14241
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
14047
14242
|
"button",
|
|
14048
14243
|
{
|
|
@@ -14055,7 +14250,7 @@ var CalendarMoreButton = /* @__PURE__ */ react.forwardRef(function CalendarMoreB
|
|
|
14055
14250
|
"bg-(--cmp-calendarBoard-moreButton-bg)",
|
|
14056
14251
|
className
|
|
14057
14252
|
),
|
|
14058
|
-
style,
|
|
14253
|
+
style: dimmed ? { ...style, opacity: CALENDAR_BOARD_DIM_OPACITY } : style,
|
|
14059
14254
|
onClick,
|
|
14060
14255
|
children: [
|
|
14061
14256
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -14090,6 +14285,8 @@ var CalendarDayCard = /* @__PURE__ */ react.forwardRef(function CalendarDayCard2
|
|
|
14090
14285
|
body,
|
|
14091
14286
|
hiddenCount,
|
|
14092
14287
|
moreLane,
|
|
14288
|
+
moreReplaced,
|
|
14289
|
+
focusedEventId,
|
|
14093
14290
|
isOpen,
|
|
14094
14291
|
moreLabel,
|
|
14095
14292
|
onDaySelect,
|
|
@@ -14097,6 +14294,7 @@ var CalendarDayCard = /* @__PURE__ */ react.forwardRef(function CalendarDayCard2
|
|
|
14097
14294
|
onOpenEvents,
|
|
14098
14295
|
...rest
|
|
14099
14296
|
}, ref) {
|
|
14297
|
+
const focusing = focusedEventId != null;
|
|
14100
14298
|
const hasEvents = dayEventCount > 0;
|
|
14101
14299
|
const interactive = selectable || hasEvents;
|
|
14102
14300
|
const activate = () => {
|
|
@@ -14158,6 +14356,7 @@ var CalendarDayCard = /* @__PURE__ */ react.forwardRef(function CalendarDayCard2
|
|
|
14158
14356
|
event: segment.event,
|
|
14159
14357
|
flatStart: !segment.startsHere,
|
|
14160
14358
|
flatEnd: !segment.endsHere,
|
|
14359
|
+
dimmed: focusing && segment.event.id !== focusedEventId,
|
|
14161
14360
|
className: "absolute z-10",
|
|
14162
14361
|
style: {
|
|
14163
14362
|
top: laneTop(segment.lane),
|
|
@@ -14171,11 +14370,12 @@ var CalendarDayCard = /* @__PURE__ */ react.forwardRef(function CalendarDayCard2
|
|
|
14171
14370
|
},
|
|
14172
14371
|
segment.key
|
|
14173
14372
|
)),
|
|
14174
|
-
body == null && hiddenCount > 0 && moreLane >= 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14373
|
+
body == null && hiddenCount > 0 && moreLane >= 0 && !moreReplaced && /* @__PURE__ */ jsxRuntime.jsx(
|
|
14175
14374
|
CalendarMoreButton,
|
|
14176
14375
|
{
|
|
14177
14376
|
count: hiddenCount,
|
|
14178
14377
|
label: moreLabel,
|
|
14378
|
+
dimmed: focusing,
|
|
14179
14379
|
className: "absolute z-10",
|
|
14180
14380
|
style: {
|
|
14181
14381
|
top: laneTop(moreLane),
|
|
@@ -14273,6 +14473,7 @@ function SCalendarBoard({
|
|
|
14273
14473
|
events,
|
|
14274
14474
|
dayColors,
|
|
14275
14475
|
dayContent,
|
|
14476
|
+
focusedEventId,
|
|
14276
14477
|
onEventClick,
|
|
14277
14478
|
onMoreClick,
|
|
14278
14479
|
todayLabel = "\uC624\uB298",
|
|
@@ -14323,8 +14524,14 @@ function SCalendarBoard({
|
|
|
14323
14524
|
const blockedDates = new Set(
|
|
14324
14525
|
cells.filter((cell) => dayContent?.[cell.date] != null).map((cell) => cell.date)
|
|
14325
14526
|
);
|
|
14326
|
-
return layoutCalendarBoard({
|
|
14327
|
-
|
|
14527
|
+
return layoutCalendarBoard({
|
|
14528
|
+
cells,
|
|
14529
|
+
events: events ?? [],
|
|
14530
|
+
rowCapacity,
|
|
14531
|
+
blockedDates,
|
|
14532
|
+
focusedEventId
|
|
14533
|
+
});
|
|
14534
|
+
}, [cells, events, rowCapacity, dayContent, focusedEventId]);
|
|
14328
14535
|
const openIndex = openDate == null ? -1 : cells.findIndex((cell) => cell.date === openDate);
|
|
14329
14536
|
const openEvents = openIndex < 0 ? [] : layout.eventsByCell[openIndex];
|
|
14330
14537
|
react.useLayoutEffect(() => {
|
|
@@ -14449,7 +14656,7 @@ function SCalendarBoard({
|
|
|
14449
14656
|
}
|
|
14450
14657
|
),
|
|
14451
14658
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
14452
|
-
|
|
14659
|
+
RPopover13__namespace.Root,
|
|
14453
14660
|
{
|
|
14454
14661
|
open: openDate !== null,
|
|
14455
14662
|
onOpenChange: (open) => {
|
|
@@ -14485,6 +14692,8 @@ function SCalendarBoard({
|
|
|
14485
14692
|
body: content,
|
|
14486
14693
|
hiddenCount: layout.hiddenCountByCell[index],
|
|
14487
14694
|
moreLane: layout.moreLaneByWeek[Math.floor(index / 7)],
|
|
14695
|
+
moreReplaced: layout.moreReplacedByCell[index],
|
|
14696
|
+
focusedEventId,
|
|
14488
14697
|
isOpen: openDate === cell.date,
|
|
14489
14698
|
moreLabel,
|
|
14490
14699
|
onDaySelect: (date) => onValueChange?.(date, list),
|
|
@@ -14493,12 +14702,12 @@ function SCalendarBoard({
|
|
|
14493
14702
|
},
|
|
14494
14703
|
cell.date
|
|
14495
14704
|
);
|
|
14496
|
-
return cell.date === openDate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
14705
|
+
return cell.date === openDate ? /* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { asChild: true, children: card }, cell.date) : card;
|
|
14497
14706
|
})
|
|
14498
14707
|
}
|
|
14499
14708
|
),
|
|
14500
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
14501
|
-
|
|
14709
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
14710
|
+
RPopover13__namespace.Content,
|
|
14502
14711
|
{
|
|
14503
14712
|
onInteractOutside: (e) => {
|
|
14504
14713
|
const target = e.detail.originalEvent.target;
|
|
@@ -17001,10 +17210,10 @@ function useTruncatedValueTooltip({
|
|
|
17001
17210
|
valueRef: elRef,
|
|
17002
17211
|
onMouseEnter: active ? onMouseEnter : cancelHide,
|
|
17003
17212
|
onMouseLeave: active ? startHide : cancelHide,
|
|
17004
|
-
tooltip: active ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17005
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17006
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
17007
|
-
|
|
17213
|
+
tooltip: active ? /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: setOpen, children: [
|
|
17214
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Anchor, { virtualRef: elRef }),
|
|
17215
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
17216
|
+
RPopover13__namespace.Content,
|
|
17008
17217
|
{
|
|
17009
17218
|
side: "top",
|
|
17010
17219
|
sideOffset: 4,
|
|
@@ -18258,8 +18467,8 @@ function SDatePicker({
|
|
|
18258
18467
|
disabled,
|
|
18259
18468
|
className,
|
|
18260
18469
|
style,
|
|
18261
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18262
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18470
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: (o) => !disabled && setOpen(o), children: [
|
|
18471
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18263
18472
|
"div",
|
|
18264
18473
|
{
|
|
18265
18474
|
role: "button",
|
|
@@ -18318,8 +18527,8 @@ function SDatePicker({
|
|
|
18318
18527
|
]
|
|
18319
18528
|
}
|
|
18320
18529
|
) }),
|
|
18321
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18322
|
-
|
|
18530
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
18531
|
+
RPopover13__namespace.Content,
|
|
18323
18532
|
{
|
|
18324
18533
|
side: "bottom",
|
|
18325
18534
|
align: mode === "date" ? "start" : "center",
|
|
@@ -18795,7 +19004,7 @@ function SDateRangePicker({
|
|
|
18795
19004
|
className,
|
|
18796
19005
|
style,
|
|
18797
19006
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18798
|
-
|
|
19007
|
+
RPopover13__namespace.Root,
|
|
18799
19008
|
{
|
|
18800
19009
|
open,
|
|
18801
19010
|
onOpenChange: (o) => {
|
|
@@ -18804,7 +19013,7 @@ function SDateRangePicker({
|
|
|
18804
19013
|
if (!o) setPendingStart(null);
|
|
18805
19014
|
},
|
|
18806
19015
|
children: [
|
|
18807
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19016
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18808
19017
|
"div",
|
|
18809
19018
|
{
|
|
18810
19019
|
role: "button",
|
|
@@ -18868,8 +19077,8 @@ function SDateRangePicker({
|
|
|
18868
19077
|
]
|
|
18869
19078
|
}
|
|
18870
19079
|
) }),
|
|
18871
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18872
|
-
|
|
19080
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19081
|
+
RPopover13__namespace.Content,
|
|
18873
19082
|
{
|
|
18874
19083
|
side: "bottom",
|
|
18875
19084
|
align: "start",
|
|
@@ -19636,6 +19845,10 @@ var ChartFrame = /* @__PURE__ */ react.forwardRef(function ChartFrame2({ title,
|
|
|
19636
19845
|
}
|
|
19637
19846
|
);
|
|
19638
19847
|
});
|
|
19848
|
+
|
|
19849
|
+
// src/lib/chart/hover-dim.ts
|
|
19850
|
+
var CHART_DIM_OPACITY_TRANSITION = "transition-opacity duration-200 ease-out motion-reduce:transition-none";
|
|
19851
|
+
var CHART_DIM_COLOR_TRANSITION = "transition-colors duration-200 ease-out motion-reduce:transition-none";
|
|
19639
19852
|
var DOT_SIZE = 6;
|
|
19640
19853
|
function ChartLegend({
|
|
19641
19854
|
items,
|
|
@@ -19668,7 +19881,7 @@ function ChartLegend({
|
|
|
19668
19881
|
"flex items-center gap-(--cmp-chart-legendItem-gap)",
|
|
19669
19882
|
"py-(--cmp-chart-legendItem-paddingY)",
|
|
19670
19883
|
"typo-body-sm-medium text-(--cmp-chart-legendItem-color)",
|
|
19671
|
-
|
|
19884
|
+
CHART_DIM_OPACITY_TRANSITION,
|
|
19672
19885
|
activeIndex != null && activeIndex !== index && "opacity-(--opacity-060)"
|
|
19673
19886
|
),
|
|
19674
19887
|
children: [
|
|
@@ -19699,7 +19912,7 @@ function ChartLegend({
|
|
|
19699
19912
|
"flex items-center gap-(--cmp-chart-legendItem-gap)",
|
|
19700
19913
|
"py-(--cmp-chart-legendItem-paddingY)",
|
|
19701
19914
|
"typo-body-sm-medium text-(--cmp-chart-legendItem-color)",
|
|
19702
|
-
|
|
19915
|
+
CHART_DIM_OPACITY_TRANSITION,
|
|
19703
19916
|
activeIndex != null && activeIndex !== index && "opacity-(--opacity-060)"
|
|
19704
19917
|
),
|
|
19705
19918
|
children: [
|
|
@@ -19928,7 +20141,6 @@ var BAR_OPACITY_HOVER = 1;
|
|
|
19928
20141
|
var BAR_DATA_LABEL_COLOR = "var(--cmp-chart-dataLabel-color-default)";
|
|
19929
20142
|
var BAR_DATA_LABEL_TYPO = "typo-body-sm-medium";
|
|
19930
20143
|
var BAR_DATA_LABEL_TYPO_HOVER = "typo-body-md-bold";
|
|
19931
|
-
var BAR_HOVER_TRANSITION = "transition-opacity duration-200 ease-out motion-reduce:transition-none";
|
|
19932
20144
|
function bandLayout(size, categoryCount, seriesCount, barSizeMax = BAR_SIZE_MAX) {
|
|
19933
20145
|
const categories = Math.max(1, categoryCount);
|
|
19934
20146
|
const series = Math.max(1, seriesCount);
|
|
@@ -20195,7 +20407,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20195
20407
|
"path",
|
|
20196
20408
|
{
|
|
20197
20409
|
d: barPath(x, y, width, barHeight, direction, negative),
|
|
20198
|
-
className:
|
|
20410
|
+
className: CHART_DIM_OPACITY_TRANSITION,
|
|
20199
20411
|
style: {
|
|
20200
20412
|
fill: colorAt(seriesIndex, categoryIndex),
|
|
20201
20413
|
opacity,
|
|
@@ -20212,7 +20424,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20212
20424
|
y: labelY,
|
|
20213
20425
|
className: cn(
|
|
20214
20426
|
hoveredCategory === categoryIndex ? BAR_DATA_LABEL_TYPO_HOVER : BAR_DATA_LABEL_TYPO,
|
|
20215
|
-
|
|
20427
|
+
CHART_DIM_OPACITY_TRANSITION
|
|
20216
20428
|
),
|
|
20217
20429
|
style: {
|
|
20218
20430
|
fill: BAR_DATA_LABEL_COLOR,
|
|
@@ -20293,7 +20505,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20293
20505
|
width: box3.width,
|
|
20294
20506
|
height: box3.height,
|
|
20295
20507
|
clipPath: `url(#${segment.value < 0 ? negativeClip : positiveClip})`,
|
|
20296
|
-
className:
|
|
20508
|
+
className: CHART_DIM_OPACITY_TRANSITION,
|
|
20297
20509
|
style: {
|
|
20298
20510
|
// 조각과 라벨에 따로 건다 — 묶음(<g>)에 걸면 호버가 없을 때의
|
|
20299
20511
|
// 기본 흐림까지 합계 라벨에 묻어 숫자가 늘 옅어진다.
|
|
@@ -20318,7 +20530,7 @@ var SBarChart = /* @__PURE__ */ react.forwardRef(function SBarChart2({
|
|
|
20318
20530
|
y: labelY,
|
|
20319
20531
|
className: cn(
|
|
20320
20532
|
hoveredCategory === categoryIndex ? BAR_DATA_LABEL_TYPO_HOVER : BAR_DATA_LABEL_TYPO,
|
|
20321
|
-
|
|
20533
|
+
CHART_DIM_OPACITY_TRANSITION
|
|
20322
20534
|
),
|
|
20323
20535
|
style: {
|
|
20324
20536
|
fill: BAR_DATA_LABEL_COLOR,
|
|
@@ -20841,6 +21053,7 @@ var SLineChart = /* @__PURE__ */ react.forwardRef(function SLineChart2({
|
|
|
20841
21053
|
cx: point.x,
|
|
20842
21054
|
cy: point.y,
|
|
20843
21055
|
r: hovered ? POINT_HOVER_RADIUS : POINT_RADIUS,
|
|
21056
|
+
className: CHART_DIM_COLOR_TRANSITION,
|
|
20844
21057
|
style: {
|
|
20845
21058
|
fill: dimmed ? dimmedColorAt(seriesIndex) : color,
|
|
20846
21059
|
cursor: onPointClick ? "pointer" : void 0
|
|
@@ -21195,7 +21408,7 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
21195
21408
|
{
|
|
21196
21409
|
d: slice(arc2),
|
|
21197
21410
|
fillRule: "evenodd",
|
|
21198
|
-
className:
|
|
21411
|
+
className: CHART_DIM_OPACITY_TRANSITION,
|
|
21199
21412
|
style: {
|
|
21200
21413
|
fill: arc2.color,
|
|
21201
21414
|
opacity,
|
|
@@ -21228,7 +21441,10 @@ var RadialChart = /* @__PURE__ */ react.forwardRef(function RadialChart2({
|
|
|
21228
21441
|
y: point.y,
|
|
21229
21442
|
textAnchor: "middle",
|
|
21230
21443
|
dominantBaseline: "central",
|
|
21231
|
-
className:
|
|
21444
|
+
className: cn(
|
|
21445
|
+
"pointer-events-none typo-body-sm-bold",
|
|
21446
|
+
CHART_DIM_OPACITY_TRANSITION
|
|
21447
|
+
),
|
|
21232
21448
|
style: {
|
|
21233
21449
|
fill: "var(--sys-color-fg-inverse)",
|
|
21234
21450
|
opacity: hovered != null && hovered !== arc2.index ? OPACITY_DIMMED : void 0
|
|
@@ -23245,10 +23461,10 @@ function EditorToolbarBar({
|
|
|
23245
23461
|
},
|
|
23246
23462
|
item4
|
|
23247
23463
|
);
|
|
23248
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
23249
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23250
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
23251
|
-
|
|
23464
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: linkOpen, onOpenChange: setLinkOpen, children: [
|
|
23465
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { label: "\uB9C1\uD06C", active: state2.link, disabled: off, children: /* @__PURE__ */ jsxRuntime.jsx(IconLink, { size: ICON_SIZE }) }) }),
|
|
23466
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
23467
|
+
RPopover13__namespace.Content,
|
|
23252
23468
|
{
|
|
23253
23469
|
sideOffset: 4,
|
|
23254
23470
|
align: "start",
|
|
@@ -24641,8 +24857,8 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
24641
24857
|
})(),
|
|
24642
24858
|
hasRightActions && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24643
24859
|
/* @__PURE__ */ jsxRuntime.jsx(Divider, { inset: true }),
|
|
24644
|
-
hasAddButton && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24645
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24860
|
+
hasAddButton && /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: addOpen, onOpenChange: setAddOpen, children: [
|
|
24861
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24646
24862
|
"button",
|
|
24647
24863
|
{
|
|
24648
24864
|
type: "button",
|
|
@@ -24667,8 +24883,8 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
24667
24883
|
]
|
|
24668
24884
|
}
|
|
24669
24885
|
) }),
|
|
24670
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24671
|
-
|
|
24886
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24887
|
+
RPopover13__namespace.Content,
|
|
24672
24888
|
{
|
|
24673
24889
|
side: "bottom",
|
|
24674
24890
|
align: "start",
|
|
@@ -24703,17 +24919,17 @@ var SChipFilter = /* @__PURE__ */ react.forwardRef(function SChipFilter2({
|
|
|
24703
24919
|
)
|
|
24704
24920
|
] })
|
|
24705
24921
|
] }),
|
|
24706
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
24922
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: openKey != null, onOpenChange: (next) => !next && setOpenKey(null), children: [
|
|
24707
24923
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24708
|
-
|
|
24924
|
+
RPopover13__namespace.Anchor,
|
|
24709
24925
|
{
|
|
24710
24926
|
virtualRef: {
|
|
24711
24927
|
current: openKey ? triggerRefs.current.get(openKey) : null
|
|
24712
24928
|
}
|
|
24713
24929
|
}
|
|
24714
24930
|
),
|
|
24715
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24716
|
-
|
|
24931
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24932
|
+
RPopover13__namespace.Content,
|
|
24717
24933
|
{
|
|
24718
24934
|
side: "bottom",
|
|
24719
24935
|
align: "start",
|
|
@@ -25306,8 +25522,8 @@ function InlineDatePresetFilter({
|
|
|
25306
25522
|
applied && (rangeValue ? (
|
|
25307
25523
|
// 뱃지 모양은 그대로 두고, 눌렀을 때 캘린더가 열려 기간을 직접 다시 고를 수 있게 한다.
|
|
25308
25524
|
// 직접 고르면 프리셋 선택은 해제된다.
|
|
25309
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
25310
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25525
|
+
/* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open: pickerOpen, onOpenChange: setPickerOpen, children: [
|
|
25526
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25311
25527
|
"button",
|
|
25312
25528
|
{
|
|
25313
25529
|
type: "button",
|
|
@@ -25316,8 +25532,8 @@ function InlineDatePresetFilter({
|
|
|
25316
25532
|
children: badge
|
|
25317
25533
|
}
|
|
25318
25534
|
) }),
|
|
25319
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25320
|
-
|
|
25535
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25536
|
+
RPopover13__namespace.Content,
|
|
25321
25537
|
{
|
|
25322
25538
|
side: "bottom",
|
|
25323
25539
|
align: "start",
|
|
@@ -26779,8 +26995,8 @@ function STimePicker({
|
|
|
26779
26995
|
disabled,
|
|
26780
26996
|
className,
|
|
26781
26997
|
style,
|
|
26782
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26783
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26998
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: commitOpen, children: [
|
|
26999
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26784
27000
|
"div",
|
|
26785
27001
|
{
|
|
26786
27002
|
ref: triggerRef,
|
|
@@ -26840,8 +27056,8 @@ function STimePicker({
|
|
|
26840
27056
|
]
|
|
26841
27057
|
}
|
|
26842
27058
|
) }),
|
|
26843
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26844
|
-
|
|
27059
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27060
|
+
RPopover13__namespace.Content,
|
|
26845
27061
|
{
|
|
26846
27062
|
side: "bottom",
|
|
26847
27063
|
align: "start",
|
|
@@ -27249,8 +27465,8 @@ function STimeRangePicker({
|
|
|
27249
27465
|
disabled,
|
|
27250
27466
|
className,
|
|
27251
27467
|
style,
|
|
27252
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27253
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27468
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(RPopover13__namespace.Root, { open, onOpenChange: commitOpen, children: [
|
|
27469
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
27254
27470
|
"div",
|
|
27255
27471
|
{
|
|
27256
27472
|
ref: triggerRef,
|
|
@@ -27310,8 +27526,8 @@ function STimeRangePicker({
|
|
|
27310
27526
|
]
|
|
27311
27527
|
}
|
|
27312
27528
|
) }),
|
|
27313
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
27314
|
-
|
|
27529
|
+
/* @__PURE__ */ jsxRuntime.jsx(RPopover13__namespace.Portal, { container: portalContainer, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
27530
|
+
RPopover13__namespace.Content,
|
|
27315
27531
|
{
|
|
27316
27532
|
side: "bottom",
|
|
27317
27533
|
align: "start",
|
|
@@ -27460,7 +27676,6 @@ exports.SList = SList2;
|
|
|
27460
27676
|
exports.SListItem = SListItem2;
|
|
27461
27677
|
exports.SLoadingContainer = SLoadingContainer;
|
|
27462
27678
|
exports.SLoadingModal = SLoadingModal;
|
|
27463
|
-
exports.SLoadingViewport = SLoadingViewport;
|
|
27464
27679
|
exports.SLoginCard = SLoginCard2;
|
|
27465
27680
|
exports.SLogo = SLogo;
|
|
27466
27681
|
exports.SMeatballButton = SMeatballButton2;
|