{
"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 \n \n
\n\n \n \n \n\n \n\n"
},
{
"name": "SidebarContent.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarFooter.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarGroup.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarGroupAction.vue",
"content": "\n\n\n svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n props.class,\n )\"\n >\n \n \n\n"
},
{
"name": "SidebarGroupContent.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarGroupLabel.vue",
"content": "\n\n\n svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n props.class)\"\n >\n \n \n\n"
},
{
"name": "SidebarHeader.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarInput.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarInset.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarMenu.vue",
"content": "\n\n\n \n\n"
},
{
"name": "SidebarMenuAction.vue",
"content": "\n\n\n svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover\n && 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n props.class,\n )\"\n :as=\"as\"\n :as-child=\"asChild\"\n >\n \n \n\n"
},
{
"name": "SidebarMenuBadge.vue",
"content": "\n\n\n \n \n
\n\n"
},
{
"name": "SidebarMenuButton.vue",
"content": "\n\n\n \n \n \n\n \n \n \n \n \n \n \n \n {{ tooltip }}\n \n \n \n \n\n"
},
{
"name": "SidebarMenuButtonChild.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarMenuItem.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarMenuSkeleton.vue",
"content": "\n\n\n \n \n\n \n
\n\n"
},
{
"name": "SidebarMenuSub.vue",
"content": "\n\n\n \n\n"
},
{
"name": "SidebarMenuSubButton.vue",
"content": "\n\n\n span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n props.class,\n )\"\n >\n \n \n\n"
},
{
"name": "SidebarMenuSubItem.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarProvider.vue",
"content": "\n\n\n \n \n \n
\n \n\n"
},
{
"name": "SidebarRail.vue",
"content": "\n\n\n \n\n"
},
{
"name": "SidebarSeparator.vue",
"content": "\n\n\n \n \n \n\n"
},
{
"name": "SidebarTrigger.vue",
"content": "\n\n\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"
}