/* global React */
// Inline icon components — minimal, consistent stroke style
const Icon = ({ size = 22, children, color = "currentColor", style }) => (
);
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 (
);
};
// Tile + wordmark lockup
const LoopLogo = ({ wordSize = 22, tile = 36, dark = false, showWord = true }) => (
);
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,
};