2025-11-07 11:26:19 +01:00
'use client' ;
import { motion } from 'framer-motion' ;
import ToolCard from './ToolCard' ;
const tools = [
{
2025-11-17 11:18:52 +01:00
title : 'Convert' ,
description : 'Modern browser-based file converter powered by WebAssembly. Convert videos, images, and audio locally without server uploads. Privacy-first with no file size limits.' ,
url : 'https://convert.kit.pivoine.art' ,
polish: Priority 1 improvements - gradients, stats, metadata, footer
✨ Visual Enhancements:
- Unique gradients per tool (green-teal for Vert, orange-pink for Paint, indigo-purple for Pastel)
- Added new gradient utilities for better color differentiation
📊 Stats Section:
- New animated stats component showing "3 Tools, 100% Open Source, ∞ Privacy First"
- Glassmorphism cards with hover effects
- Icon badges for each stat
🔍 Enhanced Metadata:
- Comprehensive Open Graph tags for social sharing
- Twitter Card support
- Enhanced SEO with detailed keywords (vert, paint, pastel)
- Added SVG favicon with gradient toolbox icon
- Viewport meta tag and preconnect optimization
🔗 Improved Footer:
- 3-column responsive layout
- GitHub repository link with icon
- Quick links to all tools (Vert, Paint, Pastel)
- Tool count badge
- Updated tech stack mention (Next.js 16 & Tailwind CSS 4)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 12:30:08 +01:00
gradient : 'gradient-green-teal' ,
2025-11-08 18:40:25 +01:00
accentColor : '#10b981' ,
2025-11-09 16:53:03 +01:00
badges : [ 'Open Source' , 'Converter' , 'Free' ] ,
2025-11-07 11:26:19 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z" / >
< / svg >
) ,
} ,
2025-11-07 12:16:46 +01:00
{
title : 'Pastel' ,
description : 'Modern color manipulation toolkit with palette generation, accessibility testing, and format conversion. Supports hex, RGB, HSL, Lab, and more.' ,
url : 'https://pastel.kit.pivoine.art' ,
polish: Priority 1 improvements - gradients, stats, metadata, footer
✨ Visual Enhancements:
- Unique gradients per tool (green-teal for Vert, orange-pink for Paint, indigo-purple for Pastel)
- Added new gradient utilities for better color differentiation
📊 Stats Section:
- New animated stats component showing "3 Tools, 100% Open Source, ∞ Privacy First"
- Glassmorphism cards with hover effects
- Icon badges for each stat
🔍 Enhanced Metadata:
- Comprehensive Open Graph tags for social sharing
- Twitter Card support
- Enhanced SEO with detailed keywords (vert, paint, pastel)
- Added SVG favicon with gradient toolbox icon
- Viewport meta tag and preconnect optimization
🔗 Improved Footer:
- 3-column responsive layout
- GitHub repository link with icon
- Quick links to all tools (Vert, Paint, Pastel)
- Tool count badge
- Updated tech stack mention (Next.js 16 & Tailwind CSS 4)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-07 12:30:08 +01:00
gradient : 'gradient-indigo-purple' ,
2025-11-08 18:40:25 +01:00
accentColor : '#a855f7' ,
2025-11-07 12:39:14 +01:00
badges : [ 'Open Source' , 'WCAG' , 'Free' ] ,
2025-11-07 12:16:46 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
2025-11-09 16:08:28 +01:00
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z" / >
< circle cx = "6.5" cy = "11.5" r = "1" fill = "currentColor" / >
< circle cx = "9.5" cy = "7.5" r = "1" fill = "currentColor" / >
< circle cx = "14.5" cy = "7.5" r = "1" fill = "currentColor" / >
< circle cx = "17.5" cy = "11.5" r = "1" fill = "currentColor" / >
2025-11-07 12:16:46 +01:00
< / svg >
) ,
} ,
2025-11-07 19:13:19 +01:00
{
2025-11-17 15:30:41 +01:00
title : 'Audio' ,
description : 'Professional browser-based audio editor with multi-track editing, advanced effects, and real-time analysis. Record, edit, and export to WAV, MP3, OGG, or FLAC entirely in your browser.' ,
url : 'https://audio.kit.pivoine.art' ,
2025-11-17 18:13:00 +01:00
gradient : 'gradient-orange-pink' ,
2025-11-17 18:10:57 +01:00
accentColor : '#f97316' ,
2025-11-17 15:30:41 +01:00
badges : [ 'Open Source' , 'Audio Editor' , 'Free' ] ,
2025-11-07 19:13:19 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
2025-11-17 15:30:41 +01:00
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3" / >
2025-11-07 19:13:19 +01:00
< / svg >
) ,
} ,
2025-11-08 10:20:29 +01:00
{
title : 'Units' ,
description : 'Smart unit converter with 187 units across 23 categories. Real-time bidirectional conversion with fuzzy search and conversion history.' ,
url : 'https://units.kit.pivoine.art' ,
gradient : 'gradient-cyan-purple' ,
2025-11-08 18:40:25 +01:00
accentColor : '#2dd4bf' ,
2025-11-09 16:53:03 +01:00
badges : [ 'Open Source' , 'Real-time' , 'Free' ] ,
2025-11-08 10:20:29 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M7 16V4m0 0L3 8m4-4l4 4m6 0v12m0 0l4-4m-4 4l-4-4" / >
< / svg >
) ,
} ,
2025-11-08 17:35:56 +01:00
{
2025-11-20 21:19:28 +01:00
title : 'Paint' ,
description : 'Modern browser-based image editor with multi-layer canvas, drawing tools, and 50+ filters. Inspired by miniPaint, built for the modern web with full editing capabilities.' ,
url : 'https://paint.kit.pivoine.art' ,
2025-11-08 19:00:59 +01:00
gradient : 'gradient-pink-rose' ,
2025-11-08 18:40:25 +01:00
accentColor : '#ec4899' ,
2025-11-20 21:19:28 +01:00
badges : [ 'Open Source' , 'Image Editor' , 'Free' ] ,
2025-11-08 17:35:56 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
2025-11-20 21:19:28 +01:00
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "m11 10l3 3m-7.5 8A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z" / >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M9.969 17.031L21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031" / >
2025-11-08 17:35:56 +01:00
< / svg >
) ,
} ,
2025-11-09 13:15:12 +01:00
{
title : 'Figlet' ,
description : 'ASCII art text generator with 373 fonts. Create stunning text banners, terminal art, and retro designs with live preview and multiple export formats.' ,
url : 'https://figlet.kit.pivoine.art' ,
gradient : 'gradient-yellow-amber' ,
accentColor : '#eab308' ,
2025-11-09 16:53:03 +01:00
badges : [ 'Open Source' , 'ASCII Art' , 'Free' ] ,
2025-11-09 13:15:12 +01:00
icon : (
< svg className = "w-12 h-12 text-white" fill = "none" stroke = "currentColor" viewBox = "0 0 24 24" >
2025-11-09 16:12:05 +01:00
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M3.5 13h6" / >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "m2 16 4.5-9 4.5 9" / >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "M18 16V7" / >
< path strokeLinecap = "round" strokeLinejoin = "round" strokeWidth = { 2 } d = "m14 11 4-4 4 4" / >
2025-11-09 13:15:12 +01:00
< / svg >
) ,
} ,
2025-11-07 11:26:19 +01:00
] ;
export default function ToolsGrid() {
return (
2025-11-07 12:39:14 +01:00
< section id = "tools" className = "relative py-20 px-4" >
2025-11-07 11:26:19 +01:00
< div className = "max-w-6xl mx-auto" >
{ /* Section heading */ }
< motion.div
className = "text-center mb-16"
initial = { { opacity : 0 , y : 20 } }
whileInView = { { opacity : 1 , y : 0 } }
viewport = { { once : true } }
transition = { { duration : 0.6 } }
>
< h2 className = "text-4xl md:text-5xl font-bold mb-4 bg-clip-text text-transparent bg-gradient-to-r from-purple-400 to-cyan-400" >
Available Tools
< / h2 >
< p className = "text-gray-400 text-lg max-w-2xl mx-auto" >
Explore our collection of carefully crafted tools designed to boost your productivity and creativity .
< / p >
< / motion.div >
{ /* Tools grid */ }
2025-11-07 12:16:46 +01:00
< div className = "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8" >
2025-11-07 11:26:19 +01:00
{ tools . map ( ( tool , index ) = > (
< ToolCard
key = { tool . title }
title = { tool . title }
description = { tool . description }
icon = { tool . icon }
url = { tool . url }
gradient = { tool . gradient }
2025-11-08 18:40:25 +01:00
accentColor = { tool . accentColor }
2025-11-07 12:39:14 +01:00
badges = { tool . badges }
2025-11-07 11:26:19 +01:00
index = { index }
/ >
) ) }
< / div >
< / div >
< / section >
) ;
}