import { Trans, useTranslation } from "react-i18next"; import { useAuth } from "../context/AuthContext"; import { useDemoGuide } from "../context/DemoGuideContext"; import { useDemoManifest } from "../context/DemoManifestContext"; import { useLocaleFormat } from "../i18n/format"; import { Icon } from "../components/Icons"; import { IntegrationMark, LoadingState, PageHeader, SectionHeading } from "../components/PageChrome"; import { PRODUCT_NAME } from "../product"; const INTEGRATION_ICON: Record = { n8n: "n8n", ragcore: "rag", mcp_hub: "mcp", }; const N8N_STATUS_LABEL_KEY: Record = { disabled: "notConnected", unavailable: "deliveryFailed", degraded: "retryAvailable", operational: "operational", no_evidence: "prepared", }; export function AboutDemo() { const { t } = useTranslation(["demo", "integrations"]); const { formatDateTime } = useLocaleFormat(); const { manifest, loading } = useDemoManifest(); const { user } = useAuth(); const { openGuide } = useDemoGuide(); function statusLabelKey(key: string, statusCode: string): string { if (key === "n8n") return N8N_STATUS_LABEL_KEY[statusCode] ?? statusCode; return statusCode; } return (
{loading && } {manifest && ( <> {user?.role === "operations_manager" && (
{t("about.ctaTitle")}

{t("about.ctaBody")}

)}

{t("about.problemTitle")}

{t("about.problemBody", { orgName: manifest.organization_name, productName: PRODUCT_NAME })}

{t("about.scopeTitle")}

{t("about.scopeBody", { productName: PRODUCT_NAME })}

{t("about.realTitle")}

{t("about.realBody")}

{t("about.syntheticTitle")}

{t("about.syntheticBody", { testDomain: ".test" })}

{t("about.architectureTitle")}

{t("about.architectureBody")}

{t("about.securityTitle")}

{t("about.securityBody")}

{t("about.testingTitle")}

{t("about.testingBody")}

{manifest.integrations.map((integration) => (
{t(`integrations:statusLabels.${statusLabelKey(integration.key, integration.status_code)}`)}

{t(`integrationSummary.titles.${integration.key}`, { ns: "demo" })}

{t(`integrationSummary.${integration.detail_code}`, { ns: "demo", ...integration.detail_params })}

))}

{t("about.resetTitle")}

}} />

{t("about.limitationsTitle")} {t("about.limitationsBody")}

)}
); }