"use client";
import type { ReactNode } from "react";
import { useTranslation } from "react-i18next";
import { PageShell } from "@/components/page-shell";
import { PanelRoot } from "@/components/task/panel-primitives";
import { CanvasHostHeader } from "./canvas-host-components";
export function CanvasHostFrame({
embedded,
isMobile,
title,
mobileTitleSlot,
dataScopeLabel,
menuOpen,
setMenuOpen,
desktopActions,
renameAction,
desktopOverflowActions,
desktopOverflowMenuItems,
desktopOverflowPrimaryAction,
mobileActionsButton,
canvasBody,
mobileActions,
dialogs,
}: {
embedded: boolean;
isMobile: boolean;
title: string;
mobileTitleSlot?: ReactNode;
dataScopeLabel?: string;
menuOpen: boolean;
setMenuOpen: (open: boolean) => void;
desktopActions: ReactNode;
renameAction: ReactNode;
desktopOverflowActions: ReactNode;
desktopOverflowMenuItems: ReactNode;
desktopOverflowPrimaryAction: ReactNode;
mobileActionsButton: ReactNode;
canvasBody: ReactNode;
mobileActions: ReactNode;
dialogs: ReactNode;
}) {
const { t } = useTranslation();
if (embedded) {
return (
setMenuOpen(true)}
actions={isMobile ? null : desktopActions}
renameAction={isMobile ? null : renameAction}
overflowActions={isMobile ? null : desktopOverflowActions}
/>
{canvasBody}
{mobileActions}
{dialogs}
);
}
return (
{title}
{renameAction}
)
}
subtitle={isMobile ? undefined : dataScopeLabel}
backHref="/"
backLabel={t("sidebar:home")}
scroll="none"
topbarTestId="canvas-host-header"
actions={isMobile ? mobileActionsButton : desktopActions}
overflowMenuItems={isMobile ? null : desktopOverflowMenuItems}
overflowPrimaryAction={isMobile ? null : desktopOverflowPrimaryAction}
contentTestId="canvas-route-content"
showNavTrigger
>
{canvasBody}
{mobileActions}
{dialogs}
);
}