"use client"; import { useMemo } from "react"; import { useScopedI18n } from "@homarr/translation/client"; import { CustomJsxRenderer, parseRequestCapabilities } from "@homarr/custom-widgets/runtime"; import { createWhitelistedComponents, SAFE_BINDINGS } from "./jsx-whitelist"; import { WidgetDefinitionProvider } from "./widget-definition-context"; export { CUSTOM_JSX_METHOD_COLORS } from "@homarr/custom-widgets/runtime"; export default function CustomJsxDisplay({ data }: { data: Record }) { const t = useScopedI18n("widget.customApi.customJsx"); const capabilities = useMemo(() => parseRequestCapabilities(data.requestCapabilities), [data.requestCapabilities]); const components = useMemo(() => createWhitelistedComponents({ copy: t("copy"), copied: t("copied") }), [t]); const renderer = ( t("templateWarnings", { count: String(count) }), }} /> ); const hasRuntime = typeof data.widgetItemId === "string" || typeof data.previewSessionId === "string"; return hasRuntime ? ( {renderer} ) : ( renderer ); }