"use client"; import * as Dialog from "@radix-ui/react-dialog"; import React from "react"; import { isIOS } from "src/utils/isDevice"; import { CloseTiny } from "./Icons/CloseTiny"; import { useVisualViewport } from "./ViewportSizeLayout"; export const Modal = ({ className, open, onOpenChange, asChild, trigger, actionButton, title, children, }: { className?: string; open?: boolean; onOpenChange?: (open: boolean) => void; asChild?: boolean; trigger?: React.ReactNode; title?: React.ReactNode; children: React.ReactNode; actionButton?: React.ReactNode; }) => { let { height, offsetTop, difference } = useVisualViewport(); // iOS keyboard open: re-center modal against the visual viewport. Android // resizes the layout viewport via interactiveWidget: "resizes-content". let keyboardOpen = isIOS() && difference !== 0 && height > 0; return ( {trigger !== undefined && ( {trigger} )}
{title ? (

{title}

{actionButton && actionButton}
) : ( )}
{children}
); };