// 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 (
);
}
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 (
);
}
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
;
}
Object.assign(window, { DotGrid, Bubble, Molecule, EyebrowRule, Logo });