mirror of
https://github.com/shadcn-ui/ui.git
synced 2026-07-03 01:18:38 +00:00
* feat: add phosphor icons to base ui * feat_ add phosphor to blocks * feat: add phosphor to radix blocks * feat: add phosphor to radix ui * feat: add phosphor to radix example * feat: add missing phosphor icons * fix: rename broken icons * chore: format files * fix: add missing phosphor icons * chore: build registry --------- Co-authored-by: shadcn <m@shadcn.com>
275 lines
7.2 KiB
TypeScript
275 lines
7.2 KiB
TypeScript
"use client"
|
|
|
|
import { Button } from "@/registry/bases/base/ui/button"
|
|
import {
|
|
Card,
|
|
CardContent,
|
|
CardDescription,
|
|
CardHeader,
|
|
CardTitle,
|
|
} from "@/registry/bases/base/ui/card"
|
|
import {
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuGroup,
|
|
DropdownMenuItem,
|
|
DropdownMenuTrigger,
|
|
} from "@/registry/bases/base/ui/dropdown-menu"
|
|
import { Field } from "@/registry/bases/base/ui/field"
|
|
import {
|
|
Item,
|
|
ItemContent,
|
|
ItemDescription,
|
|
ItemTitle,
|
|
} from "@/registry/bases/base/ui/item"
|
|
import {
|
|
Sidebar,
|
|
SidebarContent,
|
|
SidebarFooter,
|
|
SidebarGroup,
|
|
SidebarHeader,
|
|
SidebarInput,
|
|
SidebarInset,
|
|
SidebarMenu,
|
|
SidebarMenuButton,
|
|
SidebarMenuItem,
|
|
SidebarProvider,
|
|
SidebarRail,
|
|
SidebarTrigger,
|
|
} from "@/registry/bases/base/ui/sidebar"
|
|
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
|
|
|
|
export default function SidebarFloatingExample() {
|
|
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: "#",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|
|
|
|
return (
|
|
<SidebarProvider className="bg-background">
|
|
<Sidebar variant="floating">
|
|
<SidebarHeader>
|
|
<SidebarMenu>
|
|
<SidebarMenuItem>
|
|
<SidebarMenuButton size="lg" render={<a href="#" />}>
|
|
<Item className="p-0" size="xs">
|
|
<ItemContent>
|
|
<ItemTitle className="text-sm">Documentation</ItemTitle>
|
|
<ItemDescription>v1.0.0</ItemDescription>
|
|
</ItemContent>
|
|
</Item>
|
|
</SidebarMenuButton>
|
|
</SidebarMenuItem>
|
|
</SidebarMenu>
|
|
</SidebarHeader>
|
|
<SidebarContent>
|
|
<SidebarGroup>
|
|
<SidebarMenu>
|
|
{data.navMain.map((item) => (
|
|
<DropdownMenu key={item.title}>
|
|
<SidebarMenuItem>
|
|
<DropdownMenuTrigger
|
|
render={
|
|
<SidebarMenuButton className="data-popup-open:bg-sidebar-accent data-popup-open:text-sidebar-accent-foreground" />
|
|
}
|
|
>
|
|
{item.title}{" "}
|
|
<IconPlaceholder
|
|
lucide="MoreHorizontalIcon"
|
|
tabler="IconDots"
|
|
hugeicons="MoreHorizontalCircle01Icon"
|
|
phosphor="DotsThreeOutlineIcon"
|
|
className="ml-auto"
|
|
/>
|
|
</DropdownMenuTrigger>
|
|
{item.items?.length ? (
|
|
<DropdownMenuContent side="right" align="start">
|
|
<DropdownMenuGroup>
|
|
{item.items.map((subItem) => (
|
|
<DropdownMenuItem
|
|
render={<a href={subItem.url} />}
|
|
key={subItem.title}
|
|
>
|
|
{subItem.title}
|
|
</DropdownMenuItem>
|
|
))}
|
|
</DropdownMenuGroup>
|
|
</DropdownMenuContent>
|
|
) : null}
|
|
</SidebarMenuItem>
|
|
</DropdownMenu>
|
|
))}
|
|
</SidebarMenu>
|
|
</SidebarGroup>
|
|
</SidebarContent>
|
|
<SidebarFooter>
|
|
<SidebarGroup>
|
|
<Card size="sm" className="-mx-2">
|
|
<CardHeader>
|
|
<CardTitle className="text-sm">
|
|
Subscribe to our newsletter
|
|
</CardTitle>
|
|
<CardDescription>
|
|
Opt-in to receive updates and news about the sidebar.
|
|
</CardDescription>
|
|
</CardHeader>
|
|
<CardContent>
|
|
<form>
|
|
<Field>
|
|
<SidebarInput type="email" placeholder="Email" />
|
|
<Button
|
|
className="bg-sidebar-primary text-sidebar-primary-foreground w-full"
|
|
size="sm"
|
|
>
|
|
Subscribe
|
|
</Button>
|
|
</Field>
|
|
</form>
|
|
</CardContent>
|
|
</Card>
|
|
</SidebarGroup>
|
|
</SidebarFooter>
|
|
<SidebarRail />
|
|
</Sidebar>
|
|
<SidebarInset>
|
|
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
|
|
<SidebarTrigger className="-ml-1" />
|
|
</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="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>
|
|
</SidebarInset>
|
|
</SidebarProvider>
|
|
)
|
|
}
|