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) { if (icon.startsWith("http")) { return `/api/proxy?url=${encodeURIComponent(icon)}`; } if (icon.startsWith("/")) { return icon; } if (icon.endsWith(".png")) { return `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}`; } return `https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons/png/${icon}.png`; } 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 ? ( logo ) : (
    logo
    ))} {hasLink ? (
    {service.name}

    {service.description}

    ) : (
    {service.name}

    {service.description}

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