import { Box, useRendererHost } from "../../ui";
import { useCallback } from "react";
import { t } from "../../i18n";
import { useAppLanguage } from "../../i18n/react";
import { TITLEBAR_OVERLAY_HEIGHT_PX } from "./titlebar-overlay";
const WINDOWS_CONTROL_SIZE_PX = TITLEBAR_OVERLAY_HEIGHT_PX;
export const WINDOWS_CONTROL_GROUP_WIDTH_PX = WINDOWS_CONTROL_SIZE_PX * 3;
type WindowControlAction = "minimize" | "toggle-maximize" | "close";
const WINDOWS_CONTROLS: Array<{
action: WindowControlAction;
labelKey: string;
}> = [
{ action: "minimize", labelKey: "Minimize" },
{ action: "toggle-maximize", labelKey: "Maximize" },
{ action: "close", labelKey: "Close" },
];
function stopMouse(event: { stopPropagation?: () => void; preventDefault?: () => void }) {
event.stopPropagation?.();
event.preventDefault?.();
}
function WindowControlIcon({ action }: { action: WindowControlAction }) {
if (action === "minimize") {
return (
);
}
if (action === "toggle-maximize") {
return (
);
}
return (
);
}
interface WindowControlsProps {
windowKind?: "main" | "detached";
}
export function WindowControls({ windowKind = "main" }: WindowControlsProps) {
useAppLanguage();
const rendererHost = useRendererHost();
const controlWindow = useCallback((action: WindowControlAction, event: { stopPropagation?: () => void; preventDefault?: () => void }) => {
stopMouse(event);
void rendererHost.controlWindow?.(action);
}, [rendererHost]);
return (
{WINDOWS_CONTROLS.map((control) => (
void; preventDefault?: () => void }) => controlWindow(control.action, event)}
>
))}
);
}