33 lines
1011 B
TypeScript
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 }));
|
|
}
|
|
|