import { faArrowUp, faFileCirclePlus, faXmark, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Box, Stack, Text } from "@mantine/core"; import { Dropzone, DropzoneProps, DropzoneStatus, FullScreenDropzone, FullScreenDropzoneProps, } from "@mantine/dropzone"; import { FunctionComponent, useMemo } from "react"; export type FileProps = Omit & { inner?: FileInnerComponent; }; const File: FunctionComponent = ({ inner: Inner = FileInner, ...props }) => { return ( {(status) => } ); }; export type FileOverlayProps = Omit & { inner?: FileInnerComponent; }; export const FileOverlay: FunctionComponent = ({ inner: Inner = FileInner, ...props }) => { return ( {(status) => } ); }; export type FileInnerProps = { status: DropzoneStatus; }; type FileInnerComponent = FunctionComponent; const FileInner: FileInnerComponent = ({ status }) => { const { accepted, rejected } = status; const icon = useMemo(() => { if (accepted) { return faArrowUp; } else if (rejected) { return faXmark; } else { return faFileCirclePlus; } }, [accepted, rejected]); return ( Upload files here Drag and drop, or click to select ); }; export default File;