Files
automaker/apps/ui/src/hooks/use-window-state.ts
SuperComboGamer 8d578558ff style: fix formatting with Prettier
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 20:31:57 -05:00

54 lines
1.3 KiB
TypeScript

import { useState, useEffect } from 'react';
export interface WindowState {
isMaximized: boolean;
windowWidth: number;
windowHeight: number;
}
/**
* Hook to track window state (dimensions and maximized status)
* For Electron apps, considers window maximized if width > 1400px
* Also listens for window resize events to update state
*/
export function useWindowState(): WindowState {
const [windowState, setWindowState] = useState<WindowState>(() => {
if (typeof window === 'undefined') {
return { isMaximized: false, windowWidth: 0, windowHeight: 0 };
}
const width = window.innerWidth;
const height = window.innerHeight;
return {
isMaximized: width > 1400,
windowWidth: width,
windowHeight: height,
};
});
useEffect(() => {
if (typeof window === 'undefined') return;
const updateWindowState = () => {
const width = window.innerWidth;
const height = window.innerHeight;
setWindowState({
isMaximized: width > 1400,
windowWidth: width,
windowHeight: height,
});
};
// Set initial state
updateWindowState();
// Listen for resize events
window.addEventListener('resize', updateWindowState);
return () => {
window.removeEventListener('resize', updateWindowState);
};
}, []);
return windowState;
}