May 2026 Beta Release Announced
Production-Ready UI Blocks
Pre-built sections for landing pages, AI interfaces, and layouts. Each block is production-ready and fully customizable. Copy the code, drop it in your project, and ship faster.
Files
import type React from "react"
import { Plus, Settings } from "lucide-react"
import { ScrollFadeEffect } from "@/registry/delta-ui/delta/scroll-fade-effect"
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
SidebarRail,
SidebarTrigger,
} from "@/components/ui/sidebar"
function Logo({ className }: { className?: string }) {
return (
<svg
viewBox="0 0 282 308"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={className}
>
<path
d="M280.438 295.396L152.117 5.66075C151.645 3.87252 150.584 2.32152 149.12 1.29292C147.665 0.264327 145.896 -0.172778 144.147 0.0619372H120.258C118.509 -0.172778 116.74 0.264327 115.285 1.29292C113.821 2.32152 112.76 3.87252 112.288 5.66075L0.780777 295.396C0.171502 296.774 -0.0839596 298.294 0.0241376 299.81C0.132235 301.327 0.603995 302.788 1.40981 304.052C2.2058 305.318 3.30641 306.345 4.58392 307.034C5.87126 307.725 7.30596 308.054 8.75053 307.993H272.92C279.111 307.993 284.86 300.528 280.438 295.396ZM122.469 127.434L177.775 250.605C178.384 252.07 178.65 253.664 178.551 255.257C178.453 256.85 177.991 258.395 177.215 259.765C176.429 261.133 175.358 262.286 174.07 263.128C172.783 263.969 171.329 264.475 169.815 264.602H68.037C66.4941 264.493 64.9807 264.019 63.6246 263.213C62.2685 262.408 61.1089 261.293 60.2146 259.951C59.3204 258.607 58.7307 257.07 58.4752 255.454C58.2197 253.836 58.318 252.18 58.7504 250.605L106.539 127.434C107.266 125.856 108.397 124.525 109.802 123.594C111.207 122.663 112.838 122.169 114.499 122.169C116.17 122.169 117.791 122.663 119.206 123.594C120.612 124.525 121.741 125.856 122.469 127.434Z"
fill="currentColor"
/>
</svg>
)
}
// Sample recent chats data
const recentChats = [
{
id: "chat_001",
title:
"How to build a modern React application with TypeScript and Next.js",
},
{
id: "chat_002",
title: "Explain machine learning algorithms and their applications",
},
{ id: "chat_003", title: "Write a Python script for data analysis" },
{
id: "chat_004",
title: "Debug my JavaScript code with complex async operations",
},
{
id: "chat_005",
title: "CSS flexbox and grid layout comprehensive tutorial",
},
{
id: "chat_006",
title: "Setting up Docker containerization for microservices architecture",
},
{ id: "chat_007", title: "Database optimization techniques" },
{
id: "chat_008",
title: "API design best practices and RESTful conventions",
},
{
id: "chat_009",
title: "Implementing authentication and authorization in web applications",
},
{ id: "chat_010", title: "Performance optimization strategies" },
{ id: "chat_011", title: "Unit testing with Jest and React Testing Library" },
{ id: "chat_012", title: "GraphQL vs REST API comparison" },
{
id: "chat_013",
title: "Serverless architecture with AWS Lambda functions",
},
{ id: "chat_014", title: "Mobile app development with React Native" },
{
id: "chat_015",
title: "DevOps pipeline automation and CI/CD best practices",
},
{
id: "chat_016",
title: "Building scalable e-commerce platforms with microservices",
},
{
id: "chat_017",
title: "AI and machine learning model deployment strategies",
},
{
id: "chat_018",
title: "Blockchain development and smart contract programming",
},
{
id: "chat_019",
title: "Advanced CSS animations and interactive user interfaces",
},
{
id: "chat_020",
title: "Cloud infrastructure management with Terraform and Kubernetes",
},
]
export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
return (
<SidebarProvider>
<Sidebar
collapsible="icon"
className="bg-muted [&_[data-slot='sidebar-container']]:pr-0 [&_[data-slot='sidebar-container']]:pl-2"
{...props}
>
<SidebarHeader>
<div className="flex items-center justify-between px-2 py-4 group-data-[collapsible=icon]:justify-center">
<Logo className="size-6 group-data-[collapsible=icon]:hidden" />
<SidebarTrigger
title="Cmd + / Toggle"
className="[&>svg]:stroke-foreground/80 hover:[&>svg]:stroke-foreground group-data-[collapsible=icon]:mx-auto"
/>
</div>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton
tooltip="New Chat"
size="lg"
className="group-data-[collapsible=icon]:mx-auto group-data-[collapsible=icon]:justify-center"
>
<Plus className="stroke-foreground/80 hover:stroke-foreground h-7 w-7" />
<span className="group-data-[collapsible=icon]:hidden">
New Chat
</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarHeader>
<SidebarContent className="overflow-x-hidden pb-12 group-data-[collapsible=icon]:hidden">
<ScrollFadeEffect
intensity={48}
className="overscroll-none [scrollbar-color:rgb(163_163_163_/_0.5)_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.5)] hover:[&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.7)] [&::-webkit-scrollbar-track]:bg-transparent"
>
<SidebarGroup>
<SidebarGroupLabel className="font-medium">
Recent Chats
</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
{recentChats.map((chat) => (
<SidebarMenuItem key={chat.id}>
<SidebarMenuButton asChild>
<a href={`#${chat.id}`} className="w-full">
<span className="truncate text-sm">{chat.title}</span>
</a>
</SidebarMenuButton>
</SidebarMenuItem>
))}
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</ScrollFadeEffect>
</SidebarContent>
<SidebarFooter className="group-data-[collapsible=icon]:absolute group-data-[collapsible=icon]:right-0 group-data-[collapsible=icon]:bottom-2 group-data-[collapsible=icon]:left-0">
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton
tooltip="Settings"
className="group-data-[collapsible=icon]:mx-auto group-data-[collapsible=icon]:justify-center"
>
<Settings className="stroke-foreground/80 hover:stroke-foreground h-7 w-7" />
<span className="group-data-[collapsible=icon]:hidden">
Settings
</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarFooter>
<SidebarRail />
</Sidebar>
</SidebarProvider>
)
}
Ai Chat Sidebar
npx shadcn@latest add "https://deltacomponents.dev/r/ai-chat-sidebar.json"

