mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-18 01:46:41 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import clsx from "clsx";
|
|
import React from "react";
|
|
|
|
export default function Modal({
|
|
active,
|
|
setActive,
|
|
children,
|
|
}: {
|
|
active: boolean;
|
|
setActive: (active: boolean) => void;
|
|
children: React.ReactNode;
|
|
}): JSX.Element {
|
|
return (
|
|
<>
|
|
{/* overlay */}
|
|
<div
|
|
className={clsx(
|
|
"fixed top-0 bottom-0 left-0 right-0 flex items-center justify-center transition z-[200] pointer-events-auto",
|
|
{ "!hidden": !active }
|
|
)}
|
|
onClick={() => setActive(false)}
|
|
>
|
|
<div className="absolute top-0 bottom-0 left-0 right-0 h-full w-full bg-gray-800 opacity-[.46]"></div>
|
|
</div>
|
|
{/* modal */}
|
|
<div
|
|
className={clsx(
|
|
"fixed top-0 left-0 flex items-center justify-center h-full w-full z-[201] pointer-events-none",
|
|
{ "!hidden": !active }
|
|
)}
|
|
tabIndex={0}
|
|
>
|
|
<div className="w-full max-w-[600px] max-h-[90%] overflow-y-auto rounded shadow-lg m-6 z-[inherit] pointer-events-auto thin-scrollbar">
|
|
<div className="bg-light-nonepress-100 dark:bg-dark-nonepress-100">
|
|
{children}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|