konobangu/apps/webui/src/infra/routes/utils.ts

41 lines
980 B
TypeScript

import { guardRouteIndexAsNotFound } from '@/components/layout/app-not-found';
import type { RouteStateDataOption } from '@/infra/routes/traits';
import { Outlet, type RouteOptions } from '@tanstack/react-router';
export interface BuildVirtualBranchRouteOptions {
title: string;
}
export function buildVirtualBranchRouteOptions(
options: BuildVirtualBranchRouteOptions
): {
beforeLoad: RouteOptions['beforeLoad'];
staticData: RouteStateDataOption;
component: RouteOptions['component'];
} {
return {
beforeLoad: guardRouteIndexAsNotFound,
staticData: {
breadcrumb: {
label: options.title,
link: undefined,
},
} satisfies RouteStateDataOption,
component: Outlet,
};
}
export interface BuildLeafRouteStaticDataOptions {
title: string;
}
export function buildLeafRouteStaticData(
options: BuildLeafRouteStaticDataOptions
): RouteStateDataOption {
return {
breadcrumb: {
label: options.title,
},
};
}