import { useContext } from "react"; import Image from "next/future/image"; import { SettingsContext } from "utils/contexts/settings"; import { ThemeContext } from "utils/contexts/theme"; const iconSetURLs = { 'mdi': "https://cdn.jsdelivr.net/npm/@mdi/svg@latest/svg/", 'si' : "https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/", }; export default function ResolvedIcon({ icon, width = 32, height = 32, alt = "logo" }) { const { settings } = useContext(SettingsContext); const { theme } = useContext(ThemeContext); // direct or relative URLs if (icon.startsWith("http") || icon.startsWith("/")) { return ( {alt} ); } // check mdi- or si- prefixed icons const prefix = icon.split("-")[0] if (prefix in iconSetURLs) { // get icon source const iconName = icon.replace(`${prefix}-`, "").replace(".svg", ""); const iconSource = `${iconSetURLs[prefix]}${iconName}.svg`; return (
); } // fallback to dashboard-icons if (icon.endsWith(".svg")) { const iconName = icon.replace(".svg", ""); return ( {alt} ); } const iconName = icon.replace(".png", ""); return ( {alt} ); }