Files
"use client"
import { Testimonials } from "@/components/testimonials"
export default function TestimonialsPage() {
return (
<div className="bg-background flex min-h-screen w-full items-center justify-center">
<div className="mx-auto w-full max-w-7xl p-6">
<div className="space-y-8">
<div className="space-y-4 text-center">
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl">
What our customers are saying
</h1>
<p className="text-muted-foreground mx-auto max-w-2xl text-base sm:text-lg">
Hear from developers and teams who are building the future with
our tools.
</p>
</div>
<Testimonials />
</div>
</div>
</div>
)
}
Testimonials
npx shadcn@latest add "https://deltacomponents.dev/r/testimonials.json"

Files
"use client"
import {
InteractiveFeatureShowcase,
VideoFeature,
} from "@/components/interactive-feature-showcase"
// Video features with actual Vidzflow iframe sources
const sampleVideoFeatures: VideoFeature[] = [
{
id: "citations",
title: "AI you can validate, with pinpoint citations.",
description:
"Click on citations to verify answers quickly in the underlying primary documents. AI that helps lawyers catch every nuance.",
iframeSrc:
"https://app.vidzflow.com/v/DwSjOnvoPL?dq=1080&ap=true&muted=true&loop=true&ctp=true&bv=false&piv=true&playsinline=true&bc=%234E5FFD&controls=play",
videoTitle: "View Citations and Verify",
link: "https://example.com",
},
{
id: "redlines",
title: "Redlines, refined.",
description:
"Live contract editing with our world-leading Legal AI. Leverage your precedent to review with finesse.",
iframeSrc:
"https://app.vidzflow.com/v/1zDeWiA0LC?dq=1080&ap=true&muted=true&loop=true&ctp=true&bv=false&piv=true&playsinline=true&bc=%234E5FFD&controls=play",
videoTitle: "Edit MSA with Precedent",
link: "https://example.com",
},
{
id: "search",
title: "Robins never forget.",
description:
"Leverage every legal document you've ever negotiated. Precedents are easily uncovered and can be quickly leveraged.",
iframeSrc:
"https://app.vidzflow.com/v/pV5yFJ1EuM?dq=1080&ap=true&muted=true&loop=true&ctp=true&bv=false&piv=true&playsinline=true&bc=%234E5FFD&controls=play",
videoTitle: "Search Contract Repository",
link: "https://example.com",
},
{
id: "integration",
title: "Integration without objections.",
description:
"Connect Robin with your most important systems. Import documents at scale in a click with the out-the-box integrations.",
iframeSrc:
"https://app.vidzflow.com/v/SjbvqOEPED?dq=1080&ap=true&muted=true&loop=true&ctp=true&bv=false&piv=true&playsinline=true&bc=%234E5FFD&controls=play",
videoTitle: "Bulk Import Contracts",
link: "https://example.com",
},
]
export default function InteractiveFeatureShowcasePage() {
return (
<div className="bg-background min-h-screen w-full">
<div className="mx-auto max-w-7xl p-6">
<div className="space-y-8">
<div className="space-y-4 text-center">
<h2 className="text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl">
Interactive Features
</h2>
<p className="text-muted-foreground mx-auto max-w-2xl text-base sm:text-lg">
Discover powerful tools and integrations that enhance your
workflow with cutting-edge AI capabilities.
</p>
</div>
<InteractiveFeatureShowcase
features={sampleVideoFeatures}
variant="inner-card"
/>
</div>
</div>
</div>
)
}
Interactive Feature Showcase
npx shadcn@latest add "https://deltacomponents.dev/r/interactive-feature-showcase.json"

