// Wireframe kit — DivineAI
// Sistema de design: wireframe estruturado, off-white quente, dourado sutil, tipografia serif/sans.
// NÃO desenha ícones religiosos — apenas formas abstratas (círculos, linhas, pontos de luz).
// Paleta inspirada na refência visual: azul-marinho profundo + ouro
const TOKENS = {
bg: '#F4F6FB', // azul-claro de fundo (ref)
bgAlt: '#E8ECF5', // tom levemente mais escuro
ink: '#0E1838', // azul-marinho profundo (texto principal)
ink2: '#4A5478', // azul médio (secundário)
ink3: '#8892AC', // azul claro (terciário / placeholder)
line: '#C9D2E5', // linha fina (azul acinzentado)
line2: '#E2E7F1', // linha mais clara
navy: '#0E1838', // navy para hero / dark cards
navy2: '#1B2754', // navy mais claro
gold: '#C9A24A', // ouro principal (ref)
goldSoft: '#F2E5BF', // ouro claro para fills
goldDeep: '#9E7A2C', // ouro escuro para texto sobre dourado
serif: '"Cormorant Garamond", "Cormorant", Georgia, serif',
sans: '"Inter", -apple-system, system-ui, sans-serif',
mono: '"JetBrains Mono", ui-monospace, monospace',
};
window.TOKENS = TOKENS;
// Linha hachurada / placeholder
function Placeholder({ height = 80, label = 'imagem', radius = 8, style = {} }) {
return (
{label}
);
}
window.Placeholder = Placeholder;
// Linha de texto fake (wireframe bar)
function Bar({ width = '100%', height = 8, opacity = 1, style = {} }) {
return (
);
}
window.Bar = Bar;
// Card básico do wireframe
function WCard({ children, padding = 16, style = {}, onClick, ...rest }) {
return (
{children}
);
}
window.WCard = WCard;
// Botão principal (dourado outline)
function WButton({ children, primary, full, onClick, style = {} }) {
return (
);
}
window.WButton = WButton;
// Símbolo abstrato (sol/luz) — substitui ícones religiosos
function LightMark({ size = 32, color = TOKENS.gold }) {
return (
);
}
window.LightMark = LightMark;
// Ponto / partícula
function Dot({ size = 4, color = TOKENS.gold, style = {} }) {
return ;
}
window.Dot = Dot;
// Header de tela (substitui o NavBar — mais limpo para wireframe)
function ScreenHeader({ title, subtitle, onBack, action, dark }) {
const fg = dark ? '#fff' : TOKENS.ink;
const fg2 = dark ? 'rgba(255,255,255,0.6)' : TOKENS.ink2;
return (
{onBack ? (
) :
}
{action ||
}
{subtitle &&
{subtitle}
}
{title &&
{title}
}
);
}
window.ScreenHeader = ScreenHeader;
// Tab bar inferior
function TabBar({ active = 'home', onNav }) {
const tabs = [
{ id: 'home', label: 'Início' },
{ id: 'pray', label: 'Orar' },
{ id: 'create', label: 'Criar' },
{ id: 'promise', label: 'Promessas' },
{ id: 'me', label: 'Eu' },
];
return (
{tabs.map(t => (
))}
);
}
window.TabBar = TabBar;
// Annotation marginal — para wireframe
function Annotation({ children, style = {} }) {
return (
{children}
);
}
window.Annotation = Annotation;
// Chip
function Chip({ children, active, onClick, style = {} }) {
return (
);
}
window.Chip = Chip;
// Wrapper: app screen background com tab bar opcional
function Screen({ children, dark, noTabs, scroll = true }) {
return (
);
}
window.Screen = Screen;