Skip to content

Commit 2454945

Browse files
refactor: clean up unused code and improve component structure
1 parent 142d176 commit 2454945

File tree

6 files changed

+83
-91
lines changed

6 files changed

+83
-91
lines changed

app/collections/page.tsx

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const CollectionsPage = () => {
3333
"recent"
3434
);
3535

36-
const limit = 2;
36+
const limit = 12;
3737

3838
useEffect(() => {
3939
fetchWorks(currentPage);
@@ -147,19 +147,19 @@ const CollectionsPage = () => {
147147
<div className="absolute top-1/3 -left-6 w-24 h-24 border border-emerald-300 dark:border-violet-400/40 rounded-full opacity-30" />
148148
<div className="absolute bottom-1/4 -right-8 w-20 h-20 border border-emerald-300 dark:border-violet-400/40 rotate-12 opacity-30" />
149149

150-
<div className="max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-12 relative">
150+
<div className="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8 relative">
151151
{/* Header */}
152152
<motion.div
153153
initial={{ opacity: 0, y: -20 }}
154154
animate={{ opacity: 1, y: 0 }}
155-
className="text-center mb-12"
155+
className="text-center mb-8"
156156
>
157157
{/* Heading */}
158158
<motion.h1
159159
initial={{ opacity: 0, y: 20 }}
160160
animate={{ opacity: 1, y: 0 }}
161161
transition={{ delay: 0.2 }}
162-
className="text-3xl sm:text-4xl font-bold mb-4 text-slate-900 dark:text-neutral-100"
162+
className="text-2xl sm:text-3xl font-bold mb-3 text-slate-900 dark:text-neutral-100"
163163
>
164164
My Collections
165165
</motion.h1>
@@ -169,7 +169,7 @@ const CollectionsPage = () => {
169169
initial={{ opacity: 0, y: 20 }}
170170
animate={{ opacity: 1, y: 0 }}
171171
transition={{ delay: 0.3 }}
172-
className="text-slate-600 dark:text-neutral-400 mb-8"
172+
className="text-slate-600 dark:text-neutral-400 mb-6 text-sm sm:text-base"
173173
>
174174
{totalCount > 0
175175
? `${totalCount} work${
@@ -183,10 +183,10 @@ const CollectionsPage = () => {
183183
initial={{ opacity: 0, y: 20 }}
184184
animate={{ opacity: 1, y: 0 }}
185185
transition={{ delay: 0.4 }}
186-
className="mb-8"
186+
className="mb-4"
187187
>
188188
<Link href="/generate">
189-
<Button className="gap-2 bg-emerald-600 text-white hover:bg-emerald-700 dark:bg-violet-600 dark:hover:bg-violet-700">
189+
<Button className="gap-2 bg-emerald-600 text-white hover:bg-emerald-700 dark:bg-violet-600 dark:hover:bg-violet-700 py-2 px-4 rounded-lg">
190190
<Plus className="h-4 w-4" />
191191
Create New Work
192192
</Button>
@@ -200,15 +200,15 @@ const CollectionsPage = () => {
200200
initial={{ opacity: 0, y: 20 }}
201201
animate={{ opacity: 1, y: 0 }}
202202
transition={{ delay: 0.5 }}
203-
className="flex flex-col sm:flex-row gap-4 items-start sm:items-center mb-8"
203+
className="flex flex-col sm:flex-row gap-3 items-start sm:items-center mb-6"
204204
>
205205
<div className="relative flex-1 max-w-md">
206206
<Search className="absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" />
207207
<Input
208208
placeholder="Search your works..."
209209
value={searchTerm}
210210
onChange={(e) => setSearchTerm(e.target.value)}
211-
className="pl-10"
211+
className="pl-10 py-2"
212212
/>
213213
</div>
214214

@@ -271,7 +271,7 @@ const CollectionsPage = () => {
271271
initial={{ opacity: 0 }}
272272
animate={{ opacity: 1 }}
273273
transition={{ delay: 0.6 }}
274-
className="grid gap-6 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 mb-12"
274+
className="grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 mb-8"
275275
>
276276
{filteredWorks.map((work, index) => (
277277
<motion.div
@@ -323,14 +323,6 @@ const CollectionsPage = () => {
323323
</div>
324324
</div>
325325
)}
326-
327-
{/* Work Viewer Modal */}
328-
<WorkViewer
329-
work={selectedWork}
330-
isOpen={isViewerOpen}
331-
onClose={handleCloseViewer}
332-
onDownload={handleDownload}
333-
/>
334326
</div>
335327
</section>
336328
);

components/Collections/LoadingSkeleton.tsx

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,39 +5,39 @@ import { motion } from "framer-motion";
55
export function WorkCardSkeleton() {
66
return (
77
<motion.div
8-
initial={{ opacity: 0, scale: 0.9 }}
8+
initial={{ opacity: 0, scale: 0.95 }}
99
animate={{ opacity: 1, scale: 1 }}
10-
transition={{ duration: 0.4 }}
11-
className="bg-white/80 dark:bg-neutral-800/80 backdrop-blur-sm border border-emerald-200/50 dark:border-violet-500/30 rounded-2xl overflow-hidden shadow-xl"
10+
transition={{ duration: 0.36 }}
11+
className="bg-white/80 dark:bg-neutral-800/80 backdrop-blur-sm border border-emerald-200/40 dark:border-violet-500/25 rounded-xl overflow-hidden shadow-md"
1212
>
1313
{/* Image skeleton */}
14-
<div className="aspect-square bg-gradient-to-br from-slate-100 to-slate-200 dark:from-neutral-700 dark:to-neutral-800 animate-pulse relative">
14+
<div className="aspect-[4/3] bg-gradient-to-br from-slate-100 to-slate-200 dark:from-neutral-700 dark:to-neutral-800 animate-pulse relative">
1515
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/20 dark:via-neutral-600/20 to-transparent animate-shimmer" />
1616
</div>
1717

1818
{/* Content skeleton */}
19-
<div className="p-6 space-y-4">
19+
<div className="p-4 space-y-3">
2020
{/* Title skeleton */}
21-
<div className="h-6 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-xl animate-pulse relative overflow-hidden">
21+
<div className="h-5 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-lg animate-pulse relative overflow-hidden">
2222
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
2323
</div>
2424

2525
{/* Description skeleton */}
26-
<div className="space-y-3">
27-
<div className="h-4 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-lg animate-pulse relative overflow-hidden">
26+
<div className="space-y-2">
27+
<div className="h-3.5 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-md animate-pulse relative overflow-hidden">
2828
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
2929
</div>
30-
<div className="h-4 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-lg animate-pulse w-3/4 relative overflow-hidden">
30+
<div className="h-3.5 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-md animate-pulse w-2/3 relative overflow-hidden">
3131
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
3232
</div>
3333
</div>
3434

3535
{/* Footer skeleton */}
36-
<div className="flex justify-between items-center pt-2">
37-
<div className="h-5 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-full animate-pulse w-24 relative overflow-hidden">
36+
<div className="flex justify-between items-center pt-1">
37+
<div className="h-4 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-full animate-pulse w-20 relative overflow-hidden">
3838
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
3939
</div>
40-
<div className="h-6 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-full animate-pulse w-20 relative overflow-hidden">
40+
<div className="h-5 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-full animate-pulse w-16 relative overflow-hidden">
4141
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-violet-400/30 to-transparent animate-shimmer" />
4242
</div>
4343
</div>
@@ -57,42 +57,42 @@ export function CollectionsPageSkeleton() {
5757
<div className="absolute top-1/3 -left-6 w-24 h-24 border border-emerald-300 dark:border-violet-400/40 rounded-full opacity-30" />
5858
<div className="absolute bottom-1/4 -right-8 w-20 h-20 border border-emerald-300 dark:border-violet-400/40 rotate-12 opacity-30" />
5959

60-
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-20 md:py-32 relative">
60+
<div className="max-w-5xl mx-auto px-4 sm:px-6 lg:px-8 py-8 relative">
6161
{/* Header skeleton */}
62-
<div className="text-center mb-16 space-y-6">
62+
<div className="text-center mb-8 space-y-4">
6363
{/* Badge skeleton */}
64-
<div className="h-8 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-full animate-pulse w-48 mx-auto relative overflow-hidden">
64+
<div className="h-7 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-full animate-pulse w-40 mx-auto relative overflow-hidden">
6565
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-violet-400/30 to-transparent animate-shimmer" />
6666
</div>
6767

6868
{/* Title skeleton */}
69-
<div className="h-16 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-2xl animate-pulse w-96 mx-auto relative overflow-hidden">
69+
<div className="h-12 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-2xl animate-pulse w-72 mx-auto relative overflow-hidden">
7070
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
7171
</div>
7272

7373
{/* Subtitle skeleton */}
74-
<div className="h-6 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-xl animate-pulse w-80 mx-auto relative overflow-hidden">
74+
<div className="h-5 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-xl animate-pulse w-64 mx-auto relative overflow-hidden">
7575
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
7676
</div>
7777

7878
{/* Button skeleton */}
79-
<div className="h-12 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-xl animate-pulse w-48 mx-auto relative overflow-hidden">
79+
<div className="h-10 bg-gradient-to-r from-emerald-200 to-emerald-300 dark:from-violet-700 dark:to-violet-600 rounded-lg animate-pulse w-40 mx-auto relative overflow-hidden">
8080
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-violet-400/30 to-transparent animate-shimmer" />
8181
</div>
8282
</div>
8383

8484
{/* Search and controls skeleton */}
85-
<div className="flex flex-col sm:flex-row gap-6 items-center justify-center mb-12 max-w-4xl mx-auto">
86-
<div className="flex-1 max-w-lg h-12 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-xl animate-pulse relative overflow-hidden">
85+
<div className="flex flex-col sm:flex-row gap-3 items-center justify-center mb-8 max-w-3xl mx-auto">
86+
<div className="flex-1 max-w-md h-10 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-lg animate-pulse relative overflow-hidden">
8787
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
8888
</div>
89-
<div className="h-12 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-xl animate-pulse w-40 relative overflow-hidden">
89+
<div className="h-10 bg-gradient-to-r from-slate-200 to-slate-300 dark:from-neutral-700 dark:to-neutral-600 rounded-lg animate-pulse w-36 relative overflow-hidden">
9090
<div className="absolute inset-0 bg-gradient-to-r from-transparent via-white/30 dark:via-neutral-500/30 to-transparent animate-shimmer" />
9191
</div>
9292
</div>
9393

9494
{/* Grid skeleton */}
95-
<div className="grid gap-8 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 max-w-7xl mx-auto">
95+
<div className="grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 max-w-7xl mx-auto">
9696
{Array.from({ length: 8 }).map((_, i) => (
9797
<motion.div
9898
key={i}

components/Collections/Pagination.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,15 @@ export function Pagination({
5252
if (totalPages <= 1) return null;
5353

5454
return (
55-
<div className="flex items-center justify-center space-x-3 bg-white/80 dark:bg-neutral-800/80 backdrop-blur-sm border border-emerald-200/50 dark:border-violet-500/30 rounded-2xl p-4 shadow-xl">
55+
<div className="flex items-center justify-center space-x-2 bg-white/80 dark:bg-neutral-800/80 backdrop-blur-sm border border-emerald-200/50 dark:border-violet-500/30 rounded-2xl p-4 shadow-xl">
5656
<Button
5757
variant="outline"
58-
size="lg"
58+
size="default"
5959
onClick={() => onPageChange(currentPage - 1)}
6060
disabled={currentPage <= 1}
61-
className="border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 disabled:opacity-50 rounded-xl font-semibold px-6"
61+
className="border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 disabled:opacity-50 rounded-xl font-semibold px-4"
6262
>
63-
<ChevronLeft className="h-5 w-5 mr-2" />
63+
<ChevronLeft className="size-4 mr-1" />
6464
Previous
6565
</Button>
6666

@@ -74,12 +74,12 @@ export function Pagination({
7474
) : (
7575
<Button
7676
variant={currentPage === page ? "default" : "outline"}
77-
size="lg"
77+
size="default"
7878
onClick={() => onPageChange(page as number)}
7979
className={
8080
currentPage === page
81-
? "bg-emerald-600 hover:bg-emerald-700 dark:bg-violet-600 dark:hover:bg-violet-700 text-white rounded-xl font-bold min-w-12 shadow-lg"
82-
: "border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 rounded-xl font-semibold min-w-12"
81+
? "bg-emerald-600 hover:bg-emerald-700 dark:bg-violet-600 dark:hover:bg-violet-700 text-white rounded-xl font-bold min-w-10 shadow-lg"
82+
: "border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 rounded-xl font-semibold min-w-10"
8383
}
8484
>
8585
{page}
@@ -91,13 +91,13 @@ export function Pagination({
9191

9292
<Button
9393
variant="outline"
94-
size="lg"
94+
size="default"
9595
onClick={() => onPageChange(currentPage + 1)}
9696
disabled={currentPage >= totalPages}
97-
className="border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 disabled:opacity-50 rounded-xl font-semibold px-6"
97+
className="border-emerald-200 dark:border-violet-400/40 hover:bg-emerald-50 dark:hover:bg-violet-500/10 text-slate-700 dark:text-neutral-300 disabled:opacity-50 rounded-xl font-semibold px-4"
9898
>
9999
Next
100-
<ChevronRight className="h-5 w-5 ml-2" />
100+
<ChevronRight className="size-4 ml-1" />
101101
</Button>
102102
</div>
103103
);

0 commit comments

Comments
 (0)