"use client"; import { Suspense, use } from "react"; import { Avatar, Text, Tooltip } from "@mantine/core"; import type { RouterOutputs } from "@homarr/api"; import { useEditMode } from "@homarr/boards/edit-mode"; import { getIconUrl } from "@homarr/definitions"; import { useI18n } from "@homarr/translation/client"; import { loadWidgetDefinition } from "@homarr/widgets/manifest"; import type { SectionItem } from "~/app/[locale]/boards/_types"; import classes from "./widget-hover-overlay.module.css"; interface WidgetHoverOverlayProps { item: SectionItem; integrations: RouterOutputs["integration"]["all"] | undefined; } export const WidgetHoverOverlay = ({ item, integrations }: WidgetHoverOverlayProps) => { const [isEditMode] = useEditMode(); if (!isEditMode) return null; return ( ); }; const LoadedWidgetHoverOverlay = ({ item, integrations }: WidgetHoverOverlayProps) => { const t = useI18n(); const definition = use(loadWidgetDefinition(item.kind)); const WidgetIcon = definition.icon; const displayName = item.advancedOptions.title?.trim() || t(`widget.${item.kind}.name`); const connectedIntegrations = (integrations ?? []).filter((integration) => item.integrationIds.includes(integration.id), ); return (
{displayName}
{connectedIntegrations.length > 0 && ( {connectedIntegrations.map((integration) => ( ))} )}
); };