// Shared V5-style background + minimal helpers for V6-V10
// The "V5 background" — dark base + dot grid + radial purple glow
const OrbitalBg = ({ glowPosition = '50% 0%', glowSize = 800, gridSize = 64, gridOpacity = 0.03, children, style = {} }) => (
{/* Dot grid */}
{/* Glow */}
{children}
);
// Minimal nav — just logo + small links + button.
// Pass links=[] to hide links, cta={null} to hide CTA button.
const MinimalNav = ({
pill = false,
logo,
links = ['Serviços', 'Trabalhos', 'Contato'],
cta = 'Iniciar projeto',
}) => {
const hasLinks = Array.isArray(links) && links.length > 0;
return (
{logo || }
{hasLinks ? (
pill ? (
{links.map((l, i) => (
{l}
))}
) : (
{links.map((l, i) => (
{l}
))}
)
) : }
{cta ? (
{cta}
) : }
);
};
// Minimal footer
const MinimalFooter = ({ logo }) => (
{logo || }
© 2026 WithDev
);
// The core orbital visual — reused, scalable
const OrbitalCore = ({ size = 620 }) => {
const cx = size / 2;
const rings = [size * 0.42, size * 0.58, size * 0.74, size * 0.9];
const coreSize = size * 0.26;
const dots = [
{ ring: 0, a: 30, color: '#7c5cff', size: 12 },
{ ring: 0, a: 200, color: '#c4b5ff', size: 7 },
{ ring: 1, a: 100, color: '#fff', size: 9 },
{ ring: 1, a: 280, color: '#7c5cff', size: 11 },
{ ring: 2, a: 60, color: '#fff', size: 7 },
{ ring: 2, a: 170, color: '#7c5cff', size: 6 },
{ ring: 2, a: 320, color: '#c4b5ff', size: 9 },
{ ring: 3, a: 20, color: '#7c5cff', size: 7 },
{ ring: 3, a: 150, color: '#fff', size: 10 },
{ ring: 3, a: 240, color: '#c4b5ff', size: 6 },
];
return (
{/* glow */}
{/* rings */}
{rings.map((d, i) => (
))}
{/* core */}
{/* dots */}
{dots.map((p, i) => {
const d = rings[p.ring];
const rad = (p.a * Math.PI) / 180;
const x = Math.cos(rad) * (d / 2) + cx - p.size / 2;
const y = Math.sin(rad) * (d / 2) + cx - p.size / 2;
return (
);
})}
);
};
const SERVICES_SHORT = [
'Sites', 'E-commerce', 'Apps', 'Sistemas', 'Integrações', 'IA & Automações'
];
// Checkered grid background — the "xadrez" pattern. Subtle purple glow optional.
const GridBg = ({
gridSize = 64,
lineOpacity = 0.06,
grid = true,
glow = true,
glowPosition = '50% 0%',
glowSize = 900,
children,
style = {},
}) => (
{/* Grid lines (xadrez) */}
{grid && (
)}
{/* Optional purple glow */}
{glow && (
)}
{children}
);
// Terminal panel chrome — for client-friendly variations.
// `title` shows in the title bar, children is the content.
const TerminalChrome = ({ title = '~/withdev', children, style = {} }) => (
);
Object.assign(window, { OrbitalBg, GridBg, MinimalNav, MinimalFooter, OrbitalCore, SERVICES_SHORT, TerminalChrome });