refactor: update sidebar layout, branding, and navigation structure with categorized menu groups and header user profile

This commit is contained in:
Yoga Pangestu 2026-04-12 22:27:56 +07:00
parent b9429778f7
commit 33ad844975
4 changed files with 22 additions and 29 deletions

View File

@ -1,14 +1,9 @@
import AppLogoIcon from '@/components/app-logo-icon';
export default function AppLogo() {
return (
<>
<div className="flex aspect-square size-8 items-center justify-center rounded-md bg-sidebar-primary text-sidebar-primary-foreground">
<AppLogoIcon className="size-5 fill-current text-white dark:text-black" />
</div>
<div className="ml-1 grid flex-1 text-left text-sm">
<span className="mb-0.5 truncate leading-tight font-semibold">
Laravel Starter Kit
VN Grup
</span>
</div>
</>

View File

@ -1,3 +1,4 @@
import { NavUser } from '@/components/nav-user';
import { Breadcrumbs } from '@/components/breadcrumbs';
import { SidebarTrigger } from '@/components/ui/sidebar';
import type { BreadcrumbItem as BreadcrumbItemType } from '@/types';
@ -8,11 +9,14 @@ export function AppSidebarHeader({
breadcrumbs?: BreadcrumbItemType[];
}) {
return (
<header className="flex h-16 shrink-0 items-center gap-2 border-b border-sidebar-border/50 px-6 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4">
<header className="flex h-16 shrink-0 items-center justify-between gap-2 border-b border-sidebar-border/50 px-6 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4">
<div className="flex items-center gap-2">
<SidebarTrigger className="-ml-1" />
<Breadcrumbs breadcrumbs={breadcrumbs} />
</div>
<div className="flex items-center gap-2">
<NavUser />
</div>
</header>
);
}

View File

@ -1,13 +1,10 @@
import { Link } from '@inertiajs/react';
import { BookOpen, FolderGit2, LayoutGrid } from 'lucide-react';
import { LayoutGrid, List } from 'lucide-react';
import AppLogo from '@/components/app-logo';
import { NavFooter } from '@/components/nav-footer';
import { NavMain } from '@/components/nav-main';
import { NavUser } from '@/components/nav-user';
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
@ -24,16 +21,11 @@ const mainNavItems: NavItem[] = [
},
];
const footerNavItems: NavItem[] = [
const masterNavItems: NavItem[] = [
{
title: 'Repository',
href: 'https://github.com/laravel/react-starter-kit',
icon: FolderGit2,
},
{
title: 'Documentation',
href: 'https://laravel.com/docs/starter-kits#react',
icon: BookOpen,
title: 'Kategori',
href: dashboard(),
icon: List,
},
];
@ -53,13 +45,9 @@ export function AppSidebar() {
</SidebarHeader>
<SidebarContent>
<NavMain items={mainNavItems} />
<NavMain items={mainNavItems} label='Platform' />
<NavMain items={masterNavItems} label='Master Data' />
</SidebarContent>
<SidebarFooter>
<NavFooter items={footerNavItems} className="mt-auto" />
<NavUser />
</SidebarFooter>
</Sidebar>
);
}

View File

@ -9,12 +9,18 @@ import {
import { useCurrentUrl } from '@/hooks/use-current-url';
import type { NavItem } from '@/types';
export function NavMain({ items = [] }: { items: NavItem[] }) {
export function NavMain({
items = [],
label,
}: {
items: NavItem[];
label?: string;
}) {
const { isCurrentUrl } = useCurrentUrl();
return (
<SidebarGroup className="px-2 py-0">
<SidebarGroupLabel>Platform</SidebarGroupLabel>
<SidebarGroup className="px-2 py-1">
<SidebarGroupLabel>{label}</SidebarGroupLabel>
<SidebarMenu>
{items.map((item) => (
<SidebarMenuItem key={item.title}>