Files
zeekay 16c4453cc1 feat: sync with upstream shadcn/ui (through [email protected])
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.
2026-02-09 10:44:26 -08:00

361 lines
7.8 KiB
TypeScript

"use client"
import * as React from "react"
import { NavFavorites } from "@/registry/bases/base/blocks/sidebar-10/components/nav-favorites"
import { NavMain } from "@/registry/bases/base/blocks/sidebar-10/components/nav-main"
import { NavSecondary } from "@/registry/bases/base/blocks/sidebar-10/components/nav-secondary"
import { NavWorkspaces } from "@/registry/bases/base/blocks/sidebar-10/components/nav-workspaces"
import { TeamSwitcher } from "@/registry/bases/base/blocks/sidebar-10/components/team-switcher"
import {
Sidebar,
SidebarContent,
SidebarHeader,
SidebarRail,
} from "@/registry/bases/base/ui/sidebar"
import { IconPlaceholder } from "@/app/(create)/components/icon-placeholder"
// This is sample data.
const data = {
teams: [
{
name: "Acme Inc",
logo: (
<IconPlaceholder
lucide="TerminalIcon"
tabler="IconCommand"
hugeicons="CommandIcon"
phosphor="CommandIcon"
remixicon="RiCommandLine"
/>
),
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: "Search",
url: "#",
icon: (
<IconPlaceholder
lucide="SearchIcon"
tabler="IconSearch"
hugeicons="SearchIcon"
phosphor="MagnifyingGlassIcon"
remixicon="RiSearchLine"
/>
),
},
{
title: "Ask AI",
url: "#",
icon: (
<IconPlaceholder
lucide="SparklesIcon"
tabler="IconSparkles"
hugeicons="SparklesIcon"
phosphor="SparkleIcon"
remixicon="RiSparklingLine"
/>
),
},
{
title: "Home",
url: "#",
icon: (
<IconPlaceholder
lucide="HomeIcon"
tabler="IconHome"
hugeicons="HomeIcon"
phosphor="HouseIcon"
remixicon="RiHomeLine"
/>
),
isActive: true,
},
{
title: "Inbox",
url: "#",
icon: (
<IconPlaceholder
lucide="InboxIcon"
tabler="IconInbox"
hugeicons="InboxIcon"
phosphor="TrayIcon"
remixicon="RiInboxLine"
/>
),
badge: "10",
},
],
navSecondary: [
{
title: "Calendar",
url: "#",
icon: (
<IconPlaceholder
lucide="CalendarIcon"
tabler="IconCalendar"
hugeicons="CalendarIcon"
phosphor="CalendarIcon"
remixicon="RiCalendarLine"
/>
),
},
{
title: "Settings",
url: "#",
icon: (
<IconPlaceholder
lucide="Settings2Icon"
tabler="IconSettings"
hugeicons="Settings05Icon"
phosphor="GearIcon"
remixicon="RiSettingsLine"
/>
),
},
{
title: "Templates",
url: "#",
icon: (
<IconPlaceholder
lucide="BlocksIcon"
tabler="IconCube"
hugeicons="CubeIcon"
phosphor="CubeIcon"
remixicon="RiBox3Line"
/>
),
},
{
title: "Trash",
url: "#",
icon: (
<IconPlaceholder
lucide="Trash2Icon"
tabler="IconTrash"
hugeicons="Delete02Icon"
phosphor="TrashIcon"
remixicon="RiDeleteBinLine"
/>
),
},
{
title: "Help",
url: "#",
icon: (
<IconPlaceholder
lucide="MessageCircleQuestionIcon"
tabler="IconMessageQuestion"
hugeicons="MessageQuestionIcon"
phosphor="ChatCircleIcon"
remixicon="RiQuestionLine"
/>
),
},
],
favorites: [
{
name: "Project Management & Task Tracking",
url: "#",
emoji: "πŸ“Š",
},
{
name: "Family Recipe Collection & Meal Planning",
url: "#",
emoji: "🍳",
},
{
name: "Fitness Tracker & Workout Routines",
url: "#",
emoji: "πŸ’ͺ",
},
{
name: "Book Notes & Reading List",
url: "#",
emoji: "πŸ“š",
},
{
name: "Sustainable Gardening Tips & Plant Care",
url: "#",
emoji: "🌱",
},
{
name: "Language Learning Progress & Resources",
url: "#",
emoji: "πŸ—£οΈ",
},
{
name: "Home Renovation Ideas & Budget Tracker",
url: "#",
emoji: "🏠",
},
{
name: "Personal Finance & Investment Portfolio",
url: "#",
emoji: "πŸ’°",
},
{
name: "Movie & TV Show Watchlist with Reviews",
url: "#",
emoji: "🎬",
},
{
name: "Daily Habit Tracker & Goal Setting",
url: "#",
emoji: "βœ…",
},
],
workspaces: [
{
name: "Personal Life Management",
emoji: "🏠",
pages: [
{
name: "Daily Journal & Reflection",
url: "#",
emoji: "πŸ“”",
},
{
name: "Health & Wellness Tracker",
url: "#",
emoji: "🍏",
},
{
name: "Personal Growth & Learning Goals",
url: "#",
emoji: "🌟",
},
],
},
{
name: "Professional Development",
emoji: "πŸ’Ό",
pages: [
{
name: "Career Objectives & Milestones",
url: "#",
emoji: "🎯",
},
{
name: "Skill Acquisition & Training Log",
url: "#",
emoji: "🧠",
},
{
name: "Networking Contacts & Events",
url: "#",
emoji: "🀝",
},
],
},
{
name: "Creative Projects",
emoji: "🎨",
pages: [
{
name: "Writing Ideas & Story Outlines",
url: "#",
emoji: "✍️",
},
{
name: "Art & Design Portfolio",
url: "#",
emoji: "πŸ–ΌοΈ",
},
{
name: "Music Composition & Practice Log",
url: "#",
emoji: "🎡",
},
],
},
{
name: "Home Management",
emoji: "🏑",
pages: [
{
name: "Household Budget & Expense Tracking",
url: "#",
emoji: "πŸ’°",
},
{
name: "Home Maintenance Schedule & Tasks",
url: "#",
emoji: "πŸ”§",
},
{
name: "Family Calendar & Event Planning",
url: "#",
emoji: "πŸ“…",
},
],
},
{
name: "Travel & Adventure",
emoji: "🧳",
pages: [
{
name: "Trip Planning & Itineraries",
url: "#",
emoji: "πŸ—ΊοΈ",
},
{
name: "Travel Bucket List & Inspiration",
url: "#",
emoji: "🌎",
},
{
name: "Travel Journal & Photo Gallery",
url: "#",
emoji: "πŸ“Έ",
},
],
},
],
}
export function AppSidebar({ ...props }: React.ComponentProps<typeof Sidebar>) {
return (
<Sidebar className="border-r-0" {...props}>
<SidebarHeader>
<TeamSwitcher teams={data.teams} />
<NavMain items={data.navMain} />
</SidebarHeader>
<SidebarContent>
<NavFavorites favorites={data.favorites} />
<NavWorkspaces workspaces={data.workspaces} />
<NavSecondary items={data.navSecondary} className="mt-auto" />
</SidebarContent>
<SidebarRail />
</Sidebar>
)
}