mirror of
https://github.com/vitodeploy/vito.git
synced 2025-07-03 06:56:15 +00:00
#591 - databases
This commit is contained in:
59
resources/js/layouts/database/layout.tsx
Normal file
59
resources/js/layouts/database/layout.tsx
Normal file
@ -0,0 +1,59 @@
|
||||
import { Server } from '@/types/server';
|
||||
import { ReactNode } from 'react';
|
||||
import ServerLayout from '@/layouts/server/layout';
|
||||
import Container from '@/components/container';
|
||||
import { NavigationMenu, NavigationMenuLink, NavigationMenuList } from '@/components/ui/navigation-menu';
|
||||
import type { NavItem } from '@/types';
|
||||
import { CloudUploadIcon, DatabaseIcon, UsersIcon } from 'lucide-react';
|
||||
import { Link } from '@inertiajs/react';
|
||||
|
||||
export default function DatabaseLayout({ server, children }: { server: Server; children: ReactNode }) {
|
||||
const navItems: NavItem[] = [
|
||||
{
|
||||
title: 'Databases',
|
||||
href: route('databases', { server: server.id }),
|
||||
icon: DatabaseIcon,
|
||||
},
|
||||
{
|
||||
title: 'Users',
|
||||
href: '/database-users',
|
||||
icon: UsersIcon,
|
||||
},
|
||||
{
|
||||
title: 'Backups',
|
||||
href: '/backups',
|
||||
icon: CloudUploadIcon,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<ServerLayout server={server}>
|
||||
<Container className="max-w-5xl">
|
||||
<div className="bg-muted/10 inline-flex rounded-md border">
|
||||
<NavigationMenu className="flex">
|
||||
<NavigationMenuList>
|
||||
{navItems.map((item: NavItem) => (
|
||||
<NavigationMenuLink
|
||||
key={item.title}
|
||||
asChild
|
||||
className={
|
||||
(item.onlyActivePath ? window.location.href === item.href : window.location.href.startsWith(item.href)) ? 'bg-muted' : ''
|
||||
}
|
||||
>
|
||||
<Link href={item.href}>
|
||||
<div className="flex items-center gap-2">
|
||||
{item.icon && <item.icon />}
|
||||
{item.title}
|
||||
</div>
|
||||
</Link>
|
||||
</NavigationMenuLink>
|
||||
))}
|
||||
</NavigationMenuList>
|
||||
</NavigationMenu>
|
||||
</div>
|
||||
</Container>
|
||||
|
||||
{children}
|
||||
</ServerLayout>
|
||||
);
|
||||
}
|
@ -1,19 +1,5 @@
|
||||
import { type NavItem } from '@/types';
|
||||
import {
|
||||
ChartPieIcon,
|
||||
ClockIcon,
|
||||
CogIcon,
|
||||
DatabaseIcon,
|
||||
FlameIcon,
|
||||
FolderOpenIcon,
|
||||
HomeIcon,
|
||||
KeyIcon,
|
||||
ListEndIcon,
|
||||
LogsIcon,
|
||||
MousePointerClickIcon,
|
||||
Settings2Icon,
|
||||
TerminalSquareIcon,
|
||||
} from 'lucide-react';
|
||||
import { CloudUploadIcon, DatabaseIcon, HomeIcon, UsersIcon } from 'lucide-react';
|
||||
import { ReactNode } from 'react';
|
||||
import { Server } from '@/types/server';
|
||||
import ServerHeader from '@/pages/servers/components/header';
|
||||
@ -28,68 +14,81 @@ export default function ServerLayout({ server, children }: { server: Server; chi
|
||||
{
|
||||
title: 'Overview',
|
||||
href: route('servers.show', { server: server.id }),
|
||||
onlyActivePath: route('servers.show', { server: server.id }),
|
||||
icon: HomeIcon,
|
||||
},
|
||||
{
|
||||
title: 'Databases',
|
||||
href: '#',
|
||||
title: 'Database',
|
||||
href: route('databases', { server: server.id }),
|
||||
icon: DatabaseIcon,
|
||||
children: [
|
||||
{
|
||||
title: 'Databases',
|
||||
href: route('databases', { server: server.id }),
|
||||
icon: DatabaseIcon,
|
||||
},
|
||||
{
|
||||
title: 'Users',
|
||||
href: '/users',
|
||||
icon: UsersIcon,
|
||||
},
|
||||
{
|
||||
title: 'Backups',
|
||||
href: '/backups',
|
||||
icon: CloudUploadIcon,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Sites',
|
||||
href: '#',
|
||||
icon: MousePointerClickIcon,
|
||||
},
|
||||
{
|
||||
title: 'File Manager',
|
||||
href: '#',
|
||||
icon: FolderOpenIcon,
|
||||
},
|
||||
{
|
||||
title: 'Firewall',
|
||||
href: '#',
|
||||
icon: FlameIcon,
|
||||
},
|
||||
{
|
||||
title: 'CronJobs',
|
||||
href: '#',
|
||||
icon: ClockIcon,
|
||||
},
|
||||
{
|
||||
title: 'Workers',
|
||||
href: '#',
|
||||
icon: ListEndIcon,
|
||||
},
|
||||
{
|
||||
title: 'SSH Keys',
|
||||
href: '#',
|
||||
icon: KeyIcon,
|
||||
},
|
||||
{
|
||||
title: 'Services',
|
||||
href: '#',
|
||||
icon: CogIcon,
|
||||
},
|
||||
{
|
||||
title: 'Metrics',
|
||||
href: '#',
|
||||
icon: ChartPieIcon,
|
||||
},
|
||||
{
|
||||
title: 'Console',
|
||||
href: '#',
|
||||
icon: TerminalSquareIcon,
|
||||
},
|
||||
{
|
||||
title: 'Logs',
|
||||
href: '#',
|
||||
icon: LogsIcon,
|
||||
},
|
||||
{
|
||||
title: 'Settings',
|
||||
href: '#',
|
||||
icon: Settings2Icon,
|
||||
},
|
||||
// {
|
||||
// title: 'Sites',
|
||||
// href: '#',
|
||||
// icon: MousePointerClickIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Firewall',
|
||||
// href: '#',
|
||||
// icon: FlameIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'CronJobs',
|
||||
// href: '#',
|
||||
// icon: ClockIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Workers',
|
||||
// href: '#',
|
||||
// icon: ListEndIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'SSH Keys',
|
||||
// href: '#',
|
||||
// icon: KeyIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Services',
|
||||
// href: '#',
|
||||
// icon: CogIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Metrics',
|
||||
// href: '#',
|
||||
// icon: ChartPieIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Console',
|
||||
// href: '#',
|
||||
// icon: TerminalSquareIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Logs',
|
||||
// href: '#',
|
||||
// icon: LogsIcon,
|
||||
// },
|
||||
// {
|
||||
// title: 'Settings',
|
||||
// href: '#',
|
||||
// icon: Settings2Icon,
|
||||
// },
|
||||
];
|
||||
|
||||
return (
|
||||
|
Reference in New Issue
Block a user