@wow-two-beta/ui 0.0.67 → 0.0.69
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/actions/index.js +8 -8
- package/dist/actions/speedDial/SpeedDial.d.ts +8 -6
- package/dist/actions/toolbar/Toolbar.d.ts +4 -6
- package/dist/{chunk-XLYJF3HC.js → chunk-B4X7XXSM.js} +4 -4
- package/dist/{chunk-XLYJF3HC.js.map → chunk-B4X7XXSM.js.map} +1 -1
- package/dist/{chunk-X2MYOHOB.js → chunk-D4ZT36AZ.js} +2 -2
- package/dist/chunk-D4ZT36AZ.js.map +1 -0
- package/dist/{chunk-MVMDDGW7.js → chunk-D7ZFCHX5.js} +3 -3
- package/dist/{chunk-MVMDDGW7.js.map → chunk-D7ZFCHX5.js.map} +1 -1
- package/dist/{chunk-3SWPYYRQ.js → chunk-EKGOQL75.js} +43 -58
- package/dist/chunk-EKGOQL75.js.map +1 -0
- package/dist/{chunk-LGTGZ3RW.js → chunk-F4HGQMUI.js} +2 -2
- package/dist/chunk-F4HGQMUI.js.map +1 -0
- package/dist/{chunk-YQGEF43L.js → chunk-GPMNI5MG.js} +6 -6
- package/dist/{chunk-YQGEF43L.js.map → chunk-GPMNI5MG.js.map} +1 -1
- package/dist/{chunk-7ZDLUNAY.js → chunk-KZLEHWAJ.js} +4 -4
- package/dist/{chunk-7ZDLUNAY.js.map → chunk-KZLEHWAJ.js.map} +1 -1
- package/dist/{chunk-3BNEDKMS.js → chunk-ORYO55KN.js} +24 -20
- package/dist/chunk-ORYO55KN.js.map +1 -0
- package/dist/{chunk-NOOKDXIZ.js → chunk-OZBLEOLZ.js} +5 -5
- package/dist/chunk-OZBLEOLZ.js.map +1 -0
- package/dist/{chunk-MZZKA3ZS.js → chunk-QTHKG7MQ.js} +41 -38
- package/dist/chunk-QTHKG7MQ.js.map +1 -0
- package/dist/{chunk-JLAFUXGZ.js → chunk-R5MOEUXM.js} +21 -16
- package/dist/chunk-R5MOEUXM.js.map +1 -0
- package/dist/{chunk-V267IMBH.js → chunk-RNHY33US.js} +4 -4
- package/dist/chunk-RNHY33US.js.map +1 -0
- package/dist/{chunk-ZTK5ZQIL.js → chunk-SREWD3XJ.js} +127 -109
- package/dist/chunk-SREWD3XJ.js.map +1 -0
- package/dist/{chunk-FMTBJJP6.js → chunk-UMRRFZ4R.js} +3 -3
- package/dist/{chunk-FMTBJJP6.js.map → chunk-UMRRFZ4R.js.map} +1 -1
- package/dist/{chunk-NEH4ITXL.js → chunk-VTRPW2QQ.js} +15 -13
- package/dist/chunk-VTRPW2QQ.js.map +1 -0
- package/dist/{chunk-NW7ULTYL.js → chunk-VYFPLQPV.js} +4 -4
- package/dist/{chunk-NW7ULTYL.js.map → chunk-VYFPLQPV.js.map} +1 -1
- package/dist/{chunk-4XWLEKH2.js → chunk-WKVWOAQV.js} +3 -3
- package/dist/{chunk-4XWLEKH2.js.map → chunk-WKVWOAQV.js.map} +1 -1
- package/dist/{chunk-D6K6MU2G.js → chunk-X3JVVEUJ.js} +78 -43
- package/dist/chunk-X3JVVEUJ.js.map +1 -0
- package/dist/{chunk-ZC4H4PIN.js → chunk-X5JSX4PU.js} +20 -17
- package/dist/chunk-X5JSX4PU.js.map +1 -0
- package/dist/{chunk-GTBNVI77.js → chunk-XFUD3RZK.js} +59 -45
- package/dist/chunk-XFUD3RZK.js.map +1 -0
- package/dist/{chunk-H3WC7KRX.js → chunk-XOUAFZ2E.js} +70 -54
- package/dist/chunk-XOUAFZ2E.js.map +1 -0
- package/dist/{chunk-DX7FYAKY.js → chunk-XSW3NZDD.js} +17 -17
- package/dist/chunk-XSW3NZDD.js.map +1 -0
- package/dist/display/carousel/Carousel.d.ts +9 -11
- package/dist/display/collapsible/Collapsible.d.ts +4 -6
- package/dist/display/index.js +10 -10
- package/dist/display/list/List.d.ts +3 -5
- package/dist/display/table/Table.d.ts +9 -11
- package/dist/display/tabs/Tabs.d.ts +5 -7
- package/dist/display/timeline/Timeline.d.ts +3 -5
- package/dist/display/tree/Tree.d.ts +4 -6
- package/dist/feedback/index.js +9 -9
- package/dist/feedback/onboardingChecklist/OnboardingChecklist.d.ts +3 -9
- package/dist/forms/DateExtensions.d.ts +30 -25
- package/dist/forms/MonthGrid.d.ts +8 -7
- package/dist/forms/calendar/Calendar.d.ts +8 -7
- package/dist/forms/characterCount/CharacterCount.d.ts +1 -1
- package/dist/forms/colorPicker/ColorPicker.d.ts +7 -0
- package/dist/forms/combobox/Combobox.d.ts +8 -6
- package/dist/forms/dateField/DateField.d.ts +6 -5
- package/dist/forms/datePicker/DatePicker.d.ts +8 -7
- package/dist/forms/dateRangePicker/DateRangePicker.d.ts +5 -4
- package/dist/forms/editable/Editable.d.ts +10 -8
- package/dist/forms/{formField/FormField.d.ts → field/Field.d.ts} +2 -2
- package/dist/forms/field/index.d.ts +6 -0
- package/dist/forms/index.d.ts +2 -2
- package/dist/forms/index.js +14 -14
- package/dist/forms/labeledInput/LabeledInput.d.ts +6 -2
- package/dist/forms/labeledInput/index.d.ts +1 -0
- package/dist/forms/multiSelect/MultiSelect.d.ts +8 -6
- package/dist/forms/rangeCalendar/RangeCalendar.d.ts +8 -6
- package/dist/forms/recurrenceEditor/RecurrenceEditor.d.ts +3 -2
- package/dist/forms/stepper/Stepper.d.ts +5 -7
- package/dist/forms/textareaInput/TextareaInput.d.ts +9 -0
- package/dist/forms/textareaInput/index.d.ts +6 -0
- package/dist/forms/timeField/TimeField.d.ts +4 -7
- package/dist/forms/timeField/index.d.ts +1 -1
- package/dist/forms/timePicker/TimePicker.d.ts +5 -5
- package/dist/forms/wizard/Wizard.d.ts +5 -7
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/useClipboard/index.d.ts +1 -0
- package/dist/hooks/useControlled/index.d.ts +1 -0
- package/dist/hooks/useDebounceHandler/index.d.ts +1 -0
- package/dist/hooks/useDisclosure/index.d.ts +1 -0
- package/dist/hooks/useEscape/index.d.ts +1 -0
- package/dist/hooks/useEventListener/index.d.ts +1 -0
- package/dist/hooks/useFocusTrap/index.d.ts +1 -0
- package/dist/hooks/useId/index.d.ts +1 -0
- package/dist/hooks/useMediaQuery/index.d.ts +1 -0
- package/dist/hooks/useOutsideClick/index.d.ts +1 -0
- package/dist/hooks/useReducedMotion/index.d.ts +1 -0
- package/dist/hooks/useResizeObserver/index.d.ts +1 -0
- package/dist/hooks/useScrollLock/index.d.ts +1 -0
- package/dist/hooks/useTypeahead/index.d.ts +1 -0
- package/dist/icons/index.js +3 -3
- package/dist/index.js +22 -22
- package/dist/layout/appShell/AppShell.d.ts +8 -15
- package/dist/layout/index.js +11 -11
- package/dist/layout/resizablePanels/ResizablePanels.d.ts +4 -6
- package/dist/nav/commandPalette/CommandPalette.d.ts +11 -9
- package/dist/nav/contextMenu/ContextMenu.d.ts +9 -7
- package/dist/nav/dropdownMenu/DropdownMenu.d.ts +9 -7
- package/dist/nav/index.js +11 -11
- package/dist/nav/menu/Menu.d.ts +7 -5
- package/dist/nav/menubar/Menubar.d.ts +5 -7
- package/dist/nav/navigationMenu/NavigationMenu.d.ts +7 -9
- package/dist/overlays/actionSheet/ActionSheet.d.ts +8 -6
- package/dist/overlays/alertModal/AlertModal.d.ts +30 -0
- package/dist/overlays/alertModal/index.d.ts +6 -0
- package/dist/overlays/backdrop/Backdrop.d.ts +1 -1
- package/dist/overlays/bottomSheet/BottomSheet.d.ts +4 -11
- package/dist/overlays/drawer/Drawer.d.ts +14 -12
- package/dist/overlays/hoverCard/HoverCard.d.ts +7 -5
- package/dist/overlays/index.d.ts +2 -2
- package/dist/overlays/index.js +10 -10
- package/dist/overlays/modal/Modal.d.ts +54 -0
- package/dist/overlays/modal/index.d.ts +6 -0
- package/dist/overlays/popover/Popover.d.ts +8 -6
- package/dist/primitives/formControlContext/FormControlContext.d.ts +1 -1
- package/dist/primitives/index.js +3 -3
- package/dist/utils/ColorExtensions/index.d.ts +1 -0
- package/dist/utils/CssExtensions/index.d.ts +1 -0
- package/dist/utils/Environment/index.d.ts +1 -0
- package/dist/utils/Equality/index.d.ts +1 -0
- package/dist/utils/HtmlExtensions/index.d.ts +1 -0
- package/dist/utils/KeyboardExtensions/index.d.ts +1 -0
- package/dist/utils/Layers/index.d.ts +1 -0
- package/dist/utils/OptionalExtensions/index.d.ts +1 -0
- package/dist/utils/PressExtensions/index.d.ts +1 -0
- package/dist/utils/StyleTokens/index.d.ts +1 -0
- package/dist/utils/{SurfaceStyles.d.ts → SurfaceStyles/SurfaceStyles.d.ts} +1 -1
- package/dist/utils/SurfaceStyles/index.d.ts +1 -0
- package/dist/utils/{Tones.d.ts → Tones/Tones.d.ts} +1 -1
- package/dist/utils/Tones/index.d.ts +1 -0
- package/dist/utils/TransitionExtensions/index.d.ts +1 -0
- package/dist/utils/cn/index.d.ts +1 -0
- package/dist/utils/composeEventHandlers/index.d.ts +1 -0
- package/dist/utils/composeRefs/index.d.ts +1 -0
- package/dist/utils/dataAttr/index.d.ts +1 -0
- package/dist/utils/index.js +2 -2
- package/dist/utils/polymorphic/index.d.ts +1 -0
- package/dist/utils/tv/index.d.ts +1 -0
- package/package.json +3 -2
- package/dist/chunk-3BNEDKMS.js.map +0 -1
- package/dist/chunk-3SWPYYRQ.js.map +0 -1
- package/dist/chunk-D6K6MU2G.js.map +0 -1
- package/dist/chunk-DX7FYAKY.js.map +0 -1
- package/dist/chunk-GTBNVI77.js.map +0 -1
- package/dist/chunk-H3WC7KRX.js.map +0 -1
- package/dist/chunk-JLAFUXGZ.js.map +0 -1
- package/dist/chunk-LGTGZ3RW.js.map +0 -1
- package/dist/chunk-MZZKA3ZS.js.map +0 -1
- package/dist/chunk-NEH4ITXL.js.map +0 -1
- package/dist/chunk-NOOKDXIZ.js.map +0 -1
- package/dist/chunk-V267IMBH.js.map +0 -1
- package/dist/chunk-X2MYOHOB.js.map +0 -1
- package/dist/chunk-ZC4H4PIN.js.map +0 -1
- package/dist/chunk-ZTK5ZQIL.js.map +0 -1
- package/dist/forms/formField/index.d.ts +0 -1
- package/dist/forms/textarea/Textarea.d.ts +0 -9
- package/dist/forms/textarea/index.d.ts +0 -1
- package/dist/overlays/alertDialog/AlertDialog.d.ts +0 -28
- package/dist/overlays/alertDialog/index.d.ts +0 -1
- package/dist/overlays/dialog/Dialog.d.ts +0 -46
- package/dist/overlays/dialog/index.d.ts +0 -1
- /package/dist/hooks/{useClipboard.d.ts → useClipboard/useClipboard.d.ts} +0 -0
- /package/dist/hooks/{useControlled.d.ts → useControlled/useControlled.d.ts} +0 -0
- /package/dist/hooks/{useDebounceHandler.d.ts → useDebounceHandler/useDebounceHandler.d.ts} +0 -0
- /package/dist/hooks/{useDisclosure.d.ts → useDisclosure/useDisclosure.d.ts} +0 -0
- /package/dist/hooks/{useEscape.d.ts → useEscape/useEscape.d.ts} +0 -0
- /package/dist/hooks/{useEventListener.d.ts → useEventListener/useEventListener.d.ts} +0 -0
- /package/dist/hooks/{useFocusTrap.d.ts → useFocusTrap/useFocusTrap.d.ts} +0 -0
- /package/dist/hooks/{useId.d.ts → useId/useId.d.ts} +0 -0
- /package/dist/hooks/{useMediaQuery.d.ts → useMediaQuery/useMediaQuery.d.ts} +0 -0
- /package/dist/hooks/{useOutsideClick.d.ts → useOutsideClick/useOutsideClick.d.ts} +0 -0
- /package/dist/hooks/{useReducedMotion.d.ts → useReducedMotion/useReducedMotion.d.ts} +0 -0
- /package/dist/hooks/{useResizeObserver.d.ts → useResizeObserver/useResizeObserver.d.ts} +0 -0
- /package/dist/hooks/{useScrollLock.d.ts → useScrollLock/useScrollLock.d.ts} +0 -0
- /package/dist/hooks/{useTypeahead.d.ts → useTypeahead/useTypeahead.d.ts} +0 -0
- /package/dist/utils/{ColorExtensions.d.ts → ColorExtensions/ColorExtensions.d.ts} +0 -0
- /package/dist/utils/{CssExtensions.d.ts → CssExtensions/CssExtensions.d.ts} +0 -0
- /package/dist/utils/{Environment.d.ts → Environment/Environment.d.ts} +0 -0
- /package/dist/utils/{Equality.d.ts → Equality/Equality.d.ts} +0 -0
- /package/dist/utils/{HtmlExtensions.d.ts → HtmlExtensions/HtmlExtensions.d.ts} +0 -0
- /package/dist/utils/{KeyboardExtensions.d.ts → KeyboardExtensions/KeyboardExtensions.d.ts} +0 -0
- /package/dist/utils/{Layers.d.ts → Layers/Layers.d.ts} +0 -0
- /package/dist/utils/{OptionalExtensions.d.ts → OptionalExtensions/OptionalExtensions.d.ts} +0 -0
- /package/dist/utils/{PressExtensions.d.ts → PressExtensions/PressExtensions.d.ts} +0 -0
- /package/dist/utils/{StyleTokens.d.ts → StyleTokens/StyleTokens.d.ts} +0 -0
- /package/dist/utils/{TransitionExtensions.d.ts → TransitionExtensions/TransitionExtensions.d.ts} +0 -0
- /package/dist/utils/{cn.d.ts → cn/cn.d.ts} +0 -0
- /package/dist/utils/{composeEventHandlers.d.ts → composeEventHandlers/composeEventHandlers.d.ts} +0 -0
- /package/dist/utils/{composeRefs.d.ts → composeRefs/composeRefs.d.ts} +0 -0
- /package/dist/utils/{dataAttr.d.ts → dataAttr/dataAttr.d.ts} +0 -0
- /package/dist/utils/{polymorphic.d.ts → polymorphic/polymorphic.d.ts} +0 -0
- /package/dist/utils/{tv.d.ts → tv/tv.d.ts} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { OverlayChromeProvider,
|
|
2
|
-
import { Backdrop } from './chunk-
|
|
3
|
-
import { useControlled } from './chunk-
|
|
4
|
-
import { surfaceVariants } from './chunk-
|
|
5
|
-
import { Slot, Portal, ScrollLockProvider, DismissableLayer, Presence } from './chunk-
|
|
6
|
-
import { composeRefs, cn } from './chunk-
|
|
1
|
+
import { OverlayChromeProvider, OverlayCloseButton, OverlayFooter, OverlayBody, OverlayDescription, OverlayTitle, OverlayHeader } from './chunk-OZBLEOLZ.js';
|
|
2
|
+
import { Backdrop } from './chunk-VYFPLQPV.js';
|
|
3
|
+
import { useControlled } from './chunk-RNHY33US.js';
|
|
4
|
+
import { surfaceVariants } from './chunk-XSW3NZDD.js';
|
|
5
|
+
import { Slot, Portal, ScrollLockProvider, DismissableLayer, Presence } from './chunk-B4X7XXSM.js';
|
|
6
|
+
import { composeRefs, cn } from './chunk-D4ZT36AZ.js';
|
|
7
7
|
import { createContext, forwardRef, useCallback, useMemo, useContext, useRef, useId } from 'react';
|
|
8
8
|
import { FocusScope } from '@radix-ui/react-focus-scope';
|
|
9
9
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
@@ -14,7 +14,7 @@ function useDrawerContext() {
|
|
|
14
14
|
if (!ctx) throw new Error("Drawer.* must be used inside <Drawer>");
|
|
15
15
|
return ctx;
|
|
16
16
|
}
|
|
17
|
-
function
|
|
17
|
+
function DrawerRoot({
|
|
18
18
|
open: openProp,
|
|
19
19
|
defaultOpen = false,
|
|
20
20
|
onOpenChange,
|
|
@@ -46,6 +46,7 @@ function Drawer({
|
|
|
46
46
|
);
|
|
47
47
|
return /* @__PURE__ */ jsx(DrawerContext.Provider, { value: ctx, children });
|
|
48
48
|
}
|
|
49
|
+
DrawerRoot.displayName = "Drawer";
|
|
49
50
|
var DrawerTrigger = forwardRef(
|
|
50
51
|
function DrawerTrigger2({ asChild, onClick, children, ...rest }, forwardedRef) {
|
|
51
52
|
const ctx = useDrawerContext();
|
|
@@ -202,15 +203,17 @@ var DrawerDescription = OverlayDescription;
|
|
|
202
203
|
var DrawerBody = OverlayBody;
|
|
203
204
|
var DrawerFooter = OverlayFooter;
|
|
204
205
|
var DrawerClose = OverlayCloseButton;
|
|
205
|
-
Drawer
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
206
|
+
var Drawer = Object.assign(DrawerRoot, {
|
|
207
|
+
Trigger: DrawerTrigger,
|
|
208
|
+
Content: DrawerContent,
|
|
209
|
+
Header: DrawerHeader,
|
|
210
|
+
Title: DrawerTitle,
|
|
211
|
+
Description: DrawerDescription,
|
|
212
|
+
Body: DrawerBody,
|
|
213
|
+
Footer: DrawerFooter,
|
|
214
|
+
Close: DrawerClose
|
|
215
|
+
});
|
|
213
216
|
|
|
214
217
|
export { Drawer, DrawerBody, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger };
|
|
215
|
-
//# sourceMappingURL=chunk-
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
218
|
+
//# sourceMappingURL=chunk-X5JSX4PU.js.map
|
|
219
|
+
//# sourceMappingURL=chunk-X5JSX4PU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overlays/drawer/Drawer.tsx"],"names":["DrawerTrigger","DrawerSurface","DrawerContent"],"mappings":"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","file":"chunk-X5JSX4PU.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useId,\n useMemo,\n useRef,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, Presence, ScrollLockProvider, Slot } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayBody,\n OverlayChromeProvider,\n OverlayCloseButton,\n OverlayDescription,\n OverlayFooter,\n OverlayHeader,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\nexport type DrawerSide = 'top' | 'right' | 'bottom' | 'left';\n\ninterface DrawerContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n titleId: string;\n descriptionId: string;\n side: DrawerSide;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nfunction useDrawerContext() {\n const ctx = useContext(DrawerContext);\n if (!ctx) throw new Error('Drawer.* must be used inside <Drawer>');\n return ctx;\n}\n\nexport interface DrawerProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: DrawerSide;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nfunction DrawerRoot({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n side = 'right',\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: DrawerProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const titleId = useId();\n const descriptionId = useId();\n\n const ctx = useMemo<DrawerContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n titleId,\n descriptionId,\n side,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, titleId, descriptionId, side, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <DrawerContext.Provider value={ctx}>{children}</DrawerContext.Provider>;\n}\nDrawerRoot.displayName = 'Drawer';\n\nexport interface DrawerTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const DrawerTrigger = forwardRef<HTMLButtonElement, DrawerTriggerProps>(\n function DrawerTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = useDrawerContext();\n const Component = asChild ? Slot : 'button';\n return (\n <Component\n ref={composeRefs(forwardedRef, ctx.triggerRef as React.MutableRefObject<HTMLButtonElement | null>) as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(true);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nexport type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n// Full-edge slide: the panel rests at translate-0 when open and is pushed\n// fully off its own edge when closed. `transition-transform` (gated on\n// `motion-safe:`) animates both enter and exit via Presence's data-state flip.\nconst SIDE_BASE: Record<DrawerSide, string> = {\n right:\n 'inset-y-0 right-0 h-full w-full border-l ' +\n 'motion-safe:transition-transform motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) ' +\n 'data-[state=closed]:translate-x-full',\n left:\n 'inset-y-0 left-0 h-full w-full border-r ' +\n 'motion-safe:transition-transform motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) ' +\n 'data-[state=closed]:-translate-x-full',\n top:\n 'inset-x-0 top-0 w-full border-b ' +\n 'motion-safe:transition-transform motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) ' +\n 'data-[state=closed]:-translate-y-full',\n bottom:\n 'inset-x-0 bottom-0 w-full border-t ' +\n 'motion-safe:transition-transform motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out) ' +\n 'data-[state=closed]:translate-y-full',\n};\n\nconst HORIZONTAL_SIZE: Record<DrawerSize, string> = {\n sm: 'sm:max-w-sm',\n md: 'sm:max-w-md',\n lg: 'sm:max-w-lg',\n xl: 'sm:max-w-2xl',\n full: '',\n};\n\nconst VERTICAL_SIZE: Record<DrawerSize, string> = {\n sm: 'max-h-[40vh]',\n md: 'max-h-[60vh]',\n lg: 'max-h-[75vh]',\n xl: 'max-h-[85vh]',\n full: 'max-h-screen',\n};\n\n/** Represents the prop surface of `Drawer.Content`. */\nexport interface DrawerContentProps extends HTMLAttributes<HTMLDivElement>, SurfaceVariants {\n hideBackdrop?: boolean;\n isBlurred?: boolean;\n /** Per-side max-size token. Default `md` (preserves prior behavior for right/left at `sm`-ish width via `sm:max-w-md`). */\n size?: DrawerSize;\n children: ReactNode;\n}\n\n/**\n * The full portal subtree (scroll-lock + backdrop + focus-trap + dialog panel),\n * rendered as the single child of `<Presence>`. Presence injects `data-state`\n * (\"open\" | \"closed\") + a `ref` here; both are forwarded to the dialog panel —\n * the element whose `transition-transform` end defers unmount — and `data-state`\n * is mirrored onto the backdrop so its fade runs in lock-step with the slide.\n * Keeping the whole subtree inside Presence holds the focus-trap + scroll-lock\n * active through the exit animation and releases them on unmount.\n */\ninterface DrawerSurfaceProps extends HTMLAttributes<HTMLDivElement> {\n ctx: DrawerContextValue;\n hideBackdrop?: boolean;\n isBlurred?: boolean;\n chromeCtx: OverlayChromeContextValue;\n surfaceClassName?: string;\n children: ReactNode;\n}\n\nconst DrawerSurface = forwardRef<HTMLDivElement, DrawerSurfaceProps>(function DrawerSurface(\n {\n ctx,\n hideBackdrop,\n isBlurred,\n chromeCtx,\n surfaceClassName,\n children,\n // `data-state` is injected by Presence; default to \"open\" when rendered standalone.\n 'data-state': dataState = 'open',\n ...rest\n }: DrawerSurfaceProps & { 'data-state'?: 'open' | 'closed' },\n forwardedRef,\n) {\n return (\n <Portal>\n <ScrollLockProvider>\n {!hideBackdrop && (\n <Backdrop\n isInline\n isBlurred={isBlurred}\n data-state={dataState}\n className={cn(\n // Backdrop fade driven by the same data-state Presence flips (motion-safe).\n 'motion-safe:transition-opacity motion-safe:duration-(--duration-base) motion-safe:ease-(--ease-out)',\n 'data-[state=closed]:opacity-0',\n )}\n onClick={() => {\n if (ctx.dismissOnOutsideClick) ctx.setOpen(false);\n }}\n />\n )}\n <FocusScope asChild trapped loop>\n <DismissableLayer\n isEscapeDisabled={!ctx.dismissOnEscape}\n onEscape={() => ctx.setOpen(false)}\n isOutsideClickDisabled\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={ctx.titleId}\n aria-describedby={ctx.descriptionId}\n data-state={dataState}\n data-side={ctx.side}\n className={surfaceClassName}\n {...rest}\n >\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n );\n});\nDrawerSurface.displayName = 'DrawerSurface';\n\nexport const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(\n function DrawerContent(\n {\n hideBackdrop,\n isBlurred,\n variant,\n tone,\n radius,\n padding,\n elevation,\n size = 'md',\n className,\n children,\n ...rest\n },\n forwardedRef,\n ) {\n const ctx = useDrawerContext();\n const isHorizontal = ctx.side === 'right' || ctx.side === 'left';\n const sizeClass = isHorizontal ? HORIZONTAL_SIZE[size] : VERTICAL_SIZE[size];\n\n const close = useCallback(() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }, [ctx]);\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId: ctx.titleId, descriptionId: ctx.descriptionId, close }),\n [ctx.titleId, ctx.descriptionId, close],\n );\n\n const surfaceClassName = cn(\n 'fixed z-modal flex flex-col gap-4 outline-none',\n surfaceVariants({\n variant: variant ?? 'elevated',\n tone,\n radius: radius ?? 'none',\n padding: padding ?? 'xl',\n elevation: elevation ?? 3,\n }),\n SIDE_BASE[ctx.side],\n sizeClass,\n className,\n );\n\n // Presence keeps the subtree mounted through the exit slide, flipping\n // data-state open→closed and deferring unmount until the panel's\n // transition ends.\n return (\n <Presence isPresent={ctx.open}>\n <DrawerSurface\n ref={forwardedRef}\n ctx={ctx}\n hideBackdrop={hideBackdrop}\n isBlurred={isBlurred}\n chromeCtx={chromeCtx}\n surfaceClassName={surfaceClassName}\n {...rest}\n >\n {children}\n </DrawerSurface>\n </Presence>\n );\n },\n);\n\n// Re-export shared chrome subcomponents under the Drawer namespace.\nexport const DrawerHeader = OverlayHeader;\nexport const DrawerTitle = OverlayTitle;\nexport const DrawerDescription = OverlayDescription;\nexport const DrawerBody = OverlayBody;\nexport const DrawerFooter = OverlayFooter;\nexport const DrawerClose = OverlayCloseButton;\n\nexport const Drawer = Object.assign(DrawerRoot, {\n Trigger: DrawerTrigger,\n Content: DrawerContent,\n Header: DrawerHeader,\n Title: DrawerTitle,\n Description: DrawerDescription,\n Body: DrawerBody,\n Footer: DrawerFooter,\n Close: DrawerClose,\n});\n\nexport default Drawer;\n"]}
|
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-
|
|
2
|
-
import {
|
|
3
|
-
import { OverlayChromeProvider,
|
|
4
|
-
import { Backdrop } from './chunk-
|
|
5
|
-
import { useControlled, useEscape } from './chunk-
|
|
6
|
-
import { surfaceVariants } from './chunk-
|
|
7
|
-
import { Slot, Presence, AnchoredPositioner, DismissableLayer, Portal, ScrollLockProvider, OverlayArrow } from './chunk-
|
|
8
|
-
import { cn, composeRefs } from './chunk-
|
|
1
|
+
import { Drawer, DrawerContent, DrawerTitle, DrawerDescription } from './chunk-X5JSX4PU.js';
|
|
2
|
+
import { ModalContent, ModalClose, ModalFooter, ModalBody, ModalDescription, ModalTitle, ModalHeader, ModalTrigger, Modal } from './chunk-QTHKG7MQ.js';
|
|
3
|
+
import { OverlayChromeProvider, OverlayDescription, OverlayTitle } from './chunk-OZBLEOLZ.js';
|
|
4
|
+
import { Backdrop } from './chunk-VYFPLQPV.js';
|
|
5
|
+
import { useControlled, useEscape } from './chunk-RNHY33US.js';
|
|
6
|
+
import { surfaceVariants } from './chunk-XSW3NZDD.js';
|
|
7
|
+
import { Slot, Presence, AnchoredPositioner, DismissableLayer, Portal, ScrollLockProvider, OverlayArrow } from './chunk-B4X7XXSM.js';
|
|
8
|
+
import { cn, composeRefs } from './chunk-D4ZT36AZ.js';
|
|
9
9
|
import { forwardRef, createContext, useMemo, useState, useRef, useId, useEffect, useContext, useCallback, isValidElement, cloneElement } from 'react';
|
|
10
10
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
11
11
|
import { FocusScope } from '@radix-ui/react-focus-scope';
|
|
12
12
|
|
|
13
|
-
function
|
|
14
|
-
return /* @__PURE__ */ jsx(
|
|
13
|
+
function AlertModalRoot(props) {
|
|
14
|
+
return /* @__PURE__ */ jsx(Modal, { ...props, role: "alertdialog", dismissOnOutsideClick: false });
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
AlertModalRoot.displayName = "AlertModal";
|
|
17
|
+
var AlertModalContent = forwardRef(
|
|
18
|
+
function AlertModalContent2(props, ref) {
|
|
19
|
+
return /* @__PURE__ */ jsx(ModalContent, { ref, ...props });
|
|
19
20
|
}
|
|
20
21
|
);
|
|
21
|
-
var
|
|
22
|
-
function
|
|
22
|
+
var AlertModalAction = forwardRef(
|
|
23
|
+
function AlertModalAction2({ onAction, onClick, className, children, ...rest }, ref) {
|
|
23
24
|
return /* @__PURE__ */ jsx(
|
|
24
|
-
|
|
25
|
+
ModalClose,
|
|
25
26
|
{
|
|
26
27
|
ref,
|
|
27
28
|
onClick: (e) => {
|
|
@@ -39,10 +40,10 @@ var AlertDialogAction = forwardRef(
|
|
|
39
40
|
);
|
|
40
41
|
}
|
|
41
42
|
);
|
|
42
|
-
var
|
|
43
|
-
function
|
|
43
|
+
var AlertModalCancel = forwardRef(
|
|
44
|
+
function AlertModalCancel2({ className, children, ...rest }, ref) {
|
|
44
45
|
return /* @__PURE__ */ jsx(
|
|
45
|
-
|
|
46
|
+
ModalClose,
|
|
46
47
|
{
|
|
47
48
|
ref,
|
|
48
49
|
className: cn(
|
|
@@ -55,22 +56,24 @@ var AlertDialogCancel = forwardRef(
|
|
|
55
56
|
);
|
|
56
57
|
}
|
|
57
58
|
);
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
59
|
+
var AlertModal = Object.assign(AlertModalRoot, {
|
|
60
|
+
Trigger: ModalTrigger,
|
|
61
|
+
Content: AlertModalContent,
|
|
62
|
+
Header: ModalHeader,
|
|
63
|
+
Title: ModalTitle,
|
|
64
|
+
Description: ModalDescription,
|
|
65
|
+
Body: ModalBody,
|
|
66
|
+
Footer: ModalFooter,
|
|
67
|
+
Action: AlertModalAction,
|
|
68
|
+
Cancel: AlertModalCancel
|
|
69
|
+
});
|
|
67
70
|
var PopoverContext = createContext(null);
|
|
68
71
|
function usePopoverContext() {
|
|
69
72
|
const ctx = useContext(PopoverContext);
|
|
70
73
|
if (!ctx) throw new Error("Popover.* must be used inside <Popover>");
|
|
71
74
|
return ctx;
|
|
72
75
|
}
|
|
73
|
-
function
|
|
76
|
+
function PopoverRoot({
|
|
74
77
|
open: openProp,
|
|
75
78
|
defaultOpen = false,
|
|
76
79
|
onOpenChange,
|
|
@@ -103,6 +106,7 @@ function Popover({
|
|
|
103
106
|
);
|
|
104
107
|
return /* @__PURE__ */ jsx(PopoverContext.Provider, { value: ctx, children });
|
|
105
108
|
}
|
|
109
|
+
PopoverRoot.displayName = "Popover";
|
|
106
110
|
var PopoverTrigger = forwardRef(
|
|
107
111
|
function PopoverTrigger2({ asChild, onClick, children, ...rest }, forwardedRef) {
|
|
108
112
|
const ctx = usePopoverContext();
|
|
@@ -201,16 +205,18 @@ var PopoverPortalRoot = forwardRef(
|
|
|
201
205
|
function PopoverArrow({ className, ...rest }) {
|
|
202
206
|
return /* @__PURE__ */ jsx(OverlayArrow, { className: cn("text-popover", className), ...rest });
|
|
203
207
|
}
|
|
204
|
-
Popover
|
|
205
|
-
|
|
206
|
-
|
|
208
|
+
var Popover = Object.assign(PopoverRoot, {
|
|
209
|
+
Trigger: PopoverTrigger,
|
|
210
|
+
Content: PopoverContent,
|
|
211
|
+
Arrow: PopoverArrow
|
|
212
|
+
});
|
|
207
213
|
var HoverCardContext = createContext(null);
|
|
208
214
|
function useHoverCardContext() {
|
|
209
215
|
const ctx = useContext(HoverCardContext);
|
|
210
216
|
if (!ctx) throw new Error("HoverCard.* must be used inside <HoverCard>");
|
|
211
217
|
return ctx;
|
|
212
218
|
}
|
|
213
|
-
function
|
|
219
|
+
function HoverCardRoot({
|
|
214
220
|
open: openProp,
|
|
215
221
|
defaultOpen = false,
|
|
216
222
|
onOpenChange,
|
|
@@ -259,6 +265,7 @@ function HoverCard({
|
|
|
259
265
|
);
|
|
260
266
|
return /* @__PURE__ */ jsx(HoverCardContext.Provider, { value: ctx, children });
|
|
261
267
|
}
|
|
268
|
+
HoverCardRoot.displayName = "HoverCard";
|
|
262
269
|
function HoverCardTrigger({ children }) {
|
|
263
270
|
const ctx = useHoverCardContext();
|
|
264
271
|
if (!isValidElement(children)) return children;
|
|
@@ -329,16 +336,18 @@ var HoverCardContent = forwardRef(
|
|
|
329
336
|
function HoverCardArrow({ className, ...rest }) {
|
|
330
337
|
return /* @__PURE__ */ jsx(OverlayArrow, { className: cn("text-popover", className), ...rest });
|
|
331
338
|
}
|
|
332
|
-
HoverCard
|
|
333
|
-
|
|
334
|
-
|
|
339
|
+
var HoverCard = Object.assign(HoverCardRoot, {
|
|
340
|
+
Trigger: HoverCardTrigger,
|
|
341
|
+
Content: HoverCardContent,
|
|
342
|
+
Arrow: HoverCardArrow
|
|
343
|
+
});
|
|
335
344
|
var ActionSheetContext = createContext(null);
|
|
336
345
|
function useActionSheetContext() {
|
|
337
346
|
const ctx = useContext(ActionSheetContext);
|
|
338
347
|
if (!ctx) throw new Error("ActionSheet.* must be used inside <ActionSheet>");
|
|
339
348
|
return ctx;
|
|
340
349
|
}
|
|
341
|
-
function
|
|
350
|
+
function ActionSheetRoot({
|
|
342
351
|
open,
|
|
343
352
|
defaultOpen,
|
|
344
353
|
onOpenChange,
|
|
@@ -370,6 +379,7 @@ function ActionSheet({
|
|
|
370
379
|
}
|
|
371
380
|
) }) });
|
|
372
381
|
}
|
|
382
|
+
ActionSheetRoot.displayName = "ActionSheet";
|
|
373
383
|
var ActionSheetAction = forwardRef(
|
|
374
384
|
function ActionSheetAction2({ className, onSelect, isDestructive, onClick, children, type = "button", ...rest }, ref) {
|
|
375
385
|
const ctx = useActionSheetContext();
|
|
@@ -418,8 +428,10 @@ var ActionSheetCancel = forwardRef(
|
|
|
418
428
|
);
|
|
419
429
|
}
|
|
420
430
|
);
|
|
421
|
-
ActionSheet
|
|
422
|
-
|
|
431
|
+
var ActionSheet = Object.assign(ActionSheetRoot, {
|
|
432
|
+
Action: ActionSheetAction,
|
|
433
|
+
Cancel: ActionSheetCancel
|
|
434
|
+
});
|
|
423
435
|
var BottomSheetContext = createContext(null);
|
|
424
436
|
function useBottomSheet() {
|
|
425
437
|
const ctx = useContext(BottomSheetContext);
|
|
@@ -435,7 +447,7 @@ function resolveSnapPx(point, viewport) {
|
|
|
435
447
|
const n = parseFloat(trimmed);
|
|
436
448
|
return Number.isFinite(n) ? n : 0;
|
|
437
449
|
}
|
|
438
|
-
var
|
|
450
|
+
var BottomSheetRoot = forwardRef(function BottomSheet({
|
|
439
451
|
open: openProp,
|
|
440
452
|
defaultOpen = false,
|
|
441
453
|
onOpenChange,
|
|
@@ -619,9 +631,11 @@ var BottomSheet = forwardRef(function BottomSheet2({
|
|
|
619
631
|
});
|
|
620
632
|
var BottomSheetTitle = OverlayTitle;
|
|
621
633
|
var BottomSheetDescription = OverlayDescription;
|
|
622
|
-
|
|
623
|
-
|
|
634
|
+
var BottomSheet2 = Object.assign(BottomSheetRoot, {
|
|
635
|
+
Title: BottomSheetTitle,
|
|
636
|
+
Description: BottomSheetDescription
|
|
637
|
+
});
|
|
624
638
|
|
|
625
|
-
export { ActionSheet, ActionSheetAction, ActionSheetCancel,
|
|
626
|
-
//# sourceMappingURL=chunk-
|
|
627
|
-
//# sourceMappingURL=chunk-
|
|
639
|
+
export { ActionSheet, ActionSheetAction, ActionSheetCancel, AlertModal, AlertModalAction, AlertModalCancel, AlertModalContent, BottomSheet2 as BottomSheet, BottomSheetDescription, BottomSheetTitle, HoverCard, HoverCardArrow, HoverCardContent, HoverCardTrigger, Popover, PopoverArrow, PopoverContent, PopoverTrigger, useBottomSheet };
|
|
640
|
+
//# sourceMappingURL=chunk-XFUD3RZK.js.map
|
|
641
|
+
//# sourceMappingURL=chunk-XFUD3RZK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/overlays/alertModal/AlertModal.tsx","../src/overlays/popover/Popover.tsx","../src/overlays/hoverCard/HoverCard.tsx","../src/overlays/actionSheet/ActionSheet.tsx","../src/overlays/bottomSheet/BottomSheet.tsx"],"names":["AlertModalContent","AlertModalAction","AlertModalCancel","jsx","forwardRef","PopoverTrigger","PopoverContent","PopoverPortalRoot","createContext","useContext","useRef","useMemo","HoverCardPanel","HoverCardContent","ActionSheetAction","ActionSheetCancel","useState","useEffect","jsxs","FocusScope","BottomSheet"],"mappings":"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","file":"chunk-XFUD3RZK.js","sourcesContent":["import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils';\nimport {\n Modal,\n ModalBody,\n ModalContent,\n ModalDescription,\n ModalFooter,\n ModalHeader,\n ModalTitle,\n ModalTrigger,\n ModalClose,\n type ModalProps,\n type ModalContentProps,\n} from '../modal';\n\nexport type AlertModalProps = Omit<ModalProps, 'role' | 'dismissOnOutsideClick'>;\n\nfunction AlertModalRoot(props: AlertModalProps) {\n return <Modal {...props} role=\"alertdialog\" dismissOnOutsideClick={false} />;\n}\nAlertModalRoot.displayName = 'AlertModal';\n\nexport const AlertModalContent = forwardRef<HTMLDivElement, ModalContentProps>(\n function AlertModalContent(props, ref) {\n return <ModalContent ref={ref} {...props} />;\n },\n);\n\nexport interface AlertModalActionProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n /** Runs before the dialog closes. */\n onAction?: () => void;\n children: ReactNode;\n}\n\nexport const AlertModalAction = forwardRef<HTMLButtonElement, AlertModalActionProps>(\n function AlertModalAction({ onAction, onClick, className, children, ...rest }, ref) {\n return (\n <ModalClose\n ref={ref}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onAction?.();\n }}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md bg-primary px-4 text-sm font-medium text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </ModalClose>\n );\n },\n);\n\nexport interface AlertModalCancelProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n}\n\nexport const AlertModalCancel = forwardRef<HTMLButtonElement, AlertModalCancelProps>(\n function AlertModalCancel({ className, children, ...rest }, ref) {\n return (\n <ModalClose\n ref={ref}\n className={cn(\n 'inline-flex h-9 items-center justify-center rounded-md border border-border bg-background px-4 text-sm font-medium text-foreground transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </ModalClose>\n );\n },\n);\n\nexport const AlertModal = Object.assign(AlertModalRoot, {\n Trigger: ModalTrigger,\n Content: AlertModalContent,\n Header: ModalHeader,\n Title: ModalTitle,\n Description: ModalDescription,\n Body: ModalBody,\n Footer: ModalFooter,\n Action: AlertModalAction,\n Cancel: AlertModalCancel,\n});\n\nexport default AlertModal;\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n useRef,\n useState,\n type ButtonHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, composeRefs, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport {\n AnchoredPositioner,\n DismissableLayer,\n OverlayArrow,\n Portal,\n Presence,\n Slot,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface PopoverContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n /** Trigger node held in state so an initially-open popover re-renders anchored. */\n triggerNode: HTMLElement | null;\n onTriggerChange: (node: HTMLElement | null) => void;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n dismissOnOutsideClick: boolean;\n dismissOnEscape: boolean;\n}\n\nconst PopoverContext = createContext<PopoverContextValue | null>(null);\n\nfunction usePopoverContext() {\n const ctx = useContext(PopoverContext);\n if (!ctx) throw new Error('Popover.* must be used inside <Popover>');\n return ctx;\n}\n\nexport interface PopoverProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n children: ReactNode;\n}\n\nfunction PopoverRoot({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n placement = 'bottom',\n offset = 8,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n children,\n}: PopoverProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const [triggerNode, setTriggerNode] = useState<HTMLElement | null>(null);\n\n const ctx = useMemo<PopoverContextValue>(\n () => ({\n open,\n setOpen,\n triggerRef,\n triggerNode,\n onTriggerChange: setTriggerNode,\n placement,\n offset,\n dismissOnOutsideClick,\n dismissOnEscape,\n }),\n [open, setOpen, triggerNode, placement, offset, dismissOnOutsideClick, dismissOnEscape],\n );\n\n return <PopoverContext.Provider value={ctx}>{children}</PopoverContext.Provider>;\n}\nPopoverRoot.displayName = 'Popover';\n\nexport interface PopoverTriggerProps\n extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n asChild?: boolean;\n children: ReactNode;\n}\n\nexport const PopoverTrigger = forwardRef<HTMLButtonElement, PopoverTriggerProps>(\n function PopoverTrigger({ asChild, onClick, children, ...rest }, forwardedRef) {\n const ctx = usePopoverContext();\n const { triggerRef, onTriggerChange } = ctx;\n const Component = asChild ? Slot : 'button';\n // Memoized so the callback ref isn't re-invoked (null → node) every render.\n const composedRef = useMemo(\n () =>\n composeRefs<HTMLButtonElement>(\n forwardedRef,\n triggerRef as React.MutableRefObject<HTMLButtonElement | null>,\n onTriggerChange,\n ),\n [forwardedRef, triggerRef, onTriggerChange],\n );\n return (\n <Component\n ref={composedRef as never}\n type=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={ctx.open}\n data-state={ctx.open ? 'open' : 'closed'}\n onClick={(e: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(!ctx.open);\n }}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\n/** Represents the prop surface of the `Popover.Content`. */\nexport interface PopoverContentProps\n extends HTMLAttributes<HTMLDivElement>,\n SurfaceVariants {\n /** Skips the surface chrome (bg/border/shadow); keeps only z-index + animation. */\n isBare?: boolean;\n children: ReactNode;\n}\n\n/** Contains the default chrome width that preserves the historical look. */\nconst DEFAULT_WIDTH = 'w-72';\n\nexport const PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n function PopoverContent(\n { isBare, variant, tone, radius, padding, elevation, className, children, ...rest },\n forwardedRef,\n ) {\n const ctx = usePopoverContext();\n /* Default to lg padding when chrome is on (matches old `p-4`); consumer can override. */\n const resolvedPadding = padding ?? (isBare ? 'none' : 'lg');\n return (\n <Presence isPresent={ctx.open}>\n {/* `Presence` injects ref + data-state onto this portal root and defers\n unmount until its exit anim ends. The panel pop is driven off this\n root's state via `group-data-[state=*]` on the surface below. */}\n <PopoverPortalRoot>\n {/* z-popover (80) on the SC root (transform makes the stacking context) so a\n popover from a Modal (z-modal, 70) paints above it — both portal to body. */}\n <AnchoredPositioner\n anchor={ctx.triggerNode}\n placement={ctx.placement}\n offset={ctx.offset}\n className=\"z-popover\"\n >\n <FocusScope asChild trapped loop>\n <DismissableLayer\n isEscapeDisabled={!ctx.dismissOnEscape}\n onEscape={() => {\n ctx.setOpen(false);\n requestAnimationFrame(() => ctx.triggerRef.current?.focus());\n }}\n isOutsideClickDisabled={!ctx.dismissOnOutsideClick}\n onOutsidePointerDown={(e) => {\n if (ctx.triggerRef.current?.contains(e.target as Node)) return;\n ctx.setOpen(false);\n }}\n >\n <div\n ref={forwardedRef}\n role=\"dialog\"\n className={cn(\n /* pop (fade+scale) gated on the portal-root data-state + motion-safe\n so reduced-motion users get no movement. */\n 'outline-none',\n 'motion-safe:group-data-[state=open]:animate-(--animate-pop-in)',\n 'motion-safe:group-data-[state=closed]:animate-(--animate-pop-out) motion-reduce:animate-none',\n !isBare &&\n cn(\n DEFAULT_WIDTH,\n surfaceVariants({\n variant,\n tone,\n radius,\n padding: resolvedPadding,\n elevation,\n }),\n ),\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </DismissableLayer>\n </FocusScope>\n </AnchoredPositioner>\n </PopoverPortalRoot>\n </Presence>\n );\n },\n);\n\n/**\n * `Presence`-clonable root: a single element that accepts `ref` + `data-state`\n * (injected by `Presence`) and renders inside a `Portal`. Marked `group` so the\n * panel below animates off its `data-[state]`. Holds no layout of its own\n * (`display: contents`) so the anchored positioning of children is unaffected.\n */\nconst PopoverPortalRoot = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n function PopoverPortalRoot({ children, className, ...props }, ref) {\n return (\n <Portal>\n <div ref={ref} className={cn('group contents', className)} {...props}>\n {children}\n </div>\n </Portal>\n );\n },\n);\n\nexport function PopoverArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\nexport const Popover = Object.assign(PopoverRoot, {\n Trigger: PopoverTrigger,\n Content: PopoverContent,\n Arrow: PopoverArrow,\n});\n\nexport default Popover;\n","import {\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport { cn, composeRefs } from '../../utils';\nimport { useControlled, useEscape } from '../../hooks';\nimport {\n AnchoredPositioner,\n OverlayArrow,\n Portal,\n Presence,\n type AnchoredPositionerProps,\n type OverlayArrowProps,\n} from '../../primitives';\n\ninterface HoverCardContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n triggerRef: React.MutableRefObject<HTMLElement | null>;\n show: () => void;\n hide: () => void;\n cancelHide: () => void;\n placement: AnchoredPositionerProps['placement'];\n offset: number;\n}\n\nconst HoverCardContext = createContext<HoverCardContextValue | null>(null);\n\nfunction useHoverCardContext() {\n const ctx = useContext(HoverCardContext);\n if (!ctx) throw new Error('HoverCard.* must be used inside <HoverCard>');\n return ctx;\n}\n\nexport interface HoverCardProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n openDelay?: number;\n closeDelay?: number;\n placement?: AnchoredPositionerProps['placement'];\n offset?: number;\n children: ReactNode;\n}\n\nfunction HoverCardRoot({\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300,\n placement = 'bottom',\n offset = 8,\n children,\n}: HoverCardProps) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const openTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const clear = useCallback(() => {\n if (openTimer.current) clearTimeout(openTimer.current);\n if (closeTimer.current) clearTimeout(closeTimer.current);\n openTimer.current = null;\n closeTimer.current = null;\n }, []);\n\n const show = useCallback(() => {\n clear();\n openTimer.current = setTimeout(() => setOpen(true), openDelay);\n }, [clear, openDelay, setOpen]);\n\n const hide = useCallback(() => {\n clear();\n closeTimer.current = setTimeout(() => setOpen(false), closeDelay);\n }, [clear, closeDelay, setOpen]);\n\n const cancelHide = useCallback(() => {\n if (closeTimer.current) {\n clearTimeout(closeTimer.current);\n closeTimer.current = null;\n }\n }, []);\n\n // Clear pending timers on unmount — avoids setState-after-unmount.\n useEffect(() => clear, [clear]);\n\n // WCAG 1.4.13 — hover content must be dismissible without moving the pointer.\n useEscape(() => {\n clear();\n setOpen(false);\n }, open);\n\n const ctx = useMemo<HoverCardContextValue>(\n () => ({ open, setOpen, triggerRef, show, hide, cancelHide, placement, offset }),\n [open, setOpen, show, hide, cancelHide, placement, offset],\n );\n\n return <HoverCardContext.Provider value={ctx}>{children}</HoverCardContext.Provider>;\n}\nHoverCardRoot.displayName = 'HoverCard';\n\nexport interface HoverCardTriggerProps {\n asChild?: boolean;\n children: ReactElement;\n}\n\nexport function HoverCardTrigger({ children }: HoverCardTriggerProps) {\n const ctx = useHoverCardContext();\n if (!isValidElement(children)) return children;\n const trigger = children as ReactElement<{\n ref?: Ref<HTMLElement>;\n onPointerEnter?: (e: React.PointerEvent) => void;\n onPointerLeave?: (e: React.PointerEvent) => void;\n onFocus?: (e: React.FocusEvent) => void;\n onBlur?: (e: React.FocusEvent) => void;\n }> & { ref?: Ref<HTMLElement> };\n\n return cloneElement(trigger, {\n ref: composeRefs((node: HTMLElement | null) => {\n ctx.triggerRef.current = node;\n }, trigger.ref),\n onPointerEnter: (e: React.PointerEvent) => {\n trigger.props.onPointerEnter?.(e);\n ctx.show();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n trigger.props.onPointerLeave?.(e);\n ctx.hide();\n },\n onFocus: (e: React.FocusEvent) => {\n trigger.props.onFocus?.(e);\n ctx.show();\n },\n onBlur: (e: React.FocusEvent) => {\n trigger.props.onBlur?.(e);\n ctx.hide();\n },\n });\n}\n\nexport interface HoverCardContentProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n}\n\n/*\n * Presence clones its single child and injects `ref` + `data-state` onto it,\n * so that child must be the animated element. Portal/AnchoredPositioner can't\n * carry those props down to the styled div, so this forwardRef panel bridges\n * them: Presence drives this panel, the panel renders the Portal → positioner\n * tree, and forwards `ref` + the injected `data-state` (via `...rest`) onto the\n * inner div that carries the pop transition.\n */\nconst HoverCardPanel = forwardRef<HTMLDivElement, HoverCardContentProps>(\n function HoverCardPanel({ className, children, onPointerEnter, onPointerLeave, ...rest }, forwardedRef) {\n const ctx = useHoverCardContext();\n return (\n <Portal>\n <AnchoredPositioner\n anchor={ctx.triggerRef.current}\n placement={ctx.placement}\n offset={ctx.offset}\n className=\"z-dropdown\"\n >\n <div\n ref={forwardedRef}\n onPointerEnter={(e) => {\n onPointerEnter?.(e);\n ctx.cancelHide();\n }}\n onPointerLeave={(e) => {\n onPointerLeave?.(e);\n ctx.hide();\n }}\n className={cn(\n 'w-64 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n 'motion-safe:data-[state=open]:animate-(--animate-pop-in) motion-safe:data-[state=closed]:animate-(--animate-pop-out) motion-reduce:animate-none',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n </AnchoredPositioner>\n </Portal>\n );\n },\n);\n\nexport const HoverCardContent = forwardRef<HTMLDivElement, HoverCardContentProps>(\n function HoverCardContent(props, forwardedRef) {\n const ctx = useHoverCardContext();\n return (\n <Presence isPresent={ctx.open}>\n <HoverCardPanel ref={forwardedRef} {...props} />\n </Presence>\n );\n },\n);\n\nexport function HoverCardArrow({ className, ...rest }: OverlayArrowProps) {\n return <OverlayArrow className={cn('text-popover', className)} {...rest} />;\n}\n\nexport const HoverCard = Object.assign(HoverCardRoot, {\n Trigger: HoverCardTrigger,\n Content: HoverCardContent,\n Arrow: HoverCardArrow,\n});\n\nexport default HoverCard;\n","import {\n createContext,\n forwardRef,\n useContext,\n useMemo,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { Drawer, DrawerContent, DrawerDescription, DrawerTitle } from '../drawer';\n\ninterface ActionSheetContextValue {\n setOpen: (open: boolean) => void;\n}\n\nconst ActionSheetContext = createContext<ActionSheetContextValue | null>(null);\n\nfunction useActionSheetContext() {\n const ctx = useContext(ActionSheetContext);\n if (!ctx) throw new Error('ActionSheet.* must be used inside <ActionSheet>');\n return ctx;\n}\n\nexport interface ActionSheetProps {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n title?: ReactNode;\n description?: ReactNode;\n className?: string;\n children: ReactNode;\n}\n\n/**\n * iOS-style action sheet — opinionated bottom Drawer with stacked button rows\n * and a separated Cancel.\n */\nfunction ActionSheetRoot({\n open,\n defaultOpen,\n onOpenChange,\n title,\n description,\n className,\n children,\n}: ActionSheetProps) {\n // ActionSheet owns open state + drives Drawer fully controlled, so `ctx.setOpen`\n // works in both controlled and uncontrolled modes (Drawer's context isn't interceptable).\n const [resolvedOpen, setOpen] = useControlled({\n controlled: open,\n default: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n\n const ctx = useMemo<ActionSheetContextValue>(() => ({ setOpen }), [setOpen]);\n\n return (\n <ActionSheetContext.Provider value={ctx}>\n <Drawer open={resolvedOpen} onOpenChange={setOpen} side=\"bottom\">\n <DrawerContent\n className={cn(\n 'mx-auto max-w-md rounded-t-xl bg-card p-2 text-card-foreground',\n className,\n )}\n >\n {(title || description) && (\n <div className=\"px-3 py-2 text-center\">\n {title && (\n <DrawerTitle className=\"text-sm font-medium text-muted-foreground\">\n {title}\n </DrawerTitle>\n )}\n {description && (\n <DrawerDescription className=\"mt-1 text-xs text-muted-foreground\">\n {description}\n </DrawerDescription>\n )}\n </div>\n )}\n <div className=\"flex flex-col gap-px overflow-hidden rounded-lg bg-border\">\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n </ActionSheetContext.Provider>\n );\n}\nActionSheetRoot.displayName = 'ActionSheet';\n\nexport interface ActionSheetActionProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n onSelect?: () => void;\n isDestructive?: boolean;\n}\n\nexport const ActionSheetAction = forwardRef<HTMLButtonElement, ActionSheetActionProps>(\n function ActionSheetAction(\n { className, onSelect, isDestructive, onClick, children, type = 'button', ...rest },\n ref,\n ) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n onSelect?.();\n ctx.setOpen(false);\n }}\n className={cn(\n 'flex h-12 w-full items-center justify-center bg-card px-4 text-base font-medium transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n isDestructive ? 'text-destructive' : 'text-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport type ActionSheetCancelProps = ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ActionSheetCancel = forwardRef<HTMLButtonElement, ActionSheetCancelProps>(\n function ActionSheetCancel({ className, onClick, children = 'Cancel', type = 'button', ...rest }, ref) {\n const ctx = useActionSheetContext();\n return (\n <button\n ref={ref}\n type={type}\n onClick={(e) => {\n onClick?.(e);\n if (e.defaultPrevented) return;\n ctx.setOpen(false);\n }}\n className={cn(\n 'mt-2 flex h-12 w-full items-center justify-center rounded-lg bg-card text-base font-semibold text-foreground shadow-sm transition-colors hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',\n className,\n )}\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n\nexport const ActionSheet = Object.assign(ActionSheetRoot, {\n Action: ActionSheetAction,\n Cancel: ActionSheetCancel,\n});\n\nexport default ActionSheet;\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n} from 'react';\nimport { FocusScope } from '@radix-ui/react-focus-scope';\nimport { cn, surfaceVariants, type SurfaceVariants } from '../../utils';\nimport { useControlled } from '../../hooks';\nimport { DismissableLayer, Portal, Presence, ScrollLockProvider } from '../../primitives';\nimport { Backdrop } from '../backdrop';\nimport {\n OverlayChromeProvider,\n OverlayDescription,\n OverlayTitle,\n type OverlayChromeContextValue,\n} from '../OverlayChrome';\n\ntype SnapPoint = number | string;\n\ninterface BottomSheetContextValue {\n open: boolean;\n setOpen: (open: boolean) => void;\n currentSnap: number;\n setCurrentSnap: (i: number) => void;\n snapPoints: SnapPoint[];\n}\n\nconst BottomSheetContext = createContext<BottomSheetContextValue | null>(null);\n\nexport function useBottomSheet() {\n const ctx = useContext(BottomSheetContext);\n if (!ctx) throw new Error('useBottomSheet must be used inside <BottomSheet>');\n return ctx;\n}\n\nfunction resolveSnapPx(point: SnapPoint, viewport: number): number {\n if (typeof point === 'number') return point;\n const trimmed = point.trim();\n if (trimmed.endsWith('vh')) return (parseFloat(trimmed) / 100) * viewport;\n if (trimmed.endsWith('px')) return parseFloat(trimmed);\n if (trimmed.endsWith('%')) return (parseFloat(trimmed) / 100) * viewport;\n // Fallback: try parseFloat as px.\n const n = parseFloat(trimmed);\n return Number.isFinite(n) ? n : 0;\n}\n\n/** Represents the prop surface of `BottomSheet`. */\nexport interface BottomSheetProps extends HTMLAttributes<HTMLDivElement>, SurfaceVariants {\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n snapPoints?: SnapPoint[];\n initialSnap?: number;\n dismissOnOutsideClick?: boolean;\n dismissOnEscape?: boolean;\n dragToDismiss?: boolean;\n children: ReactNode;\n}\n\n/**\n * Mobile bottom sheet with drag handle + snap points. Pointer-event drag\n * between heights; releasing snaps to the nearest point. Past the lowest\n * snap with `dragToDismiss`, the sheet closes.\n */\nconst BottomSheetRoot = forwardRef<HTMLDivElement, BottomSheetProps>(function BottomSheet(\n {\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n snapPoints = ['40vh', '90vh'],\n initialSnap = 0,\n dismissOnOutsideClick = true,\n dismissOnEscape = true,\n dragToDismiss = true,\n variant,\n tone,\n radius,\n padding,\n elevation,\n className,\n children,\n ...rest\n },\n forwardedRef,\n) {\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n onChange: onOpenChange,\n });\n const [currentSnap, setCurrentSnap] = useState(\n Math.min(initialSnap, snapPoints.length - 1),\n );\n const sheetRef = useRef<HTMLDivElement | null>(null);\n const startYRef = useRef<number | null>(null);\n const startHeightRef = useRef(0);\n const [dragHeight, setDragHeight] = useState<number | null>(null);\n // Keeps the portal subtree (scroll lock + backdrop + sheet) mounted while the\n // exit animation plays after `open` flips false; the per-node <Presence>\n // wrappers defer their own unmount, and this flag releases the scroll lock\n // only once they've finished. Mirrors the \"open OR exiting\" gate other\n // overlays use, while preserving the no-lock-when-closed behavior.\n const [isExiting, setIsExiting] = useState(false);\n const titleId = useId();\n const descriptionId = useId();\n\n // Reset to initialSnap each time we re-open.\n useEffect(() => {\n if (open) setCurrentSnap(Math.min(initialSnap, snapPoints.length - 1));\n }, [open, initialSnap, snapPoints.length]);\n\n // Drive the trailing-mount flag: opening clears it; closing holds the subtree\n // mounted for one exit cycle (longest motion token = base duration) so the\n // slide-down + backdrop fade can play, then drops it to release scroll lock.\n useEffect(() => {\n if (open) {\n setIsExiting(false);\n return;\n }\n setIsExiting(true);\n const timer = window.setTimeout(() => setIsExiting(false), 320);\n return () => window.clearTimeout(timer);\n }, [open]);\n\n const ctx = useMemo<BottomSheetContextValue>(\n () => ({ open, setOpen, currentSnap, setCurrentSnap, snapPoints }),\n [open, setOpen, currentSnap, snapPoints],\n );\n\n const chromeCtx = useMemo<OverlayChromeContextValue>(\n () => ({ titleId, descriptionId, close: () => setOpen(false) }),\n [titleId, descriptionId, setOpen],\n );\n\n const handlePointerDown = (e: ReactPointerEvent<HTMLDivElement>) => {\n startYRef.current = e.clientY;\n const rect = sheetRef.current?.getBoundingClientRect();\n startHeightRef.current = rect ? rect.height : 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n };\n\n const handlePointerMove = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n const dy = e.clientY - startYRef.current;\n setDragHeight(Math.max(0, startHeightRef.current - dy));\n };\n\n const handlePointerUp = (e: ReactPointerEvent<HTMLDivElement>) => {\n if (startYRef.current == null) return;\n startYRef.current = null;\n (e.currentTarget as HTMLElement).releasePointerCapture?.(e.pointerId);\n\n const viewport = typeof window !== 'undefined' ? window.innerHeight : 800;\n const heights = snapPoints.map((p) => resolveSnapPx(p, viewport));\n const liveHeight = dragHeight ?? heights[currentSnap] ?? 0;\n setDragHeight(null);\n\n // Below lowest snap by 60px → dismiss.\n if (dragToDismiss && liveHeight < (heights[0] ?? 0) - 60) {\n setOpen(false);\n return;\n }\n // Snap to nearest.\n let bestIdx = 0;\n let bestDist = Number.POSITIVE_INFINITY;\n heights.forEach((h, i) => {\n const d = Math.abs(h - liveHeight);\n if (d < bestDist) {\n bestDist = d;\n bestIdx = i;\n }\n });\n setCurrentSnap(bestIdx);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'ArrowUp' && currentSnap < snapPoints.length - 1) {\n e.preventDefault();\n setCurrentSnap(currentSnap + 1);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (currentSnap > 0) setCurrentSnap(currentSnap - 1);\n else if (dragToDismiss) setOpen(false);\n }\n };\n\n // Mounted whenever open OR mid-exit — the <Presence> wrappers below defer\n // their own unmount until the slide-down / fade-out finishes.\n if (!open && !isExiting) return null;\n\n const heightStyle: string | number = (() => {\n if (dragHeight != null) return `${dragHeight}px`;\n const point = snapPoints[currentSnap];\n if (typeof point === 'number') return `${point}px`;\n return point ?? '40vh';\n })();\n\n return (\n <BottomSheetContext.Provider value={ctx}>\n <Portal>\n <ScrollLockProvider>\n {/* Backdrop in its own Presence so its fade-out plays before unmount;\n `Presence` injects `data-state` onto it and the fade tokens gate on it. */}\n <Presence isPresent={open}>\n <Backdrop\n isInline\n className={cn(\n 'motion-safe:data-[state=open]:animate-(--animate-fade-in)',\n 'motion-safe:data-[state=closed]:animate-(--animate-fade-out)',\n )}\n onClick={() => {\n if (dismissOnOutsideClick) setOpen(false);\n }}\n />\n </Presence>\n <FocusScope asChild trapped loop>\n <DismissableLayer\n isEscapeDisabled={!dismissOnEscape}\n onEscape={() => setOpen(false)}\n isOutsideClickDisabled\n >\n {/* The sheet panel is the Presence-animated node — it carries\n `data-state` (injected via {...props}) and the slide classes.\n FULL slide from the bottom edge: translate-y-full when closed,\n driven by `transition-transform` (the inline transition also\n carries `transform` so the height + slide animate together).\n Gated `motion-safe` + `motion-reduce` so reduced-motion users\n get no movement. */}\n <Presence isPresent={open}>\n <div\n ref={(el) => {\n sheetRef.current = el;\n if (typeof forwardedRef === 'function') forwardedRef(el);\n else if (forwardedRef) (forwardedRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={titleId}\n aria-describedby={descriptionId}\n style={{\n height: heightStyle,\n transition:\n dragHeight == null\n ? 'height 220ms ease-out, transform var(--duration-base) var(--ease-out)'\n : 'none',\n }}\n className={cn(\n 'fixed inset-x-0 bottom-0 z-modal flex flex-col rounded-t-xl border-t outline-none',\n 'will-change-transform',\n 'motion-safe:data-[state=closed]:translate-y-full',\n 'motion-reduce:translate-y-0',\n surfaceVariants({\n variant: variant ?? 'elevated',\n tone,\n radius: radius ?? 'none',\n padding: padding ?? 'none',\n elevation: elevation ?? 5,\n }),\n className,\n )}\n {...rest}\n >\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-valuenow={currentSnap}\n aria-valuemin={0}\n aria-valuemax={snapPoints.length - 1}\n tabIndex={0}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n onKeyDown={handleKeyDown}\n className=\"flex h-7 cursor-ns-resize items-center justify-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring\"\n >\n <span className=\"h-1 w-10 rounded-full bg-border-strong\" aria-hidden=\"true\" />\n </div>\n <div className=\"flex-1 overflow-y-auto px-4 pb-4\">\n <OverlayChromeProvider value={chromeCtx}>{children}</OverlayChromeProvider>\n </div>\n </div>\n </Presence>\n </DismissableLayer>\n </FocusScope>\n </ScrollLockProvider>\n </Portal>\n </BottomSheetContext.Provider>\n );\n});\n\n// Re-export shared chrome under the BottomSheet namespace — they wire\n// `id={titleId}`/`id={descriptionId}` so the sheet's aria-labelledby/describedby resolve.\nexport const BottomSheetTitle = OverlayTitle;\nexport const BottomSheetDescription = OverlayDescription;\n\nexport const BottomSheet = Object.assign(BottomSheetRoot, {\n Title: BottomSheetTitle,\n Description: BottomSheetDescription,\n});\n\nexport default BottomSheet;\n"]}
|