// Decorative motifs + brand marks used across the kit. // Exports: DotGrid, Bubble, Molecule, EyebrowRule, Logo function DotGrid({ rows = 5, cols = 6, spacing = 14, size = 1.6, color = '#20E7AF', opacity = 0.5, style = {}, }) { const dots = []; for (let r = 0; r < rows; r++) { for (let c = 0; c < cols; c++) { dots.push(); } } const w = cols * spacing; const h = rows * spacing; return ( {dots} ); } function Bubble({ size = 80, filled = true, opacity = 1, style = {} }) { const base = { width: size, height: size, borderRadius: '50%', pointerEvents: 'none', opacity, ...style, }; if (filled) { return
; } return
; } function Molecule({ width = 180, color = '#20E7AF', opacity = 0.55, style = {} }) { return ( ); } function EyebrowRule({ withDot = true, style = {} }) { return (
{withDot &&
}
); } function Logo({ variant = 'light', height = 32 }) { // 'light' = white wordmark for dark backgrounds // 'dark' = navy wordmark for light backgrounds // 'mark' = just the d-mark const src = variant === 'mark' ? '../../assets/logos/logo-mark.svg' : variant === 'dark' ? '../../assets/logos/logo-wordmark-dark.svg' : '../../assets/logos/logo-wordmark-light.svg'; const ratio = variant === 'mark' ? 1 : 360 / 80; return DISPROQUILIM; } Object.assign(window, { DotGrid, Bubble, Molecule, EyebrowRule, Logo });