feat(electron): add Electron UI components and layout integration

This commit is contained in:
DrSmoothl
2026-03-03 00:54:24 +08:00
parent fc394f4412
commit 65774f3afc
8 changed files with 708 additions and 4 deletions

View File

@@ -0,0 +1,30 @@
import { useCallback, useEffect, useState } from 'react'
import { isElectron } from '@/lib/runtime'
export function useWindowControls() {
const [isMaximized, setIsMaximized] = useState(false)
useEffect(() => {
if (!isElectron()) return
const api = window.electronAPI
if (!api) return
api.isMaximized().then(setIsMaximized)
const unsubMax = api.onWindowMaximized(() => setIsMaximized(true))
const unsubUnmax = api.onWindowUnmaximized(() => setIsMaximized(false))
return () => {
unsubMax?.()
unsubUnmax?.()
}
}, [])
const minimize = useCallback(() => window.electronAPI?.minimizeWindow(), [])
const toggleMaximize = useCallback(() => window.electronAPI?.maximizeWindow(), [])
const close = useCallback(() => window.electronAPI?.closeWindow(), [])
return { close, isMaximized, minimize, toggleMaximize }
}