// Shared atoms: logo, marquee, markers, icons, placeholder const { useState, useEffect, useRef, useMemo } = React; // Logo using the real SVG asset. Variants: // "auto" — uses the gold SVG (works on any bg) // "mark" — small logomark only const Logo = ({ height = 38, variant = "full", invert = false }) => { if (variant === "mark") { return (
); } return ( MaxWealth Investments ); }; const ArrowIcon = ({ size = 14, style }) => ( ); const Marker = ({ index, total, label }) => (
{String(index).padStart(2, "0")} / {String(total).padStart(2, "0")} {label}
); // Ticker / marquee const Marquee = ({ items, speed = 50, dark = false }) => { const arr = [...items, ...items, ...items]; return (
{arr.map((it, i) => ( {it} ))}
); }; // Placeholder image — supports either a real photo (with brand-tint overlay) or a striped fallback const Placeholder = ({ aspect = "4 / 5", label, tone = "green", style = {}, image, imagePos = "center" }) => { const palettes = { green: { bg: "var(--green-700)", fg: "var(--gold-300)", stripe: "rgba(255,210,73,0.08)", tint: "rgba(10,58,42,0.55)" }, "green-dark": { bg: "var(--green-900)", fg: "var(--gold-300)", stripe: "rgba(255,210,73,0.06)", tint: "rgba(5,36,26,0.65)" }, cream: { bg: "var(--cream-2)", fg: "var(--green-800)", stripe: "rgba(10,58,42,0.06)", tint: "rgba(232,179,33,0.25)" }, ink: { bg: "var(--ink)", fg: "var(--gold-300)", stripe: "rgba(255,210,73,0.06)", tint: "rgba(11,31,24,0.65)" }, }; const p = palettes[tone] || palettes.green; if (image) { return (
{label {/* Brand-color tint */}
{label && ( {label} )}
); } return (
{label}
); }; Object.assign(window, { Logo, ArrowIcon, Marker, Marquee, Placeholder });