Files
"use client"
import { ChatbotWindow } from "@/components/chatbot-window"
export default function ChatbotWindowPage() {
return (
<div className="bg-background h-screen w-full">
<ChatbotWindow defaultOpen={false}>
<div className="flex items-center justify-center">
<div className="w-full max-w-lg space-y-20 px-5 text-justify">
<div className="mb-12 text-center">
<h2 className="font-heading mb-4 text-3xl font-bold">
Welcome to Your App
</h2>
<p className="text-muted-foreground text-lg">
Use the chat window on the right to interact with our AI
assistant. Click the expand button to open the chat interface.
</p>
</div>
{Array.from({ length: 2 }).map((_, index) => (
<div key={index}>
Lorem ipsum dolor sit amet consectetur adipisicing elit.
Obcaecati, reiciendis eum vitae nostrum, temporibus repudiandae
voluptatibus, natus iure ipsa velit odit quibusdam illum.
Quaerat cumque laudantium libero reprehenderit perferendis quo
nulla voluptate? Repellat tenetur labore exercitationem dicta
libero voluptate suscipit, iusto ea assumenda. Ipsa enim, quidem
atque modi error eaque, debitis perferendis, hic iste libero
dignissimos ea! Quod inventore beatae aspernatur nulla rem
perferendis aperiam at debitis delectus odit quia animi ex
mollitia vero molestias itaque deleniti, quos exercitationem
consequatur assumenda dolor? Quod reiciendis in similique
reprehenderit commodi quo blanditiis nobis hic ea optio illum
placeat officia alias quasi autem earum quos obcaecati,
voluptatum corporis quisquam. Quisquam iste, quas explicabo
omnis harum aut quam adipisci, voluptatem saepe accusantium
doloribus repellendus amet culpa magnam ex et dolores accusamus
commodi facere aliquam voluptatum alias? Officia expedita ut
vel? Beatae deserunt sequi id eos libero suscipit totam cum, sed
architecto atque quisquam et incidunt quod fuga ullam repellat
assumenda quos ab, voluptatum sint nesciunt? Ad sapiente est
laborum quam sint eius sequi. Eum, veniam dignissimos.
</div>
))}
</div>
</div>
</ChatbotWindow>
</div>
)
}
Chatbot Window
npx shadcn@latest add "https://deltacomponents.dev/r/chatbot-window.json"

