import { SecondaryButton } from "$/component/button"; import type { FileInputProps } from "$/types/InputTypes"; import { humanReadableBytes } from "$/util/FileUtil"; import clsx from "clsx"; import { useRef, useState } from "react"; export default function FileInput({ id, className, name, minSize, maxSize, showFileName, showSize, onChange, disabled, children }: FileInputProps){ const inputRef = useRef(null); const [ file, setFile ] = useState(); return (
{ setFile(e.target.files?.[0]); onChange?.(e.target.files?.[0]); }} disabled={disabled} />
{ children && !showFileName &&
{children}
} { showFileName &&
{file?.name}
} { !children && !showFileName && <>  } { showSize &&
maxSize, "text-green-600": minSize && !maxSize && file?.size && file?.size > minSize, "text-green-600 ": !minSize && maxSize && file?.size && file?.size < maxSize, " text-green-600": minSize && maxSize && file?.size && file?.size > minSize && file?.size < maxSize } )} > {humanReadableBytes(file?.size ?? 0)}
}
{ inputRef.current?.click(); }} disabled={disabled} > Click Me
); }