// ============================================================
// SEÇÃO · Templates-mestre — reuso em todo o site
// (Home já está na seção Home.) Aqui: Institucional, Matéria,
// Newsletter, Evento, Sócio (shell). Mobile + desktop onde a
// estrutura muda.
// ============================================================
function ArticleShareBar() {
return
{['↗', 'in', 'f', '✉'].map(x => )}
;
}
function templateArtboards() {
return [
// ---------- Institucional · Mobile ----------
Institucional: O Clube e páginas estáticas.',
{ pin: 1, t: 'Título + hero/mídia + breadcrumb.' },
{ pin: 2, t: 'Corpo rico em coluna de leitura (~720px no desktop).' },
{ pin: 3, t: 'Blocos de apoio: documentos, galeria, linha do tempo.' },
'Reusado por: Apresentação, Estatuto, Subsedes, Meio Ambiente…',
]}>
O Clube›Apresentação
Desde 1956
Título da página institucional
Documentos relacionados
Galeria
,
// ---------- Institucional · Desktop ----------
centrada ~720px; apoio nas margens.',
'Linha do tempo dos 70 anos como bloco de apoio.',
'Sumário lateral fixo (anchor nav) opcional.',
]}>
O Clube›Apresentação · 70 anos
Desde 1956 · Ilhabela
Setenta anos de tradição na vela brasileira
Nesta página
{['História', 'Marcos', 'Conselho', 'Subsedes'].map((x, i) => {x})}
Linha do tempo
{['1956', '1980', '2006', '2026'].map(y =>
)}
,
// ---------- Matéria · Mobile (corpo modular, à la Medium) ----------
Matéria: notícias, editorial, posts.',
{ pin: 1, t: 'Header: categoria, título, autor, data.' },
{ pin: 2, t: 'Capa: player Mux ou imagem.' },
{ pin: 3, t: 'Corpo modular (block content / Sanity Portable Text): o editor intercala parágrafo, galeria, vídeo Mux, citação e embed — onde quiser, à la Medium.' },
{ pin: 4, t: 'Botão “+ inserir bloco” entre parágrafos; cada bloco tem variações (largura total / centrada).' },
{ pin: 5, t: 'Compartilhar + relacionados ao final.' },
'Mesmo corpo modular vale para qualquer matéria (reuso do template).',
]}>
Vida no Iate Clube›Notícias
Esportes
Título da matéria em duas ou três linhas
Bloco de capa · Mux ou imagem · legenda
{/* bloco vídeo inline */}
Bloco · Vídeo![]()
Vídeo (Mux) inserido no meio da matéria · legenda
{/* bloco galeria inline */}
Bloco · Galeria3 fotos · arrastar
Galeria inserida no meio da matéria
{/* citação */}
{/* affordance de inserção entre blocos */}
+ inserir bloco · texto · imagem · galeria · vídeo · citação · embed
,
// ---------- Newsletter · e-mail (HTML) · Mobile (template) ----------
Revista descontinuada. Este molde é a newsletter semanal em HTML (e-mail) que substitui o PDF.',
{ pin: 1, t: 'Masthead: marca + nome da newsletter + data da edição.' },
{ pin: 2, t: 'Destaque da semana → leva à matéria no site.' },
{ pin: 3, t: 'Curadoria: blocos que linkam para matérias (não republica o texto).' },
{ pin: 4, t: 'Patrocínio rotulado + rodapé com descadastro (LGPD).' },
'Arquivo público e métricas no CMS — ver "Newsletter · arquivo" (Vida › Notícias).',
]}>
Newsletter semanal · nome a definir
Edição da semana · 12 jun 2026
Em destaque
A chamada principal da semana
Ler no site
Também nesta edição
{[0, 1, 2].map(i =>
›)}
Você recebe porque é sócio · descadastrar · preferências
,
// ---------- Evento · Mobile ----------
Evento: agenda, regatas, sociais.',
{ pin: 1, t: 'Header do evento: data, local, status (signal-flag).' },
{ pin: 2, t: 'Descrição + programação (timeline).' },
{ pin: 3, t: 'CTA / inscrição fixo.' },
'SIVI usa este molde, mas leva ao site externo.',
]}>
Regata● Inscrições abertas
Nome do evento / regata
📅 14–16 jun 2026📍 Marina YCI · Ilhabela🌬 12–16 kn SE · Maré 1.4 m
Programação
{[['09:00', 'Largada'], ['12:00', 'Almoço no deck'], ['16:00', 'Premiação']].map(([h, t]) =>
)}
,
// ---------- Sócio (shell) · Mobile ----------
Sócio: esqueleto das telas autenticadas.',
{ pin: 1, t: 'Cabeçalho logado: nome do sócio + sair.' },
{ pin: 2, t: 'Navegação interna da Área do Sócio (não é o menu público).' },
{ pin: 3, t: 'Área de conteúdo: listas e documentos.' },
'Detalhe das telas na seção Área do Sócio.',
]}>
9:41▰▰▰ ◢ 100%
Olá, Sócio
Titular · nº 0427
Sair
{['Início', 'Comunicados', 'Documentos', 'Ouvidoria'].map((t, i) =>
{t})}
{['Início', 'Comunicados', 'Documentos', 'Enquetes', 'Mais'].map((t, i) =>
)}
,
];
}
window.templateArtboards = templateArtboards;