mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-11-03 03:18:52 +00:00
Squash merge of shadcn-ui/ui main branch into hanzo/ui, bringing in: - [email protected] through [email protected] releases - New apps/v4 directory structure - Registry system improvements and MCP server - Framework support (Vue, Svelte, React Native) - New templates (vite-app, monorepo-next, laravel) - Zod 4 compatibility (scoped override for zod@>4) - Test fixture corrections for alias resolution All 867 merge conflicts resolved preserving Hanzo customizations. 1020/1020 shadcn tests pass.
55 lines
1.1 KiB
TypeScript
55 lines
1.1 KiB
TypeScript
import { type Metadata } from "next"
|
|
import { notFound } from "next/navigation"
|
|
|
|
import { componentRegistry } from "@/app/(internal)/sink/component-registry"
|
|
|
|
export const dynamic = "force-static"
|
|
export const revalidate = false
|
|
|
|
export async function generateStaticParams() {
|
|
return Object.keys(componentRegistry).map((name) => ({
|
|
name,
|
|
}))
|
|
}
|
|
|
|
export async function generateMetadata({
|
|
params,
|
|
}: {
|
|
params: Promise<{ name: string }>
|
|
}): Promise<Metadata> {
|
|
const { name } = await params
|
|
const component = componentRegistry[name as keyof typeof componentRegistry]
|
|
|
|
if (!component) {
|
|
return {
|
|
title: "Component Not Found",
|
|
}
|
|
}
|
|
|
|
return {
|
|
title: `${component.name} - Kitchen Sink`,
|
|
description: `Demo page for ${component.name} component`,
|
|
}
|
|
}
|
|
|
|
export default async function ComponentPage({
|
|
params,
|
|
}: {
|
|
params: Promise<{ name: string }>
|
|
}) {
|
|
const { name } = await params
|
|
const component = componentRegistry[name as keyof typeof componentRegistry]
|
|
|
|
if (!component) {
|
|
notFound()
|
|
}
|
|
|
|
const Component = component.component
|
|
|
|
return (
|
|
<div className="p-6">
|
|
<Component />
|
|
</div>
|
|
)
|
|
}
|