Files
pulsenode/components/widgets/BrandIcon.tsx
T

27 lines
840 B
TypeScript
Raw Normal View History

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>
);
}