Something went wrong. Try again.
a tool for shared writing and social publishing
Something went wrong. Try again.
1.7 kB · 58 lines
TSX
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859import * as Dialog from "@radix-ui/react-dialog";import React from "react";import { CloseTiny } from "./Icons/CloseTiny";
export const Modal = ({ className, open, onOpenChange, asChild, trigger, title, children,}: { className?: string; open?: boolean; onOpenChange?: (open: boolean) => void; asChild?: boolean; trigger: React.ReactNode; title?: React.ReactNode; children: React.ReactNode;}) => { return ( <Dialog.Root open={open} onOpenChange={onOpenChange}> <Dialog.Trigger asChild={asChild}>{trigger}</Dialog.Trigger> <Dialog.Portal> <Dialog.Overlay className="fixed z-50 inset-0 bg-primary data-[state=open]:animate-overlayShow opacity-60" /> <Dialog.Content className={` z-50 fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 overflow-y-scroll no-scrollbar w-max max-w-[calc(100vw-32px)] h-fit max-h-[calc(100dvh-32px)] p-3 flex flex-col
`} > <Dialog.Close className="bg-bg-page rounded-full -mb-3 mr-2 z-10 w-fit p-1 place-self-end border border-border-light text-tertiary"> <CloseTiny /> </Dialog.Close> <div className={` opaque-container p-3 flex flex-col rounded-lg! ${className}`} > {title ? ( <Dialog.Title> <h3 className="pb-1">{title}</h3> </Dialog.Title> ) : ( <Dialog.Title /> )} <Dialog.Description asChild> <div>{children}</div> </Dialog.Description> </div> </Dialog.Content> </Dialog.Portal> </Dialog.Root> );};