22import AppLogo from ' @/components/AppLogo.vue' ;
33import AppLogoIcon from ' @/components/AppLogoIcon.vue' ;
44import Breadcrumbs from ' @/components/Breadcrumbs.vue' ;
5- import { Avatar , AvatarFallback , AvatarImage } from ' @/components/ui/avatar' ;
6- import { Button } from ' @/components/ui/button' ;
7- import { DropdownMenu , DropdownMenuContent , DropdownMenuTrigger } from ' @/components/ui/dropdown-menu' ;
8- import {
9- NavigationMenu ,
10- NavigationMenuItem ,
11- NavigationMenuLink ,
12- NavigationMenuList ,
13- navigationMenuTriggerStyle ,
14- } from ' @/components/ui/navigation-menu' ;
15- import { Sheet , SheetContent , SheetHeader , SheetTitle , SheetTrigger } from ' @/components/ui/sheet' ;
16- import { Tooltip , TooltipContent , TooltipProvider , TooltipTrigger } from ' @/components/ui/tooltip' ;
175import UserMenuContent from ' @/components/UserMenuContent.vue' ;
186import { getInitials } from ' @/composables/useInitials' ;
197import type { BreadcrumbItem , NavItem } from ' @/types' ;
208import { Link , usePage } from ' @inertiajs/vue3' ;
21- import { BookOpen , Folder , LayoutGrid , Menu , Search } from ' lucide-vue-next ' ;
9+ import { BookOpen , Folder , LayoutGrid , Menu , Search } from ' vuetify/lib/components ' ;
2210import { computed } from ' vue' ;
2311
2412interface Props {
@@ -62,50 +50,13 @@ const rightNavItems: NavItem[] = [
6250
6351<template >
6452 <div >
65- <div class = " border-b border-sidebar-border/80 " >
66- <div class = " mx-auto flex h-16 items-center px-4 md:max-w-7xl " >
53+ <v-app-bar app >
54+ <v-toolbar >
6755 <!-- Mobile Menu -->
6856 <div class =" lg:hidden" >
69- <Sheet >
70- <SheetTrigger :as-child =" true" >
71- <Button variant =" ghost" size =" icon" class =" mr-2 h-9 w-9" >
72- <Menu class =" h-5 w-5" />
73- </Button >
74- </SheetTrigger >
75- <SheetContent side =" left" class =" w-[300px] p-6" >
76- <SheetTitle class =" sr-only" >Navigation Menu</SheetTitle >
77- <SheetHeader class =" flex justify-start text-left" >
78- <AppLogoIcon class =" size-6 fill-current text-black dark:text-white" />
79- </SheetHeader >
80- <div class =" flex h-full flex-1 flex-col justify-between space-y-4 py-6" >
81- <nav class =" -mx-3 space-y-1" >
82- <Link
83- v-for =" item in mainNavItems"
84- :key =" item.title"
85- :href =" item.href"
86- class =" flex items-center gap-x-3 rounded-lg px-3 py-2 text-sm font-medium hover:bg-accent"
87- :class =" activeItemStyles(item.href)"
88- >
89- <component v-if =" item.icon" :is =" item.icon" class =" h-5 w-5" />
90- {{ item.title }}
91- </Link >
92- </nav >
93- <div class =" flex flex-col space-y-4" >
94- <a
95- v-for =" item in rightNavItems"
96- :key =" item.title"
97- :href =" item.href"
98- target =" _blank"
99- rel =" noopener noreferrer"
100- class =" flex items-center space-x-2 text-sm font-medium"
101- >
102- <component v-if =" item.icon" :is =" item.icon" class =" h-5 w-5" />
103- <span >{{ item.title }}</span >
104- </a >
105- </div >
106- </div >
107- </SheetContent >
108- </Sheet >
57+ <v-btn icon @click =" drawer = !drawer" >
58+ <v-icon >mdi-menu</v-icon >
59+ </v-btn >
10960 </div >
11061
11162 <Link :href =" route('dashboard')" class =" flex items-center gap-x-2" >
@@ -114,75 +65,54 @@ const rightNavItems: NavItem[] = [
11465
11566 <!-- Desktop Menu -->
11667 <div class =" hidden h-full lg:flex lg:flex-1" >
117- <NavigationMenu class =" ml-10 flex h-full items-stretch" >
118- <NavigationMenuList class =" flex h-full items-stretch space-x-2" >
119- <NavigationMenuItem v-for =" (item, index) in mainNavItems" :key =" index" class =" relative flex h-full items-center" >
120- <Link :href =" item.href" >
121- <NavigationMenuLink
122- :class =" [navigationMenuTriggerStyle(), activeItemStyles(item.href), 'h-9 cursor-pointer px-3']"
123- >
124- <component v-if =" item.icon" :is =" item.icon" class =" mr-2 h-4 w-4" />
125- {{ item.title }}
126- </NavigationMenuLink >
127- </Link >
128- <div
129- v-if =" isCurrentRoute(item.href)"
130- class =" absolute bottom-0 left-0 h-0.5 w-full translate-y-px bg-black dark:bg-white"
131- ></div >
132- </NavigationMenuItem >
133- </NavigationMenuList >
134- </NavigationMenu >
68+ <v-toolbar-items class =" ml-10 flex h-full items-stretch" >
69+ <v-btn
70+ v-for =" (item, index) in mainNavItems"
71+ :key =" index"
72+ :href =" item.href"
73+ class =" relative flex h-full items-center"
74+ :class =" [activeItemStyles(item.href), 'h-9 cursor-pointer px-3']"
75+ >
76+ <v-icon v-if =" item.icon" >{{ item.icon }}</v-icon >
77+ {{ item.title }}
78+ </v-btn >
79+ </v-toolbar-items >
13580 </div >
13681
13782 <div class =" ml-auto flex items-center space-x-2" >
13883 <div class =" relative flex items-center space-x-1" >
139- <Button variant = " ghost " size = " icon " class = " group h-9 w-9 cursor-pointer " >
140- <Search class = " size-5 opacity-80 group-hover:opacity-100 " / >
141- </Button >
84+ <v-btn icon >
85+ <v-icon >mdi-magnify</ v-icon >
86+ </v-btn >
14287
14388 <div class =" hidden space-x-1 lg:flex" >
144- <template v-for =" item in rightNavItems " :key =" item .title " >
145- <TooltipProvider :delay-duration =" 0" >
146- <Tooltip >
147- <TooltipTrigger >
148- <Button variant =" ghost" size =" icon" as-child class =" group h-9 w-9 cursor-pointer" >
149- <a :href =" item.href" target =" _blank" rel =" noopener noreferrer" >
150- <span class =" sr-only" >{{ item.title }}</span >
151- <component :is =" item.icon" class =" size-5 opacity-80 group-hover:opacity-100" />
152- </a >
153- </Button >
154- </TooltipTrigger >
155- <TooltipContent >
156- <p >{{ item.title }}</p >
157- </TooltipContent >
158- </Tooltip >
159- </TooltipProvider >
160- </template >
89+ <v-tooltip v-for =" item in rightNavItems" :key =" item.title" >
90+ <template v-slot :activator =" { on , attrs } " >
91+ <v-btn icon v-bind =" attrs" v-on =" on" :href =" item.href" target =" _blank" rel =" noopener noreferrer" >
92+ <v-icon >{{ item.icon }}</v-icon >
93+ </v-btn >
94+ </template >
95+ <span >{{ item.title }}</span >
96+ </v-tooltip >
16197 </div >
16298 </div >
16399
164- <DropdownMenu >
165- <DropdownMenuTrigger :as-child =" true" >
166- <Button
167- variant =" ghost"
168- size =" icon"
169- class =" relative size-10 w-auto rounded-full p-1 focus-within:ring-2 focus-within:ring-primary"
170- >
171- <Avatar class =" size-8 overflow-hidden rounded-full" >
172- <AvatarImage v-if =" auth.user.avatar" :src =" auth.user.avatar" :alt =" auth.user.name" />
173- <AvatarFallback class =" rounded-lg bg-neutral-200 font-semibold text-black dark:bg-neutral-700 dark:text-white" >
174- {{ getInitials(auth.user?.name) }}
175- </AvatarFallback >
176- </Avatar >
177- </Button >
178- </DropdownMenuTrigger >
179- <DropdownMenuContent align =" end" class =" w-56" >
100+ <v-menu >
101+ <template v-slot :activator =" { on , attrs } " >
102+ <v-btn icon v-bind =" attrs" v-on =" on" >
103+ <v-avatar >
104+ <v-img v-if =" auth.user.avatar" :src =" auth.user.avatar" :alt =" auth.user.name" />
105+ <span v-else >{{ getInitials(auth.user?.name) }}</span >
106+ </v-avatar >
107+ </v-btn >
108+ </template >
109+ <v-list >
180110 <UserMenuContent :user =" auth.user" />
181- </DropdownMenuContent >
182- </DropdownMenu >
111+ </v-list >
112+ </v-menu >
183113 </div >
184- </div >
185- </div >
114+ </v-toolbar >
115+ </v-app-bar >
186116
187117 <div v-if =" props.breadcrumbs.length > 1" class =" flex w-full border-b border-sidebar-border/70" >
188118 <div class =" mx-auto flex h-12 w-full items-center justify-start px-4 text-neutral-500 md:max-w-7xl" >
0 commit comments