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
"use client"
import type React from "react"
import { Heart, Home, Search, User } from "lucide-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
}
// Layout Component (moved from layout.tsx)
function Layout({
children,
sidebarClassName,
bottomNavClassName,
}: LayoutProps) {
const routes = [
{
href: "#",
label: "Home",
icon: Home,
},
{
href: "#search",
label: "Search",
icon: Search,
},
{
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={true}
className={bottomNavClassName}
/>
</div>
)
}
export default function BottomMobileNavPage() {
return (
<Layout>
<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 @delta/bottom-mobile-nav

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 @delta/admin-inset-layout
