Skip to content

Commit 333b110

Browse files
Implement 12 more converters and add tool categorization
New Converters: - JFIF → JPEG/PNG/PDF (JFIF is JPEG interchange format) - JPG → PDF (image to document conversion) - PNG → PNG (optimizer/compressor) - HEIF → JPG/PNG/PDF (similar to HEIC) - RAW formats → JPG (CR2, CR3, DNG, ARW) Tool Categorization: - Created config/tools.ts with comprehensive tool registry - Three categories: Convert, Compress, Combine - Each tool tagged with category, status, and metadata - 41 active converters, 12 placeholders for future Stats: - Total tools: 53 - Active converters: 41 - Convert tools: 48 - Compress tools: 2 - Combine tools: 1 - Other tools: 2 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 4a85c87 commit 333b110

File tree

17 files changed

+504
-14
lines changed

17 files changed

+504
-14
lines changed

app/globals.css

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,16 @@
113113
100% { transform: rotate(0deg) scale(1); }
114114
}
115115

116+
@keyframes rejected {
117+
0% { transform: translateX(0) translateY(0) rotate(0deg) scale(1); }
118+
20% { transform: translateX(-30px) translateY(-20px) rotate(-15deg) scale(0.9); opacity: 1; }
119+
40% { transform: translateX(-80px) translateY(30px) rotate(-45deg) scale(0.8); opacity: 0.8; }
120+
60% { transform: translateX(-150px) translateY(80px) rotate(-90deg) scale(0.7); opacity: 0.6; }
121+
80% { transform: translateX(-200px) translateY(150px) rotate(-135deg) scale(0.6); opacity: 0.4; }
122+
90% { transform: translateX(-220px) translateY(200px) rotate(-180deg) scale(0.5); opacity: 0.2; }
123+
100% { transform: translateX(0) translateY(0) rotate(0deg) scale(1); opacity: 1; }
124+
}
125+
116126
.animate-splash { animation: splash 0.6s ease-in-out; }
117127
.animate-bounce { animation: bounce 0.8s ease-in-out; }
118128
.animate-spin { animation: spin 0.6s ease-in-out; }
@@ -123,4 +133,5 @@
123133
.animate-confetti {
124134
animation: confetti 0.8s ease-in-out;
125135
background-size: 200% 200%;
126-
}
136+
}
137+
.animate-rejected { animation: rejected 0.8s ease-out; }

app/tools/arw-to-jpg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>arw-to-jpg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="ARW to JPG" subtitle="Convert Sony ARW RAW files to JPG." from="arw" to="jpg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/cr2-to-jpg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>cr2-to-jpg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="CR2 to JPG" subtitle="Convert Canon CR2 RAW files to JPG." from="cr2" to="jpg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/cr3-to-jpg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>cr3-to-jpg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="CR3 to JPG" subtitle="Convert Canon CR3 RAW files to JPG." from="cr3" to="jpg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/dng-to-jpg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>dng-to-jpg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="DNG to JPG" subtitle="Convert Adobe DNG RAW files to JPG." from="dng" to="jpg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/heif-to-jpg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>heif-to-jpg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="HEIF to JPG" subtitle="Convert HEIF images to JPG format." from="heif" to="jpg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/heif-to-pdf/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>heif-to-pdf</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="HEIF to PDF" subtitle="Convert HEIF images to PDF documents." from="heif" to="pdf" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/heif-to-png/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>heif-to-png</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="HEIF to PNG" subtitle="Convert HEIF images to PNG format." from="heif" to="png" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/jfif-to-jpeg/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>jfif-to-jpeg</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="JFIF to JPEG" subtitle="Convert JFIF images to standard JPEG format." from="jfif" to="jpeg" />
12+
</main>
13+
</>
14+
);
15+
}

app/tools/jfif-to-pdf/page.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
1-
export default function Page() { return <div>jfif-to-pdf</div>; }
1+
"use client";
2+
3+
import HeroConverter from "@/components/HeroConverter";
4+
import { Navbar } from "@/components/Navbar";
5+
6+
export default function Page() {
7+
return (
8+
<>
9+
<Navbar />
10+
<main className="min-h-screen bg-background">
11+
<HeroConverter title="JFIF to PDF" subtitle="Convert JFIF images to PDF documents." from="jfif" to="pdf" />
12+
</main>
13+
</>
14+
);
15+
}

0 commit comments

Comments
 (0)