- multi-link bookmark cards now span 4/2 (matching the system widget) instead of 3/1, so they're not cramped and line up into an even 3-up row alongside it - the link list scrolls internally instead of stretching the card, so widgets in the same row stay equal height regardless of link count - BrandIcon gains a small "generic icon" escape hatch (currently just `globe`, via phosphor) for widgets that don't have a real brand mark - added a `coder` brand icon (Coder/code-server) for the Code Server link, since simple-icons has no official VS Code mark to use Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WpxhtQY3CExQdMs4j7MmJe
27 lines
840 B
TypeScript
27 lines
840 B
TypeScript
import { GlobeSimple } from "@phosphor-icons/react/ssr";
|
|
import { BRAND_ICON_PATHS } from "@/lib/brand-icons";
|
|
|
|
// Generic (non-brand) icons that don't belong in BRAND_ICON_PATHS - for
|
|
// widgets that link to something with no single logo of its own.
|
|
const GENERIC_ICONS = {
|
|
globe: GlobeSimple,
|
|
};
|
|
|
|
export function BrandIcon({ slug, size = 18 }: { slug?: string; size?: number }) {
|
|
if (!slug) return null;
|
|
|
|
const GenericIcon = GENERIC_ICONS[slug as keyof typeof GENERIC_ICONS];
|
|
if (GenericIcon) {
|
|
return <GenericIcon size={size} className="shrink-0 text-fg-muted" aria-hidden />;
|
|
}
|
|
|
|
const path = BRAND_ICON_PATHS[slug];
|
|
if (!path) return null;
|
|
|
|
return (
|
|
<svg width={size} height={size} viewBox="0 0 24 24" fill="currentColor" className="shrink-0 text-fg-muted" aria-hidden>
|
|
<path d={path} />
|
|
</svg>
|
|
);
|
|
}
|