mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-06-11 09:51:40 +00:00
* feat: init * fix * fix * fix * feat * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: implement icons * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: update init command * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: dialog * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add registry:base item type * feat: rename frame to canva * fix * feat * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fi * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add all colors * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * fix * feat: add outfit font * fix * fix * fix * fix * fix * chore: changeset * fix * fix * fix * fix * fix * fix * fix * fix
80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
import { type Metadata } from "next"
|
|
import Link from "next/link"
|
|
|
|
import { Announcement } from "@/components/announcement"
|
|
import { BlocksNav } from "@/components/blocks-nav"
|
|
import {
|
|
PageActions,
|
|
PageHeader,
|
|
PageHeaderDescription,
|
|
PageHeaderHeading,
|
|
} from "@/components/page-header"
|
|
import { PageNav } from "@/components/page-nav"
|
|
import { Button } from "@/registry/new-york-v4/ui/button"
|
|
|
|
const title = "Building Blocks for the Web"
|
|
const description =
|
|
"Clean, modern building blocks. Copy and paste into your apps. Works with all React frameworks. Open Source. Free forever."
|
|
|
|
export const metadata: Metadata = {
|
|
title,
|
|
description,
|
|
openGraph: {
|
|
images: [
|
|
{
|
|
url: `/og?title=${encodeURIComponent(
|
|
title
|
|
)}&description=${encodeURIComponent(description)}`,
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
images: [
|
|
{
|
|
url: `/og?title=${encodeURIComponent(
|
|
title
|
|
)}&description=${encodeURIComponent(description)}`,
|
|
},
|
|
],
|
|
},
|
|
}
|
|
|
|
export default function BlocksLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
return (
|
|
<>
|
|
<PageHeader>
|
|
<Announcement />
|
|
<PageHeaderHeading>{title}</PageHeaderHeading>
|
|
<PageHeaderDescription>{description}</PageHeaderDescription>
|
|
<PageActions>
|
|
<Button asChild size="sm">
|
|
<a href="#blocks">Browse Blocks</a>
|
|
</Button>
|
|
<Button asChild variant="ghost" size="sm">
|
|
<Link href="/docs/blocks">Add a block</Link>
|
|
</Button>
|
|
</PageActions>
|
|
</PageHeader>
|
|
<PageNav id="blocks">
|
|
<BlocksNav />
|
|
<Button
|
|
asChild
|
|
variant="secondary"
|
|
size="sm"
|
|
className="mr-7 hidden shadow-none lg:flex"
|
|
>
|
|
<Link href="/blocks/sidebar">Browse all blocks</Link>
|
|
</Button>
|
|
</PageNav>
|
|
<div className="container-wrapper section-soft flex-1 md:py-12">
|
|
<div className="container">{children}</div>
|
|
</div>
|
|
</>
|
|
)
|
|
}
|