11import { ReactElement , useEffect , useState } from 'react'
22import { Divider } from 'antd'
33import clsx from 'clsx'
4+ import { useAtomValue } from 'jotai'
45import { MenuIcon , XIcon } from 'lucide-react'
56
7+ import { serialPortStateAtom } from '@renderer/jotai/device'
68import * as storage from '@renderer/libs/storage'
79
810import { Fullscreen } from './fullscreen'
@@ -14,6 +16,8 @@ import { Video } from './video'
1416import { Recorder } from './recorder'
1517
1618export const Menu = ( ) : ReactElement => {
19+ const serialPortState = useAtomValue ( serialPortStateAtom )
20+
1721 const [ isMenuOpen , setIsMenuOpen ] = useState ( false )
1822
1923 useEffect ( ( ) => {
@@ -22,34 +26,43 @@ export const Menu = (): ReactElement => {
2226 } , [ ] )
2327
2428 function toggleMenu ( ) : void {
25- setIsMenuOpen ( ! isMenuOpen )
29+ const isOpen = ! isMenuOpen
30+ setIsMenuOpen ( isOpen )
31+ storage . setIsMenuOpen ( isOpen )
2632 }
2733
2834 return (
29- < div className = "fixed top-[10px] left-1/2 z-[1000] -translate-x-1/2" >
35+ < div className = "fixed left-1/2 top-[10px] z-[1000] -translate-x-1/2" >
3036 < div className = "sticky top-[10px]" >
3137 < div
3238 className = { clsx (
33- 'h-[34px] items-center justify-between rounded bg-neutral-800/70 px-2 ' ,
39+ 'h-[34px] items-center justify-between space-x-1.5 rounded bg-neutral-800/70 px-3 ' ,
3440 isMenuOpen ? 'flex' : 'hidden'
3541 ) }
3642 >
3743 < Video />
38- < SerialPort />
39- < Divider type = "vertical" className = "px-[2px]" />
4044
41- < Mouse />
42- < Keyboard />
43- < Divider type = "vertical" className = "px-[2px]" />
45+ { serialPortState === 'connected' && (
46+ < >
47+ < SerialPort />
48+
49+ < Divider type = "vertical" />
50+
51+ < Keyboard />
52+ < Mouse />
53+ </ >
54+ ) }
55+
56+ < Divider type = "vertical" />
4457
4558 < Recorder />
4659
47- < Divider type = "vertical" className = "px-[2px]" />
60+ < Divider type = "vertical" />
4861
49- < Fullscreen />
5062 < Settings />
63+ < Fullscreen />
5164 < div
52- className = "flex h-[28px] cursor-pointer items-center justify-center rounded px-2 text-white hover:bg-neutral-700/70"
65+ className = "flex h-[28px] w-[28px] cursor-pointer items-center justify-center rounded text-white hover:bg-neutral-700/70"
5366 onClick = { toggleMenu }
5467 >
5568 < XIcon size = { 18 } />
@@ -58,7 +71,7 @@ export const Menu = (): ReactElement => {
5871
5972 { ! isMenuOpen && (
6073 < div
61- className = "flex h-[30px] w-[35px] cursor-pointer items-center justify-center rounded bg-neutral-800/50 text-white/70 hover:bg-neutral-800 hover:text-white"
74+ className = "flex h-[30px] w-[35px] cursor-pointer items-center justify-center rounded bg-neutral-800/50 text-white/50 hover:bg-neutral-800 hover:text-white"
6275 onClick = { toggleMenu }
6376 >
6477 < MenuIcon size = { 18 } />
0 commit comments