Files
ironmount/apps/client/app/lib/breadcrumbs.ts
Nicolas Meienberger 6360fe3d1d feat: app breadcrumbs
2025-09-24 18:25:31 +02:00

45 lines
1.0 KiB
TypeScript

import { useLocation, useParams } from "react-router";
export interface BreadcrumbItem {
label: string;
href?: string;
isCurrentPage?: boolean;
}
/**
* Generates breadcrumb items based on the current route
* @param pathname - Current pathname from useLocation
* @param params - Route parameters from useParams
* @returns Array of breadcrumb items
*/
export function generateBreadcrumbs(pathname: string, params: Record<string, string | undefined>): BreadcrumbItem[] {
const breadcrumbs: BreadcrumbItem[] = [];
// Always start with Home
breadcrumbs.push({
label: "Volumes",
href: "/",
isCurrentPage: pathname === "/",
});
// Handle volume details page
if (pathname.startsWith("/volumes/") && params.name) {
breadcrumbs.push({
label: params.name,
isCurrentPage: true,
});
}
return breadcrumbs;
}
/**
* Hook to get breadcrumb data for the current route
*/
export function useBreadcrumbs(): BreadcrumbItem[] {
const location = useLocation();
const params = useParams();
return generateBreadcrumbs(location.pathname, params);
}