Files
vito/resources/js/layouts/server/layout.tsx
Saeed Vaziry b8ba83949b projects
2025-05-15 14:23:26 +03:00

103 lines
1.9 KiB
TypeScript

import { type NavItem } from '@/types';
import {
ChartPieIcon,
ClockIcon,
CogIcon,
DatabaseIcon,
FlameIcon,
FolderOpenIcon,
HomeIcon,
KeyIcon,
ListEndIcon,
LogsIcon,
MousePointerClickIcon,
Settings2Icon,
TerminalSquareIcon,
} from 'lucide-react';
import { ReactNode } from 'react';
import { Server } from '@/types/server';
import ServerHeader from '@/pages/servers/components/header';
import Layout from '@/layouts/app/layout';
export default function ServerLayout({ server, children }: { server: Server; children: ReactNode }) {
// When server-side rendering, we only render the layout on the client...
if (typeof window === 'undefined') {
return null;
}
const sidebarNavItems: NavItem[] = [
{
title: 'Overview',
href: route('servers.show', { server: server.id }),
icon: HomeIcon,
},
{
title: 'Databases',
href: '#',
icon: DatabaseIcon,
},
{
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,
},
];
return (
<Layout secondNavItems={sidebarNavItems} secondNavTitle={server.name}>
<ServerHeader server={server} />
<div>{children}</div>
</Layout>
);
}