import * as Popover from '@radix-ui/react-popover' import { v4 as uuidv4 } from 'uuid' import { useMemo } from 'react' import { FileRejection, FileWithPath } from 'react-dropzone' import { MediaInputError } from './MediaInputError' import { InputSuccess } from './Success' import styles from './MediaInputPopover.module.scss' interface MediaInputPopoverProps { acceptedFiles: readonly FileWithPath[] fileRejections: readonly FileRejection[] } export const MediaInputPopover = ({ acceptedFiles, fileRejections }: MediaInputPopoverProps) => { const uuid = useMemo(() => uuidv4(), []) const acceptedFileItems = useMemo( () => acceptedFiles.map((file) => ( )), [acceptedFiles] ) const fileRejectionItems = useMemo(() => { const id = `errors-${uuid}` return (
{fileRejections.map(({ file, errors }, index) => ( ))}
) }, [fileRejections, uuid]) if (acceptedFiles.length === 0 && fileRejections.length === 0) return null return (
{acceptedFiles.length > 0 ? ( ) : ( )}

Selected files

{acceptedFileItems} {fileRejectionItems}
) }