Files
"use client"
import type React from "react"
import { Heart, House, MagnifyingGlass, User } from "phosphor-react"
import { BottomMobileNav } from "./components/bottom-mobile-nav"
import { Sidebar } from "./components/sidebar"
// Layout Component Props Interface
interface LayoutProps {
children: React.ReactNode
sidebarClassName?: string
bottomNavClassName?: string
centerButton?: {
onClick: () => void
label: string
}
}
// Layout Component (moved from layout.tsx)
function Layout({
children,
sidebarClassName,
bottomNavClassName,
centerButton,
}: LayoutProps) {
const routes = [
{
href: "#",
label: "Home",
icon: House,
},
{
href: "#search",
label: "Search",
icon: MagnifyingGlass,
},
{
href: "#love",
label: "Love",
icon: Heart,
},
{
href: "#profile",
label: "Profile",
icon: User,
},
]
return (
<div className="min-h-screen">
{/* Desktop Sidebar */}
<Sidebar routes={routes} className={sidebarClassName} />
{/* Main Content */}
<main className="pb-20 md:ml-20 md:pb-8">{children}</main>
{/* Mobile Bottom Navigation */}
<BottomMobileNav
routes={routes}
labels={false}
className={`bg-background/80 backdrop-blur-lg ${bottomNavClassName || ""}`}
centerButton={centerButton}
/>
</div>
)
}
export default function BottomMobileNavPage() {
return (
<Layout
bottomNavClassName="bg-background/80 backdrop-blur-lg"
centerButton={{
onClick: () => console.log("Center button clicked"),
label: "Add",
}}
>
<div className="mx-auto flex w-full max-w-lg flex-col gap-4 p-4">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.
</p>
<p>
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est
laborum.
</p>
<p>
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae
ab illo inventore veritatis et quasi architecto beatae vitae dicta
sunt explicabo.
</p>
<p>
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem
sequi nesciunt.
</p>
<p>
Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
consectetur, adipisci velit, sed quia non numquam eius modi tempora
incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
</p>
<p>
Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis
autem vel eum iure reprehenderit qui in ea voluptate velit esse quam
nihil molestiae consequatur.
</p>
<p>
At vero eos et accusamus et iusto odio dignissimos ducimus qui
blanditiis praesentium voluptatum deleniti atque corrupti quos dolores
et quas molestias excepturi sint occaecati cupiditate non provident,
similique sunt in culpa qui officia deserunt mollitia animi, id est
laborum et dolorum fuga.
</p>
<p>
Et harum quidem rerum facilis est et expedita distinctio. Nam libero
tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo
minus id quod maxime placeat facere possimus, omnis voluptas assumenda
est, omnis dolor repellendus.
</p>
</div>
</Layout>
)
}
Bottom Mobile Nav
npx shadcn@latest add "https://deltacomponents.dev/r/bottom-mobile-nav.json"

Files
"use client"
import { MapboxPointer } from "@/registry/delta-ui/delta/mapbox-pointer"
export default function MapboxGridBlockPage() {
return (
<div className="bg-background flex min-h-screen w-full items-center justify-center">
<div className="mx-auto w-full max-w-7xl p-6">
<div className="space-y-8">
<div className="space-y-4 text-center">
<h1 className="text-4xl font-bold tracking-tight sm:text-5xl lg:text-6xl">
Where we're cooking
</h1>
<p className="text-muted-foreground mx-auto max-w-2xl text-base sm:text-lg">
Building the future from three world-class innovation hubs
</p>
</div>
<div className="grid grid-cols-1 gap-6 md:grid-cols-3">
{/* New York City */}
<div className="space-y-3">
<MapboxPointer
latitude={40.7128}
longitude={-74.006}
zoom={11}
markerColor="#679BFF"
className="aspect-square w-full"
label="New York City, USA"
interactive={false}
/>
</div>
{/* SF Bay Area */}
<div className="space-y-3">
<MapboxPointer
latitude={37.7749}
longitude={-122.4194}
zoom={11}
markerColor="#679BFF"
className="aspect-square w-full"
label="San Francisco, USA"
interactive={false}
/>
</div>
{/* London */}
<div className="space-y-3">
<MapboxPointer
latitude={51.5074}
longitude={-0.1278}
zoom={11}
markerColor="#679BFF"
className="aspect-square w-full"
label="London, United Kingdom"
interactive={false}
/>
</div>
</div>
</div>
</div>
</div>
)
}
Mapbox Grid Block
npx shadcn@latest add "https://deltacomponents.dev/r/mapbox-grid-block.json"

