mirror of
https://github.com/hanzoai/shadcn.git
synced 2026-11-03 03:18:52 +00:00
Squash merge of shadcn-ui/ui main branch into hanzo/ui, bringing in: - [email protected] through [email protected] releases - New apps/v4 directory structure - Registry system improvements and MCP server - Framework support (Vue, Svelte, React Native) - New templates (vite-app, monorepo-next, laravel) - Zod 4 compatibility (scoped override for zod@>4) - Test fixture corrections for alias resolution All 867 merge conflicts resolved preserving Hanzo customizations. 1020/1020 shadcn tests pass.
245 lines
5.1 KiB
TypeScript
245 lines
5.1 KiB
TypeScript
"use client"
|
|
|
|
import * as React from "react"
|
|
|
|
import { NavMain } from "@/registry/bases/base/blocks/sidebar-07/components/nav-main"
|
|
import { NavProjects } from "@/registry/bases/base/blocks/sidebar-07/components/nav-projects"
|
|
import { NavUser } from "@/registry/bases/base/blocks/sidebar-07/components/nav-user"
|
|
import { TeamSwitcher } from "@/registry/bases/base/blocks/sidebar-07/components/team-switcher"
|
|
import {
|
|
Sidebar,
|
|
SidebarContent,
|
|
SidebarFooter,
|
|
SidebarHeader,
|
|
SidebarRail,
|
|
} from "@/registry/bases/base/ui/sidebar"
|
|
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
|
|
|
|
// This is sample data.
|
|
const data = {
|
|
user: {
|
|
name: "shadcn",
|
|
email: "[email protected]",
|
|
avatar: "/avatars/shadcn.jpg",
|
|
},
|
|
teams: [
|
|
{
|
|
name: "Acme Inc",
|
|
logo: (
|
|
<IconPlaceholder
|
|
lucide="GalleryVerticalEndIcon"
|
|
tabler="IconLayoutRows"
|
|
hugeicons="LayoutBottomIcon"
|
|
phosphor="RowsIcon"
|
|
remixicon="RiGalleryLine"
|
|
/>
|
|
),
|
|
plan: "Enterprise",
|
|
},
|
|
{
|
|
name: "Acme Corp.",
|
|
logo: (
|
|
<IconPlaceholder
|
|
lucide="AudioLinesIcon"
|
|
tabler="IconWaveSine"
|
|
hugeicons="AudioWave01Icon"
|
|
phosphor="WaveformIcon"
|
|
remixicon="RiPulseLine"
|
|
/>
|
|
),
|
|
plan: "Startup",
|
|
},
|
|
{
|
|
name: "Evil Corp.",
|
|
logo: (
|
|
<IconPlaceholder
|
|
lucide="TerminalIcon"
|
|
tabler="IconCommand"
|
|
hugeicons="CommandIcon"
|
|
phosphor="CommandIcon"
|
|
remixicon="RiCommandLine"
|
|
/>
|
|
),
|
|
plan: "Free",
|
|
},
|
|
],
|
|
navMain: [
|
|
{
|
|
title: "Playground",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="TerminalSquareIcon"
|
|
tabler="IconTerminal2"
|
|
hugeicons="ComputerTerminalIcon"
|
|
phosphor="TerminalIcon"
|
|
remixicon="RiTerminalBoxLine"
|
|
/>
|
|
),
|
|
isActive: true,
|
|
items: [
|
|
{
|
|
title: "History",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Starred",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Settings",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Models",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="BotIcon"
|
|
tabler="IconRobot"
|
|
hugeicons="RoboticIcon"
|
|
phosphor="RobotIcon"
|
|
remixicon="RiRobotLine"
|
|
/>
|
|
),
|
|
items: [
|
|
{
|
|
title: "Genesis",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Explorer",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Quantum",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Documentation",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="BookOpenIcon"
|
|
tabler="IconBook"
|
|
hugeicons="BookOpen02Icon"
|
|
phosphor="BookOpenIcon"
|
|
remixicon="RiBookOpenLine"
|
|
/>
|
|
),
|
|
items: [
|
|
{
|
|
title: "Introduction",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Get Started",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Tutorials",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Changelog",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
{
|
|
title: "Settings",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="Settings2Icon"
|
|
tabler="IconSettings"
|
|
hugeicons="Settings05Icon"
|
|
phosphor="GearIcon"
|
|
remixicon="RiSettingsLine"
|
|
/>
|
|
),
|
|
items: [
|
|
{
|
|
title: "General",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Team",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Billing",
|
|
url: "#",
|
|
},
|
|
{
|
|
title: "Limits",
|
|
url: "#",
|
|
},
|
|
],
|
|
},
|
|
],
|
|
projects: [
|
|
{
|
|
name: "Design Engineering",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="FrameIcon"
|
|
tabler="IconFrame"
|
|
hugeicons="CropIcon"
|
|
phosphor="CropIcon"
|
|
remixicon="RiCropLine"
|
|
/>
|
|
),
|
|
},
|
|
{
|
|
name: "Sales & Marketing",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="PieChartIcon"
|
|
tabler="IconChartPie"
|
|
hugeicons="PieChartIcon"
|
|
phosphor="ChartPieIcon"
|
|
remixicon="RiPieChartLine"
|
|
/>
|
|
),
|
|
},
|
|
{
|
|
name: "Travel",
|
|
url: "#",
|
|
icon: (
|
|
<IconPlaceholder
|
|
lucide="MapIcon"
|
|
tabler="IconMap"
|
|
hugeicons="MapsIcon"
|
|
phosphor="MapTrifoldIcon"
|
|
remixicon="RiMapLine"
|
|
/>
|
|
),
|
|
},
|
|
],
|
|
}
|
|
|
|
export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
|
|
return (
|
|
<Sidebar collapsible="icon" {...props}>
|
|
<SidebarHeader>
|
|
<TeamSwitcher teams={data.teams} />
|
|
</SidebarHeader>
|
|
<SidebarContent>
|
|
<NavMain items={data.navMain} />
|
|
<NavProjects projects={data.projects} />
|
|
</SidebarContent>
|
|
<SidebarFooter>
|
|
<NavUser user={data.user} />
|
|
</SidebarFooter>
|
|
<SidebarRail />
|
|
</Sidebar>
|
|
)
|
|
}
|