import Image from "next/future/image"; import classNames from "classnames"; import { useContext, useState } from "react"; import Status from "./status"; import Widget from "./widget"; import Docker from "widgets/docker/component"; import { SettingsContext } from "utils/contexts/settings"; function resolveIcon(icon) { // direct or relative URLs if (icon.startsWith("http") || icon.startsWith("/")) { return logo; } // mdi- prefixed, material design icons if (icon.startsWith("mdi-")) { const iconName = icon.replace("mdi-", "").replace(".svg", ""); return (
); } // fallback to dashboard-icons const iconName = icon.replace(".png", ""); return ( logo ); } export default function Item({ service }) { const hasLink = service.href && service.href !== "#"; const { settings } = useContext(SettingsContext); const [statsOpen, setStatsOpen] = useState(false); const [statsClosing, setStatsClosing] = useState(false); // set stats to closed after 300ms const closeStats = () => { if (statsOpen) { setStatsClosing(true); setTimeout(() => { setStatsOpen(false); setStatsClosing(false); }, 300); } }; return (
  • {service.icon && (hasLink ? ( {resolveIcon(service.icon)} ) : (
    {resolveIcon(service.icon)}
    ))} {hasLink ? (
    {service.name}

    {service.description}

    ) : (
    {service.name}

    {service.description}

    )} {service.container && ( )}
    {service.container && service.server && (
    {statsOpen && }
    )} {service.widget && }
  • ); }