@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, useCallback, isValidElement,
|
|
1
|
+
import { createContext, useState, useMemo, useContext, useEffect, useCallback, isValidElement, useLayoutEffect, useRef } from 'react';
|
|
2
2
|
import { ShippingContainerIcon } from '@phosphor-icons/react/dist/csr/ShippingContainer';
|
|
3
3
|
import { QuestionIcon } from '@phosphor-icons/react/dist/csr/Question';
|
|
4
4
|
import { StackIcon } from '@phosphor-icons/react/dist/csr/Stack';
|
|
@@ -6,13 +6,15 @@ import { SignOutIcon } from '@phosphor-icons/react/dist/csr/SignOut';
|
|
|
6
6
|
import { MoonIcon } from '@phosphor-icons/react/dist/csr/Moon';
|
|
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 as Button$1, MenuSection, SubmenuTrigger, Popover, Menu, MenuItem, Separator, Link } from 'react-aria-components';
|
|
9
|
+
import { MenuTrigger, Button as Button$1, MenuSection, SubmenuTrigger, OverlayTriggerStateContext, Popover, Menu, MenuItem, Separator, Link } from 'react-aria-components';
|
|
10
10
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
11
11
|
import '@phosphor-icons/react/dist/csr/Plus';
|
|
12
12
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
13
|
+
import { createPortal } from 'react-dom';
|
|
13
14
|
import { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';
|
|
14
15
|
import { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';
|
|
15
16
|
import '@phosphor-icons/react/dist/csr/DotsThreeVertical';
|
|
17
|
+
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
16
18
|
|
|
17
19
|
var twMerge = extendTailwindMerge({
|
|
18
20
|
extend: {
|
|
@@ -298,7 +300,7 @@ var styles2 = sortCx({
|
|
|
298
300
|
"hover:bg-primary_hover hover:text-secondary_hover",
|
|
299
301
|
"disabled:opacity-50",
|
|
300
302
|
"data-loading:bg-primary_hover",
|
|
301
|
-
"*:data-icon:text-fg-secondary
|
|
303
|
+
"*:data-icon:text-fg-secondary"
|
|
302
304
|
].join(" ")
|
|
303
305
|
},
|
|
304
306
|
/** Figma Hierarchy=Tertiary */
|
|
@@ -308,7 +310,7 @@ var styles2 = sortCx({
|
|
|
308
310
|
focusShadowPlain,
|
|
309
311
|
"hover:bg-primary_hover hover:text-tertiary_hover",
|
|
310
312
|
"disabled:opacity-50",
|
|
311
|
-
"*:data-icon:text-fg-tertiary
|
|
313
|
+
"*:data-icon:text-fg-tertiary"
|
|
312
314
|
].join(" ")
|
|
313
315
|
},
|
|
314
316
|
/** Figma Hierarchy=Link color — text + icons share brand-secondary; hover underlines with fg-brand-secondary. */
|
|
@@ -439,9 +441,84 @@ var Button = ({
|
|
|
439
441
|
}
|
|
440
442
|
return /* @__PURE__ */ jsx(Button$1, { ...commonProps, type: commonProps.type || "button", isPending: loading });
|
|
441
443
|
};
|
|
444
|
+
var MOBILE_SHEET_MOTION_MS = 175;
|
|
445
|
+
var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
|
|
446
|
+
var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
|
|
447
|
+
var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
|
|
448
|
+
function resolveSelectMobileOptions(mobileOptions) {
|
|
449
|
+
return {
|
|
450
|
+
sheet: mobileOptions?.sheet ?? true,
|
|
451
|
+
title: mobileOptions?.title,
|
|
452
|
+
sheetClassName: mobileOptions?.className,
|
|
453
|
+
contentClassName: mobileOptions?.contentClassName
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
|
|
457
|
+
const [shouldRender, setShouldRender] = useState(open);
|
|
458
|
+
const [isAnimating, setIsAnimating] = useState(false);
|
|
459
|
+
useLayoutEffect(() => {
|
|
460
|
+
if (!enabled) {
|
|
461
|
+
setShouldRender(open);
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
if (open) {
|
|
465
|
+
setShouldRender(true);
|
|
466
|
+
}
|
|
467
|
+
}, [open, enabled]);
|
|
468
|
+
useEffect(() => {
|
|
469
|
+
if (!enabled || open) return;
|
|
470
|
+
const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
|
|
471
|
+
return () => clearTimeout(timer);
|
|
472
|
+
}, [open, enabled]);
|
|
473
|
+
useLayoutEffect(() => {
|
|
474
|
+
if (!enabled || open || !shouldRender) return;
|
|
475
|
+
setIsAnimating(false);
|
|
476
|
+
}, [enabled, open, shouldRender]);
|
|
477
|
+
useEffect(() => {
|
|
478
|
+
if (!enabled || !shouldRender || !open) return;
|
|
479
|
+
let raf2 = 0;
|
|
480
|
+
const raf1 = requestAnimationFrame(() => {
|
|
481
|
+
raf2 = requestAnimationFrame(() => setIsAnimating(true));
|
|
482
|
+
});
|
|
483
|
+
return () => {
|
|
484
|
+
cancelAnimationFrame(raf1);
|
|
485
|
+
if (raf2) cancelAnimationFrame(raf2);
|
|
486
|
+
};
|
|
487
|
+
}, [shouldRender, open, enabled]);
|
|
488
|
+
const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
|
|
489
|
+
const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
|
|
490
|
+
const panelStyle = enabled ? {
|
|
491
|
+
transform: isAnimating ? "translateY(0)" : hiddenTransform,
|
|
492
|
+
opacity: isAnimating ? 1 : 0,
|
|
493
|
+
transitionProperty: "transform, opacity",
|
|
494
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
495
|
+
transitionTimingFunction: motionEasing
|
|
496
|
+
} : void 0;
|
|
497
|
+
const backdropStyle = enabled ? {
|
|
498
|
+
opacity: isAnimating ? 1 : 0,
|
|
499
|
+
transitionProperty: "opacity",
|
|
500
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
501
|
+
transitionTimingFunction: motionEasing
|
|
502
|
+
} : void 0;
|
|
503
|
+
return { shouldRender, isAnimating, panelStyle, backdropStyle };
|
|
504
|
+
}
|
|
505
|
+
var MOBILE_SHEET_MAX_PX = 1024;
|
|
506
|
+
function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
|
|
507
|
+
const [isMobile, setIsMobile] = useState(() => {
|
|
508
|
+
if (typeof window === "undefined") return false;
|
|
509
|
+
return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
|
|
510
|
+
});
|
|
511
|
+
useEffect(() => {
|
|
512
|
+
const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
513
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
514
|
+
mq.addEventListener("change", handler);
|
|
515
|
+
return () => mq.removeEventListener("change", handler);
|
|
516
|
+
}, [breakpoint]);
|
|
517
|
+
return isMobile;
|
|
518
|
+
}
|
|
442
519
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
443
520
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
444
|
-
function CheckboxAnimatedCheckMark({ className }) {
|
|
521
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
445
522
|
const pathRef = useRef(null);
|
|
446
523
|
useLayoutEffect(() => {
|
|
447
524
|
const path = pathRef.current;
|
|
@@ -462,7 +539,7 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
462
539
|
});
|
|
463
540
|
return () => anim.cancel();
|
|
464
541
|
}, []);
|
|
465
|
-
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 14 14", fill: "none", className: cx("block
|
|
542
|
+
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(
|
|
466
543
|
"path",
|
|
467
544
|
{
|
|
468
545
|
ref: pathRef,
|
|
@@ -477,14 +554,15 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
477
554
|
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
478
555
|
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
479
556
|
const isChecked = isSelected || isIndeterminate;
|
|
480
|
-
const
|
|
557
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
481
558
|
return /* @__PURE__ */ jsxs(
|
|
482
559
|
"div",
|
|
483
560
|
{
|
|
484
561
|
className: cx(
|
|
485
|
-
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center border border-solid border-primary",
|
|
562
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
486
563
|
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
487
564
|
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
565
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
488
566
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
489
567
|
isDisabled && !isChecked && "bg-tertiary",
|
|
490
568
|
isFocusVisible && !isDisabled && focusRingShadow,
|
|
@@ -495,13 +573,15 @@ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size =
|
|
|
495
573
|
"svg",
|
|
496
574
|
{
|
|
497
575
|
"aria-hidden": "true",
|
|
576
|
+
width: iconPixelSize,
|
|
577
|
+
height: iconPixelSize,
|
|
498
578
|
viewBox: "0 0 14 14",
|
|
499
579
|
fill: "none",
|
|
500
|
-
className:
|
|
580
|
+
className: "pointer-events-none block text-fg-white",
|
|
501
581
|
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
502
582
|
}
|
|
503
583
|
),
|
|
504
|
-
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { className:
|
|
584
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
505
585
|
]
|
|
506
586
|
}
|
|
507
587
|
);
|
|
@@ -546,6 +626,7 @@ var RadioButtonBase = ({ className, isFocusVisible, isSelected, isDisabled, size
|
|
|
546
626
|
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip rounded-full border border-solid border-primary bg-primary",
|
|
547
627
|
size === "sm" ? "size-4" : "size-5",
|
|
548
628
|
isSelected && "border-transparent bg-brand-solid",
|
|
629
|
+
!isSelected && !isDisabled && "group-hover:bg-primary_hover",
|
|
549
630
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
550
631
|
isDisabled && !isSelected && "bg-tertiary",
|
|
551
632
|
isFocusVisible && !isDisabled && focusRingShadow2,
|
|
@@ -587,7 +668,7 @@ var ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected
|
|
|
587
668
|
const classes = slim ? styles4.slim[size] : styles4.default[size];
|
|
588
669
|
const offTrackBackground = (() => {
|
|
589
670
|
if (isDisabled) return "bg-tertiary";
|
|
590
|
-
if (isHovered) return
|
|
671
|
+
if (isHovered) return "bg-toggle-track_hover";
|
|
591
672
|
return "bg-quaternary";
|
|
592
673
|
})();
|
|
593
674
|
return /* @__PURE__ */ jsx(
|
|
@@ -682,11 +763,11 @@ var DropdownItem = ({ label, children, addon, icon: Icon, avatarUrl, unstyled, s
|
|
|
682
763
|
children: [
|
|
683
764
|
state.selectionMode !== "none" && !avatarUrl && !Icon && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "mr-2" }),
|
|
684
765
|
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" }) }),
|
|
685
|
-
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
766
|
+
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-secondary" }),
|
|
686
767
|
/* @__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) }),
|
|
687
768
|
addon && /* @__PURE__ */ jsx("span", { className: "ml-1 shrink-0 pr-1 text-xs font-medium text-quaternary", children: addon }),
|
|
688
769
|
state.selectionMode !== "none" && (avatarUrl || Icon) && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "ml-1" }),
|
|
689
|
-
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
770
|
+
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-secondary" })
|
|
690
771
|
]
|
|
691
772
|
}
|
|
692
773
|
)
|
|
@@ -702,21 +783,105 @@ var DropdownMenu = (props) => {
|
|
|
702
783
|
}
|
|
703
784
|
);
|
|
704
785
|
};
|
|
705
|
-
var
|
|
706
|
-
|
|
707
|
-
|
|
786
|
+
var DropdownSheetDepthContext = createContext(0);
|
|
787
|
+
function DropdownSheetCloseButton({ onClose }) {
|
|
788
|
+
return /* @__PURE__ */ jsxs(
|
|
789
|
+
"button",
|
|
708
790
|
{
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
791
|
+
type: "button",
|
|
792
|
+
onClick: (e) => {
|
|
793
|
+
e.stopPropagation();
|
|
794
|
+
onClose();
|
|
795
|
+
},
|
|
796
|
+
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)]",
|
|
797
|
+
children: [
|
|
798
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
|
|
799
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
800
|
+
]
|
|
718
801
|
}
|
|
719
802
|
);
|
|
803
|
+
}
|
|
804
|
+
function DropdownSheetChrome({ title, onClose, children }) {
|
|
805
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
806
|
+
/* @__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: [
|
|
807
|
+
title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
|
|
808
|
+
/* @__PURE__ */ jsx(DropdownSheetCloseButton, { onClose })
|
|
809
|
+
] }),
|
|
810
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-[max(2.5rem,calc(env(safe-area-inset-bottom)+2rem))]", children })
|
|
811
|
+
] });
|
|
812
|
+
}
|
|
813
|
+
var DropdownPopover = ({ mobileOptions, children, className, style, ...props }) => {
|
|
814
|
+
const isMobile = useIsMobile();
|
|
815
|
+
const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
|
|
816
|
+
const useMobileSheet = isMobile && resolvedMobile.sheet;
|
|
817
|
+
const overlayState = useContext(OverlayTriggerStateContext);
|
|
818
|
+
const open = overlayState?.isOpen ?? false;
|
|
819
|
+
const parentDepth = useContext(DropdownSheetDepthContext);
|
|
820
|
+
const depth = parentDepth + 1;
|
|
821
|
+
const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
|
|
822
|
+
useEffect(() => {
|
|
823
|
+
if (!useMobileSheet || !open) return;
|
|
824
|
+
const prev = document.body.style.overflow;
|
|
825
|
+
document.body.style.overflow = "hidden";
|
|
826
|
+
return () => {
|
|
827
|
+
document.body.style.overflow = prev;
|
|
828
|
+
};
|
|
829
|
+
}, [useMobileSheet, open]);
|
|
830
|
+
if (!useMobileSheet) {
|
|
831
|
+
return /* @__PURE__ */ jsx(
|
|
832
|
+
Popover,
|
|
833
|
+
{
|
|
834
|
+
placement: "bottom right",
|
|
835
|
+
...props,
|
|
836
|
+
style,
|
|
837
|
+
className: (state) => cx(
|
|
838
|
+
"w-62 origin-(--trigger-anchor-point) overflow-auto rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
|
|
839
|
+
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",
|
|
840
|
+
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",
|
|
841
|
+
typeof className === "function" ? className(state) : className
|
|
842
|
+
),
|
|
843
|
+
children
|
|
844
|
+
}
|
|
845
|
+
);
|
|
846
|
+
}
|
|
847
|
+
const close = () => overlayState?.close();
|
|
848
|
+
const showMobileSheet = shouldRender;
|
|
849
|
+
const isMobileSheetExiting = showMobileSheet && !open;
|
|
850
|
+
const scrimZIndex = 50 + (depth - 1) * 10;
|
|
851
|
+
const sheetZIndex = scrimZIndex + 1;
|
|
852
|
+
const mobileScrim = shouldRender && typeof document !== "undefined" ? createPortal(
|
|
853
|
+
/* @__PURE__ */ jsx(
|
|
854
|
+
"div",
|
|
855
|
+
{
|
|
856
|
+
className: "fixed inset-0 bg-overlay/70",
|
|
857
|
+
style: { ...backdropStyle, zIndex: scrimZIndex },
|
|
858
|
+
onClick: close,
|
|
859
|
+
"aria-hidden": "true"
|
|
860
|
+
}
|
|
861
|
+
),
|
|
862
|
+
document.body
|
|
863
|
+
) : null;
|
|
864
|
+
return /* @__PURE__ */ jsxs(DropdownSheetDepthContext.Provider, { value: depth, children: [
|
|
865
|
+
mobileScrim,
|
|
866
|
+
/* @__PURE__ */ jsx(
|
|
867
|
+
Popover,
|
|
868
|
+
{
|
|
869
|
+
placement: "bottom",
|
|
870
|
+
containerPadding: 0,
|
|
871
|
+
offset: 0,
|
|
872
|
+
...props,
|
|
873
|
+
isExiting: isMobileSheetExiting,
|
|
874
|
+
"data-dropdown-mobile-sheet": true,
|
|
875
|
+
style: { ...panelStyle, zIndex: sheetZIndex, ...style },
|
|
876
|
+
className: (state) => cx(
|
|
877
|
+
"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",
|
|
878
|
+
resolvedMobile.sheetClassName,
|
|
879
|
+
typeof className === "function" ? className(state) : className
|
|
880
|
+
),
|
|
881
|
+
children: /* @__PURE__ */ jsx(DropdownSheetChrome, { title: resolvedMobile.title, onClose: close, children: typeof children === "function" ? null : children })
|
|
882
|
+
}
|
|
883
|
+
)
|
|
884
|
+
] });
|
|
720
885
|
};
|
|
721
886
|
var DropdownSeparator = (props) => {
|
|
722
887
|
return /* @__PURE__ */ jsx(Separator, { ...props, className: cx("my-1 h-px w-full bg-border-secondary", props.className) });
|