Files
Rental-operations-platform/src/app/[locale]/[slug]/page.tsx
T
2026-06-25 19:06:59 -04:00

71 lines
2.2 KiB
TypeScript

import { StateAction, StateActions, StateShell } from '@/components/app-shell/StateShell';
import {
isLocale,
localizedPath,
routeIdFromSlug,
type Locale,
type RouteId,
} from '@/lib/localization/config';
import { getMessages, type ShellMessages } from '@/lib/localization/messages';
import { buildLocalizedMetadata } from '@/lib/metadata/build-metadata';
import type { Metadata } from 'next';
import { notFound } from 'next/navigation';
interface PendingRouteProps {
params: Promise<{ locale: string; slug: string }>;
}
function routeLabel(messages: ShellMessages, routeId: RouteId): string {
const labels = messages.footer.links;
switch (routeId) {
case 'login':
return labels.login;
case 'privacy':
return labels.privacy;
case 'terms':
return labels.terms;
case 'accessibility':
return labels.accessibility;
case 'home':
return 'RentalDriveGo';
}
}
async function resolveParams(params: PendingRouteProps['params']) {
const { locale: localeValue, slug } = await params;
if (!isLocale(localeValue)) notFound();
const routeId = routeIdFromSlug(localeValue, slug);
if (!routeId || routeId === 'home') notFound();
return { locale: localeValue as Locale, routeId };
}
export async function generateMetadata({ params }: PendingRouteProps): Promise<Metadata> {
const { locale, routeId } = await resolveParams(params);
const messages = getMessages(locale).shell;
const label = routeLabel(messages, routeId);
return buildLocalizedMetadata({
locale,
routeId,
title: `${label} | ${messages.metadata.pendingTitle}`,
description: messages.metadata.pendingDescription,
indexable: false,
});
}
export default async function PendingRoute({ params }: PendingRouteProps) {
const { locale, routeId } = await resolveParams(params);
const messages = getMessages(locale).shell;
const label = routeLabel(messages, routeId);
return (
<StateShell
title={`${label}: ${messages.states.pendingTitle}`}
body={messages.states.pendingBody}
>
<StateActions>
<StateAction href={localizedPath('home', locale)}>{messages.states.backHome}</StateAction>
</StateActions>
</StateShell>
);
}