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)} > ))} ); }