Files
HRM-System/resources/js/components/app-sidebar-header.tsx
2026-04-13 08:16:56 +08:00

40 lines
1.9 KiB
TypeScript
Executable File

import { Breadcrumbs } from '@/components/breadcrumbs';
import { SidebarTrigger } from '@/components/ui/sidebar';
import { useLayout } from '@/contexts/LayoutContext';
import { type BreadcrumbItem as BreadcrumbItemType } from '@/types';
import { ProfileMenu } from '@/components/profile-menu';
import { LanguageSwitcher } from '@/components/language-switcher';
import { usePage, router } from '@inertiajs/react';
import { useTranslation } from 'react-i18next';
export function AppSidebarHeader({ breadcrumbs = [] }: { breadcrumbs?: BreadcrumbItemType[] }) {
const { t } = useTranslation();
const { position } = useLayout();
return (
<>
<header className="border-sidebar-border/50 flex h-14 shrink-0 items-center gap-2 border-b px-4 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-3">
<div className="flex w-full items-center justify-between">
<div className="flex items-center gap-2">
{position === 'left' && <SidebarTrigger className="-ml-1" />}
<Breadcrumbs items={breadcrumbs.map(b => ({ label: b.title, href: b.href }))} />
</div>
<div className="flex items-center gap-2">
{(usePage().props as any).isImpersonating && (
<button
onClick={() => router.post(route('impersonate.leave'))}
className="bg-red-500 text-white px-2 py-1 rounded text-xs hover:bg-red-600 cursor-pointer"
>
{t("Return Back")}
</button>
)}
<LanguageSwitcher />
<ProfileMenu />
{position === 'right' && <SidebarTrigger className="-mr-1" />}
</div>
</div>
</header>
</>
);
}