{ "name": "sidebar", "dependencies": [ "@vueuse/core" ], "registryDependencies": [ "Sheet.vue", "SheetContent.vue", "utils", "Input.vue", "Tooltip.vue", "TooltipContent.vue", "TooltipTrigger.vue", "Skeleton.vue", "Separator.vue", "Button.vue" ], "files": [ { "name": "Sidebar.vue", "content": "\n\n\n" }, { "name": "SidebarContent.vue", "content": "\n\n\n" }, { "name": "SidebarFooter.vue", "content": "\n\n\n" }, { "name": "SidebarGroup.vue", "content": "\n\n\n" }, { "name": "SidebarGroupAction.vue", "content": "\n\n\n" }, { "name": "SidebarGroupContent.vue", "content": "\n\n\n" }, { "name": "SidebarGroupLabel.vue", "content": "\n\n\n" }, { "name": "SidebarHeader.vue", "content": "\n\n\n" }, { "name": "SidebarInput.vue", "content": "\n\n\n" }, { "name": "SidebarInset.vue", "content": "\n\n\n" }, { "name": "SidebarMenu.vue", "content": "\n\n\n" }, { "name": "SidebarMenuAction.vue", "content": "\n\n\n" }, { "name": "SidebarMenuBadge.vue", "content": "\n\n\n" }, { "name": "SidebarMenuButton.vue", "content": "\n\n\n" }, { "name": "SidebarMenuButtonChild.vue", "content": "\n\n\n" }, { "name": "SidebarMenuItem.vue", "content": "\n\n\n" }, { "name": "SidebarMenuSkeleton.vue", "content": "\n\n\n" }, { "name": "SidebarMenuSub.vue", "content": "\n\n\n" }, { "name": "SidebarMenuSubButton.vue", "content": "\n\n\n" }, { "name": "SidebarMenuSubItem.vue", "content": "\n\n\n" }, { "name": "SidebarProvider.vue", "content": "\n\n\n" }, { "name": "SidebarRail.vue", "content": "\n\n\n" }, { "name": "SidebarSeparator.vue", "content": "\n\n\n" }, { "name": "SidebarTrigger.vue", "content": "\n\n\n" }, { "name": "index.ts", "content": "import { cva, type VariantProps } from 'class-variance-authority'\n\nexport { default as Sidebar } from './Sidebar.vue'\nexport { default as SidebarContent } from './SidebarContent.vue'\nexport { default as SidebarFooter } from './SidebarFooter.vue'\nexport { default as SidebarGroup } from './SidebarGroup.vue'\nexport { default as SidebarGroupAction } from './SidebarGroupAction.vue'\nexport { default as SidebarGroupContent } from './SidebarGroupContent.vue'\nexport { default as SidebarGroupLabel } from './SidebarGroupLabel.vue'\nexport { default as SidebarHeader } from './SidebarHeader.vue'\nexport { default as SidebarInput } from './SidebarInput.vue'\nexport { default as SidebarInset } from './SidebarInset.vue'\nexport { default as SidebarMenu } from './SidebarMenu.vue'\nexport { default as SidebarMenuAction } from './SidebarMenuAction.vue'\nexport { default as SidebarMenuBadge } from './SidebarMenuBadge.vue'\nexport { default as SidebarMenuButton } from './SidebarMenuButton.vue'\nexport { default as SidebarMenuItem } from './SidebarMenuItem.vue'\nexport { default as SidebarMenuSkeleton } from './SidebarMenuSkeleton.vue'\nexport { default as SidebarMenuSub } from './SidebarMenuSub.vue'\nexport { default as SidebarMenuSubButton } from './SidebarMenuSubButton.vue'\nexport { default as SidebarMenuSubItem } from './SidebarMenuSubItem.vue'\nexport { default as SidebarProvider } from './SidebarProvider.vue'\nexport { default as SidebarRail } from './SidebarRail.vue'\nexport { default as SidebarSeparator } from './SidebarSeparator.vue'\nexport { default as SidebarTrigger } from './SidebarTrigger.vue'\n\nexport { useSidebar } from './utils'\n\nexport const sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]',\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nexport type SidebarMenuButtonVariants = VariantProps\n" }, { "name": "utils.ts", "content": "import type { ComputedRef, Ref } from 'vue'\nimport { createContext } from 'radix-vue'\n\nexport const SIDEBAR_COOKIE_NAME = 'sidebar:state'\nexport const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nexport const SIDEBAR_WIDTH = '16rem'\nexport const SIDEBAR_WIDTH_MOBILE = '18rem'\nexport const SIDEBAR_WIDTH_ICON = '3rem'\nexport const SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\nexport const [useSidebar, provideSidebarContext] = createContext<{\n state: ComputedRef<'expanded' | 'collapsed'>\n open: Ref\n setOpen: (value: boolean) => void\n isMobile: Ref\n openMobile: Ref\n setOpenMobile: (value: boolean) => void\n toggleSidebar: () => void\n}>('Sidebar')\n" } ], "type": "components:ui" }