'use client' import { useEffect, useState } from 'react' export default function CodeExample({ framework }) { const examplesUrl = framework?.exemplos; const color = framework?.cor || '#6B7280'; const [sample, setSample] = useState(''); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [copied, setCopied] = useState(false); useEffect(() => { setSample(''); setError(null); setLoading(false); if (!framework) return; const exemploPath = framework.exemplo; if (!exemploPath) { const msg = `// Exemplos completos: ${examplesUrl || 'Ver repositório'}\n// Abra o link acima para ver exemplos e código completo.\n`; setSample(msg); return; } const url = exemploPath.startsWith('/') ? exemploPath : `/${exemploPath}`; let cancelled = false; setLoading(true); fetch(url) .then((res) => { if (!res.ok) throw new Error(`HTTP ${res.status}`); return res.text(); }) .then((text) => { if (cancelled) return; if (text && text.trim().length > 0) { setSample(text); } else { setSample(`// Arquivo de exemplo está vazio. Consulte: ${examplesUrl || 'repositório'}\n`); setError('Arquivo vazio'); } }) .catch((err) => { if (cancelled) return; setSample(`// Não foi possível carregar o exemplo local. Consulte: ${examplesUrl || 'repositório'}\n`); setError(err.message || 'Falha ao carregar exemplo'); }) .finally(() => { if (!cancelled) setLoading(false); }); return () => { cancelled = true; }; }, [framework?.exemplo, framework?.exemplos]); const lines = (sample || '').split('\n'); async function handleCopy() { try { await navigator.clipboard.writeText(sample); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch {} } return (

Exemplo de Código

Trecho rápido para começar — personalize conforme necessário.

{framework?.linguagem || 'Código'} {examplesUrl && ( 🔗 Ver Outros no GitHub )}
{framework?.nome}
{loading ? 'Carregando exemplo...' : (framework?.exemplo ? 'Exemplo do framework' : 'Abrir no GitHub')}
                        {lines.map((line, idx) => (
                            
{idx + 1} {line === '' ? '\u00A0' : line}
))}
{error &&

Não foi possível carregar o arquivo de exemplo: {error}. Usando instrução para o repositório.

}

Dica: personalize este trecho conforme o seu projeto. Os exemplos completos estão no repositório.

); }