import { useState, useEffect } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Textarea } from '@/components/ui/textarea'; import { useAppStore } from '@/stores/app-store'; import { toast } from '@/lib/toast'; import { figletText, FIGLET_FONTS, type FigletFont } from '@/lib/figlet'; export function AsciiGeneratorDialog() { const closeModal = useAppStore((s) => s.closeModal); const [text, setText] = useState('Hello'); const [font, setFont] = useState('Standard'); const [output, setOutput] = useState(''); useEffect(() => { let cancelled = false; figletText(text || ' ', font) .then((result) => { if (!cancelled) setOutput(result); }) .catch(() => { if (!cancelled) setOutput('(render error)'); }); return () => { cancelled = true; }; }, [text, font]); const handleCopy = async () => { try { await navigator.clipboard.writeText(output); toast.success('Copied to clipboard'); } catch { toast.error('Failed to copy'); } }; return ( !o && closeModal()}> ASCII generator Type text, pick a font, see ASCII art