Files
import { AppHeader } from "@/components/app-header"
import { AppSidebar } from "@/components/app-sidebar"
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb"
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar"
export default function Page() {
return (
<div className="bg-sidebar flex h-screen w-full flex-col overflow-hidden">
<AppHeader />
<div className="flex flex-1 overflow-hidden pt-12">
<SidebarProvider
className="min-h-0 !pr-0"
style={
{
"--sidebar-width": "15.25rem",
"--sidebar-width-mobile": "15.25rem",
} as React.CSSProperties
}
>
<AppSidebar />
<div className="flex flex-1 overflow-hidden py-3 sm:pr-3">
<SidebarInset
className="flex flex-1 flex-col overscroll-none rounded-sm border md:shadow-[0_1px_2px_0_rgba(0,0,0,0.03),0_1px_3px_0_rgba(0,0,0,0.04)] dark:md:shadow-[0_1px_2px_0_rgba(0,0,0,0.2),0_1px_3px_0_rgba(0,0,0,0.15)]"
style={{
WebkitOverflowScrolling: "auto",
overscrollBehavior: "none",
}}
>
<header className="flex h-16 shrink-0 items-center gap-2 overscroll-none border-b">
<div className="flex items-center gap-2 px-4">
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem className="hidden md:block">
<BreadcrumbLink href="#">
Building Your Application
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator className="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Data Fetching</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</div>
</header>
<div
className="flex flex-1 flex-col gap-4 overflow-y-auto overscroll-none p-4 pb-8 [scrollbar-color:rgb(163_163_163_/_0.5)_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.5)] hover:[&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.7)] [&::-webkit-scrollbar-track]:bg-transparent"
style={{
WebkitOverflowScrolling: "auto",
overscrollBehavior: "none",
}}
>
<div className="grid auto-rows-min gap-4 md:grid-cols-3">
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
</div>
<div className="bg-muted/50 min-h-[100vh] flex-1 rounded-xl md:min-h-min" />
<div className="grid auto-rows-min gap-4 md:grid-cols-2">
<div className="bg-muted/50 aspect-square rounded-xl" />
<div className="bg-muted/50 aspect-square rounded-xl" />
</div>
<div className="bg-muted/50 h-[400px] rounded-xl" />
<div className="grid auto-rows-min gap-4 md:grid-cols-4">
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
</div>
<div className="bg-muted/50 h-[600px] rounded-xl" />
</div>
</SidebarInset>
</div>
</SidebarProvider>
</div>
</div>
)
}
Admin Inset Layout
npx shadcn@latest add "https://deltacomponents.dev/r/admin-inset-layout.json"

Files
"use client"
import { SiteLayout } from "./components/site-layout"
export default function HomePage() {
return (
<SiteLayout>
<div className="mx-auto max-w-5xl space-y-6 px-6 py-12">
<p className="text-muted-foreground text-lg leading-relaxed">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.
</p>
<p className="text-muted-foreground text-lg leading-relaxed">
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae
ab illo inventore veritatis et quasi architecto beatae vitae dicta
sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit
aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos
qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed
quia non numquam eius modi tempora incidunt ut labore et dolore magnam
aliquam quaerat voluptatem.
</p>
<p className="text-muted-foreground text-lg leading-relaxed">
At vero eos et accusamus et iusto odio dignissimos ducimus qui
blanditiis praesentium voluptatum deleniti atque corrupti quos dolores
et quas molestias excepturi sint occaecati cupiditate non provident,
similique sunt in culpa qui officia deserunt mollitia animi, id est
laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita
distinctio. Nam libero tempore, cum soluta nobis est eligendi optio
cumque nihil impedit quo minus id quod maxime placeat facere possimus,
omnis voluptas assumenda est, omnis dolor repellendus.
</p>
<p className="text-muted-foreground text-lg leading-relaxed">
Temporibus autem quibusdam et aut officiis debitis aut rerum
necessitatibus saepe eveniet ut et voluptates repudiandae sint et
molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente
delectus, ut aut reiciendis voluptatibuse maiores alias consequatur
aut perferendis doloribus asperiores repellat. Lorem ipsum dolor sit
amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</p>
<p className="text-muted-foreground text-lg leading-relaxed">
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est
laborum. Sed ut perspiciatis unde omnis iste natus error sit
voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque
ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
dicta sunt explicabo.
</p>
<p className="text-muted-foreground text-lg leading-relaxed">
Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem
sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor
sit amet, consectetur, adipisci velit, sed quia non numquam eius modi
tempora incidunt ut labore et dolore magnam aliquam quaerat
voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem
ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi
consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate
velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum
fugiat quo voluptas nulla pariatur.
</p>
</div>
</SiteLayout>
)
}
Saas Header Layout
npx shadcn@latest add "https://deltacomponents.dev/r/saas-header-layout.json"

