mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-07-09 06:55:07 +00:00
* feat(www): add login blocks * chore(www): restructure for blocks * chore: build registry * chore: clean up chunks * fix(www): chart categories * feat(www): big registry refactor * feat(www): update blocks * feat: complex blocks * fix: update schema * feat: sync new-york and default * fix: lint * feat: move charts * fix(www): code * fix: src path * chore: rebuild registry * fix: screenshot * fix: set new-york as default
289 lines
7.5 KiB
TypeScript
289 lines
7.5 KiB
TypeScript
import { GalleryVerticalEnd, Minus, Plus, Search } from "lucide-react"
|
|
|
|
import {
|
|
Breadcrumb,
|
|
BreadcrumbItem,
|
|
BreadcrumbLink,
|
|
BreadcrumbList,
|
|
BreadcrumbPage,
|
|
BreadcrumbSeparator,
|
|
} from "@/registry/default/ui/breadcrumb"
|
|
import {
|
|
Collapsible,
|
|
CollapsibleContent,
|
|
CollapsibleTrigger,
|
|
} from "@/registry/default/ui/collapsible"
|
|
import { Label } from "@/registry/default/ui/label"
|
|
import { Separator } from "@/registry/default/ui/separator"
|
|
import {
|
|
Sidebar,
|
|
SidebarContent,
|
|
SidebarGroup,
|
|
SidebarGroupContent,
|
|
SidebarHeader,
|
|
SidebarInput,
|
|
SidebarInset,
|
|
SidebarMenu,
|
|
SidebarMenuButton,
|
|
SidebarMenuItem,
|
|
SidebarMenuSub,
|
|
SidebarMenuSubButton,
|
|
SidebarMenuSubItem,
|
|
SidebarProvider,
|
|
SidebarRail,
|
|
SidebarTrigger,
|
|
} from "@/registry/default/ui/sidebar"
|
|
|
|
export const iframeHeight = "800px"
|
|
|
|
export const description = "A sidebar with collapsible submenus."
|
|
|
|
// This is sample data.
|
|
const data = {
|
|
navMain: [
|
|
{
|
|
title: "Getting Started",
|
|
url: "#",
|
|
items: [
|
|
{
|
|
title: "Installation",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Project Structure",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Building Your Application",
|
|
url: "#",
|
|
items: [
|
|
{
|
|
title: "Routing",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Data Fetching",
|
|
url: "#",
|
|
isActive: true,
|
|
},
|
|
{
|
|
title: "Rendering",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Caching",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Styling",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Optimizing",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Configuring",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Testing",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Authentication",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Deploying",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Upgrading",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Examples",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "API Reference",
|
|
url: "#",
|
|
items: [
|
|
{
|
|
title: "Components",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "File Conventions",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Functions",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "next.config.js Options",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "CLI",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Edge Runtime",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Architecture",
|
|
url: "#",
|
|
items: [
|
|
{
|
|
title: "Accessibility",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Fast Refresh",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Next.js Compiler",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Supported Browsers",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Turbopack",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Community",
|
|
url: "#",
|
|
items: [
|
|
{
|
|
title: "Contribution Guide",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
export default function Component() {
|
|
return (
|
|
<SidebarProvider>
|
|
<Sidebar>
|
|
<SidebarHeader>
|
|
<SidebarMenu>
|
|
<SidebarMenuItem>
|
|
<SidebarMenuButton size="lg" asChild>
|
|
<a href="#">
|
|
<div className="flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground">
|
|
<GalleryVerticalEnd className="size-4" />
|
|
</div>
|
|
<div className="flex flex-col gap-0.5 leading-none">
|
|
<span className="font-semibold">Documentation</span>
|
|
<span className="">v1.0.0</span>
|
|
</div>
|
|
</a>
|
|
</SidebarMenuButton>
|
|
</SidebarMenuItem>
|
|
</SidebarMenu>
|
|
<form>
|
|
<SidebarGroup className="py-0">
|
|
<SidebarGroupContent className="relative">
|
|
<Label htmlFor="search" className="sr-only">
|
|
Search
|
|
</Label>
|
|
<SidebarInput
|
|
id="search"
|
|
placeholder="Search the docs..."
|
|
className="pl-8"
|
|
/>
|
|
<Search className="pointer-events-none absolute left-2 top-1/2 size-4 -translate-y-1/2 select-none opacity-50" />
|
|
</SidebarGroupContent>
|
|
</SidebarGroup>
|
|
</form>
|
|
</SidebarHeader>
|
|
<SidebarContent>
|
|
<SidebarGroup>
|
|
<SidebarMenu>
|
|
{data.navMain.map((item, index) => (
|
|
<Collapsible
|
|
key={item.title}
|
|
defaultOpen={index === 1}
|
|
className="group/collapsible"
|
|
>
|
|
<SidebarMenuItem>
|
|
<CollapsibleTrigger asChild>
|
|
<SidebarMenuButton>
|
|
{item.title}{" "}
|
|
<Plus className="ml-auto group-data-[state=open]/collapsible:hidden" />
|
|
<Minus className="ml-auto group-data-[state=closed]/collapsible:hidden" />
|
|
</SidebarMenuButton>
|
|
</CollapsibleTrigger>
|
|
{item.items?.length ? (
|
|
<CollapsibleContent>
|
|
<SidebarMenuSub>
|
|
{item.items.map((item) => (
|
|
<SidebarMenuSubItem key={item.title}>
|
|
<SidebarMenuSubButton
|
|
asChild
|
|
isActive={item.isActive}
|
|
>
|
|
<a href={item.url}>{item.title}</a>
|
|
</SidebarMenuSubButton>
|
|
</SidebarMenuSubItem>
|
|
))}
|
|
</SidebarMenuSub>
|
|
</CollapsibleContent>
|
|
) : null}
|
|
</SidebarMenuItem>
|
|
</Collapsible>
|
|
))}
|
|
</SidebarMenu>
|
|
</SidebarGroup>
|
|
</SidebarContent>
|
|
<SidebarRail />
|
|
</Sidebar>
|
|
<SidebarInset>
|
|
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
|
|
<SidebarTrigger className="-ml-1" />
|
|
<Separator orientation="vertical" className="mr-2 h-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>
|
|
</header>
|
|
<div className="flex flex-1 flex-col gap-4 p-4">
|
|
<div className="grid auto-rows-min gap-4 md:grid-cols-3">
|
|
<div className="aspect-video rounded-xl bg-muted/50" />
|
|
<div className="aspect-video rounded-xl bg-muted/50" />
|
|
<div className="aspect-video rounded-xl bg-muted/50" />
|
|
</div>
|
|
<div className="min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min" />
|
|
</div>
|
|
</SidebarInset>
|
|
</SidebarProvider>
|
|
)
|
|
}
|