import React from "react"; import * as Stiches from "@stitches/react"; import { keyframes } from "@stitches/react"; import { blackA } from "@radix-ui/colors"; import * as DialogPrimitive from "@radix-ui/react-dialog"; import { styled } from "../stitches.config"; const overlayShow = keyframes({ "0%": { opacity: 0.01 }, "100%": { opacity: 1 }, }); const contentShow = keyframes({ "0%": { opacity: 0.01 }, "100%": { opacity: 1 }, }); const StyledOverlay = styled(DialogPrimitive.Overlay, { zIndex: 9999, backgroundColor: blackA.blackA9, position: "fixed", inset: 0, top: 0, left: 0, right: 0, bottom: 0, display: "grid", placeItems: "center", overflowY: "auto", "@media (prefers-reduced-motion: no-preference)": { animation: `${overlayShow} 250ms cubic-bezier(0.16, 1, 0.3, 1)`, }, ".dark &": { backgroundColor: blackA.blackA11, }, }); const StyledContent = styled(DialogPrimitive.Content, { zIndex: 1000, backgroundColor: "$mauve2", color: "$mauve12", borderRadius: "$md", position: "relative", mb: "15%", boxShadow: "0px 10px 38px -5px rgba(22, 23, 24, 0.25), 0px 10px 20px -5px rgba(22, 23, 24, 0.2)", width: "90vw", maxWidth: "450px", // maxHeight: "85vh", padding: 25, "@media (prefers-reduced-motion: no-preference)": { animation: `${contentShow} 150ms cubic-bezier(0.16, 1, 0.3, 1)`, }, "&:focus": { outline: "none" }, ".dark &": { backgroundColor: "$mauve5", boxShadow: "0px 10px 38px 0px rgba(0, 0, 0, 0.85), 0px 10px 20px 0px rgba(0, 0, 0, 0.6)", }, }); const Content: React.FC<{ css?: Stiches.CSS }> = ({ css, children }) => { return ( {children} ); }; const StyledTitle = styled(DialogPrimitive.Title, { margin: 0, fontWeight: 500, color: "$mauve12", fontSize: 17, }); const StyledDescription = styled(DialogPrimitive.Description, { margin: "10px 0 10px", color: "$mauve11", fontSize: 15, lineHeight: 1.5, }); // Exports export const Dialog = styled(DialogPrimitive.Root); export const DialogTrigger = DialogPrimitive.Trigger; export const DialogContent = Content; export const DialogTitle = StyledTitle; export const DialogDescription = StyledDescription; export const DialogClose = DialogPrimitive.Close; export const DialogPortal = DialogPrimitive.Portal;