import * as Popover from '@radix-ui/react-popover' 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 { name: string acceptedFiles: readonly FileWithPath[] fileRejections: readonly FileRejection[] } export const MediaInputPopover = ({ name, acceptedFiles, fileRejections }: MediaInputPopoverProps) => { const acceptedFileItems = useMemo( () => acceptedFiles.map((file) => ( )), [acceptedFiles] ) const fileRejectionItems = useMemo(() => { const id = `${name}-errors` return (
{fileRejections.map(({ file, errors }, index) => ( ))}
) }, [fileRejections, name]) if (acceptedFiles.length === 0 && fileRejections.length === 0) return null return (
{acceptedFiles.length > 0 ? ( ) : ( )}

Selected files

{acceptedFileItems} {fileRejectionItems}
) }