@avenue-ticketing/ui 0.12.0-beta.1 → 0.12.0-beta.3
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/react/badge-groups.js +2 -2
- package/dist/react/badge-groups.js.map +1 -1
- package/dist/react/badge.js +49 -18
- package/dist/react/badge.js.map +1 -1
- package/dist/react/button.js +2 -2
- package/dist/react/button.js.map +1 -1
- package/dist/react/checkbox.js +10 -7
- package/dist/react/checkbox.js.map +1 -1
- package/dist/react/combobox.d.ts +3 -2
- package/dist/react/combobox.js +284 -32
- package/dist/react/combobox.js.map +1 -1
- package/dist/react/dropdown-account-breadcrumb.js +176 -14
- package/dist/react/dropdown-account-breadcrumb.js.map +1 -1
- package/dist/react/dropdown-account-button.js +190 -25
- package/dist/react/dropdown-account-button.js.map +1 -1
- package/dist/react/dropdown-account-card-md.js +189 -24
- package/dist/react/dropdown-account-card-md.js.map +1 -1
- package/dist/react/dropdown-account-card-sm.js +189 -24
- package/dist/react/dropdown-account-card-sm.js.map +1 -1
- package/dist/react/dropdown-account-card-xs.js +189 -24
- package/dist/react/dropdown-account-card-xs.js.map +1 -1
- package/dist/react/dropdown-avatar.js +190 -25
- package/dist/react/dropdown-avatar.js.map +1 -1
- package/dist/react/dropdown-button-advanced.js +190 -25
- package/dist/react/dropdown-button-advanced.js.map +1 -1
- package/dist/react/dropdown-button-link.js +189 -24
- package/dist/react/dropdown-button-link.js.map +1 -1
- package/dist/react/dropdown-button-simple.js +190 -25
- package/dist/react/dropdown-button-simple.js.map +1 -1
- package/dist/react/dropdown-icon-advanced.js +189 -24
- package/dist/react/dropdown-icon-advanced.js.map +1 -1
- package/dist/react/dropdown-icon-simple.js +189 -24
- package/dist/react/dropdown-icon-simple.js.map +1 -1
- package/dist/react/dropdown-integration.js +190 -25
- package/dist/react/dropdown-integration.js.map +1 -1
- package/dist/react/dropdown-search-advanced.js +191 -26
- package/dist/react/dropdown-search-advanced.js.map +1 -1
- package/dist/react/dropdown-search-simple.js +191 -26
- package/dist/react/dropdown-search-simple.js.map +1 -1
- package/dist/react/dropdown.d.ts +4 -1
- package/dist/react/dropdown.js +189 -24
- package/dist/react/dropdown.js.map +1 -1
- package/dist/react/input-date.js.map +1 -1
- package/dist/react/input-file.js +3 -3
- package/dist/react/input-file.js.map +1 -1
- package/dist/react/input-group.js.map +1 -1
- package/dist/react/input-number.js +2 -2
- package/dist/react/input-number.js.map +1 -1
- package/dist/react/input-payment.js +1 -1
- package/dist/react/input-payment.js.map +1 -1
- package/dist/react/input-tags-outer.js +9 -9
- package/dist/react/input-tags-outer.js.map +1 -1
- package/dist/react/input-tags.js +8 -8
- package/dist/react/input-tags.js.map +1 -1
- package/dist/react/input.js +1 -1
- package/dist/react/input.js.map +1 -1
- package/dist/react/multi-select.d.ts +3 -2
- package/dist/react/multi-select.js +230 -29
- package/dist/react/multi-select.js.map +1 -1
- package/dist/react/popover.d.ts +10 -1
- package/dist/react/popover.js +195 -18
- package/dist/react/popover.js.map +1 -1
- package/dist/react/radio-buttons.js +2 -1
- package/dist/react/radio-buttons.js.map +1 -1
- package/dist/react/select-item.d.ts +2 -1
- package/dist/react/select-item.js +11 -7
- package/dist/react/select-item.js.map +1 -1
- package/dist/react/select.d.ts +4 -3
- package/dist/react/select.js +298 -42
- package/dist/react/select.js.map +1 -1
- package/dist/react/switch.js +1 -1
- package/dist/react/switch.js.map +1 -1
- package/dist/react/tag-select.d.ts +5 -2
- package/dist/react/tag-select.js +215 -25
- package/dist/react/tag-select.js.map +1 -1
- package/dist/react/tags.js +8 -8
- package/dist/react/tags.js.map +1 -1
- package/dist/react/textarea.js.map +1 -1
- package/dist/select-mobile-sheet-CB2ptDTJ.d.ts +12 -0
- package/dist/{select-shared-B3Y5SMXU.d.ts → select-shared-oJEeJxeB.d.ts} +6 -0
- package/package.json +1 -1
- package/theme.css +3 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, useState,
|
|
1
|
+
import { createContext, useState, useMemo, useContext, useEffect, useCallback, useLayoutEffect, useRef } from 'react';
|
|
2
2
|
import { CaretUpDownIcon } from '@phosphor-icons/react/dist/csr/CaretUpDown';
|
|
3
3
|
import { QuestionIcon } from '@phosphor-icons/react/dist/csr/Question';
|
|
4
4
|
import { SignOutIcon } from '@phosphor-icons/react/dist/csr/SignOut';
|
|
@@ -6,13 +6,90 @@ import { MoonIcon } from '@phosphor-icons/react/dist/csr/Moon';
|
|
|
6
6
|
import { PlusIcon } from '@phosphor-icons/react/dist/csr/Plus';
|
|
7
7
|
import { GearIcon } from '@phosphor-icons/react/dist/csr/Gear';
|
|
8
8
|
import { UserIcon } from '@phosphor-icons/react/dist/csr/User';
|
|
9
|
-
import { MenuTrigger, Button, MenuSection, SubmenuTrigger, Header, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
9
|
+
import { MenuTrigger, Button, MenuSection, SubmenuTrigger, Header, OverlayTriggerStateContext, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
10
|
+
import { createPortal } from 'react-dom';
|
|
10
11
|
import { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';
|
|
11
12
|
import { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';
|
|
12
13
|
import '@phosphor-icons/react/dist/csr/DotsThreeVertical';
|
|
14
|
+
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
13
15
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
14
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
16
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
15
17
|
|
|
18
|
+
var MOBILE_SHEET_MOTION_MS = 175;
|
|
19
|
+
var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
|
|
20
|
+
var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
|
|
21
|
+
var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
|
|
22
|
+
function resolveSelectMobileOptions(mobileOptions) {
|
|
23
|
+
return {
|
|
24
|
+
sheet: mobileOptions?.sheet ?? true,
|
|
25
|
+
title: mobileOptions?.title,
|
|
26
|
+
sheetClassName: mobileOptions?.className,
|
|
27
|
+
contentClassName: mobileOptions?.contentClassName
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
|
|
31
|
+
const [shouldRender, setShouldRender] = useState(open);
|
|
32
|
+
const [isAnimating, setIsAnimating] = useState(false);
|
|
33
|
+
useLayoutEffect(() => {
|
|
34
|
+
if (!enabled) {
|
|
35
|
+
setShouldRender(open);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (open) {
|
|
39
|
+
setShouldRender(true);
|
|
40
|
+
}
|
|
41
|
+
}, [open, enabled]);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
if (!enabled || open) return;
|
|
44
|
+
const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
|
|
45
|
+
return () => clearTimeout(timer);
|
|
46
|
+
}, [open, enabled]);
|
|
47
|
+
useLayoutEffect(() => {
|
|
48
|
+
if (!enabled || open || !shouldRender) return;
|
|
49
|
+
setIsAnimating(false);
|
|
50
|
+
}, [enabled, open, shouldRender]);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!enabled || !shouldRender || !open) return;
|
|
53
|
+
let raf2 = 0;
|
|
54
|
+
const raf1 = requestAnimationFrame(() => {
|
|
55
|
+
raf2 = requestAnimationFrame(() => setIsAnimating(true));
|
|
56
|
+
});
|
|
57
|
+
return () => {
|
|
58
|
+
cancelAnimationFrame(raf1);
|
|
59
|
+
if (raf2) cancelAnimationFrame(raf2);
|
|
60
|
+
};
|
|
61
|
+
}, [shouldRender, open, enabled]);
|
|
62
|
+
const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
|
|
63
|
+
const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
|
|
64
|
+
const panelStyle = enabled ? {
|
|
65
|
+
transform: isAnimating ? "translateY(0)" : hiddenTransform,
|
|
66
|
+
opacity: isAnimating ? 1 : 0,
|
|
67
|
+
transitionProperty: "transform, opacity",
|
|
68
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
69
|
+
transitionTimingFunction: motionEasing
|
|
70
|
+
} : void 0;
|
|
71
|
+
const backdropStyle = enabled ? {
|
|
72
|
+
opacity: isAnimating ? 1 : 0,
|
|
73
|
+
transitionProperty: "opacity",
|
|
74
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
75
|
+
transitionTimingFunction: motionEasing
|
|
76
|
+
} : void 0;
|
|
77
|
+
return { shouldRender, isAnimating, panelStyle, backdropStyle };
|
|
78
|
+
}
|
|
79
|
+
var MOBILE_SHEET_MAX_PX = 1024;
|
|
80
|
+
function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
|
|
81
|
+
const [isMobile, setIsMobile] = useState(() => {
|
|
82
|
+
if (typeof window === "undefined") return false;
|
|
83
|
+
return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
|
|
84
|
+
});
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
87
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
88
|
+
mq.addEventListener("change", handler);
|
|
89
|
+
return () => mq.removeEventListener("change", handler);
|
|
90
|
+
}, [breakpoint]);
|
|
91
|
+
return isMobile;
|
|
92
|
+
}
|
|
16
93
|
var twMerge = extendTailwindMerge({
|
|
17
94
|
extend: {
|
|
18
95
|
theme: {
|
|
@@ -173,7 +250,7 @@ var Avatar = ({
|
|
|
173
250
|
};
|
|
174
251
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
175
252
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
176
|
-
function CheckboxAnimatedCheckMark({ className }) {
|
|
253
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
177
254
|
const pathRef = useRef(null);
|
|
178
255
|
useLayoutEffect(() => {
|
|
179
256
|
const path = pathRef.current;
|
|
@@ -194,7 +271,7 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
194
271
|
});
|
|
195
272
|
return () => anim.cancel();
|
|
196
273
|
}, []);
|
|
197
|
-
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 14 14", fill: "none", className: cx("block
|
|
274
|
+
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", width: pixelSize, height: pixelSize, viewBox: "0 0 14 14", fill: "none", className: cx("block", className), children: /* @__PURE__ */ jsx(
|
|
198
275
|
"path",
|
|
199
276
|
{
|
|
200
277
|
ref: pathRef,
|
|
@@ -209,14 +286,15 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
209
286
|
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
210
287
|
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
211
288
|
const isChecked = isSelected || isIndeterminate;
|
|
212
|
-
const
|
|
289
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
213
290
|
return /* @__PURE__ */ jsxs(
|
|
214
291
|
"div",
|
|
215
292
|
{
|
|
216
293
|
className: cx(
|
|
217
|
-
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center border border-solid border-primary",
|
|
294
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
218
295
|
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
219
296
|
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
297
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
220
298
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
221
299
|
isDisabled && !isChecked && "bg-tertiary",
|
|
222
300
|
isFocusVisible && !isDisabled && focusRingShadow,
|
|
@@ -227,13 +305,15 @@ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size =
|
|
|
227
305
|
"svg",
|
|
228
306
|
{
|
|
229
307
|
"aria-hidden": "true",
|
|
308
|
+
width: iconPixelSize,
|
|
309
|
+
height: iconPixelSize,
|
|
230
310
|
viewBox: "0 0 14 14",
|
|
231
311
|
fill: "none",
|
|
232
|
-
className:
|
|
312
|
+
className: "pointer-events-none block text-fg-white",
|
|
233
313
|
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
234
314
|
}
|
|
235
315
|
),
|
|
236
|
-
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { className:
|
|
316
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
237
317
|
]
|
|
238
318
|
}
|
|
239
319
|
);
|
|
@@ -278,6 +358,7 @@ var RadioButtonBase = ({ className, isFocusVisible, isSelected, isDisabled, size
|
|
|
278
358
|
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip rounded-full border border-solid border-primary bg-primary",
|
|
279
359
|
size === "sm" ? "size-4" : "size-5",
|
|
280
360
|
isSelected && "border-transparent bg-brand-solid",
|
|
361
|
+
!isSelected && !isDisabled && "group-hover:bg-primary_hover",
|
|
281
362
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
282
363
|
isDisabled && !isSelected && "bg-tertiary",
|
|
283
364
|
isFocusVisible && !isDisabled && focusRingShadow2,
|
|
@@ -319,7 +400,7 @@ var ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected
|
|
|
319
400
|
const classes = slim ? styles3.slim[size] : styles3.default[size];
|
|
320
401
|
const offTrackBackground = (() => {
|
|
321
402
|
if (isDisabled) return "bg-tertiary";
|
|
322
|
-
if (isHovered) return
|
|
403
|
+
if (isHovered) return "bg-toggle-track_hover";
|
|
323
404
|
return "bg-quaternary";
|
|
324
405
|
})();
|
|
325
406
|
return /* @__PURE__ */ jsx(
|
|
@@ -414,11 +495,11 @@ var DropdownItem = ({ label, children, addon, icon: Icon, avatarUrl, unstyled, s
|
|
|
414
495
|
children: [
|
|
415
496
|
state.selectionMode !== "none" && !avatarUrl && !Icon && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "mr-2" }),
|
|
416
497
|
avatarUrl && /* @__PURE__ */ jsx("div", { className: "mr-2 flex size-4 items-center justify-center", children: /* @__PURE__ */ jsx(Avatar, { "aria-hidden": "true", size: "xs", src: avatarUrl, alt: label, className: "size-5" }) }),
|
|
417
|
-
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
498
|
+
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-secondary" }),
|
|
418
499
|
/* @__PURE__ */ jsx("span", { className: cx("grow truncate text-sm font-semibold text-secondary", state.isFocused && "text-secondary_hover"), children: label || (typeof children === "function" ? children(state) : children) }),
|
|
419
500
|
addon && /* @__PURE__ */ jsx("span", { className: "ml-1 shrink-0 pr-1 text-xs font-medium text-quaternary", children: addon }),
|
|
420
501
|
state.selectionMode !== "none" && (avatarUrl || Icon) && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "ml-1" }),
|
|
421
|
-
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
502
|
+
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-secondary" })
|
|
422
503
|
]
|
|
423
504
|
}
|
|
424
505
|
)
|
|
@@ -434,21 +515,105 @@ var DropdownMenu = (props) => {
|
|
|
434
515
|
}
|
|
435
516
|
);
|
|
436
517
|
};
|
|
437
|
-
var
|
|
438
|
-
|
|
439
|
-
|
|
518
|
+
var DropdownSheetDepthContext = createContext(0);
|
|
519
|
+
function DropdownSheetCloseButton({ onClose }) {
|
|
520
|
+
return /* @__PURE__ */ jsxs(
|
|
521
|
+
"button",
|
|
440
522
|
{
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
523
|
+
type: "button",
|
|
524
|
+
onClick: (e) => {
|
|
525
|
+
e.stopPropagation();
|
|
526
|
+
onClose();
|
|
527
|
+
},
|
|
528
|
+
className: "flex size-12 shrink-0 cursor-pointer items-center justify-center rounded-full text-fg-primary transition duration-100 ease-linear hover:bg-primary_hover active:scale-[0.96] focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]",
|
|
529
|
+
children: [
|
|
530
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
|
|
531
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
532
|
+
]
|
|
450
533
|
}
|
|
451
534
|
);
|
|
535
|
+
}
|
|
536
|
+
function DropdownSheetChrome({ title, onClose, children }) {
|
|
537
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
538
|
+
/* @__PURE__ */ jsxs("div", { className: cx("flex w-full shrink-0 items-center py-2 pl-4 pr-2", title ? "justify-between gap-3" : "justify-end"), children: [
|
|
539
|
+
title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
|
|
540
|
+
/* @__PURE__ */ jsx(DropdownSheetCloseButton, { onClose })
|
|
541
|
+
] }),
|
|
542
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-[max(2.5rem,calc(env(safe-area-inset-bottom)+2rem))]", children })
|
|
543
|
+
] });
|
|
544
|
+
}
|
|
545
|
+
var DropdownPopover = ({ mobileOptions, children, className, style, ...props }) => {
|
|
546
|
+
const isMobile = useIsMobile();
|
|
547
|
+
const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
|
|
548
|
+
const useMobileSheet = isMobile && resolvedMobile.sheet;
|
|
549
|
+
const overlayState = useContext(OverlayTriggerStateContext);
|
|
550
|
+
const open = overlayState?.isOpen ?? false;
|
|
551
|
+
const parentDepth = useContext(DropdownSheetDepthContext);
|
|
552
|
+
const depth = parentDepth + 1;
|
|
553
|
+
const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
|
|
554
|
+
useEffect(() => {
|
|
555
|
+
if (!useMobileSheet || !open) return;
|
|
556
|
+
const prev = document.body.style.overflow;
|
|
557
|
+
document.body.style.overflow = "hidden";
|
|
558
|
+
return () => {
|
|
559
|
+
document.body.style.overflow = prev;
|
|
560
|
+
};
|
|
561
|
+
}, [useMobileSheet, open]);
|
|
562
|
+
if (!useMobileSheet) {
|
|
563
|
+
return /* @__PURE__ */ jsx(
|
|
564
|
+
Popover,
|
|
565
|
+
{
|
|
566
|
+
placement: "bottom right",
|
|
567
|
+
...props,
|
|
568
|
+
style,
|
|
569
|
+
className: (state) => cx(
|
|
570
|
+
"w-62 origin-(--trigger-anchor-point) overflow-auto rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
|
|
571
|
+
state.isEntering && "duration-150 ease-out animate-in fade-in placement-right:slide-in-from-left-0.5 placement-top:slide-in-from-bottom-0.5 placement-bottom:slide-in-from-top-0.5",
|
|
572
|
+
state.isExiting && "duration-100 ease-in animate-out fade-out placement-right:slide-out-to-left-0.5 placement-top:slide-out-to-bottom-0.5 placement-bottom:slide-out-to-top-0.5",
|
|
573
|
+
typeof className === "function" ? className(state) : className
|
|
574
|
+
),
|
|
575
|
+
children
|
|
576
|
+
}
|
|
577
|
+
);
|
|
578
|
+
}
|
|
579
|
+
const close = () => overlayState?.close();
|
|
580
|
+
const showMobileSheet = shouldRender;
|
|
581
|
+
const isMobileSheetExiting = showMobileSheet && !open;
|
|
582
|
+
const scrimZIndex = 50 + (depth - 1) * 10;
|
|
583
|
+
const sheetZIndex = scrimZIndex + 1;
|
|
584
|
+
const mobileScrim = shouldRender && typeof document !== "undefined" ? createPortal(
|
|
585
|
+
/* @__PURE__ */ jsx(
|
|
586
|
+
"div",
|
|
587
|
+
{
|
|
588
|
+
className: "fixed inset-0 bg-overlay/70",
|
|
589
|
+
style: { ...backdropStyle, zIndex: scrimZIndex },
|
|
590
|
+
onClick: close,
|
|
591
|
+
"aria-hidden": "true"
|
|
592
|
+
}
|
|
593
|
+
),
|
|
594
|
+
document.body
|
|
595
|
+
) : null;
|
|
596
|
+
return /* @__PURE__ */ jsxs(DropdownSheetDepthContext.Provider, { value: depth, children: [
|
|
597
|
+
mobileScrim,
|
|
598
|
+
/* @__PURE__ */ jsx(
|
|
599
|
+
Popover,
|
|
600
|
+
{
|
|
601
|
+
placement: "bottom",
|
|
602
|
+
containerPadding: 0,
|
|
603
|
+
offset: 0,
|
|
604
|
+
...props,
|
|
605
|
+
isExiting: isMobileSheetExiting,
|
|
606
|
+
"data-dropdown-mobile-sheet": true,
|
|
607
|
+
style: { ...panelStyle, zIndex: sheetZIndex, ...style },
|
|
608
|
+
className: (state) => cx(
|
|
609
|
+
"fixed! inset-x-0! bottom-0! top-auto! right-0! left-0! flex max-h-[min(90dvh,calc(100dvh-env(safe-area-inset-bottom,0px)))] w-full! max-w-none! flex-col overflow-hidden rounded-t-2xl rounded-b-none border-x-0 border-t border-secondary bg-primary shadow-xl outline-hidden",
|
|
610
|
+
resolvedMobile.sheetClassName,
|
|
611
|
+
typeof className === "function" ? className(state) : className
|
|
612
|
+
),
|
|
613
|
+
children: /* @__PURE__ */ jsx(DropdownSheetChrome, { title: resolvedMobile.title, onClose: close, children: typeof children === "function" ? null : children })
|
|
614
|
+
}
|
|
615
|
+
)
|
|
616
|
+
] });
|
|
452
617
|
};
|
|
453
618
|
var DropdownSeparator = (props) => {
|
|
454
619
|
return /* @__PURE__ */ jsx(Separator, { ...props, className: cx("my-1 h-px w-full bg-border-secondary", props.className) });
|