import { MosaicWindow, MosaicBranch } from "react-mosaic-component"; import { WindowInstance } from "@/types/app"; import { WindowToolbar } from "./WindowToolbar"; import { WindowRenderer } from "./WindowRenderer"; import { useDynamicWindowTitle } from "./DynamicWindowTitle"; import { ErrorBoundary } from "./ErrorBoundary"; interface WindowTileProps { id: string; window: WindowInstance; path: MosaicBranch[]; onClose: (id: string) => void; onEditCommand: () => void; // Callback to open CommandLauncher } export function WindowTile({ id, window, path, onClose, onEditCommand, }: WindowTileProps) { const { title, icon, tooltip } = useDynamicWindowTitle(window); const Icon = icon; // Convert title to string for MosaicWindow (which only accepts strings) // The actual title (with React elements) is rendered in the custom toolbar const titleString = typeof title === "string" ? title : tooltip || window.title || window.appId.toUpperCase(); // Custom toolbar renderer to include icon const renderToolbar = () => { return (
{Icon && ( )} {title}
onClose(id)} onEditCommand={onEditCommand} />
); }; return ( onClose(id)} /> ); }