Zaidan

Command Palette

Search for a command to run...

GitHub92

Sidebar (Icon)

A sidebar variant that collapses to show only icons, enabling space-efficient navigation while maintaining full functionality when expanded.

Installation

See the Sidebar component for installation instructions.

Features

  • Collapses to icon-only mode for compact navigation
  • Tooltips appear when collapsed to show full labels
  • Smooth transition animations
  • Header height adjusts when collapsed

Props

PropTypeValueDescription
collapsiblestring"icon"Enables icon collapse mode

Examples

Here is the source code of the example from the preview page:

Icon Collapsible

import AudioWaveform from "lucide-solid/icons/audio-waveform";
import BadgeCheck from "lucide-solid/icons/badge-check";
import Bell from "lucide-solid/icons/bell";
import BookOpen from "lucide-solid/icons/book-open";
import Bot from "lucide-solid/icons/bot";
import ChevronRight from "lucide-solid/icons/chevron-right";
import ChevronsUpDown from "lucide-solid/icons/chevrons-up-down";
import Command from "lucide-solid/icons/command";
import CreditCard from "lucide-solid/icons/credit-card";
import Folder from "lucide-solid/icons/folder";
import Forward from "lucide-solid/icons/forward";
import Frame from "lucide-solid/icons/frame";
import GalleryVerticalEnd from "lucide-solid/icons/gallery-vertical-end";
import LogOut from "lucide-solid/icons/log-out";
import MapIcon from "lucide-solid/icons/map";
import MoreHorizontal from "lucide-solid/icons/ellipsis";
import PieChart from "lucide-solid/icons/chart-pie";
import Plus from "lucide-solid/icons/plus";
import Settings2 from "lucide-solid/icons/settings-2";
import Sparkles from "lucide-solid/icons/sparkles";
import SquareTerminal from "lucide-solid/icons/square-terminal";
import Trash2 from "lucide-solid/icons/trash-2";
import type { Component, ComponentProps } from "solid-js";
import { createSignal, For, Show } from "solid-js";
import { Avatar, AvatarFallback, AvatarImage } from "~/components/ui/avatar";
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "~/components/ui/breadcrumb";
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "~/components/ui/collapsible";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuGroup,
DropdownMenuItem,
DropdownMenuLabel,
DropdownMenuSeparator,
DropdownMenuTrigger,
} from "~/components/ui/dropdown-menu";
import { Kbd } from "~/components/ui/kbd";
import { Separator } from "~/components/ui/separator";
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupLabel,
SidebarHeader,
SidebarInset,
SidebarMenu,
SidebarMenuAction,
SidebarMenuButton,
SidebarMenuItem,
SidebarMenuSub,
SidebarMenuSubButton,
SidebarMenuSubItem,
SidebarProvider,
SidebarRail,
SidebarTrigger,
useSidebar,
} from "~/components/ui/sidebar";
export default function SidebarIconExample() {
return (
<SidebarProvider>
<Sidebar collapsible="icon">
<SidebarHeader>
<TeamSwitcher teams={data.teams} />
</SidebarHeader>
<SidebarContent>
<NavMain items={data.navMain} />
<NavProjects projects={data.projects} />
</SidebarContent>
<SidebarFooter>
<NavUser user={data.user} />
</SidebarFooter>
<SidebarRail />
</Sidebar>
<SidebarInset>
<header class="flex h-16 shrink-0 items-center gap-2 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12">
<div class="flex items-center gap-2 px-4">
<SidebarTrigger class="-ml-1" />
<Separator orientation="vertical" class="mr-2 data-[orientation=vertical]:h-4" />
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem class="hidden md:block">
<BreadcrumbLink href="#">Building Your Application</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator class="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Data Fetching</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</div>
</header>
<div class="flex flex-1 flex-col gap-4 p-4 pt-0">
<div class="grid auto-rows-min gap-4 md:grid-cols-3">
<div class="aspect-video rounded-xl bg-muted/50" />
<div class="aspect-video rounded-xl bg-muted/50" />
<div class="aspect-video rounded-xl bg-muted/50" />
</div>
<div class="min-h-[100vh] flex-1 rounded-xl bg-muted/50 md:min-h-min" />
</div>
</SidebarInset>
</SidebarProvider>
);
}

See Also