// Studio Uariní — Generator app // Wires together: sidebar (template picker), form (per-template fields), // preview (live render at scale), download (html-to-image), and AI captions (window.claude). const { UARINI, SpiralPatch, Wordmark, LogoLockup } = window; const TEMPLATES = window.UARINI_TEMPLATES; // ─── Brand mark for sidebar ───────────────────────────────────────────────── function BrandHeader() { return (
Studio Uariní
Gerador · v1
); } // ─── Sidebar ──────────────────────────────────────────────────────────────── function Sidebar({ activeId, onPick }) { const groups = {}; TEMPLATES.forEach((t, i) => { (groups[t.group] = groups[t.group] || []).push({ ...t, idx: i }); }); return (
{Object.entries(groups).map(([g, items]) => (
{g}
{items.map((t) => (
onPick(t.id)} > {String(t.idx + 1).padStart(2, '0')} {t.label}
))}
))}
Escolha um template, edite os campos e baixe a arte em PNG. As legendas são geradas pela IA.
); } // ─── Field renderers ──────────────────────────────────────────────────────── function Field({ field, value, onChange }) { const { kind, key, label, hint, options } = field; if (kind === 'text') { return (
onChange(key, e.target.value)}/> {hint &&
{hint}
}
); } if (kind === 'textarea') { return (