page.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use client";
  2. import { UploadForm } from "../components/uploadForm";
  3. import { FilesTable } from "../components/filesTable";
  4. import { useState } from "react";
  5. interface FileData {
  6. id: string;
  7. filename: string;
  8. mimetype: string;
  9. size: number;
  10. createdAt: string;
  11. updatedAt: string;
  12. }
  13. export default function FilesPage() {
  14. const [, setNewFile] = useState<FileData | null>(null);
  15. const handleFileUploaded = (file: FileData) => {
  16. // This will trigger the FilesTable to add the new file
  17. setNewFile(file);
  18. };
  19. return (
  20. <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
  21. <main className="flex flex-col gap-8 row-start-2 items-center sm:items-start">
  22. <h1 className="text-3xl font-bold text-center sm:text-left">
  23. File Management
  24. </h1>
  25. <p className="text-sm text-center sm:text-left max-w-[600px]">
  26. Upload and manage your media files here. Select files to upload them to the server.
  27. </p>
  28. <div className="flex flex-col gap-4 items-center sm:items-start">
  29. <h2 className="text-xl font-semibold">Upload Files</h2>
  30. <UploadForm onFileUploaded={handleFileUploaded} />
  31. </div>
  32. <div className="w-full max-w-6xl">
  33. <h2 className="text-2xl font-semibold mb-4">Files in Database</h2>
  34. <FilesTable onFileAdded={handleFileUploaded} />
  35. </div>
  36. </main>
  37. </div>
  38. );
  39. }