{"version":3,"file":"components\\ui\\sidebar.cjs","sources":["webpack://@arolariu/components/./src/components/ui/sidebar.tsx"],"sourcesContent":["\r\n\r\nimport * as React from \"react\";\r\nimport { PanelLeftIcon } from \"lucide-react\";\r\nimport { useIsMobile } from \"./../../hooks/use-mobile\";\r\nimport {\r\n  Tooltip,\r\n  TooltipContent,\r\n  TooltipProvider,\r\n  TooltipTrigger,\r\n} from \"./tooltip\";\r\nimport { cn } from \"./../../lib/utils\";\r\nimport {\r\n  Sheet,\r\n  SheetContent,\r\n  SheetDescription,\r\n  SheetHeader,\r\n  SheetTitle,\r\n} from \"./sheet\";\r\nimport { Input } from \"./input\";\r\nimport { Skeleton } from \"./skeleton\";\r\nimport { Button } from \"./button\";\r\nimport { Separator } from \"./separator\";\r\nimport { Slot } from \"@radix-ui/react-slot\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContext = {\r\n  state: \"expanded\" | \"collapsed\";\r\n  open: boolean;\r\n  setOpen: (open: boolean) => void;\r\n  openMobile: boolean;\r\n  setOpenMobile: (open: boolean) => void;\r\n  isMobile: boolean;\r\n  toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\r\n\r\nfunction useSidebar() {\r\n  const context = React.useContext(SidebarContext);\r\n  if (!context) {\r\n    throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n  }\r\n\r\n  return context;\r\n}\r\n\r\nfunction SidebarProvider({\r\n  defaultOpen = true,\r\n  open: openProp,\r\n  onOpenChange: setOpenProp,\r\n  className,\r\n  style,\r\n  children,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n  defaultOpen?: boolean;\r\n  open?: boolean;\r\n  onOpenChange?: (open: boolean) => void;\r\n}) {\r\n  const isMobile = useIsMobile();\r\n  const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n  // This is the internal state of the sidebar.\r\n  // We use openProp and setOpenProp for control from outside the component.\r\n  const [_open, _setOpen] = React.useState(defaultOpen);\r\n  const open = openProp ?? _open;\r\n  const setOpen = React.useCallback(\r\n    (value: boolean | ((value: boolean) => boolean)) => {\r\n      const openState = typeof value === \"function\" ? value(open) : value;\r\n      if (setOpenProp) {\r\n        setOpenProp(openState);\r\n      } else {\r\n        _setOpen(openState);\r\n      }\r\n\r\n      // This sets the cookie to keep the sidebar state.\r\n      document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n    },\r\n    [setOpenProp, open]\r\n  );\r\n\r\n  // Helper to toggle the sidebar.\r\n  const toggleSidebar = React.useCallback(() => {\r\n    return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n  }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n  // Adds a keyboard shortcut to toggle the sidebar.\r\n  React.useEffect(() => {\r\n    const handleKeyDown = (event: KeyboardEvent) => {\r\n      if (\r\n        event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\r\n        (event.metaKey || event.ctrlKey)\r\n      ) {\r\n        event.preventDefault();\r\n        toggleSidebar();\r\n      }\r\n    };\r\n\r\n    window.addEventListener(\"keydown\", handleKeyDown);\r\n    return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n  }, [toggleSidebar]);\r\n\r\n  // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n  // This makes it easier to style the sidebar with Tailwind classes.\r\n  const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n  const contextValue = React.useMemo<SidebarContext>(\r\n    () => ({\r\n      state,\r\n      open,\r\n      setOpen,\r\n      isMobile,\r\n      openMobile,\r\n      setOpenMobile,\r\n      toggleSidebar,\r\n    }),\r\n    [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\r\n  );\r\n\r\n  return (\r\n    <SidebarContext.Provider value={contextValue}>\r\n      <TooltipProvider delayDuration={0}>\r\n        <div\r\n          data-slot=\"sidebar-wrapper\"\r\n          style={\r\n            {\r\n              \"--sidebar-width\": SIDEBAR_WIDTH,\r\n              \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n              ...style,\r\n            } as React.CSSProperties\r\n          }\r\n          className={cn(\r\n            \"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\",\r\n            className\r\n          )}\r\n          {...props}\r\n        >\r\n          {children}\r\n        </div>\r\n      </TooltipProvider>\r\n    </SidebarContext.Provider>\r\n  );\r\n}\r\n\r\nfunction Sidebar({\r\n  side = \"left\",\r\n  variant = \"sidebar\",\r\n  collapsible = \"offcanvas\",\r\n  className,\r\n  children,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n  side?: \"left\" | \"right\";\r\n  variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n  collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n}) {\r\n  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\r\n\r\n  if (collapsible === \"none\") {\r\n    return (\r\n      <div\r\n        data-slot=\"sidebar\"\r\n        className={cn(\r\n          \"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\",\r\n          className\r\n        )}\r\n        {...props}\r\n      >\r\n        {children}\r\n      </div>\r\n    );\r\n  }\r\n\r\n  if (isMobile) {\r\n    return (\r\n      <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\r\n        <SheetContent\r\n          data-sidebar=\"sidebar\"\r\n          data-slot=\"sidebar\"\r\n          data-mobile=\"true\"\r\n          className=\"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden\"\r\n          style={\r\n            {\r\n              \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n            } as React.CSSProperties\r\n          }\r\n          side={side}\r\n        >\r\n          <SheetHeader className=\"sr-only\">\r\n            <SheetTitle>Sidebar</SheetTitle>\r\n            <SheetDescription>Displays the mobile sidebar.</SheetDescription>\r\n          </SheetHeader>\r\n          <div className=\"flex h-full w-full flex-col\">{children}</div>\r\n        </SheetContent>\r\n      </Sheet>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <div\r\n      className=\"group peer text-sidebar-foreground hidden md:block\"\r\n      data-state={state}\r\n      data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n      data-variant={variant}\r\n      data-side={side}\r\n      data-slot=\"sidebar\"\r\n    >\r\n      {/* This is what handles the sidebar gap on desktop */}\r\n      <div\r\n        className={cn(\r\n          \"relative h-svh w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\r\n          \"group-data-[collapsible=offcanvas]:w-0\",\r\n          \"group-data-[side=right]:rotate-180\",\r\n          variant === \"floating\" || variant === \"inset\"\r\n            ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\r\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\r\n        )}\r\n      />\r\n      <div\r\n        className={cn(\r\n          \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n          side === \"left\"\r\n            ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n            : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n          // Adjust the padding for floating and inset variants.\r\n          variant === \"floating\" || variant === \"inset\"\r\n            ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\r\n            : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n          className\r\n        )}\r\n        {...props}\r\n      >\r\n        <div\r\n          data-sidebar=\"sidebar\"\r\n          className=\"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-xs\"\r\n        >\r\n          {children}\r\n        </div>\r\n      </div>\r\n    </div>\r\n  );\r\n}\r\n\r\nfunction SidebarTrigger({\r\n  className,\r\n  onClick,\r\n  ...props\r\n}: React.ComponentProps<typeof Button>) {\r\n  const { toggleSidebar } = useSidebar();\r\n\r\n  return (\r\n    <Button\r\n      data-sidebar=\"trigger\"\r\n      data-slot=\"sidebar-trigger\"\r\n      variant=\"ghost\"\r\n      size=\"icon\"\r\n      className={cn(\"h-7 w-7\", className)}\r\n      onClick={(event) => {\r\n        onClick?.(event);\r\n        toggleSidebar();\r\n      }}\r\n      {...props}\r\n    >\r\n      <PanelLeftIcon />\r\n      <span className=\"sr-only\">Toggle Sidebar</span>\r\n    </Button>\r\n  );\r\n}\r\n\r\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\r\n  const { toggleSidebar } = useSidebar();\r\n\r\n  return (\r\n    <button\r\n      data-sidebar=\"rail\"\r\n      data-slot=\"sidebar-rail\"\r\n      aria-label=\"Toggle Sidebar\"\r\n      tabIndex={-1}\r\n      onClick={toggleSidebar}\r\n      title=\"Toggle Sidebar\"\r\n      className={cn(\r\n        \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\r\n        \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\r\n        \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n        \"group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\r\n        \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n        \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\r\n  return (\r\n    <main\r\n      data-slot=\"sidebar-inset\"\r\n      className={cn(\r\n        \"bg-white relative flex min-h-svh w-full flex-1 flex-col dark:bg-neutral-950\",\r\n        \"peer-data-[variant=inset]:min-h-[calc(100svh-(--spacing(4)))] md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-xs md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarInput({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof Input>) {\r\n  return (\r\n    <Input\r\n      data-slot=\"sidebar-input\"\r\n      data-sidebar=\"input\"\r\n      className={cn(\r\n        \"bg-white h-8 w-full shadow-none dark:bg-neutral-950\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-header\"\r\n      data-sidebar=\"header\"\r\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-footer\"\r\n      data-sidebar=\"footer\"\r\n      className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarSeparator({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<typeof Separator>) {\r\n  return (\r\n    <Separator\r\n      data-slot=\"sidebar-separator\"\r\n      data-sidebar=\"separator\"\r\n      className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-content\"\r\n      data-sidebar=\"content\"\r\n      className={cn(\r\n        \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-group\"\r\n      data-sidebar=\"group\"\r\n      className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarGroupLabel({\r\n  className,\r\n  asChild = false,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\r\n  const Comp = asChild ? Slot : \"div\";\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"sidebar-group-label\"\r\n      data-sidebar=\"group-label\"\r\n      className={cn(\r\n        \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n        \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarGroupAction({\r\n  className,\r\n  asChild = false,\r\n  ...props\r\n}: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\r\n  const Comp = asChild ? Slot : \"button\";\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"sidebar-group-action\"\r\n      data-sidebar=\"group-action\"\r\n      className={cn(\r\n        \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n        // Increases the hit area of the button on mobile.\r\n        \"after:absolute after:-inset-2 md:after:hidden\",\r\n        \"group-data-[collapsible=icon]:hidden\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarGroupContent({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-group-content\"\r\n      data-sidebar=\"group-content\"\r\n      className={cn(\"w-full text-sm\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\r\n  return (\r\n    <ul\r\n      data-slot=\"sidebar-menu\"\r\n      data-sidebar=\"menu\"\r\n      className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\r\n  return (\r\n    <li\r\n      data-slot=\"sidebar-menu-item\"\r\n      data-sidebar=\"menu-item\"\r\n      className={cn(\"group/menu-item relative\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n  \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden 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\",\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n        outline:\r\n          \"bg-white 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))] dark:bg-neutral-950\",\r\n      },\r\n      size: {\r\n        default: \"h-8 text-sm\",\r\n        sm: \"h-7 text-xs\",\r\n        lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\r\n      },\r\n    },\r\n    defaultVariants: {\r\n      variant: \"default\",\r\n      size: \"default\",\r\n    },\r\n  }\r\n);\r\n\r\nfunction SidebarMenuButton({\r\n  asChild = false,\r\n  isActive = false,\r\n  variant = \"default\",\r\n  size = \"default\",\r\n  tooltip,\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n  asChild?: boolean;\r\n  isActive?: boolean;\r\n  tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\r\n  const Comp = asChild ? Slot : \"button\";\r\n  const { isMobile, state } = useSidebar();\r\n\r\n  const button = (\r\n    <Comp\r\n      data-slot=\"sidebar-menu-button\"\r\n      data-sidebar=\"menu-button\"\r\n      data-size={size}\r\n      data-active={isActive}\r\n      className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\r\n      {...props}\r\n    />\r\n  );\r\n\r\n  if (!tooltip) {\r\n    return button;\r\n  }\r\n\r\n  if (typeof tooltip === \"string\") {\r\n    tooltip = {\r\n      children: tooltip,\r\n    };\r\n  }\r\n\r\n  return (\r\n    <Tooltip>\r\n      <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n      <TooltipContent\r\n        side=\"right\"\r\n        align=\"center\"\r\n        hidden={state !== \"collapsed\" || isMobile}\r\n        {...tooltip}\r\n      />\r\n    </Tooltip>\r\n  );\r\n}\r\n\r\nfunction SidebarMenuAction({\r\n  className,\r\n  asChild = false,\r\n  showOnHover = false,\r\n  ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n  asChild?: boolean;\r\n  showOnHover?: boolean;\r\n}) {\r\n  const Comp = asChild ? Slot : \"button\";\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"sidebar-menu-action\"\r\n      data-sidebar=\"menu-action\"\r\n      className={cn(\r\n        \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n        // Increases the hit area of the button on mobile.\r\n        \"after:absolute after:-inset-2 md:after:hidden\",\r\n        \"peer-data-[size=sm]/menu-button:top-1\",\r\n        \"peer-data-[size=default]/menu-button:top-1.5\",\r\n        \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n        \"group-data-[collapsible=icon]:hidden\",\r\n        showOnHover &&\r\n          \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenuBadge({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"div\">) {\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-menu-badge\"\r\n      data-sidebar=\"menu-badge\"\r\n      className={cn(\r\n        \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\r\n        \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n        \"peer-data-[size=sm]/menu-button:top-1\",\r\n        \"peer-data-[size=default]/menu-button:top-1.5\",\r\n        \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n        \"group-data-[collapsible=icon]:hidden\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenuSkeleton({\r\n  className,\r\n  showIcon = false,\r\n  ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n  showIcon?: boolean;\r\n}) {\r\n  // Random width between 50 to 90%.\r\n  const width = React.useMemo(() => {\r\n    return `${Math.floor(Math.random() * 40) + 50}%`;\r\n  }, []);\r\n\r\n  return (\r\n    <div\r\n      data-slot=\"sidebar-menu-skeleton\"\r\n      data-sidebar=\"menu-skeleton\"\r\n      className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n      {...props}\r\n    >\r\n      {showIcon && (\r\n        <Skeleton\r\n          className=\"size-4 rounded-md\"\r\n          data-sidebar=\"menu-skeleton-icon\"\r\n        />\r\n      )}\r\n      <Skeleton\r\n        className=\"h-4 max-w-(--skeleton-width) flex-1\"\r\n        data-sidebar=\"menu-skeleton-text\"\r\n        style={\r\n          {\r\n            \"--skeleton-width\": width,\r\n          } as React.CSSProperties\r\n        }\r\n      />\r\n    </div>\r\n  );\r\n}\r\n\r\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\r\n  return (\r\n    <ul\r\n      data-slot=\"sidebar-menu-sub\"\r\n      data-sidebar=\"menu-sub\"\r\n      className={cn(\r\n        \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\r\n        \"group-data-[collapsible=icon]:hidden\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenuSubItem({\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"li\">) {\r\n  return (\r\n    <li\r\n      data-slot=\"sidebar-menu-sub-item\"\r\n      data-sidebar=\"menu-sub-item\"\r\n      className={cn(\"group/menu-sub-item relative\", className)}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nfunction SidebarMenuSubButton({\r\n  asChild = false,\r\n  size = \"md\",\r\n  isActive = false,\r\n  className,\r\n  ...props\r\n}: React.ComponentProps<\"a\"> & {\r\n  asChild?: boolean;\r\n  size?: \"sm\" | \"md\";\r\n  isActive?: boolean;\r\n}) {\r\n  const Comp = asChild ? Slot : \"a\";\r\n\r\n  return (\r\n    <Comp\r\n      data-slot=\"sidebar-menu-sub-button\"\r\n      data-sidebar=\"menu-sub-button\"\r\n      data-size={size}\r\n      data-active={isActive}\r\n      className={cn(\r\n        \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n        \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n        size === \"sm\" && \"text-xs\",\r\n        size === \"md\" && \"text-sm\",\r\n        \"group-data-[collapsible=icon]:hidden\",\r\n        className\r\n      )}\r\n      {...props}\r\n    />\r\n  );\r\n}\r\n\r\nexport {\r\n  Sidebar,\r\n  SidebarContent,\r\n  SidebarFooter,\r\n  SidebarGroup,\r\n  SidebarGroupAction,\r\n  SidebarGroupContent,\r\n  SidebarGroupLabel,\r\n  SidebarHeader,\r\n  SidebarInput,\r\n  SidebarInset,\r\n  SidebarMenu,\r\n  SidebarMenuAction,\r\n  SidebarMenuBadge,\r\n  SidebarMenuButton,\r\n  SidebarMenuItem,\r\n  SidebarMenuSkeleton,\r\n  SidebarMenuSub,\r\n  SidebarMenuSubButton,\r\n  SidebarMenuSubItem,\r\n  SidebarProvider,\r\n  SidebarRail,\r\n  SidebarSeparator,\r\n  SidebarTrigger,\r\n  useSidebar,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}