1
1
"use client"
2
2
3
- import { useEffect , useState } from "react"
4
- import type { WebviewWindow } from "@tauri-apps/api/window"
5
- import { Globe , Maximize , Mic , X } from "lucide-react"
3
+ import { useCallback , useEffect , useState } from "react"
4
+ import Image from "next/image"
5
+ import { usePathname } from "next/navigation"
6
+ import logo from "@/assets/logo.png"
7
+ // import { appWindow, type WebviewWindow } from "@tauri-apps/plugin-window"
8
+ import { Globe , Maximize , Mic , Music2 , Sailboat , X , Zap } from "lucide-react"
6
9
7
10
import { Button } from "@/components/ui/button"
8
11
import {
@@ -24,38 +27,58 @@ import {
24
27
25
28
import { ExamplesNav } from "./examples-nav"
26
29
import { Icons } from "./icons"
30
+ import { MenuModeToggle } from "./menu-mode-toggle"
27
31
import { ModeToggle } from "./mode-toggle"
28
32
29
33
export function Menu ( ) {
30
- const [ appWindow , setAppWindow ] = useState < null | WebviewWindow > ( null )
34
+ // const [appWindow, setAppWindow] = useState(null)
31
35
32
- // Dinamically import the tauri API, but only when it's in a tauri window
33
- useEffect ( ( ) => {
34
- import ( "@tauri-apps/api/window" ) . then ( ( { appWindow } ) => {
35
- setAppWindow ( appWindow )
36
- } )
37
- } , [ ] )
36
+ // // Dinamically import the tauri API, but only when it's in a tauri window
37
+ // useEffect(() => {
38
+ // import("@tauri-apps/plugin-window").then(({ tauriWindow }: any) => {
39
+ // setAppWindow(tauriWindow)
40
+ // })
41
+ // }, [])
42
+
43
+ const minimizeWindow = useCallback ( async ( ) => {
44
+ const { appWindow } = await import ( "@tauri-apps/plugin-window" )
38
45
39
- const minimizeWindow = ( ) => {
40
46
appWindow ?. minimize ( )
41
- }
42
- const maximizeWindow = async ( ) => {
47
+ } , [ ] )
48
+
49
+ const maximizeWindow = useCallback ( async ( ) => {
50
+ const { appWindow } = await import ( "@tauri-apps/plugin-window" )
51
+
43
52
if ( await appWindow ?. isMaximized ( ) ) {
44
53
appWindow ?. unmaximize ( )
45
54
} else {
46
55
appWindow ?. maximize ( )
47
56
}
48
- }
49
- const closeWindow = ( ) => {
50
- appWindow ?. close ( )
51
- }
57
+ } , [ ] )
58
+
59
+ const closeWindow = useCallback ( async ( ) => {
60
+ const { appWindow } = await import ( "@tauri-apps/plugin-window" )
61
+
62
+ appWindow . close ( )
63
+ } , [ ] )
52
64
53
65
return (
54
- < Menubar className = "rounded-none border-b border-none pl-2 lg:pl-4" >
66
+ < Menubar className = "rounded-none border-b border-none pl-2 lg:pl-3" >
67
+ { /* App Logo */ }
68
+ < MenubarMenu >
69
+ < div className = "inline-flex h-fit w-fit items-center text-cyan-500" >
70
+ { usePathname ( ) === "/" || usePathname ( ) === "/examples/music" ? (
71
+ < Image src = { logo } alt = "logo" width = { 40 } />
72
+ ) : (
73
+ < Sailboat className = "h-5 w-5" />
74
+ ) }
75
+ </ div >
76
+ </ MenubarMenu >
77
+
55
78
< MenubarMenu >
56
79
< MenubarTrigger className = "font-bold" > App</ MenubarTrigger >
57
80
< MenubarContent >
58
- < MenubarItem > About Music </ MenubarItem >
81
+ < MenubarItem > About App </ MenubarItem >
59
82
< MenubarSeparator />
60
83
< MenubarItem >
61
84
Preferences... < MenubarShortcut > ⌘,</ MenubarShortcut >
@@ -205,14 +228,18 @@ export function Menu() {
205
228
< MenubarItem inset > Add Account...</ MenubarItem >
206
229
</ MenubarContent >
207
230
</ MenubarMenu >
231
+
232
+ < MenuModeToggle />
233
+
208
234
< ExamplesNav />
235
+
209
236
< div
210
237
data-tauri-drag-region
211
238
className = "inline-flex h-full w-full justify-end"
212
239
>
213
- < div className = "pr-3" >
240
+ { /* <div className="pr-3">
214
241
<ModeToggle />
215
- </ div >
242
+ </div> */ }
216
243
217
244
< Button
218
245
onClick = { minimizeWindow }
0 commit comments