/* global React */ // Inline icon components — minimal, consistent stroke style const Icon = ({ size = 22, children, color = "currentColor", style }) => ( {children} ); const IconMic = (p) => ; const IconMicSolid = ({ size = 55, color = "white" }) => ( ); const IconChat = (p) => ; const IconHome = (p) => ; const IconCalendar = (p) => ; const IconClock = (p) => ; const IconSettings = (p) => ; const IconArrowRight = (p) => ; const IconArrowLeft = (p) => ; const IconCheck = (p) => ; const IconX = (p) => ; const IconKeyboard = (p) => ; const IconStop = ({ size = 22, color = "currentColor" }) => ; const IconPause = ({ size = 22, color = "currentColor" }) => ; const IconUser = (p) => ; const IconBell = (p) => ; const IconShield = (p) => ; const IconLink = (p) => ; const IconZap = (p) => ; const IconPhone = (p) => ; const IconWaveform = (p) => ; const IconChev = (p) => ; const IconPlus = (p) => ; const IconStar = (p) => ; // ── Loop logo ────────────────────────────────────────────── // Mark = a ring (the "loop") wrapping a voice waveform. let _lmId = 0; const LoopMark = ({ size = 40, variant = "gradient" }) => { const idRef = React.useRef(null); if (idRef.current === null) idRef.current = "lm" + (++_lmId); const gid = idRef.current; const stroke = variant === "white" ? "#ffffff" : variant === "ink" ? "#0a0a0d" : `url(#${gid})`; return ( {/* the loop */} {/* voice waveform */} ); }; // Tile + wordmark lockup const LoopLogo = ({ wordSize = 22, tile = 36, dark = false, showWord = true }) => (
{showWord && ( Loop )}
); window.SparkyIcons = { Icon, IconMic, IconMicSolid, IconChat, IconHome, IconCalendar, IconClock, IconSettings, IconArrowRight, IconArrowLeft, IconCheck, IconX, IconKeyboard, IconStop, IconPause, IconUser, IconBell, IconShield, IconLink, IconZap, IconPhone, IconWaveform, IconChev, IconPlus, IconStar, LoopMark, LoopLogo, };