2026-03-04 11:30:30 +01:00
import { ColorIcon , UnitsIcon , ASCIIIcon , MediaIcon , FaviconIcon , QRCodeIcon , AnimateIcon , CalculateIcon , RandomIcon , CronIcon } from '@/components/AppIcons' ;
2026-02-27 17:46:54 +01:00
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' ,
2026-02-28 09:57:06 +01:00
description : 'Interactive color manipulation and analysis tool.' ,
2026-02-27 17:46:54 +01:00
summary :
2026-02-28 17:58:05 +01:00
'Modern color manipulation toolkit with palette generation and format conversion. Supports hex, RGB, HSL, Lab, and more.' ,
2026-02-27 17:46:54 +01:00
icon : ColorIcon ,
2026-02-28 17:58:05 +01:00
badges : [ 'Color' , 'Palette' , 'Format' ] ,
2026-02-27 17:46:54 +01:00
} ,
{
shortTitle : 'Units' ,
title : 'Units Converter' ,
navTitle : 'Units Converter' ,
href : '/units' ,
2026-02-28 09:57:06 +01:00
description : 'Smart unit converter with 187 units across 23 categories.' ,
2026-02-27 17:46:54 +01:00
summary :
'Smart unit converter with 187 units across 23 categories. Real-time bidirectional conversion with fuzzy search.' ,
icon : UnitsIcon ,
2026-02-28 17:58:05 +01:00
badges : [ '187 Units' , '23 Categories' , 'Real-time' ] ,
2026-02-27 17:46:54 +01:00
} ,
{
shortTitle : 'ASCII' ,
title : 'ASCII Art Generator' ,
navTitle : 'ASCII Art' ,
href : '/ascii' ,
2026-02-28 09:57:06 +01:00
description : 'ASCII Art Text Generator with 373 Fonts.' ,
2026-02-27 17:46:54 +01:00
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 ,
2026-02-28 17:58:05 +01:00
badges : [ '373 Fonts' , 'ASCII Art' , 'Terminal' ] ,
2026-02-27 17:46:54 +01:00
} ,
{
shortTitle : 'Media' ,
title : 'Media Converter' ,
navTitle : 'Media Converter' ,
href : '/media' ,
2026-02-28 09:57:06 +01:00
description : 'Browser-based media conversion for video, audio, and images.' ,
2026-02-27 17:46:54 +01:00
summary :
2026-02-28 17:53:33 +01:00
'Modern browser-based file converter powered by WebAssembly. Convert videos, images, and audio locally without server uploads.' ,
2026-02-27 17:46:54 +01:00
icon : MediaIcon ,
2026-02-28 17:58:05 +01:00
badges : [ 'WebAssembly' , 'Privacy-first' , 'Converter' ] ,
2026-02-27 17:46:54 +01:00
} ,
{
shortTitle : 'Favicon' ,
title : 'Favicon Generator' ,
navTitle : 'Favicon Generator' ,
href : '/favicon' ,
2026-02-28 09:57:06 +01:00
description : 'Create a complete set of icons for your website.' ,
2026-02-27 17:46:54 +01:00
summary :
2026-02-28 17:53:33 +01:00
'Generate a complete set of favicons for your website. Includes PWA manifest and HTML embed code.' ,
2026-02-27 17:46:54 +01:00
icon : FaviconIcon ,
2026-02-28 17:58:05 +01:00
badges : [ 'PWA' , 'Multi-size' , 'Generator' ] ,
2026-02-28 00:58:57 +01:00
} ,
{
shortTitle : 'QR Code' ,
title : 'QR Code Generator' ,
navTitle : 'QR Code Generator' ,
href : '/qrcode' ,
2026-02-28 09:57:06 +01:00
description : 'Generate QR codes with custom colors and error correction.' ,
2026-02-28 00:58:57 +01:00
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 ,
2026-02-28 17:58:05 +01:00
badges : [ 'PNG & SVG' , 'Customizable' , 'Generator' ] ,
2026-02-27 17:46:54 +01:00
} ,
2026-02-28 14:17:04 +01:00
{
shortTitle : 'Animate' ,
title : 'CSS Animation Editor' ,
navTitle : 'CSS Animations' ,
href : '/animate' ,
description : 'Visual editor for CSS keyframe animations with live preview.' ,
summary :
2026-02-28 17:53:33 +01:00
'Build and export CSS @keyframe animations visually. Configure timing, easing, transforms, and more — with a live preview and 20+ built-in presets.' ,
2026-02-28 14:17:04 +01:00
icon : AnimateIcon ,
2026-02-28 17:58:05 +01:00
badges : [ 'CSS' , 'Tailwind v4' , '20+ Presets' ] ,
2026-02-28 14:17:04 +01:00
} ,
2026-03-02 12:08:48 +01:00
{
shortTitle : 'Random' ,
title : 'Random Generator' ,
navTitle : 'Random Generator' ,
href : '/random' ,
2026-03-02 17:18:01 +01:00
description : 'Generate secure passwords, UUIDs, API keys and tokens.' ,
2026-03-02 12:08:48 +01:00
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' ] ,
} ,
2026-03-04 11:30:30 +01:00
{
shortTitle : 'Cron' ,
title : 'Cron Editor' ,
navTitle : 'Cron Editor' ,
href : '/cron' ,
description : 'Visual editor for cron expressions with live preview.' ,
summary :
'Build and validate cron expressions with an intuitive visual field editor. Get a human-readable description and preview the next upcoming scheduled runs.' ,
icon : CronIcon ,
badges : [ 'Cron' , 'Scheduler' , 'Visual' ] ,
} ,
2026-02-28 20:44:53 +01:00
{
shortTitle : 'Calculate' ,
2026-03-02 12:08:48 +01:00
title : 'Calculator' ,
2026-02-28 20:44:53 +01:00
navTitle : 'Calculator' ,
href : '/calculate' ,
2026-03-02 17:15:31 +01:00
description : 'Advanced expression evaluator with function graphing.' ,
2026-02-28 20:44:53 +01:00
summary :
2026-03-01 17:27:11 +01:00
'Powerful mathematical calculator powered by Math.js. Evaluate complex expressions, define variables, and plot functions on an interactive graph.' ,
2026-02-28 20:44:53 +01:00
icon : CalculateIcon ,
badges : [ 'Math.js' , 'Graphing' , 'Interactive' ] ,
} ,
2026-02-27 17:46:54 +01:00
] ;
/** Look up a tool by its href path */
export function getToolByHref ( href : string ) : Tool | undefined {
return tools . find ( ( t ) = > t . href === href ) ;
}