1- "use client"
1+ "use client" ;
22
3- import { useState } from "react"
4- import { File , mockFiles } from "../lib/mock-data"
5- import { Folder , FileIcon , Upload , ChevronRight } from "lucide-react"
6- import Link from "next/link"
7- import { Button } from "~/components/ui/button"
3+ import { ChevronRight , FileIcon , Folder , Upload } from "lucide-react" ;
4+ import Link from "next/link" ;
5+ import { useState } from "react" ;
6+
7+ import { Button } from "~/components/ui/button" ;
8+ import { mockFiles } from "~/lib/mock-data" ;
89
910export default function GoogleDriveClone ( ) {
10- const [ currentFolder , setCurrentFolder ] = useState < string | null > ( null )
11+ const [ currentFolder , setCurrentFolder ] = useState < string | null > ( null ) ;
1112
1213 const getCurrentFiles = ( ) => {
13- return mockFiles . filter ( ( file ) => file . parent === currentFolder )
14- }
14+ return mockFiles . filter ( ( file ) => file . parent === currentFolder ) ;
15+ } ;
1516
1617 const handleFolderClick = ( folderId : string ) => {
17- setCurrentFolder ( folderId )
18- }
18+ setCurrentFolder ( folderId ) ;
19+ } ;
1920
2021 const getBreadcrumbs = ( ) => {
21- const breadcrumbs = [ ]
22- let currentId = currentFolder
22+ const breadcrumbs = [ ] ;
23+ let currentId = currentFolder ;
2324
2425 while ( currentId !== null ) {
25- const folder = mockFiles . find ( ( file ) => file . id === currentId )
26+ const folder = mockFiles . find ( ( file ) => file . id === currentId ) ;
2627 if ( folder ) {
27- breadcrumbs . unshift ( folder )
28- currentId = folder . parent
28+ breadcrumbs . unshift ( folder ) ;
29+ currentId = folder . parent ;
2930 } else {
30- break
31+ break ;
3132 }
3233 }
3334
34- return breadcrumbs
35- }
35+ return breadcrumbs ;
36+ } ;
3637
3738 const handleUpload = ( ) => {
38- alert ( "Upload functionality would be implemented here" )
39- }
39+ alert ( "Upload functionality would be implemented here" ) ;
40+ } ;
4041
4142 return (
42- < div className = "min-h-screen bg-gray-900 text-gray-100 p-8 " >
43- < div className = "max-w-6xl mx-auto " >
44- < div className = "flex justify-between items-center mb-6 " >
43+ < div className = "min-h-screen bg-gray-900 p-8 text-gray-100" >
44+ < div className = "mx-auto max-w-6xl" >
45+ < div className = "mb-6 flex items-center justify-between " >
4546 < div className = "flex items-center" >
4647 < Button
4748 onClick = { ( ) => setCurrentFolder ( null ) }
4849 variant = "ghost"
49- className = "text-gray-300 hover:text-white mr-2 "
50+ className = "mr-2 text-gray-300 hover:text-white"
5051 >
5152 My Drive
5253 </ Button >
53- { getBreadcrumbs ( ) . map ( ( folder , index ) => (
54+ { getBreadcrumbs ( ) . map ( ( folder ) => (
5455 < div key = { folder . id } className = "flex items-center" >
5556 < ChevronRight className = "mx-2 text-gray-500" size = { 16 } />
5657 < Button
@@ -63,13 +64,16 @@ export default function GoogleDriveClone() {
6364 </ div >
6465 ) ) }
6566 </ div >
66- < Button onClick = { handleUpload } className = "bg-blue-600 text-white hover:bg-blue-700" >
67+ < Button
68+ onClick = { handleUpload }
69+ className = "bg-blue-600 text-white hover:bg-blue-700"
70+ >
6771 < Upload className = "mr-2" size = { 20 } />
6872 Upload
6973 </ Button >
7074 </ div >
71- < div className = "bg-gray-800 rounded-lg shadow-xl" >
72- < div className = "px-6 py-4 border-b border-gray-700" >
75+ < div className = "rounded-lg bg-gray-800 shadow-xl" >
76+ < div className = "border-b border-gray-700 px-6 py-4 " >
7377 < div className = "grid grid-cols-12 gap-4 text-sm font-medium text-gray-400" >
7478 < div className = "col-span-6" > Name</ div >
7579 < div className = "col-span-3" > Type</ div >
@@ -78,8 +82,11 @@ export default function GoogleDriveClone() {
7882 </ div >
7983 < ul >
8084 { getCurrentFiles ( ) . map ( ( file ) => (
81- < li key = { file . id } className = "px-6 py-4 border-b border-gray-700 hover:bg-gray-750" >
82- < div className = "grid grid-cols-12 gap-4 items-center" >
85+ < li
86+ key = { file . id }
87+ className = "hover:bg-gray-750 border-b border-gray-700 px-6 py-4"
88+ >
89+ < div className = "grid grid-cols-12 items-center gap-4" >
8390 < div className = "col-span-6 flex items-center" >
8491 { file . type === "folder" ? (
8592 < button
@@ -90,21 +97,27 @@ export default function GoogleDriveClone() {
9097 { file . name }
9198 </ button >
9299 ) : (
93- < Link href = { file . url || "#" } className = "flex items-center text-gray-100 hover:text-blue-400" >
100+ < Link
101+ href = { file . url ?? "#" }
102+ className = "flex items-center text-gray-100 hover:text-blue-400"
103+ >
94104 < FileIcon className = "mr-3" size = { 20 } />
95105 { file . name }
96106 </ Link >
97107 ) }
98108 </ div >
99- < div className = "col-span-3 text-gray-400" > { file . type === "folder" ? "Folder" : "File" } </ div >
100- < div className = "col-span-3 text-gray-400" > { file . type === "folder" ? "--" : "2 MB" } </ div >
109+ < div className = "col-span-3 text-gray-400" >
110+ { file . type === "folder" ? "Folder" : "File" }
111+ </ div >
112+ < div className = "col-span-3 text-gray-400" >
113+ { file . type === "folder" ? "--" : "2 MB" }
114+ </ div >
101115 </ div >
102116 </ li >
103117 ) ) }
104118 </ ul >
105119 </ div >
106120 </ div >
107121 </ div >
108- )
122+ ) ;
109123}
110-
0 commit comments