feat: add toast notifications, random font, and font info display
Major UX enhancements for better user feedback and discovery: **Toast Notification System** - Beautiful toast notifications with 3 types (success/error/info) - Auto-dismiss after 3 seconds - Slide-in animation from right - Color-coded by type (green/red/blue) - Dark mode support - Close button for manual dismiss - ToastProvider context for global access - Non-blocking UI overlay **Random Font Discovery** - Shuffle button in font selector - One-click random font selection - Toast notification shows selected font - Perfect for discovering new fonts - Located next to "Select Font" header **Enhanced Font Preview** - Font name badge display - Character count statistics - Line count statistics - Better visual hierarchy - Responsive stat display **Improved Feedback** - Toast on copy: "Copied to clipboard!" - Toast on share: "Shareable URL copied!" - Toast on random: "Random font: FontName" - Error toasts for failed operations - Removed temporary text replacement **Smooth Animations** - Slide-in animation for toasts - Fade-in animation class - Custom keyframe animations - CSS utility classes - Smooth transitions throughout **Technical Improvements** - useToast custom hook - Context-based state management - Auto-cleanup with setTimeout - Unique toast IDs - TypeScript types for toast system - Proper event propagation **Better UX** - No more jarring text replacements - Non-intrusive notifications - Professional feedback system - Discoverable random feature - Informative preview stats The app now feels polished and professional with proper user feedback! 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -107,3 +107,24 @@
|
||||
@apply bg-muted-foreground/20 rounded-lg hover:bg-muted-foreground/30;
|
||||
}
|
||||
}
|
||||
|
||||
@layer utilities {
|
||||
.animate-in {
|
||||
animation: fadeIn 0.2s ease-in;
|
||||
}
|
||||
|
||||
.slide-in-from-right-full {
|
||||
animation: slideInFromRight 0.3s ease-out;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes slideInFromRight {
|
||||
from {
|
||||
transform: translateX(100%);
|
||||
opacity: 0;
|
||||
}
|
||||
to {
|
||||
transform: translateX(0);
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
import type { Metadata } from 'next';
|
||||
import './globals.css';
|
||||
import { ToastProvider } from '@/components/ui/Toast';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: 'Figlet UI - ASCII Art Text Generator',
|
||||
description: 'A modern web UI for generating ASCII art text with 700+ figlet fonts. Preview custom text in any figlet font, export to multiple formats, and share your creations.',
|
||||
description: 'A modern web UI for generating ASCII art text with 373 figlet fonts. Preview custom text in any figlet font, export to multiple formats, and share your creations.',
|
||||
keywords: ['figlet', 'ascii art', 'text generator', 'banner', 'ascii', 'text art'],
|
||||
authors: [{ name: 'Valknar' }],
|
||||
openGraph: {
|
||||
title: 'Figlet UI - ASCII Art Text Generator',
|
||||
description: 'Generate beautiful ASCII art text with 700+ fonts',
|
||||
description: 'Generate beautiful ASCII art text with 373 fonts',
|
||||
type: 'website',
|
||||
},
|
||||
};
|
||||
@@ -21,7 +22,9 @@ export default function RootLayout({
|
||||
return (
|
||||
<html lang="en">
|
||||
<body className="antialiased">
|
||||
{children}
|
||||
<ToastProvider>
|
||||
{children}
|
||||
</ToastProvider>
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user