Skip to content

Commit e64ece2

Browse files
committed
feat: first change using copilot workspace
1 parent c4b9cf5 commit e64ece2

File tree

125 files changed

+204
-2484
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

125 files changed

+204
-2484
lines changed

components.json

Lines changed: 0 additions & 20 deletions
This file was deleted.

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

resources/css/app.css

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
@tailwind base;
2-
@tailwind components;
3-
@tailwind utilities;
1+
@import 'vuetify/styles';
2+
@import 'vuetify/src/styles/main.sass';
43

54
body,
65
html {

resources/js/app.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import type { DefineComponent } from 'vue';
66
import { createApp, h } from 'vue';
77
import { ZiggyVue } from 'ziggy-js';
88
import { initializeTheme } from './composables/useAppearance';
9+
import { createVuetify } from 'vuetify';
10+
import 'vuetify/styles';
911

1012
// Extend ImportMeta interface for Vite...
1113
declare module 'vite/client' {
@@ -22,13 +24,16 @@ declare module 'vite/client' {
2224

2325
const appName = import.meta.env.VITE_APP_NAME || 'Laravel';
2426

27+
const vuetify = createVuetify();
28+
2529
createInertiaApp({
2630
title: (title) => `${title} - ${appName}`,
2731
resolve: (name) => resolvePageComponent(`./pages/${name}.vue`, import.meta.glob<DefineComponent>('./pages/**/*.vue')),
2832
setup({ el, App, props, plugin }) {
2933
createApp({ render: () => h(App, props) })
3034
.use(plugin)
3135
.use(ZiggyVue)
36+
.use(vuetify)
3237
.mount(el);
3338
},
3439
progress: {
Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script setup lang="ts">
2-
import { SidebarInset } from '@/components/ui/sidebar';
32
import { computed } from 'vue';
43
54
interface Props {
@@ -12,10 +11,10 @@ const className = computed(() => props.class);
1211
</script>
1312

1413
<template>
15-
<SidebarInset v-if="props.variant === 'sidebar'" :class="className">
14+
<v-main v-if="props.variant === 'sidebar'" :class="className">
1615
<slot />
17-
</SidebarInset>
18-
<main v-else class="mx-auto flex h-full w-full max-w-7xl flex-1 flex-col gap-4 rounded-xl" :class="className">
16+
</v-main>
17+
<v-main v-else class="mx-auto flex h-full w-full max-w-7xl flex-1 flex-col gap-4 rounded-xl" :class="className">
1918
<slot />
20-
</main>
19+
</v-main>
2120
</template>

resources/js/components/AppHeader.vue

Lines changed: 43 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,11 @@
22
import AppLogo from '@/components/AppLogo.vue';
33
import AppLogoIcon from '@/components/AppLogoIcon.vue';
44
import 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';
175
import UserMenuContent from '@/components/UserMenuContent.vue';
186
import { getInitials } from '@/composables/useInitials';
197
import type { BreadcrumbItem, NavItem } from '@/types';
208
import { 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';
2210
import { computed } from 'vue';
2311
2412
interface 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">

resources/js/components/AppLogo.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import AppLogoIcon from '@/components/AppLogoIcon.vue';
33
</script>
44

55
<template>
6-
<div class="flex aspect-square size-8 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground">
7-
<AppLogoIcon class="size-5 fill-current text-white dark:text-black" />
8-
</div>
6+
<VAvatar class="size-8">
7+
<VImg src="path/to/logo.png" alt="App Logo" />
8+
</VAvatar>
99
<div class="ml-1 grid flex-1 text-left text-sm">
1010
<span class="mb-0.5 truncate font-semibold leading-none">Laravel Starter Kit</span>
1111
</div>

resources/js/components/AppLogoIcon.vue

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@ defineProps<Props>();
1313
</script>
1414

1515
<template>
16-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 42" :class="className" v-bind="$attrs">
17-
<path
18-
fill="currentColor"
19-
fill-rule="evenodd"
20-
clip-rule="evenodd"
21-
d="M17.2 5.633 8.6.855 0 5.633v26.51l16.2 9 16.2-9v-8.442l7.6-4.223V9.856l-8.6-4.777-8.6 4.777V18.3l-5.6 3.111V5.633ZM38 18.301l-5.6 3.11v-6.157l5.6-3.11V18.3Zm-1.06-7.856-5.54 3.078-5.54-3.079 5.54-3.078 5.54 3.079ZM24.8 18.3v-6.157l5.6 3.111v6.158L24.8 18.3Zm-1 1.732 5.54 3.078-13.14 7.302-5.54-3.078 13.14-7.3v-.002Zm-16.2 7.89 7.6 4.222V38.3L2 30.966V7.92l5.6 3.111v16.892ZM8.6 9.3 3.06 6.222 8.6 3.143l5.54 3.08L8.6 9.3Zm21.8 15.51-13.2 7.334V38.3l13.2-7.334v-6.156ZM9.6 11.034l5.6-3.11v14.6l-5.6 3.11v-14.6Z"
22-
/>
23-
</svg>
16+
<VIcon :class="className" v-bind="$attrs">
17+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 42">
18+
<path
19+
fill="currentColor"
20+
fill-rule="evenodd"
21+
clip-rule="evenodd"
22+
d="M17.2 5.633 8.6.855 0 5.633v26.51l16.2 9 16.2-9v-8.442l7.6-4.223V9.856l-8.6-4.777-8.6 4.777V18.3l-5.6 3.111V5.633ZM38 18.301l-5.6 3.11v-6.157l5.6-3.11V18.3Zm-1.06-7.856-5.54 3.078-5.54-3.079 5.54-3.078 5.54 3.079ZM24.8 18.3v-6.157l5.6 3.111v6.158L24.8 18.3Zm-1 1.732 5.54 3.078-13.14 7.302-5.54-3.078 13.14-7.3v-.002Zm-16.2 7.89 7.6 4.222V38.3L2 30.966V7.92l5.6 3.111v16.892ZM8.6 9.3 3.06 6.222 8.6 3.143l5.54 3.08L8.6 9.3Zm21.8 15.51-13.2 7.334V38.3l13.2-7.334v-6.156ZM9.6 11.034l5.6-3.11v14.6l-5.6 3.11v-14.6Z"
23+
/>
24+
</svg>
25+
</VIcon>
2426
</template>

resources/js/components/AppShell.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script setup lang="ts">
2-
import { SidebarProvider } from '@/components/ui/sidebar';
32
import { onMounted, ref } from 'vue';
43
54
interface Props {
@@ -21,10 +20,10 @@ const handleSidebarChange = (open: boolean) => {
2120
</script>
2221

2322
<template>
24-
<div v-if="variant === 'header'" class="flex min-h-screen w-full flex-col">
23+
<VApp v-if="variant === 'header'" class="flex min-h-screen w-full flex-col">
2524
<slot />
26-
</div>
27-
<SidebarProvider v-else :default-open="isOpen" :open="isOpen" @update:open="handleSidebarChange">
25+
</VApp>
26+
<v-navigation-drawer v-else v-model="isOpen" @update:model="handleSidebarChange">
2827
<slot />
29-
</SidebarProvider>
28+
</v-navigation-drawer>
3029
</template>

resources/js/components/AppSidebar.vue

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import NavFooter from '@/components/NavFooter.vue';
33
import NavMain from '@/components/NavMain.vue';
44
import NavUser from '@/components/NavUser.vue';
5-
import { Sidebar, SidebarContent, SidebarFooter, SidebarHeader, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from '@/components/ui/sidebar';
65
import { type NavItem } from '@/types';
76
import { Link } from '@inertiajs/vue3';
87
import { BookOpen, Folder, LayoutGrid } from 'lucide-vue-next';
@@ -31,27 +30,25 @@ const footerNavItems: NavItem[] = [
3130
</script>
3231

3332
<template>
34-
<Sidebar collapsible="icon" variant="inset">
35-
<SidebarHeader>
36-
<SidebarMenu>
37-
<SidebarMenuItem>
38-
<SidebarMenuButton size="lg" as-child>
39-
<Link :href="route('dashboard')">
40-
<AppLogo />
41-
</Link>
42-
</SidebarMenuButton>
43-
</SidebarMenuItem>
44-
</SidebarMenu>
45-
</SidebarHeader>
33+
<VNavigationDrawer app>
34+
<VList>
35+
<VListItem>
36+
<VListItemIcon>
37+
<Link :href="route('dashboard')">
38+
<AppLogo />
39+
</Link>
40+
</VListItemIcon>
41+
</VListItem>
42+
</VList>
4643

47-
<SidebarContent>
44+
<VList>
4845
<NavMain :items="mainNavItems" />
49-
</SidebarContent>
46+
</VList>
5047

51-
<SidebarFooter>
48+
<VList>
5249
<NavFooter :items="footerNavItems" />
5350
<NavUser />
54-
</SidebarFooter>
55-
</Sidebar>
51+
</VList>
52+
</VNavigationDrawer>
5653
<slot />
5754
</template>

0 commit comments

Comments
 (0)