import { Button } from "~/components/ui/button" import logoPng from "~/images/lume-logo.png?url" import lumeColorLogoPng from "~/images/lume-color-logo.png?url" import discordLogoPng from "~/images/discord-logo.png?url" import { Link } from "@remix-run/react" import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from "~/components/ui/dialog" import { useUppy } from "./lib/uppy" import type { UppyFile } from "@uppy/core" import { Progress } from "~/components/ui/progress" import { DialogClose } from "@radix-ui/react-dialog" import { TrashIcon } from "@radix-ui/react-icons" import { ClockIcon, DriveIcon, CircleLockIcon, CloudUploadIcon, CloudCheckIcon, BoxCheckedIcon, PageIcon } from "./icons" export const GeneralLayout = ({ children }: React.PropsWithChildren<{}>) => { return (
Lume logo

Freedom

Privacy

Ownership

{children}
) } const UploadFileForm = () => { const { getRootProps, getInputProps, getFiles, upload, state, removeFile, cancelAll } = useUppy({ uploader: "tus", endpoint: import.meta.env.VITE_PUBLIC_TUS_ENDPOINT }) console.log({ state, files: getFiles() }) const isUploading = state === "uploading" const isCompleted = state === "completed" const hasStarted = state !== "idle" && state !== "initializing" return ( <> Upload Files {!hasStarted ? (

Drag & Drop Files or Browse

) : null}
{getFiles().map((file) => ( { removeFile(id) }} /> ))}
{hasStarted ? (
{isCompleted ? "Upload completed" : `${getFiles().length} files being uploaded`}
) : null} {isUploading ? ( ) : null} {isCompleted ? ( ) : null} {!hasStarted && !isCompleted && !isUploading ? ( ) : null} ) } function bytestoMegabytes(bytes: number) { return bytes / 1024 / 1024 } const UploadFileItem = ({ file, onRemove }: { file: UppyFile onRemove: (id: string) => void }) => { return (
{file.progress?.uploadComplete ? ( ) : ( )}

{file.name} {" "} ({bytestoMegabytes(file.size).toFixed(2)} MB)

{file.progress?.uploadStarted && !file.progress.uploadComplete ? ( ) : null}
) } const NavigationButton = ({ children }: React.PropsWithChildren) => { return ( ) }