mirror of
https://github.com/checktheroads/hyperglass
synced 2024-05-11 05:55:08 +00:00
74 lines
2.2 KiB
JavaScript
74 lines
2.2 KiB
JavaScript
import * as React from "react";
|
|
import {
|
|
Button,
|
|
Modal,
|
|
ModalOverlay,
|
|
ModalContent,
|
|
ModalHeader,
|
|
ModalFooter,
|
|
ModalBody,
|
|
ModalCloseButton,
|
|
useColorMode,
|
|
useDisclosure,
|
|
} from "@chakra-ui/core";
|
|
import MarkDown from "~/components/MarkDown";
|
|
import { motion } from "framer-motion";
|
|
|
|
const bg = { light: "white", dark: "black" };
|
|
const color = { light: "black", dark: "white" };
|
|
|
|
const AnimatedModalContent = motion.custom(ModalContent);
|
|
const AnimatedModalOverlay = motion.custom(ModalOverlay);
|
|
|
|
const Greeting = ({ greetingConfig, content, onClickThrough }) => {
|
|
const { isOpen, onOpen, onClose } = useDisclosure(true);
|
|
const { colorMode } = useColorMode();
|
|
|
|
const handleClick = () => {
|
|
onClickThrough(true);
|
|
onClose();
|
|
};
|
|
|
|
return (
|
|
<Modal
|
|
onClose={handleClick}
|
|
isOpen={isOpen}
|
|
size="full"
|
|
isCentered
|
|
closeOnOverlayClick={!greetingConfig.required}
|
|
closeOnEsc={!greetingConfig.required}
|
|
>
|
|
<AnimatedModalOverlay
|
|
initial={{ opacity: 0 }}
|
|
animate={{ opacity: 1 }}
|
|
transition={{ duration: 0.3, delay: 0.7 }}
|
|
/>
|
|
<AnimatedModalContent
|
|
initial={{ scale: 0.5, opacity: 0 }}
|
|
animate={{ scale: 1, opacity: 1 }}
|
|
transition={{ duration: 0.3, delay: 0.7 }}
|
|
bg={bg[colorMode]}
|
|
color={color[colorMode]}
|
|
py={4}
|
|
borderRadius="md"
|
|
maxW={["95%", "75%", "75%", "75%"]}
|
|
>
|
|
<ModalHeader>{greetingConfig.title}</ModalHeader>
|
|
{!greetingConfig.required && <ModalCloseButton />}
|
|
<ModalBody>
|
|
<MarkDown content={content} />
|
|
</ModalBody>
|
|
<ModalFooter>
|
|
<Button variantColor="primary" onClick={handleClick}>
|
|
{greetingConfig.button}
|
|
</Button>
|
|
</ModalFooter>
|
|
</AnimatedModalContent>
|
|
</Modal>
|
|
);
|
|
};
|
|
|
|
Greeting.displayName = "Greeting";
|
|
|
|
export default Greeting;
|