@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,16 +1,18 @@
|
|
|
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 { SignOutIcon } from '@phosphor-icons/react/dist/csr/SignOut';
|
|
4
4
|
import { MoonIcon } from '@phosphor-icons/react/dist/csr/Moon';
|
|
5
5
|
import { PlusIcon } from '@phosphor-icons/react/dist/csr/Plus';
|
|
6
6
|
import { GearIcon } from '@phosphor-icons/react/dist/csr/Gear';
|
|
7
|
-
import { MenuTrigger, Button, MenuSection, Header, SubmenuTrigger, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
7
|
+
import { MenuTrigger, Button, MenuSection, Header, SubmenuTrigger, OverlayTriggerStateContext, Popover, Menu, MenuItem, Separator } from 'react-aria-components';
|
|
8
8
|
import { UserIcon } from '@phosphor-icons/react/dist/csr/User';
|
|
9
9
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
10
|
-
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
11
|
+
import { createPortal } from 'react-dom';
|
|
11
12
|
import { CheckIcon } from '@phosphor-icons/react/dist/csr/Check';
|
|
12
13
|
import { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';
|
|
13
14
|
import '@phosphor-icons/react/dist/csr/DotsThreeVertical';
|
|
15
|
+
import { XIcon } from '@phosphor-icons/react/dist/csr/X';
|
|
14
16
|
|
|
15
17
|
var twMerge = extendTailwindMerge({
|
|
16
18
|
extend: {
|
|
@@ -170,9 +172,84 @@ var Avatar = ({
|
|
|
170
172
|
}
|
|
171
173
|
);
|
|
172
174
|
};
|
|
175
|
+
var MOBILE_SHEET_MOTION_MS = 175;
|
|
176
|
+
var MOBILE_SHEET_ENTRY_EASING = "cubic-bezier(0.85, 0, 0.15, 1)";
|
|
177
|
+
var MOBILE_SHEET_EXIT_EASING = "cubic-bezier(0.85, 0, 1, 0.15)";
|
|
178
|
+
var MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX = 120;
|
|
179
|
+
function resolveSelectMobileOptions(mobileOptions) {
|
|
180
|
+
return {
|
|
181
|
+
sheet: mobileOptions?.sheet ?? true,
|
|
182
|
+
title: mobileOptions?.title,
|
|
183
|
+
sheetClassName: mobileOptions?.className,
|
|
184
|
+
contentClassName: mobileOptions?.contentClassName
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
function useMobileSheetAnimation(open, enabled, slideEntrance = true, slideOffsetPx = MOBILE_SHEET_SLIDE_ENTRANCE_OFFSET_PX) {
|
|
188
|
+
const [shouldRender, setShouldRender] = useState(open);
|
|
189
|
+
const [isAnimating, setIsAnimating] = useState(false);
|
|
190
|
+
useLayoutEffect(() => {
|
|
191
|
+
if (!enabled) {
|
|
192
|
+
setShouldRender(open);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
if (open) {
|
|
196
|
+
setShouldRender(true);
|
|
197
|
+
}
|
|
198
|
+
}, [open, enabled]);
|
|
199
|
+
useEffect(() => {
|
|
200
|
+
if (!enabled || open) return;
|
|
201
|
+
const timer = setTimeout(() => setShouldRender(false), MOBILE_SHEET_MOTION_MS);
|
|
202
|
+
return () => clearTimeout(timer);
|
|
203
|
+
}, [open, enabled]);
|
|
204
|
+
useLayoutEffect(() => {
|
|
205
|
+
if (!enabled || open || !shouldRender) return;
|
|
206
|
+
setIsAnimating(false);
|
|
207
|
+
}, [enabled, open, shouldRender]);
|
|
208
|
+
useEffect(() => {
|
|
209
|
+
if (!enabled || !shouldRender || !open) return;
|
|
210
|
+
let raf2 = 0;
|
|
211
|
+
const raf1 = requestAnimationFrame(() => {
|
|
212
|
+
raf2 = requestAnimationFrame(() => setIsAnimating(true));
|
|
213
|
+
});
|
|
214
|
+
return () => {
|
|
215
|
+
cancelAnimationFrame(raf1);
|
|
216
|
+
if (raf2) cancelAnimationFrame(raf2);
|
|
217
|
+
};
|
|
218
|
+
}, [shouldRender, open, enabled]);
|
|
219
|
+
const motionEasing = open ? MOBILE_SHEET_ENTRY_EASING : MOBILE_SHEET_EXIT_EASING;
|
|
220
|
+
const hiddenTransform = slideEntrance ? `translateY(${slideOffsetPx}px)` : "translateY(100%)";
|
|
221
|
+
const panelStyle = enabled ? {
|
|
222
|
+
transform: isAnimating ? "translateY(0)" : hiddenTransform,
|
|
223
|
+
opacity: isAnimating ? 1 : 0,
|
|
224
|
+
transitionProperty: "transform, opacity",
|
|
225
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
226
|
+
transitionTimingFunction: motionEasing
|
|
227
|
+
} : void 0;
|
|
228
|
+
const backdropStyle = enabled ? {
|
|
229
|
+
opacity: isAnimating ? 1 : 0,
|
|
230
|
+
transitionProperty: "opacity",
|
|
231
|
+
transitionDuration: `${MOBILE_SHEET_MOTION_MS}ms`,
|
|
232
|
+
transitionTimingFunction: motionEasing
|
|
233
|
+
} : void 0;
|
|
234
|
+
return { shouldRender, isAnimating, panelStyle, backdropStyle };
|
|
235
|
+
}
|
|
236
|
+
var MOBILE_SHEET_MAX_PX = 1024;
|
|
237
|
+
function useIsMobile(breakpoint = MOBILE_SHEET_MAX_PX + 1) {
|
|
238
|
+
const [isMobile, setIsMobile] = useState(() => {
|
|
239
|
+
if (typeof window === "undefined") return false;
|
|
240
|
+
return window.matchMedia(`(max-width: ${breakpoint - 1}px)`).matches;
|
|
241
|
+
});
|
|
242
|
+
useEffect(() => {
|
|
243
|
+
const mq = window.matchMedia(`(max-width: ${breakpoint - 1}px)`);
|
|
244
|
+
const handler = (e) => setIsMobile(e.matches);
|
|
245
|
+
mq.addEventListener("change", handler);
|
|
246
|
+
return () => mq.removeEventListener("change", handler);
|
|
247
|
+
}, [breakpoint]);
|
|
248
|
+
return isMobile;
|
|
249
|
+
}
|
|
173
250
|
var CHECKBOX_TICK_DELAY_MS = 60;
|
|
174
251
|
var CHECKBOX_TICK_DRAW_MS = 100;
|
|
175
|
-
function CheckboxAnimatedCheckMark({ className }) {
|
|
252
|
+
function CheckboxAnimatedCheckMark({ pixelSize, className }) {
|
|
176
253
|
const pathRef = useRef(null);
|
|
177
254
|
useLayoutEffect(() => {
|
|
178
255
|
const path = pathRef.current;
|
|
@@ -193,7 +270,7 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
193
270
|
});
|
|
194
271
|
return () => anim.cancel();
|
|
195
272
|
}, []);
|
|
196
|
-
return /* @__PURE__ */ jsx("svg", { "aria-hidden": "true", viewBox: "0 0 14 14", fill: "none", className: cx("block
|
|
273
|
+
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(
|
|
197
274
|
"path",
|
|
198
275
|
{
|
|
199
276
|
ref: pathRef,
|
|
@@ -208,14 +285,15 @@ function CheckboxAnimatedCheckMark({ className }) {
|
|
|
208
285
|
var focusRingShadow = "outline-none [box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]";
|
|
209
286
|
var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size = "sm", isFocusVisible = false }) => {
|
|
210
287
|
const isChecked = isSelected || isIndeterminate;
|
|
211
|
-
const
|
|
288
|
+
const iconPixelSize = size === "sm" ? 10 : 14;
|
|
212
289
|
return /* @__PURE__ */ jsxs(
|
|
213
290
|
"div",
|
|
214
291
|
{
|
|
215
292
|
className: cx(
|
|
216
|
-
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center border border-solid border-primary",
|
|
293
|
+
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip border border-solid border-primary",
|
|
217
294
|
size === "sm" ? "size-4 rounded-xs" : "size-5 rounded-sm",
|
|
218
295
|
isChecked ? "border-transparent bg-brand-solid" : "bg-primary",
|
|
296
|
+
!isChecked && !isDisabled && "group-hover:bg-primary_hover",
|
|
219
297
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
220
298
|
isDisabled && !isChecked && "bg-tertiary",
|
|
221
299
|
isFocusVisible && !isDisabled && focusRingShadow,
|
|
@@ -226,13 +304,15 @@ var CheckboxBase = ({ className, isSelected, isDisabled, isIndeterminate, size =
|
|
|
226
304
|
"svg",
|
|
227
305
|
{
|
|
228
306
|
"aria-hidden": "true",
|
|
307
|
+
width: iconPixelSize,
|
|
308
|
+
height: iconPixelSize,
|
|
229
309
|
viewBox: "0 0 14 14",
|
|
230
310
|
fill: "none",
|
|
231
|
-
className:
|
|
311
|
+
className: "pointer-events-none block text-fg-white",
|
|
232
312
|
children: /* @__PURE__ */ jsx("path", { d: "M2.91675 7H11.0834", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" })
|
|
233
313
|
}
|
|
234
314
|
),
|
|
235
|
-
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { className:
|
|
315
|
+
isSelected && !isIndeterminate && /* @__PURE__ */ jsx(CheckboxAnimatedCheckMark, { pixelSize: iconPixelSize, className: "pointer-events-none text-fg-white" })
|
|
236
316
|
]
|
|
237
317
|
}
|
|
238
318
|
);
|
|
@@ -277,6 +357,7 @@ var RadioButtonBase = ({ className, isFocusVisible, isSelected, isDisabled, size
|
|
|
277
357
|
"relative flex shrink-0 cursor-pointer appearance-none items-center justify-center overflow-clip rounded-full border border-solid border-primary bg-primary",
|
|
278
358
|
size === "sm" ? "size-4" : "size-5",
|
|
279
359
|
isSelected && "border-transparent bg-brand-solid",
|
|
360
|
+
!isSelected && !isDisabled && "group-hover:bg-primary_hover",
|
|
280
361
|
isDisabled && "cursor-not-allowed opacity-50",
|
|
281
362
|
isDisabled && !isSelected && "bg-tertiary",
|
|
282
363
|
isFocusVisible && !isDisabled && focusRingShadow2,
|
|
@@ -318,7 +399,7 @@ var ToggleBase = ({ className, isHovered, isDisabled, isFocusVisible, isSelected
|
|
|
318
399
|
const classes = slim ? styles2.slim[size] : styles2.default[size];
|
|
319
400
|
const offTrackBackground = (() => {
|
|
320
401
|
if (isDisabled) return "bg-tertiary";
|
|
321
|
-
if (isHovered) return
|
|
402
|
+
if (isHovered) return "bg-toggle-track_hover";
|
|
322
403
|
return "bg-quaternary";
|
|
323
404
|
})();
|
|
324
405
|
return /* @__PURE__ */ jsx(
|
|
@@ -413,11 +494,11 @@ var DropdownItem = ({ label, children, addon, icon: Icon, avatarUrl, unstyled, s
|
|
|
413
494
|
children: [
|
|
414
495
|
state.selectionMode !== "none" && !avatarUrl && !Icon && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "mr-2" }),
|
|
415
496
|
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" }) }),
|
|
416
|
-
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
497
|
+
Icon && /* @__PURE__ */ jsx(Icon, { "aria-hidden": "true", className: "mr-2 size-4 shrink-0 stroke-[2.25px] text-fg-secondary" }),
|
|
417
498
|
/* @__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) }),
|
|
418
499
|
addon && /* @__PURE__ */ jsx("span", { className: "ml-1 shrink-0 pr-1 text-xs font-medium text-quaternary", children: addon }),
|
|
419
500
|
state.selectionMode !== "none" && (avatarUrl || Icon) && /* @__PURE__ */ jsx(SelectionIndicator, { ...state, className: "ml-1" }),
|
|
420
|
-
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-
|
|
501
|
+
state.hasSubmenu && /* @__PURE__ */ jsx(CaretRightIcon, { "aria-hidden": "true", className: "ml-auto size-4 shrink-0 stroke-[2.25px] text-fg-secondary" })
|
|
421
502
|
]
|
|
422
503
|
}
|
|
423
504
|
)
|
|
@@ -433,21 +514,105 @@ var DropdownMenu = (props) => {
|
|
|
433
514
|
}
|
|
434
515
|
);
|
|
435
516
|
};
|
|
436
|
-
var
|
|
437
|
-
|
|
438
|
-
|
|
517
|
+
var DropdownSheetDepthContext = createContext(0);
|
|
518
|
+
function DropdownSheetCloseButton({ onClose }) {
|
|
519
|
+
return /* @__PURE__ */ jsxs(
|
|
520
|
+
"button",
|
|
439
521
|
{
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
522
|
+
type: "button",
|
|
523
|
+
onClick: (e) => {
|
|
524
|
+
e.stopPropagation();
|
|
525
|
+
onClose();
|
|
526
|
+
},
|
|
527
|
+
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)]",
|
|
528
|
+
children: [
|
|
529
|
+
/* @__PURE__ */ jsx(XIcon, { className: "size-5", "aria-hidden": "true" }),
|
|
530
|
+
/* @__PURE__ */ jsx("span", { className: "sr-only", children: "Close" })
|
|
531
|
+
]
|
|
449
532
|
}
|
|
450
533
|
);
|
|
534
|
+
}
|
|
535
|
+
function DropdownSheetChrome({ title, onClose, children }) {
|
|
536
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
537
|
+
/* @__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: [
|
|
538
|
+
title ? /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 truncate text-base font-semibold text-primary", children: title }) : null,
|
|
539
|
+
/* @__PURE__ */ jsx(DropdownSheetCloseButton, { onClose })
|
|
540
|
+
] }),
|
|
541
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-y-auto pb-[max(2.5rem,calc(env(safe-area-inset-bottom)+2rem))]", children })
|
|
542
|
+
] });
|
|
543
|
+
}
|
|
544
|
+
var DropdownPopover = ({ mobileOptions, children, className, style, ...props }) => {
|
|
545
|
+
const isMobile = useIsMobile();
|
|
546
|
+
const resolvedMobile = useMemo(() => resolveSelectMobileOptions(mobileOptions), [mobileOptions]);
|
|
547
|
+
const useMobileSheet = isMobile && resolvedMobile.sheet;
|
|
548
|
+
const overlayState = useContext(OverlayTriggerStateContext);
|
|
549
|
+
const open = overlayState?.isOpen ?? false;
|
|
550
|
+
const parentDepth = useContext(DropdownSheetDepthContext);
|
|
551
|
+
const depth = parentDepth + 1;
|
|
552
|
+
const { shouldRender, panelStyle, backdropStyle } = useMobileSheetAnimation(open, useMobileSheet);
|
|
553
|
+
useEffect(() => {
|
|
554
|
+
if (!useMobileSheet || !open) return;
|
|
555
|
+
const prev = document.body.style.overflow;
|
|
556
|
+
document.body.style.overflow = "hidden";
|
|
557
|
+
return () => {
|
|
558
|
+
document.body.style.overflow = prev;
|
|
559
|
+
};
|
|
560
|
+
}, [useMobileSheet, open]);
|
|
561
|
+
if (!useMobileSheet) {
|
|
562
|
+
return /* @__PURE__ */ jsx(
|
|
563
|
+
Popover,
|
|
564
|
+
{
|
|
565
|
+
placement: "bottom right",
|
|
566
|
+
...props,
|
|
567
|
+
style,
|
|
568
|
+
className: (state) => cx(
|
|
569
|
+
"w-62 origin-(--trigger-anchor-point) overflow-auto rounded-lg bg-primary shadow-lg ring-1 ring-secondary_alt will-change-transform",
|
|
570
|
+
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",
|
|
571
|
+
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",
|
|
572
|
+
typeof className === "function" ? className(state) : className
|
|
573
|
+
),
|
|
574
|
+
children
|
|
575
|
+
}
|
|
576
|
+
);
|
|
577
|
+
}
|
|
578
|
+
const close = () => overlayState?.close();
|
|
579
|
+
const showMobileSheet = shouldRender;
|
|
580
|
+
const isMobileSheetExiting = showMobileSheet && !open;
|
|
581
|
+
const scrimZIndex = 50 + (depth - 1) * 10;
|
|
582
|
+
const sheetZIndex = scrimZIndex + 1;
|
|
583
|
+
const mobileScrim = shouldRender && typeof document !== "undefined" ? createPortal(
|
|
584
|
+
/* @__PURE__ */ jsx(
|
|
585
|
+
"div",
|
|
586
|
+
{
|
|
587
|
+
className: "fixed inset-0 bg-overlay/70",
|
|
588
|
+
style: { ...backdropStyle, zIndex: scrimZIndex },
|
|
589
|
+
onClick: close,
|
|
590
|
+
"aria-hidden": "true"
|
|
591
|
+
}
|
|
592
|
+
),
|
|
593
|
+
document.body
|
|
594
|
+
) : null;
|
|
595
|
+
return /* @__PURE__ */ jsxs(DropdownSheetDepthContext.Provider, { value: depth, children: [
|
|
596
|
+
mobileScrim,
|
|
597
|
+
/* @__PURE__ */ jsx(
|
|
598
|
+
Popover,
|
|
599
|
+
{
|
|
600
|
+
placement: "bottom",
|
|
601
|
+
containerPadding: 0,
|
|
602
|
+
offset: 0,
|
|
603
|
+
...props,
|
|
604
|
+
isExiting: isMobileSheetExiting,
|
|
605
|
+
"data-dropdown-mobile-sheet": true,
|
|
606
|
+
style: { ...panelStyle, zIndex: sheetZIndex, ...style },
|
|
607
|
+
className: (state) => cx(
|
|
608
|
+
"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",
|
|
609
|
+
resolvedMobile.sheetClassName,
|
|
610
|
+
typeof className === "function" ? className(state) : className
|
|
611
|
+
),
|
|
612
|
+
children: /* @__PURE__ */ jsx(DropdownSheetChrome, { title: resolvedMobile.title, onClose: close, children: typeof children === "function" ? null : children })
|
|
613
|
+
}
|
|
614
|
+
)
|
|
615
|
+
] });
|
|
451
616
|
};
|
|
452
617
|
var DropdownSeparator = (props) => {
|
|
453
618
|
return /* @__PURE__ */ jsx(Separator, { ...props, className: cx("my-1 h-px w-full bg-border-secondary", props.className) });
|