{
  "$schema": "https://uipkge.dev/schema/registry-item.json",
  "name": "sidebar-07",
  "title": "Toolbar Action Sidebar",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-angular/blocks/sidebar-07/sidebar-07.component.ts",
      "content": "// App sidebar with a bottom action bar. Workspace pill + search at the top,\n// three grouped nav sections, user pill above an icon toolbar (Settings,\n// Help, Notifications, Command palette, theme toggle) anchored at the very\n// bottom. Every row is spelled out inline so you can edit in place.\n// Port of the Vue/React block 1:1.\nimport { ChangeDetectionStrategy, Component, computed, signal } from '@angular/core'\nimport {\n  Bell,\n  ChartBar,\n  ChevronsUpDown,\n  Command,\n  CreditCard,\n  FileText,\n  HelpCircle,\n  LineChart,\n  LucideAngularModule,\n  Mail,\n  Moon,\n  Package,\n  Plus,\n  Search,\n  Settings as SettingsIcon,\n  ShoppingCart,\n  Sun,\n  Users,\n} from 'lucide-angular'\nimport { injectTheme } from '@/lib/use-theme'\nimport { UiAvatarComponent, UiAvatarFallbackComponent } from '@/ui/avatar/avatar.component'\nimport { UiInputComponent } from '@/ui/input/input.component'\nimport {\n  UiSidebarComponent,\n  UiSidebarContentComponent,\n  UiSidebarFooterComponent,\n  UiSidebarGroupActionComponent,\n  UiSidebarGroupComponent,\n  UiSidebarGroupContentComponent,\n  UiSidebarGroupLabelComponent,\n  UiSidebarHeaderComponent,\n  UiSidebarMenuBadgeComponent,\n  UiSidebarMenuButtonComponent,\n  UiSidebarMenuComponent,\n  UiSidebarMenuItemComponent,\n  UiSidebarRailComponent,\n  UiSidebarSeparatorComponent,\n  UiSidebarTriggerComponent,\n  injectSidebar,\n} from '@/ui/sidebar/sidebar.component'\n\n@Component({\n  changeDetection: ChangeDetectionStrategy.Eager,\n  selector: 'ui-sidebar-07, [ui-sidebar-07]',\n  standalone: true,\n  // React renders <Sidebar> itself: keep this wrapper out of the provider's flex layout.\n  host: { class: 'contents' },\n  imports: [\n    LucideAngularModule,\n    UiAvatarComponent,\n    UiAvatarFallbackComponent,\n    UiSidebarComponent,\n    UiSidebarContentComponent,\n    UiSidebarFooterComponent,\n    UiSidebarGroupActionComponent,\n    UiSidebarGroupComponent,\n    UiSidebarGroupContentComponent,\n    UiSidebarGroupLabelComponent,\n    UiSidebarHeaderComponent,\n    UiInputComponent,\n    UiSidebarMenuBadgeComponent,\n    UiSidebarMenuButtonComponent,\n    UiSidebarMenuComponent,\n    UiSidebarMenuItemComponent,\n    UiSidebarRailComponent,\n    UiSidebarSeparatorComponent,\n    UiSidebarTriggerComponent,\n  ],\n  template: `\n    <ui-sidebar data-slot=\"sidebar-07\" collapsible=\"icon\">\n      <ui-sidebar-header>\n        <ul ui-sidebar-menu>\n          <li ui-sidebar-menu-item>\n            <button\n              ui-sidebar-menu-button\n              size=\"lg\"\n              tooltip=\"uipkge\"\n              class=\"group-data-[collapsible=icon]:!justify-center\"\n            >\n              <div\n                class=\"bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 shrink-0 items-center justify-center rounded-lg group-data-[collapsible=icon]:size-6\"\n              >\n                <svg\n                  viewBox=\"0 0 24 24\"\n                  class=\"size-4 group-data-[collapsible=icon]:size-3.5\"\n                  fill=\"currentColor\"\n                  aria-hidden=\"true\"\n                >\n                  <rect x=\"2\" y=\"2\" width=\"9\" height=\"9\" rx=\"1.5\" />\n                  <rect x=\"13\" y=\"2\" width=\"9\" height=\"9\" rx=\"1.5\" opacity=\"0.55\" />\n                  <rect x=\"2\" y=\"13\" width=\"9\" height=\"9\" rx=\"1.5\" opacity=\"0.55\" />\n                  <rect x=\"13\" y=\"13\" width=\"9\" height=\"9\" rx=\"1.5\" />\n                </svg>\n              </div>\n              <div class=\"grid flex-1 text-left text-sm leading-tight group-data-[collapsible=icon]:hidden\">\n                <span class=\"font-display truncate font-semibold\">uipkge</span>\n                <span class=\"text-muted-foreground truncate text-xs\">uipkge.dev</span>\n              </div>\n            </button>\n          </li>\n        </ul>\n\n        <div class=\"px-1 pt-1 group-data-[collapsible=icon]:hidden\">\n          <ui-input\n            type=\"text\"\n            placeholder=\"Search...\"\n            allowClear\n            [prefix]=\"searchPrefix\"\n            [suffix]=\"searchSuffix\"\n            class=\"bg-background h-8 w-full shadow-none\"\n          />\n          <ng-template #searchPrefix>\n            <lucide-icon [img]=\"Search\" class=\"text-muted-foreground size-3.5\" />\n          </ng-template>\n          <ng-template #searchSuffix>\n            <kbd\n              class=\"bg-muted text-muted-foreground pointer-events-none inline-flex h-5 items-center gap-0.5 rounded border px-1 font-mono text-xs font-medium select-none\"\n            >\n              <span>&#8984;</span>K\n            </kbd>\n          </ng-template>\n        </div>\n      </ui-sidebar-header>\n\n      <ui-sidebar-content>\n        <ui-sidebar-group>\n          <ui-sidebar-group-label>Dashboard</ui-sidebar-group-label>\n          <ui-sidebar-group-content>\n            <ul ui-sidebar-menu>\n              <li ui-sidebar-menu-item>\n                <!-- Active row gets a subtle success-tinted treatment to mark it\n                     without competing with the rest of the nav. -->\n                <button\n                  ui-sidebar-menu-button\n                  [isActive]=\"true\"\n                  tooltip=\"Analytics\"\n                  class=\"data-[active=true]:!bg-success/20 data-[active=true]:!text-foreground\"\n                >\n                  <lucide-icon [img]=\"ChartBar\" class=\"size-4\" />\n                  <span>Analytics</span>\n                </button>\n              </li>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Performance\">\n                  <lucide-icon [img]=\"LineChart\" class=\"size-4\" />\n                  <span>Performance</span>\n                </button>\n              </li>\n            </ul>\n          </ui-sidebar-group-content>\n        </ui-sidebar-group>\n\n        <ui-sidebar-group>\n          <ui-sidebar-group-label>Management</ui-sidebar-group-label>\n          <ui-sidebar-group-content>\n            <ul ui-sidebar-menu>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Products\">\n                  <lucide-icon [img]=\"Package\" class=\"size-4\" />\n                  <span>Products</span>\n                </button>\n              </li>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Orders\">\n                  <lucide-icon [img]=\"ShoppingCart\" class=\"size-4\" />\n                  <span>Orders</span>\n                </button>\n              </li>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Subscribers\">\n                  <lucide-icon [img]=\"Users\" class=\"size-4\" />\n                  <span>Subscribers</span>\n                </button>\n              </li>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Transactions\">\n                  <lucide-icon [img]=\"CreditCard\" class=\"size-4\" />\n                  <span>Transactions</span>\n                </button>\n              </li>\n            </ul>\n          </ui-sidebar-group-content>\n        </ui-sidebar-group>\n\n        <ui-sidebar-group>\n          <ui-sidebar-group-label>Content</ui-sidebar-group-label>\n          <button ui-sidebar-group-action aria-label=\"Add content\">\n            <lucide-icon [img]=\"Plus\" class=\"size-4\" />\n          </button>\n          <ui-sidebar-group-content>\n            <ul ui-sidebar-menu>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Posts\">\n                  <lucide-icon [img]=\"FileText\" class=\"size-4\" />\n                  <span>Posts</span>\n                </button>\n                <span ui-sidebar-menu-badge class=\"bg-destructive text-white\">10</span>\n              </li>\n              <li ui-sidebar-menu-item>\n                <button ui-sidebar-menu-button tooltip=\"Pages\">\n                  <lucide-icon [img]=\"Mail\" class=\"size-4\" />\n                  <span>Pages</span>\n                </button>\n              </li>\n            </ul>\n          </ui-sidebar-group-content>\n        </ui-sidebar-group>\n      </ui-sidebar-content>\n\n      <ui-sidebar-footer>\n        <ul ui-sidebar-menu>\n          <li ui-sidebar-menu-item>\n            <button ui-sidebar-menu-button size=\"lg\" class=\"group-data-[collapsible=icon]:!justify-center\">\n              <ui-avatar class=\"size-8 rounded-lg group-data-[collapsible=icon]:size-6\">\n                <ui-avatar-fallback class=\"bg-sidebar-accent text-sidebar-accent-foreground rounded-lg text-xs\">\n                  SW\n                </ui-avatar-fallback>\n              </ui-avatar>\n              <div class=\"grid flex-1 text-left text-sm leading-tight group-data-[collapsible=icon]:hidden\">\n                <span class=\"truncate font-medium\">Sarah Wilson</span>\n                <span class=\"text-muted-foreground truncate text-xs\">Admin Account</span>\n              </div>\n              <lucide-icon [img]=\"ChevronsUpDown\" class=\"ml-auto size-4 group-data-[collapsible=icon]:hidden\" />\n            </button>\n          </li>\n        </ul>\n\n        @if (sidebar.state === 'expanded') {\n          <ui-sidebar-separator class=\"my-1\" />\n\n          <!-- Action toolbar -- evenly spaced quick icons. Last button is the\n               SidebarTrigger collapse toggle. Replace others with\n               router links / (click) handlers as needed. -->\n          <div class=\"flex items-center justify-between px-1 pb-1\">\n            <button\n              type=\"button\"\n              aria-label=\"Settings\"\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground flex aspect-square size-8 items-center justify-center rounded-md transition-colors\"\n            >\n              <lucide-icon [img]=\"SettingsIcon\" class=\"size-4\" />\n            </button>\n            <button\n              type=\"button\"\n              aria-label=\"Help\"\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground flex aspect-square size-8 items-center justify-center rounded-md transition-colors\"\n            >\n              <lucide-icon [img]=\"HelpCircle\" class=\"size-4\" />\n            </button>\n            <button\n              type=\"button\"\n              aria-label=\"Notifications\"\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground flex aspect-square size-8 items-center justify-center rounded-md transition-colors\"\n            >\n              <lucide-icon [img]=\"Bell\" class=\"size-4\" />\n            </button>\n            <button\n              type=\"button\"\n              aria-label=\"Command palette\"\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground flex aspect-square size-8 items-center justify-center rounded-md transition-colors\"\n            >\n              <lucide-icon [img]=\"Command\" class=\"size-4\" />\n            </button>\n            <button\n              type=\"button\"\n              [attr.aria-label]=\"isDark() ? 'Switch to light theme' : 'Switch to dark theme'\"\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground flex aspect-square size-8 items-center justify-center rounded-md transition-colors\"\n              (click)=\"toggleTheme()\"\n            >\n              @if (isDark()) {\n                <lucide-icon [img]=\"Sun\" class=\"size-4\" />\n              } @else {\n                <lucide-icon [img]=\"Moon\" class=\"size-4\" />\n              }\n            </button>\n            <button\n              ui-sidebar-trigger\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground size-8 rounded-md\"\n            ></button>\n          </div>\n        } @else {\n          <!-- Collapsed-state: surface the trigger on its own so the rail always\n               has an expand affordance. -->\n          <div class=\"flex items-center justify-center pb-1\">\n            <button\n              ui-sidebar-trigger\n              class=\"text-muted-foreground hover:bg-sidebar-accent hover:text-foreground size-8 rounded-md\"\n            ></button>\n          </div>\n        }\n      </ui-sidebar-footer>\n\n      <ui-sidebar-rail />\n    </ui-sidebar>\n  `,\n})\nexport class UiSidebar07Component {\n  protected readonly Bell = Bell\n  protected readonly ChartBar = ChartBar\n  protected readonly ChevronsUpDown = ChevronsUpDown\n  protected readonly Command = Command\n  protected readonly CreditCard = CreditCard\n  protected readonly FileText = FileText\n  protected readonly HelpCircle = HelpCircle\n  protected readonly LineChart = LineChart\n  protected readonly Mail = Mail\n  protected readonly Moon = Moon\n  protected readonly Package = Package\n  protected readonly Plus = Plus\n  protected readonly Search = Search\n  protected readonly SettingsIcon = SettingsIcon\n  protected readonly ShoppingCart = ShoppingCart\n  protected readonly Sun = Sun\n  protected readonly Users = Users\n\n  protected readonly sidebar = injectSidebar()\n  private readonly theme = injectTheme()\n  private readonly mounted = signal(false)\n\n  readonly isDark = computed(() => {\n    if (!this.mounted()) return false\n    if (typeof window === 'undefined') return this.theme.resolvedTheme() === 'dark'\n    const t = this.theme.theme()\n    return t === 'dark' || (t === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches)\n  })\n\n  constructor() {\n    // Flip after first render so SSR + first client paint agree on the Sun/Moon icon.\n    queueMicrotask(() => this.mounted.set(true))\n  }\n\n  toggleTheme(): void {\n    this.theme.setTheme(this.isDark() ? 'light' : 'dark')\n  }\n}\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/sidebar-07/sidebar-07.component.ts"
    },
    {
      "path": "packages/registry-angular/blocks/sidebar-07/index.ts",
      "content": "export { UiSidebar07Component } from './sidebar-07.component'\n",
      "type": "registry:block",
      "target": "~/src/app/components/blocks/sidebar-07/index.ts"
    }
  ],
  "dependencies": [
    "lucide-angular"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/angular/sidebar.json",
    "https://uipkge.dev/r/angular/avatar.json",
    "https://uipkge.dev/r/angular/use-theme.json"
  ],
  "description": "App sidebar with a bottom action bar -- workspace pill, ⌘K search, grouped nav with section labels (Dashboard / Management / Content), badge counts, user pill above an icon toolbar (Settings, Help, Notifications, Command, Log out). Built on sidebar-01.",
  "categories": [
    "layout",
    "sidebar"
  ]
}