// Shared primitives: logo, lightning SVG, brand glyph, icons
const { useEffect, useRef, useState, useMemo, useCallback } = React;
// Image-based logo (the Z mark)
function Logo({ size = 36 }) {
return (
);
}
// Flat silver wordmark — no gradient, single tone
function Wordmark({ size = 22, color = '#e8e8eb' }) {
return (
THRAXEL
);
}
// Lockup — Z mark + wordmark
function Lockup({ markSize = 28, textSize = 14 }) {
return (
);
}
// Decorative lightning arc — pure SVG path
function LightningArc({ seed = 1, opacity = 0.5, color = '#FF1A1A' }) {
const path = useMemo(() => {
let r = seed * 9301 + 49297;
const rnd = () => { r = (r * 9301 + 49297) % 233280; return r / 233280; };
let x = 0, y = 50;
const pts = [`M ${x} ${y}`];
while (x < 400) {
x += 10 + rnd() * 30;
y = 50 + (rnd() - 0.5) * 60;
pts.push(`L ${x} ${y}`);
}
return pts.join(' ');
}, [seed]);
return (
);
}
// Section title — flat off-white, no chrome gradient
function ChromeTitle({ children, size = 96, as: Tag = 'h2' }) {
return (
{children}
);
}
function RedTitle({ children, size = 56 }) {
return (
{children}
);
}
function VideoBg({ src, poster }) {
return (
);
}
// Tiny svg icons
const Icons = {
chevDown: () => ,
arrow: () => ,
play: () => ,
close: () => ,
mic: () => ,
upload: () => ,
plus: () => ,
};
Object.assign(window, { Logo, Wordmark, Lockup, LightningArc, ChromeTitle, RedTitle, VideoBg, Icons });