diff --git a/app/landing/landing-view.tsx b/app/landing/landing-view.tsx
new file mode 100644
index 0000000..2dcd613
--- /dev/null
+++ b/app/landing/landing-view.tsx
@@ -0,0 +1,162 @@
+"use client"
+
+import Image from "next/image"
+import Link from "next/link"
+import { motion, useReducedMotion } from "motion/react"
+import { Instrument_Serif } from "next/font/google"
+
+import { Logo } from "@/components/logo"
+import { buttonVariants } from "@/components/ui/button"
+import { cn } from "@/lib/utils"
+import { ShaderGradient } from "@/registry/shader-gradient/shader-gradient"
+
+const display = Instrument_Serif({
+ subsets: ["latin"],
+ weight: "400",
+ variable: "--font-landing-display",
+})
+
+const ease = [0.22, 1, 0.36, 1] as const
+
+export function LandingView() {
+ const reduceMotion = useReducedMotion()
+
+ const initial = reduceMotion ? false : { opacity: 0, y: 18 }
+ const animate = { opacity: 1, y: 0 }
+
+ return (
+
+
+
+
+
+
+
+
+
+ 23rd
+
+
+
+
+
+
+
+ 23rd
+
+
+
+ Opinionated components for shippers
+
+
+
+ A shadcn registry with strong defaults — install what you need,
+ own the source, and ship from a sharper baseline.
+
+
+
+
+ Read the docs
+
+
+ Get started
+
+
+
+
+
+
+
+
+ Copy in. Ship out.
+
+
+ Backgrounds, footers, and interaction pieces that already feel
+ finished — without a kitchen-sink design system.
+
+
+
+
+
+
+
+
+
+
+ )
+}
diff --git a/app/landing/page.tsx b/app/landing/page.tsx
new file mode 100644
index 0000000..0069195
--- /dev/null
+++ b/app/landing/page.tsx
@@ -0,0 +1,17 @@
+import type { Metadata } from "next"
+
+import { LandingView } from "./landing-view"
+
+export const metadata: Metadata = {
+ title: "23rd",
+ description:
+ "Opinionated UI components for shippers — a shadcn registry. Draft site landing (not the production homepage).",
+ robots: {
+ index: false,
+ follow: false,
+ },
+}
+
+export default function LandingPage() {
+ return
+}
diff --git a/app/robots.ts b/app/robots.ts
index 2626972..4e89fd0 100644
--- a/app/robots.ts
+++ b/app/robots.ts
@@ -5,6 +5,8 @@ export default function robots(): MetadataRoute.Robots {
rules: {
userAgent: "*",
allow: "/",
+ // Draft site landing — not the production homepage yet
+ disallow: ["/landing"],
},
sitemap: "https://23rd.dev/sitemap.xml",
}