@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,15 +1,92 @@
|
|
|
1
|
-
import { createContext, useState,
|
|
1
|
+
import { createContext, useState, useMemo, useContext, useEffect, useCallback, useLayoutEffect, useRef } from 'react';
|
|
2
2
|
import { CaretDownIcon } from '@phosphor-icons/react/dist/csr/CaretDown';
|
|
3
3
|
import { TrashIcon } from '@phosphor-icons/react/dist/csr/Trash';
|
|
4
|
-
import { MenuTrigger, Button, MenuSection, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
4
|
+
import { MenuTrigger, Button, MenuSection, OverlayTriggerStateContext, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
5
|
+
import { createPortal } from 'react-dom';
|
|
5
6
|
import { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';
|
|
6
7
|
import { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';
|
|
7
8
|
import '@phosphor-icons/react/dist/csr/DotsThreeVertical';
|
|
9
|
+
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
8
10
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
9
11
|
import { UserIcon } from '@phosphor-icons/react/dist/csr/User';
|
|
10
12
|
import '@phosphor-icons/react/dist/csr/Plus';
|
|
11
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
13
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
12
14
|
|
|
15
|
+
var MOBILE_SHEET_MOTION_MS = 175;
|
|
16
|
+
var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
|
|
17
|
+
var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
|
|
18
|
+
var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
|
|
19
|
+
function resolveSelectMobileOptions(mobileOptions) {
|
|
20
|
+
return {
|
|
21
|
+
sheet: mobileOptions?.sheet ?? true,
|
|
22
|
+
title: mobileOptions?.title,
|
|
23
|
+
sheetClassName: mobileOptions?.className,
|
|
24
|
+
contentClassName: mobileOptions?.contentClassName
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
|
|
28
|
+
const [shouldRender, setShouldRender] = useState(open);
|
|
29
|
+
const [isAnimating, setIsAnimating] = useState(false);
|
|
30
|
+
useLayoutEffect(() => {
|
|
31
|
+
if (!enabled) {
|
|
32
|
+
setShouldRender(open);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (open) {
|
|
36
|
+
setShouldRender(true);
|
|
37
|
+
}
|
|
38
|
+
}, [open, enabled]);
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (!enabled || open) return;
|
|
41
|
+
const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
|
|
42
|
+
return () => clearTimeout(timer);
|
|
43
|
+
}, [open, enabled]);
|
|
44
|
+
useLayoutEffect(() => {
|
|
45
|
+
if (!enabled || open || !shouldRender) return;
|
|
46
|
+
setIsAnimating(false);
|
|
47
|
+
}, [enabled, open, shouldRender]);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!enabled || !shouldRender || !open) return;
|
|
50
|
+
let raf2 = 0;
|
|
51
|
+
const raf1 = requestAnimationFrame(() => {
|
|
52
|
+
raf2 = requestAnimationFrame(() => setIsAnimating(true));
|
|
53
|
+
});
|
|
54
|
+
return () => {
|
|
55
|
+
cancelAnimationFrame(raf1);
|
|
56
|
+
if (raf2) cancelAnimationFrame(raf2);
|
|
57
|
+
};
|
|
58
|
+
}, [shouldRender, open, enabled]);
|
|
59
|
+
const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
|
|
60
|
+
const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
|
|
61
|
+
const panelStyle = enabled ? {
|
|
62
|
+
transform: isAnimating ? "translateY(0)" : hiddenTransform,
|
|
63
|
+
opacity: isAnimating ? 1 : 0,
|
|
64
|
+
transitionProperty: "transform, opacity",
|
|
65
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
66
|
+
transitionTimingFunction: motionEasing
|
|
67
|
+
} : void 0;
|
|
68
|
+
const backdropStyle = enabled ? {
|
|
69
|
+
opacity: isAnimating ? 1 : 0,
|
|
70
|
+
transitionProperty: "opacity",
|
|
71
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
72
|
+
transitionTimingFunction: motionEasing
|
|
73
|
+
} : void 0;
|
|
74
|
+
return { shouldRender, isAnimating, panelStyle, backdropStyle };
|
|
75
|
+
}
|
|
76
|
+
var MOBILE_SHEET_MAX_PX = 1024;
|
|
77
|
+
function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
|
|
78
|
+
const [isMobile, setIsMobile] = useState(() => {
|
|
79
|
+
if (typeof window === "undefined") return false;
|
|
80
|
+
return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
|
|
81
|
+
});
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
84
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
85
|
+
mq.addEventListener("change", handler);
|
|
86
|
+
return () => mq.removeEventListener("change", handler);
|
|
87
|
+
}, [breakpoint]);
|
|
88
|
+
return isMobile;
|
|
89
|
+
}
|
|
13
90
|
var twMerge = extendTailwindMerge({
|
|
14
91
|
extend: {
|
|
15
92
|
theme: {
|
|
@@ -170,7 +247,7 @@ var Avatar = ({
|
|
|
170
247
|
};
|
|
171
248
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
172
249
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
173
|
-
function CheckboxAnimatedCheckMark({ className }) {
|
|
250
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
174
251
|
const pathRef = useRef(null);
|
|
175
252
|
useLayoutEffect(() => {
|
|
176
253
|
const path = pathRef.current;
|
|
@@ -191,7 +268,7 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
191
268
|
});
|
|
192
269
|
return () => anim.cancel();
|
|
193
270
|
}, []);
|
|
194
|
-
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 14 14", fill: "none", className: cx("block
|
|
271
|
+
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(
|
|
195
272
|
"path",
|
|
196
273
|
{
|
|
197
274
|
ref: pathRef,
|
|
@@ -206,14 +283,15 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
206
283
|
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
207
284
|
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
208
285
|
const isChecked = isSelected || isIndeterminate;
|
|
209
|
-
const
|
|
286
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
210
287
|
return /* @__PURE__ */ jsxs(
|
|
211
288
|
"div",
|
|
212
289
|
{
|
|
213
290
|
className: cx(
|
|
214
|
-
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center border border-solid border-primary",
|
|
291
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
215
292
|
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
216
293
|
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
294
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
217
295
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
218
296
|
isDisabled && !isChecked && "bg-tertiary",
|
|
219
297
|
isFocusVisible && !isDisabled && focusRingShadow,
|
|
@@ -224,13 +302,15 @@ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size =
|
|
|
224
302
|
"svg",
|
|
225
303
|
{
|
|
226
304
|
"aria-hidden": "true",
|
|
305
|
+
width: iconPixelSize,
|
|
306
|
+
height: iconPixelSize,
|
|
227
307
|
viewBox: "0 0 14 14",
|
|
228
308
|
fill: "none",
|
|
229
|
-
className:
|
|
309
|
+
className: "pointer-events-none block text-fg-white",
|
|
230
310
|
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
231
311
|
}
|
|
232
312
|
),
|
|
233
|
-
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { className:
|
|
313
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
234
314
|
]
|
|
235
315
|
}
|
|
236
316
|
);
|
|
@@ -275,6 +355,7 @@ var RadioButtonBase = ({ className, isFocusVisible, isSelected, isDisabled, size
|
|
|
275
355
|
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip rounded-full border border-solid border-primary bg-primary",
|
|
276
356
|
size === "sm" ? "size-4" : "size-5",
|
|
277
357
|
isSelected && "border-transparent bg-brand-solid",
|
|
358
|
+
!isSelected && !isDisabled && "group-hover:bg-primary_hover",
|
|
278
359
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
279
360
|
isDisabled && !isSelected && "bg-tertiary",
|
|
280
361
|
isFocusVisible && !isDisabled && focusRingShadow2,
|
|
@@ -316,7 +397,7 @@ var ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected
|
|
|
316
397
|
const classes = slim ? styles2.slim[size] : styles2.default[size];
|
|
317
398
|
const offTrackBackground = (() => {
|
|
318
399
|
if (isDisabled) return "bg-tertiary";
|
|
319
|
-
if (isHovered) return
|
|
400
|
+
if (isHovered) return "bg-toggle-track_hover";
|
|
320
401
|
return "bg-quaternary";
|
|
321
402
|
})();
|
|
322
403
|
return /* @__PURE__ */ jsx(
|
|
@@ -411,11 +492,11 @@ var DropdownItem = ({ label, children, addon, icon: Icon, avatarUrl, unstyled, s
|
|
|
411
492
|
children: [
|
|
412
493
|
state.selectionMode !== "none" && !avatarUrl && !Icon && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "mr-2" }),
|
|
413
494
|
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" }) }),
|
|
414
|
-
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
495
|
+
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-secondary" }),
|
|
415
496
|
/* @__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) }),
|
|
416
497
|
addon && /* @__PURE__ */ jsx("span", { className: "ml-1 shrink-0 pr-1 text-xs font-medium text-quaternary", children: addon }),
|
|
417
498
|
state.selectionMode !== "none" && (avatarUrl || Icon) && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "ml-1" }),
|
|
418
|
-
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
499
|
+
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-secondary" })
|
|
419
500
|
]
|
|
420
501
|
}
|
|
421
502
|
)
|
|
@@ -431,21 +512,105 @@ var DropdownMenu = (props) => {
|
|
|
431
512
|
}
|
|
432
513
|
);
|
|
433
514
|
};
|
|
434
|
-
var
|
|
435
|
-
|
|
436
|
-
|
|
515
|
+
var DropdownSheetDepthContext = createContext(0);
|
|
516
|
+
function DropdownSheetCloseButton({ onClose }) {
|
|
517
|
+
return /* @__PURE__ */ jsxs(
|
|
518
|
+
"button",
|
|
437
519
|
{
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
520
|
+
type: "button",
|
|
521
|
+
onClick: (e) => {
|
|
522
|
+
e.stopPropagation();
|
|
523
|
+
onClose();
|
|
524
|
+
},
|
|
525
|
+
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)]",
|
|
526
|
+
children: [
|
|
527
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
|
|
528
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
529
|
+
]
|
|
447
530
|
}
|
|
448
531
|
);
|
|
532
|
+
}
|
|
533
|
+
function DropdownSheetChrome({ title, onClose, children }) {
|
|
534
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
535
|
+
/* @__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: [
|
|
536
|
+
title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
|
|
537
|
+
/* @__PURE__ */ jsx(DropdownSheetCloseButton, { onClose })
|
|
538
|
+
] }),
|
|
539
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-[max(2.5rem,calc(env(safe-area-inset-bottom)+2rem))]", children })
|
|
540
|
+
] });
|
|
541
|
+
}
|
|
542
|
+
var DropdownPopover = ({ mobileOptions, children, className, style, ...props }) => {
|
|
543
|
+
const isMobile = useIsMobile();
|
|
544
|
+
const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
|
|
545
|
+
const useMobileSheet = isMobile && resolvedMobile.sheet;
|
|
546
|
+
const overlayState = useContext(OverlayTriggerStateContext);
|
|
547
|
+
const open = overlayState?.isOpen ?? false;
|
|
548
|
+
const parentDepth = useContext(DropdownSheetDepthContext);
|
|
549
|
+
const depth = parentDepth + 1;
|
|
550
|
+
const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
|
|
551
|
+
useEffect(() => {
|
|
552
|
+
if (!useMobileSheet || !open) return;
|
|
553
|
+
const prev = document.body.style.overflow;
|
|
554
|
+
document.body.style.overflow = "hidden";
|
|
555
|
+
return () => {
|
|
556
|
+
document.body.style.overflow = prev;
|
|
557
|
+
};
|
|
558
|
+
}, [useMobileSheet, open]);
|
|
559
|
+
if (!useMobileSheet) {
|
|
560
|
+
return /* @__PURE__ */ jsx(
|
|
561
|
+
Popover,
|
|
562
|
+
{
|
|
563
|
+
placement: "bottom right",
|
|
564
|
+
...props,
|
|
565
|
+
style,
|
|
566
|
+
className: (state) => cx(
|
|
567
|
+
"w-62 origin-(--trigger-anchor-point) overflow-auto rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
|
|
568
|
+
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",
|
|
569
|
+
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",
|
|
570
|
+
typeof className === "function" ? className(state) : className
|
|
571
|
+
),
|
|
572
|
+
children
|
|
573
|
+
}
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
const close = () => overlayState?.close();
|
|
577
|
+
const showMobileSheet = shouldRender;
|
|
578
|
+
const isMobileSheetExiting = showMobileSheet && !open;
|
|
579
|
+
const scrimZIndex = 50 + (depth - 1) * 10;
|
|
580
|
+
const sheetZIndex = scrimZIndex + 1;
|
|
581
|
+
const mobileScrim = shouldRender && typeof document !== "undefined" ? createPortal(
|
|
582
|
+
/* @__PURE__ */ jsx(
|
|
583
|
+
"div",
|
|
584
|
+
{
|
|
585
|
+
className: "fixed inset-0 bg-overlay/70",
|
|
586
|
+
style: { ...backdropStyle, zIndex: scrimZIndex },
|
|
587
|
+
onClick: close,
|
|
588
|
+
"aria-hidden": "true"
|
|
589
|
+
}
|
|
590
|
+
),
|
|
591
|
+
document.body
|
|
592
|
+
) : null;
|
|
593
|
+
return /* @__PURE__ */ jsxs(DropdownSheetDepthContext.Provider, { value: depth, children: [
|
|
594
|
+
mobileScrim,
|
|
595
|
+
/* @__PURE__ */ jsx(
|
|
596
|
+
Popover,
|
|
597
|
+
{
|
|
598
|
+
placement: "bottom",
|
|
599
|
+
containerPadding: 0,
|
|
600
|
+
offset: 0,
|
|
601
|
+
...props,
|
|
602
|
+
isExiting: isMobileSheetExiting,
|
|
603
|
+
"data-dropdown-mobile-sheet": true,
|
|
604
|
+
style: { ...panelStyle, zIndex: sheetZIndex, ...style },
|
|
605
|
+
className: (state) => cx(
|
|
606
|
+
"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",
|
|
607
|
+
resolvedMobile.sheetClassName,
|
|
608
|
+
typeof className === "function" ? className(state) : className
|
|
609
|
+
),
|
|
610
|
+
children: /* @__PURE__ */ jsx(DropdownSheetChrome, { title: resolvedMobile.title, onClose: close, children: typeof children === "function" ? null : children })
|
|
611
|
+
}
|
|
612
|
+
)
|
|
613
|
+
] });
|
|
449
614
|
};
|
|
450
615
|
var DropdownSeparator = (props) => {
|
|
451
616
|
return /* @__PURE__ */ jsx(Separator, { ...props, className: cx("my-1 h-px w-full bg-border-secondary", props.className) });
|