Files
import { AppSidebar } from "@/components/app-sidebar"
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb"
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar"
export default function Page() {
return (
<div className="bg-sidebar flex h-screen w-full flex-col overflow-hidden">
<div className="flex flex-1 overflow-hidden">
<SidebarProvider
className="min-h-0 !pr-0"
style={
{
"--sidebar-width": "15.25rem",
"--sidebar-width-mobile": "15.25rem",
} as React.CSSProperties
}
>
<AppSidebar />
<div className="flex flex-1 overflow-hidden py-3 sm:pr-3">
<SidebarInset
className="flex flex-1 flex-col overscroll-none rounded-sm border md:shadow-[0_1px_2px_0_rgba(0,0,0,0.03),0_1px_3px_0_rgba(0,0,0,0.04)] dark:md:shadow-[0_1px_2px_0_rgba(0,0,0,0.2),0_1px_3px_0_rgba(0,0,0,0.15)]"
style={{
WebkitOverflowScrolling: "auto",
overscrollBehavior: "none",
}}
>
<header className="flex h-16 shrink-0 items-center gap-2 overscroll-none border-b">
<div className="flex items-center gap-2 px-4">
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem className="hidden md:block">
<BreadcrumbLink href="#">
Building Your Application
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator className="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Data Fetching</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</div>
</header>
<div
className="flex flex-1 flex-col gap-4 overflow-y-auto overscroll-none p-4 pb-8 [scrollbar-color:rgb(163_163_163_/_0.5)_transparent] [scrollbar-width:thin] [&::-webkit-scrollbar]:h-1.5 [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.5)] hover:[&::-webkit-scrollbar-thumb]:bg-[rgb(163_163_163_/_0.7)] [&::-webkit-scrollbar-track]:bg-transparent"
style={{
WebkitOverflowScrolling: "auto",
overscrollBehavior: "none",
}}
>
<div className="grid auto-rows-min gap-4 md:grid-cols-3">
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
</div>
<div className="bg-muted/50 min-h-[100vh] flex-1 rounded-xl md:min-h-min" />
<div className="grid auto-rows-min gap-4 md:grid-cols-2">
<div className="bg-muted/50 aspect-square rounded-xl" />
<div className="bg-muted/50 aspect-square rounded-xl" />
</div>
<div className="bg-muted/50 h-[400px] rounded-xl" />
<div className="grid auto-rows-min gap-4 md:grid-cols-4">
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
<div className="bg-muted/50 aspect-video rounded-xl" />
</div>
<div className="bg-muted/50 h-[600px] rounded-xl" />
</div>
</SidebarInset>
</div>
</SidebarProvider>
</div>
</div>
)
}
Saas Dashboard
npx shadcn@latest add "https://deltacomponents.dev/r/saas-dashboard.json"

Files
"use client"
import { AuthForm } from "@/components/auth-form"
export default function AuthFormPage() {
return (
<main className="bg-background flex min-h-svh items-center justify-center">
<AuthForm mode="login" />
</main>
)
}
Auth Form
npx shadcn@latest add "https://deltacomponents.dev/r/auth-form.json"
