Files
kit-ui/lib/tools.tsx
Sebastian Krüger 63b4823315 feat: add Random Generator tool
Cryptographically secure generator for 5 types:
- Password: configurable charset + entropy strength meter
- UUID: crypto.randomUUID()
- API Key: hex/base62/base64url with optional prefix
- Hash: SHA-1/256/512 of custom input or random data
- Token: variable byte-length in hex or base64url

All using Web Crypto API — nothing leaves the browser.
Registered in lib/tools.tsx with RandomIcon (dice).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 12:08:48 +01:00

128 lines
4.7 KiB
TypeScript

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 cryptographically 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 interactive 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);
}