// Shared primitives: icons, logo, etc.
const Icon = ({ name, size = 16, stroke = 1.7 }) => {
const paths = {
arrow_right: ,
arrow_left: ,
plus: ,
copy: <>>,
check: ,
close: ,
eye: <>>,
search: <>>,
warn: <>>,
home: <>>,
grid: <>>,
workflow: <>>,
key: <>>,
book: <>>,
settings: <>>,
chevron_right: ,
chevron_down: ,
external: <>>,
trash: <>>,
spark: ,
bolt: ,
github: ,
google: <>>,
share: <>>,
download: <>>,
zoom_in: <>>,
zoom_out: <>>,
maximize: <>>,
slack: <>>,
database: <>>,
mail: <>>,
filter: ,
star: ,
linear: <>>,
clock: <>>,
send: <>>,
terminal: <>>,
logout: <>>,
};
return (
);
};
// Arcrun wordmark — custom "arc" glyph made of an arc stroke + ascending dot/node
const Logo = ({ size = 'md', onClick }) => {
const dims = size === 'sm' ? { w: 18, h: 18, f: 10 } : size === 'lg' ? { w: 28, h: 28, f: 14 } : { w: 22, h: 22, f: 12 };
return (
);
};
// App icon with gradient background
const AppIcon = ({ tone = 'indigo', children, size = 38 }) => {
const tones = {
indigo: 'linear-gradient(135deg, #6366F1, #8B5CF6)',
orange: 'linear-gradient(135deg, #F59E0B, #EF4444)',
green: 'linear-gradient(135deg, #10B981, #22C55E)',
pink: 'linear-gradient(135deg, #EC4899, #8B5CF6)',
blue: 'linear-gradient(135deg, #3B82F6, #06B6D4)',
slate: 'linear-gradient(135deg, #475569, #334155)',
amber: 'linear-gradient(135deg, #F59E0B, #D97706)',
};
return (
{children}
);
};
Object.assign(window, { Icon, Logo, AppIcon });