import { useEffect, useState, type CSSProperties } from 'react' import { Copy, Maximize2, Minus, Shrink, Square, X } from 'lucide-react' import { WINDOW_STATE_CHANGED } from '#/events/constants' import { windowControlsAdapter } from '@/adapters/window-controls' import { ipc } from '@/utils/bridge' import { cn } from '@/lib/utils' interface TitleBarProps { isMac?: boolean } export function TitleBar ({ isMac = false }: TitleBarProps) { const [isMaximized, setIsMaximized] = useState(false) useEffect(() => { async function syncWindowState () { try { const state = await windowControlsAdapter.getWindowState() setIsMaximized(state.isMaximized) } catch (error) { console.error(error) } } syncWindowState() const handleWindowStateChange = (state: { isMaximized: boolean }) => { setIsMaximized(state.isMaximized) } return ipc.on(WINDOW_STATE_CHANGED, handleWindowStateChange) }, []) const toggleMaximize = () => { setIsMaximized((value) => !value) windowControlsAdapter.maximizeWindow() } const maximizeIcon = isMaximized ? : const macMaximizeIcon = isMaximized ? : const macWindowControls = (
) const desktopWindowControls = (
) return (
{isMac ? macWindowControls : null}
{!isMac ? desktopWindowControls : null}
) }