import { ColorIcon, UnitsIcon, ASCIIIcon, MediaIcon, FaviconIcon, QRCodeIcon, AnimateIcon, CalculateIcon, RandomIcon } from '@/components/AppIcons'; export interface Tool { /** Short display name (e.g. "Color") */ shortTitle: string; /** Full display name (e.g. "Color Manipulation") */ title: string; /** Sidebar / nav label (may differ from title) */ navTitle: string; /** Route path, e.g. '/color' */ href: string; /** One-liner shown in page header */ description: string; /** Longer description for the landing-page card */ summary: string; /** Icon component */ icon: React.ElementType; /** Badge labels for the landing card */ badges: string[]; } export const tools: Tool[] = [ { shortTitle: 'Color', title: 'Color Manipulation', navTitle: 'Color Manipulation', href: '/color', description: 'Interactive color manipulation and analysis tool.', summary: 'Modern color manipulation toolkit with palette generation and format conversion. Supports hex, RGB, HSL, Lab, and more.', icon: ColorIcon, badges: ['Color', 'Palette', 'Format'], }, { shortTitle: 'Units', title: 'Units Converter', navTitle: 'Units Converter', href: '/units', description: 'Smart unit converter with 187 units across 23 categories.', summary: 'Smart unit converter with 187 units across 23 categories. Real-time bidirectional conversion with fuzzy search.', icon: UnitsIcon, badges: ['187 Units', '23 Categories', 'Real-time'], }, { shortTitle: 'ASCII', title: 'ASCII Art Generator', navTitle: 'ASCII Art', href: '/ascii', description: 'ASCII Art Text Generator with 373 Fonts.', summary: 'ASCII art text generator with 373 fonts. Create stunning text banners, terminal art, and retro designs with live preview and multiple export formats.', icon: ASCIIIcon, badges: ['373 Fonts', 'ASCII Art', 'Terminal'], }, { shortTitle: 'Media', title: 'Media Converter', navTitle: 'Media Converter', href: '/media', description: 'Browser-based media conversion for video, audio, and images.', summary: 'Modern browser-based file converter powered by WebAssembly. Convert videos, images, and audio locally without server uploads.', icon: MediaIcon, badges: ['WebAssembly', 'Privacy-first', 'Converter'], }, { shortTitle: 'Favicon', title: 'Favicon Generator', navTitle: 'Favicon Generator', href: '/favicon', description: 'Create a complete set of icons for your website.', summary: 'Generate a complete set of favicons for your website. Includes PWA manifest and HTML embed code.', icon: FaviconIcon, badges: ['PWA', 'Multi-size', 'Generator'], }, { shortTitle: 'QR Code', title: 'QR Code Generator', navTitle: 'QR Code Generator', href: '/qrcode', description: 'Generate QR codes with custom colors and error correction.', summary: 'Generate QR codes with live preview, customizable colors, error correction levels, and export as PNG or SVG. All processing happens locally in your browser.', icon: QRCodeIcon, badges: ['PNG & SVG', 'Customizable', 'Generator'], }, { shortTitle: 'Animate', title: 'CSS Animation Editor', navTitle: 'CSS Animations', href: '/animate', description: 'Visual editor for CSS keyframe animations with live preview.', summary: 'Build and export CSS @keyframe animations visually. Configure timing, easing, transforms, and more — with a live preview and 20+ built-in presets.', icon: AnimateIcon, badges: ['CSS', 'Tailwind v4', '20+ Presets'], }, { shortTitle: 'Random', title: 'Random Generator', navTitle: 'Random Generator', href: '/random', description: 'Generate secure passwords, UUIDs, API keys, hashes and tokens.', summary: 'Cryptographically secure random generator. Create passwords, UUIDs, API keys, SHA hashes, and secure tokens — all using the browser Web Crypto API, nothing leaves your machine.', icon: RandomIcon, badges: ['Web Crypto', 'Passwords', 'UUID', 'Hashes'], }, { shortTitle: 'Calculate', title: 'Calculator', navTitle: 'Calculator', href: '/calculate', description: 'Advanced expression evaluator with function graphing.', summary: 'Powerful mathematical calculator powered by Math.js. Evaluate complex expressions, define variables, and plot functions on an interactive graph.', icon: CalculateIcon, badges: ['Math.js', 'Graphing', 'Interactive'], }, ]; /** Look up a tool by its href path */ export function getToolByHref(href: string): Tool | undefined { return tools.find((t) => t.href === href); }