'use client'; import React, { useState, useEffect } from 'react'; import { QRCodeSVG } from 'qrcode.react'; import { Button } from '@/components/ui/Button'; import { Input } from '@/components/ui/Input'; import { Download, RefreshCw, Smartphone, Image as ImageIcon, ScanLine } from 'lucide-react'; import Link from 'next/link'; import { cn } from '@/lib/utils'; export function MiniGenerator() { const [url, setUrl] = useState(''); const [color, setColor] = useState('#000000'); const [withLogo, setWithLogo] = useState(false); const [frame, setFrame] = useState<'none' | 'scan_me' | 'phone'>('none'); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); }, []); // Prevent hydration mismatch if (!mounted) { return (
); } const renderQR = () => ( ); return (

Live Preview

{/* Frame Rendering */}
{frame === 'scan_me' && (
SCAN ME
)} {/* White background for QR inside frames */}
{renderQR()}
setUrl(e.target.value)} className="text-center" />
{/* Controls */}
{/* Color Picker */}
setColor(e.target.value)} className="absolute inset-0 w-[150%] h-[150%] -top-1/4 -left-1/4 cursor-pointer p-0 border-0" />
{/* Logo Toggle */} {/* Frame Toggle */}

Unlock gradients, custom shapes & analytics →{' '} Try Pro Free

); }