DoSoapCalc/frontend/app/[calculator]/page.tsx

33 lines
1011 B
TypeScript

// app/[calculator]/page.tsx
// Динамический роут для калькуляторов
import DynamicCalculator from '@/components/DynamicCalculator';
import { getCalculator } from '@/lib/calculators';
import { notFound } from 'next/navigation';
interface PageProps {
params: Promise<{
calculator: string;
}>;
}
export default async function CalculatorPage({ params }: PageProps) {
const { calculator } = await params;
const calculatorModule = getCalculator(calculator);
if (!calculatorModule) {
notFound();
}
return <DynamicCalculator calculatorType={calculator} />;
}
// Генерация статических путей (для Next.js static export)
export async function generateStaticParams() {
// Экспортируем все доступные калькуляторы
const { getAvailableCalculators } = await import('@/lib/calculators');
const calculators = getAvailableCalculators();
return calculators.map((calc) => ({ calculator: calc }));
}